スポンサーサイト

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

[SystemC] sc_starvation_policy

SystemC 2.3から追加になっている機能になります。
sc_start()に、sc_starvation_policyを指定できます。

  • 4.2.1 Function declarations より引用
  • enum sc_starvation_policy {
    SC_RUN_TO_TIME,
    SC_EXIT_ON_STARVATION
    };

default値は「SC_RUN_TO_TIME」です。

  • サンプルコード

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

  • $> ./main 
    
                 SystemC 2.3.0-ASI --- Feb 16 2013 23:56:43
            Copyright (c) 1996-2012 by all Contributors,
            ALL RIGHTS RESERVED
    
    10 ns q = 1
    20 ns q = 2
    30 ns q = 3
    520 ns : End of Simulation time
    
  • SC_EXIT_ON_STARVATIONの結果
  • $> ./main 
    
                 SystemC 2.3.0-ASI --- Feb 16 2013 23:56:43
            Copyright (c) 1996-2012 by all Contributors,
            ALL RIGHTS RESERVED
    
    10 ns q = 1
    20 ns q = 2
    30 ns q = 3
    30 ns : End of Simulation time 
    

結果の通りなんですが、「SC_EXIT_ON_STARVATION」の場合は
イベントが無い時点で終了します。
クロックなどの無限イベントがあると効果ないと思いますが、
シミュレーション終了時に余分な時間を除くことが出来ます。

関連記事

コメントの投稿

非公開コメント

プロフィール

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