2011年8月アーカイブ

<SystemC SIM編>

| | コメント(0)

20110803_1_nagasawa.jpg

(お正月の通し矢で有名な三十三間堂です。)

 

前回弓道の動作の1つで「会」について触れましたが、もう一つ気に入っている動作で「残心」と言う動作があります。
これは、矢が放たれた後に両手を広げて体と十文字を描いている状態です。
十文字と言ってもまっすぐ伸ばした状態ではなく、楽にした感じです。
この「残心」と言うのは「心を残す」と書きます。「残す」と言うと何かやり残したみたいで嫌な感じを受ける人もいるかも知れませんが、これは弓道が武道ということを考えて貰えればなるほどと思う人もいるかと思います。
弓道は、矢も一手と言って二本を1セットにしています。つまり、1本目の矢で的(敵)を外してもすぐにもう1本の矢で的(敵)を射るために、一本目で燃え尽きてはいけないのです。
社長の好きな言葉の1つで「前三後一(ぜんさんごいち)」という言葉があり、以前紹介して頂きましたが、この「残心」と通じるものがあると感じています。
奢ることなく油断しない心構え、つまり、謙虚さを忘れないということが大事だと思っています。

 

さて、今回は前回紹介したSystemC記述を実際にシミュレーションしてみたいと思います。

 

20110803_2_nagasawa.png
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1行目は、Unix系OSで良く使われているエディタEmacsでSystemCモードを呼ぶ為のものでSystemCには直接関係ありません。編集がし易いと言うだけです。
2行目は、前回書いたモデルを読み込むためのinclude文です。
4行目は、SystemCのトップの関数定義です。関数名は、sc_main固定です。
7~8行目は、クロックの定義です。
10~16は、信号の定義です。
18~20行目は、トレースファイル定義です。VCDファイルを指定しています。
22~28行目は、トレースする信号の定義です。
30~38行目は、評価対象のモジュールのインスタンス宣言とピン接続宣言です。
 

20110803_3_nagasawa.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

40行目以降は、シナリオです。
sc_startが時間を進める関数で、*.writeが信号に値を代入する関数です。
59行目は、トレースファイルのクローズ宣言です。

この結果の波形は次のようになります。
10nsでリセット(s_rst)を解除。
20nsでFlipFlopの入力データ(s_ina)の値にFFを代入。
次のクロック立ち上がりでFlipFlopの出力データ(s_outa)がFFに変化。
また、同20nsで組み合わせ回路の入力データ(s_inb,s_inc)の値にそれぞれ
1とFを代入。
その時の出力データ(s_outb)が1に変化。
 

20110803_4_nagasawa.png拡大した図は次のようになっています。

 

20110803_5_nagasawa.png

以上でSystemCの簡単な紹介ですが、機会を見つけてまたご紹介したいと思います。
ありがとうございました。

以上です。