スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SystemVerilog:コマンドラインからの指定($plusargs)

Plus args in System Verilog is Plus point!!

UVMでのテスト指定とかでみたことはあったけど、自分で指定出来るですね。


SystemVerilogでは、2種類の定義が可能です。

  • $test$plusargs ( string )
  • $value$plusargs ( user_string, variable )

$test$plusargs

引き数の文字を指定できます。

  • サンプルコード
  •  1|module testbench;
     2|
     3|  initial begin
     4|    if ($test$plusargs("HELLO")) $display("Hello argument found.");
     5|    if ($test$plusargs("HE")) $display("The HE subset string is detected.");
     6|    if ($test$plusargs("H")) $display("Argument starting with H found.");
     7|    if ($test$plusargs("HELLO_HERE")) $display("Long argument.");
     8|    if ($test$plusargs("HI")) $display("Simple greeting.");
     9|    if ($test$plusargs("LO")) $display("Does not match.");
    10|    $finish(1);
    11|  end
    12|
    13|endmodule: testbench
  • 実行結果
  • # vsim +HELLO -L work -do {run -all; quit} -c testbench 
    # Loading sv_std.std
    # Loading work.testbench
    # run -all 
    # Hello argument found.
    # The HE subset string is detected.
    # Argument starting with H found.
    # ** Note: $finish    : sample.sv(10)
    #    Time: 0 ps  Iteration: 0  Instance: /testbench
    

おっ!前文字から一致したものを見るのか。。。
注意しないと!


$value$plusargs

文字+値を取得することができます。

  • サンプルコード
  •  1|module testbench;
     2|
     3|  int a;
     4|
     5|  initial begin
     6|    if ($value$plusargs("HOGE=%d", a))
     7|      $display("HOGE value was %d", a);
     8|    else
     9|      $display("+HOGE= not found");
    10|
    11|    $finish(1);
    12|  end
    13|
    14|endmodule
  • 実行結果
  • # vsim +HOGE=10 -L work -do {run -all; quit} -c testbench 
    # Loading sv_std.std
    # Loading work.testbench
    # run -all 
    # HOGE value was          10
    # ** Note: $finish    : sample2.sv(11)
    #    Time: 0 ps  Iteration: 0  Instance: /testbench
    

variableで取得する型指定は以下の通りです。

指定 説明
%d decimal conversion
%o octal conversion
%h, %x hexadecimal conversion
%b binary conversion
%e real exponential conversion
%f real decimal conversion
%g real decimal or exponential conversion
%s string (no conversion)


今まで、実行シェルスクリプトとかでやっていた処理が
ここまで簡単に出来るようになっているとは。。。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。