JP2007058813A - 検証装置及び検証方法 - Google Patents

検証装置及び検証方法 Download PDF

Info

Publication number
JP2007058813A
JP2007058813A JP2005246825A JP2005246825A JP2007058813A JP 2007058813 A JP2007058813 A JP 2007058813A JP 2005246825 A JP2005246825 A JP 2005246825A JP 2005246825 A JP2005246825 A JP 2005246825A JP 2007058813 A JP2007058813 A JP 2007058813A
Authority
JP
Japan
Prior art keywords
cpu core
emulator
verification
instruction set
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005246825A
Other languages
English (en)
Inventor
Hiroaki Fujimoto
博昭 藤本
Takashi Fujita
隆司 藤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005246825A priority Critical patent/JP2007058813A/ja
Publication of JP2007058813A publication Critical patent/JP2007058813A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 高速性とデバッグの機能性を両立させる。
【解決手段】 通常動作モードでは、エミュレータ10にマッピングされた検証対象回路11やCPUコア12が動作して、エミュレータ10側で検証対象の対象論理回路の機能もしくは動作が模擬されている。このとき、検証対象ソフトウェアは、エミュレータ10のCPUコア12が実行している。デバッグモードでは、検証実行ホスト20側のISS21によって検証対象ソフトウェアが実行され、デバッガ24aにより実現するデバッグ機能でデバッグを行うことができるようになる。このとき、エミュレータ10は、ISS21の動きに合わせて協調動作する。
【選択図】 図1

Description

