Cベース設計とは? 導入の課題は? ――人手による介入が必須,完全自動合成は幻想
●ステップ・バイ・ステップで抽象度を下げていく
実際のシステムLSI設計では,通常,図3に示すような設計の抽象化レベルが定義され,使われています.
1)仕様レベル
まず,通常,ソフトウェア工学などで述べられている要求仕様定義については,組み込み機器の設計ではMATLABやUML(Unified Modeling Language)などのツールや技術が利用されています.また,通信機器の設計では,SDL(Specification and Description Language)やUMLなどのツール,および技術が利用されています.設計対象のシステムLSIに対する要求を分析し,仕様が何らかの形で定義されます.組み込み機器の設計と通信機器の設計でツールが異なるのは,ツールや技術の特性だけでなく,過去の資産を無視できないといった理由もあります.
Cベース設計では,これらの仕様をC言語またはその拡張言語で記述することになります.通常,この仕様レベルでは,実現すべき機能の表現としての関数が定義されています.この段階では全体として時刻の概念がなく,「untimed記述」と呼ばれます.もちろん,仕様レベルでも外部とのインターフェースの関係から,実時間(リアルタイム)制約などがある場合も多いのですが,そのような時間制約は部分的なものであって,記述全体としては時刻の概念のない設計記述となっています.このuntimedの設計記述は,C言語やその拡張言語では自然に表現できます.
〔図3〕設計の抽象化レベル
システムLSI設計の場合,従来からソフトウェア工学などで利用されてきた要求仕様の定式化技術の利用から始まり,時刻の概念がないuntimed記述である仕様レベル,内部処理方法を決定し,時刻の概念が現れるアーキテクチャ記述(timed記述),各モジュール間の通信の方法の詳細を決定した相対通信決定レベル,そして,各クロックで具体的に何を計算するかを決定した実装レベルへと設計が進んでいく.現状では,仕様レベルから実装レベルへの変換は,人手が介入した対話的な設計ツールで行うのが現実的である.