(57)【要約】【課題】  高速性とデバッグの機能性を両立させる。【解決手段】  通常動作モードでは、エミュレータ１０にマッピングされた検証対象回路１１やＣＰＵコア１２が動作して、エミュレータ１０側で検証対象の対象論理回路の機能もしくは動作が模擬されている。このとき、検証対象ソフトウェアは、エミュレータ１０のＣＰＵコア１２が実行している。デバッグモードでは、検証実行ホスト２０側のＩＳＳ２１によって検証対象ソフトウェアが実行され、デバッガ２４ａにより実現するデバッグ機能でデバッグを行うことができるようになる。このとき、エミュレータ１０は、ＩＳＳ２１の動きに合わせて協調動作する。【選択図】  図１
2007058813.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵコアを含む対象論理回路について前記ＣＰＵコアが実行するソフトウェアを含めて検証を行うための検証装置において、
検証対象ソフトウェアを実行する前記ＣＰＵコアと前記対象論理回路から前記ＣＰＵコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータと、
前記ＣＰＵコアの機能をシミュレーションする命令セットシミュレータと、前記検証対象ソフトウェアのデバッグに用いるデバッガと、を具備するコンピュータと、
前記エミュレータにマッピングされた前記ＣＰＵコアと前記命令セットシミュレータとを接続し、前記ＣＰＵコアの状態を示すデータを前記命令セットシミュレータへ転送するデータ転送回路と、
を具備し、前記エミュレータにマッピングされた前記ＣＰＵコアが前記検証対象ソフトウェアを実行する通常動作モード、または前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードで動作する、
ことを特徴とする検証装置。
【請求項２】
前記データ転送回路は、前記検証装置の動作モードが、前記通常動作モードから前記デバッグモードに遷移する際に前記エミュレータにマッピングされた前記ＣＰＵコアの状態を示すデータを前記命令セットシミュレータへ転送する、
ことを特徴とする請求項１記載の検証装置。
【請求項３】
前記エミュレータは、前記ＣＰＵコアが実行する命令セットを解析し、前記命令セットに、前記ＣＰＵコアの動作をブレークするブレークポイントであることを指示する前記ブレーク指示フラグがセットされていることを検出した場合には、ブレーク検出信号を出力するブレーク検出回路を有し、
前記ブレーク検出信号によって動作モードを前記通常動作モードから前記デバッグモードに遷移させる、
ことを特徴とする請求項１記載の検証装置。
【請求項４】
前記エミュレータの前記ＣＰＵコア及び前記検証対象回路がアクセスするエミュレータ用メモリと、
前記コンピュータの前記命令セットシミュレータがアクセスするメモリと、
前記エミュレータ用メモリと前記コンピュータの前記メモリを接続し、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送するメモリ転送回路と、
を有し、
前記メモリ転送回路は、動作モードが、前記通常動作モードから前記デバッグモードに遷移する場合に、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送する、
ことを特徴とする請求項１記載の検証装置。
【請求項５】
ＣＰＵコアを含む対象論理回路について前記ＣＰＵコアが実行するソフトウェアを含めて検証を行う検証方法において、
検証対象ソフトウェアを実行する前記ＣＰＵコアと前記対象論理回路から前記ＣＰＵコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータの前記ＣＰＵコアと、前記ＣＰＵコアの機能をシミュレーションする命令セットシミュレータと前記検証対象ソフトウェアのデバッグに用いるデバッガを具備するコンピュータの前記命令セットシミュレータとをデータ転送回路によって接続し、
前記エミュレータにマッピングされた前記ＣＰＵコアが前記検証対象ソフトウェアを実行する通常動作モードから前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードへ遷移する場合には、前記データ転送回路が前記ＣＰＵコアの状態を示すデータを前記命令セットシミュレータへ転送し、
前記命令セットシミュレータが前記データ転送回路によって取得したデータに基づき、前記命令セットシミュレータの状態を前記ＣＰＵコアの状態と一致させ、前記デバッグモードで動作を開始する、
手順を有することを特徴とする検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は検証装置及び検証方法に関し、特にＣＰＵコアを含む対象論理回路についてＣＰＵコアが実行するソフトウェアを含めて検証を行う検証装置及び検証方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）コアとユーザハードウェアが同一チップ上に混在するＳｏＣ（System on Chip）の開発においては、ハードウェアの設計・検証が完了する前にファームウェア、ミドルウェアなどのソフトウェア開発を開始する必要がある。実チップが完成する前にソフトウェアの検証を行うためには、ハードウェアの機能を模擬する検証装置を用いて、ハードウェア及びソフトウェアの協調検証を行う必要がある。
【０００３】
ハードウェアとソフトウェアの協調検証を行う手法として、大きく分けて論理シミュレータ（ソフトシミュレータ）を使用する手法と、ハードウェア・エミュレータを使用する手法の２つがある。論理シミュレータは、検証対象回路を構成する各部の機能をソフトウェアによってモデル化し、コンピュータ上で検証対象回路の動作をシミュレーションする手法である。
【０００４】
一方、エミュレータを使用する場合には、たとえば、対象の論理回路をＦＰＧＡ（Field Programmable Gate Array）にマッピングしてハードウェアをエミュレーションするので、ハードウェア部分の動作を高速化することができる。ソフトウェア部分の検証を行う場合は、このようなＦＰＧＡエミュレータと、プロセッサ固有の命令実行部分を実現する命令セットシミュレータ（ＩＳＳ；Instruction Set Simulator）及びソフトウェアデバッグ機能を具備する上位コンピュータを接続する手法や、プロセッサの命令実行部分をハードウェアによって実現したイン・サーキット・エミュレータ（ＩＣＥ；In Circuit Emulator）に置き換えた手法などが使用されている。
【０００５】
このように互いに関連して動作するソフトウェアとハードウェアの協調検証を行うためには、それぞれの機能をリンクさせる必要がある。そこで、ソフトウェアのデバッグを行うコンピュータからハードウェアのシミュレーションに用いる各種コマンドを発生させて通信ネットワークを介してハードウェアのシミュレーション装置へ送信することによって、ハードウェア検証機能とソフトウェア検証機能をリンクさせる方法が提案されている（たとえば、特許文献１参照）。
【特許文献１】特開２００２−３６６６０２号公報（段落番号〔００１８〕〜〔００２７〕、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来の互いに関連して動作するソフトウェアとハードウェアの検証装置では、高速性とデバッグの機能性を両立させることが難しいという問題点があった。
論理シミュレータを使用した手法は、動作速度がエミュレータと比べて非常に低速であるため、大規模な回路を検証する場合は実用的ではない。
【０００７】
一方、エミュレータはハードウェアで構成されており、所望の論理回路の動作を実際の動作速度に近い速度（高速）で模擬することができる。しかしながら検証対象の論理回路のうち、エミュレータにマッピングされるのはプロセッサ回路を除く論理回路であり、プロセッサ回路部分はＩＳＳまたはＩＣＥによって実現される。このため、エミュレータ上の論理回路とエミュレータ上にないプロセッサ回路間で交換される情報は、すべてインタフェース部を介してやりとりされることになる。したがって、インタフェース部分がボトルネックとなり、エミュレータの高速性を生かすことができないという問題点がある。
【０００８】
一方、プロセッサ回路を高速動作させるためには、エミュレータにプロセッサ回路をマッピングすればよいが、プロセッサ回路をエミュレータにマッピングすると、エミュレータ単体ではソフトウェアのデバッグ機能を実現することができないという問題点がある。通常、ＩＳＳとともに提供される豊富なデバッグ機能、たとえば、ブレーク機能や、レジスタの参照、メモリ領域のデータダンプなど、ソフトウェア開発に重要なデバッグ機能を使用することができなくなる。
【０００９】
本発明はこのような点に鑑みてなされたものであり、ソフトウェアとハードウェアの協調検証において高速性とデバッグの機能性を両立させることが可能な検証装置および検証方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明では上記課題を解決するために、図１に示すような検証装置が提供される。検証装置は、ハードウェアをエミュレーションするエミュレータ１０と、ハードウェアとソフトウェアを検証するための検証環境が実装される検証実行ホスト２０により構成される。エミュレータ１０は、再構成可能な論理回路で構成され、この論理回路に検証対象の対象論理回路のＣＰＵコアを除く検証対象回路の論理を回路記述でマッピングした検証対象回路１１と、ＣＰＵコアの機能を回路記述でマッピングしたＣＰＵコア１２とが構築されている。検証実行ホスト２０には、ＣＰＵコアの機能を検証実行ホスト２０上で実現する命令セットシミュレータ２１と、検証対象回路１１のＣＰＵコア１２に実装されるソフトウェアのデバッグに用いるデバッガ２４ａとが構成されている。また、エミュレータ１０にマッピングされたＣＰＵコア１２と検証実行ホスト２０に実装された命令セットシミュレータ２１を接続し、ＣＰＵコア１２の状態を示すデータを命令セットシミュレータ２１に転送するデータ転送回路２５を有する。この検証装置は、エミュレータ１０にマッピングされたＣＰＵコア１２が検証対象ソフトウェアを実行する通常動作モード、または命令セットシミュレータが検証対象ソフトウェアを実行するデバッグモードで動作する。
【００１１】
このような検証装置によれば、通常動作モードでは、エミュレータ１０にマッピングされた検証対象回路１１やＣＰＵコア１２が動作して、エミュレータ１０側で検証対象の対象論理回路の機能もしくは動作が模擬されている。このとき、検証対象ソフトウェアは、エミュレータ１０のＣＰＵコア１２が実行している。動作モードが通常動作モードからデバッグモードに遷移すると、検証実行ホスト２０側の命令セットシミュレータ２１によって検証対象ソフトウェアが実行され、デバッガ２４ａにより実現するデバッグ機能でデバッグを行うことができるようになる。このとき、エミュレータ１０は、命令セットシミュレータ２１の動きに合わせて協調動作し、エミュレータ１０の各部が動作することによってＣＰＵコア１２に入力するデータは、データ転送回路２５によって命令セットシミュレータ２１に転送される。
【００１２】
また、上記課題を解決するために、ＣＰＵコアを含む対象論理回路について前記ＣＰＵコアが実行するソフトウェアを含めて検証を行う検証方法において、検証対象ソフトウェアを実行する前記ＣＰＵコアと前記対象論理回路から前記ＣＰＵコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータの前記ＣＰＵコアと、前記ＣＰＵコアの機能をシミュレーションする命令セットシミュレータと前記検証対象ソフトウェアのデバッグに用いるデバッガを具備するコンピュータの前記命令セットシミュレータとをデータ転送回路によって接続し、前記エミュレータにマッピングされた前記ＣＰＵコアが前記検証対象ソフトウェアを実行する通常動作モードから前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードへ遷移する場合には、前記データ転送回路が前記ＣＰＵコアの状態を示すデータを前記命令セットシミュレータへ転送し、前記命令セットシミュレータが前記データ転送回路によって取得したデータに基づき、前記命令セットシミュレータの状態を前記ＣＰＵコアの状態と一致させ、前記デバッグモードで動作を開始する、手順を有することを特徴とする検証方法が提供される。
【発明の効果】
【００１３】
本発明では、エミュレータにＣＰＵコアを除く検証対象回路とＣＰＵコアをマッピングするとともに、検証を行うコンピュータに命令セットシミュレータを用意し、通常動作モードとデバッグモードとを設け、モードを切り替えながら検証を行う。通常動作モードでは、エミュレータのＣＰＵコアが動作し、高速処理を可能にする。デバッグモードでは、エミュレータを動かしながら、ソフトウェアの実行は命令セットシミュレータで検証することにより、命令セットシミュレータの持つ豊富なデバッグ機能を利用し、効果的なデバッグができる。このような通常動作モードとデバッグモードを切り替えながら検証を行うことによって、ソフトウェアとハードウェアの協調検証において高速性とデバッグの機能性を両立させることが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の実施の形態の検証装置の構成を示したブロック図である。
本発明に係る検証装置は、ハードウェアをエミュレーションするエミュレータ１０と、ハードウェアとソフトウェアを検証するための検証環境が実装される検証実行ホスト２０が協調動作し、ハード／ソフト協調検証を可能にしている。エミュレータ１０側のＣＰＵコア１２がプログラム処理を実行し、本来の検証対象装置の動作をエミュレートする通常動作モードと、ＩＳＳ２１がプログラム処理を実行し、ソフトウェアのデバッグが可能なデバッグモードを切り替えながら検証を行う。
【００１５】
エミュレータ１０は、ＦＰＧＡなどの再構成可能な論理回路群で構成されており、エミュレータ１０に含まれる論理回路群に論理をマッピングすることにより、検証対象の対象論理回路の機能をエミュレータ１０上に実現することができる。検証対象回路１１、ＣＰＵコア１２、ブレーク検出回路１３、エミュレータ用メモリ１４、クロック制御回路１５、メモリ転送回路１６がバス１７を介して接続する。一方、検証実行ホスト２０は、ＩＳＳ（命令セットシミュレータ）２１、ホスト側メモリ２２、メモリ転送モジュール２３、デバッガ２４ａを具備する。そして、エミュレータ１０側のＣＰＵコア１２とＩＳＳ２１はデータ転送回路２５を介して接続される。
【００１６】
検証対象回路１１は、ハードウェア記述言語で記述されたＣＰＵコア以外の検証対象回路をマッピングしてエミュレータ１０に実装される。検証対象回路１１は、画像処理や伝送処理などの特定用途向けの回路などである。
【００１７】
ＣＰＵコア１２は、ハードウェア記述言語により記述されたＣＰＵコアの論理をマッピングしてエミュレータ１０に実装される。ＣＰＵコア１２は、所定の命令セットメモリに格納される命令セットを順次読み出し、命令セットに基づく処理を実行する。
【００１８】
ブレーク検出回路１３は、ＣＰＵコア１２が実行する命令セットを解析し、命令セットに、ＣＰＵコア１２の動作をブレークするブレークポイントであることを指示するブレーク指示フラグがセットされていることを検出した場合には、ブレーク検出信号を前記エミュレータ上に構成されたクロック制御回路１５、メモリ転送回路１６及びデータ転送回路２５へ出力する。さらに、検証実行ホスト２０側からの指示によってブレーク検出信号を発生させるようにしてもよい。
【００１９】
エミュレータ用メモリ１４は、エミュレータ１０にマッピングされた検証対象回路１１やＣＰＵコア１２などからバス１７を介してアクセス可能なメモリである。検証対象回路１１やＣＰＵコア１２が処理実行時に必要な情報が一時格納される。また、ＣＰＵコア１２で実行される命令セットが格納されてもよい。また、エミュレータ用メモリ１４に格納される情報は、デバッグモードに遷移する場合にメモリ転送回路１６によってホスト側メモリ２２へ転送される。
【００２０】
クロック制御回路１５は、エミュレータ１０を構成する各部に所定のクロック信号を供給する。クロック制御回路１５は、動作モードが通常動作モードの場合は、通常動作時のクロックを供給する。また、ブレーク検出回路１３よりブレーク検出信号を受け取ると、検証対象回路１１及びＣＰＵコア１２へ供給しているクロックを停止する。そして、動作モードがデバッグモードに遷移し、検証実行ホスト２０側からステップ実行指令があれば、ＩＳＳ２１と同期をとってクロックを供給する。
【００２１】
メモリ転送回路１６は、ブレーク検出回路１３が出力したブレーク検出信号を受け取ると、エミュレータ用メモリ１４の内容をホスト側メモリ２２へ転送する。また、デバッグモード時に、バス１７を介して検証対象回路１１などからエミュレータ用メモリ１４に書き込みがあった場合には、その内容をホスト側メモリ２２へ転送する。
【００２２】
ＩＳＳ２１は、ソフトウェアによってＣＰＵの動作を実現したもので、ＣＰＵの動作を検証実行ホスト２０上に再現する機能を有し、通常動作モード時には停止している。そして、ブレーク発生やデバッガ２４ａを介してデバッグ指示があり、デバッグモードに遷移する際、データ転送回路２５経由でＣＰＵコア１２の状態を示すデータ（プログラムカウンタ、レジスタ値、キャッシュデータなど）を取得し、その値で初期化した後、命令セット実行処理を開始する。なお、デバッグモード時にエミュレータ１０側がＩＳＳ２１に合わせて動作することによってＣＰＵコア１２に入力したデータもデータ転送回路２５によって転送されるので、このデータを用いてＣＰＵコア１２の状態と一致させる処理を行う。
【００２３】
ホスト側メモリ２２は、デバッグモード時に、ＩＳＳ２１が命令セットを実行時にアクセスするメモリである。ＩＳＳ２１と同様に、デバッグモードに遷移する際、エミュレータ１０側のメモリ転送回路１６及びメモリ転送モジュール２３を経由してエミュレータ用メモリ１４の内容が転送され、同じ内容に初期化される。また、デバッグモードに遷移後にも、同じ経路でメモリ内容の一致化が図られる。
【００２４】
メモリ転送モジュール２３は、エミュレータ１０側のメモリ転送回路１６から転送されるメモリデータをホスト側メモリ２２に書き込む。
デバッガ２４ａは、ブレーク機能、メモリや変数、レジスタの内容の参照や変更を行う機能、トレース機能など、ソフトウェアの開発に必要な機能が、ソフトウェアによって検証実行ホスト２０に実装されたものである。表示機能や指示入力機能などと合わせてソフトウェア開発環境２４に含まれる。一般に、このようなデバッグ機能として、新たに開発するのではなく、ＣＰＵコアの開発環境としてＩＳＳとともに豊富に提供されたものを使用することができる。
【００２５】
データ転送回路２５は、ブレーク検出回路１３よりブレーク検出信号を受け取ると、ＣＰＵコア１２の状態を示す、プログラムカウンタ、レジスタ、キャッシュなどのデータを検証実行ホスト２０のＩＳＳ２１に転送する。また、バス１７に接続し、デバッグモード時にＣＰＵコア１２に入力するデータを監視し、データが入力されると、これをＩＳＳ２１に転送する。
【００２６】
このような構成の検証装置の動作及び検証方法について説明する。
実施の形態の検証装置は、エミュレータ１０側が動作する通常動作モードと、エミュレータ１０と検証実行ホスト２０が協調動作するデバッグモードとを切り替えながら検証対象回路１１のハードウェア及びソフトウェアの検証を行う。
【００２７】
通常動作モードは、エミュレータ１０側が動作するモードで、エミュレータ１０にマッピングされたＣＰＵコア１２が検証対象ソフトウェアを実行する。このとき、検証実行ホスト２０側のＩＳＳ２１は動作しない。
【００２８】
デバッグモードは、エミュレータ１０側と検証実行ホスト２０側が協調動作するモードで、ＩＳＳ２１が検証対象ソフトウェアを実行する。エミュレータ１０側は、ＩＳＳ２１の動きに合わせて動作し、動作に伴ってＣＰＵコア１２へ入力されるデータ及びエミュレータ用メモリ１４へのデータ書き込みは、それぞれデータ転送回路２５及びメモリ転送回路１６によって検証実行ホスト２０側に転送され、内容の一致化が図られる。
【００２９】
一般的な検証は、次の操作手順に従って行われる。
（１）ブレークポイントを設定する。
（２）エミュレータ１０を起動し、通常動作モードで処理を実行させる。
【００３０】
（３）エミュレータ１０がブレークポイントを検出し、エミュレーションを停止させ、デバッグモードへ遷移させる。
（４）検証実行ホスト２０側の、デバッグ機能を用いてデバッグを行う。
【００３１】
（５）エミュレータ１０は、検証実行ホスト２０に合わせてエミュレーションを再開する。
（６）必要に応じて、ブレークポイントを再設定する。
【００３２】
（７）エミュレータを再起動する。
以下、（３）から（７）の手順が繰り返され、検証が行われていく。なお、上記の手順の（１）、（２）、（４）、（６）及び（７）は、ユーザが介入し、指示や設定を入力することによって実行される手順であり、（３）及び（５）は検証装置が自動的に行う手順である。
【００３３】
以下、手順に沿って、順に説明する。
（１）ブレークポイント設定
ブレークポイントは、ユーザが動作を停止したい命令セットのアドレスを指示することによって設定される。
【００３４】
図２は、本実施の形態の命令セットメモリの一例を示した図である。
命令セットメモリ１００は、ＣＰＵコア１２が実行する命令セットを格納するメモリで、ＣＰＵ１２がアクセス可能な領域に確保される。エミュレータ用メモリ１４に確保されてもよい。各命令セットは、命令１０１と、この命令にブレークポイントが設定されているかどうかを示すブレーク指示フラグ（ＢＰ）１０２を有する。ＢＰ１０２には、たとえば、当該命令セットにブレークポイントが設定された場合は１が、設定されない場合は０がセットされる。
【００３５】
このような構成により、実行命令セットを読み出したときＢＰ１０２を確認すれば、容易にブレークポイントを検出することができる。また、任意の数のブレークポイントを設定することができる。
【００３６】
（２）通常動作モードで起動
通常動作モードで起動すると、処理はエミュレータ１０側において実行される。すなわち、クロック制御回路１５が供給する通常動作時のクロックで、検証対象回路１１、ＣＰＵコア１２及びブレーク検出回路１３が動作する。ＣＰＵコア１２は、命令セットメモリに格納される命令セットをプログラムカウンタに従って順次実行する。同様に、検証対象回路１１もロジックに従って処理を行う。このとき必要に応じて、バス１７を介してエミュレータ用メモリ１４にデータを一時格納したり、格納されたデータを読み出したりする処理が行われる。また、ブレーク検出回路１３は、プログラムカウンタが示すＣＰＵコア１２が実行する命令セットにブレーク指示フラグがセットされているかどうかを監視する。
【００３７】
以上のように、通常動作時には、検証実行ホスト２０側は動作せず、データ転送回路２５及びメモリ転送回路１６も処理を行わない。このため、通常動作モードでは、実際の対象論理回路と同様の処理を高速にエミュレーションすることができる。
【００３８】
なお、必要であれば、検証実行ホスト２０側からブレーク検出回路１３に指示し、強制的にエミュレータ１０の動作を停止させることができるようにすることもできる。
（３）ブレーク検出からデバッグモードへの遷移
図３は、本実施の形態の検証装置におけるブレーク検出からデバッグモードへ遷移するまでの処理手順を示したフローチャートである。
【００３９】
［ステップＳ０１］  通常動作モードで動作するブレーク検出回路１３は、プログラムカウンタが指示する命令セットのＢＰ１０２がセットされた命令セットによってブレークポイントを検出する。なお、ブレークポイントは、ブレーク指示フラグがセットされた命令セットメモリのアドレスを抽出しておき、このアドレスとプログラムカウンタの値を比較することで検出してもよい。
【００４０】
［ステップＳ０２］  ブレークポイントが検出されると、ブレーク検出回路１３は、クロック制御回路１５、データ転送回路２５及びメモリ転送回路１６にブレーク検出信号を出力する。
【００４１】
［ステップＳ０３］  データ転送回路２５は、ブレーク検出信号を受け取ると、プログラムカウンタ、レジスタ、キャッシュなどに格納されるＣＰＵコア１２の状態を示すデータを検証実行ホスト２０側のＩＳＳ２１へ転送する。メモリ転送回路１６は、ブレーク検出信号を受け取ると、エミュレータ用メモリ１４の内容を検証実行ホスト２０側のメモリ転送モジュール２３を介してホスト側メモリ２２へ転送する。また、クロック制御回路１５は、検証対象回路１１及びＣＰＵコア１２へのクロック供給を停止する。これにより、エミュレータ１０側の処理は停止し、その時点の状態が検証実行ホスト２０側のホスト側メモリ２２やＩＳＳ２１に転送される。
【００４２】
［ステップＳ０４］  ＩＳＳ２１は、ステップＳ０３の手順でデータ転送回路２５によって転送されたデータを用いてエミュレータ１０側のＣＰＵコア１２と同じ状態となるように初期化処理を行う。ＩＳＳ２１が使用するホスト側メモリ２２は、メモリ転送回路１６及びメモリ転送モジュール２３によってエミュレータ用メモリ１４と同じ内容になっている。
【００４３】
［ステップＳ０５］  デバッグモードに遷移し、ユーザからの指示によってＩＳＳ２１上でプログラムを実行し、デバッグすることが可能となる。
以上の処理手順が実行されることにより、エミュレータ１０側のＣＰＵコア１２の状態及びエミュレータ用メモリ１４の内容が検証実行ホスト２０側に引き継がれ、デバッグ処理が行われる。
【００４４】
（４）デバッグモード動作（検証実行ホスト）
デバッグモード時、デバッガ２４ａを介して入力されるユーザの指示に基づきデバッグが行われる。ステップ実行が指示されると、ＩＳＳ２１は、プログラムカウンタの指示する命令セットを読み出して処理し、プログラムカウンタを更新して処理を停止する。このとき、メモリアクセスは、ホスト側メモリ２２に対して行われる。
【００４５】
（５）デバッグモード動作（エミュレータ）
一方、デバッグモード時には、エミュレータ１０側は、検証実行ホスト２０のＩＳＳ２１に同期して協調動作を行う。ステップ実行時には、クロック制御回路１５は、ＩＳＳ２１に同期させて検証対象回路１１及びＣＰＵコア１２にクロックを供給し、動作させる。
【００４６】
このとき、検証対象回路１１の動作により、検証対象回路１１からＣＰＵコア１２への入力信号や、エミュレータ用メモリ１４へのデータ書き込みなどが発生する。そこで、データ転送回路２５及びメモリ転送回路１６によってこれらのデータを検証実行ホスト２０側に転送する。
【００４７】
図４は、本実施の形態のデバッグモード時のエミュレータとＩＳＳの同期を示した図である。
エミュレータ１０側の検証対象回路１１は、デバッグモード時も動作しており、ステップ実行などにより処理を行う。このとき、割り込み信号など、ＣＰＵコア１２へ出力する信号が発生した場合には、データ転送回路２５がこれを検出し、同様の信号をＩＳＳ２１に転送する。具体的には、データ転送回路２５は、バス１７に接続し、バス１７経由でＣＰＵコア１２へ入力する信号を検出し、これをＩＳＳ２１に転送する。ＩＳＳ２１は、エミュレータ１０側のバス１７から読み取ったＣＰＵコア１２への入力データを用いることで、ＣＰＵコア１２と全く同じ動作をすることができる。
【００４８】
図５は、本実施の形態のデバッグモード時のメモリデータの一致化を示した図である。
エミュレータ１０側の検証対象回路１１は、デバッグモード時も動作しており、ステップ実行などにより、エミュレータ用メモリ１４にデータ書き込みを行う場合がある。メモリ転送回路１６は、バス１７を介して入力するエミュレータ用メモリ１４へのデータ書き込み信号を入力すると、検証実行ホスト２０側へデータ書き込みを転送することで、ＩＳＳ２１が使用するホスト側メモリ２２をエミュレータ用メモリ１４の内容と一致させる。これにより、ＩＳＳ２１は、ホスト側メモリ２２にアクセスしても、エミュレータ１０側のＣＰＵコア１２と同じデータを読み出すことができる。
【００４９】
（６）ブレークポイント再設定
必要であれば、ブレークポイントを再設定する。ブレークポイントの設定は、（１）の手順と同様である。
【００５０】
（７）デバッグモードから通常動作モードへの遷移（エミュレータの再起動）
図６は、本実施の形態の検証装置におけるデバッグモードから通常動作モードへの遷移の処理手順を示したフローチャートである。
【００５１】
なお、デバッグモードにおいて、エミュレータ１０側の検証対象回路１１及びＣＰＵ  コア１２は、検証実行ホスト２０側に協調して動作しているので、ＩＳＳ２１とＣＰＵコア１２の状態は一致している。
【００５２】
［ステップＳ１１］  検証実行ホスト２０のソフトウェア開発環境２４から指示を出し、通常動作モードに設定する。上記のように、このとき、ＩＳＳ２１とＣＰＵコア１２の状態は一致している。また、エミュレータ用メモリ１４とホスト側メモリ２２の内容は、エミュレータ用メモリ１４へのデータ書き込みが検証対象回路１１からのみであれば、一致している。なお、通常は、そのような形態をとることが多いと考えられる。
【００５３】
［ステップＳ１２］  ソフトウェア開発環境２４からエミュレータ１０側に通常動作モードで動作を開始するように指示が出される。
［ステップＳ１３］  エミュレータ１０側のクロック制御回路１５は、クロック周波数を通常速度に切り替える。なお、このとき、必要であればホスト側メモリ２２の内容をエミュレータ用メモリ１４に転送する処理を行ってもよい。
【００５４】
［ステップＳ１４］  クロック制御回路１５が通常速度のクロックを検証対象回路１１及びＣＰＵコア１２に供給し、エミュレータ１０が通常動作モードで処理を開始する。
［ステップＳ１５］  検証実行ホスト２０側のＩＳＳ２１は、動作を停止し、ブレーク後の再初期化待ち状態に移行する。
【００５５】
以上の処理手順が実行されることにより、検証実行ホスト２０側と同じ状態から、エミュレータ１０の通常動作が開始される。
このように、本実施の形態では、エミュレータ１０にマッピングしたＣＰＵコア１２と、検証実行ホスト２０側のＩＳＳ２１の両方を用意し、通常動作モード時はエミュレータ１０上のＣＰＵコア１２を使い、デバッグモード時はＩＳＳ２１とＣＰＵコア１２の両方を使う。これにより、高速性を保ちながら、デバッグを行うことが可能となる。
【００５６】
すなわち、最初はエミュレータ１０上のＣＰＵコア１２を動作させておき、ブレークポイントに達した時点で、ＣＰＵコア１２のプログラムカウンタ、内部レジスタなどの情報を検証実行ホスト２０側に渡し、その情報に基づきＩＳＳ２１をエミュレータ１０上のＣＰＵコア１２と同じ状態に初期化する。そして、ＩＳＳ２１及びデバッガ２４ａを用いてステップ実行などのソフトデバッグを行う。ソフトデバッグ中にもエミュレータ１０側を動作させ、バス１７の入出力情報をＩＳＳ２１側に渡すことで、ＩＳＳ２１とエミュレータ１０側の動作の整合性を保ち、かつデバッグ終了時はエミュレータ側で通常動作に復帰できるようにする。
【００５７】
ＧＵＩ（Graphical User Interface）を操作してステップ実行などを行うデバッグ時にはＣＰＵは高速に動作する必要はないため、エミュレータ１０にマッピングしたＣＰＵコア１２を使用する必要はない。また、検証実行ホスト２０側のＩＳＳ２１を用いることで、通常ＣＰＵコアの開発環境としてＩＳＳとともに提供される豊富なデバッグ機能を使用することが可能となる。
【００５８】
（付記１）  ＣＰＵコアを含む対象論理回路について前記ＣＰＵコアが実行するソフトウェアを含めて検証を行うための検証装置において、
検証対象ソフトウェアを実行する前記ＣＰＵコアと前記対象論理回路から前記ＣＰＵコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータと、
前記ＣＰＵコアの機能をシミュレーションする命令セットシミュレータと、前記検証対象ソフトウェアのデバッグに用いるデバッガと、を具備するコンピュータと、
前記エミュレータにマッピングされた前記ＣＰＵコアと前記命令セットシミュレータとを接続し、前記ＣＰＵコアの状態を示すデータを前記命令セットシミュレータへ転送するデータ転送回路と、
を具備し、前記エミュレータにマッピングされた前記ＣＰＵコアが前記検証対象ソフトウェアを実行する通常動作モード、または前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードで動作する、
ことを特徴とする検証装置。
【００５９】
（付記２）  前記デバッグモード時には、前記命令セットシミュレータのステップ実行に同期して前記エミュレータが動作する、
ことを特徴とする付記１記載の検証装置。
【００６０】
（付記３）  前記データ転送回路は、前記検証装置の動作モードが、前記通常動作モードから前記デバッグモードに遷移する際に前記エミュレータにマッピングされた前記ＣＰＵコアの状態を示すデータを前記命令セットシミュレータへ転送する、
ことを特徴とする付記１記載の検証装置。
【００６１】
（付記４）  前記データ転送回路は、前記デバッグモード時、前記ＣＰＵコアへの入力信号を検出し、検出した前記入力信号を前記命令セットシミュレータに転送する、
ことを特徴とする付記１記載の検証装置。
【００６２】
（付記５）  前記エミュレータは、前記ＣＰＵコアが実行する命令セットを解析し、前記命令セットに、前記ＣＰＵコアの動作をブレークするブレークポイントであることを指示する前記ブレーク指示フラグがセットされていることを検出した場合には、ブレーク検出信号を出力するブレーク検出回路を有し、
前記ブレーク検出信号によって動作モードを前記通常動作モードから前記デバッグモードに遷移させる、
ことを特徴とする付記１記載の検証装置。
【００６３】
（付記６）  前記エミュレータは、前記エミュレータ上に構成された前記検証対象回路及び前記ＣＰＵコアに対し、前記通常動作モード時には通常動作用のクロックを供給し、前記デバッグモード時には、前記命令セットシミュレータがステップ実行を行っている間は命令セットシミュレータに同期させて前記クロックを供給するクロック制御回路、
を有することを特徴とする付記１記載の検証装置。
【００６４】
（付記７）  前記エミュレータの前記ＣＰＵコア及び前記検証対象回路がアクセスするエミュレータ用メモリと、
前記コンピュータの前記命令セットシミュレータがアクセスするメモリと、
前記エミュレータ用メモリと前記コンピュータの前記メモリを接続し、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送するメモリ転送回路と、
を有し、
前記メモリ転送回路は、動作モードが、前記通常動作モードから前記デバッグモードに遷移する場合に、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送する、
ことを特徴とする付記１記載の検証装置。
【００６５】
（付記８）  前記メモリ転送回路は、前記デバッグモード時、前記エミュレータ用メモリへのデータ書き込み信号を検出し、検出した前記データ書き込み信号を前記コンピュータの前記メモリに転送する、
ことを特徴とする付記７記載の検証装置。
【００６６】
（付記９）  ＣＰＵコアを含む対象論理回路について前記ＣＰＵコアが実行するソフトウェアを含めて検証を行う検証方法において、
検証対象ソフトウェアを実行する前記ＣＰＵコアと前記対象論理回路から前記ＣＰＵコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータの前記ＣＰＵコアと、前記ＣＰＵコアの機能をシミュレーションする命令セットシミュレータと前記検証対象ソフトウェアのデバッグに用いるデバッガを具備するコンピュータの前記命令セットシミュレータとをデータ転送回路によって接続し、
前記エミュレータにマッピングされた前記ＣＰＵコアが前記検証対象ソフトウェアを実行する通常動作モードから前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードへ遷移する場合には、前記データ転送回路が前記ＣＰＵコアの状態を示すデータを前記命令セットシミュレータへ転送し、
前記命令セットシミュレータが前記データ転送回路によって取得したデータに基づき、前記命令セットシミュレータの状態を前記ＣＰＵコアの状態と一致させ、前記デバッグモード動作を開始する、
手順を有することを特徴とする検証方法。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施の形態の検証装置の構成を示したブロック図である。
【図２】本実施の形態の命令セットメモリの一例を示した図である。
【図３】本実施の形態の検証装置におけるブレーク検出からデバッグモードへ遷移するまでの処理手順を示したフローチャートである。
【図４】本実施の形態のデバッグモード時のエミュレータとＩＳＳの同期を示した図である。
【図５】本実施の形態のデバッグモード時のメモリデータの一致化を示した図である。
【図６】本実施の形態の検証装置におけるデバッグモードから通常動作モードへの遷移の処理手順を示したフローチャートである。
【符号の説明】
【００６８】
１０  エミュレータ
１１  検証対象回路
１２  ＣＰＵコア
１３  ブレーク検出回路
１４  エミュレータ用メモリ
１５  クロック制御回路
１６  メモリ転送回路
２０  検証実行ホスト
２１  命令セットシミュレータ（ＩＳＳ）
２２  ホスト側メモリ
２３  メモリ転送モジュール
２４  ソフトウェア開発環境
２４ａ  デバッガ
２５  データ転送回路
【図１】
2007058813.tif 000003
【図２】
2007058813.tif 000004
【図３】
2007058813.tif 000005
【図４】
2007058813.tif 000006
【図５】
2007058813.tif 000007
【図６】
2007058813.tif 000008