[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
イベントカレンダー

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