(57)【要約】【課題】  ソフトウェアシミュレーションとハードウェアシミュレーションの同期型シミュレーション装置による協調シミュレーションの速度を向上する。【解決手段】  協調動作制御部３００は、ソフトウェアシミュレーション装置１００およびハードウェアシミュレーション装置２００のシミュレーション動作を制御し、同期情報の通信を行うとともに同期情報の同期条件を判定する。その結果に基づき、ソフトウェアシミュレーション装置１００およびハードウェアシミュレーション装置２００に動作サイクル数を設定する。同期条件が不成立の時に、２以上の動作サイクル数を設定してシミュレーション動作させ、通信回数を減らして、協調シミュレーションを高速化する。【選択図】  図１
2008065640.tif 000002
【特許請求の範囲】
【請求項１】
動作サイクル数が指定可能な第１のシミュレーション手段と、
動作サイクル数が指定可能な第２のシミュレーション手段と、
前記第１および第２のシミュレーション動作を制御する制御情報と、前記第１および第２
のシミュレーションの同期情報を互いに通信するように制御して同期制御するシミュレー
ション制御手段とを備え、
前記シミュレーション制御手段は、前記同期情報の同期条件が成立する時は前記第１およ
び第２のシミュレーション手段の動作サイクル数を第１サイクル値に設定し、前記同期条
件が成立しない時は前記第１および第２のシミュレーション手段の動作サイクル数の少な
くとも一方を前記第１サイクル値より多い第２サイクル値に設定することを特徴とするシ
ミュレーション装置。
【請求項２】
前記第１のシミュレーション手段がソフトウェアシミュレータであり、前記第２のシミ
ュレーション手段がハードウェアエミュレータであることを特徴とする請求項１に記載の
シミュレーション装置。
【請求項３】
前記第２サイクル値を、前記第１および第２のシミュレーション手段に動作サイクル数
を設定する毎に増加させることを特徴とする請求項１又は請求項２に記載のシミュレーシ
ョン装置。
【請求項４】
前記第１サイクル値又は前記第２サイクル値を前記ソフトウェアシミュレータ上で実行
されるプログラムから設定できることを特徴とする請求項２に記載のシミュレーション装
置。
【請求項５】
動作サイクル数が指定可能な第１および第２のシミュレーション装置をシミュレーショ
ン制御装置の制御により協調動作させるシミュレーション制御方法であって、
前記シミュレーション制御装置は、第１および第２のシミュレーション装置に、同期情
報および制御情報を送信し、
第１および第２のシミュレーション装置は、前記同期情報および制御情報の受信に応答
し、前記同期情報に含まれるノードデータを入力し、前記制御情報に含まれる指定された
動作サイクル数のシミュレーションを行い、シミュレーション動作後に前記同期情報に該
当するノードデータをシミュレーション制御装置に送信し、
シミュレーション制御装置は、受信した前記同期情報の同期条件が成立する時は、前記
第１および第２のシミュレーション装置に設定する次の動作サイクル数を第１サイクル値
とし、同期条件が成立しない時は、前記第１および第２のシミュレーション装置に設定す
る次の動作サイクル数の少なくとも一方を前記第１サイクル値より多い第２サイクル値と
することを特徴とするシミュレーション制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ開発で検証に用いるシミュレーション装置およびそのシミュレーショ
ン制御方法に係り、特に同期型シミュレーションにおいて複数のシミュレーション装置を
協調動作させてシミュレーションを高速化する技術に関する。
【背景技術】
【０００２】
近年、半導体技術の進展により集積度が向上し、１チップ上に搭載できるシステムＬＳ
Ｉが大規模化している。このようなシステムＬＳＩがチップ上に形成された後に、アーキ
テクチャレベルの不具合が発見されると、修正に多くの時間とコストが必要になる問題が
ある。
【０００３】
このため、このようなシステムＬＳＩ開発では、検証済みの既存設計のブロックやモジ
ュールなどを再利用したり、トップダウン設計手法により段階的に検証を行うようにして
、設計品質と開発効率を向上させることが行われている。このシステムレベルの検証では
、システム全体を対象とする検証技術が必要とされるが、シミュレーションによって検証
を行う検証対象システムの回路規模が大きいとシミュレーション時間が増加するため、シ
ミュレーションの高速化技術が求められている。
【０００４】
シミュレーションの高速化では、シミュレーション処理をサイクル精度などとするサイ
クルベースシミュレータや、プログラマブルデバイス（例えば、ＦＰＧＡ（Field Progra
mmable Gate Array））を用いてシミュレーションを行うハードウェアエミュレータ（例
えば、シミュレーションアクセラレータ）などが用いられている。
【０００５】
ハードウェアエミュレータは、ソフトウェアシミュレータに比べ、数桁高速に動作する
が、プログラマブルデバイスの素子数の規模やコストの点から、エミュレートできる回路
規模が限られる。このため、ハードウェアエミュレータとソフトウェアシミュレータとを
協調させてシミュレーションする「ハードウェア・ソフトウェア協調シミュレータ」が提
案されている。
【０００６】
ハードウェアエミュレータとソフトウェアシミュレータとを協調させてシミュレーショ
ンを行う場合でも、一般に、相互の通信速度がそれぞれのシミュレーション速度に比べて
遅いことから、その通信速度がボトルネックになってシミュレーション速度を低下させる
という問題がある。
【０００７】
そこで、ハードウェアエミュレータからソフトウェアシミュレータへ出力される信号の
うち、変化があった信号のみをソフトウェアシミュレータが取り込むことで、通信量を減
らしシミュレーション速度を向上させるという技術が知られている（たとえば、特許文献
１参照。）。
【特許文献１】特開２００５−３３２１６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、前記特許文献１に開示される変化があった信号のみをソフトウェアシミ
ュレータが取り込むことで、通信量を減らして協調シミュレーションを高速化する方法で
は、ハードウェアエミュレータとソフトウェアシミュレータ間の同期をとる必要がある。
このために、ソフトウェアシミュレータからハードウェアエミュレータに対して同期信号
をサイクル毎に送出しなければならないため、その同期信号の通信が毎サイクル発生する
ことから協調シミュレーションの速度が低下する課題があった。
【０００９】
本発明は、上記課題を解決するためになされたもので、ハードウェアエミュレータとソ
フトウェアシミュレータとの間の信号のやりとりがある時は毎サイクル同期通信を行い、
信号のやりとりが無い時は複数サイクルの期間は同期通信を行わないようにして、シミュ
レーション開始から終了までの通信回数を減らすことができるシミュレーション装置およ
びシミュレーション制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の同期型協調シミュレーション装置は、動作サイク
ル数が指定可能な第１のシミュレーション手段と、動作サイクル数が指定可能な第２のシ
ミュレーション手段と、前記第１および第２のシミュレーション動作を制御する制御情報
と、前記第１および第２のシミュレーションの同期情報を互いに通信するように制御して
同期制御するシミュレーション制御手段とを備え、前記シミュレーション制御手段は、前
記同期情報の同期条件が成立する時は前記第１および第２のシミュレーション手段の動作
サイクル数を第１サイクル値に設定し、前記同期条件が成立しない時は前記第１および第
２のシミュレーション手段の動作サイクル数の少なくとも一方を前記第１サイクル値より
多い第２サイクル値に設定することを特徴とする。
【００１１】
また、本発明のシミュレーション制御方法は動作サイクル数が指定可能な第１および第
２のシミュレーション装置をシミュレーション制御装置の制御により協調動作させるシミ
ュレーション制御方法であって、前記シミュレーション制御装置は、第１および第２のシ
ミュレーション装置に、同期情報および制御情報を送信し、第１および第２のシミュレー
ション装置は、前記同期情報および制御情報の受信に応答し、前記同期情報に含まれるノ
ードデータを入力し、前記制御情報に含まれる指定された動作サイクル数のシミュレーシ
ョンを行い、シミュレーション動作後に前記同期情報に該当するノードデータをシミュレ
ーション制御装置に送信し、シミュレーション制御装置は、受信した前記同期情報の同期
条件が成立する時は、前記第１および第２のシミュレーション装置に設定する次の動作サ
イクル数を第１サイクル値とし、同期条件が成立しない時は、前記第１および第２のシミ
ュレーション装置に設定する次の動作サイクル数の少なくとも一方を前記第１サイクル値
より多い第２サイクル値とすることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ハードウェアエミュレータとソフトウェアシミュレータとの間の信号
のやりとりがある時は毎サイクル同期通信を行い、信号のやりとりが無い時は複数サイク
ルの期間は同期通信を行わないようにして、シミュレーション開始から終了までの通信回
数を減らすことができ、協調シミュレーションを高速化することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施例を説明する。
【実施例】
【００１４】
本発明の実施例を、図１乃至図４を参照して説明する。
【００１５】
図１は、実施例に係るソフトウェアシミュレータとハードウェアエミュレータとが協調
してシミュレーション動作する協調シミュレーション装置（以下、協調シミュレータと称
する）の構成を示すブロック図である。図２は、図１の協調シミュレータの主要な構成を
示すブロック図である。図３は、協調シミュレータの主要な制御処理手順を示すフローチ
ャートである。図４は、協調シミュレータの協調動作の様子を示すタイミング図である。
【００１６】
図１に示す協調シミュレータ１は、開発システム全体の機能動作を検証するシミュレー
タで、ソフトウェアシミュレータ１００と、ハードウェアエミュレータ２００と、協調動
作制御部３００から構成される。
【００１７】
ソフトウェアシミュレータ１００は、シミュレータ動作制御部４００の制御に従って被
検証モジュール５００をサイクルベースのシミュレーションソフトウェア（プログラム）
でシミュレーション動作（模擬動作）する。このソフトウェアシミュレータ１００は、図
示しないコンピュータの記憶装置にデータ構造やプログラムとして記憶され、コンピュー
タのＣＰＵでプログラム実行することで実現される。
【００１８】
シミュレータ動作制御部４００は、動作サイクル設定部４１０に設定されたサイクル数
の期間に、信号線４２０を介して入出力情報、クロック、状態情報、制御情報などを被検
証モジュール５００との間で入出力して、シミュレーション動作を制御する。
【００１９】
被検証モジュール５００は、検証対象の例えば周辺回路やＣＰＵやそのＣＰＵが実行す
るプログラムイメージを記憶したメモリなどの、機能記述や論理記述をソフトウェアでシ
ミュレーション動作可能なようにコンパイラなどで変換した動作モデルを格納している。
【００２０】
ハードウェアエミュレータ２００は、エミュレータ動作制御部６００の制御に従って被
検証モジュール７００のハードウェア上に書き込まれた回路を動作させてシミュレーショ
ン動作する。
【００２１】
エミュレータ動作制御部６００は、動作サイクル設定部６１０に設定されたサイクルの
期間に、信号線６２０を介して入出力情報、クロック、状態情報、制御情報などを被検証
モジュール７００との間で入出力して、シミュレーション動作を制御する。このエミュレ
ータ動作制御部６００は、図示しないコンピュータ上で動作する。
【００２２】
被検証モジュール７００は、検証対象の例えば周辺回路やＣＰＵやそのＣＰＵが実行す
るプログラムイメージを記憶したメモリなどの、機能記述や論理記述で表される動作モデ
ルをコンパイラなどで論理回路などの接続記述に変換して、ＦＰＧＡなどのプログラマブ
ル素子上に書き込まれたものである。なお、被検証モジュール７００にはプログラマブル
素子以外にメモリ素子や、入手可能なハードウェアモジュールなどが組み込まれる。
【００２３】
協調動作制御部３００は、図示しないコンピュータ上で動作するもので、信号線３１０
を介してハードウェアエミュレータ２００のエミュレータ動作制御部６００と接続される
。また、信号線３２０を介してソフトウェアシミュレータ１００のシミュレータ動作制御
部４００と接続される。
【００２４】
協調シミュレータ１のシミュレーション動作の操作指示が検証作業者によって行われる
と、協調動作制御部３００は、シミュレータ動作制御部４００とエミュレータ動作制御部
６００との間でそれぞれ信号線３２０および信号線３１０を介して同期情報および制御情
報を入出力（通信）して、ソフトウェアシミュレータ１００およびハードウェアエミュレ
ータ２００のシミュレーション動作を制御する。この入出力される同期情報および制御情
報を用いて、被検証モジュール５００および被検証モジュール７００に実装された検証対
象システム全体のシミュレーション動作が行われる。
【００２５】
この同期情報は、それぞれの被検証モジュール５００，７００に含まれる同一信号を同
一の値とするための情報であって、被検証モジュール５００と被検証モジュール７００と
の間で互いに通信される入出力情報などの情報である。また、制御情報は、シミュレーシ
ョン動作を制御するための情報であって、シミュレーション動作の開始や停止を指示する
情報、動作状況を示す情報、シミュレーション動作期間を指示する動作サイクル数などの
情報である。
【００２６】
次に、図２を参照して協調シミュレータ１の更に詳細な構成を説明する。図２の協調シ
ミュレータ１の協調動作制御部３００は、点線で囲んで示すようにソフトウェアシミュレ
ータ１００と同じコンピュータ上で動作している。
【００２７】
ソフトウェアシミュレータ１００は、協調動作制御部３００と信号線３２０で接続され
たシミュレータ動作制御部４００が、被検証モジュール５００と信号線４２０で接続され
てシミュレーション動作を行う。
【００２８】
信号線３２０は、ソフトウェアシミュレータ１００の動作状況などを示す信号３２１、
ソフトウェアシミュレータ１００のシミュレーション動作開始や動作サイクル数などを指
定する信号３２２、同期対象ノードへの入出力信号３２３などから構成される。この入出
力信号３２３は、被検証モジュール５００の入出力ノード（端子）の中で同じノード名を
持つ被検証モジュール７００のノードと同じ値に設定して、同期を取得する信号である。
【００２９】
また信号線４２０は、シミュレータ動作制御部４００が動作サイクル設定部４１０に設
定されたサイクル数に応じて生成出力するクロック信号や被検証モジュール５００のシミ
ュレーション動作状態などを示す信号４２１、被検証モジュール５００の同期対象の入出
力ノードの信号４２２などから構成される。この内、信号４２２は、信号入出力部４３０
を介して信号３２３として協調動作制御部３００に入出力される。
【００３０】
ハードウェアエミュレータ２００は、協調動作制御部３００と信号線３１０で接続され
たシミュレータ動作制御部６００が被検証モジュール７００と信号線６２０で接続されて
シミュレーション動作を行う。
【００３１】
信号線３１０は、ハードウェアエミュレータ２００の動作状況などを示す信号３１１、
ハードウェアエミュレータ２００のシミュレーション動作開始や動作サイクル数などを指
定する信号３１２、同期対象ノードへの入出力信号３１３などから構成される。この入出
力信号３１３は、被検証モジュール７００の入出力ノードの中で同じノード名を持つ被検
証モジュール５００のノードと同じ値に設定して、同期を取得する信号である。
【００３２】
また信号線６２０は、エミュレータ動作制御部６００が動作サイクル設定部６１０に設
定されたサイクル数に応じて生成出力するクロック信号や被検証モジュール７００のシミ
ュレーション動作状態などを示す信号６２１、被検証モジュール７００の同期対象の入出
力ノードの信号６２２などから構成される。この内、信号６２２は、信号入出力部６３０
を介して信号３１３として協調動作制御部３００に入出力される。
【００３３】
協調動作制御部３００は、信号線３１０，３２０を介してハードウェアエミュレータ２
００のエミュレータ動作制御部６００とソフトウェアシミュレータ１００のシミュレータ
動作制御部４００にそれぞれ接続される。協調動作制御部３００の同期判定部３３０は、
予め決められた信号毎に決められた同期条件の値を入力し、ソフトウェアシミュレータ１
００とハードウェアエミュレータ２００から出力される指定されたサイクル数のシミュレ
ーション動作終了時の処理結果を比較して同期条件が成立しているかを判定する。協調動
作制御部３００は、同期判定部３３０の判定結果に従って、信号３２２と信号３１２によ
ってシミュレータ動作制御部４００とエミュレータ動作制御部６００にシミュレーション
動作の制御情報を出力する。
【００３４】
なお、この協調動作制御部３００は、図２において点線で囲んで示したようにソフトウ
ェアシミュレータ１００と同じコンピュータ上で動作するため、コンピュータ上に用意さ
れた図示しないデータテーブルを互いに書込み／読出す方法などでソフトウェアシミュレ
ータ１００のシミュレータ動作制御部４００との間の入出力を実現する。
【００３５】
次に、図２乃至図４を参照しながら、協調シミュレータ１でソフトウェアシミュレータ
１００とハードウェアエミュレータ２００とが協調動作して協調シミュレーションする動
作の詳細を説明する。
【００３６】
図３は協調シミュレータ１の協調動作制御部３００が行う主要な制御処理手順を示すフ
ローチャートである。図４は、協調シミュレーション実行時の、ソフトウェアシミュレー
タ１００とハードウェアエミュレータ２００の動作と同期通信の様子を示すタイミング図
である。
【００３７】
協調シミュレーションが開始されると、被検証モジュール５００を含めたソフトウェア
シミュレータ１００と、被検証モジュール７００を含めたハードウェアエミュレータ２０
０と、協調動作制御部３００とが初期化される（ステップＳ１００）。
【００３８】
この初期化とは、対象となるシステムやブロックを使用可能な状態にすることであって
、協調動作制御部３００の初期化は、協調シミュレーション制御に必要なシミュレーショ
ンの時刻やデータテーブルやパラメータなどを初期設定値とすることである。また、ソフ
トウェアシミュレータ１００のシミュレーション動作サイクル数を保持するパラメータＮ
Ｓとハードウェアエミュレータ２００のシミュレーション動作サイクル数を保持するパラ
メータＮＥにそれぞれ「１」が設定される。
【００３９】
次に、協調動作制御部３００は、パラメータＮＳ，ＮＥに設定された値「１」をそれぞ
れソフトウェアシミュレータ１００の動作サイクル設定部４１０とハードウェアエミュレ
ータ２００の動作サイクル設定部６１０に設定し、ソフトウェアシミュレータ１００とハ
ードウェアエミュレータ２００のシミュレーション動作を開始させる（ステップＳ１１０
）。
【００４０】
すなわち、協調動作制御部３００は、信号線３２２を介してシミュレータ動作制御部４
００にパラメータＮＳの動作サイクル数の値とシミュレーション動作開始指示を送信し、
また、信号線３１２を介してエミュレータ動作制御部６００にパラメータＮＥの動作サイ
クル数の値とシミュレーション動作開始指示を送信する。
【００４１】
そしてシミュレータ動作制御部４００は、受信したパラメータＮＳの値「１」を動作サ
イクル設定部４１０に設定し、受信した開始指示に従ってシミュレーション動作を開始す
る。また、エミュレータ動作制御部６００は、受信したパラメータＮＥの値「１」を動作
サイクル設定部６１０に設定し、受信した開始指示に従ってエミュレーション動作を開始
する。
【００４２】
次に、ソフトウェアシミュレータ１００は動作サイクル設定部４１０に設定されたサイ
クル数分のシミュレーション動作を行い、ハードウェアエミュレータ２００は動作サイク
ル設定部６１０に設定されたサイクル数分のシミュレーション動作を行う（ステップＳ１
２０）。
【００４３】
すなわち、シミュレータ動作制御部４００は、シミュレーション動作開始指示に従って
クロックを生成して信号線４２１を介して被検証モジュール５００に入力してソフトウェ
アシミュレータ１００のシミュレーション動作を開始する。また、シミュレーション動作
制御部４００は、動作サイクル設定部４１０に設定されたサイクルが完了するまでクロッ
クを生成してシミュレーション動作を繰り返すように制御し、生成したクロックが設定さ
れた数に達するとシミュレーション動作を終了する。
【００４４】
また、エミュレータ動作制御部６００は、シミュレーション動作開始指示に従ってクロ
ックを生成して信号線６２１を介して被検証モジュール７００に入力してハードウェアエ
ミュレータ２００のシミュレーション動作を開始する。また、エミュレーション動作制御
部６００は、動作サイクル設定部６１０に設定されたサイクルが完了するまでクロックを
生成してシミュレーション動作を繰り返すように制御し、生成したクロックが設定された
数に達するとシミュレーション動作を終了する。
【００４５】
次に、ソフトウェアシミュレータ１００とハードウェアエミュレータ２００は、指定さ
れたサイクル数のシミュレーション動作を行うと、協調動作制御部３００の制御に従って
同期動作を行う（ステップＳ１３０）。
【００４６】
すなわち、ステップＳ１２０のシミュレーション動作を行った後、ソフトウェアシミュ
レータ１００とハードウェアエミュレータ２００は、それぞれ協調動作制御部３００にシ
ミュレーション動作終了を送信する。そして、協調動作制御部３００は、両者のシミュレ
ーション動作終了状態を受信すると同期動作通信を開始する。この時、ソフトウェアシミ
ュレータ１００とハードウェアエミュレータ２００のシミュレーション動作が終了するの
に要する時間は、それぞれのシミュレーション動作対象の回路規模や動作サイクル数によ
り異なる。すなわち、ハードウェアエミュレータ２００は、ソフトウェアシミュレータ１
００に比べてシミュレーション動作速度が１００〜１０００倍程度高速である。そこで、
ソフトウェアシミュレータ１００とハードウェアエミュレータ２００が協調動作する環境
では、協調動作制御部３００は、ソフトウェアシミュレータ１００のシミュレーション動
作終了時に、同期動作の通信を行うように制御する。
【００４７】
ここで言う同期動作とは、被検証モジュール５００および被検証モジュール７００の同
じノード名に設定されたものを同一の値とすることである。すなわち、同じノード名の信
号値を、信号線４２２と信号線３２３と信号線３１３および信号線６２２を経由して被検
証モジュール５００と被検証モジュール７００との間で交信し、同じ信号値であれば同期
状態が維持されていることが判定され、同期動作以前と異なれば、入力値を更新すること
により同期が継続されることになる。
【００４８】
また、同期動作の対象の信号の中であらかじめ定められた入出力信号は、同様にあらか
じめ定められた同期条件とともに同期判定部３３０に入力される。
【００４９】
次に、協調動作制御部３００は、協調シミュレーションの終了条件が成立しているか判
定（ステップＳ１４０）し、終了条件が成立していない時は次のステップＳ１５０に進み
、終了条件が成立している時は、協調シミュレーションを終了する。
【００５０】
協調シミュレーションの終了条件が成立するとは、例えば、モジュールに含まれるＣＰ
ＵでＨＡＬＴ命令を実行した時や、協調シミュレータのシステムサイクル数がシミュレー
ション開始時に指定したサイクル数に達した時や、図示しない入力装置よりシミュレーシ
ョン停止操作を行った時などを指し、協調動作制御部３００は成立した終了条件に応じて
ソフトウェアシミュレータ１００とハードウェアエミュレータ２００のシミュレーション
動作を停止させて協調シミュレーション動作を終了させる。
【００５１】
協調シミュレーションの終了条件が成立しない時、協調動作制御部３００は同期判定部
３３０の出力によって同期条件が成立しているか調べる（ステップＳ１５０）。そして、
同期条件が成立している時は、ステップＳ１６０に進み、同期条件が成立しない時は、ス
テップＳ１７０に進む。
【００５２】
同期判定部３３０には、協調シミュレーション開始前に検証作業者などによって、同期
信号の中からあらかじめ選ばれた信号と、その信号の同期成立時の信号レベルを示す信号
とが一対の組となって設定入力されている。そして同期判定部３３０は、それらの組の信
号が一組でも一致するとアクティブ（Ｈｉｇｈ）の信号を出力し、入力された全ての組で
信号が一致しなければ不成立となって否アクティブ（Ｌｏｗ）の信号を出力する。
【００５３】
そして、協調動作制御部３００は、同期条件が成立している場合、ソフトウェアシミュ
レータ１００とハードウェアエミュレータ２００の同期サイクルのパラメータＮＥ，ＮＳ
に「１」を設定し（ステップＳ１６０）、ステップＳ１１０に戻る。
【００５４】
そしてまた、同期条件が不成立の時は、ソフトウェアシミュレータ１００とハードウェ
アエミュレータ２００とが、それぞれＮサイクルとＭサイクルの期間、互いに非同期にシ
ミュレーション動作させるため、「Ｎ」と「Ｍ」の値をそれぞれパラメータＮＳとＮＥに
設定し（ステップＳ１７０）、ステップＳ１１０に戻る。
【００５５】
非同期サイクル値「Ｎ」、「Ｍ」は、少なくとも一方が２以上の整数で、ソフトウェア
シミュレータ１００とハードウェアエミュレータ２００とが非同期にシミュレーション動
作を行うサイクル数であり、協調動作制御部３００に図示しない入力装置から入力設定さ
れる。図４に示す協調シミュレーションの例ではそれぞれ、「Ｎ」と「Ｍ」に値「５」を
設定した場合を示している。
【００５６】
次に、図４のタイミング図を参照しながら、協調シミュレーション実行時の、ソフトウ
ェアシミュレータ１００とハードウェアエミュレータ２００の動作と同期通信の様子を説
明する。この図４の時刻ｔ１乃至ｔ９は、協調シミュレーションが実行される時の時系列
を示すもので、処理に要した時間を示すものではない。
【００５７】
協調シミュレータ１は、例えば時刻ｔ１に協調動作制御部３００の制御に従ってソフト
ウェアシミュレータ１００とハードウェアエミュレータ２００間の同期対象信号の同期動
作のための通信（以下同期通信と略す）を行う。この時、同期対象信号の同期条件が成立
していると仮定すると、協調動作制御部３００は、同期動作を行うとともにシミュレータ
動作制御部４００の動作サイクル設定部４１０にステップＳ１６０のＮＳの値「１」を設
定し、エミュレータ動作制御部６００の動作サイクル設定部６１０に同じくＮＥの値「１
」を設定して、次のシミュレーション動作を開始させる。
【００５８】
次に、ソフトウェアシミュレータ１００が１サイクル分のシミュレーション動作終了後
の時刻ｔ２において、協調シミュレータ１は、協調動作制御部３００の制御に従ってソフ
トウェアシミュレータ１００とハードウェアエミュレータ２００間の同期通信を行う。こ
の時刻ｔ２においても、同期対象信号の同期条件が成立しているとすると、協調動作制御
部３００は、同期動作を行うとともにシミュレータ動作制御部４００の動作サイクル設定
部４１０にステップＳ１６０のＮＳの値「１」を設定し、エミュレータ動作制御部６００
の動作サイクル設定部６１０に同じくＮＥの値「１」を設定して、次のシミュレーション
動作を開始させる。
【００５９】
次に、ソフトウェアシミュレータ１００が１サイクル分のシミュレーション動作終了後
の時刻ｔ３において、協調シミュレータ１は、協調動作制御部３００の制御に従ってソフ
トウェアシミュレータ１００とハードウェアエミュレータ２００間の同期通信を行う。こ
の時刻ｔ３では、全ての同期対象信号の同期条件が成立しないとすると、協調動作制御部
３００は、同期動作を行うとともにシミュレータ動作制御部４００の動作サイクル設定部
４１０にステップＳ１７０のＮＳの値Ｎ＝「５」を設定し、エミュレータ動作制御部６０
０の動作サイクル設定部６１０に同じくＮＥの値Ｍ＝「５」を設定して、シミュレーショ
ン動作を開始させる。すると、ソフトウェアシミュレータ１００とハードウェアエミュレ
ータ２００とは、互いに独立してシミュレーション動作を実行する。
【００６０】
互いに独立してシミュレーション動作を行っている期間において、ソフトウェアシミュ
レータ１００が２サイクル後の時刻ｔ４において、被検証モジュール５００の信号ＡがＨ
ｉｇｈになったとする。この信号Ａは、同期対象信号に指定された出力信号の一つであっ
て、同期条件はＨｉｇｈと設定されているとする。しかしながら、ソフトウェアシミュレ
ータ１００のシミュレーション動作は５サイクル分に設定されるため、５サイクル後の時
刻ｔ５まで、協調動作制御部３００との間で同期通信は行われない。
【００６１】
そして、時刻ｔ５になると、協調シミュレータ１は、協調動作制御部３００の制御に従
ってソフトウェアシミュレータ１００とハードウェアエミュレータ２００間の同期通信を
行う。この時刻において、信号ＡがＨｉｇｈであることから設定された信号Ａの同期条件
Ｈｉｇｈと一致して同期条件が成立する。これにより、協調動作制御部３００は、ハード
ウェアエミュレータ２００の被検証モジュール７００の信号Ａの入力値をＨｉｇｈとする
ように同期動作を行うとともに、シミュレータ動作制御部４００の動作サイクル設定部４
１０にステップＳ１６０のＮＳの値「１」を設定し、エミュレータ動作制御部６００の動
作サイクル設定部６１０に同じくＮＥの値「１」を設定して、次のシミュレーション動作
を開始させる。
【００６２】
次に、ソフトウェアシミュレータ１００が１サイクル分のシミュレーション動作終了後
の時刻ｔ６において、協調シミュレータ１は、協調動作制御部３００の制御に従ってソフ
トウェアシミュレータ１００とハードウェアエミュレータ２００間の同期通信を行う。こ
の時刻ｔ６においても、信号Ａの同期条件が成立しているとすると、協調動作制御部３０
０は、同期動作を行うとともにシミュレータ動作制御部４００の動作サイクル設定部４１
０にステップＳ１６０のＮＳの値「１」を設定し、エミュレータ動作制御部６００の動作
サイクル設定部６１０に同じくＮＥの値「１」を設定して、次のシミュレーション動作を
開始させる。この時ハードウェアエミュレータ２００は、被検証モジュール７００の信号
Ａの入力がＨｉｇｈとなるため、１サイクル分のシミュレーション動作終了時にＡ信号に
対応する信号ＢがＨｉｇｈとなる。これは、モジュール７００上に構築された回路が、シ
ステム間の同期システムで用いられる応答信号を生成する回路となっていて入力信号Ａが
Ｈｉｇｈとなると１サイクル後に信号Ｂの出力をＨｉｇｈとするように構成されているか
らである。
【００６３】
次に、ソフトウェアシミュレータ１００が１サイクル分のシミュレーション動作終了後
の時刻ｔ７において、協調シミュレータ１は、協調動作制御部３００の制御に従ってソフ
トウェアシミュレータ１００とハードウェアエミュレータ２００間の同期通信を行う。す
なわち、協調動作制御部３００は、ハードウェアエミュレータ２００の被検証モジュール
７００の同期信号である信号Ｂの出力値がＨｉｇｈであると判定すると、ソフトウェアシ
ミュレータ１００の被検証モジュール５００の信号Ｂの入力値をＨｉｇｈに設定する。
【００６４】
この時刻ｔ７においても、信号Ａの同期条件が成立しているので、シミュレータ動作制
御部４００の動作サイクル設定部４１０にステップＳ１６０のＮＳの値「１」を設定し、
エミュレータ動作制御部６００の動作サイクル設定部６１０に同じくＮＥの値「１」を設
定して、次のシミュレーション動作を開始させる。
【００６５】
この時、ソフトウェアシミュレータ１００は被検証モジュール５００の信号Ｂの入力が
Ｈｉｇｈとなるため、１サイクル分のシミュレーション動作終了時に信号ＡをＬｏｗする
。これは、被検証モジュール５００上に構築された回路がシステム間の同期システムで用
いられる回路でその回路動作モデルが、入力信号ＢがＨｉｇｈとなると１サイクル後に対
応する信号Ａの出力をＬｏｗとするように構築されているからである。
【００６６】
またこの時、ハードウェアエミュレータ２００は、１サイクル分のシミュレーション動
作終了時に被検証モジュール７００の信号ＢをＬｏｗとする。これは、モジュール７００
上に構築された回路が、信号Ｂは１サイクル期間のみＨｉｇｈを出力して再びＬｏｗとな
るように構成されているからである。
【００６７】
次に、ソフトウェアシミュレータ１００が１サイクル分のシミュレーション動作終了後
の時刻ｔ８において、協調シミュレータ１は、協調動作制御部３００の制御に従ってソフ
トウェアシミュレータ１００とハードウェアエミュレータ２００間の同期通信を行う。こ
の時刻ｔ８には、信号ＡがＬｏｗとなって全ての同期信号の同期条件が成立しないとする
と、協調動作制御部３００は、同期動作を行うとともにシミュレータ動作制御部４００の
動作サイクル設定部４１０にステップＳ１７０のＮＳの値Ｎ＝「５」を設定し、エミュレ
ータ動作制御部６００の動作サイクル設定部６１０に同じくＮＥの値Ｍ＝「５」を設定し
て、シミュレーション動作を開始させる。すると、ソフトウェアシミュレータ１００とハ
ードウェアエミュレータ２００は、互いに独立してシミュレーション動作を実行する。
【００６８】
協調動作制御部３００が、以上のようにソフトウェアシミュレータ１００とハードウェ
アエミュレータ２００の同期動作の同期通信を制御することで、同期条件が成立する時は
、サイクル毎に同期通信を行って協調シミュレーションの機能等価性の精度を保証しなが
らシミュレーションを行う。一方、同期条件が成立しない時は、サイクル毎の同期通信を
行わないようにして、互いに独立してシミュレーションを行い、所定のサイクル後に同期
通信を行うようにする。このため、同期通信に要する時間を削減できて、協調シミュレー
ション全体の速度を向上させることができる。
【００６９】
なお、上述の同期動作の説明において、同じノード名の信号値を、信号線４２２と信号
線３２３と信号線３１３および信号線６２２を経由して被検証モジュールと被検証モジュ
ール７００との間で交信するとしたが、信号入出力部６３０と信号入出力部４３０に、同
じノード名で同期対象のノードの出力側の値が前回の同期動作以降に変化したことを検知
する回路（例えば、同期通信時の出力値を記憶する記憶回路と比較回路などによって構成
する回路）を設けて、変化したノード名と信号値のみを通信するようにしてもよい。この
ようにすれば一回の同期通信の通信量が削減され、同期通信に要する時間を更に削減でき
て、協調シミュレーション全体の速度を向上させることができる。
【００７０】
本発明は、上記実施例に限定されるものではなく、発明の要旨を逸脱しない範囲で、種
々、変形して実施できることは勿論である。
【００７１】
例えば、協調動作制御部３００に、第２の非同期サイクル値「Ｎ２」、「Ｍ２」を設け
て、同期条件が不成立の時、ステップＳ１７０で「Ｎ」と「Ｎ２」の小さな方の値をパラ
メータＮＳに設定し、「Ｍ」と「Ｍ２」の小さな方の値をパラメータＮＥに設定するよう
に制御する。この「Ｎ２」は、ソフトウェアシミュレータ１００でシミュレーション動作
されるＣＰＵが実行するプログラムで値を設定でき、「Ｍ２」は、ハードウェアエミュレ
ータ２００でシミュレーション動作されるＣＰＵが実行するプログラムで値を設定できる
ように構成する。
【００７２】
例えばソフトウェアシミュレータ１００でシミュレーション動作されるＣＰＵが実行す
るプログラムがハードウェアエミュレータ２００の被検証モジュール７００からのデータ
の入力待ちのプログラムループとなった時、プログラムループを実行するサイクル数をＮ
２に設定する。
【００７３】
このようにするとハードウェアエミュレータ２００はＭサイクル、ソフトウェアシミュ
レータ１００はプログラムループが実行される期間のＮ２サイクルの期間、非同期動作す
ることになる。システム構成や経験値などから決定するＮサイクル毎ではなくプログラム
ループサイクル数Ｎ２毎に同期通信を行うので、ソフトウェアシミュレータ１００の無駄
なサイクルのシミュレーション動作の終了を待つことなくハードウェアエミュレータ２０
０の被検証モジュール７００が出力するデータを入力するプログラムのシミュレーション
動作に進むことができて、協調シミュレーション全体の速度を向上させることができる。
【図面の簡単な説明】
【００７４】
【図１】本発明に係る協調シミュレータの実施例の構成を示すブロック図。
【図２】本実施例の協調シミュレータの主要な構成を示すブロック図。
【図３】本実施例の協調シミュレータの主要な制御処理手順を示すフローチャート。
【図４】本実施例の協調シミュレータの協調動作の様子を示すタイミング図。
【符号の説明】
【００７５】
１      協調シミュレータ
１００  ソフトウェアシミュレータ
２００  ハードウェアエミュレータ
３００  協調動作制御部
３１０、３２０  信号線
３３０  同期判定部
４００  シミュレータ動作制御部
４１０  動作サイクル設定部
４２０  信号線
５００  被検証モジュール
６００  エミュレータ動作制御部
６１０  動作サイクル設定部
６２０  信号線
７００  被検証モジュール
【図１】
2008065640.tif 000003
【図２】
2008065640.tif 000004
【図３】
2008065640.tif 000005
【図４】
2008065640.tif 000006