[SystemVerilog][ネタ] ユーザーにも オーバーロードを

前回の「rand_mode と constraint_mode」で書いて気づいたのですが、
オーバーロードしてる!!!


オーバーロードって?

昔書いたものがあります。
「task/functionのオーバーロードを検討してみた。」

結局は上手いこと SystemVerilogでは出来ないんですよね。。。


rand_modeの定義

LRMみると、衝撃なんですよね

task object[.random_variable]::rand_mode( bit on_off );

or
function int object.random_variable::rand_mode();

おいおいwww 出来るの!?
ま、まさか。taskfunction でいけちゃう?


トライアル

  • コード
  •  1|class hoge;
     2|  int temp;
     3|  task mode (int i);
     4|    temp = i;
     5|  endtask
     6|  function int mode();
     7|    return temp;
     8|  endfunction
     9|
    10|endclass
    11|
    12|module testbench;
    13|  hoge test = new;
    14|
    15|  initial begin
    16|    test.mode(3);
    17|    $display("--- test.temp is %d", test.mode());
    18|    $finish(1);
    19|  end
    20|
    21|endmodule:testbench
  • 結果
  • || Model Technology ModelSim ALTERA vlog 10.1d Compiler 2012.11 Nov  2 2012
    ** Error: sample.sv|6| 'mode' already exists; must not be redefined as a function.
    || make: *** [sample] エラー 2
    

ですよねー(´・ω・`)


言語上で必要だと思ったならユーザーにもはよ!!!

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
09 | 2017/10 | 11
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
アクセス人数