<SystemC>
最近、ネット検索をしていて、射法八節と言う言葉を目にして懐かしく見入ってしまいました。
実はこの射法八節と言うのは弓道の言葉で、大学の頃弓道をやっていた私にとって懐かしい言葉でした。
八節とは、以下の8つの動作(気構え)のことです。
足踏み、胴造り、弓構え(ゆがまえ)、打起し、引分け、会、離れ、残心
D-CLUEに入ってから改めてこの8つの中で気に入ったのは、「会(かい)」です。
会と言うのは弓を引いた状態で矢が放たれる手前の状態です。
弓の世界では矢は放つのではなく自然と放たれるのだとされています。いつ放たれても良いように常に背骨を軸に矢に向かって矢を引いている状態がこの会と言う状態です。
目には見えないですけど、この状態は止まっているのではなくジワジワと伸びているのです。
「D-CLUEに入ってから改めて…」と書いたのは、以前ならそのようなことまでは考えもしませんでしたが、D-CLUEに入ってからは良い緊張感があり、常に真剣勝負であるし、いつどのような商談が来ても受けて立つと言う気構えでいますので、その状態が昔やっていた弓道の射法八節を見て、あ~今はこの会の状態なんだなぁと実感しました。
さて、前回SystemCについてさわりを書きましたが、今回はSystemCで組合せ回路と順序回路を具体的に書いてみたいと思います。簡単ですけど次のような回路の記述を例にします。
まずは、VHDLで言うところのentityに相当するsample.hファイル(上記)について説明します。
4行目は、SystemCを記述するのに必須のincludeファイルになります。
6行目は、sampleと言うモジュールを宣言しています。
7~17行目は、入出力宣言で、上位階層と接続する信号を定義します。
22~25行目は、C++で言うプロトタイプ宣言です。関数の実体はsample.cppで提示します。
27~36行目は、C++で言うコンストラクタ宣言でこのクラス(モジュール)が宣言された時に一度だけ実行されるものを定義します。
31行目は、関数の呼び出し宣言であるSC_METHODでfunc_regを定義しています。
また、32行目ではrst,clkでその関数が呼び出されることを定義しています。
これをセンシティビティ宣言と言います。
34~35行目もfunc_regの宣言とほぼ同じですが、sensitive_posとsensitiveの違いがあります。
次にVHDLで言うところのarchitectureに相当するsample.cppを説明します。
4行目は、このファイルで使用する変数、関数を宣言しているsample.hをincludeします。
7~12行目は、func_reg関数の実体でrstが1ならリセットなのでoutaが0になり、1ならoutaにはinaの値が代入されます。
14行目は、func_and関数の実体でinbとincのandをoutbに代入します。
先ほど、VHDLと比較してentityとarchitectureに対応させましたが、実際には次のような違いがあります。verilogも一緒に比較した表を載せます。
このように「違いの分かるエンジニア」を目指せばどんな言語だろうとアルゴリズムでお話が出来ると思います(^^)私の持論です。
次回は、実際にSIM環境を紹介したいと思います。
以上です。

コメントする