CVC 実行方法と処理速度
2015-08-27


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

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

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

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

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

詳細は、 [URL] の Quick Start Guide を参照のこと。

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

Verilator にちょっと古いベンチマークがあるが、だいたい合っている感じ。
[URL]
以上。
[verilog]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット