GAIO CLUB

2005年06月01日

組み込みシステムのシミュレーション環境を自動合成する次世代検証環境「No.1システムシミュレータ」発表

GAIO CLUB 特集
GAIO CLUB【2005/6月号】
組み込みシステムのシミュレーション環境を自動合成する次世代検証環境「No.1システムシミュレータ」発表!
~ 例外処理テストによるソフト品質改善の切り札 ~


先月5/19から全国5カ所にて、次世代シミュレータ製品「No.1システムシミュレータ」製品発表会を開催致しました。組み込みシステムシミュレータは、組み込みソフト品質を改善するための手法として注目をされていますが、シミュレーション環境を構築するための「周辺ハードウエアの仮想モデル化」が1つの課題となっておりました。「No.1システムシミュレータ」は、ガイオが供給する仮想HW部品をGUI上でつないでシステムを定義するだけで、周辺HWを含めたシステムの検証環境を自動作成するツール「システムコンポーネントシンセサイザー」を搭載しています。本特集では、この内容と適用例について解説致します。
No.1システムシミュレータ制作発表会 名古屋会場の模様

組み込み業界の改善意識

最近の組み込み機器に搭載されるソフトウエアは、どのような製品においても、その規模や複雑さが増すばかりであることは周知の事と思います。

下のグラフは、経済産業省による調査から引用した「組み込み開発の問題発生要因」を示しています。原因のほとんどはソフトウエアに関わる内容であり、ハードウエア仕様やハードウエアバグに関連する問題は、わずか7%しかありません。
組み込み開発の問題発生要因
このように組み込み機器の品質を上げると言うことは、「組み込みソフトウエア」の品質を上げることに他なりません。
次のグラフは、組み込みソフト開発者に対する経済産業省の調査から引用した、ソフトの改善に対する意識を示しています。現在の開発に対して、「開発期間を短縮する」ことや「コストを削減する」ことよりも、「品質を高める」ことを問題点として意識していることが伺えます。
貴組織の組込みソフトウェア開発においてどの領域の改善が重要と思いますか

ソフト品質改善への取り組み

ソフト品質を改善するための手法としては、開発言語、工程管理などの、開発プロセスに改善を加える方法があります。これには、UMLによるシステムモデリングや要求仕様分析、C++/Javaなどのオブジェクト指向プログラミングが挙げられます。
これをWindowsの仮想環境上に置き換える場合、マイコンはマイコンシミュレータが動作する1つのスレッドとして、また仮想ハードウエアも別の1つのスレッドとして動作します。

確かに、アセンブラやC言語の様に、自由度が高い反面バグを生みやすい言語による設計に比べれば、このようなアプローチは、品質の高いソフトを設計できる方法かもしれません。しかしながら、既存のコード資産を流用して、積み重ねの開発になりがちな組み込み開発では、設計方法を変えることが難しいのが実態です。

そこで、多くの開発者は、ソフト検証の工程を改善するために、より密度の高い、確実な検証の方法を模索しています。

シミュレータによる網羅的なシステム検証

ターゲットボードとICEを使用した、いわゆる「実機検証」では、正常系の検証に偏りがちです。なぜなら、実機では例外的な条件、複合的な条件をシステム上に再現することが難しく、発生頻度の低いまれな現象に対するソフト検証を行うことが、原理的に難しいためです。

これを解決し、組み込みソフトのテスト密度を上げ、より確実なデバッグを行う1つの方法が「シミュレータ」による検証です。シミュレータはソフトウエアであるため、動作の時間軸を自由に設定することができます。「時間を止める」「時間をステップ実行する」のような、実機では不可能なデバッグを容易に行うことができます。

シミュレータでは、マイコンの動作に加え、周辺ハードウエアの動作もシステムに同期して正確に再現できるため、システムへのイベント発生時間を定義した「テストシナリオ」を作成することで、不具合の原因になりがちな例外的なタイミング条件を容易に再現テストすることができます。

