シミュレーションの方法は, STより出力されたファイルとネットリスト, HDL記述等をシミュレータに入力するだけである.
ターゲット(targetコマンドもしくは, -t)で, hspice, eldoを指定した場合, hspice, finesim, eldoの持つ論理値比較機能を用いて,期待値とシミュレーション値の比較を行なうことができる.ターゲットでspiceを指定すると期待値比較を行わない.finesimの入力ファイルはhspiceと互換のため,-tでhspiceを指定すれば良い.
STからの出力とネットリストを.includeコマンドによりメインのファイルから取り込めば良い.例えば,ネットリストがnet.cirで, STからの出力がtest.cirであるとすると,
.include 'net.cir' .include 'test.cir'
を指定する.
SPICEの場合,電圧入力はノードに電圧源を接続するので,双方向ノードは実現不可能である. STでは,電圧源とノードの間に,電圧制御抵抗(G element)を挿入することで,双方向ピンを実現している.
STからの出力とネットリストもしくはHDLファイルを, Verilogシミュレータに与えるだけである.ただし, STからの出力は`timescaleダイレクティブにより,時間の刻み幅が指定されているので,必ずSTからの出力を最初の入力ファイルとして指定する.ネットリストがnet.vで, STからの出力がtest.vである場合, xmverilogでの実行は,
xmverilog test.v net.v
となる.
targetをvcsもしくはmodelsimとした場合,shmサブルーチンは無効になる.また,modelsimとした場合,シミュレーションの終了は$finishではなく$stopとなる.これは,modelsimのGUI環境では,$finishを実行するとmodelsimが終了してしまうからである.
現時点(2021年11月)においては,次の波形表示ツールを使う.
hspiceでは,
.options post
により,波形ファイル(.tr0)が生成される. cxにより, .tr0形式の波形を表示することができる. STでは,
hspice_wave_format "ascii"
とすることで, simvisionでも見ることが可能なASCII形式で出力することが可能となる.
Verilogの場合, vcdサブルーチンを使うと, vcd形式で出力される.しかし, simvisionで波形を見る場合,一旦shm形式に変換されてしまうため,時間がかかる. simvisionで波形を見る場合,変換の不要なshm形式にて出力したほうが良い.したがって, vcdではなく, shmサブルーチンを用いる.
なお, shmを用いる場合,シミュレーションのオプションとして, +access+rを付加しないと,波形が出力されないので注意する.