AR# 32981

11.2 XST - 「ERROR:HDLCompiler:377 - "<file>.vhd" Line xx: Entity port in_port does not match with type std_logic_vector of component port」というエラー メッセージが表示される

説明

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

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

ERROR:HDLCompiler:377 - "<file>.vhd" Line xx: Entity port in_port does not match with type std_logic_vector of component port
"<file>.vhd" Line xx: in_port is declared here

コード例 :

library ieee;
use ieee.std_logic_1164.all;

entity subb_0014 is
port(in_port : in bit_vector(3 downto 0);
out_port: out bit_vector(3 downto 0));
end subb_0014;

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

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

library ieee;
use ieee.std_logic_1164.all;

entity ex_0014 is
port(in_port : in std_logic_vector(3 downto 0);
out_port: out std_logic_vector(3 downto 0));
end ex_0014;

architecture beh of ex_0014 is

component subb_0014 is
port(in_port : in std_logic_vector(3 downto 0);
out_port: out std_logic_vector(3 downto 0));
end component;

begin
inst : subb_0014 port map(in_port => in_port, out_port=>out_port);
end;

ソリューション

上記の例では、subb_0014 サブ ブロックには、bit_vector 型のポートが 2 つあります。ex_0014 で宣言されているコンポーネント subb_0014 には std_logic_vector 型のポートが 2 つあります。このコードは、VHDL LRM に準拠していません。

この問題を解決するには、エンティティおよびコンポーネントのポート型を合わせます。


library ieee;
use ieee.std_logic_1164.all;

entity subb_0014 is
port(in_port : in std_logic_vector(3 downto 0); -- Note: Info points here
out_port: out std_logic_vector(3 downto 0)); -- Note: Info points here
end subb_0014;

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

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

library ieee;
use ieee.std_logic_1164.all;

entity ex_0014 is
port(in_port : in std_logic_vector(3 downto 0);
out_port: out std_logic_vector(3 downto 0));
end ex_0014;

architecture beh of ex_0014 is

component subb_0014 is
port(in_port : in std_logic_vector(3 downto 0); -- Note: Error points here
out_port: out std_logic_vector(3 downto 0)); -- Note: Error points here
end component;

begin
inst : subb_0014 port map(in_port => in_port, out_port=>out_port);
end;



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