みんながシステム設計を気にする理由 ――システムLSI開発の視点から
●標準言語の候補が乱立
現在の状況は,1990年代のHDL導入期よりも混沌としていると思います.HDLのときは,言語さえ決めれば設計スタイルはほぼ決まりました.一方,C/C++によるシステムLSIの設計では,C言語で一本化と思いきや,実際は言語仕様が少しずつ異なるさまざまな記述言語が林立しているような状況です.そして,これらの言語の記述スタイルはソフトウェア・プログラムのスタイルとも異なるため,ソフトウェア記述との統合についても課題を残しています(図6).
ここで,C/C++でハードウェアを記述する際の問題点について説明しておきます.ANSIが規定しているC/C++はソフトウェア言語ですから,ハードウェアを記述するために必要な「並列動作」,「時間の概念」,「構造記述」といったものが含まれていません.つまり,C/C++を使うと決断しても,すぐにハードウェア設計を始められるわけではありません.例えばC/C++の教科書のどこを見ても,ハードウェア設計に必要不可欠な「ポート」の概念は出てきません.ポートをC/C++でどのように書くかは,別に定義しなければならないのです.
システムLSIの設計にC/C++を使用するためには,システムをモデリングするためのルールやライブラリが必要になります.この部分が混沌としているため,さまざまなC/C++ベースの記述言語が生まれてきました.例えば,SystemCやSpecC,Superlogなどです.また,ANSI C/C++の文法をそのまま利用することを推奨しているEDAベンダもあります.これらはそれぞれ異なる言語と言っても差し支えないと思います.
では,今後はどうなるのでしょうか? 正直に言って,筆者にも先のことはよくわかりません.しかし,フォーマル・ベリフィケーション・ツールなどの検証ツールや高位合成ツールがどこまで整備されるかが,言語普及のかぎになるのではないかと予測しています.
〔図6〕林立するシステム・レベル言語
SpecC,SystemC,Superlog,ANSI C/C++(拡張などをほどこさないC/C++)など,システム・レベル設計向けに,さまざまな言語が名乗りをあげている.