これにより、実機検証に比較して飛躍的にテスト密度を高めることができるため、ソフト品質の改善を促進することにつながります。

シミュレータ適用に対する課題

ガイオは、過去十数年に渡って、組み込み開発へのシミュレータ適用を提案してきました。しかしながら、組み込み開発の現場へ十分に普及しているとは言えません。なぜなのでしょうか?
開発にシミュレータを利用していますか?
弊社がセミナー会場で行ったアンケートでは、以下のような理由が挙げられています。

・ 環境構築が面倒だ
・ 実行速度が遅すぎて使えない
・ 実機テストで十分と思っている
・ シミュレータを知らなかった


この中で、「環境構築が面倒」が、シミュレータが普及しない最大の理由となっています。

シミュレータ環境の構築とは

組み込みシステムをシミュレータで検証すると言うことは、システムそのものをPC上のソフトウエアとして動作させなければなりません。組み込みシステムは、マイコン以外に周辺チップ/LSI、外部メカ、通信ポートなどの組み合わせで出来ており、これらマイコン以外のハードウエアをソフトで置き換えた「仮想ハードウエア」(以下、仮想HW)を作成する必要があります。
シミュレータ環境構築のための仮想HW作成
ガイオの既存製品「システムシミュレータ」では、仮想HWをC/C++言語でモデリングするツールを提供しています。しかしながら、ソフト検証を行うのはソフト開発者であり、周辺HWの動きをソフト開発者が仮想HWとしてモデリングするのは、畑違いであり自ずと敷居が高くなります。また、シミュレーション環境を作成することは、本来の仕事ではないため、工数を割くこと自体が問題となる場合もあります。

ソフト品質改善のためにシミュレータを適用するには、環境構築が短時間で容易に行えることが必須条件となります。

仮想HW部品をつなぐだけで組み込みシステムのシミュレーション環境を合成

そこで、ガイオは組み込みシステムシミュレータの環境を容易に構築するためのツール「システム・コンポーネント・シンセサイザー」(以下、SCS)を企画し、開発しました。これは、ガイオが提供するHW部品コンポーネントを、エディタで配置接続し、I/Oポート、割り込みなどの接続状態を定義するだけで、仮想HWモデルの生成、マイコンシミュレータ(ISS)ととの接続など、シミュレーション環境を自動合成するツールです。

HW部品コンポーネントはすべてWin-dowsシステムのdll(ダイナミックリンクライブラリ)で構成されており、接続するだけで動作します。仮想HWモデルを生成するために、従来の様にネイティブコンパイラでコード化する必要はありません。
また、ボタン操作、表示LCDパネルなどのHMI(ヒューマン・マシン・インタフェース)については、専用のGUIエディタが搭載され、SCS上にGUI部品コンポーネントを配置するだけで、GUIエディタ上に部品が自動生成されます。

このように、SCSは、従来必要だった環境構築ためのプログラミングを一切排除しており、SCSのエディタ上でシステムを定義するだけで直ぐにシミュレーション環境を起動できます。構築した環境の動作や整合性の確認も、非常に短時間で行えます。

新開発システム・コンポーネント・シンセサイザー(SCS)

このSCSは、「No.1システムシミュレータ」全体を制御するアプリケーションです。ライブラリ(後述)からコンポーネントHW部品をシート上にドラッグ&ドロップで配置し、i/oアドレス、割り込み接続など各コンポーネント間の接続関係を定義します。

システムの構成を定義すると、シミュレータ起動ボタンを押すだけで、直ぐにシミュレーション環境が起動し動作します。ここで定義したシステムの構成は、プロジェクトとして保存され管理されます。
簡単な操作でシミュレーション環境を合成するNo.1シミュレータの構成図
システム・コンポーネント・シンセサイザー画面

動的に結合してシステムを作るコンポーネント・ライブラリ

