FC2ブログ

[SystemVerilog] letを使ってみよう。(関数的に記述)

SystemVerilogの規格(IEEE1800-2013)を読むと知らないことがたくさんあります。
毎週土曜日 22:00より開催しておりますので、時間が合えば参加してください。


SystemVerilog読書会会場


さて、その読書会で「let」なる予約が出て来ました。
p258 - 11.13 Let construct です。


これは、2009から追加されたものみたいです。
機能としては、ローカルな defineマクロ というような説明が多いです。
ちょっと3回に分けて書いてみたいと思います。
※ただし、結構最新のシミュレータでないと対応していないかも。

  • サンプルコード
  •  1|module testbench ();
     2|
     3|  let l_add(X,Y=1) = X + Y;
     4|
     5|  reg[7:0] a, b;
     6|  reg[5:0] c;
     7|
     8|  initial begin
     9|    a = 2; b = 5;
    10|    $display("X(%0d) + Y(%0d) = %0d", a, b, l_add(a,b));
    11|    c = 12;
    12|    $display("X(%0d) + Y(%0d) = %0d", c, 1, l_add(c));
    13|    $finish(2);
    14|  end
    15|
    16|endmodule: testbench
  • 実行結果
  • # X(2) + Y(5) = 7
    # X(12) + Y(1) = 13
    


ここでのポイント

  • 引数の型を宣言していない。

変数:a,b と cは異なる型です。(cはintとかにすればよかった><)
これで問題ないです。


  • 引数に初期値が与えられる

l_addの引数:Yは初期値に「1」を与えてます。
そのため、変数:cの演算時には第二引数が省略できます。

スポンサーサイト



プロフィール

Kocha

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

カレンダー
05 | 2013/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
アクセス人数