[SystemVerilog] functionで waitするの続き

[SystemVerilog] functionでwaitする


内ので記述で疑問だったので、続き。
ちょっとコードを書いてみました。

module testbench ();

  class C;
    bit b;
    function bit func1();
      return b;
    endfunction
  endclass

  C obj1=new;

  initial begin
    repeat(10) begin
      wait(obj1.func1());
      $display("waiting over : @%0t", $time);
    end
  end

  initial begin
    #10 obj1.b=1;
    #10 obj1.b=0;
    #10 obj1.b=1;
    #10 obj1.b=0;
  end

endmodule: testbench
  • 実行結果
  • # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    # waiting over : @10
    

これだと、waitしている側に遅延が無いので結果としてそうですね。


なので、#5遅延つけてみました。

module testbench ();

  class C;
    bit b;
    function bit func1();
      return b;
    endfunction
  endclass

  C obj1=new;

  initial begin
    repeat(10) begin
      wait(obj1.func1());
      $display("waiting over : @%0t", $time);
      #5;
    end
  end

  initial begin
    #10 obj1.b=1;
    #10 obj1.b=0;
    #10 obj1.b=1;
    #10 obj1.b=0;
  end

endmodule: testbench
  • 実行結果
  • # waiting over : @10
    # waiting over : @15
    # waiting over : @30
    # waiting over : @35
    

と、こんな感じで functionの結果を waitに突っ込むことが出来るらしいです。

関連記事

コメントの投稿

非公開コメント

プロフィール

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
アクセス人数