(57)【特許請求の範囲】
【請求項１】
ターゲットプロセッサ上で動作するソフトウェアと、ハードウェアとの協調動作を検証するシミュレーション装置において、
検証対象の前記ソフトウェアと、前記ハードウェアをシステムレベル設計言語で表現したハードウェアモデルの実行スケジューリングを行うスケジューラと、
前記ソフトウェアの処理時間を前記シミュレーション装置上の処理時間をもとに算出するタイマと、
を有し、
前記スケジューラは、前記ソフトウェアのシミュレーションが終了すると、シミュレーション時間上の時刻を、算出された前記ソフトウェアの処理時間分進め、進めた時刻において予定されたシミュレーションプロセスを実行させることを特徴とするシミュレーション装置。
【請求項２】
前記タイマは、前記シミュレーション装置のプロセッサと、前記ターゲットプロセッサとの性能差を換算して、前記ソフトウェアの処理時間を算出することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記スケジューラは、前記ハードウェアモデルの評価タイミングをイベント・ドリブンでスケジューリングし、前記ソフトウェアの実行中に、前記タイマの値をもとに次のイベント時間に達したことを検知すると、前記ソフトウェアの実行を停止し、スケジューリングされている他のシミュレーションプロセスを実行することを特徴とする請求項１または２記載のシミュレーション装置。
【請求項４】
入力される制御命令に応じて、前記タイマの機能を有効、または無効にするタイマ制御部を更に有することを特徴とする請求項１乃至３のいずれか一項に記載のシミュレーション装置。
【請求項５】
ターゲットプロセッサ上で動作する検証対象のソフトウェアと、前記ソフトウェアと協調動作するハードウェアをシステムレベル設計言語で表現したハードウェアモデルの実行スケジューリングを行い、
前記ソフトウェアの処理時間をシミュレーション装置上の処理時間をもとに算出し、
前記ソフトウェアのシミュレーションが終了すると、シミュレーション時間上の時刻を、算出された前記ソフトウェアの処理時間分進め、進めた時刻において予定されたシミュレーションプロセスを実行する、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシミュレーション装置及びプログラムに関し、特にターゲットプロセッサ上で動作するソフトウェアと、ハードウェアとの協調動作を検証するシミュレーション装置及びプログラムに関する。
【背景技術】
【０００２】
従来、プロセッサを含むハードウェアと、その上で動作するソフトウェアで構成されるシステムの開発及び検証において、検証対象システム（以下ターゲットシステムという。）上のハードウェアをＣベース言語のシステムレベル設計言語で記述したハードウェアモデルと、ターゲットプロセッサ上で動作するソフトウェアとを並列動作させて検証するシミュレーション装置があった。
【０００３】
このようなシミュレーション装置において、ソフトウェアを動作させる方法として以下のようなものがある。
（１）プロセッサの動作を模倣するＩＳＳ（命令セット・シミュレータ）上でソフトウェアを動作する。
（２）ＩＳＳを使用せずにシミュレーション装置上のＣＰＵ（Central Processing Unit）で直接、ソフトウェアを動作させる。
【０００４】
ＩＳＳを使用しないシミュレーション装置において、ソフトウェアの処理時間を考慮するために、ソフトウェア部品のあるブロックを認識して、制御点を挿入し、制御点間の時間を入力する方法や、ソフトウェアのソースプログラムに、ある間隔で制御点を挿入し制御点間の時間を入れる方法などがあった（たとえば、特許文献１、２、３、非特許文献１参照）。また、ソフトウェアにハードウェアへのアクセス関数を組み込んで、スケジューラへの実行権の開放を行う手法などがあった（たとえば、特許文献４参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−０２３８５２号公報
【特許文献２】特開２００５−２９３２１９号公報
【特許文献３】特開２００４−２３４５２８号公報
【特許文献４】特開２００５−１８６２３号公報
【非特許文献】
【０００６】
【非特許文献１】「ハード−ソフト協調検証の高速化技術ＳｙｓｔｅｍＣベースでＳＴＡＲＣが開発」、日経マイクロデバイス、２００５年１月号、ｐ．１０６−１０７
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、ＩＳＳを使用した従来のシミュレーション装置では、シミュレーションが１命令単位で命令を解釈し実行され、命令ごとにメモリ・アクセスが必要となり、スケジューラへの実行権の開放が頻繁に行われ、シミュレーションの実行に時間がかかるという問題があった。
【０００８】
また、ＩＳＳを使用しない従来のシミュレーション装置では、ソフトウェアやハードウェアモデルが通信時などに直接スケジューラに実行権を開放するため、ソフトウェア内のハードウェアアクセス関数の呼び出しにより、実行権の開放が頻繁に行われる問題や、検証対象となるソフトウェアとハードウェアモデルの記述に依存して、シミュレーション速度や精度が固定されてしまう問題があった。
【０００９】
また、検証対象のソフトウェアに制御点間の時間を入れる手法では、たとえば、Ｃ言語コードの１０行程度に対して１回の頻度でｗａｉｔ（）時間制御文が追加されるため、シミュレーション性能が低下するという問題があった。
【００１０】
また、従来では検証対象であるソフトウェアを変更しなければならなかったり、異なるＯＳへの移植が必要であり、手間がかかった。
【課題を解決するための手段】
【００１１】
発明の一観点によれば、検証対象のソフトウェアと、ハードウェアをシステムレベル設計言語で表現したハードウェアモデルの実行スケジューリングを行うスケジューラと、前記ソフトウェアの処理時間をシミュレーション装置上の処理時間をもとに算出するタイマと、を有し、前記スケジューラは、算出した前記ソフトウェアの処理時間をもとに、次のシミュレーションプロセスの開始を遅延させるシミュレーション装置が提供される。
【００１２】
上記の構成によれば、スケジューラは、タイマによって算出されたソフトウェアの処理時間をもとに、次のシミュレーションプロセスの開始を遅延させる。これにより、ソフトウェアの処理時間を考慮したハードウェアモデルとの協調検証が行われる。
【発明の効果】
【００１３】
開示のシミュレーション装置によれば、シミュレーションの精度を上げることができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のシミュレーション装置の概略を示す図である。
【図２】第２の実施の形態のシミュレーション装置の概略を示す図である。
【図３】シミュレーション装置の具体的なハードウェア構成である。
【図４】シミュレーション装置の詳細なソフトウェア構成例を示す図である。
【図５】タスクの切り替え時の動作を示すシーケンス図である。
【図６】検証対象ソフトウェアからハードウェアモデルへの同期アクセス時の動作を示すシーケンス図である。
【図７】検証対象ソフトウェアからハードウェアモデルへの非同期アクセス時の動作を示すシーケンス図である。
【図８】タイマが無効の場合のシミュレーション装置の動作を示すシーケンス図である。
【図９】タイマが有効の場合のシミュレーション装置の動作を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図１は、第１の実施の形態のシミュレーション装置の概略を示す図である。
第１の実施の形態のシミュレーション装置は、ターゲットプロセッサ上で動作するソフトウェアと、ハードウェアとの協調動作を検証するものであり、フレームワーク１０内に、擬似ＯＳ１１、擬似ＣＰＵ１２、通信手段１３を有している。また、スケジューラ２０を有している。
【００１６】
これらの構成は、いずれもＳｙｓｔｅｍＣなどのＣベース言語で記述されたソフトウェア部品である。
また、ハードウェアモデルＨＷ１…ＨＷｎは、ターゲットシステムのハードウェアをＳｙｓｔｅｍＣなどで記述したものである。
【００１７】
擬似ＯＳ１１は、ターゲットプロセッサで使用するＯＳを模擬したものであり、擬似ＣＰＵ１２の制御のもと、検証対象ソフトウェアＳＷの実行をスケジューリングする機能などを有している。擬似ＯＳ１１と検証対象ソフトウェアＳＷ間の通信も、フレームワーク１０内のＡＰＩ（Application Programming Interface）１１ａを用いて行う。このＡＰＩ１１ａは、ターゲットシステムに合わせて適宜変更することにより、検証対象ソフトウェアＳＷを特に変更することなく、ターゲットシステムのＯＳの変更などに対応させることができる。
【００１８】
擬似ＣＰＵ１２は、ターゲットプロセッサを模擬したものであり、ＣＰＵの実行状態を模倣するとともに、割り込み処理を制御する。また、擬似ＯＳ１１と連携して、検証対象ソフトウェアＳＷのスケジューリングに応じて、スケジューラ２０への実行権の開放を制御する。たとえば、シミュレーション時間上のある時点で実行可能なアプリケーションタスクなどを全て実行し終えたらスケジューラ２０に実行権を開放し、スケジューリングされた次のシミュレーションプロセス（たとえばハードウェアモデルＨＷの実行など）を実行可能にする。
【００１９】
通信手段１３は、ターゲットシステムの通信チャネルを模擬したものである。ＡＰＩ１３ａを用いて、検証対象ソフトウェアＳＷと、ハードウェアモデルＨＷ１…ＨＷｎとの通信や、ハードウェアモデルＨＷ１…ＨＷｎ間の通信を行う。
【００２０】
さらに、通信手段１３は、検証対象ソフトウェアＳＷと、ハードウェアモデルＨＷ１…ＨＷｎ間、またはハードウェアモデルＨＷ１…ＨＷｎ間の通信の抽象度のレベルを制御する。たとえば、シミュレーション速度を優先する場合は、トランザクションレベルの抽象度、シミュレーション精度を優先する場合は、バス・サイクル・アキュレートな抽象度で動作するよう切り替える。
【００２１】
スケジューラ２０は、フレームワーク１０とハードウェアモデルＨＷ１…ＨＷｎの実行スケジューリングを行う。具体的には、検証対象ソフトウェアＳＷなどを実行する擬似ＣＰＵ１２と、ハードウェアモデルＨＷ１…ＨＷｎの評価タイミングを、イベント・ドリブン（またはタイミング・ドリブンともいう）でスケジューリングする。
【００２２】
なお、ＯＳを使用しないソフトウェアの検証では、フレームワーク１０内の擬似ＯＳ１１を使用せず、擬似ＣＰＵ１２の制御で行われる。
上記の構成によれば、検証対象ソフトウェアＳＷは、フレームワーク１０内の擬似ＣＰＵ１２の制御のもと、擬似ＯＳ１１の実行スケジューリングにしたがって実行される。スケジューラ２０への実行権の開放は、擬似ＯＳ１１の実行スケジューリングにしたがって、擬似ＣＰＵ１２の制御のもと行われる。そして、スケジューラ２０の実行スケジューリングに応じてハードウェアモデルＨＷ１…ＨＷｎのタスクを実行できるようにする。これによって、検証対象ソフトウェアＳＷと、ハードウェアモデルＨＷ１…ＨＷｎの協調動作を実現できる。
【００２３】
このような第１の実施の形態のシミュレーション装置によれば、検証対象ソフトウェアＳＷを変更せずに検証することができる。そして、従来のように、検証対象ソフトウェアＳＷに時間制御文などを挿入することで実行権の開放を行う場合に比べて、実行権開放の頻度を大幅に減少でき、シミュレーションを高速に行うことができる。
【００２４】
通常、ＩＳＳを使用してソフトウェアとハードウェアの協調検証を行うシミュレーション装置では、ターゲットシステムの１／１０００程度の速度となり性能が悪いという問題がある。ＩＳＳを使用しないシミュレーション装置でもソフトウェアに、時間制御文を挿入する方式では、そのオーバーヘッドによりターゲットシステムの１／１０〜１／１００程度の速度である。しかし、上記のフレームワーク１０を用いることにより、検証対象ソフトウェアＳＷを変更することなく、ターゲットシステムと同等またはそれ以上の速度（たとえば、プラットホームとなるシミュレーション装置上のＣＰＵの速度）でシミュレーションを行うことができる。
【００２５】
また、通信手段１３により通信の抽象度を制御することにより、検証対象ソフトウェアＳＷ、ハードウェアモデルＨＷ１…ＨＷｎを変更せずにシミュレーションの精度や、シミュレーション速度を、目的に応じて変更することができる。
【００２６】
また、上記のＡＰＩ１１ａにより、検証対象ソフトウェアＳＷを異なるＯＳに移植することなく検証することができる。
なお、スケジューラ２０は、フレームワーク１０内に設けるようにしてもよい。
【００２７】
ところで上記では、検証対象ソフトウェアＳＷの処理時間を考慮しない場合（アンタイムド）について説明したが、以下に示すようにして、検証対象ソフトウェアＳＷを変更せずに、処理時間を考慮する方式（タイムド）にしてもよい。
【００２８】
以下その仕組みを、第２の実施の形態のシミュレーション装置として説明する。
図２は、第２の実施の形態のシミュレーション装置の概略を示す図である。
第２の実施の形態のシミュレーション装置は、スケジューラ３０と、スケジューラ３０に内蔵されたタイマ制御部３０ａ、タイマ３０ｂを有している。
【００２９】
スケジューラ３０は、イベント・ドリブンにて、検証対象ソフトウェアＳＷと、ハードウェアモデルＨＷ１…ＨＷｎの実行スケジューリングを行う。
タイマ制御部３０ａは、外部から、たとえばユーザによって入力されるタイマ制御コマンドに応じて、タイマ３０ｂの機能を有効、または無効にする。
【００３０】
タイマ３０ｂは、検証対象ソフトウェアＳＷの処理時間をシミュレーション装置（たとえば、ＰＣ（パーソナルコンピュータ））上の処理時間から算出する。具体的には、ターゲットプロセッサと、シミュレーション装置上のプロセッサ（以下ホストＣＰＵと呼ぶ）との性能差を換算して、検証対象ソフトウェアＳＷの処理時間を算出する。
【００３１】
タイマ３０ｂが有効の場合、スケジューラ３０は、タイマ３０ｂが算出した検証対象ソフトウェアＳＷの処理時間をもとに、次のシミュレーションプロセスの開始を遅延させる。また、検証対象ソフトウェアＳＷの実行中に、タイマ３０ｂの値をもとに次のイベント時間に達したことをスケジューラ３０が検知すると、スケジューラ３０は、検証対象ソフトウェアＳＷの実行を停止し、スケジューリングされているハードウェアモデルＨＷ１…ＨＷｎの実行を開始させる。
【００３２】
また、タイマ機能を必要としない場合には、外部からのタイマ制御コマンドによりタイマ制御部３０ａの制御のもとタイマ３０ｂが無効になり、検証対象ソフトウェアＳＷのタスクがＷａｉｔ状態となるまで検証対象ソフトウェアＳＷを実行する。
【００３３】
上記の構成によれば、検証対象ソフトウェアを変更して時間制御文を挿入しなくとも、タイマ３０ｂによって、検証対象ソフトウェアＳＷの処理時間を考慮した検証を行うことができ、精度の高いシミュレーションを行うことができる。
【００３４】
また、性能評価などの場合はタイマ３０ｂを有効に、機能検証だけの場合はタイマ３０ｂを無効にするなどして、目的に応じて、シミュレーション精度またはシミュレーション速度を向上することができる。
【００３５】
なお、ここでは、タイマ制御部３０ａとタイマ３０ｂとをスケジューラ３０内に設けているが、スケジューラ３０外に設けてタイマ３０ｂの値をスケジューラ３０に渡すような構成にしてもよい。
【００３６】
以下、本実施の形態のシミュレーション装置の詳細を説明する。
図３は、シミュレーション装置の具体的なハードウェア構成である。
シミュレーション装置５０は、たとえばＰＣであり、ホストＣＰＵ５１、ＲＯＭ（Read Only Memory）５２、ＲＡＭ（Random Access Memory）５３、ＨＤＤ（Hard Disk Drive）５４、グラフィック処理部５５、入力Ｉ／Ｆ（Interface）５６、通信Ｉ／Ｆ５７などによって構成され、これらはバス５８を介して相互に接続されている。
【００３７】
ここで、ホストＣＰＵ５１は、ＲＯＭ５２や、ＨＤＤ５４に格納されているプログラムや、各種データに応じて各部を制御し、図１に示したフレームワーク１０の各種機能や、スケジューラ２０の機能を実現する。
【００３８】
ＲＯＭ５２は、ホストＣＰＵ５１が実行する基本的なプログラムやデータを格納している。
ＲＡＭ５３は、ホストＣＰＵ５１が実行途中のプログラムや、演算途中のデータを格納している。
【００３９】
ＨＤＤ５４は、ホストＣＰＵ５１が実行するＯＳ（たとえば、Ｗｉｎｄｏｗｓ（Microsoft Corporationの登録商標））や、シミュレーションプログラムや、検証対象ソフトウェアＳＷ、ハードウェアモデルＨＷ１…ＨＷｎなどの各種データを格納する。
【００４０】
グラフィック処理部５５には、表示装置として、たとえば、ディスプレイ５５ａが接続されており、ホストＣＰＵ５１からの描画命令にしたがって、ディスプレイ５５ａ上に、シミュレーション結果などを表示する。
【００４１】
入力Ｉ／Ｆ５６には、マウス５６ａやキーボード５６ｂなどの入力装置が接続されており、ユーザにより入力された情報を受信し、バス５８を介してホストＣＰＵ５１に伝送する。
【００４２】
通信Ｉ／Ｆ５７は、たとえば、企業内のＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）や、インターネットなどのネットワーク５７ａと接続して通信を行う。
本実施の形態のシミュレーション装置は、図３のようなハードウェア構成により、以下のようなソフトウェア構成を実現する。
【００４３】
図４は、シミュレーション装置の詳細なソフトウェア構成例を示す図である。
なお、ここでは、図１と図２の機能を両方含めたシミュレーション装置のソフトウェア構成を示している。図中の黒矢印は、イベント通信を示しており、白抜きの矢印はその他の信号またはデータの流れを示している。
【００４４】
検証対象ソフトウェアＳＷは、ターゲットシステム上で動作する組み込みソフトである。たとえば、Ｃベース言語で記述された各アプリケーションタスク、ＩＳＲ（割り込みサービスルーチン）、デバイスドライバなどがある。
【００４５】
ハードウェアモデルＨＷは、ターゲットシステムのハードウェアの機能をモデル化したものである。ＳｙｓｔｅｍＣ言語などで記述された各ハードウェアコンポーネントのトランザクションレベルのモデル、テストベンチなどを含む。モデルリング時に見積もり時間（精度）に基づいて動作タイミングが設定されている。
【００４６】
なお、ここでは図示の簡略化のため、ハードウェアモデルＨＷを１つのみ示しているが、図１、図２のように複数あってもよい。
フレームワーク６０は、以下の各構成要素を含んでいる。
【００４７】
Ｖ−ＲＴＯＳ６１は、ターゲットプロセッサで使用するＲＴＯＳ（リアルタイムＯＳ）をモデル化した仮想的なＲＴＯＳである。図１の擬似ＯＳ１１に相当する。ＲＴＯＳサービスの他、検証対象ソフトウェアＳＷのスケジューリング機能（ＯＳスケジューラ）や、割り込み処理機能、Ｉ／Ｏ機能、ディスパッチ機能などを有している。
【００４８】
データ伝送ＡＰＩ６２は、検証対象ソフトウェアＳＷがハードウェアモデルＨＷとの間でデータの読み書きを行うための機能を提供するＡＰＩである。
ＲＴＯＳ  ＡＰＩ６３は、検証対象ソフトウェアＳＷがＶ−ＲＴＯＳ６１と通信するための機能を提供するＡＰＩである。ターゲットシステムのＲＴＯＳのＡＰＩに合わせてカスタマイズすることができる。
【００４９】
通信チャネル６４は、検証対象ソフトウェアＳＷとハードウェアモデルＨＷ間、または複数のハードウェアモデル間でのデータ通信用のチャネルである。トランザクションレベルでの通信機能（データ通信、割り込み要求／応答など）を提供する。通信方式は、Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔか、ＢＦＭ（Bus Functional Model）かの選択が可能である。また、前述したように、通信の抽象度のレベルを制御して、シミュレーション速度を優先か、シミュレーション精度を優先かを切り替えることができる。
【００５０】
外部Ｉ／Ｆ６５は、外部シミュレーションモデルＥＭとのインターフェースである。なお、外部シミュレーションモデルＥＭとは、ターゲットシステムの外部の構成を模擬したシミュレーションモデルである。たとえば、ＤＬＬ（Dynamic Link Library）として用意された外部モデルや、フレームワーク６０と同様の構成を有する他のフレームワークなどである。
【００５１】
Ｖ−ＣＰＵ６６は、ターゲットプロセッサをモデル化した仮想的なＣＰＵである。図１の擬似ＣＰＵ１２に対応する。割り込み処理などを行う。
ＩＲＣ（割り込みコントローラ）６７は、ハードウェアモデルＨＷからの割り込みイベントを、Ｖ−ＣＰＵ６６に伝え、Ｖ−ＣＰＵ６６からの割り込み応答により割り込みイベントをクリアする。
【００５２】
データ伝送ＡＰＩ６８は、ハードウェアモデルＨＷが、検証対象ソフトウェアＳＷあるいは他のハードウェアモデルＨＷとの間でデータの読み書きを行う機能を提供するＡＰＩである。
【００５３】
ＯＳタイマ６９は、ターゲットシステムのＲＴＯＳの時間管理に使用するタイマ機能をモデル化したものである。
シミュレーション制御部７０は、ユーザからの入力に応じてシミュレーションの開始、停止などを制御する。
【００５４】
デバッグＩ／Ｆ７１は、フレームワーク６０の外部のデバッガ７２とのインターフェースであり、フレームワーク６０からデバッグに必要な情報をデバッガ７２に渡す。
以上が、本実施の形態のシミュレーション装置においてフレームワーク６０内に備えられた機能である。これらは、ＳｙｓｔｅｍＣなどのＣベース言語により記述される。
【００５５】
フレームワーク６０外の構成要素を説明する。
デバッガ７２は、ＭＵＬＴＩ（米国Green Hills Software, Inc.の商標）やＶＣ＋＋（Microsoft Corporationの登録商標）などによるソフトウェアデバッガである。フレームワーク６０とは、デバッグＩ／Ｆ７１を用いて通信する。デバッグ結果は、たとえば、ＧＵＩ（Graphical User Interface）を用いて、図３で示したようなディスプレイ５５ａに表示する。
【００５６】
スケジューラ７３は、フレームワーク６０とハードウェアモデルＨＷの評価タイミングをイベント・ドリブンでスケジューリングする。また、スケジューラ７３は、タイマ７３ａ及びタイマ制御部７３ｂを有している。
【００５７】
タイマ７３ａは、検証対象ソフトウェアＳＷの処理時間をシミュレーション装置上の処理時間を基に算出する。実際には、ターゲットプロセッサと、図３で示したようなホストＣＰＵ５１との性能差を換算して、ターゲットプロセッサ上での検証対象ソフトウェアＳＷの処理時間を算出する。
【００５８】
タイマ制御部７３ｂは、たとえば、ユーザから入力されるタイマ制御コマンドに応じて、タイマ７３ａを有効または無効にする。機能検証などの精度優先の検証の場合にはタイマ７３ａを有効とし、検証速度優先の場合には無効とする。
【００５９】
トレース出力部７４は、ＲＴＯＳ動作トレース（Ｖ−ＲＴＯＳ、組み込みソフト、割り込み動作状況のログ）、通信イベントトレース（ＲＴＯＳ  ＡＰＩ６３の呼び出し、データ送受信、割り込みなどの通信イベントのログ）、ハードウェアモデルＨＷのイベントトレース（各ハードウェアコンポーネントの動作状態やＩ／Ｏアクセスのログ）などを出力し、たとえば、ＧＵＩを用いて、図３で示したようなディスプレイ５５ａに表示させる。
【００６０】
ＯＳ７５は、シミュレーション装置のＯＳ（たとえば、Ｗｉｎｄｏｗｓ）である。
エラーログ出力部７６は、フレームワーク６０のエラー（違法な設定、制限事項違反などの検出結果）、Ｖ−ＲＴＯＳ６１のエラー（ＡＰＩ引数エラー、制限事項違反などの検出結果）、通信エラー（プロトコル違反、リソースオーバーフロー、ＡＰＩ引数エラー、制限事項違反などの検出結果）、ハードウェアモデルＨＷのエラー（プロトコル違反、リソースオーバーフロー、制限事項違反などの検出結果）、外部Ｉ／Ｆ６５のエラー（通信エラーの検出結果）、デバッガ７２のエラー（ＭＵＬＴＩ／ＶＣ＋＋との通信エラーの検出結果）、ＳｙｓｔｅｍＣシミュレータエラー（ＳｙｓｔｅｍＣシミュレータの例外事象の検出結果）、プラットフォームエラー（Ｗｉｎｄｏｗｓの例外事象の検出結果）などを出力し、たとえば、ＧＵＩを用いて、図３で示したようなディスプレイ５５ａに表示させる。
【００６１】
上記のような構成で、フレームワーク６０内のＲＴＯＳ  ＡＰＩ６３や、ＩＲＣ６７、ＯＳタイマ６９などは、ターゲットシステムに合わせて適宜カスタマイズされて使用される。
【００６２】
以下このようなシミュレーション装置の動作を説明する。
まず、検証対象ソフトウェアＳＷのタスクの切り替え時の動作を説明する。
図５は、タスクの切り替え時の動作を示すシーケンス図である。
【００６３】
実行中のアプリケーションタスク（以下タスクと略す）ＡからタスクＢへのタスク切り替え時の動作例を示している。
実行中のタスクＡが、タスクＢを開始するＲＴＯＳ  ＡＰＩ６３であるＴａｓｋ＿Ｓｔａｒｔサービスをコールすると、ＲＴＯＳ  ＡＰＩ６３を介してフレームワーク６０内のＯＳスケジューラが呼び出される。ＯＳスケジューラは、タスクＡの状態をＷａｉｔ状態に設定し、タスクＢの状態をＲｕｎ状態に設定して、ディスパッチャを呼び出す。ディスパッチャは、スケジューラ７３に対して、タスクＢの開始要求：Ｗａｋｅｕｐ  Ｔａｓｋ  Ｂを発行する。
【００６４】
スケジューラ７３はこの要求を受け、タスクＢを、実行すべきシミュレーションプロセスのキューに登録（キューイング）する。また、ディスパッチャは、スケジューラ７３に対して、タスクＡの実行停止要求：Ｗａｉｔ  Ｔａｓｋ  Ａを発行する。
【００６５】
スケジューラ７３はこの要求を受け、タスクＡの実行を停止し、次に実行すべきシミュレーションプロセスのスケジューリングを行う。このとき、スケジューリング結果によっては、他のハードウェアモデルＨＷなどが先に実行される場合もある。
【００６６】
スケジューリングの結果、先にキューイングされたタスクＢが選択されると、ディスパッチャがＷａｉｔから復帰する。そして、ＯＳスケジューラによってフレームワーク６０に内蔵されたＶ−ＲＴＯＳ６１で実行すべきタスクのスケジューリングが行われる。ハードウェアモデルＨＷからの割り込みがなければ、ＯＳスケジューラは、先に設定されたタスクの状態（タスクＡ：Ｗａｉｔ状態、タスクＢ：Ｒｕｎ状態）にしたがって、タスクＢを起動させる。
【００６７】
次に、検証対象ソフトウェアＳＷからハードウェアモデルＨＷへの同期アクセス時の動作を説明する。
図６は、検証対象ソフトウェアからハードウェアモデルへの同期アクセス時の動作を示すシーケンス図である。
【００６８】
ここでは、検証対象ソフトウェアＳＷのタスクＡからハードウェアモデルＨＷへの同期アクセス時の動作例を示している。
実行中のタスクＡが、ハードウェアモデルＨＷからデータを読み出すデータ伝送ＡＰＩ６２のＤａｔａ＿Ｒｅａｄ（同期）サービスをコールすると、データ伝送ＡＰＩ６２を介してフレームワーク６０内の通信チャネル６４が呼び出される。通信チャネル６４は、Ｄａｔａ＿Ｒｅａｄのイベントを、スケジューラ７３を介してハードウェアモデルＨＷに通知する。
【００６９】
スケジューラ７３は、イベントをシミュレーションプロセスのキューに登録（キューイング）し、次に実行すべきシミュレーションプロセスのスケジューリングを行う。このとき、複数のハードウェアモデルＨＷがある場合、スケジューリング結果によっては、他のハードウェアモデルＨＷなどが先に実行される場合もある。
【００７０】
スケジューリングの結果、先にキューイングされたハードウェアモデルＨＷが選択されると、ハードウェアモデルＨＷのデータ読み出し機能が実行され、該当するデータが通信チャネル６４に送出される。この処理が終了すると、スケジューラ７３は、必要に応じてシミュレーションプロセスのキューに登録（キューイング）し、次に実行すべきシミュレーションプロセスのスケジューリングを行う。スケジューリングの結果、先にキューイングされたタスクＡが選択されると、通信チャネル６４からのデータの読み出しが行われ、データ伝送ＡＰＩ６２を通じて、タスクＡに読み出しデータが渡される。
【００７１】
次に、検証対象ソフトウェアＳＷからハードウェアモデルＨＷへの非同期アクセス時の動作を説明する。
図７は、検証対象ソフトウェアからハードウェアモデルへの非同期アクセス時の動作を示すシーケンス図である。
【００７２】
ここでは、検証対象ソフトウェアＳＷのタスクＡからハードウェアモデルＨＷへの非同期アクセス時の動作を示している。
実行中のハードウェアモデルＨＷが、データ伝送ＡＰＩ６８のＤａｔａ＿Ｗｒｉｔｅ（非同期）サービスをコールすると、データ伝送ＡＰＩ６８を介してフレームワーク６０内の通信チャネル６４が呼び出される。通信チャネル６４は、Ｄａｔａ＿Ｗｒｉｔｅのデータを通信チャネル６４内に保持する。
【００７３】
ハードウェアモデルＨＷのシミュレーションプロセスの実行を終了すると、スケジューラ７３は、次に実行すべきシミュレーションプロセスのスケジューリングを行う。このとき、スケジューリング結果によっては、他のハードウェアモデルＨＷなどが先に実行される場合もある。
【００７４】
スケジューリングの結果、先にキューイングされたタスクＡが選択されると、タスクＡの実行が再開される。タスクＡの処理の中でデータ伝送ＡＰＩ６２のＤａｔａ＿Ｒｅａｄ（非同期）データ読み出し機能が実行され、該当データが通信チャネル６４から読み出される。
【００７５】
次に、タイマ機能について説明する。
図８は、タイマが無効の場合のシミュレーション装置の動作を示すシーケンス図である。
【００７６】
ここでは、まず、タスクＡとタスクＢの処理が、図５で示したようなタスク切り替え処理によって実行された場合について図示されている。
タスクＡやタスクＢに関する検証対象ソフトウェアＳＷのスケジューラ７３上でのシミュレーション時間における遅延時間はゼロとなる。したがって、シミュレーション時間上のある時点で実行可能な全てのソフトウェア処理がシミュレーションされ、それらが終了するとスケジューラ７３に戻る。
【００７７】
スケジューラ７３は、イベント時間のスケジューリングに基づいて次のシミュレーション時刻まで進める。図８の例では、ハードウェアモデルＨＷのシミュレーションプロセスが実行されている。その結果、割り込みが発生すると、スケジューラ７３は割り込みイベントをキューイングする。
【００７８】
ハードウェアモデルＨＷのシミュレーションプロセスの実行が終了すると、スケジューラ７３は、イベント時間のスケジューリングに基づいて次のシミュレーション時刻まで進める。図８の例では、割り込みイベントにより、ＩＳＲのシミュレーションプロセスが実行される。
【００７９】
ＩＳＲの実行が終了するとスケジューラ７３に戻る。スケジューラ７３は、イベント時間のスケジューリングに基づいて次のシミュレーション時刻まで進める。たとえば、ハードウェアモデルＨＷのシミュレーションプロセスが実行される。
【００８０】
次に、タイマ７３ａが有効のときの動作を説明する。
図９は、タイマが有効の場合のシミュレーション装置の動作を示すシーケンス図である。
【００８１】
前述したように、タスクＡやタスクＢに関する検証対象ソフトウェアＳＷのスケジューラ７３上でのシミュレーション時間上の遅延時間はゼロとなる。しかし、タイマ７３ａが有効の場合、タイマ７３ａは、シミュレーション装置上の処理時間から、ターゲットプロセッサとホストＣＰＵ５１との性能差を換算して、シミュレーション時間上の検証対象ソフトウェアＳＷの処理時間を算出する。
【００８２】
したがって、スケジューラ７３は、シミュレーション時間上のある時点で開始されたソフトウェア処理のシミュレーションが終了した時点で、ソフトウェア処理に相当する遅延時間をシミュレーション時間上で進める。図９の例では、まずタスクＡのシミュレーションプロセスが終了すると、そのソフトウェア処理に相当する遅延時間をシミュレーション時間上で進める。そして、スケジューラ７３は、スケジューリングに基づいてそのシミュレーション時刻に実行すべきシミュレーションプロセスを実行する。図９の例では、タスクＢのシミュレーションプロセスが実行される。
【００８３】
タスクＢのシミュレーションプロセスが終了すると、そのソフトウェア処理に相当する遅延時間をシミュレーション時間上で進める。そして、スケジューラ７３は、スケジューリングに基づいて、そのシミュレーション時刻に実行すべきシミュレーションプロセスを決定する。たとえば、図９のようにハードウェアモデルＨＷのシミュレーションプロセスが実行される。その結果、割り込みが発生すると、スケジューラ７３は割り込みイベントをキューイングする。
【００８４】
ハードウェアモデルＨＷのシミュレーションプロセスの実行が終了すると、スケジューラ７３は、イベント時間のスケジューリングに基づいて次のシミュレーションプロセスを実行させる。これにより、たとえば、割り込みイベントに基づきＩＳＲのシミュレーションプロセスが実行される。
【００８５】
スケジューラ７３は、ＩＳＲの実行中に、タイマ７３ａより次のイベント時間に達したこと（タイムアウト）の通知を受けると、ＩＳＲのシミュレーションプロセスを停止する。そして、スケジューラ７３は、当該シミュレーション時刻にスケジューリングされている、シミュレーションプロセス、たとえば図９のようにハードウェアモデルＨＷのシミュレーションプロセスを実行する。そして、ハードウェアモデルＨＷのシミュレーションプロセスの実行が終了すると、ＩＳＲのシミュレーションプロセスを再開する。
【００８６】
このようなタイマ機能を用いると、検証対象ソフトウェアＳＷを変更して時間制御文などを挿入することなく、ソフトウェアの処理時間を考慮した精度のよいシミュレーションが可能になる。
【００８７】
以上のように、本実施の形態のシミュレーション装置によれば、検証対象ソフトウェアＳＷを変更することなく、ハードウェアモデルＨＷとの協調検証を、シミュレーション速度やシミュレーション精度を検証目的に応じて向上させることができる。
【００８８】
以上、本発明を実施の形態に基づいて説明したが、本発明は上記に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
たとえば、上記では１つの擬似ＣＰＵ（Ｖ−ＣＰＵ）を用いたが、マルチＣＰＵに対応して複数設けるようにしてもよい。
【符号の説明】
【００８９】
１０  フレームワーク
１１  擬似ＯＳ
１１ａ、１３ａ  ＡＰＩ
１２  擬似ＣＰＵ
１３  通信手段
２０  スケジューラ
ＳＷ  検証対象ソフトウェア
ＨＷ１…ＨＷｎ  ハードウェアモデル
【図１】
0005226848.tif 000002
【図２】
0005226848.tif 000003
【図３】
0005226848.tif 000004
【図４】
0005226848.tif 000005
【図５】
0005226848.tif 000006
【図６】
0005226848.tif 000007
【図７】
0005226848.tif 000008
【図８】
0005226848.tif 000009
【図９】
0005226848.tif 000010