Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

OVP APIs

Verification Engineerの戯言

OVP APIには、3つの種類(ICMVMIBHM/PPM)があります。

ICM(Innovative CPU Manager)は、プラットフォームを作るためのもので、OVMSimで動作するシステムの構成を記述するためのAPI群です。
ICMは、マルチコアプロセッサ(異種プロセッサ混在も可)、バス、メモリ、ペリフェラルが利用できます。
ICMC言語APIになっています。Cのプログラムとして、ICMを使ってシステムの構成を記述します。SystemCで構造的にシステムを記述するのと同じです。
記述したCのプログラムは、MinGW(GCC 3.4.5/runtime 3.14で動作確認済)にてコンパイルし、実行プログラムにします。
ICMの記述例は、DEMOシステムにあります(ただし、DEMOシステムをダウンロードするにはユーザ登録が必要です)。
SystemCで構造記述をしたことがあるのであれば、ICMの記述にはとまどうことはないでしょう!
ICMは、cycle-accurate simulationをターゲットにしていません。あくまでもソフトウェア開発を行うためのものです。
SystemCモデルをOVPSimに取り込むことはできませんが、SystemCにOVPSimのモデルを利用することは可能のようです。

VMIは、プロセッサ動作モデルを作るためのものです。現在、ARM7/MIPS32/OR1KのCPUモデルがあります。
32ビットRISCであれば、6~8週間で書くことができ、3GHzのPCであれば500MIPS動作も可能のようです。
ということは、500MHz程度のCPUはシミュレーションでも同じ速度が出てしまうということです。すばらしい。
なぜこんな速く動くのでしょう。それはJust-In-Time Code Morphingという技術を使って各CPUの命令コードをX86に命令コードに置き換えることによって実現しています。

PPM/BHMは、動作モデルやペリフェラルを作るためのものです。
BHMは、プロセス、遅延、イベントの動作をモデリングするためのもので、Verilog HDLのalways文のようにプロセスを開始したり、イベントや時間待ちを記述するために使います。
PPMは、バスやネットのポートに対するインターフェースをモデル化するもので、バスへの接続、ネットへの接続、アドレスのマッピングなどをするためのものです。
(uClinuxが動作するDEMOシステムにおいて、シリアルポートのモデルがPPM/BHMになります)