SystemVerilog class の new

そういえば、書いてなかったので書いてみた。

  • サンプルコード
  •  1|class hoge;
     2|  int int_tmp = 4;
     3|  function new(int a);
     4|    int_tmp = a;
     5|  endfunction
     6|endclass
     7|
     8|module testbench;
     9|
    10|  hoge cl_hoge = new(10);
    11|
    12|  initial begin
    13|    $display("--- cl_hoge.int_tmp  = %3d",cl_hoge.int_tmp );
    14|    $finish;
    15|  end
    16|
    17|endmodule
  • 実行結果
  • # --- cl_hoge.int_tmp  =  10

おまけ


  • サンプルコード
  •  1|class base;
     2|  int int_base1 = 1;
     3|  int int_base2 = 1;
     4|  int int_base3 = 1;
     5|  function new(int a);
     6|    int_base2 = 2;
     7|    int_base3 = a;
     8|  endfunction
     9|endclass
    10|
    11|class hoge extends base;
    12|  int int_hoge1 = 4;
    13|  int int_hoge2 = int_base2;
    14|  int int_hoge3 = 6;
    15|  function new;
    16|    super.new(int_hoge3);
    17|  endfunction
    18|endclass
    19|
    20|module testbench;
    21|
    22|  hoge cl_hoge = new;
    23|
    24|  initial begin
    25|    $display("--- cl_hoge.int_base1 = %3d",cl_hoge.int_base1 );
    26|    $display("--- cl_hoge.int_base2 = %3d",cl_hoge.int_base2 );
    27|    $display("--- cl_hoge.int_base3 = %3d",cl_hoge.int_base3 );
    28|    $display("--- cl_hoge.int_hoge1 = %3d",cl_hoge.int_hoge1 );
    29|    $display("--- cl_hoge.int_hoge2 = %3d",cl_hoge.int_hoge2 );
    30|    $display("--- cl_hoge.int_hoge3 = %3d",cl_hoge.int_hoge3 );
    31|    $finish;
    32|  end
    33|
    34|endmodule
  • 実行結果
  • # --- cl_hoge.int_base1 =   1
    # --- cl_hoge.int_base2 =   2
    # --- cl_hoge.int_base3 =   0
    # --- cl_hoge.int_hoge1 =   4
    # --- cl_hoge.int_hoge2 =   2
    # --- cl_hoge.int_hoge3 =   6
    
  • 解説
    newが呼び出されるタイミングと変数がインスタンスするタイミングは異なります。
    今回の場合、「cl_hoge.int_base3」に対して代入する「int_hoge3」が
    未確定のため結果として、「0」となります。
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
06 | 2017/07 | 08
- - - - - - 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
アクセス人数