« SystemCを使ったハードウェア設計 その2 | Main | SystemCを使ったハードウェア設計 その3 »

2006.11.28

loop loop loop

System Design With Systemc、6章まで読んだ。

C++の機能との組み合わせが、恐ろしく面白い。
便利とかすごいではなくただ単に「面白い」。

サンプルを打ち込んでみてちょっとはまる。
シミュレーションがすぐに終わってしまう。print文(cout)を入れて問題解析。
複数あるモジュールのうち、一つだけSC_CTHREADの処理に無限ループが無かった。
だから、1回実行し、そのSC_CTHREADが次のSC_CTHREADにデータを書き込まない
から全イベント終了でシミュレーションが終わってしまう。

サンプルのように、デストラクタでシミュレーション終了時のステータス
(実際に行った試験の実行回数とか)を表示するのはこのトラップに早く気がついて
良いと思う。が、どこのモジュールが止まったのかはわからない。

シミューレーションが終わった時に各プロセス(SC_CTHREAD)の状態を全部ダンプ
してくれるとうれしいと思う。sc_fifoのreadがブロックされているとか、ループ
を抜けて最後の}まで実行して終了したとか、処理の途中だけどsc_stopで無理矢理
終わったとか。

ちなみにこのループ忘れは自分自身のデストラクタでは検出できない。処理が
終わった時点(}を抜けた時点)では、デストラクタは呼ばれないから。
while(ture){}の後に、抜けたことを示すメッセージを入れたら良いかと思ったが、
そんなメッセージを入れるくらいならwhile(ture){}を忘れない。

とかとか、いろいろ考えていると面白い。

|

« SystemCを使ったハードウェア設計 その2 | Main | SystemCを使ったハードウェア設計 その3 »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18154/12853114

Listed below are links to weblogs that reference loop loop loop:

« SystemCを使ったハードウェア設計 その2 | Main | SystemCを使ったハードウェア設計 その3 »