VHDL でコンパレータのデータフロー デザインを作成しようとしています。ザイリンクスでは問題なくコンパイルおよびシミュレーションされますが、Cadence/NCLaunch を使用する必要があります。同じコードを gedit にコピーして実行すると、セミコロンに関するエラーが発生します。
私のコードは:
library ieee;
use ieee.std_logic_1164.all;
-----------------------------------------------------
entity Comparator is
port( A: in std_logic_vector (3 downto 0);
B: in std_logic_vector (3 downto 0);
AeqB: out std_logic;
AltB: out std_logic;
AgtB: out std_logic);
end Comparator;
architecture dataflow of Comparator is
signal AeB : std_logic;
signal AlB : std_logic;
signal AgB : std_logic;
signal i : std_logic_vector (3 downto 0);
signal j : std_logic_vector (3 downto 0);
begin
B1: BLOCK BEGIN
AeB <= i(3) AND i(2) AND i(1) and i(0);
AgB <= j(3) or j(2) or j(1) or j(0);
AlB <= AeB nor AgB;
END BLOCK B1;
B2: BLOCK BEGIN
i <= a xnor b;
END BLOCK B2;
B3: BLOCK BEGIN
j(3) <= (not b(3)) and a(3);
j(2) <= i(3) and not b(2) and a(2);
j(1) <= i(3) and i(2) and not b(1) and a(1);
j(0) <= i(3) and i(2) and i(1) and not b(0) and a(0);
END BLOCK B3;
B4: BLOCK BEGIN
AeqB <= AeB;
AltB <= AlB;
AgTB <= AgB;
END BLOCK B4;
end dataflow;
...そして私が得るエラーは次のとおりです:
i <= a xnor b;
|
ncvhdl_p: *E,EXPSMI (/ugrad/syedhuq/ECE425/Lab2/Comparator.vhd,29|11): expecting a semicolon (';') [9.5.1].
私が知る限り、そこにセミコロンがあります...また、ステートメントを次のような4つの個別のステートメントに置き換えると
i(n) <= a(n) xnor b(n); //[n = 1, 2, 3, 4],
同じエラーが4回発生します。誰でもこれで私を助けることができますか??
また、Synopsys (VCSMX) で正常にコンパイルされ、テストベンチ ファイルも同様にコンパイルされますが、リンク プロセス中に次のように表示されます。
Design unit 'COMPARATOR(BEHAVE)' from library '.' cannot be opened for
reading.
Possible causes:
[1] Incorrect logical to physical mapping in synopsys_sim.setup file.
[2] Intermediate file generation was prematurely terminated during analysis.
Reanalyze the design unit and resolve any errors that occur during analysis.
テストベンチ コードの関連する行は次のとおりです。
for x1: Comparator use entity work.Comparator(Behave);