(57)【特許請求の範囲】
【請求項１】
エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア／ソフトウェア協調検証装置であって、
前記エミュレータに展開された前記検証対象回路のメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納するエミュレータ側転送制御部と、
前記モード切替えをするときに、前記エミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送するエミュレータ側データ転送部と、
前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記命令セットシミュレータ側のメモリ領域のアドレスに前記データを書き込む前記命令セットシミュレータ側データ転送部と、
を具備することを特徴とするハードウェア／ソフトウェア協調検証装置。
【請求項２】
エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア／ソフトウェア協調検証装置であって、
前記命令セットシミュレータの検証で使用しているメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納する命令セットシミュレータ側転送制御部と、
前記モード切替えをするときに、前記命令セットシミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送する命令セットシミュレータ側データ転送部と、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記エミュレータ側のメモリ領域のアドレスに前記データを書き込む前記エミュレータ側データ転送部と、
を具備することを特徴とするハードウェア／ソフトウェア協調検証装置。
【請求項３】
前記エミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする請求項１に記載のハードウェア／ソフトウェア協調検証装置。
【請求項４】
前記命令セットシミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする請求項２に記載のハードウェア／ソフトウェア協調検証装置。
【請求項５】
前記エミュレータ側転送制御部としてＦＩＦＯ部を設け、前記検証対象回路のメモリ領域の対応するアドレスに前記メモリライトアクセスがあった前記アドレス番号を格納することを特徴とする請求項１に記載のハードウェア／ソフトウェア協調検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のハードウェアとソフトウェアの検証の技術に関する。
【背景技術】
【０００２】
従来、半導体集積回路の開発において、ハードウェア設計と並行してソフトウェア検証を行うためにハードウェア／ソフトウェア協調検証装置を用いている。
例えば、ＣＰＵコアやＤＳＰコアを集積したＳｏＣ（System On a Chip）などの開発を短期間に行う場合に、ハードウェアの設計と検証が完了する前に、ファームウェアやミドルウェアなどのソフトウェア開発を開始しなければならないことがある。ところが、実際にチップが完成する前にソフトウェア開発を行うためにはハード／ソフト協調検証を行う必要がある。
【０００３】
近年、ハード／ソフト協調検証を行う手法として、大きく分けて論理シミュレータ（ソフトシミュレータ）を使用する手法とハードウェア・エミュレータを使用する手法が用いられている。論理シミュレータを使用した手法は動作速度がエミュレータと比べて非常に低速であるため、大規模な回路を検証する場合は実用的ではない。そのため、エミュレータを使用する手法が用いられている。エミュレータを用いる手法には、命令セットシミュレータ（ＩＳＳ）を使用する手法、イン・サーキット・エミュレータ（ＩＣＥ）を使用する手法などある。
【０００４】
図１５に従来のＩＳＳを用いたハード／ソフト協調検証装置を示して説明する。一般的にハードウェア／ソフトウェア協調検証装置は、ソフトウェアのデバッグを行うソフトウェア開発用ホスト１５１と、インタフェース１５３（以後ＩＦとする）を経由して接続されたエミュレータ１５２によって構成される。ＩＦ１５３は、ＵＳＢ（Universal Serial Bus）、ＳＣＳＩ（Small Computer System Interface）のような汎用のインタフェースや独自インタフェースである。また、データ用、制御用というようにＩＦ１５３が複数の場合もある。
【０００５】
エミュレータ制御ソフト部１５４は、エミュレータの制御を行うソフトウェアを有し、基本的にはエミュレータ１５１の実行、停止等の操作を行う。
ソフトウェア開発環境部１５５は、ホスト上で動作する開発環境でＩＦ１５３を経由してエミュレータ１５２と接続される。ＳＷ開発環境部１５５には、ブレークポイントの設定、ステップ実行などを行うデバッガ１５６、ＣＰＵ１５７の命令コードをソフトウェアで実行し、ＣＰＵ１５１１のローカルメモリ１５１２などが含まれる。
【０００６】
エミュレータ制御部１５９は、ソフトウェア開発ホスト１５１上のエミュレータ制御ソフト部１５４からの指示に従ってエミュレータ１５２のハードウェア１５１３を制御する。ブレークポイント検出回路１５１０は、ソフトウェア開発ホスト１５１から設定されたブレークポイントを検出しエミュレータ制御部１５９に通知する。ＣＰＵ１５１１にはエミュレータ１５２に展開したＣＰＵコアまたは実ＣＰＵチップが使用される。ローカルメモリ１５１２は、基本的にＣＰＵ１５１１のみからアクセス可能で、エミュレータ内メモリに展開されるか実メモリが使用される。
【０００７】
ハードウェア部１５１３は、検証対象のハードウェアがエミュレータ１５２上に展開（マッピング）されている。共有メモリ１５１４はハードウェア部１５１３、ＣＰＵ部１５１１からアクセスされるメモリである。
【０００８】
実際の検証時の動作は次のようになる。図１６に示す通常モードでは、実行前にブレークポイントを設定しておく。最初はエミュレータ側のＣＰＵ１５１１で高速に動作させる。ＣＰＵ１５１１上のプログラムがブレークポイントに達した時点でＣＰＵ１５１１の動作をＩＳＳ側に切り替える。またはエミュレータ１５２側と同時に動作させる。そして、図１７に示すデバッグモードでは、ソフトウェア開発ホスト１５１でソフトウェアのデバッグを行う。また、通常モードとデバッグモードは任意の時点で切り替え可能である。通常モードで高速にブレークポイントまで到達し、その後、デバッグモードでソフトのデバッグを行う。
【０００９】
特許文献１によれば、互いに関連して動作するソフトウエアおよびハードウェアのシミュレーションを行う場合に、ソフトウェアのデバッグ機能とハードウエアのシミュレーション機能とを容易にリンクさせることができる。このシミュレーション方法によれば、命令精度のシミュレーションとサイクル精度のシミュレーションとを１つのシミュレーションモデルでサポートできる。また、マイコンボード等の開発におけるソフトウェアおよびハードウェアの開発期間を短縮し、開発コストを低減する提案されている。
【特許文献１】特開２００２−３６６６０２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、ＩＳＳやＩＣＥを使用する場合、ＩＳＳやＩＣＥ部分がボトルネックとなり、エミュレータの高速性を生かすことができない。また、ＣＰＵコアをエミュレータ上の再構成可能なエリアに展開する手法や実ＣＰＵチップを使用する手法の場合、エミュレータ単体ではソフトウェアのデバッグ機能が無いためソフトウェア開発には使用できないという問題がある。
【００１１】
また、高速性とデバッグ性を両立するハードウェア／ソフトウェア協調検証として、エミュレータ上に展開したＣＰＵコアとＩＳＳを切り替えて行う方法がある。しかしながら、この方法は高速性とデバッグ性を両立しているがＣＰＵ切り替え時のローカルメモリへの転送に時間がかかるという問題がある。
【００１２】
また、特許文献１などは、切り替え時にローカルメモリの全てのデータを転送していたため、転送や制御の時間がかかるという問題がある。
本発明は上記のような実情に鑑みてなされたものであり、高速でかつデバッグ性のよいハードウェア／ソフトウェア協調検証と、さらにＣＰＵ切り替え時間を高速化にするハードウェア／ソフトウェア協調検証装置とその方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の態様のひとつであるエミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは上記エミュレータで検証し、デバッグモードでは上記命令セットシミュレータで検証するモード切替可能なハードウェア／ソフトウェア協調検証装置であって、  上記エミュレータに展開された上記検証対象回路のメモリ領域へのメモリライトアクセスを監視して、上記メモリ領域のデータに変化があったアドレスのアドレス番号を格納するエミュレータ側転送制御部と、  上記モード切替えをするときに、上記エミュレータ側転送制御部が格納した上記アドレス番号と、上記アドレス番号が示す上記メモリ領域のデータを抽出し、上記アドレスと上記データを転送するエミュレータ側データ転送部と、
上記モード切替えをするときに、上記エミュレータ側データ転送部から転送された上記アドレス番号と上記データを受信して格納し、格納した上記アドレスに対応する上記命令セットシミュレータ側のメモリ領域のアドレスに上記データを書き込む上記命令セットシミュレータ側データ転送部と、  を具備する構成である。
【００１４】
本発明の他の態様のであるエミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは上記エミュレータで検証し、デバッグモードでは上記命令セットシミュレータで検証するモード切替可能なハードウェア／ソフトウェア協調検証装置であって、  上記命令セットシミュレータの検証で使用しているメモリ領域へのメモリライトアクセスを監視して、上記メモリ領域のデータに変化があったアドレスのアドレス番号を格納する命令セットシミュレータ側転送制御部と、  上記モード切替えをするときに、上記命令セットシミュレータ側転送制御部が格納した上記アドレス番号と、上記アドレス番号が示す上記メモリ領域のデータを抽出し、上記アドレスと上記データを転送する命令セットシミュレータ側データ転送部と、  上記モード切替えをするときに、上記命令セットシミュレータ側データ転送部から転送された上記アドレス番号と上記データを受信して格納し、格納した上記アドレスに対応する上記エミュレータ側のメモリ領域のアドレスに上記データを書き込む上記エミュレータ側データ転送部と、
を具備する構成である。
【００１５】
好ましくは、上記エミュレータ側転送制御部として、上記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、上記メモリライトアクセスがあったアドレスの上記フラグ部を有効にして上記アドレス番号を示す構成でもよい。
【００１６】
好ましくは、上記命令セットシミュレータ側転送制御部として、上記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、上記メモリライトアクセスがあったアドレスの上記フラグ部を有効にして上記アドレス番号を示す構成としてもよい。
【００１７】
好ましくは、上記エミュレータ側転送制御部としてＦＩＦＯ部を設け、上記検証対象回路のメモリ領域の対応するアドレスに上記メモリライトアクセスがあった上記アドレス番号を格納する構成としてもよい。
【００１８】
上記構成により、通常モードとデバッグモードの切り替え時間が短縮され、デバッグ性能を向上する。
【発明の効果】
【００１９】
本発明によれば、通常モードとデバッグモードの切り替え時間が短縮され、デバッグ性能を向上させることができる。
【発明を実施するための最良の形態】
【００２０】
以下図面に基づいて、本発明の実施形態について詳細を説明する。
（原理説明）
本発明によるハードウェア／ソフトウェア協調検証装置の構成を図１に示す。ソフトウェアのデバッグを行うソフトウェア開発用ホスト１と、インタフェース３（以後ＩＦとする）を経由して接続されたエミュレータ２によって構成される。
【００２１】
ＩＦ３は、ソフトウェア開発用ホスト１とエミュレータ２を接続するためのインタフェースであり、エミュレータ制御をする情報、データの転送に使用する。ＩＦ３のインタフェース規格はＵＳＢ、ＳＣＳＩ、Ｅｔｈｅｒｎｅｔ（登録商標）などの汎用のものでも専用のものでもよい。専用の場合はホストのワークステーション／ＰＣ等にインタフェースカードを取り付ける。また、ソフトウェア開発ホスト１とエミュレータ２間のＩＦ３は図１のように１系統だけでもよい。また、エミュレータ２の制御はＥｔｈｅｒｎｅｔ（登録商標）、データ転送は専用という様に複数あってもよい。また、エミュレータ２の制御をするホストがソフトウェア開発ホスト１と異なる場合、複数のＩＦ３を使用することになる。
（ソフトウェア開発ホスト）
ソフトウェア開発用ホスト１は、エミュレータ制御ソフト部４、ソフトウェア開発環境部５を備えている。そして、ソフトウェア開発用ホスト１は検証対象回路上で動作するソフトウェアのデバッグ作業を行うホストである。
【００２２】
エミュレータ制御ソフト部４は、エミュレータ２の制御を行うソフトウェアを有し、エミュレータ２の実行、停止等の操作を行う。インターフェースＩＦ３を介して接続されたホスト上で動作する。図１のようにソフトウェア開発ホスト１上で動作する場合もあるが、エミュレータ制御用のホストが別にあり、そのホスト上で動作してもよい。
【００２３】
ソフトウェア開発環境部５は、デバッガ６、ＣＰＵ７（ＩＳＳ）、ローカルメモリ８（ＩＳＳ：メモリ領域）、転送制御部１５（フラッグｏｒＦＩＦＯ領域）、データ転送部１６、使用するＣＰＵ向けのコンパイラを有する。これらのうち、コンパイラ、デバッガ、ＩＳＳについては組み込み向けＣＰＵの開発環境として一般的にＣＰＵベンダより提供されるものである。ただし、コンパイラについては本発明とは直接の関係がないため、図１には記述しない。
【００２４】
デバッガ６は、ブレークポイント、ステップ実行などのソフトウェアデバッグのさいに使用する。図１ではＩＳＳと分かれたブロックとなっているが、ソフトウェア開発環境部５としては一体化したインターフェースで操作してよい。
【００２５】
ＣＰＵ７（ＩＳＳ）は、コンパイラなどによって生成されたオブジェクトコードをソフトウェアで解釈して実行し、実際のＣＰＵと同等の動作をソフトウェア的に実現したものである。例えば、デバッグモード時にのみ動作し、検証対象回路上で動作するソフトウェアをデバッグするさいに使用する。ハードウェアと接続する場合は、ＣＰＵの内部状態やメモリの内容を転送するためにＩＳＳ内のデータをＩＳＳ外とやり取りする仕組みが必要となる（ＡＰＩ等）。そのためＡＰＩ等を持たないＩＳＳの場合にはＡＰＩ等を持つＩＳＳを用意する必要がある。
【００２６】
ローカルメモリ８は、ＣＰＵ７からのみアクセスされるメモリのことである。ＩＳＳに含まれる。本発明では、デバッグモード（ソフト側ＣＰＵ（ＩＳＳ）が動作）と通常モード（ハード側ＣＰＵが動作）との切替のさいにＣＰＵの状態を同じにするためにローカルメモリの内容を転送する必要がある。本発明はそのさいの高速化を行うためのものである。
【００２７】
転送制御部１５、１８（フラッグｏｒＦＩＦＯ領域）は、デバッグモードと通常モード切替時のローカルメモリ８とローカルメモリ１２のデータ転送高速化に使用する。
後述するフラグ方式の場合は、１ビット×ローカルメモリのワード数分の領域を使用する。（ローカルメモリ１ワードが１ビットに対応）。
【００２８】
また、ＦＩＦＯ方式の場合は、ローカルメモリのアドレス幅より大きいビット数（ローカルメモリのアドレスを格納）×任意の数の領域を使用する。また、ＦＩＦＯ方式では、何ワード分のアドレスを格納するかによって必要な領域が変わってくる。ＦＩＦＯ部がフルになったさいのデータ転送動作のオーバーヘッドが大きい場合は、ＦＩＦＯ部がフルになる回数を減らすために保持するアドレスのワード数を多くする。ＦＩＦＯ部がフルになったさいのオーバーヘッドが小さいとき、または転送制御部１５、１８（フラッグｏｒＦＩＦＯ領域）に使用するメモリ等を減らしたいときは、保持するアドレスのワードを少なくするというような使い方ができる。ソフトウェア開発用ホスト１側では、デバッグモードから通常モードへの切替時のデータ転送高速化のさいに使用する。配列等を用いてソフトウェア的に実現する（メモリを使用）。
【００２９】
データ転送部１６は、デバッグモードから通常モードへ切り替えるさいのローカルメモリデータ転送高速化のために使用する。後述するフラグ方式ではモード切替時、ＦＩＦＯ方式ではモード切替時およびＦＩＦＯフル時、ＦＩＦＯ方式での随時転送ではモード切替時とＦＩＦＯフル時と各モードでの動作時にローカルメモリ１２のデータを転送する。ソフトウェア開発用ホスト１側においては、データ転送部１６はデバッグモードから通常モード切替時のデータ転送高速化のさいに使用する。ソフトウェアで実現してもよい。
（エミュレータ）
エミュレータ２は、エミュレータ制御部９、ブレークポイント検出回路１０、ＣＰＵ１１、ローカルメモリ１２（メモリ領域）、ハードウェア１３（ＨＷ）、共有メモリ１４、データ転送部１７、転送制御部１８（フラッグｏｒＦＩＦＯ領域）を有する。また、エミュレータ２はハードウェアの論理検証を行うための装置で、検証対象の回路を再構成可能なデバイスに展開（マッピング）して高速に動作させて検証を行う。また、クロックの動作開始、停止などの実行制御機能、波形プローブ、トリガなどのデバッグ機能、外部モジュールとの接続、テストデータの入出力機能なども備える。
【００３０】
再構成可能なデバイスとしては、主にＦＰＧＡ、専用プロセッサ等が用いられる。また、検証対象回路内のメモリを展開するためのメモリも備える。本発明においてはハードウェア／ソフトウェア協調検証装置の一部で、ハードウェアの検証を行う部分となる。
【００３１】
エミュレータ制御部９は、ソフトウェア開発ホスト２上のエミュレータ制御ソフトからの指示に従ってエミュレータ２のハードウェアを制御する。実際のエミュレータハードウェアの各ブロックの制御を、エミュレータ制御ソフト部４とインターフェースＩＦ３を経由して通信して行うことで、検証対象回路の動作制御、デバッグ機能等を実現する。
【００３２】
ブレークポイント検出回路１０は、ソフトウェア開発ホスト１から設定されたブレークポイントを検出しエミュレータ制御部９に通知する。ソフトウェア開発環境部５で指定したブレークポイントに到達したことを検出する回路で、転送制御部１５（フラグｏｒＦＩＦＯ領域）と同様にエミュレータ２の専用ハードとして実現される場合と、ソフトウェアによって自動生成されて展開される場合がある。
【００３３】
ＣＰＵ１１は、エミュレータ２に展開したＣＰＵコアまたは実ＣＰＵチップが使用される。通常モード時に動作する。ＣＰＵはハードウェア記述言語で記述されたソースを論理合成して展開する場合の他に実チップを使用する場合も考えれられる。
【００３４】
ローカルメモリ１２は、基本的にＣＰＵ１１のみからアクセス可能で、エミュレータ内メモリに展開されるか実メモリが使用される。エミュレータ２側(ハード側)のローカルメモリ１２は、通常モード時に動作する。ローカルメモリ１２はＳｏＣ上の内部メモリである場合が多い。
【００３５】
ハードウェア部１３は、検証対象のハードウェアがエミュレータ２上に展開されている。ＣＰＵ１１、共有メモリ１４とデータのやり取りを行う。
共有メモリ１４は、ハードウェア部１３、ＣＰＵ部１１からアクセスされるメモリである。通常モード、デバッグモードの両方で動作し、共有メモリ１４は大容量のチップ外メモリであってもよい。
【００３６】
データ転送部１７と転送制御部１８は切り替えの高速化を実現している。転送制御部１８は、通常動作時またはデバッグ時に、ローカルメモリ１２内の変化したデータ値の情報を保持しておき、モード切替時にデータ転送部１７が変化したアドレスのデータ値だけ転送することで高速化を実現する。
（動作説明）
切り替え時のフローを図２に示す。同図Ａは通常モードからデバッグモードへの切替えフロー図である。
【００３７】
ステップＳ１では、ブレークポイント検出回路１０がブレークポイントを検出しエミュレーション制御部９へ通知をする。
ステップＳ２では、エミュレーション制御部９からの信号によりＰＣレジスタ値等のＣＰＵの状態を示すデータを転送する。
【００３８】
ステップＳ３では、エミュレーション制御部９からの指示信号によりデータ転送部１７からローカルメモリ１２の内容（必要なデータ）をＩＳＳ１側のデータ転送部１６に転送する。
【００３９】
ステップＳ４では、転送されたデータをロードしエミュレータ２側のＣＰＵ１１と同じ状態に初期化する。つまりデータ転送部１６はローカルメモリ８へ受信した必要なデータを書き込みＣＰＵ１１と同じ状態にする。
【００４０】
ステップＳ５では、ＩＳＳ上でプログラムを実行してデバッグを行う。
次に、デバッグモードから通常モードへの切り替えについて説明する。
ステップＳ６では、ソフトウェア開発環境部５で通常モードに移行する設定をする。
【００４１】
ステップＳ７では、ソフトウェア開発環境部５から動作開始指示（ｒｕｎコンド等）をエミュレータ制御部９に送信する。
ステップＳ８では、エミュレータ制御部９がクロック周波数を通常速度に切り替える。
【００４２】
ステップＳ９では、エミュレータ２側回路は通常モードで高速に動作を開始する。
ステップＳ１０では、ソフトウェア開発環境部５のＣＰＵ７などが動作を停止しブレーク後の再初期化待ち状態に遷移する。
【００４３】
デバッグモードから通常モードへの切り替えは、エミュレーションソフト制御部４からの指示信号によりデータ転送部１６からローカルメモリ８の内容（必要なデータ）をエミュレータ２側のデータ転送部１７に転送する。ＩＳＳ１側のＣＰＵ１７と同じ状態にするためにデータ転送部１６はローカルメモリ１２へ受信した必要なデータを書き込みする。
（実施例１）
（アドレス指定によるフラグ方式）
切り替え高速化の手段を以下に示す。転送制御部１８にフラグ方式を使用した場合について説明する。図３にフラグ方式の原理動作を示す。転送元のローカルメモリ（メモリ領域）のデータが変化したかどうかを示すフラグ部３１（フラグ設定エリア）を付加する。そして、モード切り替えが発生したさいに変化したワードだけ転送する方法である。本例では、メモリは１６ビットを１ワードとしたデータである。
【００４４】
エミュレータ２側からＩＳＳ側に転送をするときは、ＣＰＵ１１のローカルメモリ１２（メモリ領域）のフラグ部３１にフラグを立てる。逆に、ＩＳＳ側からエミュレータ２側に転送をするときは、ローカルメモリ８（メモリ領域）に設けられたフラグ部にフラグを立てる。
【００４５】
図４にアドレス指定によるフラグ方式の動作について示す。図４のＡとＢにより通常モードとデバッグモードの動作説明をする。
図４Ａに示す図はデータ転送時にアドレスも一緒に転送する場合の通常時の動作を示す図である。図１で示した原理図と構成は同じである。データ転送部４１、フラグ部４２、データ転送部４３、フラグ部４４の機能について説明する。
【００４６】
データ転送部４１は図１のデータ転送部１７に設けられるものである。フラグ部４２は図１の転送制御部１８に設けられるものである。データ転送部４３は図１のデータ転送部１６に設けられるものである。フラグ部４４は図１の転送制御部１５に設けられるものである。
【００４７】
通常モードのときは、エミュレータ２側が転送元となりデータ転送部４１はローカルメモリ１２へのライトアクセスを監視するとともに、フラグ部４２のフラグ設定エリアにフラグを立てる。デバッグモードのとき、データ転送部４３はローカルメモリ８へのライトアクセスを監視するとともに、フラグ部４４に設けてあるフラグ設定エリアにフラグを立てる。また、切り替え時にデータ転送部４１（４３）は、アドレスとデータを転送先データ転送部４３（４１）に転送する。
【００４８】
転送先となったフラグ部４４と４２は、フラグがセットされた対応するアドレスの情報を記録する。
図４Ｂに示すステップＳ４１では、転送元ローカルメモリのどのアドレスにメモリライトが発生したかを検知する。ステップＳ４２では、メモリライトが検知されたときに対応するアドレスのフラグ部３１にフラグをセットする。
【００４９】
通常モードのときはエミュレータ２側においてステップＳ４１で、ローカルメモリ１２のどのアドレスにライトが発生したかを検知し、ステップＳ４２でメモリライトが検知されたときに対応するアドレスのフラグ部３１にフラグをセットする。
【００５０】
デバッグモードのときはＩＳＳ側においてステップＳ４１で、ローカルメモリ８のどのアドレスにライトが発生したかを検知し、ステップＳ４２でメモリライトが検知されたときに対応するアドレスのフラグ部にフラグをセットする。
【００５１】
図５のＡ〜Ｃにアドレス指定した場合の切り替え時の動作について示す。データ転送時にアドレスを同時に転送する場合の説明する。図５Ｂにデータ転送元フロー、図５Ｃに転送先フローを示す。
【００５２】
ステップＳ５１では転送元の動作を停止する。デバッグモードへの切り替えであればエミュレータ２側の動作を停止させる。また、通常モードへの切り替えの場合はＩＳＳ側の動作を停止する。
【００５３】
ステップＳ５２ではデバッグモードへの切り替えであれば図５Ａのフラグ部４２のフラグを確認する。通常モードへの切り替えの場合は転送制御部４４に設けたフラグ部を確認する。
【００５４】
ステップＳ５３でフラグがセットされているかを検知する。セットされている場合はＳ５４に移行する。セットされていない場合はＳ５６に移行する。
ステップＳ５４でフラグがセットされているアドレスとデータを転送する。デバッグモードへの切り替えであればデータ転送部４１からデータ転送部４３へ転送する。通常モードへの切り替えであればデータ転送部４３からデータ転送部４１へ転送する。ステップＳ５５で転送したアドレスのフラグをクリアする。
【００５５】
ステップＳ５６では、全てのフラグが立っていたデータの転送が完了したかが確認できた場合は、アドレスとデータ転送を終了する。まだ、完了していないときはＳ５２に移行し全てのデータ転送が完了するまで各ステップを実行する。
【００５６】
ステップＳ５７では転送先に完了通知を送信する。デバッグモードへの切り替えであればエミュレータ制御部９からエミュレータ制御ソフト部４およびデータ転送部１６へ完了通知を転送する。通常モードへの切り替えであればエミュレータ制御ソフト部４からエミュレータ制御部９およびデータ転送部４１へ完了通知を転送する。ステップＳ５８では転送元が動作を再開する。
【００５７】
次に転送先の動作を説明する。
ステップＳ５９では、転送元からフラグで指定したアドレスとデータを受信する。デバッグモードへの切り替えであればデータ転送部４３が受信する。通常モードへの切り替えであればデータ転送部４１が受信する。
【００５８】
ステップＳ５１０では、受信したアドレスとデータに基づいてローカルメモリにライトする。デバッグモードへの切り替えであればローカルメモリ８に書き込みをする。通常モードへの切り替えであればローカルメモリ１２に書き込みをする。
【００５９】
ステップＳ５１１では、完了通知を受信して転送元からのデータ転送が完了したかを確認しローカルメモリへの書き込みを終了する準備をする。例えば、ローカルメモリへの書き込みするデータがなくなったことを確認してから終了する。デバッグモードへの切り替えであればローカルメモリ８への書き込みを完了する。通常モードへの切り替えであればローカルメモリ１２への書き込みを完了する。
完了通知を受信しないときはＳ５９に移行する。
（実施例２）
（フラグ情報によるフラグ方式）
フラグ情報を転送する場合について説明する。切り替え時にまずフラグ情報を転送し、その後データだけを転送する。つまり、転送先でフラグデータからアドレスを求めてライトする方法である。通常モードとデバッグモードでの通常動作時は実施例１と同じであるが切り替え時は図６Ａ〜Ｄに示すようになる。
【００６０】
図６Ａはフラグデータを転送する場合を示した図である。図１で示した原理図と構成は同じであるが、データ転送部６１、フラグ部６２、データ転送部６３、フラグ部６４の機能について説明する。
【００６１】
データ転送部６１は図１のデータ転送部１７に設けられるものである。フラグ部６２は図１の転送制御部１８に設けられるものである。データ転送部６３は図１のデータ転送部１６に設けられるものである。フラグ部６４は図１の転送制御部１５に設けられるものである。
【００６２】
通常モードのときは、エミュレータ２側が転送元となりデータ転送部６１はローカルメモリ１２（メモリ領域）へのライトアクセスを監視するととに、フラグ部６２のフラグ設定エリアにフラグを立てる。デバッグモードのとき、データ転送部６３はローカルメモリ８（メモリ領域）へのライトアクセスを監視するととに、フラグ部６４に設けてあるフラグ設定エリアにフラグを立てる。また、切り替え時にデータ転送部６１（６３）は、後述するフラグ情報とデータを転送先データ転送部６３（６１）に転送する。転送は、図示しないが制御部によりフラグ情報を転送後データを転送する。
【００６３】
フラグ部６２と６４は、フラグがセットされた対応するアドレスに基づきフラグ情報をフラグ情報生成部（図示しない）で生成し転送先に転送する。フラグ情報は、フラグを立てたアドレスを全てまとめたデータでもよいし、フラグを立てたデータをコード化して転送してもよい。フラグを立てたアドレスが転送先で分かれば特に生成方法やデータ構造は限定しない。
【００６４】
図６Ｂはフラグが立っているデータの転送を示す図である。転送元のフラグ部が生成したフラグ情報をデータ転送部が転送先データ転送部に転送する。その後、転送元ローカルメモリのデータを転送先データ転送部に転送して、転送先ローカルメモリにそのデータの書き込みを行う。
【００６５】
図６Ｃは転送元切り替え時のフロー図である。通常モードからデバッグモードに切り替わるとき、ステップＳ６１では転送元の動作を停止する。デバッグモードへの切り替えであればエミュレータ２側の動作を停止させる。また、通常モードへの切り替えの場合はＩＳＳ側の動作を停止する。
【００６６】
ステップＳ６２では、フラグ情報を転送先に送信する。通常モードからの切り替え時はフラグ部６２で生成したフラグ情報をデータ転送部６１から送信する。デバッグモードからの切り替え時はフラグ部６４で生成したフラグ情報をデータ転送部６３から送信する。
【００６７】
ステップＳ６３ではデバッグモードへの切り替えであればフラグ部６２のフラグを確認する。通常モードへの切り替えの場合はフラグ部６４のフラグを確認する。
ステップＳ６４でフラグがセットされているかを検知する。セットされている場合はＳ６５に移行する。セットされていない場合はＳ６７に移行する。
【００６８】
ステップＳ６５でフラグがセットされているアドレスに対応したデータを転送する。デバッグモードへの切り替えであればデータ転送部６１からデータ転送部６３へ転送する。通常モードへの切り替えであればデータ転送部６３からデータ転送部６１へ転送する。ステップＳ６６で転送したアドレスのフラグをクリアする。
【００６９】
ステップＳ６７では、全てのフラグが立っていたデータの転送が完了したかが確認できた場合は、データ転送を終了する。まだ、完了していないときはＳ６３に移行し全てのデータ転送が完了するまで各ステップを実行する。
【００７０】
ステップＳ６８では転送元が動作を再開する。
次に転送先の動作を説明する。
ステップＳ６９では転送元から転送されたデータを受信する。デバッグモードに切り替えするときは、データ転送部６１から転送されたデータを受信する。通常モードに切り替わるときは、データ転送部６３から転送されたデータを受信する。
【００７１】
ステップＳ６１０では、ステップＳ６２で転送されたフラグ情報に基づいて転送先フラグ部が、転送先ローカルメモリの書き込みをするアドレスを指定する。その指定されたアドレスにフラグがセットされていることを確認する。デバッグモードに切り替えするときは、フラグ部６４にフラグがセットされたことを確認する。通常モードに切り替わるときは、フラグ部６２にフラグがセットされたことを確認する。
【００７２】
ステップＳ６１１では、フラグがセットされているかを判断する。セットされている場合はＳ６１２に移行する。されていない場合はＳ６１４に移行する。
ステップＳ６１２では、対応するアドレスのローカルメモリにデータを書き込みする。
【００７３】
ステップＳ６１３では、書き込みが完了したアドレスのフラグをクリアする。
ステップＳ６１４では、転送先の設定された全てのフラグを確認して転送された全てのデータ書き込みが確認できたかを判断する。もし、転送先ローカルメモリ全ての書き込みが完了しなければＳ６９に移行しさらにステップ処理を行う。
（実施例３）
（アドレス指定によるＦＩＦＯ方式）
図７にＦＩＦＯを使用した場合の動作を示す。転送元ローカルメモリの変化したアドレスを保持するＦＩＦＯを用意して切り替え時に変化したデータ（ワード）だけ転送する方法である。同図では転送元ローカルメモリのアドレス０、１、４番地が変化した場合の例である。メモリライトがされたアドレスをＦＩＦＯ部に保持する。ＦＩＦＯ部がフルになったらエミュレータ２側を停止して、ＦＩＦＯ部に保存したアドレスとデータをＩＳＳ１側に転送してローカルメモリ８に書き込みをする。
【００７４】
図８Ａはデータ転送時にアドレスも一緒に転送する場合の通常モードとデバッグモードの通常動作を示す図である。データ転送部８１はエミュレータ２側に設けられ、データ転送部８３はＩＳＳ側に設けられている。ＦＩＦＯ部８２はエミュレータ２側に設けられ、ＦＩＦＯ部８４はＩＳＳ側に設けられている。
【００７５】
通常、転送元データ転送部は転送元ＦＩＦＯ部の転送元ローカルメモリ（メモリ領域）にライトアクセスがあった場合にアドレスを転送元ＦＩＦＯ部に格納する。デバッグモードに移行するときはＦＩＦＯ部８２にアドレス値を格納する。通常モードに移行するときはＦＩＦＯ部８４にアドレス値を格納する。
【００７６】
図８ＢはＦＩＦＯ使用時の通常モードとデバッグモードでのデータ転送部８１の動作を示すフロー図である。ステップＳ８１では、デバッグモードの場合はローカルメモリ８（メモリ領域）へのメモリライトが発生したかを検知する。メモリへのアクセスが検知された場合、ステップＳ８２でそのアドレス値をＦＩＦＯ部８４に書き込みする。検知されない場合は引き続きメモリへのアクセスがあるかを監視する。通常モードの場合はデータ転送部８１によりＦＩＦＯ部８２にアドレス値が格納される。デバッグモードの場合はデータ転送部８３によりＦＩＦＯ部８４にアドレス値が格納される。
【００７７】
ステップＳ８３では、ＦＩＦＯ部がフル（full）になった場合は、Ｓ８４に移行する。フルでない場合はＳ８１に移行する。
次にＦＩＦＯ部がフルになった場合の説明をする。
【００７８】
上記ステップＳ８４の動作を図９Ａに示す。転送元データ転送部は転送元ＦＩＦＯ部に格納したアドレス値と、そのアドレス値に対応するデータを転送元ローカルメモリから取得し、転送先データ転送部にアドレスとデータを転送する。転送されたアドレスとデータに基づいて転送先ローカルメモリにデータを書き込み、転送元ローカルメモリと同じ状態に転送先ローカルメモリの状態もする。
【００７９】
図９Ｂに示すステップＳ９１では、通常モードではエミュレータ制御部９へ停止指示をしエミュレータ２側の動作を停止する。またデバッグモードではデバッガ６へ停止指示をしＩＳＳ１側の動作を停止させる。
【００８０】
ステップＳ９２では、転送元データ転送部が転送元ＦＩＦＯ部にリードする。通常モード時はデータ転送部８１がＦＩＦＯ部８２にリードする。デバッグモード時はデータ転送部８３がＦＩＦＯ部８４にリードする。
【００８１】
ステップＳ９３では、リードしたアドレスとそのアドレスに対応するデータを転送元ローカルメモリから読み出し転送する。通常モードであれば、全てのＦＩＦＯ部８２内のデータが出力され、エンプティー（empty）となるまで、ローカルメモリ１２のアドレス値に対応するアドレスとデータを転送する。デバッグモードであれば、全てのＦＩＦＯ部８４内のデータが出力され、エンプティーとなるまで、ローカルメモリ８のアドレス値に対応するアドレスとデータを転送する。
【００８２】
ステップＳ９４ではＦＩＦＯ部がエンプティーであるか判断する。エンプティーでなければＳ９２に移行する。
ステップＳ９５では、全てのデータの転送が完了したかが確認できた場合は、データ転送が終了したことを転送先データ転送部に通知する。通常モードであればＩＳＳ１側に通知する。デバッグモードであればエミュレータ２側に通知する。その後、ステップＳ９６では転送元が動作を再開する。
【００８３】
次に転送先の動作について説明する。
ステップＳ９７では転送元データ転送部８１（通常モード）または８３（デバッグモード）からアドレスとデータを受信する。
【００８４】
ステップＳ９８ではデータをローカルメモリ８（通常モード）または１２（デバッグモード）に書き込みをする。
ステップＳ９９では完了通知を受信する。
【００８５】
また、切り替え時の動作については上記ＦＩＦＯ部８２または８４がフルになったときと同じ動作をする。違いは、切り替えのときにＦＩＦＯ部がフルになっていなくても転送を開始する。
（実施例４）
（ＦＩＦＯ情報によるＦＩＦＯ方式）
切り替えをするときに、転送先ＦＩＦＯ部がフルになったときに先に後述するＦＩＦＯ情報を転送する。その後、データだけを転送し、受信側でＦＩＦＯ情報から書き込み先のアドレスを求めて、転送先ローカルメモリに書き込みをする。
【００８６】
通常モードとデバッグモードの通常動作は実施例３と同じである。違いはエミュレータ２側のＦＩＦＯ部１０２に格納されたアドレス値をＦＩＦＯ情報として、ＦＩＦＯ部がフルになるごとに転送する機能を設けている。ＦＩＦＯ情報の生成をするＦＩＦＯ情報生成部は、ＦＩＦＯ部またはデータ転送部に設けることが望ましい。
【００８７】
ＦＩＦＯ部がフルのときについて説明する。図１０Ａに示すように転送元ＦＩＦＯ部１０２（１０４）からＦＩＦＯ情報が転送元データ転送部１０１（１０３）を経由して転送先データ転送部１０３（１０１）に転送される。または転送元データ転送部１０１（１０３）で生成したＦＩＦＯ情報を転送先データ転送部１０３（１０１）に転送する。転送は、図示しないが制御部によりＦＩＦＯ情報を転送後データを転送する。ＦＩＦＯ情報を受信し、転送先ＦＩＦＯ部１０４（１０２）には、ＦＩＦＯ情報からアドレスを導き出し格納する。
【００８８】
次に、図１０Ｂに示すようにメモリライトがあった転送元ローカルメモリ１２（８）のデータを転送する。そして、転送先ＦＩＦＯ部１０４（１０２）のアドレス値に基づいて転送先データ転送部１０３（１０１）で受信したデータを対応する転送先ローカルメモリ８（１２）に格納する。
【００８９】
図１０Ｃに転送元のＦＩＦＯ部がフルになったときの動作を示す。ステップＳ１０１では、転送元の動作を停止する。通常モードではエミュレータ２側を停止する。デバッグモードではＩＳＳ１側を停止する。
【００９０】
ステップＳ１０２では、転送元データ転送部からＦＩＦＯ情報を転送先に送信する。
ステップＳ１０３では、転送元データ転送部がＦＩＦＯ部をリードする。
ステップＳ１０４では、リードしたアドレスに対応するデータを転送する。
【００９１】
つまり、通常モードではデータ転送装置１０１からＦＩＦＯ部１０２のＦＩＦＯ情報を取得し転送する。また、デバッグモードではデータ転送装置１０３からＦＩＦＯ部１０４のＦＩＦＯ情報を取得し転送する。ＦＩＦＯ情報はアドレスに基づいて生成されたコード等である。
【００９２】
ステップＳ１０５では、ＦＩＦＯ部１０２（通常モード）または１０４（デバッグモード）がエンプティーであるかを判断する。エンプティーであればステップＳ１０６に移行する。そうでない場合はＳ１０３に移行する。
【００９３】
図１０Ｄに転送先の動作フローを示す。ステップＳ１０７では転送元データ転送部１０１（１０３）からデータを受信する。ステップＳ１０８では、ＦＩＦＯ部１０４（１０２）をリードする。
【００９４】
ステップＳ１０９では、リードしたアドレスに対応するローカルメモリ８（１２）にデータを書き込みする。
ステップＳ１０１０では、ＦＩＦＯ部１０４（１０２）がエンプティーであるかを判断する。エンプティ−であれば完了し、そうでなければＳ１０７に移行する。
【００９５】
モード切り替えをする場合は、上記フルにおける動作と同じであるが、転送元ＦＩＦＯ部がフルになる前に転送を行い、転送先で書き込みを行う。
（実施例５）
（ＦＩＦＯ方式での随時転送）
図１１にＦＩＦＯ方式での随時転送の場合の動作を示す。転送元ローカルメモリが更新されたら順次転送していく方法である。転送先へのデータの転送が完了する前に転送元ローカルメモリで次の書き込みが発生した場合に、転送元ＦＩＦＯ部には転送元ローカルメモリにメモリライトされたアドレスを格納する。また、切り替え時に転送元ＦＩＦＯ部にアドレス値が残っていればそのときに転送をする。
【００９６】
通常モードの場合は転送元データ転送部をデータ転送部１２１とする。また転送元ＦＩＦＯ部をＦＩＦＯ部１２２とする。転送先データ転送部をデータ転送部１２３とする。また転送先ＦＩＦＯ部をＦＩＦＯ部１２４とする。
【００９７】
図１２Ａ〜Ｃは通常モードとデバッグモードの通常動作について示した図である。ＦＩＦＯ部にアドレスが書き込まれた時点で随時転送を行う。ただし、ＩＳＳ側ローカルメモリ８への書込み速度に対してエミュレータ２側のローカルメモリ１２への更新速度の方が高速であるため、ＦＩＦＯ部１２２がフルになる場合もありうる。その場合は、エミュレータ２側を一時停止してデータを転送する。ローカルメモリ１２の更新頻度が少ない場合は、切り替え時点でＦＩＦＯ部１２２が空になる場合もある。また、ＦＩＦＯ部１２２にデータが残っている場合は切り替えのときにデータの転送を行う。
【００９８】
図１２Ｂは転送元の動作を示したフロー図である。ステップＳ１２１では、メモリへのライトが発生したかを判断する。発生していればＳ１２２に移行する。発生していなければＳ１２１に移行する。通常モードではローカルメモリ１２にメモリライトがあったかを監視する。また、デバッグモードではローカルメモリ８にメモリライトがあるかを監視する。
【００９９】
ステップＳ１２２ではライトされたデータを転送元データ転送部から転送先データ転送部へ転送する。通常モードであれば転送元データ転送部１２１はメモリライトを検出して検出したアドレス内容を取得し、ＦＩＦＯ部１２２にそのアドレス値を格納し、アドレス内容であるデータを転送先のデータ転送部１２３へ転送する。デバッグモードであれば転送元データ転送部１２３はメモリライトを検出して検出したアドレス内容を取得し、ＦＩＦＯ部１２４にそのアドレス値を格納し、アドレス内容であるデータを転送先のデータ転送部１２１へ転送する。
【０１００】
ステップＳ１２３では、データの転送が完了したかを判断する。転送が完了していればＳ１２４に移行する。ステップＳ１２４ではＦＩＦＯ部１２２（通常モードでは１２２またデバッグモードでは１２４）がエンプティーでなければＳ１２５に移行してＦＩＦＯ部１２２（通常モードでは１２２またデバッグモードでは１２４）のアドレスのデータを転送する。
【０１０１】
また、Ｓ１２４でエンプティーである場合はＳ１２１に移行する。
ステップＳ１２６では、メモリライトが発生するかを判断する。メモリライトが発生しなければＳ１２３に移行する。メモリライトがあるならばＳ１２７では、ＦＩＦＯ部１２２（１２４）にアドレスをライトする。Ｓ１２８では、ＦＩＦＯ部１２２（１２４）がフルであるかを判断する。フルでなければＳ１２３に移行する。Ｓ１２９では、ＦＩＦＯフル時のフローへ移行する。フル時の動作は実施例４と同じである。
【０１０２】
次に転送先のフローについて説明する。
ステップＳ１２１０では、転送元データ転送部１２１（１２３）からアドレスとデータを受信する。ステップＳ１２１１では、受信したアドレスに基づいてデータをローカルメモリ８（１２）に書き込みする。
（実施例６）
上記説明した実施例１〜５は、転送制御部１８（フラグ方式、ＦＩＦＯ方式、随時転送方式）、データ転送部１７を専用ハードを用いて実現する場合が考えられる。図１３に示すようにエミュレータ２に展開（マッピングまたはダウンロードなど）される回路とは別に固定のハードをエミュレータ装置内に持つことで実現する。
【０１０３】
データ転送部１７では、通常モードからデバッグモード切替時のデータ転送高速化のさいに使用する。エミュレータ内に専用ハードウェアを用意する。エミュレータハードウェアの機能の一部として実現する。
【０１０４】
転送制御部１８は、通常モード→デバッグモード切替時のデータ転送高速化のさいに使用する。エミュレータ内に専用ハードウェアを用意する。エミュレータハードウェアの機能の一部として実現する。
（実施例７）
上記説明した実施例１〜５は、図１４に示すように転送制御部１８（フラグ方式、ＦＩＦＯ方式、随時転送方式）、データ転送部１７を検証対象ハードウェア部１３（ＨＷ）、ＣＰＵ１１と同様にエミュレータの再構成可能なエリアに展開（マッピング）する場合が考えられる。
【０１０５】
データ転送部１７は通常モードからデバッグモード切替時のデータ転送高速化の際に使用する。エミュレータのマッピング領域（リコンフィギュアラブルな領域）にマッピングする。エミュレータ用マッピングソフトウェアにメモリ容量などのローカルメモリ関連パラメータを入力することによりソフトウェアで自動的に回路を生成するという方法。エミュレータ用マッピングソフトウェアの機能の一部として実現する。
【０１０６】
転送制御部１８は、通常モードからデバッグモード切替時のデータ転送高速化のさいに使用する。エミュレータのマッピング領域（リコンフィギュアラブルな領域）にマッピングする。エミュレータ用マッピングソフトウェアにメモリ容量などのローカルメモリ関連パラメータを入力することによりソフトウェアで自動的に回路を生成するという方法。エミュレータ用マッピングソフトウェアの機能の一部として実現する。
【０１０７】
エミュレータ２としては特別なハードウェアを用意する必要が無いが、メモリサイズ等のパラメータから転送制御部１８、データ転送部１７をエミュレータに自動的に展開する。その場合には展開するためのツールが必要となる。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
【０１０８】
（付記１）
エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア／ソフトウェア協調検証装置であって、
前記エミュレータに展開された前記検証対象回路のメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納するエミュレータ側転送制御部と、
前記モード切替えをするときに、前記エミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送するエミュレータ側データ転送部と、
前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記命令セットシミュレータ側のメモリ領域のアドレスに前記データを書き込む前記命令セットシミュレータ側データ転送部と、
を具備することを特徴とするハードウェア／ソフトウェア協調検証装置。
（付記２）
エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア／ソフトウェア協調検証装置であって、
前記命令セットシミュレータの検証で使用しているメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納する命令セットシミュレータ側転送制御部と、
前記モード切替えをするときに、前記命令セットシミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送する命令セットシミュレータ側データ転送部と、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記エミュレータ側のメモリ領域のアドレスに前記データを書き込む前記エミュレータ側データ転送部と、
を具備することを特徴とするハードウェア／ソフトウェア協調検証装置。
（付記３）
前記エミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする付記１に記載のハードウェア／ソフトウェア協調検証装置。
（付記４）
前記命令セットシミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする付記２に記載のハードウェア／ソフトウェア協調検証装置。
（付記５）
前記エミュレータ側転送制御部としてＦＩＦＯ部を設け、前記検証対象回路のメモリ領域の対応するアドレスに前記メモリライトアクセスがあった前記アドレス番号を格納することを特徴とする付記１に記載のハードウェア／ソフトウェア協調検証装置。
（付記６）
前記命令セットシミュレータ側転送制御部としてＦＩＦＯ部を設け、前記検証対象回路のメモリ領域の対応するアドレスに前記メモリライトアクセスがあった前記アドレス番号を格納することを特徴とする付記２に記載のハードウェア／ソフトウェア協調検証装置。
（付記７）
前記フラグが有効になったアドレス値と前記メモリライトがあった前記データとを関連付けるフラグ情報を生成するフラグ情報生成部を設け、
前記モード切替えをするときに、前記フラグ情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記エミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記フラグ情報に基づき前記アドレス番号を導き格納する命令セットシミュレータ側転送制御部と、
前記モード切替えをするときに、前記エミュレータ側データ転送部から前記データを受信し、前記命令セットシミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記命令セットシミュレータ側データ転送部と、
を具備することを特徴とする付記３に記載のハードウェア／ソフトウェア協調検証装置。
（付記８）
前記フラグが有効になったアドレス値と前記メモリライトがあった前記データとを関連付けるフラグ情報を生成するフラグ情報生成部を設け、
前記モード切替えをするときに、前記フラグ情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記命令セットシミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記フラグ情報に基づき前記アドレス番号を導き格納するエミュレータ側転送制御部と、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から前記データを受信し、前記エミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記エミュレータ側データ転送部と、
を具備することを特徴とする付記４に記載のハードウェア／ソフトウェア協調検証装置。
（付記９）
前記ＦＩＦＯ部にアドレス値と前記メモリライトがあった前記データとを関連付けるＦＩＦＯ情報を生成するＦＩＦＯ情報生成部を設け、
前記モード切替えをするときに、前記ＦＩＦＯ情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記エミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記ＦＩＦＯ情報に基づき前記アドレス番号を導き格納する命令セットシミュレータ側転送制御部と、
前記モード切替えをするときに、前記エミュレータ側データ転送部から前記データを受信し、前記命令セットシミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記命令セットシミュレータ側データ転送部と、
を具備することを特徴とする付記５に記載のハードウェア／ソフトウェア協調検証装置。
（付記１０）
前記フラグが有効になったアドレス値と前記メモリライトがあった前記データとを関連付けるＦＩＦＯ情報を生成するＦＩＦＯ情報生成部を設け、
前記モード切替えをするときに、前記ＦＩＦＯ情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記命令セットシミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記ＦＩＦＯ情報に基づき前記アドレス番号を導き格納するエミュレータ側転送制御部と、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から前記データを受信し、前記エミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記エミュレータ側データ転送部と、
を具備することを特徴とする付記６に記載のハードウェア／ソフトウェア協調検証装置。
【図面の簡単な説明】
【０１０９】
【図１】ハードウェア／ソフトウェア協調検証装置の構成を示す図である。
【図２Ａ】通常モードからデバッグモードへの切り替えを示すフローである。
【図２Ｂ】バッグモードから通常モードへの切り替えを示すフローである。
【図３】フラグ方式の動作を示す図である。
【図４Ａ】フラグ方式の通常モードとデバッグモード時の通常動作を示す図である。
【図４Ｂ】フラグ方式（アドレス指定時）の通常モードとデバッグモード時の転送元のフローを示す図である。
【図５Ａ】フラグ方式（アドレス指定時）の切り替え時の動作を示す図である。
【図５Ｂ】フラグ方式（アドレス指定時）の切り替え時の転送元の動作フローを示す図である。
【図５Ｃ】フラグ方式（アドレス指定時）の切り替え時の転送先の動作フローを示す図である。
【図６Ａ】フラグ方式（フラグ情報指定時）の切り替え時のフラグ情報の転送動作を示す図である。
【図６Ｂ】フラグ方式（フラグ情報指定時）の切り替え時のデータ転送動作を示す図である。
【図６Ｃ】フラグ方式（フラグ情報指定時）の切り替え時の転送元の動作フローを示す図である。
【図６Ｄ】フラグ方式（フラグ情報指定時）の切り替え時の転送先の動作フローを示す図である。
【図７】ＦＩＦＯ方式の動作を示す図である。
【図８Ａ】ＦＩＦＯ方式（アドレス指定時）の通常モードとデバッグモード時の通常動作を示す図である。
【図８Ｂ】ＦＩＦＯ方式（アドレス指定時）の通常モードとデバッグモード時の転送元のフローを示す図である。
【図９Ａ】ＦＩＦＯ方式（アドレス指定時）のフル時の動作を示す図である。
【図９Ｂ】ＦＩＦＯ方式（アドレス指定時）のフル時の転送元の動作フローを示す図である。
【図９Ｃ】ＦＩＦＯ方式（アドレス指定時）のフル時の転送先の動作フローを示す図である。
【図１０Ａ】ＦＩＦＯ方式（ＦＩＦＯ情報指定時）のフル時のフラグ情報の転送動作を示す図である。
【図１０Ｂ】ＦＩＦＯ方式（ＦＩＦＯ情報指定時）のフル時のデータ転送動作を示す図である。
【図１０Ｃ】ＦＩＦＯ方式（ＦＩＦＯ情報指定時）のフル時の転送元の動作フローを示す図である。
【図１０Ｄ】ＦＩＦＯ方式（ＦＩＦＯ情報指定時）のフル時の転送先の動作フローを示す図である。
【図１１】ＦＩＦＯ方式での随時転送の場合の動作を示す図である
【図１２Ａ】ＦＩＦＯ方式（アドレス指定時）の通常動作を示す図である。
【図１２Ｂ】ＦＩＦＯ方式（アドレス指定時）の通常動作を転送元の動作フローを示す図である。
【図１２Ｃ】ＦＩＦＯ方式（アドレス指定時）の通常動作の転送先の動作フローを示す図である。
【図１３】固定のハードウェアによりエミュレータ上に構成する図である。
【図１４】エミュレータの再構成可能なエリアに展開する場合の図である。
【図１５】従来のハードウェア／ソフトウェア協調検証装置の構成を示す図である。
【図１６】従来の通常モードの説明図である。
【図１７】従来のデバッグモードの説明図である。
【符号の説明】
【０１１０】
１      ソフトウェア開発用ホスト
２      エミュレータ
３      インタフェース
４      エミュレータ制御部
５      ソフトウェア開発環境部
６      デバッガ
７      ＣＰＵ（ＩＳＳ）
８      ローカルメモリ
９      エミュレータ制御部
１０      ブレークポイント検出回路
１１      ＣＰＵ
１２      ローカルメモリ
１３      ハードウェア（ＨＷ）
１４      共有メモリ
１５      転送制御部
１６      データ転送部
１７      データ転送部
１８      転送制御部
３１      フラグ部、
４１      エミュレータ側データ転送部
４２      エミュレータ側フラグ部
４３      ＩＳＳ側データ転送部
４４      ＩＳＳ側フラグ部
６１      エミュレータ側データ転送部
６２      エミュレータ側フラグ部
６３      ＩＳＳ側データ転送部
６４      ＩＳＳ側フラグ部
８１      エミュレータ側データ転送部
８２      エミュレータ側フラグ部
８３      ＩＳＳ側データ転送部
８４      ＩＳＳ側フラグ部
１０１      エミュレータ側データ転送部
１０２      エミュレータ側フラグ部
１０３      ＩＳＳ側データ転送部
１０４      ＩＳＳ側フラグ部
１２１      エミュレータ側データ転送部
１２２      エミュレータ側フラグ部
１２３      ＩＳＳ側データ転送部
１２４      ＩＳＳ側フラグ部
【図１】
0004589255.tif 000002
【図２Ａ】
0004589255.tif 000003
【図２Ｂ】
0004589255.tif 000004
【図４Ａ】
0004589255.tif 000005
【図４Ｂ】
0004589255.tif 000006
【図５Ａ】
0004589255.tif 000007
【図５Ｂ】
0004589255.tif 000008
【図５Ｃ】
0004589255.tif 000009
【図６Ａ】
0004589255.tif 000010
【図６Ｂ】
0004589255.tif 000011
【図６Ｃ】
0004589255.tif 000012
【図６Ｄ】
0004589255.tif 000013
【図８Ａ】
0004589255.tif 000014
【図８Ｂ】
0004589255.tif 000015
【図９Ａ】
0004589255.tif 000016
【図９Ｂ】
0004589255.tif 000017
【図９Ｃ】
0004589255.tif 000018
【図１０Ａ】
0004589255.tif 000019
【図１０Ｂ】
0004589255.tif 000020
【図１０Ｃ】
0004589255.tif 000021
【図１０Ｄ】
0004589255.tif 000022
【図１２Ａ】
0004589255.tif 000023
【図１２Ｂ】
0004589255.tif 000024
【図１２Ｃ】
0004589255.tif 000025
【図１３】
0004589255.tif 000026
【図１４】
0004589255.tif 000027
【図１５】
0004589255.tif 000028
【図１６】
0004589255.tif 000029
【図１７】
0004589255.tif 000030
【図３】
0004589255.tif 000031
【図７】
0004589255.tif 000032
【図１１】
0004589255.tif 000033