GAIO CLUB

2003年08月04日

実CPUをマイコン実行エンジンとして使うハイブリッド型「ソリッドシミュレータ」

GAIO CLUB 特集
GAIO CLUB【2003/8月号】
実CPUをマイコン実行エンジンとして使うハイブリッド型「ソリッドシミュレータ」

組み込みシステム検証の決定版Superシステムシミュレータ

  • ガイオは昨年、「Superシステムシミュレータ」をリリースいたしました。これは、最もオーソドックスなマイコンシミュレータであるISS(インストラクション・セット・シミュレータ)をカーネルとしたシミュレーションシステムです。
このISSとは、ソフトプログラムをコンパイル、アセンブルした後の命令コードを、1命令単位に解釈しながら動作するインタプリタ型シミュレータです。完全なソフトウエアモデルであるため、パイプライン、キャッシュなどを含めた精度の高いシミュレータを構築できます。
導入例としては、DMA転送、FIFO処理などのメモリコントローラ部分や、周辺デバイスに対するポート制御ドライバなどの検証に実績があります。

ISSシミュレータの現状と限界

この様に、ハード制御の検証に十分な精度が得られるシステムなのですが、その反面、シミュレーションのパフォーマンスには限界があります。

現状の「Superシステムシミュレータ」を最速のPCで動作させた場合でも、一般的なRISCマイコンのシミュレーション性能は、300万命令/secに留まります。これは、3MIPSすなわち3MHz動作のマイコンと同等と言うことですから、その速度がおわかり頂けると思います。
  • デバドラや、局所的なハードに関連する部分の動作検証や、関数などのモジュール単位での動作試験には、現状のパフォーマンスでも十分に実用になり、効果を上げていただいていますが、RTOSを利用したシステム全体を対象とするアプリケーションの動作検証までは、まだまだパフォーマンス不足と言ったところです。

周辺デバイスモデルをソフトウエア化する工数

また、シミュレーションで組み込みシステムを動作させるためには、MPUのカーネル部分以外の周辺デバイスもソフトウエアで置き換えなければなりません。

この作業は、検証を行う前の準備、環境構築に当たり、組み込みシステムの検証をする立場の皆様にとっては本来の仕事とは別物です。ここに多くの工数が必要となってしまっては、シミュレーションによる動作検証が、非常にコストの高いものとなってしまいます。

このソフトウエア化とは具体的には、Visual C++を使って、ハードウエアの振る舞いをソフトウエアで模擬するプログラムを作成することです。作成したプログラムをMPUシミュレータのカーネルと接続して、MPUと周辺デバイスを同時に動作させ、システム動作を実現します。

この周辺デバイスのソフトウエア化を最小限の工数に抑えて、効率の良いモデル化を行うことが、シミュレーションシステムの運用の1つのポイントとなっています。

下の図は、ソフトウエアモデル化した周辺デバイスのGUI部分の一例です。

シミュレーションツールに対する要求

前述の様に、現状のシミュレータの運用では、検証範囲を限定して、モジュール試験やデバドラの動作検証に役立てて頂いています。しかし、皆様の目標は、やはりシステム全体を対象とした、アプリケーションレベルの動作検証ではないでしょうか?

この課題を克服するために、シミュレータに要求されるポイントは、「シミュレーションの実行速度を改善すること」と「周辺デバイスモデルを必要最小限にする」ことです。

実ハードとの融合で課題をクリアする「ソリッドシミュレータ」

ガイオでは、この課題をクリアするために、シミュレーションシステムに実際のハードウエアを取り込み、ハイブリッド型のシミュレータを構築する、「ソリッドシミュレータ」を開発いたしました。

シミュレーション速度のネックとなるMPUシミュレーションエンジンには、実際のMPUを使用します。ターゲットと同等の動作速度を得ることができます。
  • また、周辺のデバイスモデルについては、実回路を使用できる部分はそのまま実回路を使用し、データi/o、表示パネルなど、シミュレーションに都合の良い部分のみ、PC上にソフトウエアモデルを構築し、ハードと連動させます。これにより、デバイスのソフトウエア化を最小限に抑える事ができます。

FPGAを用いたシミュレーションシステム

最近では、マイコンの周辺チップを、HDL(ハードウエア記述言語)ソースコードやネットリストによるIPとして購入するケースも多くあります。このような場合では、シミュレーションのために、この周辺チップをVisual C++によるC言語で記述し直すよりも、そのままIPレベルでFPGAにして、シミュレータにより込んだ方が好都合な場合もあります。このように、プログラマブルなFPGAを利用して、周辺デバイスのソフトウエア化に割く工数を、最小限に抑えるアポローチも可能です。

システムLSIを前提としたマイコンではFPGAを積極的に利用

ARMなどのマイコンは、周辺回路と共にシステムLSIとして実装されます。このケースでもFPGAに周辺デバイスのIPを焼き込んで、シミュレーションシステムと組み合わせる方法が非常に有効です。

ただし、1つの問題点としては、ARMチップの場合、ARMコアのみのチップというのは存在せず、モトローラ社のDragon Ballの様な入手可能は実チップは、周辺デバイスを含んでしまっています。

オリジナルなARMコアのシステムLSIをシミュレータに持ち込むには、コアのみのチップを特注して、FPGAと組み合わせるシステムを考えるか、ARMコアごとIPで入手して、FPGAに焼いてしまうかのどちらかになります。

標準ボードとカスタムボード

「ソリッドシミュレータ」は、実ハードウエアをシミュレーションに積極的に利用して、従来のシミュレータを大きく改善し、RTOS、Linuxを使用したアプリケーションレベルのシステム検証を可能にします。

ガイオでは、標準ボードとして、ARM9(モトローラ社Dragon Ball)とSuperH4(ルネサステクノロジ社)を用意しております。FPGAの実装など、必要に応じたカスタム仕様でのボードの設計お受けしております。

人気のコラム

最新のコラム