本発明は検証装置及び検証方法に関し、特にCPUコアを含む対象論理回路についてCPUコアが実行するソフトウェアを含めて検証を行う検証装置及び検証方法に関する。
CPU(Central Processing Unit)コアとユーザハードウェアが同一チップ上に混在するSoC(System on Chip)の開発においては、ハードウェアの設計・検証が完了する前にファームウェア、ミドルウェアなどのソフトウェア開発を開始する必要がある。実チップが完成する前にソフトウェアの検証を行うためには、ハードウェアの機能を模擬する検証装置を用いて、ハードウェア及びソフトウェアの協調検証を行う必要がある。
ハードウェアとソフトウェアの協調検証を行う手法として、大きく分けて論理シミュレータ(ソフトシミュレータ)を使用する手法と、ハードウェア・エミュレータを使用する手法の2つがある。論理シミュレータは、検証対象回路を構成する各部の機能をソフトウェアによってモデル化し、コンピュータ上で検証対象回路の動作をシミュレーションする手法である。
一方、エミュレータを使用する場合には、たとえば、対象の論理回路をFPGA(Field Programmable Gate Array)にマッピングしてハードウェアをエミュレーションするので、ハードウェア部分の動作を高速化することができる。ソフトウェア部分の検証を行う場合は、このようなFPGAエミュレータと、プロセッサ固有の命令実行部分を実現する命令セットシミュレータ(ISS;Instruction Set Simulator)及びソフトウェアデバッグ機能を具備する上位コンピュータを接続する手法や、プロセッサの命令実行部分をハードウェアによって実現したイン・サーキット・エミュレータ(ICE;In Circuit Emulator)に置き換えた手法などが使用されている。
このように互いに関連して動作するソフトウェアとハードウェアの協調検証を行うためには、それぞれの機能をリンクさせる必要がある。そこで、ソフトウェアのデバッグを行うコンピュータからハードウェアのシミュレーションに用いる各種コマンドを発生させて通信ネットワークを介してハードウェアのシミュレーション装置へ送信することによって、ハードウェア検証機能とソフトウェア検証機能をリンクさせる方法が提案されている(たとえば、特許文献1参照)。
特開2002−366602号公報(段落番号〔0018〕〜〔0027〕、図2)
しかし、従来の互いに関連して動作するソフトウェアとハードウェアの検証装置では、高速性とデバッグの機能性を両立させることが難しいという問題点があった。
論理シミュレータを使用した手法は、動作速度がエミュレータと比べて非常に低速であるため、大規模な回路を検証する場合は実用的ではない。
一方、エミュレータはハードウェアで構成されており、所望の論理回路の動作を実際の動作速度に近い速度(高速)で模擬することができる。しかしながら検証対象の論理回路のうち、エミュレータにマッピングされるのはプロセッサ回路を除く論理回路であり、プロセッサ回路部分はISSまたはICEによって実現される。このため、エミュレータ上の論理回路とエミュレータ上にないプロセッサ回路間で交換される情報は、すべてインタフェース部を介してやりとりされることになる。したがって、インタフェース部分がボトルネックとなり、エミュレータの高速性を生かすことができないという問題点がある。
一方、プロセッサ回路を高速動作させるためには、エミュレータにプロセッサ回路をマッピングすればよいが、プロセッサ回路をエミュレータにマッピングすると、エミュレータ単体ではソフトウェアのデバッグ機能を実現することができないという問題点がある。通常、ISSとともに提供される豊富なデバッグ機能、たとえば、ブレーク機能や、レジスタの参照、メモリ領域のデータダンプなど、ソフトウェア開発に重要なデバッグ機能を使用することができなくなる。
本発明はこのような点に鑑みてなされたものであり、ソフトウェアとハードウェアの協調検証において高速性とデバッグの機能性を両立させることが可能な検証装置および検証方法を提供することを目的とする。
本発明では上記課題を解決するために、図1に示すような検証装置が提供される。検証装置は、ハードウェアをエミュレーションするエミュレータ10と、ハードウェアとソフトウェアを検証するための検証環境が実装される検証実行ホスト20により構成される。エミュレータ10は、再構成可能な論理回路で構成され、この論理回路に検証対象の対象論理回路のCPUコアを除く検証対象回路の論理を回路記述でマッピングした検証対象回路11と、CPUコアの機能を回路記述でマッピングしたCPUコア12とが構築されている。検証実行ホスト20には、CPUコアの機能を検証実行ホスト20上で実現する命令セットシミュレータ21と、検証対象回路11のCPUコア12に実装されるソフトウェアのデバッグに用いるデバッガ24aとが構成されている。また、エミュレータ10にマッピングされたCPUコア12と検証実行ホスト20に実装された命令セットシミュレータ21を接続し、CPUコア12の状態を示すデータを命令セットシミュレータ21に転送するデータ転送回路25を有する。この検証装置は、エミュレータ10にマッピングされたCPUコア12が検証対象ソフトウェアを実行する通常動作モード、または命令セットシミュレータが検証対象ソフトウェアを実行するデバッグモードで動作する。
このような検証装置によれば、通常動作モードでは、エミュレータ10にマッピングされた検証対象回路11やCPUコア12が動作して、エミュレータ10側で検証対象の対象論理回路の機能もしくは動作が模擬されている。このとき、検証対象ソフトウェアは、エミュレータ10のCPUコア12が実行している。動作モードが通常動作モードからデバッグモードに遷移すると、検証実行ホスト20側の命令セットシミュレータ21によって検証対象ソフトウェアが実行され、デバッガ24aにより実現するデバッグ機能でデバッグを行うことができるようになる。このとき、エミュレータ10は、命令セットシミュレータ21の動きに合わせて協調動作し、エミュレータ10の各部が動作することによってCPUコア12に入力するデータは、データ転送回路25によって命令セットシミュレータ21に転送される。
また、上記課題を解決するために、CPUコアを含む対象論理回路について前記CPUコアが実行するソフトウェアを含めて検証を行う検証方法において、検証対象ソフトウェアを実行する前記CPUコアと前記対象論理回路から前記CPUコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータの前記CPUコアと、前記CPUコアの機能をシミュレーションする命令セットシミュレータと前記検証対象ソフトウェアのデバッグに用いるデバッガを具備するコンピュータの前記命令セットシミュレータとをデータ転送回路によって接続し、前記エミュレータにマッピングされた前記CPUコアが前記検証対象ソフトウェアを実行する通常動作モードから前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードへ遷移する場合には、前記データ転送回路が前記CPUコアの状態を示すデータを前記命令セットシミュレータへ転送し、前記命令セットシミュレータが前記データ転送回路によって取得したデータに基づき、前記命令セットシミュレータの状態を前記CPUコアの状態と一致させ、前記デバッグモードで動作を開始する、手順を有することを特徴とする検証方法が提供される。
本発明では、エミュレータにCPUコアを除く検証対象回路とCPUコアをマッピングするとともに、検証を行うコンピュータに命令セットシミュレータを用意し、通常動作モードとデバッグモードとを設け、モードを切り替えながら検証を行う。通常動作モードでは、エミュレータのCPUコアが動作し、高速処理を可能にする。デバッグモードでは、エミュレータを動かしながら、ソフトウェアの実行は命令セットシミュレータで検証することにより、命令セットシミュレータの持つ豊富なデバッグ機能を利用し、効果的なデバッグができる。このような通常動作モードとデバッグモードを切り替えながら検証を行うことによって、ソフトウェアとハードウェアの協調検証において高速性とデバッグの機能性を両立させることが可能となる。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の実施の形態の検証装置の構成を示したブロック図である。
本発明に係る検証装置は、ハードウェアをエミュレーションするエミュレータ10と、ハードウェアとソフトウェアを検証するための検証環境が実装される検証実行ホスト20が協調動作し、ハード/ソフト協調検証を可能にしている。エミュレータ10側のCPUコア12がプログラム処理を実行し、本来の検証対象装置の動作をエミュレートする通常動作モードと、ISS21がプログラム処理を実行し、ソフトウェアのデバッグが可能なデバッグモードを切り替えながら検証を行う。
エミュレータ10は、FPGAなどの再構成可能な論理回路群で構成されており、エミュレータ10に含まれる論理回路群に論理をマッピングすることにより、検証対象の対象論理回路の機能をエミュレータ10上に実現することができる。検証対象回路11、CPUコア12、ブレーク検出回路13、エミュレータ用メモリ14、クロック制御回路15、メモリ転送回路16がバス17を介して接続する。一方、検証実行ホスト20は、ISS(命令セットシミュレータ)21、ホスト側メモリ22、メモリ転送モジュール23、デバッガ24aを具備する。そして、エミュレータ10側のCPUコア12とISS21はデータ転送回路25を介して接続される。
検証対象回路11は、ハードウェア記述言語で記述されたCPUコア以外の検証対象回路をマッピングしてエミュレータ10に実装される。検証対象回路11は、画像処理や伝送処理などの特定用途向けの回路などである。
CPUコア12は、ハードウェア記述言語により記述されたCPUコアの論理をマッピングしてエミュレータ10に実装される。CPUコア12は、所定の命令セットメモリに格納される命令セットを順次読み出し、命令セットに基づく処理を実行する。
ブレーク検出回路13は、CPUコア12が実行する命令セットを解析し、命令セットに、CPUコア12の動作をブレークするブレークポイントであることを指示するブレーク指示フラグがセットされていることを検出した場合には、ブレーク検出信号を前記エミュレータ上に構成されたクロック制御回路15、メモリ転送回路16及びデータ転送回路25へ出力する。さらに、検証実行ホスト20側からの指示によってブレーク検出信号を発生させるようにしてもよい。
エミュレータ用メモリ14は、エミュレータ10にマッピングされた検証対象回路11やCPUコア12などからバス17を介してアクセス可能なメモリである。検証対象回路11やCPUコア12が処理実行時に必要な情報が一時格納される。また、CPUコア12で実行される命令セットが格納されてもよい。また、エミュレータ用メモリ14に格納される情報は、デバッグモードに遷移する場合にメモリ転送回路16によってホスト側メモリ22へ転送される。
クロック制御回路15は、エミュレータ10を構成する各部に所定のクロック信号を供給する。クロック制御回路15は、動作モードが通常動作モードの場合は、通常動作時のクロックを供給する。また、ブレーク検出回路13よりブレーク検出信号を受け取ると、検証対象回路11及びCPUコア12へ供給しているクロックを停止する。そして、動作モードがデバッグモードに遷移し、検証実行ホスト20側からステップ実行指令があれば、ISS21と同期をとってクロックを供給する。
メモリ転送回路16は、ブレーク検出回路13が出力したブレーク検出信号を受け取ると、エミュレータ用メモリ14の内容をホスト側メモリ22へ転送する。また、デバッグモード時に、バス17を介して検証対象回路11などからエミュレータ用メモリ14に書き込みがあった場合には、その内容をホスト側メモリ22へ転送する。
ISS21は、ソフトウェアによってCPUの動作を実現したもので、CPUの動作を検証実行ホスト20上に再現する機能を有し、通常動作モード時には停止している。そして、ブレーク発生やデバッガ24aを介してデバッグ指示があり、デバッグモードに遷移する際、データ転送回路25経由でCPUコア12の状態を示すデータ(プログラムカウンタ、レジスタ値、キャッシュデータなど)を取得し、その値で初期化した後、命令セット実行処理を開始する。なお、デバッグモード時にエミュレータ10側がISS21に合わせて動作することによってCPUコア12に入力したデータもデータ転送回路25によって転送されるので、このデータを用いてCPUコア12の状態と一致させる処理を行う。
ホスト側メモリ22は、デバッグモード時に、ISS21が命令セットを実行時にアクセスするメモリである。ISS21と同様に、デバッグモードに遷移する際、エミュレータ10側のメモリ転送回路16及びメモリ転送モジュール23を経由してエミュレータ用メモリ14の内容が転送され、同じ内容に初期化される。また、デバッグモードに遷移後にも、同じ経路でメモリ内容の一致化が図られる。
メモリ転送モジュール23は、エミュレータ10側のメモリ転送回路16から転送されるメモリデータをホスト側メモリ22に書き込む。
デバッガ24aは、ブレーク機能、メモリや変数、レジスタの内容の参照や変更を行う機能、トレース機能など、ソフトウェアの開発に必要な機能が、ソフトウェアによって検証実行ホスト20に実装されたものである。表示機能や指示入力機能などと合わせてソフトウェア開発環境24に含まれる。一般に、このようなデバッグ機能として、新たに開発するのではなく、CPUコアの開発環境としてISSとともに豊富に提供されたものを使用することができる。
データ転送回路25は、ブレーク検出回路13よりブレーク検出信号を受け取ると、CPUコア12の状態を示す、プログラムカウンタ、レジスタ、キャッシュなどのデータを検証実行ホスト20のISS21に転送する。また、バス17に接続し、デバッグモード時にCPUコア12に入力するデータを監視し、データが入力されると、これをISS21に転送する。
このような構成の検証装置の動作及び検証方法について説明する。
実施の形態の検証装置は、エミュレータ10側が動作する通常動作モードと、エミュレータ10と検証実行ホスト20が協調動作するデバッグモードとを切り替えながら検証対象回路11のハードウェア及びソフトウェアの検証を行う。
通常動作モードは、エミュレータ10側が動作するモードで、エミュレータ10にマッピングされたCPUコア12が検証対象ソフトウェアを実行する。このとき、検証実行ホスト20側のISS21は動作しない。
デバッグモードは、エミュレータ10側と検証実行ホスト20側が協調動作するモードで、ISS21が検証対象ソフトウェアを実行する。エミュレータ10側は、ISS21の動きに合わせて動作し、動作に伴ってCPUコア12へ入力されるデータ及びエミュレータ用メモリ14へのデータ書き込みは、それぞれデータ転送回路25及びメモリ転送回路16によって検証実行ホスト20側に転送され、内容の一致化が図られる。
一般的な検証は、次の操作手順に従って行われる。
(1)ブレークポイントを設定する。
(2)エミュレータ10を起動し、通常動作モードで処理を実行させる。
(3)エミュレータ10がブレークポイントを検出し、エミュレーションを停止させ、デバッグモードへ遷移させる。
(4)検証実行ホスト20側の、デバッグ機能を用いてデバッグを行う。
(5)エミュレータ10は、検証実行ホスト20に合わせてエミュレーションを再開する。
(6)必要に応じて、ブレークポイントを再設定する。
(7)エミュレータを再起動する。
以下、(3)から(7)の手順が繰り返され、検証が行われていく。なお、上記の手順の(1)、(2)、(4)、(6)及び(7)は、ユーザが介入し、指示や設定を入力することによって実行される手順であり、(3)及び(5)は検証装置が自動的に行う手順である。
以下、手順に沿って、順に説明する。
(1)ブレークポイント設定
ブレークポイントは、ユーザが動作を停止したい命令セットのアドレスを指示することによって設定される。
図2は、本実施の形態の命令セットメモリの一例を示した図である。
命令セットメモリ100は、CPUコア12が実行する命令セットを格納するメモリで、CPU12がアクセス可能な領域に確保される。エミュレータ用メモリ14に確保されてもよい。各命令セットは、命令101と、この命令にブレークポイントが設定されているかどうかを示すブレーク指示フラグ(BP)102を有する。BP102には、たとえば、当該命令セットにブレークポイントが設定された場合は1が、設定されない場合は0がセットされる。
このような構成により、実行命令セットを読み出したときBP102を確認すれば、容易にブレークポイントを検出することができる。また、任意の数のブレークポイントを設定することができる。
(2)通常動作モードで起動
通常動作モードで起動すると、処理はエミュレータ10側において実行される。すなわち、クロック制御回路15が供給する通常動作時のクロックで、検証対象回路11、CPUコア12及びブレーク検出回路13が動作する。CPUコア12は、命令セットメモリに格納される命令セットをプログラムカウンタに従って順次実行する。同様に、検証対象回路11もロジックに従って処理を行う。このとき必要に応じて、バス17を介してエミュレータ用メモリ14にデータを一時格納したり、格納されたデータを読み出したりする処理が行われる。また、ブレーク検出回路13は、プログラムカウンタが示すCPUコア12が実行する命令セットにブレーク指示フラグがセットされているかどうかを監視する。
以上のように、通常動作時には、検証実行ホスト20側は動作せず、データ転送回路25及びメモリ転送回路16も処理を行わない。このため、通常動作モードでは、実際の対象論理回路と同様の処理を高速にエミュレーションすることができる。
なお、必要であれば、検証実行ホスト20側からブレーク検出回路13に指示し、強制的にエミュレータ10の動作を停止させることができるようにすることもできる。
(3)ブレーク検出からデバッグモードへの遷移
図3は、本実施の形態の検証装置におけるブレーク検出からデバッグモードへ遷移するまでの処理手順を示したフローチャートである。
[ステップS01] 通常動作モードで動作するブレーク検出回路13は、プログラムカウンタが指示する命令セットのBP102がセットされた命令セットによってブレークポイントを検出する。なお、ブレークポイントは、ブレーク指示フラグがセットされた命令セットメモリのアドレスを抽出しておき、このアドレスとプログラムカウンタの値を比較することで検出してもよい。
[ステップS02] ブレークポイントが検出されると、ブレーク検出回路13は、クロック制御回路15、データ転送回路25及びメモリ転送回路16にブレーク検出信号を出力する。
[ステップS03] データ転送回路25は、ブレーク検出信号を受け取ると、プログラムカウンタ、レジスタ、キャッシュなどに格納されるCPUコア12の状態を示すデータを検証実行ホスト20側のISS21へ転送する。メモリ転送回路16は、ブレーク検出信号を受け取ると、エミュレータ用メモリ14の内容を検証実行ホスト20側のメモリ転送モジュール23を介してホスト側メモリ22へ転送する。また、クロック制御回路15は、検証対象回路11及びCPUコア12へのクロック供給を停止する。これにより、エミュレータ10側の処理は停止し、その時点の状態が検証実行ホスト20側のホスト側メモリ22やISS21に転送される。
[ステップS04] ISS21は、ステップS03の手順でデータ転送回路25によって転送されたデータを用いてエミュレータ10側のCPUコア12と同じ状態となるように初期化処理を行う。ISS21が使用するホスト側メモリ22は、メモリ転送回路16及びメモリ転送モジュール23によってエミュレータ用メモリ14と同じ内容になっている。
[ステップS05] デバッグモードに遷移し、ユーザからの指示によってISS21上でプログラムを実行し、デバッグすることが可能となる。
以上の処理手順が実行されることにより、エミュレータ10側のCPUコア12の状態及びエミュレータ用メモリ14の内容が検証実行ホスト20側に引き継がれ、デバッグ処理が行われる。
(4)デバッグモード動作(検証実行ホスト)
デバッグモード時、デバッガ24aを介して入力されるユーザの指示に基づきデバッグが行われる。ステップ実行が指示されると、ISS21は、プログラムカウンタの指示する命令セットを読み出して処理し、プログラムカウンタを更新して処理を停止する。このとき、メモリアクセスは、ホスト側メモリ22に対して行われる。
(5)デバッグモード動作(エミュレータ)
一方、デバッグモード時には、エミュレータ10側は、検証実行ホスト20のISS21に同期して協調動作を行う。ステップ実行時には、クロック制御回路15は、ISS21に同期させて検証対象回路11及びCPUコア12にクロックを供給し、動作させる。
このとき、検証対象回路11の動作により、検証対象回路11からCPUコア12への入力信号や、エミュレータ用メモリ14へのデータ書き込みなどが発生する。そこで、データ転送回路25及びメモリ転送回路16によってこれらのデータを検証実行ホスト20側に転送する。
図4は、本実施の形態のデバッグモード時のエミュレータとISSの同期を示した図である。
エミュレータ10側の検証対象回路11は、デバッグモード時も動作しており、ステップ実行などにより処理を行う。このとき、割り込み信号など、CPUコア12へ出力する信号が発生した場合には、データ転送回路25がこれを検出し、同様の信号をISS21に転送する。具体的には、データ転送回路25は、バス17に接続し、バス17経由でCPUコア12へ入力する信号を検出し、これをISS21に転送する。ISS21は、エミュレータ10側のバス17から読み取ったCPUコア12への入力データを用いることで、CPUコア12と全く同じ動作をすることができる。
図5は、本実施の形態のデバッグモード時のメモリデータの一致化を示した図である。
エミュレータ10側の検証対象回路11は、デバッグモード時も動作しており、ステップ実行などにより、エミュレータ用メモリ14にデータ書き込みを行う場合がある。メモリ転送回路16は、バス17を介して入力するエミュレータ用メモリ14へのデータ書き込み信号を入力すると、検証実行ホスト20側へデータ書き込みを転送することで、ISS21が使用するホスト側メモリ22をエミュレータ用メモリ14の内容と一致させる。これにより、ISS21は、ホスト側メモリ22にアクセスしても、エミュレータ10側のCPUコア12と同じデータを読み出すことができる。
(6)ブレークポイント再設定
必要であれば、ブレークポイントを再設定する。ブレークポイントの設定は、(1)の手順と同様である。
(7)デバッグモードから通常動作モードへの遷移(エミュレータの再起動)
図6は、本実施の形態の検証装置におけるデバッグモードから通常動作モードへの遷移の処理手順を示したフローチャートである。
なお、デバッグモードにおいて、エミュレータ10側の検証対象回路11及びCPU コア12は、検証実行ホスト20側に協調して動作しているので、ISS21とCPUコア12の状態は一致している。
[ステップS11] 検証実行ホスト20のソフトウェア開発環境24から指示を出し、通常動作モードに設定する。上記のように、このとき、ISS21とCPUコア12の状態は一致している。また、エミュレータ用メモリ14とホスト側メモリ22の内容は、エミュレータ用メモリ14へのデータ書き込みが検証対象回路11からのみであれば、一致している。なお、通常は、そのような形態をとることが多いと考えられる。
[ステップS12] ソフトウェア開発環境24からエミュレータ10側に通常動作モードで動作を開始するように指示が出される。
[ステップS13] エミュレータ10側のクロック制御回路15は、クロック周波数を通常速度に切り替える。なお、このとき、必要であればホスト側メモリ22の内容をエミュレータ用メモリ14に転送する処理を行ってもよい。
[ステップS14] クロック制御回路15が通常速度のクロックを検証対象回路11及びCPUコア12に供給し、エミュレータ10が通常動作モードで処理を開始する。
[ステップS15] 検証実行ホスト20側のISS21は、動作を停止し、ブレーク後の再初期化待ち状態に移行する。
以上の処理手順が実行されることにより、検証実行ホスト20側と同じ状態から、エミュレータ10の通常動作が開始される。
このように、本実施の形態では、エミュレータ10にマッピングしたCPUコア12と、検証実行ホスト20側のISS21の両方を用意し、通常動作モード時はエミュレータ10上のCPUコア12を使い、デバッグモード時はISS21とCPUコア12の両方を使う。これにより、高速性を保ちながら、デバッグを行うことが可能となる。
すなわち、最初はエミュレータ10上のCPUコア12を動作させておき、ブレークポイントに達した時点で、CPUコア12のプログラムカウンタ、内部レジスタなどの情報を検証実行ホスト20側に渡し、その情報に基づきISS21をエミュレータ10上のCPUコア12と同じ状態に初期化する。そして、ISS21及びデバッガ24aを用いてステップ実行などのソフトデバッグを行う。ソフトデバッグ中にもエミュレータ10側を動作させ、バス17の入出力情報をISS21側に渡すことで、ISS21とエミュレータ10側の動作の整合性を保ち、かつデバッグ終了時はエミュレータ側で通常動作に復帰できるようにする。
GUI(Graphical User Interface)を操作してステップ実行などを行うデバッグ時にはCPUは高速に動作する必要はないため、エミュレータ10にマッピングしたCPUコア12を使用する必要はない。また、検証実行ホスト20側のISS21を用いることで、通常CPUコアの開発環境としてISSとともに提供される豊富なデバッグ機能を使用することが可能となる。
(付記1) CPUコアを含む対象論理回路について前記CPUコアが実行するソフトウェアを含めて検証を行うための検証装置において、
検証対象ソフトウェアを実行する前記CPUコアと前記対象論理回路から前記CPUコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータと、
前記CPUコアの機能をシミュレーションする命令セットシミュレータと、前記検証対象ソフトウェアのデバッグに用いるデバッガと、を具備するコンピュータと、
前記エミュレータにマッピングされた前記CPUコアと前記命令セットシミュレータとを接続し、前記CPUコアの状態を示すデータを前記命令セットシミュレータへ転送するデータ転送回路と、
を具備し、前記エミュレータにマッピングされた前記CPUコアが前記検証対象ソフトウェアを実行する通常動作モード、または前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードで動作する、
ことを特徴とする検証装置。
(付記2) 前記デバッグモード時には、前記命令セットシミュレータのステップ実行に同期して前記エミュレータが動作する、
ことを特徴とする付記1記載の検証装置。
(付記3) 前記データ転送回路は、前記検証装置の動作モードが、前記通常動作モードから前記デバッグモードに遷移する際に前記エミュレータにマッピングされた前記CPUコアの状態を示すデータを前記命令セットシミュレータへ転送する、
ことを特徴とする付記1記載の検証装置。
(付記4) 前記データ転送回路は、前記デバッグモード時、前記CPUコアへの入力信号を検出し、検出した前記入力信号を前記命令セットシミュレータに転送する、
ことを特徴とする付記1記載の検証装置。
(付記5) 前記エミュレータは、前記CPUコアが実行する命令セットを解析し、前記命令セットに、前記CPUコアの動作をブレークするブレークポイントであることを指示する前記ブレーク指示フラグがセットされていることを検出した場合には、ブレーク検出信号を出力するブレーク検出回路を有し、
前記ブレーク検出信号によって動作モードを前記通常動作モードから前記デバッグモードに遷移させる、
ことを特徴とする付記1記載の検証装置。
(付記6) 前記エミュレータは、前記エミュレータ上に構成された前記検証対象回路及び前記CPUコアに対し、前記通常動作モード時には通常動作用のクロックを供給し、前記デバッグモード時には、前記命令セットシミュレータがステップ実行を行っている間は命令セットシミュレータに同期させて前記クロックを供給するクロック制御回路、
を有することを特徴とする付記1記載の検証装置。
(付記7) 前記エミュレータの前記CPUコア及び前記検証対象回路がアクセスするエミュレータ用メモリと、
前記コンピュータの前記命令セットシミュレータがアクセスするメモリと、
前記エミュレータ用メモリと前記コンピュータの前記メモリを接続し、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送するメモリ転送回路と、
を有し、
前記メモリ転送回路は、動作モードが、前記通常動作モードから前記デバッグモードに遷移する場合に、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送する、
ことを特徴とする付記1記載の検証装置。
(付記8) 前記メモリ転送回路は、前記デバッグモード時、前記エミュレータ用メモリへのデータ書き込み信号を検出し、検出した前記データ書き込み信号を前記コンピュータの前記メモリに転送する、
ことを特徴とする付記7記載の検証装置。
(付記9) CPUコアを含む対象論理回路について前記CPUコアが実行するソフトウェアを含めて検証を行う検証方法において、
検証対象ソフトウェアを実行する前記CPUコアと前記対象論理回路から前記CPUコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータの前記CPUコアと、前記CPUコアの機能をシミュレーションする命令セットシミュレータと前記検証対象ソフトウェアのデバッグに用いるデバッガを具備するコンピュータの前記命令セットシミュレータとをデータ転送回路によって接続し、
前記エミュレータにマッピングされた前記CPUコアが前記検証対象ソフトウェアを実行する通常動作モードから前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードへ遷移する場合には、前記データ転送回路が前記CPUコアの状態を示すデータを前記命令セットシミュレータへ転送し、
前記命令セットシミュレータが前記データ転送回路によって取得したデータに基づき、前記命令セットシミュレータの状態を前記CPUコアの状態と一致させ、前記デバッグモード動作を開始する、
手順を有することを特徴とする検証方法。
本発明の実施の形態の検証装置の構成を示したブロック図である。 本実施の形態の命令セットメモリの一例を示した図である。 本実施の形態の検証装置におけるブレーク検出からデバッグモードへ遷移するまでの処理手順を示したフローチャートである。 本実施の形態のデバッグモード時のエミュレータとISSの同期を示した図である。 本実施の形態のデバッグモード時のメモリデータの一致化を示した図である。 本実施の形態の検証装置におけるデバッグモードから通常動作モードへの遷移の処理手順を示したフローチャートである。
符号の説明
10 エミュレータ
11 検証対象回路
12 CPUコア
13 ブレーク検出回路
14 エミュレータ用メモリ
15 クロック制御回路
16 メモリ転送回路
20 検証実行ホスト
21 命令セットシミュレータ(ISS)
22 ホスト側メモリ
23 メモリ転送モジュール
24 ソフトウェア開発環境
24a デバッガ
25 データ転送回路

Claims (5)

  1. CPUコアを含む対象論理回路について前記CPUコアが実行するソフトウェアを含めて検証を行うための検証装置において、
    検証対象ソフトウェアを実行する前記CPUコアと前記対象論理回路から前記CPUコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータと、
    前記CPUコアの機能をシミュレーションする命令セットシミュレータと、前記検証対象ソフトウェアのデバッグに用いるデバッガと、を具備するコンピュータと、
    前記エミュレータにマッピングされた前記CPUコアと前記命令セットシミュレータとを接続し、前記CPUコアの状態を示すデータを前記命令セットシミュレータへ転送するデータ転送回路と、
    を具備し、前記エミュレータにマッピングされた前記CPUコアが前記検証対象ソフトウェアを実行する通常動作モード、または前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードで動作する、
    ことを特徴とする検証装置。
  2. 前記データ転送回路は、前記検証装置の動作モードが、前記通常動作モードから前記デバッグモードに遷移する際に前記エミュレータにマッピングされた前記CPUコアの状態を示すデータを前記命令セットシミュレータへ転送する、
    ことを特徴とする請求項1記載の検証装置。
  3. 前記エミュレータは、前記CPUコアが実行する命令セットを解析し、前記命令セットに、前記CPUコアの動作をブレークするブレークポイントであることを指示する前記ブレーク指示フラグがセットされていることを検出した場合には、ブレーク検出信号を出力するブレーク検出回路を有し、
    前記ブレーク検出信号によって動作モードを前記通常動作モードから前記デバッグモードに遷移させる、
    ことを特徴とする請求項1記載の検証装置。
  4. 前記エミュレータの前記CPUコア及び前記検証対象回路がアクセスするエミュレータ用メモリと、
    前記コンピュータの前記命令セットシミュレータがアクセスするメモリと、
    前記エミュレータ用メモリと前記コンピュータの前記メモリを接続し、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送するメモリ転送回路と、
    を有し、
    前記メモリ転送回路は、動作モードが、前記通常動作モードから前記デバッグモードに遷移する場合に、前記エミュレータ用メモリの内容を前記コンピュータの前記メモリに転送する、
    ことを特徴とする請求項1記載の検証装置。
  5. CPUコアを含む対象論理回路について前記CPUコアが実行するソフトウェアを含めて検証を行う検証方法において、
    検証対象ソフトウェアを実行する前記CPUコアと前記対象論理回路から前記CPUコアを除いた検証対象回路の論理を再構成可能な論理回路上にマッピングしたエミュレータの前記CPUコアと、前記CPUコアの機能をシミュレーションする命令セットシミュレータと前記検証対象ソフトウェアのデバッグに用いるデバッガを具備するコンピュータの前記命令セットシミュレータとをデータ転送回路によって接続し、
    前記エミュレータにマッピングされた前記CPUコアが前記検証対象ソフトウェアを実行する通常動作モードから前記命令セットシミュレータが前記検証対象ソフトウェアを実行するデバッグモードへ遷移する場合には、前記データ転送回路が前記CPUコアの状態を示すデータを前記命令セットシミュレータへ転送し、
    前記命令セットシミュレータが前記データ転送回路によって取得したデータに基づき、前記命令セットシミュレータの状態を前記CPUコアの状態と一致させ、前記デバッグモードで動作を開始する、
    手順を有することを特徴とする検証方法。


