Cベース設計とは? 導入の課題は? ――人手による介入が必須,完全自動合成は幻想
ここではCベース設計の流れと,その導入の課題について解説する.Cベース設計とは,C/C++やその拡張言語に基づくシステム・レベル設計,あるいはハードウェア・ソフトウェア協調設計のことを指す.Cベース設計について,「従来より抽象度の高いレベルの記述から完全自動合成が行える」という誤解がある.現実には,合成技術に過大な期待を寄せるのは危険で,人手による介入が必ず必要になる. (編集部)
Cベース設計が注目されるようになってから,3年近くたちました.すでに,「C言語で設計できるのか?」という質問ではなく,「具体的にどのような手法が自分には向いているのか?」を考える時期に来ていると思います.
最近のシステムLSIは,システム全体を1チップに(または,かなり大きな回路ブロックを1チップに)載せています.つまり,システムLSI設計とは,システム全体を設計することにもなるので,当然,システムに含まれる「ソフトウェア」もその設計対象となります.結果的に,ハードウェアだけでなく,その上で動作するソフトウェアも考慮した設計,すなわち「ハードウェア・ソフトウェア協調設計」が必須となり,従来のLSI設計で利用されてきたVerilog HDLやVHDL(ハードウェア記述言語)だけでは対応できないことになります.何らかの方法でソフトウェア設計記述との連携が必要であり,その意味で,ハードウェア設計においてもC/C++言語の利用が重要になってきています.
この流れは「人の雇用」の統計にもはっきりと表れています.現在,いわゆる半導体メーカと呼ばれる企業の採用統計を見てみると,半導体が微細化され,0.13μm以下のプロセスになってくると,ハードウェア設計者の採用数よりもソフトウェア開発者(組み込みソフトウェア技術者)の採用数のほうが多くなってきています.これは,開発工数として,システムLSI開発において,すでにソフトウェア開発量のほうが多くなっていることを示しています.