レジスタのシミュレーション方法


レジスタには双方向端子が存在するため、これまでに説明していた方法で はエラーが生じ、シミュレーションができないと思います。

以下のようにすることで、シミュレーションを行うことが出来ますので、参考 にしてください。

例として、プログラムカウンタを示します。

テストベクタのファイルは、以下のようにします。双方向の信号は "DATA" と なっていますが、テストベクタを与える際には "io_DATA" とします。また、 書き込みを行わない時の値はハイインピーダンス状態 (16'hZZZZ) にしておき ます。

注) 信号の名前の付け方によっては、単に "io_" を付けるだけでは駄目かも しれません。まず、"Stimulus Option" において 雛型として作製される "testfixture.verilog" 内を確認して下さい。

io_DATA[15:0] = 16'bzzzzzzzzzzzzzzzz;
のような記述があれば "io_DATA" とします。違う文字列であればそれに合わ せて下さい。
# clock
CLK 100

# input 
RST
R
I
W
io_DATA[15:0]

# testvector
#   RST R I W io_DATA[15:0]

  0 0   0 0 0 16'hZZZZ
150 1   0 0 0 16'hZZZZ
100 0   0 0 1 16'h1234
100 0   0 0 0 16'hZZZZ
100 0   1 0 0 16'hZZZZ
100 0   0 1 0 16'hZZZZ
100 0   0 0 0 16'hZZZZ
100 0   0 0 0 16'hZZZZ
100 0   0 0 0 16'hZZZZ

また、make_vector をかけると、以下のような Verilog ファイルを出力します。 このファイルをシミュレーションに用います。
integer i0;
initial
begin
    CLK = 1'b1;
    for( i0=0 ; i0<19 ; i0=i0+1 )
        CLK = #50 ~CLK;
    $finish;
end

initial
begin
    RST = # 0 0;
    RST = # 150 1;
    RST = # 100 0;
    RST = # 100 0;
    RST = # 100 0;
    RST = # 100 0;
    RST = # 100 0;
    RST = # 100 0;
    RST = # 100 0;
end

initial
begin
    R = # 0 0;
    R = # 150 0;
    R = # 100 0;
    R = # 100 0;
    R = # 100 1;
    R = # 100 0;
    R = # 100 0;
    R = # 100 0;
    R = # 100 0;
end

initial
begin
    I = # 0 0;
    I = # 150 0;
    I = # 100 0;
    I = # 100 0;
    I = # 100 0;
    I = # 100 1;
    I = # 100 0;
    I = # 100 0;
    I = # 100 0;
end

initial
begin
    W = # 0 0;
    W = # 150 0;
    W = # 100 1;
    W = # 100 0;
    W = # 100 0;
    W = # 100 0;
    W = # 100 0;
    W = # 100 0;
    W = # 100 0;
end

initial
begin
    io_DATA[15:0] = # 0 16'hZZZZ;
    io_DATA[15:0] = # 150 16'hZZZZ;
    io_DATA[15:0] = # 100 16'h1234;
    io_DATA[15:0] = # 100 16'hZZZZ;
    io_DATA[15:0] = # 100 16'hZZZZ;
    io_DATA[15:0] = # 100 16'hZZZZ;
    io_DATA[15:0] = # 100 16'hZZZZ;
    io_DATA[15:0] = # 100 16'hZZZZ;
    io_DATA[15:0] = # 100 16'hZZZZ;
end

シミュレーション結果の例は以下のようになります。


| Back | CAD Home |

Our mail address is kite@arch.cs.kumamoto-u.ac.jp .
Last modified on