AR# 33031

11.x XST - 「ERROR:HDLCompiler:852 - "ex_0010.vhd" Line 5: Unit ex_0010 does not have a generic named my_width」というエラー メッセージが表示される

説明

キーワード : Virtex-6, Spartan-6, HDLCompiler:852, generic

Virtex-6 または Spartan-6 デバイスをターゲットにすると XST で次のエラー メッセージが表示されますが、ほかの古いデバイスだとエラーは発生しません。なぜですか。

"ex_0010.vhd" Line 5: Unit ex_0010 does not have a generic named my_width

ソリューション

このエラーは、ジェネリック名がコードのジェネリックと一致しない場合に発生します。

古いデバイスの場合、XST でこのエラー メッセージは無視されますが、Virtex-6 および Spartan-6 デバイスからはエラーとしてフラグされます。

例 :
-generics オプションを使用し、ジェネリック (VHDL) またはパラメータ (Verilog) の値を最上位デザイン ブロックで再定義することができます。

次の例では、幅で追加操作のサイズを定義します。

ファイル : ex_0010.vhd
コンパイル ライブラリ : work

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity ex_0010 is -- Note: Error points here
generic (width: integer := 8);
port(a,b : in unsigned (width-1 downto 0);
res : out unsigned (width-1 downto 0));
end ex_0010;

architecture beh of ex_0010 is
begin

res <= a + b;

end beh;

ジェネリック (パラメータ) は ISE Project Navigator の XST 合成オプションで直接再定義できます (図 1 参照)。

図 1
図 1
.


このエラーはジェネリックの名前が一致しないことが原因で発生します。名前を修正するとエラーを解決できます。

11.2 では、XST で Virtex-6 および Spartan-6 ファミリ用に新しい VHDL/Verilog 解析が導入されました。この詳細は (Xilinx Answer 32927) を参照してください。
AR# 33031
日付 12/15/2012
ステータス アクティブ
種類 一般