スポンサーサイト

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

SystemVerilog で多態性(polymorphism)のお勉強

SystemVerilogから class が追加されたので出来ます。

  • サンプルコード
  •  1|class base;
     2|  virtual function void show(int a, int b);
     3|    $display("--- base: a = %3d, b = %3d", a, b);
     4|  endfunction
     5|endclass
     6|
     7|class hoge extends base;
     8|  virtual function void show(int a, int b=0);
     9|    $display("--- hoge: a = %3d", a);
    10|  endfunction
    11|endclass
    12|
    13|module testbench;
    14|
    15|  int i,j;
    16|  base  tmp_cl[2];
    17|  base  cl_base = new;
    18|  hoge  cl_hoge = new;
    19|
    20|  initial begin
    21|    i = 10; j = 4;
    22|    tmp_cl[0] = cl_base;
    23|    tmp_cl[1] = cl_hoge;
    24|    tmp_cl[0].show(i,j); // base
    25|    tmp_cl[1].show(i,j); // hoge
    26|    $finish;
    27|  end
    28|
    29|endmodule
  • 実行結果
  • # --- base: a =  10, b =   4
    # --- hoge: a =  10

解説


tmp_clは baseクラスの配列です。
実行結果を見るとわかると思いますが、tmp_cl[1]の show関数は
hogeクラスの show関数が呼び出されています。
っというような感じです。

関連記事

コメントの投稿

非公開コメント

プロフィール

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。