スポンサーサイト

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

next_triggerを記述してみる。

SC_METHODでは、SC_THREADと異なり process内で wait文が使用できません。
そのため、「next_trigger」を使って動的にセンシビリティを変更します。
next_trigger のイベントを取り消すには、引数なしで記述します。

○sc_main.cpp
 1|#include <systemc.h>
 2|using namespace sc_core;
 3|
 4|SC_MODULE( hoge ){
 5| sc_in <bool > i_sig;
 6|
 7| inline void process(void) {
 8|   std::cout << "--- Call process() @ "
 9|     << sc_time_stamp() << " ---" << std::endl;
10|   next_trigger(5,SC_US);
11|   if(i_sig.read() == falsenext_trigger(); // キャンセル
12| }
13|
14| SC_CTOR( hoge )
15| {
16|   SC_METHOD( process );
17|     sensitive << i_sig.pos();
18|     dont_initialize();
19| }
20|};
21|
22|int sc_mainint argc, char* argv[] ) {
23|
24| sc_signal<bool> s_sig ; s_sig = 0;
25| hoge mhoge("mhoge");
26| mhoge.i_sig(s_sig);
27| std::cout << "--- Simulation Start ---" << std::endl;
28|
29| // Start
30| sc_start(10,SC_US); s_sig = 1;
31| sc_start(10,SC_US); s_sig = 0;
32| sc_start(10,SC_US); s_sig = 0;
33| sc_start(10,SC_US); s_sig = 1;
34| sc_start(10,SC_US); s_sig = 0;
35| sc_start(10,SC_US); s_sig = 0;
36| sc_start(10,SC_US);
37|
38| return 0;
39|}
40|

実行結果がこちら。
--- Simulation Start ---
--- Call process() @ 10 us ---
--- Call process() @ 15 us ---
--- Call process() @ 20 us ---
--- Call process() @ 25 us ---
--- Call process() @ 40 us ---
--- Call process() @ 45 us ---
--- Call process() @ 50 us ---
--- Call process() @ 55 us ---

ソースコードの 11行目のキャンセル記述をコメントアウトすると、
実行結果はこのようになります。
--- Simulation Start ---
--- Call process() @ 10 us ---
--- Call process() @ 15 us ---
--- Call process() @ 20 us ---
--- Call process() @ 25 us ---
--- Call process() @ 30 us ---
--- Call process() @ 35 us ---
--- Call process() @ 40 us ---
--- Call process() @ 45 us ---
--- Call process() @ 50 us ---
--- Call process() @ 55 us ---
--- Call process() @ 60 us ---
--- Call process() @ 65 us ---

動的なセンシビリティの変更は、高位合成では使えない記述かと思いますが。。。
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

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