GAIO CLUB

2003年08月02日

組み込み開発へのシミュレータ導入を成功させるための秘訣とは

GAIO CLUB 特集
GAIO CLUB【2003/8月号】
組み込み開発へのシミュレータ導入を成功させるための秘訣とは

見つからないバグをどのようにして見つけるのか

皆様の中には、デバッグの工程で、ソフトを実装した試作モデルを前に多数の人数を注ぎ込んでデバッグを重ねても、結局見つからないバグがあることを経験された方は、多くいらっしゃるのではないでしょうか?

潜在的な見つからないバグの多くは、通常動作ではなく、例外的な動作、異常動作に関連するものが多く、試作モデルを使ってのデバッグでは、そのようなケースが滅多に再現しないことが理由です。

実際のハードウエアを使ったデバッグでは、このようなバグは、原理的に見つけることが難しいものであり、これを改善するには、デバッグの手法そのものを見直さなければなりません。

組み込みシステム検証の精度を上げるシミュレータ

組み込みツールの中で、特に最近注目を浴びているのが、組み込み開発向け「シミュレータ」の導入です。シミュレータは、基本的には、組み込みシステムを全てソフトウエアで再現するものであり、ハードでは難しい例外現象の発生や、希にしか起こらない異常現象などをシステムに容易に起こすことが出来ます。これにより、実機では見つからないバグを見つけだすことができます。

このコーナーでは、「シミュレータ」を導入するに当たり、導入効果を上げて、成功するためのポイントを考えてみたいと思います。

まずはワーキンググループの立ち上げから

シミュレータを導入して、システム検証を成功させるための第1歩は、ワーキンググループの立ち上げです。システムを対象とする場合の多くは、同一部署内のメンバーや他部署の協力などが必須であり、1人の担当者だけで全てをやり遂げると言うようなケースは、ほとんどありません。

シミュレータ導入までのフロー

シミュレータを導入するまでの大まかな流れをご紹介します。お客様の体制、規模などにも寄りますが、導入に成功されたお客様は、次の様なフローが一般的です。

パイロットモデルによる導入効果の確認

シミュレータによる検証システムの導入は未経験の場合が多く、検証に対する考え方や、文化的なものを大きく変えてゆく内容が含まれます。そのため、最初からシステム全体をシミュレータに置き換える等というアプローチは、全く無茶な話です。

まずは、検証対象となるシステムの一部分を取り上げて、パイロットモデルを制作し、対象システムの上で、確実に効果が見込めることを確認することが成功の秘訣の一つとなります。

検証内容に合わせたシミュレータの選定

組み込みシステムの中の検証対象に合わせて、適切なシミュレータのタイプを選定する事も重要です。パイプラインなど、MPU内部の詳細動作に関わる動作検証には、ISS型のシミュレータが向いていますし、シミュレータを利用して、アプリケーションを設計しながら、主にロジック面での検証をしたいのであれば、VisualC++を使った、高速に動作するWindowsネイティブ系のシミュレータが向きます。

「必ず効果が上げられる範囲」を越えない計画

導入に成功した事例の多くは、「ステップを踏んだ導入」を行っています。システムの中に、複数の検証対象がある場合は、まず1つを検証対象としてシミュレーション環境を構築し、その部分の検証とハードのどちらがかってしまいますが、この確実さが、導入成功へのポイントの一つです。

デバッグ対象を明確にする

複数の検証対象を一度に取り入れてしまうと、その対象が相互に関連しているような場合、お互いの不完全な部分が混じり合い、「何を検証しているのか分からない」と言った状態に陥りがちです。試作ボード上で問題が起きたときに、ソフトとハードのどちらが原因かの切り分けが出来ない状態と似ており、皆様もご経験があると思います。デバッグしたい対象を明確にして、そこにフォーカスしたシミュレーションシステムを考えることが重要です。

デバッグ対象以外のモデルは簡略化・抽象化する

また、組み込みシステムをシミュレーションするためには、シミュレータが司るMPU部分以外の周辺デバイスを、ソフトウエア化しなければなりません。具体的には、Visual C++を用いて、Windows上の1つのプログラムとして、ハードの振る舞いをソフトで記述することになります。

ハードの動きを考えた場合、ハードウエアのクロックタイミングなどを考慮に入れた精度の高いソフトウエアモデルにすることも出来ますし、i/oなどの表面的な振る舞いだけを考えた簡略なモデル化をすることも出来ます。

ハードウエアデバイスのソフトウエア化は、それ相当の工数、コストがかかる作業ですから、検証したい内容に深く関わる部分のみに対して、精度の高いモデル化を行い、残りの周辺は出来る限り抽象化、簡略化をすることが重要です。 運用後においても、必要以上に詳細なモデルは、メンテナンスの工数がかかるばかりか、運用の容易性を欠く結果になってしまうだけです。

評価・トライアル期間について

まず最初のパイロットモデルでの評価、トライアルは、2ヶ月程度が最も望ましい期間です。最初の目的は、皆様のシステムにシミュレータを適用して、効果が上げられるのかの判断ですので、弊社での事例ではこの期間で十分可能です。また、方向修正などがある場合でも、無駄なコストをかけない事にもつながります。

ツールメーカーをご利用下さい

本コーナーでご紹介した様に、シミュレータの導入は、ツールを購入して使うだけでなく、運用につなげて、導入効果を上げていただくためのポイントが多くあります。弊社は、数多くのシミュレータ導入に関わっており、適切なコンサルティング、アドバイスをさせていただきます。お気軽にご利用下さい。

人気のコラム

最新のコラム