AR# 32997

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

説明

キーワード : Component, library, XST, same name, VHDL, Spartan-6, Virtex-6, S6, V6, コンポーネント, ライブラリ, 同名

デザインでインスタンス名と同じ名前のパッケージでコンポーネントを宣言しています。Virtex-6/Spartan-6 デバイスを使用すると次のエラー メッセージが表示されますが、Virtex-6/Spartan-6 以前のデバイスを使用すると表示されません。

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

次のコード例は、コンポーネント名とインスタンス名が両方とも my_name であるためエラー メッセージが表示されます。

library ieee;
use ieee.std_logic_1164.all;

package my_pack_0003 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_0003.all;

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

architecture beh of ex_0003 is
begin
my_name : my_name 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) を参照してください。

上記のコードは、VHDL LRM に準拠していません。 インスタンス名またはコンポーネント名のいずれかを変更すると、この問題を解決できます。

たとえば、上記のコードは次のように編集できます。

library ieee;
use ieee.std_logic_1164.all;

package my_pack_0003 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_0003.all;

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

architecture beh of ex_0003 is
begin
my_inst : my_name port map(in_port =>in_port, -- Note: Error points here
out_port=>out_port);
end;
AR# 32997
日付 12/15/2012
ステータス アクティブ
種類 一般