ごく簡単なテストベンチ / テストベンチのテンプレートを自動生成する

参考: シェフの気まぐれテストベンチ ~時間短縮のマル秘レシピ~ - 半導体事業 - マクニカ

前回は一からテストベンチを記述したが、今度は上のリンクを参考にして自動生成した。入力波形は自分で書く。このとき作った4ビット加算器74283 (のようなもの)をシミュレートしてみる。

  1. [Assignments]メニュー、[Settings]の順に選択して、このへんの設定をする。[Output directory]がテストベンチファイル(.vht)の出力先。
    f:id:ti-nspire:20210922072853p:plain:w500

  2. 下の順に選択する。これでテストベンチが生成される。
    f:id:ti-nspire:20210922073158p:plain:w500

  3. あとは普通にModelSimでシミュレートする。
    f:id:ti-nspire:20210922084340p:plain

↓ これが自動生成されたテストベンチ(入力波形を記述したほか体裁も整えた):

LIBRARY ieee;                                               
USE ieee.std_logic_1164.all;                                
USE ieee.numeric_std.all;     

ENTITY generic_74283_vhd_tst IS
END generic_74283_vhd_tst;

ARCHITECTURE generic_74283_arch OF generic_74283_vhd_tst IS

    SIGNAL a   : STD_LOGIC_VECTOR(3 DOWNTO 0);
    SIGNAL b   : STD_LOGIC_VECTOR(3 DOWNTO 0);
    SIGNAL cin : STD_LOGIC;
    SIGNAL cout: STD_LOGIC;
    SIGNAL sum : STD_LOGIC_VECTOR(3 DOWNTO 0);

    COMPONENT generic_74283
    PORT (
        a   : IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
        b   : IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
        cin : IN  STD_LOGIC;
        cout: OUT STD_LOGIC;
        sum : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
    );
    END COMPONENT;

BEGIN

    i1 : generic_74283
    PORT MAP (
        a    => a,
        b    => b,
        cin  => cin,
        cout => cout,
        sum  => sum
    );

    cin <= '0';

    process begin
        for i in 0 to 15 loop
            a <= std_logic_vector(to_unsigned(i, 4)); wait for 10 ns;
        end loop;
    end process;

    process begin
        for i in 0 to 15 loop
            b <= std_logic_vector(to_unsigned(i, 4)); wait for 160 ns;
        end loop;
    end process;

END generic_74283_arch;