library ieee; use ieee.std_logic_1164.all; entity test_adder4 is end test_adder4; architecture arch of test_adder4 is component adder4 port ( a, b: in std_logic_vector(3 downto 0); ci: in std_logic; co: out std_logic; s: out std_logic_vector(3 downto 0)); end component; for i0: adder4 use entity work.adder4(arch); signal a, b: std_logic_vector(3 downto 0); signal ci: std_logic; signal co: std_logic; signal s: std_logic_vector(3 downto 0); begin i0: adder4 port map (a=>a, b=>b, ci=>ci, co=>co, s=>s); process begin a <= "0000"; b <= "0000"; ci <= '0'; wait for 100ns; a <= "1010"; b <= "0101"; ci <= '0'; wait for 100ns; a <= "1010"; b <= "0101"; ci <= '1'; wait for 100ns; a <= "1111"; b <= "0001"; ci <= '0'; wait for 100ns; wait; end process; end arch;これも文法の細かいところはあまり気にせず、 使うadder4を呼び出し、それに与える信号を順次変えていく、 ということをしています。 もちろん、シミュレーションをするプログラムにこれを与えると、 この回路が動作したように出力が見られますので、 それをみながら、正しい回路になっているかをチェックすることになります。 このように、テストベンチの中では、検証の対象になっている回路を インスタンスとして呼び出していることに注意しましょう。 このような、検証対象の回路をDUT (Device Under Test)と呼びます。
このように、論理合成の際に用いることができるライブラリは、 変換される回路がどのようなものになるか、に強く依存します。 たとえば、次回の演習では、論理回路をFPGAと呼ばれる論理LSIに作り込みますが、 このような場合は、そのFPGA用のライブラリが使われることになります。