(58)【調査した分野】(Int.Cl.,DB名)
プロセッサによるソフトウェアの実行をシミュレートする第1シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第2シミュレーションと、の協調動作を制御するコンピュータが、
前記第2シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第1シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第1シミュレーションと前記第2シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第2シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第1シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御方法。
プロセッサによるソフトウェアの実行をシミュレートする第1シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第2シミュレーションと、の協調動作を制御するコンピュータに、
前記第2シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第1シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第1シミュレーションと前記第2シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第2シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第1シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる、
処理を実行させることを特徴とするシミュレーション制御プログラム。
プロセッサによるソフトウェアの実行をシミュレートする第1シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第2シミュレーションと、の協調動作を制御するコンピュータを有するシミュレーション制御装置であって、
前記コンピュータが、
前記第2シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第1シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第1シミュレーションと前記第2シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第2シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第1シミュレーションにおけるシミュレーション時刻が、取得した前記シミュレーション時刻となった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御装置。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、本発明にかかるシミュレーション制御方法、シミュレーション制御プログラム、およびシミュレーション制御装置の実施の形態を詳細に説明する。
【0011】
図1は、本発明にかかるシミュレーション制御装置による一動作例を示す説明図である。シミュレーション制御装置100は、ソフトウェアシミュレータ101による第1シミュレーションと、ハードウェアシミュレータ102による第2シミュレーションと、の協調動作を制御するコンピュータを有する装置である。また、シミュレーション制御装置100は、協調シミュレーションプログラムを実行する装置であってもよい。シミュレーション制御装置100は、ソフトウェアシミュレータ101と、ハードウェアシミュレータ102と、を同期させる。ここで、ソフトウェアシミュレータ101と、ハードウェアシミュレータ102と、を同期させるとは、シミュレータ間のシミュレーション時刻の同期を行うことと、シミュレータ間のデータの同期を行うことを示す。これにより、ソフトウェアシミュレータ101と、ハードウェアシミュレータ102と、が協調動作することができ、シミュレーション対象システムをシミュレーションすることができる。
図1の例では、ソフトウェアシミュレータ101による第1シミュレーションと、ハードウェアシミュレータ102による第2シミュレーションと、をシミュレーション制御装置100が実行している。これに限らず、いずれか一方のシミュレーションまたは両方のシミュレーションをシミュレーション制御装置100がアクセス可能な他の装置が実行してもよい。
【0012】
ソフトウェアシミュレータ101は、例えば、プロセッサpによる検証対象となるソフトウェアSWの実行をシミュレーションする機能を有する。例えば、ソフトウェアシミュレータ101としては、ISS(Instruction Set Simulator)が挙げられる。ハードウェアシミュレータ102は、例えば、プロセッサpがアクセス可能なハードウェアHWの動作をシミュレーションする機能を有する。例えば、ハードウェアシミュレータ102としては、論理シミュレータが挙げられる。
図1の例では、ハードウェアHWは1つであるが、複数あってもよい。また、ここでは、ハードウェアシミュレータ102は、1つを例に挙げているが、複数であってもよい。
【0013】
ソフトウェアプログラムをソフトウェアシミュレータ101が実行することにより、ソフトウェアモデルSWMが実現される。ソフトウェアプログラムは、C言語、またはC++言語といったプログラム言語で記述される。ハードウェアHWの機能を表すプログラムをハードウェアシミュレータ102が実行することにより、ハードウェアモデルHWMが実現される。ハードウェアHWの機能を表すプログラムは、ハードウェア記述言語やC言語やC++言語などで記述される。
【0014】
シミュレーション制御装置100は、第2シミュレーションにおけるシミュレーション時刻が止まっている状態で各処理を行う。シミュレーション制御装置100は、第1シミュレーションにおいてプロセッサpからハードウェアHWへの送信処理がシミュレートされると、第1シミュレーションと第2シミュレーションとを同期させる。これにより、第2シミュレーションのシミュレーション時刻が第1シミュレーションのシミュレーション時刻t0となる。
【0015】
シミュレーション制御装置100は、同期させたシミュレーション時刻と、送信処理の種別と、に基づく、つぎの動作が第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得する。送信処理の種別とは、動作されるハードウェアモデルHWMの種類やハードウェアモデルHWMに与える引数などである。つぎの動作とは、同期させたシミュレーション時刻に第2シミュレーションにおいてシミュレートされたハードウェアHWの送信処理に応じた動作のつぎの動作である。
図1の例では、シミュレーション制御装置100は、ハードウェアシミュレータ102を実行することにより、第2シミュレーションを行っているため、第2シミュレーションにおいてシミュレーション時刻を取得する。ハードウェアシミュレータ102がシミュレーション制御装置100と異なる装置によって実行される場合、シミュレーション制御装置100が、当該異なる装置から当該シミュレーション時刻を取得する。ここでは、シミュレーション時刻t0のN秒後として、シミュレーション時刻t1が取得される。
【0016】
シミュレーション制御装置100は、第1シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻t1となった場合に、第1シミュレーションと第2シミュレーションとを同期させる。
【0017】
これにより、シミュレーション制御装置100によれば、シミュレーションの効率の向上を図ることができる。なお、シミュレーションの効率とは、シミュレーションの速度に対するシミュレーションの精度である。
【0018】
(シミュレーション制御装置100のハードウェアHW構成例)
図2は、実施の形態にかかるシミュレーション制御装置のハードウェア構成例を示すブロック図である。
図2において、シミュレーション制御装置100は、CPU(Central Processing Unit)201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、ディスクドライブ204と、ディスク205と、を有している。シミュレーション制御装置100は、I/F(Inter/Face)206と、入力装置207と、出力装置208と、を有している。また、各部はバス200によってそれぞれ接続されている。
【0019】
ここで、CPU201は、シミュレーション制御装置100の全体の制御を司るプロセッサである。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。ディスクドライブ204は、CPU201の制御にしたがってディスク205に対するデータのリード/ライトを制御する。ディスク205は、ディスクドライブ204の制御で書き込まれたデータを記憶する。ディスク205としては、磁気ディスク、光ディスクなどが挙げられる。
【0020】
I/F206は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F206は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F206には、例えばモデムやLANアダプタなどを採用することができる。
【0021】
入力装置207は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置207は、カメラから画像や動画を取り込むこともできる。また、入力装置207は、マイクから音声を取り込むこともできる。出力装置208は、CPU201の指示により、データを出力するインターフェースである。出力装置208には、ディスプレイやプリンタが挙げられる。
【0022】
(実施例1)
実施例1では、ハードウェアシミュレータ102のシミュレーション時刻が止まっている状態で、ハードウェアシミュレーションにおけるハードウェアモデルHWMのつぎの動作のシミュレーション時刻を取得する。そして、実施例1では、ソフトウェアシミュレータ101のシミュレーション時刻が取得したシミュレーション時刻になった時に、2つのシミュレータを同期させる。これにより、シミュレーションの効率を向上させることができる。
【0023】
図3は、実行SWモデル管理テーブル例を示す説明図である。実行SWモデル管理テーブル300は、ソフトウェアシミュレータ101において特定のシミュレーション時刻に実行するソフトウェアモデルSWMを管理するためのテーブルである。実行SWモデル管理テーブル300は、例えば、実行時刻と、実行SWモデル群と、のフィールドを有する。各フィールドに情報が設定されることにより、レコード(例えば、301−1〜301−3など)として記憶される。例えば、実行SWモデル管理テーブル300は、シミュレーション時刻の順番に管理される。実行SWモデル管理テーブル300は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0024】
実行時刻のフィールドには、ソフトウェアシミュレータ101によって実行されるシミュレーション時刻が設定される。実行SWモデル群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行されるソフトウェアモデルSWMの識別情報が設定される。
【0025】
図4は、実行HWSim管理テーブル例を示す説明図である。実行HWSim管理テーブル400は、例えば、特定のシミュレーション時刻にソフトウェアシミュレータ101とハードウェアシミュレータ102とを同期させることを管理するためのテーブルである。また、実行HWSim管理テーブル400は、例えば、同期させることによってハードウェアシミュレータ102によって実行されるハードウェアモデルHWMを管理するためのテーブルである。実行HWSim管理テーブル400は、例えば、同期時刻と、同期HWモデル群と、のフィールドを有する。各フィールドに情報が設定されることにより、レコード(例えば、401−1〜401−3など)として記憶される。例えば、実行HWSim管理テーブル400は、シミュレーション時刻の順番に管理される。実行HWSim管理テーブル400は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0026】
同期時刻のフィールドには、ハードウェアシミュレータ102とソフトウェアシミュレータ101とを同期されるシミュレーション時刻が設定される。同期HWモデル群のフィールドには、ハードウェアシミュレータ102とソフトウェアシミュレータ101とを同期させることにより、ハードウェアシミュレータ102によって実行されるハードウェアモデルHWMの識別情報が設定される。
【0027】
図5は、実行HWモデル管理テーブル例を示す説明図である。実行HWモデル管理テーブル500は、例えば、特定のシミュレーション時刻にハードウェアシミュレータ102によって実行されるハードウェアモデルHWMを管理するためのテーブルである。実行HWモデル管理テーブル500は、例えば、実行時刻と、実行HWモデル群と、のフィールドを有する。各フィールドに情報が設定されることにより、レコード(例えば、501−1〜501−3など)として記憶される。例えば、実行HWモデル管理テーブル500は、シミュレーション時刻の順番に管理される。実行HWモデル管理テーブル500は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0028】
実行時刻のフィールドには、ハードウェアシミュレータ102によって実行されるシミュレーション時刻が設定される。実行HWモデル群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行されるハードウェアモデルHWMの識別情報が設定される。
【0029】
(シミュレーション制御装置100の機能的構成例)
図6は、シミュレーション制御装置の機能的構成例を示すブロック図である。シミュレーション制御装置100は、ハードウェアシミュレータ102と、ソフトウェアシミュレータ101と、を有する。各シミュレータの処理は、例えば、CPU201がアクセス可能な記憶装置に記憶されたプログラムにコーディングされている。そして、CPU201が記憶装置からプログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、例えば、RAM203、ディスク205などの記憶装置に記憶される。
【0030】
ソフトウェアシミュレータ101は、上述したように、例えば、プロセッサpによる検証対象となるソフトウェアSWの実行をシミュレーションする機能を有する。例えば、ソフトウェアシミュレータ101としては、ISSが挙げられる。また、ソフトウェアシミュレータ101は、同期部601−SWと、実行部602−SWと、時刻設定部603−SWと、取得部604−SWと、を有する。
【0031】
時刻設定部603−SWは、ソフトウェアシミュレーションにおけるシミュレーション時刻を実行SWモデル管理テーブル300と実行HWSim管理テーブル400に設定された実行時刻の中で最も早い実行時刻に設定する。そして、実行部602−SWは、実行SWモデル管理テーブル300から、現在のシミュレーション時刻と同一の実行時刻が設定されたレコード301を抽出する。実行部602−SWは、抽出したレコード301に設定された識別情報が示すソフトウェアモデルSWMを実行する。取得部604−SWは、ソフトウェアモデルSWMの実行結果に応じて当該ソフトウェアモデルSWMをつぎに実行するシミュレーション時刻を取得する。そして、取得部604−SWは、取得したシミュレーション時刻とソフトウェアモデルSWMの識別情報とを関連付けて実行SWモデル管理テーブル300に登録する。
【0032】
また、取得部604−SWは、実行されたソフトウェアモデルSWMの動作がハードウェアモデルHWMへの送信処理である場合、関連付けて実行HWSim管理テーブル400に登録する。具体的には、取得部604−SWは、現在のシミュレーション時刻と送信先となるハードウェアモデルHWMの識別情報とを関連付けて実行HWSim管理テーブル400に登録する。
【0033】
また、現在のシミュレーション時刻において実行させるソフトウェアモデルSWMの実行がない場合、同期部601−SWは、実行HWSim管理テーブル400から、現在のシミュレーション時刻と同一の同期時刻が設定されたレコード401を抽出する。同期部601−SWは、抽出したレコード401に設定された識別情報が示すハードウェアモデルHWMへの送信処理を行うために、ハードウェアシミュレータ102に対して同期処理を行う。
【0034】
ハードウェアシミュレータ102は、上述したように、例えば、プロセッサpがアクセス可能なハードウェアHWの動作をシミュレーションする機能を有する。例えば、ハードウェアシミュレータ102としては、論理シミュレータが挙げられる。また、ハードウェアシミュレータ102は、同期部601−HWと、実行部602−HWと、時刻設定部603−HWと、取得部604−HWと、を有する。
【0035】
まず、時刻設定部603−HWは、同期部601−HWによってソフトウェアシミュレータ101からの同期処理がなければ、シミュレーション時刻を止めた状態にする。同期部601−HWは、ソフトウェアシミュレータ101からの同期処理を検出すると、ソフトウェアシミュレータ101のシミュレーション時刻と同一のシミュレーション時刻となるように時刻設定部603−HWにシミュレーション時刻を設定させる。
【0036】
時刻設定部603−HWは、同期部601−HWによって同期処理が検出されると、ソフトウェアシミュレータ101のシミュレーション時刻と同一のシミュレーション時刻に設定する。実行部602−HWは、同期処理によって受け付けた送信処理において指示されたハードウェアモデルHWMを実行する。
【0037】
また、実行部602−HWは、実行HWモデル管理テーブル500から、現在のシミュレーション時刻と同一の実行時刻が設定されたレコード501を抽出する。実行部602−HWは、抽出したレコード501に設定された識別情報が示すハードウェアモデルHWMを実行する。取得部604−HWは、現在のシミュレーション時刻と、ソフトウェアモデルSWMからの送信処理の種別に基づく、当該ハードウェアモデルHWMをつぎに実行するシミュレーション時刻を取得する。そして、取得部604−HWは、取得したシミュレーション時刻とハードウェアモデルHWMの識別情報とを関連付けて実行HWモデル管理テーブル500に登録する。
【0038】
また、取得部604−HWは、現在のシミュレーション時刻におけるハードウェアモデルHWMの実行が完了すると、実行HWモデル管理テーブル500にあらたに登録されたレコード501と同一内容を実行HWSim管理テーブル400に登録する。ここで、実行HWモデル管理テーブル500への登録、実行HWSim管理テーブル400への登録などを実行予約と称する。同期部601−HWは、実行予約が完了すると、ソフトウェアシミュレータ101からの同期処理を待機する状態となる。
【0039】
そして、同期部601−HWが同期処理を待機する状態となると、ソフトウェアシミュレータ101とハードウェアシミュレータ102との同期が終了する。そのため、時刻設定部603−SWは、ソフトウェアシミュレーションにおけるシミュレーション時刻を実行SWモデル管理テーブル300に設定された実行時刻と実行HWSim管理テーブル400に設定された同期時刻との中で最も早い時刻に設定する。そして、実行部602−SWによって上述したようにソフトウェアモデルSWMが実行され、取得部604−SWによって特定されたシミュレーション時刻に実行させるソフトウェアモデルSWMが実行SWモデル管理テーブル300に登録される。
【0040】
現在のシミュレーション時刻において実行させるソフトウェアモデルSWMが無い場合、同期部601−SWは、実行HWSim管理テーブル400から、現在のシミュレーション時刻と同一の同期時刻が設定されたレコード401を抽出する。同期部601−SWは、抽出したレコード401に設定された識別情報が示すハードウェアモデルHWMへの送信処理を行うために、ハードウェアシミュレータ102に対して同期処理を行う。このように、ハードウェアシミュレータ102からの実行予約によってハードウェアシミュレータ102とソフトウェアシミュレータ101とが同期される。
【0041】
図7は、実施例1にかかるシミュレーション制御装置によって2つのシミュレータを同期させるシーケンス例を示す説明図である。ハードウェアシミュレータ102は、シミュレーション時刻を止めた状態でソフトウェアシミュレータ101からの同期処理を待機する。(1)ソフトウェアシミュレータ101は、ソフトウェアモデルSWMを実行する。(2)ソフトウェアシミュレータ101は、ソフトウェアモデルSWMの実行においてハードウェアモデルHWMへの第1送信処理をシミュレートすると、ハードウェアシミュレータ102に対して同期処理を行う。
【0042】
これにより、(3)ハードウェアシミュレータ102は、ハードウェアシミュレータ102におけるシミュレーション時刻を、ソフトウェアシミュレータ101におけるシミュレーション時刻に設定する。また、ここでは、ハードウェアシミュレータ102は、同期処理により行われた送信処理によって送信された情報を受信する。第1送信処理によって送信された情報を受信するとは、ソフトウェアシミュレータ101から送信された情報をハードウェアシミュレーションにおけるバッファHWBに反映させることを示す。
【0043】
そして、ハードウェアシミュレータ102は、第1送信処理に基づくハードウェアモデルHWMを実行する。つぎに、(4)ハードウェアシミュレータ102は、ハードウェアモデルHWMがつぎに実行されるシミュレーション時刻を取得する。そして、ハードウェアシミュレータ102は、取得したシミュレーション時刻に基づいて実行予約を行い、同期処理を待機する状態になる。
【0044】
つぎに、(5)ソフトウェアシミュレータ101は、シミュレーションを順に進める。そして、(6)ソフトウェアシミュレータ101は、実行予約されたシミュレーション時刻になると、ハードウェアシミュレータ102に対して同期処理を行う。(7)ハードウェアシミュレータ102は、同期処理によって、ハードウェアシミュレータ102におけるシミュレーション時刻をソフトウェアシミュレータ101のシミュレーション時刻にする。そして、(8)ハードウェアシミュレータ102は、ハードウェアモデルHWMの実行において上述した第1送信処理に基づくハードウェアモデルHWMの動作結果をソフトウェアモデルSWMへ送信する第2送信処理をシミュレートする。そして、(9)ソフトウェアシミュレータ101は、当該第2送信処理によって送信された情報を受信する。具体的には、第2送信処理によって送信された情報を受信するとは、ハードウェアシミュレータ102から送信された情報をソフトウェアシミュレーションにおけるバッファSWBに反映させることを示す。
【0045】
図8は、定期的に2つのシミュレータを同期させるシーケンス例を示す説明図である。2つのシミュレータを定期的に同期させる場合、シミュレーション時刻が同期時刻になった時に同期させる。(1)ソフトウェアシミュレータ101は、つぎに同期を行う時刻までシミュレーションを進めている。例えば、(2)ソフトウェアシミュレータ101は、シミュレーション中にハードウェアシミュレータ102へのソフトウェアモデルSWMからハードウェアモデルHWMへの第1送信処理をシミュレートする。そして、(3)ソフトウェアシミュレータ101は、つぎに同期を行う時刻までシミュレーションを進める。(4)同期時刻である1secになると、ソフトウェアシミュレータ101とハードウェアシミュレータ102とが同期することにより、ソフトウェアシミュレータ101によってシミュレートされた第1送信処理がハードウェアシミュレータ102によって反映される。
【0046】
つぎに、(5)ハードウェアシミュレータ102は、第1送信処理に応じた動作をシミュレートし、当該動作の結果を送信する第2送信処理をシミュレートする。そして、ハードウェアシミュレータ102は、つぎの同期時刻までシミュレーションを進める。(6)同期時刻である2secになると、ソフトウェアシミュレータ101とハードウェアシミュレータ102とが同期することにより、ハードウェアシミュレータ102によってシミュレートされた第2送信処理がソフトウェアシミュレータ101によって反映される。
【0047】
図8に示すように、一定間隔で2つのシミュレータを同期させる場合、同期時刻のタイミングでしかシミュレータ間でデータが同期できないため、送信処理などの通信が待機させられ、通信遅延が発生し、シミュレーション精度が低下する。また、送信処理がシミュレートされていない場合であっても同期時刻になると、同期が行われるため、シミュレーション速度が低下する。これに対して、実施例1にかかるシミュレーション制御装置100は、ハードウェアシミュレータ102のシミュレーション時刻を止めておく。そして、実施例1にかかるシミュレーション制御装置100は、ソフトウェアモデルSWMからの送信処理に基づくハードウェアモデルHWMの動作のつぎの動作のシミュレーション時刻を特定する。そして、実施例1にかかるシミュレーション制御装置100は、ソフトウェアシミュレータ101のシミュレーション時刻が取得したシミュレーション時刻になった時にソフトウェアシミュレータ101とハードウェアシミュレータ102とを同期させる。これにより、シミュレーションの効率を向上させることができる。
【0048】
(実施例1にかかる各シミュレータが行う処理手順)
図9は、実施例1にかかるソフトウェアシミュレータが行う処理手順の一例を示すフローチャートである。まず、ソフトウェアシミュレータ101は、実行SWモデル管理テーブル300に基づいて、現在のシミュレーション時刻に実行されるソフトウェアモデルSWMのうち、未実行のソフトウェアモデルSWMがあるか否かを判断する(ステップS901)。未実行のソフトウェアモデルSWMがある場合(ステップS901:Yes)、ソフトウェアシミュレータ101は、現在のシミュレーション時刻に実行される未実行のソフトウェアモデルSWMから1つのソフトウェアモデルSWMを選択する(ステップS902)。
【0049】
ソフトウェアシミュレータ101は、選択したソフトウェアモデルSWMを実行する(ステップS903)。ここで、ソフトウェアシミュレータ101は、実行が完了したソフトウェアモデルSWMに関する情報を実行SWモデル管理テーブル300から削除する。そして、ソフトウェアシミュレータ101は、実行予約をし(ステップS904)、ステップS901へ戻る。ここでの実行予約は、ハードウェアモデルHWMへの送信処理についての実行HWSim管理テーブル400への登録と、実行したソフトウェアモデルSWMをつぎに実行させる場合についての実行SWモデル管理テーブル300への登録と、がある。
【0050】
一方、ステップS901において、未実行のソフトウェアモデルSWMがない場合(ステップS901:No)、ソフトウェアシミュレータ101は、現在のシミュレーション時刻にハードウェアモデルHWMを実行させる予約があるか否かを判断する(ステップS905)。予約の有無は、現在のシミュレーション時刻を同期時刻として記憶されたレコード401が実行HWSim管理テーブル400にあるか否かによって判断される。
【0051】
予約がない場合(ステップS905:No)、ソフトウェアシミュレータ101は、ステップS907へ移行する。予約がある場合(ステップS905:Yes)、ソフトウェアシミュレータ101は、ハードウェアシミュレータ102に対して同期処理を行い(ステップS906)、ステップS907へ移行する。
【0052】
そして、ソフトウェアシミュレータ101は、実行HWSim管理テーブル400または実行HWモデル管理テーブル500に登録された実行時刻のうち、現在のシミュレーション時刻に最も近い実行時刻までシミュレーション時刻を進める(ステップS907)。つぎに、ソフトウェアシミュレータ101は、ステップS902へ移行する。
【0053】
図10は、実施例1にかかるハードウェアシミュレータが行う処理手順の一例を示すフローチャートである。ハードウェアシミュレータ102は、実行HWモデル管理テーブル500に基づいて、現在のシミュレーション時刻に実行されるハードウェアモデルHWMのうち、未実行のハードウェアモデルHWMがあるか否かを判断する(ステップS1001)。未実行のハードウェアモデルHWMがある場合(ステップS1001:Yes)、ハードウェアシミュレータ102は、現在のシミュレーション時刻に実行される未実行のハードウェアモデルHWMから1つのハードウェアモデルHWMを選択する(ステップS1002)。
【0054】
ハードウェアシミュレータ102は、選択したハードウェアモデルHWMを実行する(ステップS1003)。ここで、ハードウェアシミュレータ102は、実行が完了したハードウェアモデルHWMに関する情報を実行HWモデル管理テーブル500から削除する。そして、ハードウェアシミュレータ102は、実行予約をし(ステップS1004)、ステップS1001へ戻る。ここでの実行予約は、例えば、実行したハードウェアモデルHWMの動作結果をソフトウェアモデルSWMへ送信する送信処理についての実行HWSim管理テーブル400への登録がある。また、ここでの実行予約は実行したハードウェアモデルHWMをつぎに実行させる場合についての実行HWモデル管理テーブル500への登録がある。
【0055】
一方、ステップS1001において、未実行のハードウェアモデルHWMがない場合(ステップS1001:No)、ハードウェアシミュレータ102は、実行予約を行う(ステップS1005)。ここでの実行予約は、例えば、実行HWモデル管理テーブル500に登録されたレコード501のうち、実行HWSim管理テーブル400に未登録のレコード501を、実行HWSim管理テーブル400に登録することである。そして、ハードウェアシミュレータ102は、ソフトウェアシミュレータ101からの同期処理を待機する(ステップS1006)。
【0056】
ハードウェアシミュレータ102は、シミュレーション時刻をソフトウェアシミュレータ101からの同期処理が行われると、ソフトウェアシミュレータ101のシミュレーション時刻まで進め(ステップS1007)、ステップS1002へ移行する。
【0057】
(実施例2)
実施例2では、ハードウェアモデルHWMのつぎの動作が動作結果をソフトウェアモデルSWMへ送信する送信処理である場合に、事前に動作の結果を記憶部に記憶させておく。そして、実施例2では、ソフトウェアシミュレータ101が取得したシミュレーション時刻になった場合に、同期せずに、記憶部に記憶された動作の結果をソフトウェアシミュレータ101に反映させる。これにより、ソフトウェアシミュレータ101とハードウェアシミュレータ102とを同期させる回数を低減させることができる。したがって、シミュレーションの効率をより向上させることができる。
【0058】
また、実施例2では、実施例1と同一の機能や構成については同一符号を付し、詳細な説明を省略する。まず、実施例2にかかるシミュレーション制御装置100で用いられる各テーブル例について説明する。
【0059】
図11は、実行処理管理テーブル例を示す説明図である。実行処理管理テーブル1100は、例えば、特定のシミュレーション時刻にハードウェアシミュレータ102によって実行されるハードウェアモデルHWMやハードウェアシミュレータ102によって実行される割り込み処理を管理するためのテーブルである。実行処理管理テーブル1100は、例えば、実行時刻と、実行HWモデル群と、実行ISR(Interrupt Service Routine)群、SWフラグのフィールドを有する。各フィールドに情報が設定されることにより、レコード(例えば、1101−1〜1101−6など)として記憶される。例えば、実行処理管理テーブル1100は、シミュレーション時刻の順番に管理される。実行処理管理テーブル1100は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0060】
実行時刻のフィールドには、ハードウェアシミュレータ102によって実行されるシミュレーション時刻が設定される。実行HWモデル群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行されるハードウェアモデルHWMの識別情報が設定される。実行ISR群のフィールドには、実行時刻のフィールドに設定されたシミュレーション時刻に実行される割り込み処理の識別情報が設定される。SWフラグのフィールドには、割り込み処理であるか否かの情報が設定される。例えば、SWフラグのフィールドに1が設定される場合、割り込み処理であることを示し、SWフラグのフィールドに0が設定される場合、ハードウェアモデルHWMの実行であることを示す。
【0061】
図12は、バッファ管理テーブル例を示す説明図である。バッファ管理テーブル1200は、特定のシミュレーション時刻にソフトウェアシミュレータ101における各バッファの値を管理するためのテーブルである。バッファ管理テーブル1200は、反映時刻、バッファ値群のフィールドを有する。各フィールドに情報が設定されることにより、レコード(例えば、1201−1〜1201−3など)として記憶される。例えば、バッファ管理テーブル1200は、シミュレーション時刻の順番に管理される。バッファ管理テーブル1200は、例えば、RAM203やディスク205などの記憶装置に記憶される。
【0062】
反映時刻のフィールドには、バッファの値を反映させるシミュレーション時刻が設定される。バッファ値群のフィールドには、割り込みフラグの識別情報と、割り込みフラグに反映させる値と、が設定される。例えば、割り込みフラグの識別情報と、実行処理管理テーブル1100に設定された割り込み処理の識別情報と、は対応関係がある。例えば、割り込みフラグ1に1が設定されると、割り込み処理ISRが発生する。
【0063】
また、実行SWモデル管理テーブル300と、実行HWSim管理テーブル400と、については、実施例1と同様の内容であるため、詳細な説明を省略する。
【0064】
取得部604−HWは、シミュレーション時刻を取得する処理の後に、つぎの動作が送信処理に応じた動作の結果をハードウェアHWからプロセッサpへ送信する送信処理であるか否かを判断する。取得部604−HWは、当該送信処理であると判断された場合に、動作の結果と、動作の結果が格納されるプロセッサpの記憶領域を示す領域情報と、取得したシミュレーション時刻と、を関連付けて記憶部に記憶させる。記憶部は、例えば、上述したバッファ管理テーブル1200である。ここでの領域情報が割り込みフラグの識別情報であり、動作の結果は、バッファの値であり、取得したシミュレーション時刻が反映時刻である。送信処理に応じた動作の結果をハードウェアHWからプロセッサpへ送信する送信処理とは、例えば、割り込み処理である。具体的に、取得部604−HWは、つぎの動作が割り込み処理である場合、取得したシミュレーション時刻を反映時刻とし、割り込み処理に応じた割り込みフラグの識別情報および割り込みフラグの値をバッファ値群としてバッファ管理テーブル1200に登録する。そして、取得部604−HWは、つぎの動作が割り込み処理である場合に、取得したシミュレーション時刻と、割り込み処理を示す識別情報と、SWフラグとして1と、を実行処理管理テーブル1100に設定する。
【0065】
また、取得部604−HWは、現在のシミュレーション時刻におけるハードウェアモデルHWMの実行が完了すると、実行処理管理テーブル1100にあらたに登録されたレコード1101について、実行HWSim管理テーブル400に登録する。または、取得部604−HWは、現在のシミュレーション時刻におけるハードウェアモデルHWMの実行が完了すると、実行処理管理テーブル1100にあらたに登録されたレコード1101について、実行SWモデル管理テーブル300に登録する。具体的に、取得部604−HWは、あらたに登録されたレコード1101のうち、SWフラグが0であるレコード1101については、同期時刻と同期HWモデル群との組みを実行HWSim管理テーブル400に登録する。または、取得部604−HWは、あらたに登録されたレコード1101のうち、SWフラグが1であるレコード1101については、実行時刻と実行ISR群との組みを実行SWモデル管理テーブル300に登録する。ここで、実施例2では、実行SWモデル管理テーブル300への登録、バッファ管理テーブル1200への登録、実行HWSim管理テーブル400への登録、実行SWSim管理テーブルへの登録などを実行予約と称する。同期部601−HWは、実行予約が完了すると、ソフトウェアシミュレータ101からの同期処理を待機する状態となる。
【0066】
つぎの動作が割り込み処理であって、ソフトウェアシミュレータ101におけるシミュレーション時刻が取得したシミュレーション時刻となった場合に、同期部601−SWは、同期させる処理を行わない。そして、実行部602−SWは、取得したシミュレーション時刻に関連付けて記憶部に記憶された領域情報が示すソフトウェアシミュレーションにおける記憶領域に、取得したシミュレーション時刻に関連付けて記憶部に記憶された動作の結果を反映させる。つぎに、実行部602−SWは、動作の結果を受信する受信処理をシミュレートする。これにより、実行部602−SWは割り込みを実行する。具体的には、割り込みは、割り込みハンドラを実行することにより処理される。
【0067】
具体的には、時刻設定部603−SWによってシミュレーション時刻が進められると、実行部602−SWは、バッファ管理テーブル1200から、現在のシミュレーション時刻を反映時刻とするレコード1201を抽出する。そして、実行部602−SWは、ソフトウェアシミュレーションにおけるバッファの値に、抽出したレコード1201に設定されたバッファの値を反映させる。つぎに、実行部602−SWは、実行SWモデル管理テーブル300から、現在のシミュレーション時刻を実行時刻とするレコード301を抽出する。例えば、現在のシミュレーション時刻を反映時刻とするレコード1201がバッファ管理テーブル1200にある場合には、現在のシミュレーション時刻を実行時刻とするレコード301が実行SWモデル管理テーブル300にある。そのため、実行部602−SWは、抽出したレコード301に基づいて割り込み処理を実行する。これにより、ソフトウェアシミュレータ101とハードウェアシミュレータ102とを同期させずに、ハードウェアモデルHWMからの割り込み処理をシミュレーションさせることができる。
【0068】
図13は、実施例2にかかるシミュレーション制御装置によって2つのシミュレータを同期させるシーケンス例を示す説明図である。ハードウェアシミュレータ102は、シミュレーション時刻を止めた状態でソフトウェアシミュレータ101からの同期処理を待機する。(1)ソフトウェアシミュレータ101は、ソフトウェアモデルSWMを実行する。(2)ソフトウェアシミュレータ101は、ソフトウェアモデルSWMの実行においてハードウェアモデルHWMへの第1送信処理があると、ハードウェアシミュレータ102に対して同期処理を行う。
【0069】
これにより、(3)ハードウェアシミュレータ102は、ハードウェアシミュレータ102におけるシミュレーション時刻を、ソフトウェアシミュレータ101におけるシミュレーション時刻に設定することにより、シミュレーション時刻を進める。そして、ハードウェアシミュレータ102は、第1送信処理に基づくハードウェアモデルHWMを実行する。つぎに、(4)ハードウェアシミュレータ102は、現在のシミュレーション時刻と第1送信処理の種別と、に基づいて、ハードウェアモデルHWMがつぎに実行されるシミュレーション時刻を特定する。そして、ハードウェアモデルHWMのつぎの動作が割り込み処理である場合、(5)ハードウェアシミュレータ102は、割り込み処理に対応するバッファの値をソフトウェアシミュレーションにおけるバッファに反映させるための実行予約を行う。また、(6)ハードウェアシミュレータ102は、割り込み処理をソフトウェアシミュレータ101に実行させるための実行予約を行う。
【0070】
そして、ソフトウェアシミュレータ101は、取得したシミュレーション時刻になると、割り込み処理に対応するソフトウェアシミュレーションにおけるバッファの値を反映させ、割り込み処理を実行する。
【0071】
(実施例2にかかる各シミュレータが行う処理手順)
図14は、実施例2にかかるソフトウェアシミュレータが行う処理手順の一例を示すフローチャートである。まず、ソフトウェアシミュレータ101は、実行SWモデル管理テーブル300に基づいて、現在のシミュレーション時刻に実行されるソフトウェアモデルSWMのうち、未実行のソフトウェアモデルSWMがあるか否かを判断する(ステップS1401)。未実行のソフトウェアモデルSWMがある場合(ステップS1401:Yes)、ソフトウェアシミュレータ101は、現在のシミュレーション時刻に実行される未実行のソフトウェアモデルSWMから1つのソフトウェアモデルSWMを選択する(ステップS1402)。
【0072】
ソフトウェアシミュレータ101は、選択したソフトウェアモデルSWMを実行する(ステップS1403)。ここで、ソフトウェアシミュレータ101は、実行が完了したソフトウェアモデルSWMに関する情報を、実行SWモデル管理テーブル300から削除する。そして、ソフトウェアシミュレータ101は、実行予約をし(ステップS1404)、ステップS1401へ戻る。ここでの実行予約は、ハードウェアモデルHWMへの送信処理についての実行HWSim管理テーブル400への登録と、実行したソフトウェアモデルSWMをつぎに実行させる場合についての実行SWモデル管理テーブル300への登録と、がある。
【0073】
一方、ステップS1401において、未実行のソフトウェアモデルSWMがない場合(ステップS1401:No)、ソフトウェアシミュレータ101は、現在のシミュレーション時刻にハードウェアモデルHWMを実行させる予約があるか否かを判断する(ステップS1405)。予約の有無は、現在のシミュレーション時刻が同期時刻として記憶されたレコード401が実行HWSim管理テーブル400にあるか否かによって判断される。
【0074】
予約がない場合(ステップS1405:No)、ソフトウェアシミュレータ101は、ステップS1407へ移行する。予約がある場合(ステップS1405:Yes)、ソフトウェアシミュレータ101は、ハードウェアシミュレータ102に対して同期処理を行い(ステップS1406)、ステップS1407へ移行する。
【0075】
つぎに、ソフトウェアシミュレータ101は、実行HWSim管理テーブル400または実行SWモデル管理テーブル300に登録された時刻のうち、現在のシミュレーション時刻に最も近い時刻までシミュレーション時刻を進める(ステップS1407)。そして、ソフトウェアシミュレータ101は、バッファ管理テーブル1200において、反映時刻が現在のシミュレーション時刻以前となっているバッファ値群のうち、未反映のバッファがあるか否かを判断する(ステップS1408)。未反映のバッファがある場合(ステップS1408:Yes)、ソフトウェアシミュレータ101は、未反映のバッファを1つ選択してバッファの値を反映し(ステップS1409)、ステップS1408へ戻る。ここでは、反映後のバッファ値群に関する情報は、バッファ管理テーブル1200から削除される。一方、未反映のバッファがない場合(ステップS1408:No)、ソフトウェアシミュレータ101は、ステップS1402へ移行する。
【0076】
図15は、実施例2にかかるハードウェアシミュレータが行う処理手順の一例を示すフローチャートである。ハードウェアシミュレータ102は、実行処理管理テーブル1100に基づいて、現在のシミュレーション時刻に実行されるハードウェアモデルHWMのうち、未実行のハードウェアモデルHWMがあるか否かを判断する(ステップS1501)。未実行のハードウェアモデルHWMがある場合(ステップS1501:Yes)、ハードウェアシミュレータ102は、現在のシミュレーション時刻に実行される未実行のハードウェアモデルHWMから1つのハードウェアモデルHWMを選択する(ステップS1502)。ハードウェアシミュレータ102は、選択したハードウェアモデルHWMを実行する(ステップS1503)。ここで、ハードウェアシミュレータ102は、実行が完了したハードウェアモデルHWMに関する情報を、実行処理管理テーブル1100から削除する。
【0077】
そして、ハードウェアシミュレータ102は、実行予約をし(ステップS1504)、ハードウェアシミュレータ102は、ステップS1501へ戻る。ここでの実行予約とは、実行SWモデル管理テーブル300と実行HWSim管理テーブル400とへの登録のために、実行管理テーブル1100とバッファ管理テーブル1200とへ登録することである。
【0078】
一方、ステップS1501において、未実行のハードウェアモデルHWMがない場合(ステップS1501:No)、ハードウェアシミュレータ102は、ステップS1505へ移行する。ハードウェアシミュレータ102は、あらたに実行処理管理テーブル1100に登録されたハードウェアモデルHWMの実行または割り込み処理について、すべての実行予約を完了したか否かを判断する(ステップS1505)。実行予約が完了していないと判断された場合(ステップS1505:No)、ハードウェアシミュレータ102は、ステップS1506へ移行する。ハードウェアシミュレータ102は、実行処理管理テーブル1100に登録されたレコード1101のうち、実行予約が完了していないいずれかのレコード1101を選択し、選択したレコード1101のSWフラグが1であるか否かを判断する(ステップS1506)。
【0079】
SWフラグが1であると判断された場合(ステップS1506:Yes)、ハードウェアシミュレータ102は、ISR実行予約を行い(ステップS1507)、ステップS1505へ戻る。SWフラグが1でないと判断された場合(ステップS1506:No)、ハードウェアシミュレータ102は、実行HWSim管理テーブル400に実行予約を行い(ステップS1508)、ステップS1505へ戻る。
【0080】
ステップS1505において、実行予約が完了したと判断された場合(ステップS1505:Yes)、ハードウェアシミュレータ102は、ソフトウェアシミュレータ101からの同期処理を待機する(ステップS1509)。
【0081】
ハードウェアシミュレータ102は、シミュレーション時刻をソフトウェアシミュレータ101からの同期処理が行われると、ソフトウェアシミュレータ101のシミュレーション時刻まで進め(ステップS1510)、ステップS1502へ移行する。
【0082】
図16は、
図15に示したISR実行予約処理手順例を示す説明図である。ハードウェアシミュレータ102は、選択したレコード1101の実行時刻とレコード1101の実行ISR群とを実行SWモデル管理テーブル300へ登録する(ステップS1601)。ハードウェアシミュレータ102は、選択したレコード1101を実行処理管理テーブル1100から削除し(ステップS1602)、一連の処理を終了する。
【0083】
また、上述した実施例1および実施例2ではハードウェアシミュレータ102が1つしかない例を挙げたが、これに限らず、複数あってもよい。例えば、異なるハードウェアシミュレータ102が複数ある場合、実行HWSim管理テーブル400には、さらに、ハードウェアモデルHWMを実行するハードウェアシミュレータ102の識別情報のフィールドを有することとする。
【0084】
以上説明したように、実施例1にかかるシミュレーション制御装置100は、ハードウェアシミュレーションのシミュレーション時刻が止まっている状態にする。そして、シミュレーション制御装置100は、ハードウェアシミュレーションにおけるハードウェアモデルHWMのつぎの動作のシミュレーション時刻を取得する。そして、実施例1にかかるシミュレーション制御装置100は、ソフトウェアシミュレータ101のシミュレーション時刻が取得したシミュレーション時刻になった時に、2つのシミュレータを同期させる。これにより、シミュレーションの効率を向上させることができる。
【0085】
また、実施例2にかかるシミュレーション制御装置100は、ハードウェアシミュレーションにおけるハードウェアHWのつぎの動作が割り込み処理である場合、取得したシミュレーション時刻に反映させる割り込みフラグの値を記憶部に記憶させておく。実施例2にかかるシミュレーション制御装置100は、ソフトウェアシミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻になった場合、記憶部の記憶内容によりソフトウェアシミュレーションにおける割り込みフラグの値を反映させる。そして、実施例2にかかるシミュレーション制御装置100は、ソフトウェアシミュレーションにおいて割り込み処理をシミュレートさせる。これにより、ソフトウェアシミュレーションとハードウェアシミュレーションとを同期させる回数を低減させることができ、シミュレーションの高速化を図ることができる。したがって、シミュレーションの効率を向上させることができる。
【0086】
また、実施例1または実施例2にかかるシミュレーション制御装置100は、実行中のハードウェアシミュレーションにおいてつぎの動作のシミュレーション時刻を取得する。このように、ハードウェアシミュレーションにおいて特定したつぎの動作のシミュレーション時刻を利用してシミュレーションの効率を向上させることができる。
【0087】
また、実施例1または実施例2にかかるシミュレーション制御装置100は、実行中のソフトウェアシミュレーションにおいてソフトウェアシミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったか否かを判断する。これにより、ソフトウェアシミュレーションにおけるシミュレーション時刻の制御を容易化することができる。
【0088】
なお、本実施の形態で説明したシミュレーション制御方法は、予め用意されたシミュレーション制御プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本シミュレーション制御プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、シミュレーション制御プログラムは、インターネット等のネットワークNETを介して配布してもよい。
【0089】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0090】
(付記1)プロセッサによるソフトウェアの実行をシミュレートする第1シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第2シミュレーションと、の協調動作を制御するコンピュータが、
前記第2シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第1シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第1シミュレーションと前記第2シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第2シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第1シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御方法。
【0091】
(付記2)前記コンピュータが、
前記シミュレーション時刻を取得する処理の後に、前記つぎの動作が前記送信処理に応じた動作の結果を前記ハードウェアから前記プロセッサへ送信する動作である場合に、前記動作の結果と、前記動作の結果が格納される前記プロセッサの記憶領域を示す領域情報と、特定した前記シミュレーション時刻と、を関連付けて記憶部に記憶させ、
前記第1シミュレーションにおけるシミュレーション時刻が特定した前記シミュレーション時刻になった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる処理を行わず、特定した前記シミュレーション時刻に関連付けて前記記憶部に記憶された前記領域情報が示す前記第1シミュレーションにおける前記記憶領域に、特定した前記シミュレーション時刻に関連付けて前記記憶部に記憶された前記動作の結果を反映させ、前記第1シミュレーションにおいて前記動作の結果を受信する受信処理をシミュレートさせる、
処理を実行することを特徴とする付記1に記載のシミュレーション制御方法。
【0092】
(付記3)前記コンピュータが、少なくとも前記第2シミュレーションを実行し、
前記シミュレーション時刻を取得する処理は、前記第2シミュレーションにおいて前記シミュレーション時刻を取得することを特徴とする付記1または2に記載のシミュレーション制御方法。
【0093】
(付記4)前記コンピュータが、少なくとも前記第1シミュレーションを実行し、
前記第1シミュレーションと前記第2シミュレーションとを同期させる処理では、前記第1シミュレーションにおいて前記第1シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったか否かを判断し、前記第1シミュレーションにおいて前記第1シミュレーションにおけるシミュレーション時刻が取得したシミュレーション時刻となったと判断した場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させることを特徴とする付記1〜3のいずれか一つに記載のシミュレーション制御方法。
【0094】
(付記5)プロセッサによるソフトウェアの実行をシミュレートする第1シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第2シミュレーションと、の協調動作を制御するコンピュータに、
前記第2シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第1シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第1シミュレーションと前記第2シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第2シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第1シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる、
処理を実行させることを特徴とするシミュレーション制御プログラム。
【0095】
(付記6)プロセッサによるソフトウェアの実行をシミュレートする第1シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第2シミュレーションと、の協調動作を制御するコンピュータを有するシミュレーション制御装置であって、
前記コンピュータが、
前記第2シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第1シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第1シミュレーションと前記第2シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第2シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第1シミュレーションにおけるシミュレーション時刻が、取得した前記シミュレーション時刻となった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる、
処理を実行することを特徴とするシミュレーション制御装置。
【0096】
(付記7)プロセッサによるソフトウェアの実行をシミュレートする第1シミュレーションと、前記プロセッサがアクセス可能なハードウェアの動作をシミュレートする第2シミュレーションと、の協調動作を制御するコンピュータに、
前記第2シミュレーションにおけるシミュレーション時刻が止まっている状態で、
前記第1シミュレーションにおいて前記プロセッサから前記ハードウェアへの送信処理がシミュレートされると、前記第1シミュレーションと前記第2シミュレーションのシミュレーション時刻を同期させ、
前記同期させたシミュレーション時刻に前記第2シミュレーションにおいてシミュレートされた前記ハードウェアの前記送信処理に応じた動作のつぎの動作であって、前記同期させたシミュレーション時刻と前記送信処理の種別とに基づく、つぎの動作が前記第2シミュレーションにおいてシミュレートされるシミュレーション時刻を取得し、
前記第1シミュレーションにおけるシミュレーション時刻が取得した前記シミュレーション時刻となった場合に、前記第1シミュレーションと前記第2シミュレーションとを同期させる、
処理を実行させるシミュレーション制御プログラムを記録したことを特徴とする記録媒体。