Cベース設計とは? 導入の課題は? ――人手による介入が必須,完全自動合成は幻想
●Cベース言語は一つではない
以上,C言語ベース設計について説明してきましたが,最後にC言語や関連言語の比較を示したいと思います.表1に各種設計言語の比較をまとめました.これは,以下の観点から評価したものです.
- 動作の階層的記述――設計の上位階層の一つの状態が下位階層の複数の状態になるなど,動作の階層を記述できるかどうかを示す.通常,特殊なくふうがなされていないと表現できない.
- 構造の階層的記述――これは,ネットリストも含めて,通常の階層記述である.C言語そのままでは表現できない.
- 並列表現――システムLSIのように多数の機能モジュールが並列動作するものを記述する際には,もっとも重要な項目の一つである.C言語そのままで並列動作を表現するのには無理がある.
- 同期の表現――複数のものが並列動作しているので,それらの実行の同期を取るメカニズムが必要である.
- 例外処理――これも実用的にはきわめて重要.
- タイミング記述――プログラミング言語では表現しきれないものである.
- 状態遷移記述――ハードウェアだけでなく,組み込みソフトウェアなどでも重宝する記述.C言語そのままでは,記述スタイルがアドホックに(その場その場の対応に)なってしまう.
- 複合データ・タイプ――実用上重要.
以上,関連言語を比較しましたが,単なるC言語だけでなく,それなりに拡張したりくふうされたSpecC言語やSystemC言語の利用が,実用上は必要になると考えられます.そうなると,それらの言語の標準化作業も重要になってきます.ただそれ以前に,EDAツールとしてどこまで支援できるかの見極めも,設計者の立場からは重要であると考えられます.
〔表1〕 各種設計言語の比較
○は対応,△は一部対応,×は非対応を示している.
Cそのまま | C++そのまま | Javaそのまま | Verilog HDL,VHDL | Statechart SpecC,など | SystemCなど | |
動作の階層的記述 |
×
|
×
|
×
|
×
|
○
|
○
|
構造の階層的記述 |
×
|
×
|
×
|
○
|
×
|
○
|
並列表現 |
×
|
×
|
△
|
○
|
○
|
○
|
同期の表現 |
×
|
×
|
△
|
○
|
○
|
○
|
例外処理 |
△
|
○
|
○
|
△
|
△
|
○
|
タイミング記述 |
×
|
×
|
×
|
○
|
△
|
○
|
状態遷移記述 |
×
|
×
|
×
|
△
|
○
|
○
|
複合データ・タイプ |
○
|
○
|
○
|
△
|
×
|
○
|
ふじた・まさひろ
東京大学大学院 工学系研究科 電子工学専攻 教授
◆筆者プロフィール
藤田昌宏.1985年,東京大学大学院情報工学専門課程終了.工学博士.同年,富士通研究所入社.論理設計用CAD技術の研究開発に従事.1993年より米国富士通研究所へ出向,CAD研究グループを立ち上げる.2000年3月より東京大学大学院工学系研究科電子工学専攻教授.ディジタル・システム設計支援技術,特にシステム・レベル合成,論理合成,論理検証を中心に研究している.