SystemVerilog:task/functionの引数を指定

SystemVerilogでは、task/fucntionの引数をポート指定のように任意に指定できます。

サンプルコード


 1|module tb;
 2|
 3|  task sub(input int a, input int b,
 4|           output int result);
 5|    result = a - b;
 6|  endtask
 7|
 8|  function void show(input int a, input int b);
 9|    $display("--- a = %3d, b = %3d", a,b);
10|  endfunction
11|
12|  int i,j,k;
13|
14|  initial begin
15|    i = 10; j = 4;
16|    sub(i,j,k); $display("--- sub:i = %3d, j = %3d, k = %3d", i, j, k);
17|    show(i,j);
18|    // 引数を指定
19|    $display("--- Argument ---");
20|    sub(.result(k),.b(i),.a(j)); $display("--- sub:i = %3d, j = %3d, k = %3d", i, j, k);
21|    show(.b(i),.a(j));
22|    $finish;
23|  end
24|
25|endmodule

実行結果


# vsim -L work -do {run -all; quit} -c tb
# Loading sv_std.std
# Loading work.tb
# run -all
# --- sub:i = 10, j = 4, k = 6
# --- a = 10, b = 4
# --- Argument ---
# --- sub:i = 10, j = 4, k = -6
# --- a = 4, b = 10
# ** Note: $finish : tb.sv(22)

というような感じで、「.引数名(xxx)」で指定することができます。
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
05 | 2017/06 | 07
- - - - 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 -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数