AR# 32971

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

説明

キーワード : XST, Spartan-6, Virtex-6, S6, V6, HDLCompiler:40


デザインに同じ名前のコンポーネントと信号が含まれています。Virtex-6/Spartan-6 デバイスを使用すると XST で次のエラー メッセージが表示されます。Virtex-6/Spartan-6 以前にリリースされたデバイスを使用してもエラー メッセージは表示されません。理由を教えてください。


"ERROR:HDLCompiler:40 - "<file>.vhd" Line xx: <name> is not a component"


Example Code:

File: ex_0001.vhd
Compilation Library: work


library ieee;
use ieee.std_logic_1164.all;

package my_pack_0001 is

component my_name is
port(in_port : in std_logic;
out_port: out std_logic);
end component;

end package;

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

library ieee;
use ieee.std_logic_1164.all;
library work;
use work.my_pack_0001.all;

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

architecture beh of ex_0001 is
signal my_name : std_logic;
begin
my_name <= in_port;
my_inst : my_name port map(in_port =>my_name, -- Note: Error points here
out_port=>out_port);
end;

ソリューション

11.2 XST では Virtex-6 および Spartan-6 に新しい VHDL/Verilog 解析が導入されました。 この変更の詳細は、(Xilinx Answer 32927) を参照してください。

これは、VHDL LRM に準拠するコードではありません。 この問題を解決するには、信号またはコンポーネント名を付け直す必要があります。

たとえば、上記のコードの場合は次のようにソースを変更できます。

library ieee;
use ieee.std_logic_1164.all;

package my_pack_0001 is

component my_name is
port(in_port : in std_logic;
out_port: out std_logic);
end component;

end package;

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

library ieee;
use ieee.std_logic_1164.all;
library work;
use work.my_pack_0001.all;

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

architecture beh of ex_0001 is
signal my_name : std_logic;
begin
my_name <= in_port;
my_inst : my_name port map(in_port =>my_name, -- Note: Error points here
out_port=>out_port);
end;


上記のコードで my_namemy_name_signal に変更します。






AR# 32971
日付 12/15/2012
ステータス アクティブ
種類 一般