CVC 実行方法と処理速度2015年08月27日 18:38

CVC をコンパイルしたので、これを使ってシミュレーションしてみる。
CVC には、インタープリターモードとコンパイルモードがある。

インタープリターモード(+interp)
・すぐに実行
・途中で止められる
・止まった時点でのレジスタ値、メモリ値などが見られる
・続きから実行できる

コンパイルモード
・コンパイルして実行ファイルが出来る→実行
・途中で止めたら終わり

それぞれ上のような特徴があるが、最も大きな違いは実行速度にある。
コンパイルして実行する場合、インタープリターモードで実行するよりも10倍速い。冗談ではなく、10倍速い
コンパイルにかかる時間もわずかなので、インタープリターモードを使う意味はほとんどないと言えよう。内部のレジスタ値はVCDファイルにダンプしておけば見ることが出来るし。
試しにちょっと実行とか、ちょっと文法チェックなどの場合くらいしか使い道がないだろう。もちろん、時間のかからないシミュレーションであれば、インタープリターモードだけでも十分ではあるが。

主要な実行フラグを示しておく
基本型cvc64 mytest.vmytest.v をコンパイルし、cvcsimという実行ファイルが出来る
-f入力ファイルリスト指定cvc64 -f mylist.txtVerilogファイルを列挙したテキストファイルを使用
-o出力ファイル名指定cvc64 -o mytest mytest.vこの場合、mytest という実行ファイルが出来る
-O最適化cvc64 -O mytest.vコンパイル時間が伸びるが実行は速くなる
+2state2値処理cvc64 +2state mytest.v内部処理を4値(0/1/x/z)ではなく2値(0/1)で行う
若干速くなる
+nbaoptノンブロッキング最適化cvc64 +nbaopt mytest.vノンブロッキング代入直前の遅延を無視して高速化
+dumpvarsVCD出力cvc64 +dumpvars mytest.v内部ノードをVCDファイルに出力
Verilogファイルの変更は不要

詳細は、 http://www.tachyon-da.com/cvc-resources/ の Quick Start Guide を参照のこと。

試しにシミュレーションにかかった時間を比較してみる。
詳しくは明かせないが、ちょっとしたIP
modeflag分:秒
インタープリタモード+interp40:29
コンパイルモード3:36
コンパイルモード-O3:33
コンパイルモード+2state3:03
(参考)Cadence IES1:15

Verilator にちょっと古いベンチマークがあるが、だいたい合っている感じ。
http://www.veripool.org/wiki/veripool/Verilog_Simulator_Benchmarks
以上。