AR# 32993

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"

コード例

library ieee;
use ieee.std_logic_1164.all;

package my_pack_0002 is

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

end package;

File: ex_0002.vhd
Compilation Library: work

library ieee;
use ieee.std_logic_1164.all;
library my_lib_0002;
use my_lib_0002.my_pack_0002.all;

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

architecture beh of ex_0002 is
begin
my_inst : my_lib_0002 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_0002 is

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

end package;

File: ex_0002.vhd
Compilation Library: work

library ieee;
use ieee.std_logic_1164.all;
library my_lib_0002;
use my_lib_0002.my_pack_0002.all;

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

architecture beh of ex_0002 is
begin
my_inst : my_comp_0002 port map(in_port =>in_port, -- Note: Error points here
out_port=>out_port);
end;


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