ハードウエア・ソフトウエア協調設計(以下ハード・ソフト協調設計)とは,システムを構成するハードウエア部とソフトウエア部を,システムの性能やコストなどの観点から最適となるように協調して設計することである。ここでハードウエア部とは,ASICなどで実現した専用回路部を示す。ソフトウエア部とは,マイクロプロセサやDSPとそのプログラムで実現した部分を指す。ソフトウエア部は,汎用回路部とも言える。この協調設計の支援をするツールが,ハード・ソフト協調設計ツール(hardware-software co-design tool)である。

 ハード・ソフト協調設計が注目される背景として,次の2つを挙げることができる。まず1つは,半導体製造技術の進歩によって,大規模で複雑なシステムが1つのチップ上に構成できるようになったこと。すなわちLSIの設計と検証が,システム全体の設計と検証と等価になった。

 2つめは,電子機器(セット)のライフ・サイクルが短くなり,開発期間を短くすることがますます重要となっていることである。適切な時期にセットを発売しないと,市場で遅れを取るどころか,参入すらできないことになりかねない。ハード・ソフト協調設計は設計の最上流であり,ここでバグをつぶせば,開発期間短縮への効果は絶大である。

4つの段階がある

 ハード・ソフト協調設計には大きく分けて4つの段階がある。すなわち,(1)システム仕様を記述する段階,(2)システムをハードウエア部とソフトウエア部に分割する段階,(3)ハードウエア部とソフトウエア部に資源を割り付ける段階,(4)システムを検証する段階,である。

 (1)の段階では,C言語やC++,ハードウエア記述言語(HDL)を用いてシステム全体の仕様を記述し,システム・アルゴリズムを設計する。(2)の段階では,ハードウエア部として実現した場合とソフトウエア部として実現した場合の性能/コスト/消費電力を比較検討したり,ハードウエア部とソフトウエア部と間のデータ転送量を検討する。そして,システム全体が最適になるように,ハードウエア部とソフトウエア部に分割する。

 次に(3)の段階では,ハードウエア部を動作レベルやRTL(register transfer level)の設計データに具現化し,ソフトウエア部を実現する具体的なマイクロプロセサやDSPを選ぶ。同時にハードウエアとソフトウエア部分のインタフェース部分を生成する。最後の(4)の段階では,(3)の結果を用いて,ハードウエア部とソフトウエア部を同時にシミュレーションし,システム全体を検証する。

 上述した4段階のうち,(1)の段階から(3)の段階までは,これまで大学や研究機関にて基本技術を研究1)していたが,ようやくいくつかの市販ツールが登場してきた。しかし,システム仕様の記述にふさわしい言語(SLDL:system level design language)や,ハードウエア部とソフトウエア部の自動分割手法は研究レベルであり,適用できる範囲が限定される。今後の技術発展が大いに期待される分野である。

 第4段階の協調検証向けのEDAツール(ハード・ソフト協調検証ツール)は,EDAベンダーから続々登場している。英語では,co-simulatorと呼ばれている。

協調検証ツールで開発期間短縮

 従来のシステム開発では,ハードウエア部とソフトウエア部の設計は基本的に独立して進めていた。このため,システム全体の検証が可能になるのは,両方の試作が完成してからになった。問題になるのが,ハードウエア部の専用回路をASICで実現した場合である。システム全体の検証で不具合が見つかったときに,その原因がASICにあったとしても,ASICの再開発という手は打てない。ASICの開発期間が長いためである。結局,ソフトウエア部で何とか帳尻を合わせることになる。この結果,システム全体としては最適とは言えなくなる。

 ハード・ソフト協調検証ツールは,いわば仮想のICE(in circuit emulator)である。ハードウエア部を試作する前に,ソフトウエア部を含めたシステム検証が可能になる。この早期のシステム全体検証により,ハードウエア部とソフトウエア部の双方を最適に設計し直す。開発期間を不用意に延ばすことなく,システムを最適化できる。

課題は処理速度の向上

 ハード・ソフト協調検証ツールの最も大きな課題は,処理速度の向上である。いくら「仮想」のICEとはいっても,本物のICEに比べてあまりに低速では,実際の設計には使えない。特に,ソフトウエア部を検証するツールの処理速度に比べて,ハードウエア部の検証ツールの処理速度が遅いのが気なる。そこで,ハードウエア部の検証に従来型の論理シミュレータではなく,処理速度が速いサイクル・ベース・シミュレータを用いたり,マイクロプロセサやDSPの内部動作についてC言語を使ってモデル化したり,バス・サイクルだけをモデル化するなどして,高速化を図っている。


(99. 9. 6更新)

このEDA用語辞典は,日経エレクトロニクス,1996年10月14日号,no.673に掲載した「EDAツール辞典(NEC著)」を改訂・増補したものです。