スポンサーサイト

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

[SystemC] suspend and resume

SystemC 2.3では、Process Controlはかなり拡張されています。
今回は、「suspend & resume」についてです。

  • サンプルコード

  •  1|#include <stdio.h>
     2|#include <systemc.h>
     3|
     4|SC_MODULE( hoge ){
     5|
     6|  sc_event          ev;
     7|  sc_process_handle t;
     8|
     9|  SC_CTOR( hoge )
    10|  {
    11|    SC_THREAD( calling );
    12|    SC_THREAD( target );
    13|    SC_THREAD( tick );
    14|      t = sc_get_current_process_handle();
    15|  }
    16|
    17|  void calling(){
    18|    wait(20SC_NS);
    19|    t.suspend();      // @time 20ns
    20|    wait(20SC_NS);
    21|    t.resume();       // @time 40ns
    22|
    23|    wait(110SC_NS);
    24|    t.suspend();      // @time 150ns
    25|    wait(200SC_NS);
    26|    t.resume();       // @time 350ns
    27|  }
    28|
    29|  void tick(){
    30|     while (1) {
    31|       wait(100SC_NS);
    32|       ev.notify();
    33|     }
    34|  }
    35|
    36|  void target(){
    37|     while (1) {
    38|       wait(ev);
    39|       cout << sc_time_stamp() << endl;
    40|     }
    41|  }
    42|
    43|};
    44|
    45|int sc_main(int argc, char *argv[]) {
    46|
    47|  hoge mhoge("hoge");
    48|  sc_start(500sc_core::SC_NS);
    49|
    50|  return 0;
    51|}
  • 実行結果

  • $> ./main
    
                 SystemC 2.3.0-ASI --- Dec 14 2012 21:01:01
            Copyright (c) 1996-2012 by all Contributors,
            ALL RIGHTS RESERVED
    
    100 ns
    350 ns
    450 ns
    

t:sc_process_handleは tickのものです。
動作としては、@350ns に再開(resume)していることが分かります。


次のように書きなおすとどうでしょうか?
実行すると動作が異なります。


興味ある方は試してくださいな♪

関連記事

コメントの投稿

非公開コメント

プロフィール

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