AR# 15467

|

5.1i XST - パッケージのファンクション ロジックからロジックが不正に削除される

説明

キーワード : VHDL, ignore, empty, 無視, 空

パッケージで定義されたファンクションを含むデザインを合成すると、場合によって、そのファンクションに関連付けられたロジックがすべて削除されます。

このような状況は、次の例に示すように、ファンクションで宣言された変数が別のファンクションの結果で初期化される場合に発生します。

function add(a,b : std_logic_vector) return std_logic_vector IS
:
:
variable sa : std_logic_vector(max_width-1 downto 0) := extend(a, max_width);
variable sb : std_logic_vector(max_width-1 downto 0) := extend(b, max_width);
:
:

変数 sa と sb が宣言され、ファンクション内で初期化されています。 ファンクション extend からの戻り値により初期化されます。

ソリューション

この問題を回避するには、次の例に示すように、ファンクションの begin の後に変数を初期化します。

function add(a,b : std_logic_vector) return std_logic_vector IS
:
:
variable sa : std_logic_vector(max_width-1 downto 0);
variable sb : std_logic_vector(max_width-1 downto 0);
:
:
begin
sa := extend(a, max_width);
sb := extend(b, max_width);
:
:
AR# 15467
日付 01/06/2009
ステータス アーカイブ
種類 一般
People Also Viewed