よくわかるSystemCによるシステムデザイン入門

by syoyo

ひさしぶりに本屋に寄ったら、 SystemC(C++ によるハードウェア記述言語) に関する本が新たに出版されていました。

よくわかるSystemCによるシステムデザイン入門
http://www.amazon.co.jp/exec/obidos/ASIN/4774123331

SystemC, ひいてはハードウェア記述言語はまだまだ一般のソフトウェアプログラマにとっては
ニッチなのかなぁと思っていましたが、こういうのを見ると、
だんだんと一般的なプログラマもハードウェア屋になれるしきいも下がってきているのかなと思います。

ちなみに、むかし、SystemC のバイブルであろう、SystemCによるシステム設計(通称シダ本?)

SystemCによるシステム設計
http://www.amazon.co.jp/exec/obidos/ASIN/4621071440

をちらりと読んでみたことはありましたが、ちんぷんかんぷんでした。
これよりはきっと今回でた本はわかりやすいのでしょう。

systemc(登録が必要だが無償でダウンロードできる) は、
バージョン 2.0 は Mac OS X では未対応で、実際 pthread 関連でうまくコンパイルできなかったのですが、
最近リリースされている 2.1 ベータでは、Mac OS X もサポートされており、コンパイルもうまくいきました。

また、もう少し実チップと同じ動作(サイクルまで正確に一致)まで記述したい場合は、
systemc ではなく Verilog や VHDL などの
RTL(register transfer level、レジスタレベルで動作を記述) というのもあります。

これらハードウェア言語で記述しておけば、
1 本のコードから、
シミュレーション(検証、デバッグ)には CPU で動くようにコンパイル、実際の実チップ用には回路を生成、
という風にできるようです。

ちなみに、私が経験した限りでは、最近の CPU(Pentium ぐらいの規模で、ギガヘルツの動作周波数) レベルの回路を
CPU でシミュレーションする場合、Pentium 3 GHz くらいのマシンパワーを持ってしても、
RTL では 10 Hz – 40 Hz 程度、systemc では 200-400 Hz 程度くらいしか秒間に処理できません。

ですから、たとえば、1GHz(10^9) 駆動の実チップが 1 秒で処理するのを、
RTL にて CPU シミュレーション(10Hz のパフォーマンスと仮定)させるとすると、、、、

(10^9 / 10) / (3600(sec) * 24(hour)) = 1157 日!!!

なんと 3 年かかります!!!

とはいえ、テープアウト前(も後も)はこのシミュレーションパフォーマンスでチップを検証し、
100 % バグフリーにしなければならない訳ですから(バグがあってチップが止まったりしてはならない)、
大変ですね。

とりあえずは systemc を用いて、
これからの時代趣味で GPU を作りだす野郎が現れるようになってきそうです。

Advertisements