(57)【要約】【課題】ハードウェアエミュレータとシステムシミュレータの協調シミュレーション環境において、ハードウェアエミュレータとシステムシミュレータ間の信号数を減らすことなく通信量を減少させて、シミュレーション動作スピードを向上させる。【解決手段】ハードウェアエミュレータは、ハードウェアエミュレータからシステムシミュレータに出力する出力信号が変化した時のみ前記システムシミュレータに対し変化検出信号を出力する変化検出回路を備え、システムシミュレータは前記変化検出信号が出力された時のみ前記出力信号を取り込む。【選択図】      図１
2005332162.tif 000002
【特許請求の範囲】
【請求項１】
ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方式であって、前記ハードウェアエミュレータは前記ハードウェアエミュレータから前記システムシミュレータに出力する出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出回路を備え、前記システムシミュレータは前記変化検出信号が出力された時のみ前記出力信号を取り込むことを特徴とするハードウェア／ソフトウェア協調シミュレーション方式。
【請求項２】
前記変化検出回路は、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする請求項１に記載のハードウェア／ソフトウェア協調シミュレーション方式。
【請求項３】
ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方式であって、前記ハードウェアエミュレータは、複数の出力信号を前記システムシミュレータに対して出力すると共に前記出力信号ごとに前記出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出回路を備え、前記システムシミュレータは何れかの前記変化検出信号が出力された時のみ前記変化検出信号に対応する前記出力信号だけを取り込むことを特徴とするハードウェア／ソフトウェア協調シミュレーション方式。
【請求項４】
前記変化検出回路は、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする請求項３に記載のハードウェア／ソフトウェア協調シミュレーション方式。
【請求項５】
前記ハードウェアエミュレータは、さらに、前記複数の変化検出回路が出力する複数の前記変化検出信号の論理和演算を行って第２の変化検出信号を前記システムシミュレータに対して出力する論理和回路を備え、前記システムシミュレータは前記第２の変化検出信号が出力された時のみ複数の前記変化検出信号に対応する全ての前記出力信号を取り込むことを特徴とする請求項３に記載のハードウェア／ソフトウェア協調シミュレーション方式。
【請求項６】
ユーザロジックを実装するハードウェアエミュレータと動作モデルとデバグ環境を実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方式であって、前記ハードウェアエミュレータは前記システムシミュレータの前記デバグ環境だけが必要とする観測用信号を協調動作実行時に蓄積する記憶手段を備え、前記システムシミュレータは協調動作実行時には前記記憶手段に蓄積された前記観測用信号を取り込まないことを特徴とするハードウェア／ソフトウェア協調シミュレーション方式。
【請求項７】
前記システムシミュレータは、協調動作非実行時に前記記憶手段に蓄積された前記観測用信号を取り込むことを特徴とする請求項６に記載のハードウェア／ソフトウェア協調シミュレーション方式。
【請求項８】
ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方法であって、前記ハードウェアエミュレータは前記ハードウェアエミュレータから前記システムシミュレータに出力する出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出ステップを実行し、前記システムシミュレータは前記変化検出信号が出力された時のみ前記出力信号を取り込むことを特徴とするハードウェア／ソフトウェア協調シミュレーション方法。
【請求項９】
前記変化検出ステップにおいては、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする請求項８に記載のハードウェア／ソフトウェア協調シミュレーション方法。
【請求項１０】
ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方法であって、前記ハードウェアエミュレータは、複数の出力信号を前記システムシミュレータに対して出力すると共に前記出力信号ごとに前記出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出ステップを実行し、前記システムシミュレータは何れかの前記変化検出信号が出力された時のみ前記変化検出信号に対応する前記出力信号だけを取り込むことを特徴とするハードウェア／ソフトウェア協調シミュレーション方法。
【請求項１１】
前記変化検出ステップにおいては、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする請求項１０に記載のハードウェア／ソフトウェア協調シミュレーション方法。
【請求項１２】
前記ハードウェアエミュレータは、さらに、前記複数の変化検出ステップで出力される複数の前記変化検出信号の論理和演算を行って第２の変化検出信号を前記システムシミュレータに対して出力する論理和演算ステップを実行し、前記システムシミュレータは前記第２の変化検出信号が出力された時のみ複数の前記変化検出信号に対応する全ての前記出力信号を取り込むことを特徴とする請求項１０に記載のハードウェア／ソフトウェア協調シミュレーション方法。
【請求項１３】
ユーザロジックを実装するハードウェアエミュレータと動作モデルとデバグ環境を実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方法であって、前記ハードウェアエミュレータは前記システムシミュレータの前記デバグ環境だけが必要とする観測用信号を協調動作実行時に蓄積する記憶ステップを実行し、前記システムシミュレータは協調動作実行時には前記記憶ステップで蓄積された前記観測用信号を取り込まないことを特徴とするハードウェア／ソフトウェア協調シミュレーション方法。
【請求項１４】
前記システムシミュレータは、協調動作非実行時に前記記憶ステップで蓄積された前記観測用信号を取り込むことを特徴とする請求項１３に記載のハードウェア／ソフトウェア協調シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハードウェア／ソフトウェア協調シミュレーション方式及びその方法に関し、特に、ハードウェアエミュレータとシステムシミュレータの協調シミュレーション環境において、ハードウェアエミュレータとシステムシミュレータ間の信号数を減らすことなく通信量を減少させて、シミュレーション動作スピードを向上させることを可能とする、ハードウェア／ソフトウェア協調シミュレーション方式及びその方法に関する。
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ・Ｓｃａｌｅ・Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ：大規模集積回路）システムの設計においては、システムアーキテクチャの検証および性能評価を、シミュレーションによって行うことが一般的となってきている。シミュレーションの方式は様々であるが、一例として、ＬＳＩ等の大規模回路の論理シミュレーションを高速化するために、ハードウェアエミュレータ等を用いたシミュレーションアクセラレータと呼ばれる専用のハードウェアも用いられている（例えば、特許文献１参照。）。
【０００３】
シミュレーションアクセラレータは、通常、１つの筐体内に複数枚の基板を備えて構成され、各基板に組み込まれている多数のプログラマブル素子に、シミュレーション対象となる回路の論理を書き込んでおくようになっている。このことにより、実際に回路を作成することなく、シミュレーションアクセラレータを、シミュレーション対象の回路として動作させることができるようになっている。
【０００４】
しかし、近年のＬＳＩの一層の大規模化や、また、プログラマブル素子の規模制限などにより、ＬＳＩの全ての論理回路をシミュレーションアクセラレータ或いはハードウェアエミュレータ上に実現することが困難な状況にもなってきている。そこで、ソフトウェアによりシミュレーションを行うシステムシミュレータ（或いは、サイクルベースシミュレータ）とハードウェアエミュレータとを協調させて動作させることによってシミュレーションを行う協調シミュレーション方式が用いられるようになってきている。
【０００５】
図９に示す従来の協調シミュレーション方式においては、システムシミュレータ１とハードウェアエミュレータ２からなる協調シミュレーション環境を構築している。そして、検証したいＬＳＩシステムのアーキテクチャは、ソフトウェアでシミュレートされる動作モデル６と、ハードウェアでエミュレートされるユーザロジック（論理回路）５とから構成されるようになっている。システムシミュレータ１は動作モデル６を実装しており、ハードウェアエミュレータ２はユーザロジック５を実装している。協調シミュレーションの実行時には、システムシミュレータ１から入力信号３がハードウェアエミュレータ２に送出され、また、ハードウェアエミュレータ２から出力信号４がシステムシミュレータ１に送出されるようになっている。ハードウェアエミュレータ２から送出される出力信号４を、信号波形表示等により観測するためのデバグ環境７を、システムシミュレータ１に実装する場合もある。
【０００６】
図９に示した協調シミュレーション環境においては、システムシミュレータ１に実装されている動作モデル６と、ハードウェアエミュレータ２のプログラマブル素子に構築されているユーザロジック５とを協調動作させる必要がある。このために、システムシミュレータ１からハードウェアエミュレータ２に対して同期クロックを供給するなどの方法が取られている。
【０００７】
しかしながら、システムシミュレータ１とハードウェアエミュレータ２間では、同期クロックの他にも、入力信号３、出力信号４として例示したような各種の信号が送受信される。そして、システムシミュレータ１とハードウェアエミュレータ２間で送受信される信号の通信量が多くなればなるほど、シミュレーション動作スピードが低下してしまうという課題がある。
【０００８】
上述した課題を解決するための一例として、コンピュータ上のシミュレータ及びハードウェアエミュレータ間でのデータ転送量が多い場合に、その転送速度がボトルネックとなって全体のシミュレーション速度が低下すること、を抑えられるようにする方法が提案されている（例えば、特許文献２参照。）。
【０００９】
上述の特許文献２の「システムシミュレーション方法」は、コンピュータ上のシミュレータとハードウェアエミュレータとを協調させて、システムアーキテクチャの検証及び性能解析のためのシミュレーションを行うに当たり、以下のような方法を採用している。すなわち、検証したいシステムの設計上位の動作モデルの動作シミュレーション結果を利用して、動作モデルを構成する各機能ブロック間の通信量を予め解析する。そして、コンピュータ上のシミュレータが割り当てられる機能ブロックのグループと、ハードウェアエミュレータが割り当てられる機能ブロックのグループとの間の境界通信路における通信量が最小になるように、各機能ブロックを、シミュレータ或いはエミュレータに割当てる。その後、シミュレーションを実行する。
【００１０】
このことにより、コンピュータ上のシミュレータとハードウェアエミュレータ間の境界通信路における通信量が最小となっているため、全体のシミュレーション速度が低下するのを抑えられるようになる、としている。
【００１１】
【特許文献１】特開２０００−２２２４４６号公報（第４頁、図１）
【特許文献２】特開２００３−０６７４３９号公報（第４−６頁、図１−１３）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述した従来の特許文献２に記載のシステムシミュレーション方法は、コンピュータ上のシミュレータとハードウェアエミュレータとの間の境界通信路における通信量が最小となるように、シミュレーションの事前に、各機能ブロックの割り振り先をシミュレータ上或いはエミュレータ上の何れかに決定するようにしている。しかし、シミュレーション実行時におけるシミュレータとエミュレータ間の実際の通信量を減少させることを考慮したものではない。
【００１３】
本発明は上述した事情を改善するために成されたものであり、従って本発明の目的は、ハードウェアエミュレータとシステムシミュレータの協調シミュレーション環境において、ハードウェアエミュレータとシステムシミュレータ間の信号数を減らすことなく通信量を減少させて、シミュレーション動作スピードを向上させることを可能とする、ハードウェア／ソフトウェア協調シミュレーション方式及びその方法、を提供することにある。
【課題を解決するための手段】
【００１４】
本発明のハードウェア／ソフトウェア協調シミュレーション方式は、ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方式であって、前記ハードウェアエミュレータは前記ハードウェアエミュレータから前記システムシミュレータに出力する出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出回路を備え、前記システムシミュレータは前記変化検出信号が出力された時のみ前記出力信号を取り込むことを特徴とする。
【００１５】
また、前記変化検出回路は、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする。
【００１６】
さらに、ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方式であって、前記ハードウェアエミュレータは、複数の出力信号を前記システムシミュレータに対して出力すると共に前記出力信号ごとに前記出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出回路を備え、前記システムシミュレータは何れかの前記変化検出信号が出力された時のみ前記変化検出信号に対応する前記出力信号だけを取り込むことを特徴とする。
【００１７】
また、前記変化検出回路は、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする。
【００１８】
さらに、前記ハードウェアエミュレータは、さらに、前記複数の変化検出回路が出力する複数の前記変化検出信号の論理和演算を行って第２の変化検出信号を前記システムシミュレータに対して出力する論理和回路を備え、前記システムシミュレータは前記第２の変化検出信号が出力された時のみ複数の前記変化検出信号に対応する全ての前記出力信号を取り込むことを特徴とする。
【００１９】
また、ユーザロジックを実装するハードウェアエミュレータと動作モデルとデバグ環境を実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方式であって、前記ハードウェアエミュレータは前記システムシミュレータの前記デバグ環境だけが必要とする観測用信号を協調動作実行時に蓄積する記憶手段を備え、前記システムシミュレータは協調動作実行時には前記記憶手段に蓄積された前記観測用信号を取り込まないことを特徴とする。
【００２０】
さらに、前記システムシミュレータは、協調動作非実行時に前記記憶手段に蓄積された前記観測用信号を取り込むことを特徴とする。
【００２１】
本発明のハードウェア／ソフトウェア協調シミュレーション方法は、ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方法であって、前記ハードウェアエミュレータは前記ハードウェアエミュレータから前記システムシミュレータに出力する出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出ステップを実行し、前記システムシミュレータは前記変化検出信号が出力された時のみ前記出力信号を取り込むことを特徴とする。
【００２２】
また、前記変化検出ステップにおいては、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする。
【００２３】
さらに、ユーザロジックを実装するハードウェアエミュレータと動作モデルを実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方法であって、前記ハードウェアエミュレータは、複数の出力信号を前記システムシミュレータに対して出力すると共に前記出力信号ごとに前記出力信号が変化することにより前記システムシミュレータに対し変化検出信号を出力する変化検出ステップを実行し、前記システムシミュレータは何れかの前記変化検出信号が出力された時のみ前記変化検出信号に対応する前記出力信号だけを取り込むことを特徴とする。
【００２４】
また、前記変化検出ステップにおいては、ある時点の出力信号を少なくとも１クロック遅延させた遅延信号と現時点における出力信号との排他的論理和演算を行う、ことを特徴とする。
【００２５】
さらに、前記ハードウェアエミュレータは、さらに、前記複数の変化検出ステップで出力される複数の前記変化検出信号の論理和演算を行って第２の変化検出信号を前記システムシミュレータに対して出力する論理和演算ステップを実行し、前記システムシミュレータは前記第２の変化検出信号が出力された時のみ複数の前記変化検出信号に対応する全ての前記出力信号を取り込むことを特徴とする。
【００２６】
また、ユーザロジックを実装するハードウェアエミュレータと動作モデルとデバグ環境を実装するシステムシミュレータとが協調してシミュレーションを行うハードウェア／ソフトウェア協調シミュレーション方法であって、前記ハードウェアエミュレータは前記システムシミュレータの前記デバグ環境だけが必要とする観測用信号を協調動作実行時に蓄積する記憶ステップを実行し、前記システムシミュレータは協調動作実行時には前記記憶ステップで蓄積された前記観測用信号を取り込まないことを特徴とする。
【００２７】
さらに、前記システムシミュレータは、協調動作非実行時に前記記憶ステップで蓄積された前記観測用信号を取り込むことを特徴とする。
【発明の効果】
【００２８】
本発明のハードウェア／ソフトウェア協調シミュレーション方式においては、ハードウェアエミュレータから送出される出力信号に変化があった場合にだけ、システムシミュレータが出力信号を取り込むようにしている。従って、ハードウェアエミュレータとシステムシミュレータ間の通信量が減少し、ハードウェア／ソフトウェア協調シミュレーションの動作スピードを向上させることができる。
【発明を実施するための最良の形態】
【００２９】
次に、本発明の実施の形態について図面を参照して説明する。
【００３０】
図１は、本発明のハードウェア／ソフトウェア協調シミュレーション方式の一実施形態を示すブロック図である。
【００３１】
図１に示す本実施の形態は、システムシミュレータ１とハードウェアエミュレータ２から構成されている。そして、シミュレーションによって検証したいＬＳＩシステムのアーキテクチャは、ソフトウェアでシミュレートされる動作モデル６と、ハードウェアでエミュレートされるユーザロジック（論理回路）５とから構成されるようになっている。
【００３２】
システムシミュレータ１は動作モデル６を実装しており、ハードウェアエミュレータ２はユーザロジック５を実装している。協調シミュレーションの実行時には、ハードウェアエミュレータ２にはシステムシミュレータ１からの入力信号３（複数ビット可）が入力され、また、ハードウェアエミュレータ２からは出力信号４（複数ビット可）がシステムシミュレータ１に送出される。入力信号３には、システムシミュレータ１からハードウェアエミュレータ２に供給される同期用クロック信号（クロック信号９とする）が含まれている。また、システムシミュレータ１には、ハードウェアエミュレータ２から送出される出力信号４を、信号波形表示等により観測するためのデバグ環境７が実装されている。
【００３３】
ハードウェアエミュレータ２には、出力信号４に変化があった時点で論理値「Ｈ（Ｈｉｇｈ）」の変化検出信号８を出力する変化検出回路２０が実装されている。変化検出回路２０は、ＤフリップフロップであるところのＦＦ２１と、排他的論理和演算を行う排他的論理和回路２３とから構成されている。ＦＦ２１は、データ入力端子に出力信号４が入力され、クロック入力端子には、入力信号３に含まれているクロック信号９が入力される。そして、入力データであるところの出力信号４を１クロック遅延させて出力端子に遅延信号２２として出力する。排他的論理和回路２３は、出力信号４と遅延信号２２との排他的論理和演算を行い、出力信号４が遅延信号２２と異なっていることを検出すると、変化検出信号８に論理値Ｈを出力する。
【００３４】
動作モデル６とユーザロジック５について詳述する。図１に示した本実施形態によって検証したいＬＳＩシステムのアーキテクチャは、複数の機能ブロックから構成されている。各機能ブロックの内の一部は、ハードウェアエミュレータ２でエミュレートされるようになっており、ハードウェアエミュレータ２内のＦＰＧＡ（Ｆｉｅｌｄ・Ｐｒｏｇｒａｍｍａｂｌｅ・Ｇａｔｅ・Ａｒｒａｙ：フィールドプログラマブルゲートアレー）などのプログラマブル素子上に、ユーザロジック５として構築されている。各機能ブロックの他の部分は、システムシミュレータ１でソフトウェアによりシミュレートされるようになっており、Ｃ言語等で記述される動作モデル６として構成されている。動作モデル６には、機能ブロックごとの機能・動作及び機能ブロック間の接続関係が記述されており、機能ブロックをシミュレーション動作させると、機能ブロック及びハードウェアエミュレータ２のユーザロジック５との間でデータ送受信がなされるようになっている。
【００３５】
次に、図２を参照して、図１に示した本実施形態の動作について説明する。
【００３６】
図２は、図１の本実施形態の動作を説明するタイミングチャートである。
【００３７】
図１に示したハードウェア／ソフトウェア協調シミュレーション方式により、協調シミュレーションが開始されると、システムシミュレータ１からは、クロック信号９を含む入力信号３がハードウェアエミュレータ２に送出されるようになる。また、ハードウェアエミュレータ２からは、出力信号４がシステムシミュレータ１に送出されるようになる。
【００３８】
ハードウェアエミュレータ２の変化検出回路２０は、出力信号４を常時監視しており、出力信号４が変化した時点で、変化検出信号８に論理値Ｈを出力する。システムシミュレータ１は、変化検出信号８を常時監視しており、変化検出信号８に論理値Ｈが出力された場合のみ、出力信号４の値を取り込んで動作モデル６に渡すようにする。変化検出信号８に論理値Ｈが出力されない間は、システムシミュレータ１はハードウェアエミュレータ２から送出される出力信号４を取り込む通信は行わない。このことにより、ハードウェアエミュレータ２とシステムシミュレータ１間の通信量が減少することとなる。
【００３９】
例えば、図２のｔ１時点における出力信号４の値は０ｘ００（１６進数の「００」、出力信号４が８ビットとした場合の例。）である。変化検出回路２０のＦＦ２１は、この「０ｘ００」の値が入力されると１クロック遅延させて、すなわちｔ２の時点で遅延信号２２として、排他的論理和回路２３に出力する。図２のｔ２時点の出力信号４の値は０ｘＦＦとなっており、ｔ１時点の値とは異なるものとなっている。変化検出回路２０の排他的論理和回路２３は、ｔ２時点の出力信号４の値０ｘＦＦとｔ２時点の遅延信号２２の値０ｘ００との排他的論理和演算を行い、出力信号４と遅延信号２２とが異なっているため、ｔ２時点で変化検出信号８に論理値Ｈを出力する。システムシミュレータ１は、ｔ２時点で変化検出信号８に論理値Ｈが出力されたので、ｔ２時点で出力信号４の値を取り込み、これを動作モデル６に渡す。
【００４０】
図２のｔ３からｔ６の間は、出力信号４の値は変化していないため、変化検出信号８に論理値Ｈは出力されていない。従ってこの間、システムシミュレータ１は出力信号４の値を取り込む通信を行わない。
【００４１】
図２のｔ７の時点になると、出力信号４の値は０ｘ０１に変化しているため、変化検出信号８には論理値Ｈが出力される。そして、システムシミュレータ１は、ｔ７時点の出力信号４「０ｘ０１」を取り込み、動作モデル６に渡す。
【００４２】
以上説明したように、本実施形態のハードウェア／ソフトウェア協調シミュレーション方式においては、ハードウェアエミュレータ２から送出される出力信号４に変化があった場合にだけ、システムシミュレータ１が出力信号４を取り込むようにしている。従って、ハードウェアエミュレータ２とシステムシミュレータ１間の通信量が減少し、通信のために必要とされていた処理を、本来のシミュレーションの処理に割り当てることができるようになる。よって、ハードウェア／ソフトウェア協調シミュレーションの動作スピードを向上させることができる。
【００４３】
次に、図３、図４を参照して、本発明の第２の実施形態について説明する。
【００４４】
図３は、本発明のハードウェア／ソフトウェア協調シミュレーション方式の第２の実施形態を示すブロック図である。
【００４５】
図３に示す第２の実施形態は、図１に示した第１の実施形態に比し、ハードウェアエミュレータ２から出力信号４−１と出力信号４−２が分割出力され、かつ、それぞれの出力信号４−１、４−２の変化を検出する変化検出回路２０−１、２０−２がハードウェアエミュレータ２に実装されている点でのみ異なるものである。従って、図３において図１に示す構成要素に対応するものは同一の参照数字または符号を付し、その説明を省略するものとする。
【００４６】
図３において、ハードウェアエミュレータ２から出力される信号は、例えばデータバス毎など、信号の種類毎にグループ分けが行われており、それぞれ、出力信号４−１と出力信号４−２とに分割されて出力されるようになっている。そして、ハードウェアエミュレータ２は、出力信号４−１に変化があった時点で論理値Ｈの変化検出信号８−１を出力する変化検出回路２０−１と、出力信号４−２に変化があった時点で論理値Ｈの変化検出信号８−２を出力する変化検出回路２０−２とを実装している。
【００４７】
変化検出回路２０−１は、ＤフリップフロップであるところのＦＦ２１−１と、排他的論理和演算を行う排他的論理和回路２３−１とから構成されている。ＦＦ２１−１は、データ入力端子に出力信号４−１が入力され、クロック入力端子には、入力信号３に含まれているクロック信号９が入力される。そして、入力データであるところの出力信号４−１を１クロック遅延させて出力端子に遅延信号２２−１として出力する。排他的論理和回路２３−１は、出力信号４−１と遅延信号２２−１との排他的論理和演算を行い、出力信号４−１が遅延信号２２−１と異なっていることを検出すると、変化検出信号８−１に論理値Ｈを出力する。
【００４８】
変化検出回路２０−２も同様に、ＤフリップフロップであるところのＦＦ２１−２と、排他的論理和演算を行う排他的論理和回路２３−２とから構成されている。ＦＦ２１−２は、データ入力端子に出力信号４−２が入力され、クロック入力端子には、入力信号３に含まれているクロック信号９が入力される。そして、入力データであるところの出力信号４−２を１クロック遅延させて出力端子に遅延信号２２−２として出力する。排他的論理和回路２３−２は、出力信号４−２と遅延信号２２−２との排他的論理和演算を行い、出力信号４−２が遅延信号２２−２と異なっていることを検出すると、変化検出信号８−２に論理値Ｈを出力する。
【００４９】
なお、システムシミュレータ１は、変化検出信号８−１を常時監視しており、変化検出信号８−１に論理値Ｈが出力された時のみ出力信号４−１の値を取り込んで動作モデル６に渡すようになっている。また、変化検出信号８−２も常時監視しており、変化検出信号８−２に論理値Ｈが出力された時のみ出力信号４−２の値を取り込んで動作モデル６に渡すようになっている。
【００５０】
次に、図４を参照して、図３に示した第２の実施形態の動作について説明する。
【００５１】
図４は、図３の第２の実施形態の動作を説明するタイミングチャートである。
【００５２】
図３に示したハードウェア／ソフトウェア協調シミュレーション方式により、協調シミュレーションが開始されると、システムシミュレータ１からは、クロック信号９を含む入力信号３がハードウェアエミュレータ２に送出されるようになる。また、ハードウェアエミュレータ２からは、出力信号４−１と出力信号４−２がシステムシミュレータ１に送出されるようになる。
【００５３】
ハードウェアエミュレータ２の変化検出回路２０−１は、出力信号４−１を常時監視しており、出力信号４−１が変化した時点で、変化検出信号８−１に論理値Ｈを出力する。システムシミュレータ１は、変化検出信号８−１を常時監視しており、変化検出信号８−１に論理値Ｈが出力された場合のみ、出力信号４−１の値を取り込んで動作モデル６に渡すようにする。変化検出信号８−１に論理値Ｈが出力されない間は、システムシミュレータ１はハードウェアエミュレータ２から送出される出力信号４−１を取り込む通信は行わない。
【００５４】
また、ハードウェアエミュレータ２の変化検出回路２０−２は、出力信号４−２を常時監視しており、出力信号４−２が変化した時点で、変化検出信号８−２に論理値Ｈを出力する。システムシミュレータ１は、変化検出信号８−２を常時監視しており、変化検出信号８−２に論理値Ｈが出力された場合のみ、出力信号４−２の値を取り込んで動作モデル６に渡すようにする。変化検出信号８−２に論理値Ｈが出力されない間は、システムシミュレータ１はハードウェアエミュレータ２から送出される出力信号４−２を取り込む通信は行わない。
【００５５】
このことにより、ハードウェアエミュレータ２とシステムシミュレータ１間の通信量が減少することとなる。
【００５６】
例えば、図４のｔ１時点における出力信号４−１の値は０ｘ０１である。変化検出回路２０−１のＦＦ２１−１は、この「０ｘ０１」の値が入力されると１クロック遅延させて、すなわちｔ２の時点で遅延信号２２−１として、排他的論理和回路２３−１に出力する。図４のｔ２時点の出力信号４−１の値は０ｘ０２となっており、ｔ１時点の値とは異なるものとなっている。変化検出回路２０−１の排他的論理和回路２３−１は、ｔ２時点の出力信号４−１の値０ｘ０２とｔ２時点の遅延信号２２−１の値０ｘ０１との排他的論理和演算を行い、出力信号４−１と遅延信号２２−１とが異なっているため、ｔ２時点で変化検出信号８−１に論理値Ｈを出力する。システムシミュレータ１は、ｔ２時点で変化検出信号８−１に論理値Ｈが出力されたので、ｔ２時点で出力信号４−１の値を取り込み、これを動作モデル６に渡す。
【００５７】
図４のｔ３以降は、出力信号４−１の値は変化していないため、変化検出信号８−１に論理値Ｈは出力されていない。従ってこの間、システムシミュレータ１は出力信号４−１の値を取り込む通信を行わない。
【００５８】
また、図４のｔ７時点において、出力信号４−２の値は０ｘ０３から０ｘ０４に変化している。変化検出回路２０−２は上述したと同様の動作を行って、ｔ７時点で変化検出信号８−２に論理値Ｈを出力する。システムシミュレータ１は、ｔ７時点で変化検出信号８−２に論理値Ｈが出力されたので、ｔ７時点で出力信号４−２の値を取り込み、これを動作モデル６に渡す。
【００５９】
以上説明したように、第２の実施形態におけるハードウェア／ソフトウェア協調シミュレーション方式においては、ハードウェアエミュレータ２から送出される信号を複数のグループの出力信号４−１、４−２に分割して出力している。そして、ハードウェアエミュレータ２から送出される出力信号４−１又は４−２に変化があった場合にだけ、システムシミュレータ１が出力信号４−１又は４−２の値を取り込むようにしている。従って、ハードウェアエミュレータ２から出力される信号の一部にのみ変化が生じた場合、システムシミュレータ１は変化が生じた一部の信号だけを取り込むようになっており、システムシミュレータ１が取り込む信号の数が減少する。その結果、ハードウェアエミュレータ２とシステムシミュレータ１間の通信量が更に減少し、ハードウェア／ソフトウェア協調シミュレーションの動作スピードを向上させることができる。
【００６０】
次に、図５を参照して、本発明の第３の実施形態について説明する。
【００６１】
図５は、本発明のハードウェア／ソフトウェア協調シミュレーション方式の第３の実施形態を示すブロック図である。
【００６２】
図５に示す第３の実施形態は、図３に示した第２の実施形態に比し、ハードウェアエミュレータ２から送出される１つのグループの信号（すなわち、出力信号４−１）の変化を検出する構成を、他の構成に変更した点でのみ異なるものである。従って、図５において図３に示す構成要素に対応するものは同一の参照数字または符号を付し、その説明を省略するものとする。
【００６３】
図５において、ハードウェアエミュレータ２から送出される１つのグループの信号（図３に示した出力信号４−１）は、１ビットの出力信号４−１−１〜４−１−ｎに分割されて送出されるようになっている。そして、ハードウェアエミュレータ２は、出力信号４−１−１〜４−１−ｎそれぞれについて、その変化を検出する変化検出回路２０−１−１〜２０−１−ｎを実装している。また、変化検出回路２０−１−１〜２０−１−ｎから出力される変化検出信号２４−１〜２４−ｎの論理和演算を行って変化検出信号８−１を出力する論理和回路２５を備えている。
【００６４】
変化検出回路２０−１−１〜２０−１−ｎはそれぞれ同一の構成であり、ＤフリップフロップであるところのＦＦ２１−１−１（ＦＦ２１−１−ｎ）と、排他的論理和演算を行う排他的論理和回路２３−１−１（排他的論理和回路２３−１−ｎ）とから構成されている。ＦＦ２１−１−１（２１−１−ｎ）は、データ入力端子に１ビットの出力信号４−１−１（４−１−ｎ）が入力され、クロック入力端子には、入力信号３に含まれているクロック信号９が入力される。そして、入力データであるところの出力信号４−１−１（４−１−ｎ）を１クロック遅延させて出力端子に遅延信号２２−１−１（２２−１−ｎ）として出力する。排他的論理和回路２３−１−１（２３−１−ｎ）は、出力信号４−１−１（４−１−ｎ）と遅延信号２２−１−１（２２−１−ｎ）との排他的論理和演算を行い、出力信号４−１−１（４−１−ｎ）が遅延信号２２−１−１（２２−１−ｎ）と異なっていることを検出すると、変化検出信号２４−１（２４−ｎ）として論理値Ｈを出力する。
【００６５】
論理和回路２５は、変化検出回路２０−１−１〜２０−１−ｎから出力される変化検出信号２４−１〜２４−ｎの論理和演算を行い、変化検出信号２４−１〜２４−ｎの何れかに論理値Ｈが出力されている場合に、変化検出信号８−１として論理値Ｈを出力する。
【００６６】
以上説明したように、図５に示す第３の実施形態においては、ハードウェアエミュレータ２から送出される１つのグループの信号、すなわち、出力信号４−１−１〜４−１−ｎの何れかに変化が生じた時点で、変化検出信号８−１に論理値Ｈが出力されるようになる。従って、システムシミュレータ１は、変化検出信号８−１を常時監視し、変化検出信号８−１に論理値Ｈが出力された時点で、出力信号４−１−１〜４−１−ｎの値を取り込んで動作モデル６に渡すようにする。
【００６７】
第３の実施形態においては、ハードウェアエミュレータ２から送出される出力信号４−１−１〜４−１−ｎの何れかに変化が生じた場合、各々の変化検出信号２４−１〜２４−ｎを論理和回路２５でまとめてシステムシミュレータ１に通知するようにしている。従って、ハードウェアエミュレータ２とシステムシミュレータ１間のインタフェース信号の数を減少させることができる。
【００６８】
次に、図６、図７、図８を参照して、本発明の第４の実施形態について説明する。
【００６９】
図１に示した第１の実施形態において、ハードウェアエミュレータ２から、出力信号４とは別の観測用信号４３がシステムシミュレータ１に出力される場合がある。すなわち、図６に示すように、ハードウェアエミュレータ２から、出力信号４に加え、観測用信号４３がシステムシミュレータ１に出力されるようになる場合である。観測用信号４３は、システムシミュレータ１の動作モデル６の動作には必要の無い信号であり、デバグ環境７だけに接続されるような信号である。例えば、ハードウェアエミュレータ２のユーザロジック５の内部レジスタ等の観測を行うための信号である。本発明の第４の実施形態は、図６に示した協調シミュレーション方式における観測用信号４３の観測を、協調シミュレーションの動作時以外の時に行う方式を提供するものである。
【００７０】
図７は、本発明のハードウェア／ソフトウェア協調シミュレーション方式の第４の実施形態を示すブロック図である。
【００７１】
図７において、本発明の第４の実施形態は、ユーザロジック５を実装するハードウェアエミュレータ２と、動作モデル６とデバグ環境７を実装するシステムシミュレータ１とから構成されている。また、協調シミュレーションの実行時には、ハードウェアエミュレータ２とシステムシミュレータ１間で、入力信号３と出力信号４が送受される。これらの構成要素は、図１に示した本発明の第１の実施形態と同一であるため、図７において図１に示す構成要素に対応するものは同一の参照数字または符号を付し、これ以上の説明を省略するものとする。
【００７２】
図７における観測用信号４３は、ハードウェアエミュレータ２からシステムシミュレータ１に対して出力される信号の内、システムシミュレータ１の動作モデル６の動作には必要のない信号であり、出力信号４とは別の信号である。観測用信号４３は、例えば、ハードウェアエミュレータ２のユーザロジック５の内部レジスタ等を観測するための信号であり、システムシミュレータ１に実装されるデバグ環境７のみで必要とされる信号である。
【００７３】
図７に示す実施形態において、観測用信号４３は、協調シミュレーション実行時に、ハードウェアエミュレータ２が備えるメモリ１０内に蓄積されるようになっている。そして、協調シミュレーションの非動作時に、システムシミュレータ１からメモリ読出し信号１１を与えることにより、メモリ１０内に蓄積された内容が、観測用信号４４としてシステムシミュレータ１のデバグ環境７に取り込まれる。なお、メモリ読出し信号１１は、メモリ１０の内容を読み出すために必要な信号の総称であり、クロック、メモリアドレス、イネーブル信号等を含む信号である。
【００７４】
次に、図８を参照して、図７に示した第４の実施形態の動作について説明する。
【００７５】
図８は、図７の第４の実施形態の動作を説明するタイミングチャートである。
【００７６】
図７に示したハードウェア／ソフトウェア協調シミュレーション方式により、協調シミュレーションが開始されると、図８のＴ１として示すように、システムシミュレータ１からは入力信号３がハードウェアエミュレータ２に送出されるようになる。また、ハードウェアエミュレータ２からは、出力信号４がシステムシミュレータ１に送出されるようになる。このＴ１の期間には、ハードウェアエミュレータ２からの観測用信号４３は、メモリ１０内に蓄積されている。
【００７７】
図８のＴ２の期間は、協調シミュレーションの動作が停止している。このＴ２の期間に、システムシミュレータ１からメモリ読出し信号１１をハードウェアエミュレータ２に与えることにより、Ｔ１の期間にメモリ１０内に蓄積された内容が観測用信号４４としてシステムシミュレータ１に取り込まれる。取り込まれたメモリ１０の内容はデバグ環境７で観測される。
【００７８】
図８のＴ３では、協調シミュレーションの動作が再開され、Ｔ１におけると同様に、ハードウェアエミュレータ２からの観測用信号４３は、メモリ１０内に蓄積されるようになる。
【００７９】
以上説明したように、第４の実施形態におけるハードウェア／ソフトウェア協調シミュレーション方式においては、ハードウェアエミュレータ２のユーザロジック５の内部レジスタ等の観測を行うための観測用信号４３は、協調シミュレーション動作時にはメモリ１０内に蓄積されるようになっている。そして、協調シミュレーションの非動作時に、これをシステムシミュレータ１で取り込むようになっている。従って、協調シミュレーションの動作に必要のない信号の通信を、協調シミュレーションの動作時には減少させることが可能となる。
【００８０】
なお、既述した第１〜第４の実施形態の構成を、それぞれ相互に組み合わせて実施するような構成としてもよい。
【図面の簡単な説明】
【００８１】
【図１】本発明のハードウェア／ソフトウェア協調シミュレーション方式の一実施形態を示すブロック図である。
【図２】図１の本実施形態の動作を説明するタイミングチャートである。
【図３】本発明のハードウェア／ソフトウェア協調シミュレーション方式の第２の実施形態を示すブロック図である。
【図４】図３の第２の実施形態の動作を説明するタイミングチャートである。
【図５】本発明のハードウェア／ソフトウェア協調シミュレーション方式の第３の実施形態を示すブロック図である。
【図６】図１の協調シミュレーション方式の変形例を示すブロック図である。
【図７】本発明のハードウェア／ソフトウェア協調シミュレーション方式の第４の実施形態を示すブロック図である。
【図８】図７の第４の実施形態の動作を説明するタイミングチャートである。
【図９】従来の協調シミュレーション方式の一例を示すブロック図である。
【符号の説明】
【００８２】
１    システムシミュレータ
２    ハードウェアエミュレータ
３    入力信号
４    出力信号
５    ユーザロジック
６    動作モデル
７    デバグ環境
８    変化検出信号
９    クロック信号
１０    メモリ
１１    メモリ読出し信号
２０    変化検出回路
２１    ＦＦ
２２    遅延信号
２３    排他的論理和回路
２４    変化検出信号
２５    論理和回路
４３    観測用信号
４４    観測用信号
【図１】
2005332162.tif 000003
【図２】
2005332162.tif 000004
【図３】
2005332162.tif 000005
【図４】
2005332162.tif 000006
【図５】
2005332162.tif 000007
【図６】
2005332162.tif 000008
【図７】
2005332162.tif 000009
【図８】
2005332162.tif 000010
【図９】
2005332162.tif 000011