Powered by SmartDoc

期待値比較

STでは, Verilog, VHDL, hspice, finesim, eldo, SystemCのシミュレーション時に,期待値比較を行なうことができる. Verilog, VHDL, SystemCでは,言語自体の持つSyntaxを利用して,出力値と期待値の比較を行なうことにより,シミュレーションのみで期待値比較を行なうことができる. hspice, finesim, eldoは,期待値比較の機能を内蔵しているためにその機能を利用している.

Verilogでの期待値比較

Verilogでは,期待値との比較を行うことができる.この比較はVerilogの通常のシンタックスにより行われる. PLIによる拡張ではないので,そのままのVerilogを使用することができる.

比較結果はst.logというファイルに,期待値とシミュレーションとの比較結果が出力される.

期待値とシミュレーションが異なる場合,以下のように出力される.

cycle(time): pin: exp. val != sim. result
         2(200): out:   2 !=1
         3(300): out:   5 !=6

2が,サイクル数, 200が, timingサブルーチンの最初の引数(最小時間単位)を単位とした,比較した時刻, outがピンの名前, 5が期待値, 3がシミュレーション結果となる.

期待値とシミュレーション結果が異なる場合,

Some simulation mismatches are detected!

が,また全く同じ場合は

No simulation mimatch is detected!

というメッセージがlogファイル(通常はverilog.log)に出力される.

なお, waveformサブルーチンで, windowを指定しても, edgeでの比較となる.

waveform "output","window","........%%","out","overflow","sign";

は,

waveform "output","edge","........%.","out","overflow","sign";

と同じ意味になり, 1サイクルが100nsの場合, 80nsで値の比較が行われる.

HSPICE/finesimでの期待値比較

HSPICE/finesimは, .dout構文を用いることにより,期待値比較が行なわれる.シミュレーション実行後のHSPICEの出力ファイルに下記の通りのメッセージが表示される. c0はエラー無しであるが,それ以外のC1からc4は, 490nsに期待値との相違が起こっている

 *****Output vector error report*****
   output signal at node[(c0     ]:
     verified with no error.
   output signal at node[(c1     ]:
**warning**:incorrect logic state at node[(c1 ] time= 0.4900E-06, low \
    expected!
   output signal at node[(c2     ]:
**warning**:incorrect logic state at node[(c2 ] time= 0.4900E-06, low \
    expected!
   output signal at node[(c3     ]:
**warning**:incorrect logic state at node[(c3 ] time= 0.4900E-06, low \
    expected!
   output signal at node[(c4     ]:
     verified with no error.

eldoでの期待値比較

eldoでは,.setbus, .checkbusコマンドにより期待値比較が行える."-t eldo"でベクタを作成したさい,下記の通りの期待値比較記述が出力される.比較される名前は,ピン名がOUTの場合,OUT_busとなる.

.setbus OUT_bus OUT[7] OUT[6] OUT[5] OUT[4] OUT[3] OUT[2] OUT[1] OUT[0]
.checkbus OUT_bus VTH=0.4 VTH2=0.6 BASE=HEXA 
+1.950000e-08 0
+2.450000e-08 1
+2.950000e-08 2
+3.450000e-08 3
+3.950000e-08 4

シミュレーション後のログファイルに,下記の通り,出力されていれば期待値とシミュレーション値が一致している.

CHECKBUS PASS on OUT_BUS

一致しない場合は下記の通り,表示される.

0**** CHECKBUS INFORMATION  TEMPERATURE =   27.000 DEG C
0***********************************************************
at time 7.000000e+01 ns bus OUT_BUS is 0A and should be B

CHECKBUS FAIL on OUT_BUS

Number of checkbus tested       : 12
Number of checkbus passed       : 11
Number of checkbus warnings     : 0
total number of checkbus errors : 1