AR# 32998

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

説明

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

デザインでプロセスの 1 つと同じ名前の出力ポートを宣言しました。Virtex-6/Spartan-6 デバイスを使用すると次のエラー メッセージが表示されますが、Virtex-6/Spartan-6 以前のデバイスでは表示されません。この理由を教えてください。

ERROR:HDLCompiler:56 - <file>.vhd Line xx: <name> is not a signal.

このコード名では、ポートとプロセスの名前が両方とも q のためにエラー メッセージが表示されます。

library ieee;
use ieee.std_logic_1164.all;

entity ex_0004 is
port(clk: in std_logic;
d : in std_logic_vector(3 downto 0);
q : out std_logic_vector(3 downto 0));
end ex_0004;

architecture beh of ex_0004 is
begin
genloop: for i in 0 to 3 generate
q: process (clk)
begin
if (clk'event and clk='1') then
q <= d; -- Note: Error points here
end if;
end process;
end generate;
end;

ソリューション

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

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

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

library ieee;
use ieee.std_logic_1164.all;

entity ex_0004 is
port(clk: in std_logic;
d : in std_logic_vector(3 downto 0);
q : out std_logic_vector(3 downto 0));
end ex_0004;

architecture beh of ex_0004 is
begin
genloop: for i in 0 to 3 generate
q_label: process (clk)
begin
if (clk'event and clk='1') then
q <= d; -- Note: Error points here
end if;
end process;
end generate;
end;

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