スポンサーサイト

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

SystemVerilog : semaphore

SystemVerilog:mailboxmailbox 書いたので、
次は「semaphore」書いてみました。


  • サンプルコード
  •  1|module testbench;
     2|
     3|  semaphore sm_hoge;
     4|
     5|  task task_put();
     6|    sm_hoge.put();
     7|  endtask
     8|
     9|  task task_get;
    10|    forever begin
    11|      if (sm_hoge.try_get()) begin
    12|        $display("@%0d semaphore get", $time);
    13|      end else  begin
    14|        #30;
    15|      end
    16|    end
    17|  endtask
    18|
    19|  initial begin
    20|    sm_hoge = new();
    21|    fork task_get; join_none
    22|
    23|    for(int i=0; i<10; i++) begin
    24|      #10; task_put();
    25|      $display("@%0d semaphore put", $time);
    26|    end
    27|
    28|    #1000 $finish;
    29|  end
    30|
    31|endmodule: testbench
    • 実行結果
    • # //
      # Loading sv_std.std
      # Loading work.testbench(fast)
      # do ./run.do
      # @10 semaphore put
      # @20 semaphore put
      # @30 semaphore get
      # @30 semaphore get
      # @30 semaphore put
      # @40 semaphore put
      # @50 semaphore put
      # @60 semaphore get
      # @60 semaphore get
      # @60 semaphore get
      # @60 semaphore put
      # @70 semaphore put
      # @80 semaphore put
      # @90 semaphore get
      # @90 semaphore get
      # @90 semaphore get
      # @90 semaphore put
      # @100 semaphore put
      # @120 semaphore get
      # @120 semaphore get
      

    メンバ関数

    • Create a semaphore with a specified number of keys: new()
    • Obtain one or more keys from the bucket: get()
    • Return one or more keys into the bucket: put()
    • Try to obtain one or more keys without blocking: try_get()

    書いている時にアレっ?データってどこにいれるんだっけ???
    っと思ってしまったので、他の言語と困惑してた。。。

    関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
05 | 2017/06 | 07
- - - - 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
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。