ただいまコメントを受けつけておりません。
雑記 > codeのメモ > 【verilog】simv実行時の引数指定
VCSでvcsとsimvの分割でverilog simを実行するとき、simv実行時に変数や実行タスクを変更するときに$value$plusargs、$test$plusargsを使用する。
$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値を変更する場合も$value$plusargsを使用した気がする。
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)となるようにする必要がある。
ただいまコメントを受けつけておりません。