JP2005246825A 2005-08-26 2005-08-26 検証装置及び検証方法 Pending JP2007058813A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005246825A JP2007058813A (ja) 2005-08-26 2005-08-26 検証装置及び検証方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005246825A JP2007058813A (ja) 2005-08-26 2005-08-26 検証装置及び検証方法

Publications (1)

Publication Number Publication Date
JP2007058813A true JP2007058813A (ja) 2007-03-08

Family

ID=37922210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005246825A Pending JP2007058813A (ja) 2005-08-26 2005-08-26 検証装置及び検証方法

Country Status (1)

Country Link
JP (1) JP2007058813A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250365A (ja) * 2009-04-10 2010-11-04 Renesas Electronics Corp 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法
US8036874B2 (en) 2007-06-21 2011-10-11 Kabushiki Kaisha Toshiba Software executing device and co-operation method
JP2011232914A (ja) * 2010-04-27 2011-11-17 Nippon Telegr & Teleph Corp <Ntt> シミュレーション装置、シミュレーション装置の制御方法およびプログラム
JP2015026223A (ja) * 2013-07-25 2015-02-05 スパンション エルエルシー システム、エミュレータ、デバッグシステムおよびデバッグシステムにおける方法
US10303149B2 (en) 2015-01-28 2019-05-28 Mitsubishi Electric Corporation Intelligent function unit and programmable logic controller system
CN117539705A (zh) * 2024-01-10 2024-02-09 深圳鲲云信息科技有限公司 片上系统的验证方法、装置、系统及电子设备
CN117742218A (zh) * 2023-12-27 2024-03-22 深圳宇凡微电子有限公司 一种单片机功能检测方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02136938A (ja) * 1988-11-17 1990-05-25 Matsushita Electric Ind Co Ltd プロセッサ制御方法
JPH1185559A (ja) * 1997-09-05 1999-03-30 Hitachi Ltd エミュレータ
JP2001209556A (ja) * 1999-11-18 2001-08-03 Yokogawa Electric Corp 検証支援システム
JP2002366602A (ja) * 2001-04-06 2002-12-20 Seiko Epson Corp ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
JP2003186694A (ja) * 2001-12-21 2003-07-04 Toshiba Corp ハードウェア・ソフトウェア開発システム、ハードウェア・ソフトウェア開発方法及びハードウェア・ソフトウェア開発プログラム
JP2004038387A (ja) * 2002-07-01 2004-02-05 Fujitsu Ltd 論理検証システム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02136938A (ja) * 1988-11-17 1990-05-25 Matsushita Electric Ind Co Ltd プロセッサ制御方法
JPH1185559A (ja) * 1997-09-05 1999-03-30 Hitachi Ltd エミュレータ
JP2001209556A (ja) * 1999-11-18 2001-08-03 Yokogawa Electric Corp 検証支援システム
JP2002366602A (ja) * 2001-04-06 2002-12-20 Seiko Epson Corp ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
JP2003186694A (ja) * 2001-12-21 2003-07-04 Toshiba Corp ハードウェア・ソフトウェア開発システム、ハードウェア・ソフトウェア開発方法及びハードウェア・ソフトウェア開発プログラム
JP2004038387A (ja) * 2002-07-01 2004-02-05 Fujitsu Ltd 論理検証システム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8036874B2 (en) 2007-06-21 2011-10-11 Kabushiki Kaisha Toshiba Software executing device and co-operation method
JP2010250365A (ja) * 2009-04-10 2010-11-04 Renesas Electronics Corp 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法
JP2011232914A (ja) * 2010-04-27 2011-11-17 Nippon Telegr & Teleph Corp <Ntt> シミュレーション装置、シミュレーション装置の制御方法およびプログラム
JP2015026223A (ja) * 2013-07-25 2015-02-05 スパンション エルエルシー システム、エミュレータ、デバッグシステムおよびデバッグシステムにおける方法
US10303149B2 (en) 2015-01-28 2019-05-28 Mitsubishi Electric Corporation Intelligent function unit and programmable logic controller system
CN117742218A (zh) * 2023-12-27 2024-03-22 深圳宇凡微电子有限公司 一种单片机功能检测方法及系统
CN117539705A (zh) * 2024-01-10 2024-02-09 深圳鲲云信息科技有限公司 片上系统的验证方法、装置、系统及电子设备
CN117539705B (zh) * 2024-01-10 2024-06-11 深圳鲲云信息科技有限公司 片上系统的验证方法、装置、系统及电子设备

