忍者ブログ

雑記

【verilog】simv実行時の引数指定

雑記 > codeのメモ > 【verilog】simv実行時の引数指定

verilog $value$plusargsと$test$plusargsの使用例

VCSでvcsとsimvの分割でverilog simを実行するとき、simv実行時に変数や実行タスクを変更するときに$value$plusargs、$test$plusargsを使用する。

$value$plusargsでTIMEOUT値を変更する例

$value$plusargsはverilogコード内の変数値を変更できる。以下はi_timeoutという変数値をsimv実行時に変更する例。

*.svコード例


// ============================================
// simv時にTIMEOUTを設定
//   引数でtimeoutを設定されたらi_timeoutにそれを入力する
//   引数が無い場合はi_tiemoutは4000のまま
// --------------------------------------------
int i_timeout=4000
if($value$plusargs("timeout=%d",i_timeout));

実行例


simv +timeout=5000

ランダムシナリオのSeed値を変更する場合はsimvの引数に+ntb_random_seedだった気がする。

$test$plusargsでTESTシナリオを変更する例

1回のvcsで全テストシナリオをコンパイルし、simv実行時にTESTシナリオを選んで実行する例。

$test$plusargsのカッコ内にある文字列が引数が一致した場合if分が有効になる。

*.svコード例


// ============================================
// simv時にTESTを設定
//   "test_xxx"という引数を指定されたらtest_xxx()のタスクを実行する
// --------------------------------------------
if($test$plusargs("test_xxx" )) test_xxx (); 
if($test$plusargs("test_xxx1")) test_xxx1();  //TESTシナリオ分この行の追加が必要

実行例


simv +test_xxx

有効な引数が指定されなかった場合TESTがError(or NG)となるようにする必要がある。

コメント

カレンダー

06 2018/07 08
S M T W T F S
2 3 4 5 6
8 9 10 11 12 13 14
16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31