UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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
ステータス アーカイブ
種類 一般
このページをブックマークに追加