(57)【要約】【課題】高速で動作する協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法を提供すること【解決手段】本発明にかかる協調シミュレーションシステムは、検証対象回路２１０の検証をソフトウェアシミュレータ１００とハードウェアエミュレータ２００で協調して実行する協調シミュレーションシステムであって、検証対象回路２１０のに用いるクロックを、ソフトウェアクロックと、ハードウェアクロックのどちらか一方を選択するクロック制御回路２０３を備え、クロック制御回路２０３は、ソフトウェアシミュレータ１００の保持するメモリモデルに従い検証対象回路２１０の検証を実施する場合は、ソフトウェアクロックを選択し、ハードウェアエミュレータ２００の保持するメモリモデルに従い検証対象回路２１０の検証を実施する場合は、ハードウェアクロックを選択するものである。【選択図】図１
2010250365.tif 000002
【特許請求の範囲】
【請求項１】
検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、
前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、
前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は前記ハードウェアクロックを選択する協調シミュレーションシステム。
【請求項２】
前記ハードウェアエミュレータによる前記検証対象回路の検証に用いる前記メモリモデルの一部のデータを前記ハードウェアエミュレータが保持しているか否かを監視する監視部をさらに備えることを特徴とする請求項１記載の協調シミュレーションシステム。
【請求項３】
前記監視部によって、前記ハードウェアエミュレータは当該ハードウェアエミュレータによる検証対象回路の検証に用いる前記メモリモデルの一部のデータを保持していない、と判断された場合、
前記ソフトウェアシミュレータは、ソフトウェアクロックを用いて前記ハードウェアエミュレータに対して当該ソフトウェアシミュレータの保持している前記メモリモデルの一部のデータを入力することを特徴とする請求項２記載の協調シミュレーションシステム。
【請求項４】
検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、
前記ソフトウェアシミュレータは、
前記検証対象回路が必要とするデータを保持するメモリモデルと、
当該ソフトウェアシミュレータと前記ハードウェアシミュレータの同期をとるソフトウェアクロックを供給するソフトウェアクロック供給部とを備え、
前記ハードウェアエミュレータは、
前記メモリモデルの一部のデータを保持するメモリと、
前記ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、
前記ソフトウェアクロック供給部から供給されるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、
前記クロック制御部は、前記メモリが保持するデータを用いて前記回路の検証を実行する場合は前記ハードウェアクロックを選択し、
前記メモリモデルのデータを用いて前記検証回路の検証を実行する場合は前記ソフトウェアクロックを選択する協調シミュレーションシステム。
【請求項５】
前記ハードウェアエミュレータは、
当該ハードウェアエミュレータによる回路の検証に用いる前記メモリモデルの一部のデータを前記メモリが保持しているか否かを監視する監視部をさらに備えることを特徴とする請求項４記載の協調シミュレーションシステム。
【請求項６】
前記監視部によって、前記メモリは前記ハードウェアエミュレータによる回路の検証に用いるデータを保持していない、と判断された場合、
前記ソフトウェアシミュレータは、ソフトウェアクロックを用いて前記メモリに対して前記メモリモデルの一部のデータを入力することを特徴とする請求項５記載の協調シミュレーションシステム。
【請求項７】
ソフトウェアシミュレータによって保持されているメモリモデルのデータの一部を保持するメモリと、
ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、
前記ソフトウェアシミュレータから供給される当該ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、
前記クロック制御部は、前記メモリが保持するデータを用いて検証対象回路の検証を実行する場合は前記ハードウェアクロックを選択し、
前記ソフトウェアシミュレータが保持しているメモリモデルのデータを用いて前記検証対象回路の検証を行う場合は前記ソフトウェアクロックを選択するハードウェアエミュレータ。
【請求項８】
前記検証対象回路が検証に用いるデータをメモリが保持しているか否かを監視する監視部をさらに備えることを特徴とする請求項７記載のハードウェアエミュレータ。
【請求項９】
前記監視部によって前記メモリは前記検証回路の検証に用いるデータを保持していないと判断された場合、
前記メモリは、ソフトウェアクロックを用いて、前記ソフトウェアシミュレータの保持するメモリモデルのデータの一部を取得することを特徴とする請求項８記載のハードウェアエミュレータ。
【請求項１０】
前記検証対象回路が検証に用いる全てのデータを保持するメモリをさらに備えることを特徴とする請求項７乃至９のいずれか１項に記載のハードウェアエミュレータ。
【請求項１１】
検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムで用いられるシミュレーション実行回路であって、
前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、
前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、前記ハードウェアクロックを選択するシミュレーション実行回路。
【請求項１２】
検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーション方法であって、
前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、ソフトウェアシミュレータにより供給されるソフトウェアクロックに基づいて検証を実施し、
前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、ハードウェアエミュレータにより供給されるハードウェアクロックに基づいて検証を実施する協調シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は協調シミュレーションシステム、ハードウェアエミュレータ及び協調シミュレーション方法に関し、特にクロック制御を用いた協調シミュレーションに関する。
【背景技術】
【０００２】
製品開発における動作検証シミュレーションの分野において、ＬＳＩ（Large Scale Integration）等の大規模回路の論理シミュレーションを高速化するために、ハードウェアエミュレータを用いたシミュレーション技術が公開されている。しかし、近年のＬＳＩの一層の大規模化や、ハードウェアエミュレーションに用いられるプログラマブル素子の規模制限などにより、ＬＳＩのすべての論理回路をハードウェアエミュレータ上に実現することは困難な状況となっている。そこで、ＬＳＩの一部の回路機能をソフトウェアによりシミュレーションするソフトウェアシミュレータとハードウェアエミュレータとを協調させて動作させることによってシミュレーションを行う協調シミュレーション方式が用いられるようになってきている。
【０００３】
さらに、協調シミュレーション方式を用いた場合においても、ハードウェアエミュレータに搭載された検証対象回路が必要とするメモリ容量が増大している。これに伴い、ハードウェアエミュレータに検証対象回路が必要とする全メモリを実装することが困難となっている。このため、ソフトウェアシミュレータにメモリモデルを搭載する協調シミュレーションシステムが必要となっている。
【０００４】
そこで、ソフトウェアシミュレータを用いた協調シミュレーションシステムにおいて、シミュレーション実施時の処理速度の低下を引き起こさないシステムが要求されている。
【０００５】
特許文献１は、ハードウェアエミュレータとソフトウェアシミュレータの間で行われる通信量を減少させることにより、協調シミュレーション装置の処理負荷を軽減する技術を開示している。以下に、図面を用いて詳細に説明する。
【０００６】
図８は、特許文献１にかかる発明のハードウェア／ソフトウェア協調シミュレーション方式の一実施形態を示すブロック図である。図８に示す実施の形態は、システムシミュレータ１とハードウェアエミュレータ２から構成されている。そして、シミュレーションによって検証したいＬＳＩシステムのアーキテクチャは、ソフトウェアでシミュレートされる動作モデル６と、ハードウェアでエミュレートされるユーザロジック（論理回路）５とから構成される。
【０００７】
システムシミュレータ１は動作モデル６を実装しており、ハードウェアエミュレータ２はユーザロジック５を実装している。協調シミュレーションの実行時には、ハードウェアエミュレータ２にはシステムシミュレータ１からの入力信号３（複数ビット可）が入力され、また、ハードウェアエミュレータ２からは出力信号４（複数ビット可）がシステムシミュレータ１に送出される。入力信号３には、システムシミュレータ１からハードウェアエミュレータ２に供給される同期用クロック信号（以下、「クロック信号９」とする）が含まれている。また、システムシミュレータ１には、ハードウェアエミュレータ２から送出される出力信号４を、信号波形表示等により観測するためのデバッグ環境７が実装されている。
【０００８】
ハードウェアエミュレータ２には、出力信号４に変化があった時点で論理値「Ｈ（Ｈｉｇｈ）」の変化検出信号８を出力する変化検出回路２０が実装されている。変化検出回路２０は、ＤフリップフロップであるところのＦＦ２１と、排他的論理和演算を行う排他的論理和回路２３とから構成されている。ＦＦ２１は、データ入力端子に出力信号４が入力され、クロック入力端子には、入力信号３に含まれているクロック信号９が入力される。
【０００９】
そして、入力データである出力信号４を１クロック遅延させて出力端子に遅延信号２２として出力する。排他的論理和回路２３は、出力信号４と遅延信号２２との排他的論理和演算を行い、出力信号４が遅延信号２２と異なっていることを検出すると、変化検出信号８に論理値Ｈを出力する。
【００１０】
次に、動作モデル６とユーザロジック５について詳述する。図８に示した本実施形態によって検証したいＬＳＩシステムのアーキテクチャは、複数の機能ブロックから構成されている。各機能ブロックの内の一部は、ハードウェアエミュレータ２でエミュレートされるようになっており、ハードウェアエミュレータ２内のＦＰＧＡ（Field・Programmable Gate Array）などのプログラマブル素子上に、ユーザロジック５として構築されている。各機能ブロックの他の部分は、システムシミュレータ１でソフトウェアによりシミュレートされるようになっており、Ｃ言語等で記述される動作モデル６として構成されている。動作モデル６には、機能ブロックごとの機能・動作及び機能ブロック間の接続関係が記述されており、機能ブロックをシミュレーション動作させると、機能ブロック及びハードウェアエミュレータ２のユーザロジック５との間でデータ送受信がなされるようになっている。
【００１１】
次に、図９を参照して、図８に示した本実施形態の動作について説明する。図９は、図８の本実施形態の動作を説明するタイミングチャートである。図８に示したハードウェア／ソフトウェア協調シミュレーション方式により、協調シミュレーションが開始されると、システムシミュレータ１からは、クロック信号９を含む入力信号３がハードウェアエミュレータ２に送出されるようになる。また、ハードウェアエミュレータ２からは、出力信号４がシステムシミュレータ１に送出されるようになる。ハードウェアエミュレータ２の変化検出回路２０は、出力信号４を常時監視しており、出力信号４が変化した時点で、変化検出信号８に論理値Ｈを出力する。システムシミュレータ１は、変化検出信号８を常時監視しており、変化検出信号８に論理値Ｈが出力された場合のみ、出力信号４の値を取り込んで動作モデル６に渡すようにする。変化検出信号８に論理値Ｈが出力されない間は、システムシミュレータ１はハードウェアエミュレータ２から送出される出力信号４を取り込む通信は行わない。
【００１２】
このことにより、ハードウェアエミュレータ２とシステムシミュレータ１間の通信量が減少することとなる。例えば、図９のｔ１時点における出力信号４の値は０ｘ００（１６進数の「００」、出力信号４が８ビットとした場合の例。）である。変化検出回路２０のＦＦ２１は、この「０ｘ００」の値が入力されると１クロック遅延させて、すなわちｔ２の時点で遅延信号２２として、排他的論理和回路２３に出力する。図９のｔ２時点の出力信号４の値は０ｘＦＦとなっており、ｔ１時点の値とは異なるものとなっている。変化検出回路２０の排他的論理和回路２３は、ｔ２時点の出力信号４の値０ｘＦＦとｔ２時点の遅延信号２２の値０ｘ００との排他的論理和演算を行い、出力信号４と遅延信号２２とが異なっているため、ｔ２時点で変化検出信号８に論理値Ｈを出力する。
【００１３】
システムシミュレータ１は、ｔ２時点で変化検出信号８に論理値Ｈが出力されたので、ｔ２時点で出力信号４の値を取り込み、これを動作モデル６に渡す。図９のｔ３からｔ６の間は、出力信号４の値は変化していないため、変化検出信号８に論理値Ｈは出力されていない。従ってこの間、システムシミュレータ１は出力信号４の値を取り込む通信を行わない。図９のｔ７の時点になると、出力信号４の値は０ｘ０１に変化しているため、変化検出信号８には論理値Ｈが出力される。そして、システムシミュレータ１は、ｔ７時点の出力信号４「０ｘ０１」を取り込み、動作モデル６に渡す。
【００１４】
以上説明したように、特許文献１のハードウェア／ソフトウェア協調シミュレーション方式においては、ハードウェアエミュレータ２から送出される出力信号４に変化があった場合にだけ、システムシミュレータ１が出力信号４を取り込むようにしている。従って、ハードウェアエミュレータ２とシステムシミュレータ１間の通信量が減少し、通信のために必要とされていた処理を、本来のシミュレーションの処理に割り当てることができるようになる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００５−３３２１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかし、特許文献１の協調シミュレーション方式においては、ハードウェアエミュレータ２に搭載している検証対象回路がシステムシミュレータ（ソフトウェアシミュレータ）１上の動作モデル６に搭載するメモリへのアクセスを可能としている。そのため、ソフトウェアシミュレータ１は、ハードウェアエミュレータ２内のユーザ回路５の出力変化を検出する変化検出信号８を毎クロック観測し、変換検出信号８から定まる動作を動作モデル６で再現する必要がある。
【００１７】
さらに、毎クロック変化検出信号８を観測する必要があることから、協調シミュレーション装置全体を低速なソフトウェアシミュレータ１から出力されるクロック９に同期させる必要があり、ハードウェアエミュレータ２上で発振する高速なハードウェアクロックを使用した協調シミュレーションができず、常時低速なソフトウェアシミュレータ１から出力されるクロック信号９で動作することになる。これにより、協調シミュレーション装置全体の速度が低下するという問題がある。
【課題を解決するための手段】
【００１８】
本発明の第１の態様にかかる協調シミュレーションシステムは、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は前記ハードウェアクロックを選択するものである。
【００１９】
また、本発明の第２の態様にかかる協調シミュレーションシステムは、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムであって、前記ソフトウェアシミュレータは、前記検証対象回路が必要とするデータを保持するメモリモデルと、当該ソフトウェアシミュレータと前記ハードウェアシミュレータの同期をとるソフトウェアクロックを供給するソフトウェアクロック供給部とを備え、前記ハードウェアエミュレータは、前記メモリモデルの一部のデータを保持するメモリと、前記ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、前記ソフトウェアクロック供給部から供給されるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、前記クロック制御部は、前記メモリが保持するデータを用いて前記回路の検証を実行する場合は前記ハードウェアクロックを選択し、前記メモリモデルのデータを用いて前記検証回路の検証を実行する場合は前記ソフトウェアクロックを選択するものである。
【００２０】
また、本発明の第３の態様にかかるハードウェアエミュレータは、ソフトウェアシミュレータによって保持されているメモリモデルのデータの一部を保持するメモリと、ハードウェアエミュレータに用いられるハードウェアクロックを供給するハードウェアクロック供給部と、前記ソフトウェアシミュレータから供給される当該ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるソフトウェアクロックと前記ハードウェアクロック供給部から供給されるハードウェアクロックの一方を選択するクロック制御部とを備え、前記クロック制御部は、前記メモリが保持するデータを用いて検証対象回路の検証を実行する場合は前記ハードウェアクロックを選択し、前記ソフトウェアシミュレータが保持しているメモリモデルのデータを用いて前記検証対象回路の検証を行う場合は前記ソフトウェアクロックを選択するものである。
【００２１】
また、本発明の第４の態様にかかるシミュレーション実行回路は、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーションシステムで用いられるシミュレーション実行回路であって、前記検証対象回路の検証実行時に用いるクロックを、前記ソフトウェアシミュレータと前記ハードウェアエミュレータの同期をとるために用いられるソフトウェアクロックと、前記ハードウェアエミュレータ内において用いられるハードウェアクロックのどちらか一方を選択するクロック選択部を備え、前記クロック選択部は、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、前記ソフトウェアクロックを選択し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、前記ハードウェアクロックを選択するものである。
【００２２】
また、本発明の第５の態様にかかる協調シミュレーション方法は、検証対象回路の検証をソフトウェアシミュレータとハードウェアエミュレータで協調して実行する協調シミュレーション方法であって、前記ソフトウェアシミュレータの保持するメモリモデルのデータに従い前記検証対象回路の検証を実施する場合は、ソフトウェアシミュレータにより供給されるソフトウェアクロックに基づいて検証を実施し、前記ハードウェアエミュレータの保持する前記メモリモデルの一部のデータに従い前記検証対象回路の検証を実施する場合は、ハードウェアエミュレータにより供給されるハードウェアクロックに基づいて検証を実施することである。
【００２３】
これにより、ハードウェアエミュレータに搭載しているメモリを用いて検証を実行する場合には、高速なハードウェアクロックを用いることができるため、協調シミュレーションシステム全体の速度が高速化することになる。
【発明の効果】
【００２４】
本発明により、高速で動作する協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法を提供することができる。
【図面の簡単な説明】
【００２５】
【図１】実施の形態１にかかる協調シミュレーションシステムの構成図である。
【図２】実施の形態１にかかるアクセス監視回路の構成図である。
【図３】実施の形態１にかかるクロック制御回路の構成図である。
【図４】実施の形態１にかかる協調シミュレーションシステムのフローチャートである。
【図５】実施の形態１にかかるクロック切替のタイミングを示す図である。
【図６】実施の形態２にかかる協調シミュレーションシステムの構成図である。
【図７】実施の形態３にかかる協調シミュレーションシステムの構成図である。
【図８】従来の協調シミュレーションシステムの構成図である。
【図９】従来の協調シミュレーションシステムの動作波形である。
【発明を実施するための形態】
【００２６】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１は、本発明の実施の形態１にかかる協調シミュレーションシステムの構成図である。協調シミュレーションシステムは、ソフトウェアシミュレータ１００と、ハードウェアエミュレータ２００を備えている。さらに、ソフトウェアシミュレータ１００は、メモリモデル１０１と、デバック環境１０２と、ソフトウェアクロック生成モデル１０３を備えている。ハードウェアエミュレータ２００は、ユーザ回路２０１と、ブレイク制御回路２０２と、クロック制御回路２０３を備えている。さらに、ユーザ回路２０１は、検証対象回路２１０と、アクセス監視回路２２０と、内蔵メモリ２３０を備えている。
【００２７】
ここで、クロック選択部はクロック制御回路２０３に対応し、監視部はアクセス監視回路２２０に対応し、メモリモデルはメモリモデル１０１に対応し、ソフトウェアクロック供給部はソフトウェアクロック生成モデル１０３に対応し、メモリは内蔵メモリ２３０に対応し、ハードウェアクロック供給部はハードウェアクロック生成回路２０４に対応する。また、クロック選択部はソフトウェアクロックとハードウェアクロックを選択する手段でもあり、監視部は検証対象回路２１０から内蔵メモリ２３０へのアクセスを監視する手段でもあり、ソフトウェアクロック供給部はソフトウェアクロックを供給する手段でもあり、ハードウェアクロック供給部はハードウェアクロックを供給する手段でもある。
【００２８】
メモリモデル１０１は、後に詳述するハードウェアエミュレータ２００の検証対象回路２１０が必要とする全容量のメモリモデルのデータを有する。メモリモデル１０１の有するデータは、具体的には検証対象回路に含まれる機能ブロック毎の機能、動作及び機能ブロック間の接続関係が記述されている。このメモリモデルのデータを用いてシミュレーションを実行することにより、検証対象回路２１０の機能ブロック間でデータの送受信が行われるようになり、シミュレーション動作が実行される。メモリモデル１０１のデータは、ハードウェアエミュレータ２００からの要求に応じて、内蔵メモリ２３０に入力される。
【００２９】
デバック環境１０２は、ハードウェアエミュレータ２００から送信される信号の信号波形表示等を観測する。これにより、ハードウェアエミュレータ２００からの信号フォーマット、設定パラメータ等を分析することができ、検証時の障害解析等を実行することができる。デバック環境１０２は、メモリモデル１０１を介して、ハードウェアエミュレータ２００から出力された信号を取得する。
【００３０】
ソフトウェアクロック生成モデル１０３は、ハードウェアエミュレータ２００に供給するソフトウェアクロックを生成する。ソフトウェアクロックとは、ハードウェアエミュレータとソフトウェアシミュレータが協調して動作するときに、用いられるクロックである。つまり、ハードウェアエミュレータとソフトウェアシミュレータが同期を維持して動作する必要がある場合に、ソフトウェアクロック生成モデル１０３が生成したソフトウェアクロックを用いることになる。ソフトウェアクロック生成モデル１０３が生成したソフトウェアクロックは、ハードウェアエミュレータ２００のクロック制御回路２０３に入力される。
【００３１】
検証対象回路２１０は、論理回路であるユーザ回路２０１を構成するものである。検証対象回路２１０は、ハードウェアエミュレータ２００でエミュレートされる大規模ＬＳＩ等の回路機能の一部である。検証対象回路２１０は、アクセス監視回路２２０を介して、内蔵メモリ２３０にアクセスする。ここで、検証対象回路２１０は、内蔵メモリ２３０に保存されているデータを用いて検証を実行する。もしくは、内蔵メモリ２３０に保存されているデータを用いずに、ソフトウェアシミュレータ１００のメモリモデル１０１のデータを用いて検証を実行してもよい。また、検証対象回路２１０は協調シミュレーションの終了判定等に用いられるブレイク要求信号をブレイク制御回路２０２に出力する機能を有し、協調シミュレーションの終了判定等に用いられる。ここで検証とは、具体的には、各機能ブロックの動作及び各機能ブロック間の動作等の正常性を確認することである。
【００３２】
アクセス監視回路２２０は、検証対象回路２１０から内蔵メモリ２３０へのアクセスを監視するものである。具体的には、検証対象回路２１０が内蔵メモリ２３０の保持するデータを用いて検証を実行する際に、内蔵メモリ２３０が、検証対象回路２１０により必要とされるデータを有しているか否かを確認するものである。ここで、アクセス監視回路２２０の詳細な構成について、図２を用いて説明する。
【００３３】
図２は、アクセス監視回路２２０の詳細な構成を示す図である。アクセス監視回路２２０は、アドレス比較回路２２１と、エリア設定回路２２２と、アクセス元選択回路２２３を備えている。
【００３４】
エリア設定回路２２２は、ソフトウェアシミュレータ１００のメモリモデル１０１より内蔵メモリ２３０に入力されたデータから、内蔵メモリ２３０内にデータを格納しているアドレス値を保持する。つまり、エリア設定回路２２２は、内蔵メモリ２３０内のアドレス情報を設定する回路である。エリア設定回路２２２の保持するアドレス値は、メモリモデル１０１のデータを内蔵メモリ２３０に入力する度に更新されるものとする。
【００３５】
アドレス比較回路２２１は、エリア設定回路２２２に設定されている値と、検証対象回路２１０から内蔵メモリへのアクセス先であるアドレスの値を比較する。これにより、アドレス比較回路２２１は、内蔵メモリ２３０にデータ保持されているエリアへのアクセスか否かを判定する。アドレス比較回路２２１は、検証対象回路２１０から内蔵メモリ２３０へのアクセスが内蔵メモリ２３０にデータ保持されているエリアへのアクセスであると判断した場合、検証対象回路２１０から内蔵メモリ２３０へのアクセスを許容する。その際、検証対象回路２１０は、内蔵メモリ２３０からデータの読み出しを行う。
【００３６】
アドレス比較回路２２１は、検証対象回路２１０から内蔵メモリ２３０へのアクセスが内蔵メモリ２３０にデータ保持されているエリアへのアクセスではないと判断した場合、ブレイク制御回路２０２とクロック制御回路２０３に対して、ブレイク要求信号を出力する。
【００３７】
アクセス元選択回路２２３は、検証対象回路２１０が内蔵メモリ２３０にデータ保持されているエリアへのアクセスを行う場合には、内蔵メモリ２３０へのアクセス元を検証対象回路２１０と設定する。検証対象回路２１０が内蔵メモリ２３０にデータ保持されていないエリアへのアクセスを行う場合には、内蔵メモリ２３０へのアクセス元を、検証対象回路２１０からソフトウェアシミュレータ１００に切り替える。これにより、ソフトウェアシミュレータ１００は、内蔵メモリ２３０のデータの退避を行い、内蔵メモリ２３０に対して検証対象回路２１０が必要とするエリアへのメモリモデル１０１の一部のデータの書き込みを実行することにより、検証対象回路２１０の検証が実行される。
【００３８】
図１に戻り、ブレイク制御回路２０２は、アクセス監視回路２２０からブレイク要求信号を取得した場合、ソフトウェアシミュレータ１００のメモリモデル１０１のデータから、新たにデータを取得するため、ブレイク信号をソフトウェアシミュレータ１００に出力する。さらに、ブレイク制御回路２０２は、ブレイク要求信号を取得した場合に、クロック制御回路２０３にもブレイク信号を出力する。
【００３９】
クロック制御回路２０３は、ハードウェアクロック生成回路２０４から、ハードウェアクロックの供給を受けている。ここで、アクセス監視回路２２０からブレイク要求信号を取得し、ブレイク制御回路２０２からブレイク信号を取得した場合、検証対象回路２１０に供給しているハードウェアクロックを停止する。さらに、アクセス監視回路２２０及び内蔵メモリ２３０に対して、ソフトウェアクロックを供給する。ここで、クロック制御回路２０３は、アクセス監視回路２２０からブレイク要求信号を取得した場合又はブレイク制御回路２０２からブレイク信号を取得した場合のどちらか一方の場合において、検証対象回路２１０に供給しているハードウェアクロックを停止し、さらに、アクセス監視回路２２０及び内蔵メモリ２３０に対してソフトウェアクロックを供給してもよい。
【００４０】
ここで、ブレイク信号を取得したソフトウェアシミュレータ１００は、内蔵メモリ２３０のデータの退避を行い、要求されているエリアのデータをメモリモデル１０１から内蔵メモリ２３０へ転送する。この時、具体的には、メモリモデル１０１のデータはアクセス監視回路２２０へ転送され、アクセス元設定回路２２３により、内蔵メモリ２３０への経路が設定される。アクセス監視回路２２０及び内蔵メモリ２３０はソフトウェアクロックで動作しているため、ソフトウェアシミュレータ１００のメモリモデル１０１から転送されるデータを内蔵メモリ２３０へ書き込む際にも、ソフトウェアクロックにより動作することとなる。
【００４１】
ソフトウェアシミュレータ１００によるメモリモデル１０１から内蔵メモリ２３０に対するデータの転送が完了後、ソフトウェアシミュレータ１００は、エリア設定回路２２２に対して、内蔵メモリ２３０に転送したデータのエリア情報を入力する。これにより、アクセス監視回路２２０は、ブレイク要求信号を解除する。ブレイク要求信号の解除通知を取得したクロック制御回路２０３は、検証対象回路２１０にハードウェアクロックの供給を開始する。さらに、アクセス監視回路２２０及び内蔵メモリ２３０に対して、ソフトウェアクロックの供給を中止し、ハードウェアクロックの供給を開始する。
【００４２】
次に、図３を用いて、本発明の実施の形態１にかかるクロック制御回路２０３の構成について詳細に説明する。クロック制御回路２０３は、クロックマスク回路２４０と、クロックセレクタ回路２５０を備えている。クロックマスク回路２４０は、ブレイク制御回路２０２からブレイク信号を取得した場合、ハードウェアクロック生成回路２０４から供給されているハードウェアクロックの検証対象回路２１０への供給を停止する。さらに、クロックセレクタ回路２５０に対して、ソフトウェアクロックをアクセス監視回路２２０及び内蔵メモリ２３０に対して供給するよう制御する。クロックセレクタ回路２５０は、クロックマスク回路２４０から、アクセス監視回路２２０及び内蔵メモリ２３０に対してソフトウェアクロックを供給するよう通知を受けた時は、ソフトウェアクロックの供給を行う。
【００４３】
ソフトウェアシミュレータ１００によって、アクセス監視回路２２０内のエリア設定回路２２２に内蔵メモリ２３０に保持しているエリアの設定値の書き換えが行われると、ブレイク要求信号は解除される。この場合、クロックマスク回路２４０は、検証対象回路２１０にハードウェアクロックの供給を再開し、クロックセレクタ回路２５０は、アクセス監視回路２２０及び内蔵メモリ２３０に対してソフトウェアクロックからハードウェアクロックに切り替えてクロックの供給を行う。
【００４４】
次に、図４を用いて、本発明の実施の形態１にかかる協調シミュレーションシステムの処理の流れにつき説明を行う。初めに、検証対象回路２１０から、内蔵メモリ２３０に対してアクセスが行われる（Ｓ１１）。具体的には、内蔵メモリ２３０のあるアドレスに対してデータの書き込みもしくは読み出しを行うものである。
【００４５】
次に、アドレス比較回路２２１は、検証対象回路２１０から内蔵メモリ２３０に対してアクセスされたアドレスが、内蔵メモリ２３０によってデータが保持されているエリアか否かを判定する（Ｓ１２）。具体的には、検証対象回路２１０が指定する内蔵メモリ２３０のアドレスが、エリア設定回路２２２に設定されているエリアに含まれているか否かを判定する。検証対象回路２１０によりアクセスされたアドレスが、内蔵メモリ２３０にデータを保持しているエリアである場合は、Ｓ１１の処理を再度実施する。
【００４６】
次に、アドレス比較回路２２１は、検証対象回路２１０から内蔵メモリ２３０に対してアクセスされたアドレスが、内蔵メモリ２３０によってデータが保持されているエリアでないと判断した場合、ブレイク要求信号をブレイク制御回路２０２に出力するとともに、クロック制御回路２０３に出力する。ブレイク要求信号を取得したブレイク制御回路２０２は、ブレイク信号をソフトウェアシミュレータ１００に出力する（Ｓ２１）。
【００４７】
次に、クロック制御回路２０３は、アクセス監視回路２２０及び内蔵メモリ２３０に対して供給するクロックをソフトウェアクロックに切り替えるとともに（Ｓ２２）、検証対象回路２１０に供給していたハードウェアクロックを停止する（Ｓ２３）。
【００４８】
次に、ソフトウェアシミュレータ１００がブレイク信号を取得した際に（Ｓ２４）、ソフトウェアシミュレータ１００は、内蔵メモリ２３０のデータの退避を行う（Ｓ２５）。
【００４９】
次に、ソフトウェアシミュレータ１００は、内蔵メモリ２３０に対して、メモリモデル１０１にある必要なデータの書き込みを行う（Ｓ２６）。検証対象回路２１０が必要とするデータは、ブレイク信号によって通知されてもよい。
【００５０】
次に、ソフトウェアシミュレータ１００は、エリア設定回路２２２に対して、内蔵メモリ２３０に書き込みを行ったデータのエリア情報を設定する（Ｓ２７）。
【００５１】
次に、エリア情報が設定されたことにより、ブレイク制御回路２０２はブレイク信号の解除を行う（Ｓ２８）。
【００５２】
次に、クロック制御回路２０５は、ブレイク信号の解除によりハードウェアクロック生成回路２０４に駆動を切り替えて内蔵メモリ２３０及びアクセス監視回路２２０に対して、ハードウェアクロックの供給を再開する（Ｓ２９）とともに、クロック制御回路２０５は、ブレイク信号の解除によりハードウェアクロック生成回路２０４に駆動を切り替えて検証対象回路２１０に対してハードウェアクロックの供給を再開する（Ｓ３０）
【００５３】
Ｓ２９およびＳ３０が行われた後、Ｓ１１に戻りＳ１１とＳ１２を繰り返すことで、通常の内蔵メモリ２３０が保持しているデータを使用する場合の協調シミュレーションを実行する。
【００５４】
次に、図５を用いて、本発明の実施の形態１にかかるクロックの切り替えタイミングについて説明する。通常の協調シミュレーションの状態であるＴ１の期間において、検証対象回路２１０用のクロックとアクセス監視回路２２０及び内蔵メモリ２３０のクロックは、ハードウェアクロックで動作する。
【００５５】
Ｔ２の期間においては、内蔵メモリ２３０にデータ保持していないエリアへのアクセスが発生した際に、アクセス監視回路２２０からブレイク要求信号が出力される。それに伴い、ブレイク制御回路２０４からブレイク信号が出力される。ここで、ブレイク要求信号を取得したクロックセレクタ回路２５０は、アクセス監視回路２２０及び内蔵メモリ２３０に供給するクロックをソフトウェアクロックによる駆動に切り替える。また、ブレイク信号を取得したクロックマスク回路は、検証対象回路２１０に供給していたハードウェアクロックを停止する。さらに、ソフトウェアシミュレータ１００は、内蔵メモリ２３０のデータの退避を行う。つまり、内蔵メモリ２３０が保持しているデータの読み出しを行い、ソフトウェアシミュレータ１００内にデータを保存する。
【００５６】
Ｔ３の期間においては、ソフトウェアシミュレータ１００は、内蔵メモリ２３０に対して、検証対象回路２１０が必要とするデータの書き込みを行う。この時、ソフトウェアクロックを用いてデータの書き込みを行う。
【００５７】
Ｔ４の期間においては、ソフトウェアシミュレータ１００からエリア設定回路２２２に対して設定値の書き換えを行う。それに伴い、ブレイク要求信号及びブレイク信号が解除され、検証対象回路２１０、アクセス監視回路２２０及び内蔵メモリ２３０に供給されるクロックが、ハードウェアクロック生成回路２０４による駆動に切り替わる。
【００５８】
Ｔ５の期間においては、検証対象回路２１０、アクセス監視回路２２０及び内蔵メモリ２３０に、ハードウェアクロックが供給される。
【００５９】
以上説明したように、本発明の実施の形態１にかかる協調シミュレーションシステムを用いることにより、ハードウェアエミュレータに搭載する内蔵メモリを用いて検証対象回路の検証を実行する時は、高速なハードウェアクロックで動作することができる。さらに、検証対象回路の検証の実行に用いられるデータを内蔵メモリが保持していない場合は、ソフトウェアシミュレータが保持するメモリモデルのデータから、ソフトウェアクロックを用いて検証対象回路が必要とするデータを内蔵モデルに書き込みを行う。このように使用するクロックを検証実施中の動作に基づいて選択することにより、高速な協調シミュレーションを実行することが可能となる。
【００６０】
（実施の形態２）
図６を用いて本発明の実施の形態２にかかる協調シミュレーションシステムの構成について説明する。ハードウェアエミュレータ２００は、複数のアクセス監視回路及び内蔵メモリを備える構成を示している。図６には、アクセス監視回路２２０、２６０と内蔵メモリ２３０、２７０と、それぞれ２つのアクセス監視回路及び内蔵メモリを示しているが、３つ以上備えてもよい。さらに、複数の内蔵メモリがアクセス監視回路を共有してもよい。アクセス監視回路及び内蔵メモリを複数有する構成以外は図１の構成と同様であるため、説明を省略する。
【００６１】
検証対象回路２１０が内蔵メモリ２３０もしくは２７０にアクセスした際に、一方の内蔵メモリにおいて、内蔵メモリが保持していないエリアへのアクセスであった場合、実施の形態１と同様の処理を行うことにより、ソフトウェアシミュレータ１００は、内蔵メモリのデータ退避と必要なエリアのデータ書き込みを行う。
【００６２】
ここで、検証対象回路２１０が内蔵メモリ２３０及び２７０にアクセスした際に、内蔵メモリ２３０及び２７０が保持していないエリアへのアクセスであった場合、ソフトウェアシミュレータ１００は、内蔵メモリ２３０及び２７０の両方に対してデータの退避及び必要なエリアのデータ書き込みを行う。さらに、アクセス監視回路２２０及び２６０に対して、書き込みを行ったデータのエリア情報を設定する。
【００６３】
この時、ソフトウェアシミュレータ１００が、アクセス監視回路２２０及び２６０の両方に対してエリア情報を書き換えなければ、ハードウェアクロックでの高速な協調シミュレーションを再開しない。
【００６４】
また、検証対象回路２１０が内蔵メモリ２３０及び２７０にアクセスする際に、検証対象回路２１０がアクセスしようとするエリア情報と、アクセス監視回路２２０及び２６０が有するエリア設定情報を比較して、適切な内蔵メモリにアクセスを行うよう、制御する回路を設けてもよい。その際に、当該回路は、アクセス監視回路２２０もしくは２６０に設けてもよいし、アクセス監視回路２２０及び２６０とは別の回路としてもよい。
【００６５】
以上説明したように、本発明の実施の形態２にかかる協調シミュレーションシステムを用いることにより、ハードウェアエミュレータに搭載する内蔵メモリを増加させることができ、ソフトウェアシミュレータのメモリモデルとの通信機会が減少することにより、協調シミュレーションをより高速に動作させることが可能である。
【００６６】
（実施の形態３）
次に、図７を用いて本発明の実施の形態３にかかる協調シミュレーションシステムの構成について説明する。図７は、図６の協調シミュレーションシステムの構成に、アクセス監視回路の制御を伴わない内蔵メモリ２８０を追加したものである。その他の構成については、図６と同様であるため説明を省略する。
【００６７】
内蔵メモリ２８０は、検証対象回路２１０が、特定の検証動作について用いる全てのデータを保持する。つまり、内蔵メモリ２８０は、ソフトウェアシミュレータ１００によってデータを更新されることはなく、検証対象回路２１０が実行する特定の検証動作時に用いられるものである。さらに、内蔵メモリ２８０のデータはソフトウェアシミュレータ１００により保持されることはない。これにより、内蔵メモリ２８０はソフトウェアシミュレータ１００により更新されることがないため、アクセス監視回路による制御を受ける必要はなく、常時ハードウェアクロックにより動作することが可能である。
【００６８】
以上説明したように、本発明の実施の形態３にかかる協調シミュレーションシステムを用いることにより、ソフトウェアシミュレータへのアクセスをさらに減少させることができる。これは、内蔵メモリの保持するデータを、特定の検証動作に特化したデータとすることで、内蔵メモリのデータ更新に伴うソフトウェアシミュレータへのアクセスを減少させることができるからである。
【００６９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００７０】
１００  ソフトウェアシミュレータ
１０１  メモリモデル
１０２  デバッグ環境
１０３  ソフトウェアクロック生成モデル
２００  ハードウェアエミュレータ
２０１  ユーザ回路
２０２  ブレイク制御回路
２０３  クロック制御回路
２０４  ハードウェアクロック生成回路
２１０  検証対象回路
２２０、２６０  アクセス監視回路
２２１  アドレス比較回路
２２２  エリア設定回路
２２３  アクセス元選択回路
２３０、２７０、２８０  内蔵メモリ
２４０  クロックマスク回路
２５０  クロックセレクタ回路
【図１】
2010250365.tif 000003
【図２】
2010250365.tif 000004
【図３】
2010250365.tif 000005
【図４】
2010250365.tif 000006
【図５】
2010250365.tif 000007
【図６】
2010250365.tif 000008
【図７】
2010250365.tif 000009
【図８】
2010250365.tif 000010
【図９】
2010250365.tif 000011