Similar Documents

Publication Publication Date Title
US7930162B1 (en) Accelerating hardware co-simulation using dynamic replay on first-in-first-out-driven command processor
US5978584A (en) Debugging apparatus for debugging a program by changing hardware environments without changing program operation state
JP4529063B2 (ja) システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
US7185321B1 (en) Method and system for debugging through supervisory operating codes and self modifying codes
CN112199162B (zh) 基于虚拟化磁盘双活容灾的磁盘快照方法、装置及介质
US20050165597A1 (en) Apparatus and method for performing hardware and software co-verification testing
US6668339B1 (en) Microprocessor having a debug interruption function
US20040250244A1 (en) Systems and methods for providing communication between a debugger and a hardware simulator
EP1797512B1 (en) Accelerated hardware emulation environment for processor-based systems
JP2007058813A (ja) 検証装置及び検証方法
CN107861850B (zh) 一种中断验证系统及其使用方法、计算机设备、存储介质
CN102929688A (zh) 一种模拟触摸屏的模拟器实现方法及该模拟器
JP2008282308A (ja) 協調検証装置、協調検証方法、協調検証プログラム
JP2002366602A (ja) ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
US8886512B2 (en) Simulation apparatus, computer-readable recording medium, and method
JPH1078887A (ja) デバッグシステム及びデバッグ方法
JP4589255B2 (ja) ハードウェア/ソフトウェア協調検証装置
JP2011039781A (ja) 協調シミュレーション装置及びシミュレーション方法
US20050071812A1 (en) Combined emulation and simulation debugging techniques
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
JPS6349851A (ja) シミユレ−シヨンシステム
KR101412576B1 (ko) 가상 보드 플랫폼, 시스템-온-칩 시뮬레이션 장치, 시스템-온-칩 시뮬레이션 방법 및 시스템-온-칩 검증 방법
JP3424548B2 (ja) 組み込み機器用ソフトウエア論理シミュレータ
KR100426308B1 (ko) 인증된 응용 프로그램을 획득하기 위한 트레이스 재실행시스템 및 방법
Wronka et al. Embedded software debug in simulation and emulation environments for interface IP

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080619

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100511

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100921