みんながシステム設計を気にする理由 ――システムLSI開発の視点から
●不ぐあいの原因の3~4割は設計初期の人為的ミス
このようにシステムLSIの開発では,ハードウェア設計とソフトウェア設計が混然一体となって進んでいくのが理想です.そのため,設計対象を表現する言語や記述形式をハードウェア設計とソフトウェア設計の間で共通化したいという考えかたが出てきています.
現状,ハードウェアはVerilog HDLやVHDLといったHDL(ハードウェア記述言語)を用いて設計されています.一方,組み込みソフトウェアの設計言語としてはC言語が主流です.HDLはC言語やC++がサポートしていない並列処理をサポートしており,リアルタイム処理を含む組み込みシステムの開発にとっても便利な面があります.しかし,C/C++を扱える技術者の数と比べると,HDLを扱える技術者の数ははるかに少ない状況ですから,「共通言語はC/C++で」となるのは自然の流れでしょう.
C/C++が設計のどの段階で使われるかということですが,主にRTLより上流のアルゴリズム設計やアーキテクチャ設計に近い段階で使われます(図4).一方,もっと高位のシステムの外部仕様や要求仕様の分析,ドキュメント化には,自然言語(例えば日本語)やグラフィカルな表現(例えば図表)が使われます.
LSIに不ぐあいがあって設計し直す原因のおよそ30~40%くらいは,この段階のヒューマン・インターフェースのエラー(例えば担当者間のコミュニケーション・ミス)にあると言われています.例えば,仕様書の中に複数の意味にとれるあいまいな文章が使われていたり,暗黙の了解事項と思っていたことが暗黙でなかったり,仕様書の版数(バージョン)が違っていたりといったミスです.
上記のようなミスを減らすには,仕様検討の段階の設計表現の形式化や明確化を行う必要があります.こうした場面で利用できそうなのが,例えばUML(Unified Modeling Language)です.UMLそのものは仕様の定式化や要求分析を行うための手法と表現形式(フォーマット)であると筆者は理解しています.このUMLを組み込みシステムに適用するため,いくつかの拡張方式が開発されています.その一つとして,eUMLがあります.
〔図4〕システムLSIの設計フロー
C言語による設計は,RTLより上の工程で使われる.