AR# 32976

11.x XST - 「ERROR:HDLCompiler:69 - "<file>.vhd" Line xx:: <xyz> is not declared」というエラー メッセージが表示される

説明

キーワード : XST, Spartan-6, Virtex-6, S6, V6, 11.2 , Parser, HDLCompiler:69, 解析

Virtex-6/Spartan-6 デバイスを使用すると XST で次のエラー メッセージが表示されます。Virtex-6/Spartan-6 以前にリリースされたデバイスを使用してもエラー メッセージは表示されません。この理由を教えてください。

ERROR:HDLCompiler:69 - "<file>.vhd" Line xx:: <xyz> is not declared.
ERROR:HDLCompiler:461 - "<file>.vhd" Line xx:: If you are trying to directly instantiate a design entity, please use expanded name.

コード例 :

library ieee;
use ieee.std_logic_1164.all;

entity subb_0007 is
port(in_port : in std_logic;
out_port: out std_logic);
end subb_0007;

architecture beh of subb_0007 is
begin
out_port <= in_port;
end;

-----------------------------------

library ieee;
use ieee.std_logic_1164.all;

entity ex_0007 is
port(in_port : in std_logic;
out_port: out std_logic);
end ex_0007;

architecture beh of ex_0007 is
begin
my_name : entity subb_0007 port map(in_port =>in_port,
out_port=>out_port);
end;

ソリューション

上記の例では、直接的なインスタンシエーションの使用が試みられていますが、subb_0007 エンティティがライブラリ名なしで使用されています。このコードは、VHDL LRM に準拠していません。この問題を解決するには、インスタンシエーションに拡張名を使用する必要があります。

たとえば work.subb_0007 を使用すると、上記のコードを修正できます。

library ieee;
use ieee.std_logic_1164.all;

entity subb_0007 is
port(in_port : in std_logic;
out_port: out std_logic);
end subb_0007;

architecture beh of subb_0007 is
begin
out_port <= in_port;
end;

-----------------------------------

library ieee;
use ieee.std_logic_1164.all;

entity ex_0007 is
port(in_port : in std_logic;
out_port: out std_logic);
end ex_0007;

architecture beh of ex_0007 is
begin
my_name : entity work.subb_0007 port map(in_port =>in_port, -- Note: Error points here
out_port=>out_port);
end;

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