(57)【要約】【課題】シミュレーションの効率を向上させること。【解決手段】シミュレーション制御装置１００は、ハードウェアシミュレータ１０２におけるシミュレーション時刻が止まっている状態で各処理を行う。シミュレーション制御装置１００は、ソフトウェアモデルＳＷＭからハードウェアモデルＨＷＭへの送信処理がシミュレートされると、ソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とを同期させる。シミュレーション制御装置１００は、ハードウェアＨＷのつぎの動作がハードウェアシミュレータ１０２においてシミュレートされるシミュレーション時刻を取得する。シミュレーション制御装置１００は、ソフトウェアシミュレータ１０１におけるシミュレーション時刻が取得したシミュレーション時刻となった場合に、ソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とを同期させる。【選択図】図１
2015022544.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作を制御するコンピュータが、
前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第１シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御方法。
【請求項２】
前記コンピュータが、
前記シミュレーション時刻を取得する処理の後に、前記つぎの動作が前記送信処理に応じた動作の結果を前記ハードウェアから前記プロセッサへ送信する動作である場合に、前記動作の結果と、前記動作の結果が格納される前記プロセッサの記憶領域を示す領域情報と、特定した前記シミュレーション時刻と、を関連付けて記憶部に記憶させ、
前記第１シミュレーションにおけるシミュレーション時刻が特定した前記シミュレーション時刻になった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる処理を行わず、特定した前記シミュレーション時刻に関連付けて前記記憶部に記憶された前記領域情報が示す前記第１シミュレーションにおける前記記憶領域に、特定した前記シミュレーション時刻に関連付けて前記記憶部に記憶された前記動作の結果を反映させ、前記第１シミュレーションにおいて前記動作の結果を受信する受信処理をシミュレートさせる、
処理を実行することを特徴とする請求項１に記載のシミュレーション制御方法。
【請求項３】
前記コンピュータが、少なくとも前記第２シミュレーションを実行し、
前記シミュレーション時刻を取得する処理は、前記第２シミュレーションにおいて前記シミュレーション時刻を取得することを特徴とする請求項１または２に記載のシミュレーション制御方法。
【請求項４】
前記コンピュータが、少なくとも前記第１シミュレーションを実行し、
前記第１シミュレーションと前記第２シミュレーションとを同期させる処理では、前記第１シミュレーションにおいて前記第１シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったか否かを判断し、前記第１シミュレーションにおいて前記第１シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったと判断した場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させることを特徴とする請求項１〜３のいずれか一つに記載のシミュレーション制御方法。
【請求項５】
プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作を制御するコンピュータに、
前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第１シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる、
処理を実行させることを特徴とするシミュレーション制御プログラム。
【請求項６】
プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作を制御するコンピュータを有するシミュレーション制御装置であって、
前記コンピュータが、
前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第１シミュレーションにおけるシミュレーション時刻が、取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション制御方法、シミュレーション制御プログラム、およびシミュレーション制御装置に関する。
【背景技術】
【０００２】
従来、実際のハードウェアがなくともソフトウェアの開発およびデバックを行えるようにするために、ハードウェアシミュレータと、ソフトウェアシミュレータとを協調して動作させる技術が公知である（例えば、下記特許文献１参照。）。各シミュレータは独立にシミュレーション時刻を進める。そのため、他方のシミュレータからいつ通信があるかが予測できないため、定期的にシミュレータ間のシミュレーション時刻の同期を行うことにより、シミュレータ間のデータの同期が行われる。
【０００３】
また、関連する技術としては、ハードウェアシミュレータ上でソフトウェアを実行する技術（例えば、下記特許文献２参照。）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）とソフトウェアシミュレータとを協調して動作させる技術（例えば、下記特許文献３参照。）などが公知である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−３６８３号公報
【特許文献２】特開２０１２−８３８３４号公報
【特許文献３】特開２０１２−４８５３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、定期的にハードウェアシミュレーションとソフトウェアシミュレーションとを同期させる場合、同期させる間隔が短いと、シミュレーションの精度は向上するが、シミュレーションの速度は遅くなる。一方、同期させる間隔が長いと、シミュレーションの速度は速くなるが、シミュレーションの精度は下がる。そのため、定期的に同期させる場合、シミュレーションの効率が低いという問題点がある。
【０００６】
１つの側面では、本発明は、シミュレーションの効率の向上を図ることができるシミュレーション制御方法、シミュレーション制御プログラム、およびシミュレーション制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作の制御において、前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、前記第１シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させるシミュレーション制御方法、シミュレーション制御プログラム、およびシミュレーション制御装置が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、シミュレーションの効率の向上を図ることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明にかかるシミュレーション制御装置による一動作例を示す説明図である。
【図２】図２は、実施の形態にかかるシミュレーション制御装置のハードウェア構成例を示すブロック図である。
【図３】図３は、実行ＳＷモデル管理テーブル例を示す説明図である。
【図４】図４は、実行ＨＷＳｉｍ管理テーブル例を示す説明図である。
【図５】図５は、実行ＨＷモデル管理テーブル例を示す説明図である。
【図６】図６は、シミュレーション制御装置の機能的構成例を示すブロック図である。
【図７】図７は、実施例１にかかるシミュレーション制御装置によって２つのシミュレータを同期させるシーケンス例を示す説明図である。
【図８】図８は、定期的に２つのシミュレータを同期させるシーケンス例を示す説明図である。
【図９】図９は、実施例１にかかるソフトウェアシミュレータが行う処理手順の一例を示すフローチャートである。
【図１０】図１０は、実施例１にかかるハードウェアシミュレータが行う処理手順の一例を示すフローチャートである。
【図１１】図１１は、実行処理管理テーブル例を示す説明図である。
【図１２】図１２は、バッファ管理テーブル例を示す説明図である。
【図１３】図１３は、実施例２にかかるシミュレーション制御装置によって２つのシミュレータを同期させるシーケンス例を示す説明図である。
【図１４】図１４は、実施例２にかかるソフトウェアシミュレータが行う処理手順の一例を示すフローチャートである。
【図１５】図１５は、実施例２にかかるハードウェアシミュレータが行う処理手順の一例を示すフローチャートである。
【図１６】図１６は、図１５に示したＩＳＲ実行予約処理手順例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかるシミュレーション制御方法、シミュレーション制御プログラム、およびシミュレーション制御装置の実施の形態を詳細に説明する。
【００１１】
図１は、本発明にかかるシミュレーション制御装置による一動作例を示す説明図である。シミュレーション制御装置１００は、ソフトウェアシミュレータ１０１による第１シミュレーションと、ハードウェアシミュレータ１０２による第２シミュレーションと、の協調動作を制御するコンピュータを有する装置である。また、シミュレーション制御装置１００は、協調シミュレーションプログラムを実行する装置であってもよい。シミュレーション制御装置１００は、ソフトウェアシミュレータ１０１と、ハードウェアシミュレータ１０２と、を同期させる。ここで、ソフトウェアシミュレータ１０１と、ハードウェアシミュレータ１０２と、を同期させるとは、シミュレータ間のシミュレーション時刻の同期を行うことと、シミュレータ間のデータの同期を行うことを示す。これにより、ソフトウェアシミュレータ１０１と、ハードウェアシミュレータ１０２と、が協調動作することができ、シミュレーション対象システムをシミュレーションすることができる。図１の例では、ソフトウェアシミュレータ１０１による第１シミュレーションと、ハードウェアシミュレータ１０２による第２シミュレーションと、をシミュレーション制御装置１００が実行している。これに限らず、いずれか一方のシミュレーションまたは両方のシミュレーションをシミュレーション制御装置１００がアクセス可能な他の装置が実行してもよい。
【００１２】
ソフトウェアシミュレータ１０１は、例えば、プロセッサｐによる検証対象となるソフトウェアＳＷの実行をシミュレーションする機能を有する。例えば、ソフトウェアシミュレータ１０１としては、ＩＳＳ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ）が挙げられる。ハードウェアシミュレータ１０２は、例えば、プロセッサｐがアクセス可能なハードウェアＨＷの動作をシミュレーションする機能を有する。例えば、ハードウェアシミュレータ１０２としては、論理シミュレータが挙げられる。図１の例では、ハードウェアＨＷは１つであるが、複数あってもよい。また、ここでは、ハードウェアシミュレータ１０２は、１つを例に挙げているが、複数であってもよい。
【００１３】
ソフトウェアプログラムをソフトウェアシミュレータ１０１が実行することにより、ソフトウェアモデルＳＷＭが実現される。ソフトウェアプログラムは、Ｃ言語、またはＣ＋＋言語といったプログラム言語で記述される。ハードウェアＨＷの機能を表すプログラムをハードウェアシミュレータ１０２が実行することにより、ハードウェアモデルＨＷＭが実現される。ハードウェアＨＷの機能を表すプログラムは、ハードウェア記述言語やＣ言語やＣ＋＋言語などで記述される。
【００１４】
シミュレーション制御装置１００は、第２シミュレーションにおけるシミュレーション時刻が止まっている状態で各処理を行う。シミュレーション制御装置１００は、第１シミュレーションにおいてプロセッサｐからハードウェアＨＷへの送信処理がシミュレートされると、第１シミュレーションと第２シミュレーションとを同期させる。これにより、第２シミュレーションのシミュレーション時刻が第１シミュレーションのシミュレーション時刻ｔ０となる。
【００１５】
シミュレーション制御装置１００は、同期させたシミュレーション時刻と、送信処理の種別と、に基づく、つぎの動作が第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得する。送信処理の種別とは、動作されるハードウェアモデルＨＷＭの種類やハードウェアモデルＨＷＭに与える引数などである。つぎの動作とは、同期させたシミュレーション時刻に第２シミュレーションにおいてシミュレートされたハードウェアＨＷの送信処理に応じた動作のつぎの動作である。図１の例では、シミュレーション制御装置１００は、ハードウェアシミュレータ１０２を実行することにより、第２シミュレーションを行っているため、第２シミュレーションにおいてシミュレーション時刻を取得する。ハードウェアシミュレータ１０２がシミュレーション制御装置１００と異なる装置によって実行される場合、シミュレーション制御装置１００が、当該異なる装置から当該シミュレーション時刻を取得する。ここでは、シミュレーション時刻ｔ０のＮ秒後として、シミュレーション時刻ｔ１が取得される。
【００１６】
シミュレーション制御装置１００は、第１シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻ｔ１となった場合に、第１シミュレーションと第２シミュレーションとを同期させる。
【００１７】
これにより、シミュレーション制御装置１００によれば、シミュレーションの効率の向上を図ることができる。なお、シミュレーションの効率とは、シミュレーションの速度に対するシミュレーションの精度である。
【００１８】
（シミュレーション制御装置１００のハードウェアＨＷ構成例）
図２は、実施の形態にかかるシミュレーション制御装置のハードウェア構成例を示すブロック図である。図２において、シミュレーション制御装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、ディスクドライブ２０４と、ディスク２０５と、を有している。シミュレーション制御装置１００は、Ｉ／Ｆ（Ｉｎｔｅｒ／Ｆａｃｅ）２０６と、入力装置２０７と、出力装置２０８と、を有している。また、各部はバス２００によってそれぞれ接続されている。
【００１９】
ここで、ＣＰＵ２０１は、シミュレーション制御装置１００の全体の制御を司るプロセッサである。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがってディスク２０５に対するデータのリード／ライトを制御する。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する。ディスク２０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００２０】
Ｉ／Ｆ２０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、Ｉ／Ｆ２０６は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０６には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００２１】
入力装置２０７は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置２０７は、カメラから画像や動画を取り込むこともできる。また、入力装置２０７は、マイクから音声を取り込むこともできる。出力装置２０８は、ＣＰＵ２０１の指示により、データを出力するインターフェースである。出力装置２０８には、ディスプレイやプリンタが挙げられる。
【００２２】
（実施例１）
実施例１では、ハードウェアシミュレータ１０２のシミュレーション時刻が止まっている状態で、ハードウェアシミュレーションにおけるハードウェアモデルＨＷＭのつぎの動作のシミュレーション時刻を取得する。そして、実施例１では、ソフトウェアシミュレータ１０１のシミュレーション時刻が取得したシミュレーション時刻になった時に、２つのシミュレータを同期させる。これにより、シミュレーションの効率を向上させることができる。
【００２３】
図３は、実行ＳＷモデル管理テーブル例を示す説明図である。実行ＳＷモデル管理テーブル３００は、ソフトウェアシミュレータ１０１において特定のシミュレーション時刻に実行するソフトウェアモデルＳＷＭを管理するためのテーブルである。実行ＳＷモデル管理テーブル３００は、例えば、実行時刻と、実行ＳＷモデル群と、のフィールドを有する。各フィールドに情報が設定されることにより、レコード（例えば、３０１−１〜３０１−３など）として記憶される。例えば、実行ＳＷモデル管理テーブル３００は、シミュレーション時刻の順番に管理される。実行ＳＷモデル管理テーブル３００は、例えば、ＲＡＭ２０３やディスク２０５などの記憶装置に記憶される。
【００２４】
実行時刻のフィールドには、ソフトウェアシミュレータ１０１によって実行されるシミュレーション時刻が設定される。実行ＳＷモデル群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行されるソフトウェアモデルＳＷＭの識別情報が設定される。
【００２５】
図４は、実行ＨＷＳｉｍ管理テーブル例を示す説明図である。実行ＨＷＳｉｍ管理テーブル４００は、例えば、特定のシミュレーション時刻にソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とを同期させることを管理するためのテーブルである。また、実行ＨＷＳｉｍ管理テーブル４００は、例えば、同期させることによってハードウェアシミュレータ１０２によって実行されるハードウェアモデルＨＷＭを管理するためのテーブルである。実行ＨＷＳｉｍ管理テーブル４００は、例えば、同期時刻と、同期ＨＷモデル群と、のフィールドを有する。各フィールドに情報が設定されることにより、レコード（例えば、４０１−１〜４０１−３など）として記憶される。例えば、実行ＨＷＳｉｍ管理テーブル４００は、シミュレーション時刻の順番に管理される。実行ＨＷＳｉｍ管理テーブル４００は、例えば、ＲＡＭ２０３やディスク２０５などの記憶装置に記憶される。
【００２６】
同期時刻のフィールドには、ハードウェアシミュレータ１０２とソフトウェアシミュレータ１０１とを同期されるシミュレーション時刻が設定される。同期ＨＷモデル群のフィールドには、ハードウェアシミュレータ１０２とソフトウェアシミュレータ１０１とを同期させることにより、ハードウェアシミュレータ１０２によって実行されるハードウェアモデルＨＷＭの識別情報が設定される。
【００２７】
図５は、実行ＨＷモデル管理テーブル例を示す説明図である。実行ＨＷモデル管理テーブル５００は、例えば、特定のシミュレーション時刻にハードウェアシミュレータ１０２によって実行されるハードウェアモデルＨＷＭを管理するためのテーブルである。実行ＨＷモデル管理テーブル５００は、例えば、実行時刻と、実行ＨＷモデル群と、のフィールドを有する。各フィールドに情報が設定されることにより、レコード（例えば、５０１−１〜５０１−３など）として記憶される。例えば、実行ＨＷモデル管理テーブル５００は、シミュレーション時刻の順番に管理される。実行ＨＷモデル管理テーブル５００は、例えば、ＲＡＭ２０３やディスク２０５などの記憶装置に記憶される。
【００２８】
実行時刻のフィールドには、ハードウェアシミュレータ１０２によって実行されるシミュレーション時刻が設定される。実行ＨＷモデル群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行されるハードウェアモデルＨＷＭの識別情報が設定される。
【００２９】
（シミュレーション制御装置１００の機能的構成例）
図６は、シミュレーション制御装置の機能的構成例を示すブロック図である。シミュレーション制御装置１００は、ハードウェアシミュレータ１０２と、ソフトウェアシミュレータ１０１と、を有する。各シミュレータの処理は、例えば、ＣＰＵ２０１がアクセス可能な記憶装置に記憶されたプログラムにコーディングされている。そして、ＣＰＵ２０１が記憶装置からプログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶される。
【００３０】
ソフトウェアシミュレータ１０１は、上述したように、例えば、プロセッサｐによる検証対象となるソフトウェアＳＷの実行をシミュレーションする機能を有する。例えば、ソフトウェアシミュレータ１０１としては、ＩＳＳが挙げられる。また、ソフトウェアシミュレータ１０１は、同期部６０１−ＳＷと、実行部６０２−ＳＷと、時刻設定部６０３−ＳＷと、取得部６０４−ＳＷと、を有する。
【００３１】
時刻設定部６０３−ＳＷは、ソフトウェアシミュレーションにおけるシミュレーション時刻を実行ＳＷモデル管理テーブル３００と実行ＨＷＳｉｍ管理テーブル４００に設定された実行時刻の中で最も早い実行時刻に設定する。そして、実行部６０２−ＳＷは、実行ＳＷモデル管理テーブル３００から、現在のシミュレーション時刻と同一の実行時刻が設定されたレコード３０１を抽出する。実行部６０２−ＳＷは、抽出したレコード３０１に設定された識別情報が示すソフトウェアモデルＳＷＭを実行する。取得部６０４−ＳＷは、ソフトウェアモデルＳＷＭの実行結果に応じて当該ソフトウェアモデルＳＷＭをつぎに実行するシミュレーション時刻を取得する。そして、取得部６０４−ＳＷは、取得したシミュレーション時刻とソフトウェアモデルＳＷＭの識別情報とを関連付けて実行ＳＷモデル管理テーブル３００に登録する。
【００３２】
また、取得部６０４−ＳＷは、実行されたソフトウェアモデルＳＷＭの動作がハードウェアモデルＨＷＭへの送信処理である場合、関連付けて実行ＨＷＳｉｍ管理テーブル４００に登録する。具体的には、取得部６０４−ＳＷは、現在のシミュレーション時刻と送信先となるハードウェアモデルＨＷＭの識別情報とを関連付けて実行ＨＷＳｉｍ管理テーブル４００に登録する。
【００３３】
また、現在のシミュレーション時刻において実行させるソフトウェアモデルＳＷＭの実行がない場合、同期部６０１−ＳＷは、実行ＨＷＳｉｍ管理テーブル４００から、現在のシミュレーション時刻と同一の同期時刻が設定されたレコード４０１を抽出する。同期部６０１−ＳＷは、抽出したレコード４０１に設定された識別情報が示すハードウェアモデルＨＷＭへの送信処理を行うために、ハードウェアシミュレータ１０２に対して同期処理を行う。
【００３４】
ハードウェアシミュレータ１０２は、上述したように、例えば、プロセッサｐがアクセス可能なハードウェアＨＷの動作をシミュレーションする機能を有する。例えば、ハードウェアシミュレータ１０２としては、論理シミュレータが挙げられる。また、ハードウェアシミュレータ１０２は、同期部６０１−ＨＷと、実行部６０２−ＨＷと、時刻設定部６０３−ＨＷと、取得部６０４−ＨＷと、を有する。
【００３５】
まず、時刻設定部６０３−ＨＷは、同期部６０１−ＨＷによってソフトウェアシミュレータ１０１からの同期処理がなければ、シミュレーション時刻を止めた状態にする。同期部６０１−ＨＷは、ソフトウェアシミュレータ１０１からの同期処理を検出すると、ソフトウェアシミュレータ１０１のシミュレーション時刻と同一のシミュレーション時刻となるように時刻設定部６０３−ＨＷにシミュレーション時刻を設定させる。
【００３６】
時刻設定部６０３−ＨＷは、同期部６０１−ＨＷによって同期処理が検出されると、ソフトウェアシミュレータ１０１のシミュレーション時刻と同一のシミュレーション時刻に設定する。実行部６０２−ＨＷは、同期処理によって受け付けた送信処理において指示されたハードウェアモデルＨＷＭを実行する。
【００３７】
また、実行部６０２−ＨＷは、実行ＨＷモデル管理テーブル５００から、現在のシミュレーション時刻と同一の実行時刻が設定されたレコード５０１を抽出する。実行部６０２−ＨＷは、抽出したレコード５０１に設定された識別情報が示すハードウェアモデルＨＷＭを実行する。取得部６０４−ＨＷは、現在のシミュレーション時刻と、ソフトウェアモデルＳＷＭからの送信処理の種別に基づく、当該ハードウェアモデルＨＷＭをつぎに実行するシミュレーション時刻を取得する。そして、取得部６０４−ＨＷは、取得したシミュレーション時刻とハードウェアモデルＨＷＭの識別情報とを関連付けて実行ＨＷモデル管理テーブル５００に登録する。
【００３８】
また、取得部６０４−ＨＷは、現在のシミュレーション時刻におけるハードウェアモデルＨＷＭの実行が完了すると、実行ＨＷモデル管理テーブル５００にあらたに登録されたレコード５０１と同一内容を実行ＨＷＳｉｍ管理テーブル４００に登録する。ここで、実行ＨＷモデル管理テーブル５００への登録、実行ＨＷＳｉｍ管理テーブル４００への登録などを実行予約と称する。同期部６０１−ＨＷは、実行予約が完了すると、ソフトウェアシミュレータ１０１からの同期処理を待機する状態となる。
【００３９】
そして、同期部６０１−ＨＷが同期処理を待機する状態となると、ソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２との同期が終了する。そのため、時刻設定部６０３−ＳＷは、ソフトウェアシミュレーションにおけるシミュレーション時刻を実行ＳＷモデル管理テーブル３００に設定された実行時刻と実行ＨＷＳｉｍ管理テーブル４００に設定された同期時刻との中で最も早い時刻に設定する。そして、実行部６０２−ＳＷによって上述したようにソフトウェアモデルＳＷＭが実行され、取得部６０４−ＳＷによって特定されたシミュレーション時刻に実行させるソフトウェアモデルＳＷＭが実行ＳＷモデル管理テーブル３００に登録される。
【００４０】
現在のシミュレーション時刻において実行させるソフトウェアモデルＳＷＭが無い場合、同期部６０１−ＳＷは、実行ＨＷＳｉｍ管理テーブル４００から、現在のシミュレーション時刻と同一の同期時刻が設定されたレコード４０１を抽出する。同期部６０１−ＳＷは、抽出したレコード４０１に設定された識別情報が示すハードウェアモデルＨＷＭへの送信処理を行うために、ハードウェアシミュレータ１０２に対して同期処理を行う。このように、ハードウェアシミュレータ１０２からの実行予約によってハードウェアシミュレータ１０２とソフトウェアシミュレータ１０１とが同期される。
【００４１】
図７は、実施例１にかかるシミュレーション制御装置によって２つのシミュレータを同期させるシーケンス例を示す説明図である。ハードウェアシミュレータ１０２は、シミュレーション時刻を止めた状態でソフトウェアシミュレータ１０１からの同期処理を待機する。（１）ソフトウェアシミュレータ１０１は、ソフトウェアモデルＳＷＭを実行する。（２）ソフトウェアシミュレータ１０１は、ソフトウェアモデルＳＷＭの実行においてハードウェアモデルＨＷＭへの第１送信処理をシミュレートすると、ハードウェアシミュレータ１０２に対して同期処理を行う。
【００４２】
これにより、（３）ハードウェアシミュレータ１０２は、ハードウェアシミュレータ１０２におけるシミュレーション時刻を、ソフトウェアシミュレータ１０１におけるシミュレーション時刻に設定する。また、ここでは、ハードウェアシミュレータ１０２は、同期処理により行われた送信処理によって送信された情報を受信する。第１送信処理によって送信された情報を受信するとは、ソフトウェアシミュレータ１０１から送信された情報をハードウェアシミュレーションにおけるバッファＨＷＢに反映させることを示す。
【００４３】
そして、ハードウェアシミュレータ１０２は、第１送信処理に基づくハードウェアモデルＨＷＭを実行する。つぎに、（４）ハードウェアシミュレータ１０２は、ハードウェアモデルＨＷＭがつぎに実行されるシミュレーション時刻を取得する。そして、ハードウェアシミュレータ１０２は、取得したシミュレーション時刻に基づいて実行予約を行い、同期処理を待機する状態になる。
【００４４】
つぎに、（５）ソフトウェアシミュレータ１０１は、シミュレーションを順に進める。そして、（６）ソフトウェアシミュレータ１０１は、実行予約されたシミュレーション時刻になると、ハードウェアシミュレータ１０２に対して同期処理を行う。（７）ハードウェアシミュレータ１０２は、同期処理によって、ハードウェアシミュレータ１０２におけるシミュレーション時刻をソフトウェアシミュレータ１０１のシミュレーション時刻にする。そして、（８）ハードウェアシミュレータ１０２は、ハードウェアモデルＨＷＭの実行において上述した第１送信処理に基づくハードウェアモデルＨＷＭの動作結果をソフトウェアモデルＳＷＭへ送信する第２送信処理をシミュレートする。そして、（９）ソフトウェアシミュレータ１０１は、当該第２送信処理によって送信された情報を受信する。具体的には、第２送信処理によって送信された情報を受信するとは、ハードウェアシミュレータ１０２から送信された情報をソフトウェアシミュレーションにおけるバッファＳＷＢに反映させることを示す。
【００４５】
図８は、定期的に２つのシミュレータを同期させるシーケンス例を示す説明図である。２つのシミュレータを定期的に同期させる場合、シミュレーション時刻が同期時刻になった時に同期させる。（１）ソフトウェアシミュレータ１０１は、つぎに同期を行う時刻までシミュレーションを進めている。例えば、（２）ソフトウェアシミュレータ１０１は、シミュレーション中にハードウェアシミュレータ１０２へのソフトウェアモデルＳＷＭからハードウェアモデルＨＷＭへの第１送信処理をシミュレートする。そして、（３）ソフトウェアシミュレータ１０１は、つぎに同期を行う時刻までシミュレーションを進める。（４）同期時刻である１ｓｅｃになると、ソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とが同期することにより、ソフトウェアシミュレータ１０１によってシミュレートされた第１送信処理がハードウェアシミュレータ１０２によって反映される。
【００４６】
つぎに、（５）ハードウェアシミュレータ１０２は、第１送信処理に応じた動作をシミュレートし、当該動作の結果を送信する第２送信処理をシミュレートする。そして、ハードウェアシミュレータ１０２は、つぎの同期時刻までシミュレーションを進める。（６）同期時刻である２ｓｅｃになると、ソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とが同期することにより、ハードウェアシミュレータ１０２によってシミュレートされた第２送信処理がソフトウェアシミュレータ１０１によって反映される。
【００４７】
図８に示すように、一定間隔で２つのシミュレータを同期させる場合、同期時刻のタイミングでしかシミュレータ間でデータが同期できないため、送信処理などの通信が待機させられ、通信遅延が発生し、シミュレーション精度が低下する。また、送信処理がシミュレートされていない場合であっても同期時刻になると、同期が行われるため、シミュレーション速度が低下する。これに対して、実施例１にかかるシミュレーション制御装置１００は、ハードウェアシミュレータ１０２のシミュレーション時刻を止めておく。そして、実施例１にかかるシミュレーション制御装置１００は、ソフトウェアモデルＳＷＭからの送信処理に基づくハードウェアモデルＨＷＭの動作のつぎの動作のシミュレーション時刻を特定する。そして、実施例１にかかるシミュレーション制御装置１００は、ソフトウェアシミュレータ１０１のシミュレーション時刻が取得したシミュレーション時刻になった時にソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とを同期させる。これにより、シミュレーションの効率を向上させることができる。
【００４８】
（実施例１にかかる各シミュレータが行う処理手順）
図９は、実施例１にかかるソフトウェアシミュレータが行う処理手順の一例を示すフローチャートである。まず、ソフトウェアシミュレータ１０１は、実行ＳＷモデル管理テーブル３００に基づいて、現在のシミュレーション時刻に実行されるソフトウェアモデルＳＷＭのうち、未実行のソフトウェアモデルＳＷＭがあるか否かを判断する（ステップＳ９０１）。未実行のソフトウェアモデルＳＷＭがある場合（ステップＳ９０１：Ｙｅｓ）、ソフトウェアシミュレータ１０１は、現在のシミュレーション時刻に実行される未実行のソフトウェアモデルＳＷＭから１つのソフトウェアモデルＳＷＭを選択する（ステップＳ９０２）。
【００４９】
ソフトウェアシミュレータ１０１は、選択したソフトウェアモデルＳＷＭを実行する（ステップＳ９０３）。ここで、ソフトウェアシミュレータ１０１は、実行が完了したソフトウェアモデルＳＷＭに関する情報を実行ＳＷモデル管理テーブル３００から削除する。そして、ソフトウェアシミュレータ１０１は、実行予約をし（ステップＳ９０４）、ステップＳ９０１へ戻る。ここでの実行予約は、ハードウェアモデルＨＷＭへの送信処理についての実行ＨＷＳｉｍ管理テーブル４００への登録と、実行したソフトウェアモデルＳＷＭをつぎに実行させる場合についての実行ＳＷモデル管理テーブル３００への登録と、がある。
【００５０】
一方、ステップＳ９０１において、未実行のソフトウェアモデルＳＷＭがない場合（ステップＳ９０１：Ｎｏ）、ソフトウェアシミュレータ１０１は、現在のシミュレーション時刻にハードウェアモデルＨＷＭを実行させる予約があるか否かを判断する（ステップＳ９０５）。予約の有無は、現在のシミュレーション時刻を同期時刻として記憶されたレコード４０１が実行ＨＷＳｉｍ管理テーブル４００にあるか否かによって判断される。
【００５１】
予約がない場合（ステップＳ９０５：Ｎｏ）、ソフトウェアシミュレータ１０１は、ステップＳ９０７へ移行する。予約がある場合（ステップＳ９０５：Ｙｅｓ）、ソフトウェアシミュレータ１０１は、ハードウェアシミュレータ１０２に対して同期処理を行い（ステップＳ９０６）、ステップＳ９０７へ移行する。
【００５２】
そして、ソフトウェアシミュレータ１０１は、実行ＨＷＳｉｍ管理テーブル４００または実行ＨＷモデル管理テーブル５００に登録された実行時刻のうち、現在のシミュレーション時刻に最も近い実行時刻までシミュレーション時刻を進める（ステップＳ９０７）。つぎに、ソフトウェアシミュレータ１０１は、ステップＳ９０２へ移行する。
【００５３】
図１０は、実施例１にかかるハードウェアシミュレータが行う処理手順の一例を示すフローチャートである。ハードウェアシミュレータ１０２は、実行ＨＷモデル管理テーブル５００に基づいて、現在のシミュレーション時刻に実行されるハードウェアモデルＨＷＭのうち、未実行のハードウェアモデルＨＷＭがあるか否かを判断する（ステップＳ１００１）。未実行のハードウェアモデルＨＷＭがある場合（ステップＳ１００１：Ｙｅｓ）、ハードウェアシミュレータ１０２は、現在のシミュレーション時刻に実行される未実行のハードウェアモデルＨＷＭから１つのハードウェアモデルＨＷＭを選択する（ステップＳ１００２）。
【００５４】
ハードウェアシミュレータ１０２は、選択したハードウェアモデルＨＷＭを実行する（ステップＳ１００３）。ここで、ハードウェアシミュレータ１０２は、実行が完了したハードウェアモデルＨＷＭに関する情報を実行ＨＷモデル管理テーブル５００から削除する。そして、ハードウェアシミュレータ１０２は、実行予約をし（ステップＳ１００４）、ステップＳ１００１へ戻る。ここでの実行予約は、例えば、実行したハードウェアモデルＨＷＭの動作結果をソフトウェアモデルＳＷＭへ送信する送信処理についての実行ＨＷＳｉｍ管理テーブル４００への登録がある。また、ここでの実行予約は実行したハードウェアモデルＨＷＭをつぎに実行させる場合についての実行ＨＷモデル管理テーブル５００への登録がある。
【００５５】
一方、ステップＳ１００１において、未実行のハードウェアモデルＨＷＭがない場合（ステップＳ１００１：Ｎｏ）、ハードウェアシミュレータ１０２は、実行予約を行う（ステップＳ１００５）。ここでの実行予約は、例えば、実行ＨＷモデル管理テーブル５００に登録されたレコード５０１のうち、実行ＨＷＳｉｍ管理テーブル４００に未登録のレコード５０１を、実行ＨＷＳｉｍ管理テーブル４００に登録することである。そして、ハードウェアシミュレータ１０２は、ソフトウェアシミュレータ１０１からの同期処理を待機する（ステップＳ１００６）。
【００５６】
ハードウェアシミュレータ１０２は、シミュレーション時刻をソフトウェアシミュレータ１０１からの同期処理が行われると、ソフトウェアシミュレータ１０１のシミュレーション時刻まで進め（ステップＳ１００７）、ステップＳ１００２へ移行する。
【００５７】
（実施例２）
実施例２では、ハードウェアモデルＨＷＭのつぎの動作が動作結果をソフトウェアモデルＳＷＭへ送信する送信処理である場合に、事前に動作の結果を記憶部に記憶させておく。そして、実施例２では、ソフトウェアシミュレータ１０１が取得したシミュレーション時刻になった場合に、同期せずに、記憶部に記憶された動作の結果をソフトウェアシミュレータ１０１に反映させる。これにより、ソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とを同期させる回数を低減させることができる。したがって、シミュレーションの効率をより向上させることができる。
【００５８】
また、実施例２では、実施例１と同一の機能や構成については同一符号を付し、詳細な説明を省略する。まず、実施例２にかかるシミュレーション制御装置１００で用いられる各テーブル例について説明する。
【００５９】
図１１は、実行処理管理テーブル例を示す説明図である。実行処理管理テーブル１１００は、例えば、特定のシミュレーション時刻にハードウェアシミュレータ１０２によって実行されるハードウェアモデルＨＷＭやハードウェアシミュレータ１０２によって実行される割り込み処理を管理するためのテーブルである。実行処理管理テーブル１１００は、例えば、実行時刻と、実行ＨＷモデル群と、実行ＩＳＲ（Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）群、ＳＷフラグのフィールドを有する。各フィールドに情報が設定されることにより、レコード（例えば、１１０１−１〜１１０１−６など）として記憶される。例えば、実行処理管理テーブル１１００は、シミュレーション時刻の順番に管理される。実行処理管理テーブル１１００は、例えば、ＲＡＭ２０３やディスク２０５などの記憶装置に記憶される。
【００６０】
実行時刻のフィールドには、ハードウェアシミュレータ１０２によって実行されるシミュレーション時刻が設定される。実行ＨＷモデル群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行されるハードウェアモデルＨＷＭの識別情報が設定される。実行ＩＳＲ群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行される割り込み処理の識別情報が設定される。ＳＷフラグのフィールドには、割り込み処理であるか否かの情報が設定される。例えば、ＳＷフラグのフィールドに１が設定される場合、割り込み処理であることを示し、ＳＷフラグのフィールドに０が設定される場合、ハードウェアモデルＨＷＭの実行であることを示す。
【００６１】
図１２は、バッファ管理テーブル例を示す説明図である。バッファ管理テーブル１２００は、特定のシミュレーション時刻にソフトウェアシミュレータ１０１における各バッファの値を管理するためのテーブルである。バッファ管理テーブル１２００は、反映時刻、バッファ値群のフィールドを有する。各フィールドに情報が設定されることにより、レコード（例えば、１２０１−１〜１２０１−３など）として記憶される。例えば、バッファ管理テーブル１２００は、シミュレーション時刻の順番に管理される。バッファ管理テーブル１２００は、例えば、ＲＡＭ２０３やディスク２０５などの記憶装置に記憶される。
【００６２】
反映時刻のフィールドには、バッファの値を反映させるシミュレーション時刻が設定される。バッファ値群のフィールドには、割り込みフラグの識別情報と、割り込みフラグに反映させる値と、が設定される。例えば、割り込みフラグの識別情報と、実行処理管理テーブル１１００に設定された割り込み処理の識別情報と、は対応関係がある。例えば、割り込みフラグ１に１が設定されると、割り込み処理ＩＳＲが発生する。
【００６３】
また、実行ＳＷモデル管理テーブル３００と、実行ＨＷＳｉｍ管理テーブル４００と、については、実施例１と同様の内容であるため、詳細な説明を省略する。
【００６４】
取得部６０４−ＨＷは、シミュレーション時刻を取得する処理の後に、つぎの動作が送信処理に応じた動作の結果をハードウェアＨＷからプロセッサｐへ送信する送信処理であるか否かを判断する。取得部６０４−ＨＷは、当該送信処理であると判断された場合に、動作の結果と、動作の結果が格納されるプロセッサｐの記憶領域を示す領域情報と、取得したシミュレーション時刻と、を関連付けて記憶部に記憶させる。記憶部は、例えば、上述したバッファ管理テーブル１２００である。ここでの領域情報が割り込みフラグの識別情報であり、動作の結果は、バッファの値であり、取得したシミュレーション時刻が反映時刻である。送信処理に応じた動作の結果をハードウェアＨＷからプロセッサｐへ送信する送信処理とは、例えば、割り込み処理である。具体的に、取得部６０４−ＨＷは、つぎの動作が割り込み処理である場合、取得したシミュレーション時刻を反映時刻とし、割り込み処理に応じた割り込みフラグの識別情報および割り込みフラグの値をバッファ値群としてバッファ管理テーブル１２００に登録する。そして、取得部６０４−ＨＷは、つぎの動作が割り込み処理である場合に、取得したシミュレーション時刻と、割り込み処理を示す識別情報と、ＳＷフラグとして１と、を実行処理管理テーブル１１００に設定する。
【００６５】
また、取得部６０４−ＨＷは、現在のシミュレーション時刻におけるハードウェアモデルＨＷＭの実行が完了すると、実行処理管理テーブル１１００にあらたに登録されたレコード１１０１について、実行ＨＷＳｉｍ管理テーブル４００に登録する。または、取得部６０４−ＨＷは、現在のシミュレーション時刻におけるハードウェアモデルＨＷＭの実行が完了すると、実行処理管理テーブル１１００にあらたに登録されたレコード１１０１について、実行ＳＷモデル管理テーブル３００に登録する。具体的に、取得部６０４−ＨＷは、あらたに登録されたレコード１１０１のうち、ＳＷフラグが０であるレコード１１０１については、同期時刻と同期ＨＷモデル群との組みを実行ＨＷＳｉｍ管理テーブル４００に登録する。または、取得部６０４−ＨＷは、あらたに登録されたレコード１１０１のうち、ＳＷフラグが１であるレコード１１０１については、実行時刻と実行ＩＳＲ群との組みを実行ＳＷモデル管理テーブル３００に登録する。ここで、実施例２では、実行ＳＷモデル管理テーブル３００への登録、バッファ管理テーブル１２００への登録、実行ＨＷＳｉｍ管理テーブル４００への登録、実行ＳＷＳｉｍ管理テーブルへの登録などを実行予約と称する。同期部６０１−ＨＷは、実行予約が完了すると、ソフトウェアシミュレータ１０１からの同期処理を待機する状態となる。
【００６６】
つぎの動作が割り込み処理であって、ソフトウェアシミュレータ１０１におけるシミュレーション時刻が取得したシミュレーション時刻となった場合に、同期部６０１−ＳＷは、同期させる処理を行わない。そして、実行部６０２−ＳＷは、取得したシミュレーション時刻に関連付けて記憶部に記憶された領域情報が示すソフトウェアシミュレーションにおける記憶領域に、取得したシミュレーション時刻に関連付けて記憶部に記憶された動作の結果を反映させる。つぎに、実行部６０２−ＳＷは、動作の結果を受信する受信処理をシミュレートする。これにより、実行部６０２−ＳＷは割り込みを実行する。具体的には、割り込みは、割り込みハンドラを実行することにより処理される。
【００６７】
具体的には、時刻設定部６０３−ＳＷによってシミュレーション時刻が進められると、実行部６０２−ＳＷは、バッファ管理テーブル１２００から、現在のシミュレーション時刻を反映時刻とするレコード１２０１を抽出する。そして、実行部６０２−ＳＷは、ソフトウェアシミュレーションにおけるバッファの値に、抽出したレコード１２０１に設定されたバッファの値を反映させる。つぎに、実行部６０２−ＳＷは、実行ＳＷモデル管理テーブル３００から、現在のシミュレーション時刻を実行時刻とするレコード３０１を抽出する。例えば、現在のシミュレーション時刻を反映時刻とするレコード１２０１がバッファ管理テーブル１２００にある場合には、現在のシミュレーション時刻を実行時刻とするレコード３０１が実行ＳＷモデル管理テーブル３００にある。そのため、実行部６０２−ＳＷは、抽出したレコード３０１に基づいて割り込み処理を実行する。これにより、ソフトウェアシミュレータ１０１とハードウェアシミュレータ１０２とを同期させずに、ハードウェアモデルＨＷＭからの割り込み処理をシミュレーションさせることができる。
【００６８】
図１３は、実施例２にかかるシミュレーション制御装置によって２つのシミュレータを同期させるシーケンス例を示す説明図である。ハードウェアシミュレータ１０２は、シミュレーション時刻を止めた状態でソフトウェアシミュレータ１０１からの同期処理を待機する。（１）ソフトウェアシミュレータ１０１は、ソフトウェアモデルＳＷＭを実行する。（２）ソフトウェアシミュレータ１０１は、ソフトウェアモデルＳＷＭの実行においてハードウェアモデルＨＷＭへの第１送信処理があると、ハードウェアシミュレータ１０２に対して同期処理を行う。
【００６９】
これにより、（３）ハードウェアシミュレータ１０２は、ハードウェアシミュレータ１０２におけるシミュレーション時刻を、ソフトウェアシミュレータ１０１におけるシミュレーション時刻に設定することにより、シミュレーション時刻を進める。そして、ハードウェアシミュレータ１０２は、第１送信処理に基づくハードウェアモデルＨＷＭを実行する。つぎに、（４）ハードウェアシミュレータ１０２は、現在のシミュレーション時刻と第１送信処理の種別と、に基づいて、ハードウェアモデルＨＷＭがつぎに実行されるシミュレーション時刻を特定する。そして、ハードウェアモデルＨＷＭのつぎの動作が割り込み処理である場合、（５）ハードウェアシミュレータ１０２は、割り込み処理に対応するバッファの値をソフトウェアシミュレーションにおけるバッファに反映させるための実行予約を行う。また、（６）ハードウェアシミュレータ１０２は、割り込み処理をソフトウェアシミュレータ１０１に実行させるための実行予約を行う。
【００７０】
そして、ソフトウェアシミュレータ１０１は、取得したシミュレーション時刻になると、割り込み処理に対応するソフトウェアシミュレーションにおけるバッファの値を反映させ、割り込み処理を実行する。
【００７１】
（実施例２にかかる各シミュレータが行う処理手順）
図１４は、実施例２にかかるソフトウェアシミュレータが行う処理手順の一例を示すフローチャートである。まず、ソフトウェアシミュレータ１０１は、実行ＳＷモデル管理テーブル３００に基づいて、現在のシミュレーション時刻に実行されるソフトウェアモデルＳＷＭのうち、未実行のソフトウェアモデルＳＷＭがあるか否かを判断する（ステップＳ１４０１）。未実行のソフトウェアモデルＳＷＭがある場合（ステップＳ１４０１：Ｙｅｓ）、ソフトウェアシミュレータ１０１は、現在のシミュレーション時刻に実行される未実行のソフトウェアモデルＳＷＭから１つのソフトウェアモデルＳＷＭを選択する（ステップＳ１４０２）。
【００７２】
ソフトウェアシミュレータ１０１は、選択したソフトウェアモデルＳＷＭを実行する（ステップＳ１４０３）。ここで、ソフトウェアシミュレータ１０１は、実行が完了したソフトウェアモデルＳＷＭに関する情報を、実行ＳＷモデル管理テーブル３００から削除する。そして、ソフトウェアシミュレータ１０１は、実行予約をし（ステップＳ１４０４）、ステップＳ１４０１へ戻る。ここでの実行予約は、ハードウェアモデルＨＷＭへの送信処理についての実行ＨＷＳｉｍ管理テーブル４００への登録と、実行したソフトウェアモデルＳＷＭをつぎに実行させる場合についての実行ＳＷモデル管理テーブル３００への登録と、がある。
【００７３】
一方、ステップＳ１４０１において、未実行のソフトウェアモデルＳＷＭがない場合（ステップＳ１４０１：Ｎｏ）、ソフトウェアシミュレータ１０１は、現在のシミュレーション時刻にハードウェアモデルＨＷＭを実行させる予約があるか否かを判断する（ステップＳ１４０５）。予約の有無は、現在のシミュレーション時刻が同期時刻として記憶されたレコード４０１が実行ＨＷＳｉｍ管理テーブル４００にあるか否かによって判断される。
【００７４】
予約がない場合（ステップＳ１４０５：Ｎｏ）、ソフトウェアシミュレータ１０１は、ステップＳ１４０７へ移行する。予約がある場合（ステップＳ１４０５：Ｙｅｓ）、ソフトウェアシミュレータ１０１は、ハードウェアシミュレータ１０２に対して同期処理を行い（ステップＳ１４０６）、ステップＳ１４０７へ移行する。
【００７５】
つぎに、ソフトウェアシミュレータ１０１は、実行ＨＷＳｉｍ管理テーブル４００または実行ＳＷモデル管理テーブル３００に登録された時刻のうち、現在のシミュレーション時刻に最も近い時刻までシミュレーション時刻を進める（ステップＳ１４０７）。そして、ソフトウェアシミュレータ１０１は、バッファ管理テーブル１２００において、反映時刻が現在のシミュレーション時刻以前となっているバッファ値群のうち、未反映のバッファがあるか否かを判断する（ステップＳ１４０８）。未反映のバッファがある場合（ステップＳ１４０８：Ｙｅｓ）、ソフトウェアシミュレータ１０１は、未反映のバッファを１つ選択してバッファの値を反映し（ステップＳ１４０９）、ステップＳ１４０８へ戻る。ここでは、反映後のバッファ値群に関する情報は、バッファ管理テーブル１２００から削除される。一方、未反映のバッファがない場合（ステップＳ１４０８：Ｎｏ）、ソフトウェアシミュレータ１０１は、ステップＳ１４０２へ移行する。
【００７６】
図１５は、実施例２にかかるハードウェアシミュレータが行う処理手順の一例を示すフローチャートである。ハードウェアシミュレータ１０２は、実行処理管理テーブル１１００に基づいて、現在のシミュレーション時刻に実行されるハードウェアモデルＨＷＭのうち、未実行のハードウェアモデルＨＷＭがあるか否かを判断する（ステップＳ１５０１）。未実行のハードウェアモデルＨＷＭがある場合（ステップＳ１５０１：Ｙｅｓ）、ハードウェアシミュレータ１０２は、現在のシミュレーション時刻に実行される未実行のハードウェアモデルＨＷＭから１つのハードウェアモデルＨＷＭを選択する（ステップＳ１５０２）。ハードウェアシミュレータ１０２は、選択したハードウェアモデルＨＷＭを実行する（ステップＳ１５０３）。ここで、ハードウェアシミュレータ１０２は、実行が完了したハードウェアモデルＨＷＭに関する情報を、実行処理管理テーブル１１００から削除する。
【００７７】
そして、ハードウェアシミュレータ１０２は、実行予約をし（ステップＳ１５０４）、ハードウェアシミュレータ１０２は、ステップＳ１５０１へ戻る。ここでの実行予約とは、実行ＳＷモデル管理テーブル３００と実行ＨＷＳｉｍ管理テーブル４００とへの登録のために、実行管理テーブル１１００とバッファ管理テーブル１２００とへ登録することである。
【００７８】
一方、ステップＳ１５０１において、未実行のハードウェアモデルＨＷＭがない場合（ステップＳ１５０１：Ｎｏ）、ハードウェアシミュレータ１０２は、ステップＳ１５０５へ移行する。ハードウェアシミュレータ１０２は、あらたに実行処理管理テーブル１１００に登録されたハードウェアモデルＨＷＭの実行または割り込み処理について、すべての実行予約を完了したか否かを判断する（ステップＳ１５０５）。実行予約が完了していないと判断された場合（ステップＳ１５０５：Ｎｏ）、ハードウェアシミュレータ１０２は、ステップＳ１５０６へ移行する。ハードウェアシミュレータ１０２は、実行処理管理テーブル１１００に登録されたレコード１１０１のうち、実行予約が完了していないいずれかのレコード１１０１を選択し、選択したレコード１１０１のＳＷフラグが１であるか否かを判断する（ステップＳ１５０６）。
【００７９】
ＳＷフラグが１であると判断された場合（ステップＳ１５０６：Ｙｅｓ）、ハードウェアシミュレータ１０２は、ＩＳＲ実行予約を行い（ステップＳ１５０７）、ステップＳ１５０５へ戻る。ＳＷフラグが１でないと判断された場合（ステップＳ１５０６：Ｎｏ）、ハードウェアシミュレータ１０２は、実行ＨＷＳｉｍ管理テーブル４００に実行予約を行い（ステップＳ１５０８）、ステップＳ１５０５へ戻る。
【００８０】
ステップＳ１５０５において、実行予約が完了したと判断された場合（ステップＳ１５０５：Ｙｅｓ）、ハードウェアシミュレータ１０２は、ソフトウェアシミュレータ１０１からの同期処理を待機する（ステップＳ１５０９）。
【００８１】
ハードウェアシミュレータ１０２は、シミュレーション時刻をソフトウェアシミュレータ１０１からの同期処理が行われると、ソフトウェアシミュレータ１０１のシミュレーション時刻まで進め（ステップＳ１５１０）、ステップＳ１５０２へ移行する。
【００８２】
図１６は、図１５に示したＩＳＲ実行予約処理手順例を示す説明図である。ハードウェアシミュレータ１０２は、選択したレコード１１０１の実行時刻とレコード１１０１の実行ＩＳＲ群とを実行ＳＷモデル管理テーブル３００へ登録する（ステップＳ１６０１）。ハードウェアシミュレータ１０２は、選択したレコード１１０１を実行処理管理テーブル１１００から削除し（ステップＳ１６０２）、一連の処理を終了する。
【００８３】
また、上述した実施例１および実施例２ではハードウェアシミュレータ１０２が１つしかない例を挙げたが、これに限らず、複数あってもよい。例えば、異なるハードウェアシミュレータ１０２が複数ある場合、実行ＨＷＳｉｍ管理テーブル４００には、さらに、ハードウェアモデルＨＷＭを実行するハードウェアシミュレータ１０２の識別情報のフィールドを有することとする。
【００８４】
以上説明したように、実施例１にかかるシミュレーション制御装置１００は、ハードウェアシミュレーションのシミュレーション時刻が止まっている状態にする。そして、シミュレーション制御装置１００は、ハードウェアシミュレーションにおけるハードウェアモデルＨＷＭのつぎの動作のシミュレーション時刻を取得する。そして、実施例１にかかるシミュレーション制御装置１００は、ソフトウェアシミュレータ１０１のシミュレーション時刻が取得したシミュレーション時刻になった時に、２つのシミュレータを同期させる。これにより、シミュレーションの効率を向上させることができる。
【００８５】
また、実施例２にかかるシミュレーション制御装置１００は、ハードウェアシミュレーションにおけるハードウェアＨＷのつぎの動作が割り込み処理である場合、取得したシミュレーション時刻に反映させる割り込みフラグの値を記憶部に記憶させておく。実施例２にかかるシミュレーション制御装置１００は、ソフトウェアシミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻になった場合、記憶部の記憶内容によりソフトウェアシミュレーションにおける割り込みフラグの値を反映させる。そして、実施例２にかかるシミュレーション制御装置１００は、ソフトウェアシミュレーションにおいて割り込み処理をシミュレートさせる。これにより、ソフトウェアシミュレーションとハードウェアシミュレーションとを同期させる回数を低減させることができ、シミュレーションの高速化を図ることができる。したがって、シミュレーションの効率を向上させることができる。
【００８６】
また、実施例１または実施例２にかかるシミュレーション制御装置１００は、実行中のハードウェアシミュレーションにおいてつぎの動作のシミュレーション時刻を取得する。このように、ハードウェアシミュレーションにおいて特定したつぎの動作のシミュレーション時刻を利用してシミュレーションの効率を向上させることができる。
【００８７】
また、実施例１または実施例２にかかるシミュレーション制御装置１００は、実行中のソフトウェアシミュレーションにおいてソフトウェアシミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったか否かを判断する。これにより、ソフトウェアシミュレーションにおけるシミュレーション時刻の制御を容易化することができる。
【００８８】
なお、本実施の形態で説明したシミュレーション制御方法は、予め用意されたシミュレーション制御プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本シミュレーション制御プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、シミュレーション制御プログラムは、インターネット等のネットワークＮＥＴを介して配布してもよい。
【００８９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００９０】
（付記１）プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作を制御するコンピュータが、
前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第１シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御方法。
【００９１】
（付記２）前記コンピュータが、
前記シミュレーション時刻を取得する処理の後に、前記つぎの動作が前記送信処理に応じた動作の結果を前記ハードウェアから前記プロセッサへ送信する動作である場合に、前記動作の結果と、前記動作の結果が格納される前記プロセッサの記憶領域を示す領域情報と、特定した前記シミュレーション時刻と、を関連付けて記憶部に記憶させ、
前記第１シミュレーションにおけるシミュレーション時刻が特定した前記シミュレーション時刻になった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる処理を行わず、特定した前記シミュレーション時刻に関連付けて前記記憶部に記憶された前記領域情報が示す前記第１シミュレーションにおける前記記憶領域に、特定した前記シミュレーション時刻に関連付けて前記記憶部に記憶された前記動作の結果を反映させ、前記第１シミュレーションにおいて前記動作の結果を受信する受信処理をシミュレートさせる、
処理を実行することを特徴とする付記１に記載のシミュレーション制御方法。
【００９２】
（付記３）前記コンピュータが、少なくとも前記第２シミュレーションを実行し、
前記シミュレーション時刻を取得する処理は、前記第２シミュレーションにおいて前記シミュレーション時刻を取得することを特徴とする付記１または２に記載のシミュレーション制御方法。
【００９３】
（付記４）前記コンピュータが、少なくとも前記第１シミュレーションを実行し、
前記第１シミュレーションと前記第２シミュレーションとを同期させる処理では、前記第１シミュレーションにおいて前記第１シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったか否かを判断し、前記第１シミュレーションにおいて前記第１シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったと判断した場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させることを特徴とする付記１〜３のいずれか一つに記載のシミュレーション制御方法。
【００９４】
（付記５）プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作を制御するコンピュータに、
前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第１シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる、
処理を実行させることを特徴とするシミュレーション制御プログラム。
【００９５】
（付記６）プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作を制御するコンピュータを有するシミュレーション制御装置であって、
前記コンピュータが、
前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第１シミュレーションにおけるシミュレーション時刻が、取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御装置。
【００９６】
（付記７）プロセッサによるソフトウェアの実行をシミュレートする第１シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第２シミュレーションと、の協調動作を制御するコンピュータに、
前記第２シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第１シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第１シミュレーションと前記第２シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第２シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第２シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第１シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第１シミュレーションと前記第２シミュレーションとを同期させる、
処理を実行させるシミュレーション制御プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【００９７】
１００  シミュレーション制御装置
１０１  ソフトウェアシミュレータ
１０２  ハードウェアシミュレータ
３００  実行ＳＷモデル管理テーブル
４００  実行ＨＷＳｉｍ管理テーブル
５００  実行ＨＷモデル管理テーブル
６０１  同期部
６０２  実行部
６０３  時刻設定部
６０４  取得部
１１００  実行処理管理テーブル
１２００  バッファ管理テーブル
ＳＷ  ソフトウェア
ＨＷ  ハードウェア
ｐ  プロセッサ
【図１】
2015022544.tif 000003
【図２】
2015022544.tif 000004
【図３】
2015022544.tif 000005
【図４】
2015022544.tif 000006
【図５】
2015022544.tif 000007
【図６】
2015022544.tif 000008
【図７】
2015022544.tif 000009
【図８】
2015022544.tif 000010
【図９】
2015022544.tif 000011
【図１０】
2015022544.tif 000012
【図１１】
2015022544.tif 000013
【図１２】
2015022544.tif 000014
【図１３】
2015022544.tif 000015
【図１４】
2015022544.tif 000016
【図１５】
2015022544.tif 000017
【図１６】
2015022544.tif 000018