AR# 32979

11.2 XST - 「ERROR:HDLCompiler:637 - "<file>.vhd" Line xx: Net abcd[x] is constantly driven from multiple places」というエラー メッセージが表示される

説明

キーワード : XST, Spartan-6, Virtex-6, S6, V6, 11.2 , Parser, HDLCompiler:637, HDLCompiler:208, 解析

Virtex-6/Spartan-6 デバイスを使用すると XST で次のエラー メッセージが表示されます。Virtex-6/Spartan-6 以前にリリースされたデバイスを使用してもエラー メッセージは表示されません。この理由を教えてください。

ERROR:HDLCompiler:637 - "<file>.vhd" Line xx: Net state[7] is constantly driven from multiple places
ERROR:HDLCompiler:208 - "<file>.vhd" Line yy: Another driver from here

コード例 :

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity ex_0008 is
port(clk,reset : in std_logic;
output : out std_logic_vector(7 downto 0)
);
end ex_0008;

architecture bhv of ex_0008 is
signal state : std_logic_vector(7 downto 0);
begin
process( reset , clk )
begin
if(reset = '1') then
output <= "00000000";
state <= "00000000";
elsif(clk'event and clk = '1') then
case state is
when "00000000" => output <= "00000001"; state <= "00000001";
when "00000001" => output <= "00000010"; state <= "00000010";
when "00000010" => output <= "00000011"; state <= "00000011";
when others => output <= "00000100"; state <= "00000000";
end case;
end if;
end process;

state <= not state;
end;

ソリューション

上記の例では、信号のステートがプロセス内とプロセス外で割り当てられています。この記述は、FPGA ではインプリメントできません。

この問題を解決するには、プロセス外でステートを割り当てないようにします。

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


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