コンポーネントライブラリとは、システムを構成するHW部品を仮想モデル化したものです。各コンポーネントは独立したdllで構成されており、MPU、各ペリフェラエル部品、i/oレジスタなどを定義するプリミティブ部品などがあります。

このdllコンポーネントは規定された接続インタフェースを持っており、SCSエディタ上で、お互いの接続関係を定義するだけで、シミュレーション時に「動的に」結合し、1つのシステムとして動作します。

これらのコンポーネント部品は、ユーザーからの要求により、順次ガイオが供給する計画となっています。
コンポーネント・ライブラリの一例

XMLによりシステムを定義するコンポーネント・データベース

コンポーネントデータベースとは、前述のdllコンポーネントの各種パラメータを保持するものです。例えばMPU部品の場合、エンディアンなどのモード情報や割り込みベクターテーブル等のMPU自身のパラメータや、他のdllコンポーネントとのi/oアドレスマッピングや割り込みタイプの指定等の接続関係を示すパラメータを保持します。

このデータベースは、内部的にはXMLにより記述されており、SCSによりシステム構成が定義されると、各コンポーネントがXML上で「合成」され、シミュレーションシステムを形成します。
XMLにより管理されるコンポーネントのパラメータ

GUIエディタ

これは、ボタン、表示パネルなどのGUIを持つコンポーネントを編集するためのエディタです。下図は、プリンタ紙搬送モデルの例を示していますが、製品に実装される操作ボタン、表示パネルを始め、デバッグのためのテストパラメータ設定パネル、紙搬送経路のアニメーションなど、自由にGUIを構成することができます。
GUIエディタで作成したプリンタ紙搬送モデルの例
マイコンシミュレータのソースデバッグ画面と内部状態・メモリ参照・パラメータグラフなどデバッグ用ビュー

マイコンシミュレータ、デバッグビュー

SCS上に配置されたMPUは、自動的にマイコンシミュレータ(ISS)にマッピングされ、シミュレーション実行が行われます。マイコンシミュレータは、ソースコードデバッグ、レジスタ・メモリ参照、ブレイク・ステップ実行など、デバッガとしての機能を全て持っています。

また、仮想HWコンポーネントとの接続(i/oポート、割り込み)や、各コンポーネントの内部レジスタなどは、専用の波形・グラフビューアにより、いつでもモニターすることができます。

他社シミュレータとの連携コ・シミュレーション

  • No.1システムシミュレータには、他社製HDLシミュレータ、OSCI製SystemCシミュレータ、他社製3D-CAD、MATLAB/Simulinkとの接続インタフェースを持っています。このインタフェースも、コンポーネントdllの1つとなっており、SCS上にコンポーネントを配置し、接続先の情報を設定するだけで、容易にコ・シミュレーション環境を構築することができます。
  • 他社製シミュレータのコ・シミュレーション

ユニークな稼働保証サポート体制

ガイオは、シミュレーションによるソフト検証環境を確実に立ち上げて頂くために、コンサルテーションを含めた「稼働保証サポート」をスタート致します。

過去の納入での失敗事例としては、環境構築から安定運用まで、時間が掛かりすぎるケースがありました。この原因としては、計画立案の不備、コンサルテーションの不在、また予期せぬツールトラブルなどがあります。特に初めてシミュレータ環境を採用するケースでは、導入ターゲット、期待する効果などをヒアリング、コンサルテーションを行い、しっかりとした準備の基に、稼働予定期日までに立ち上げを完了できるようにサポートさせて頂きます。
ユニークな稼働保証サポート体制

さいごに

「No.1システムシミュレータ」は、ソフト品質を改善するための、網羅的なシステム検証を可能にする強力なツールです。課題となっていた環境構築に掛かる工数についても、劇的な改善が期待できます。またサポート体制についても、外資製品にはない、国内メーカーならではの柔軟な体制を整えております。

この機会に、ソフト品質改善にむけて、スタートを切ってみてはいかがでしょうか?

人気のコラム

最新のコラム