システム・レベル設計とはなにか
●三つのどの設計手法にもシステム・レベル言語が必要
システム・レベル言語は,上述した3種類の設計手法のいずれにおいても重要な役割を果たします.
まず,プラットホーム・ベースの設計について考えてみましょう.たとえばMPEG2で必要となる逆離散コサイン変換などの関数計算を行うにはハード・ワイヤード論理(プロセッサやROMを使わず,ゲートやセルによって構成した論理回路)で実現するよりも,プロセッサ・コアとソフトウェアで実現したほうが柔軟性が高くなります(容易に機能を調整できる).そこで,プラットホーム・ベースの設計が採用されるわけですが,プラットホームは採用するプロセッサ・コアや周辺回路ブロック,バス・アーキテクチャなどによって処理能力が変わります.図7(a)はI/O回路,DSP,メモリからなるプラットホームの例です.
システム・レベル言語は,選択したプラットホームによって目的の仕様を実現できるかどうかを評価する際に利用されます.システム・レベル言語で記述した仕様モデルなどを使って,機能や性能を分析するのです.また,どのようなアーキテクチャの変更が必要となるか,コンパイラやリアルタイムOSのカスタマイズは必要か,どのようなソフトウェアを新たに開発する必要があるか,を確認する際にもシステム・レベル言語の仕様モデルが利用されることでしょう.
次に,IPを組み合わせる設計について考えます.この方法を実現するためにはIP(メガセルやソフトウェア部品)のデータベースが充実していなければなりません.仕様が決まったら,IPデータベースから必要なメガセルやソフトウェア部品を選択し,仕様から抽出された機能モジュール(機能ブロック)に対してメガセルまたはソフトウェア部品を割り付けていきます(図7(b)).この過程でさまざまなアーキテクチャが検討され,仕様に合致するかどうかの評価が行われます.システム・レベル言語は,IPの選択,機能への割り付け,仕様との整合性のチェックを行う際に利用されます.
最後にシステムの自動合成についてですが,これは論理合成の場合と同じように考えてください.つまり,システム・レベル言語で記述した仕様モデルがシステム合成ツールの入力データになるわけです(図7(c)).システム合成は,ほかの二つの方法と比べてもっとも幅広くアーキテクチャを探索できる技術です.ただし,制約条件にもとづいたソフトウェアとハードウェアの最適分割,ソフトウェア合成など,技術的に確立されていない問題が多々あります.現状では完全自動化はほぼ不可能で,設計者の対話的な分割・合成作業を支援する環境を実現するのが関の山,といったところのようです.
〔図7〕システムLSIの設計手法
(a)のプラットホーム・ベースの設計では,アーキテクチャの基本部分があらかじめ用意されており,設計者はそのアーキテクチャの一部をカスタマイズして所望の機能を実現する.(b)のIPを組み合わせる設計では,IPライブラリから必要なメガセルやソフトウェア部品を選択して組み合わせ,所望の機能を実現する.(c)のシステムの自動合成では,仕様記述から回路とソフトウェアを自動生成する.