JP4589255B2 - ハードウェア/ソフトウェア協調検証装置 - Google Patents

ハードウェア/ソフトウェア協調検証装置 Download PDF

Info

Publication number
JP4589255B2
JP4589255B2 JP2006068223A JP2006068223A JP4589255B2 JP 4589255 B2 JP4589255 B2 JP 4589255B2 JP 2006068223 A JP2006068223 A JP 2006068223A JP 2006068223 A JP2006068223 A JP 2006068223A JP 4589255 B2 JP4589255 B2 JP 4589255B2
Authority
JP
Japan
Prior art keywords
unit
address
emulator
data
flag
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.)
Expired - Fee Related
Application number
JP2006068223A
Other languages
English (en)
Other versions
JP2007249293A (ja
Inventor
博昭 藤本
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 JP2006068223A priority Critical patent/JP4589255B2/ja
Publication of JP2007249293A publication Critical patent/JP2007249293A/ja
Application granted granted Critical
Publication of JP4589255B2 publication Critical patent/JP4589255B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

本発明は、半導体集積回路のハードウェアとソフトウェアの検証の技術に関する。
従来、半導体集積回路の開発において、ハードウェア設計と並行してソフトウェア検証を行うためにハードウェア/ソフトウェア協調検証装置を用いている。
例えば、CPUコアやDSPコアを集積したSoC(System On a Chip)などの開発を短期間に行う場合に、ハードウェアの設計と検証が完了する前に、ファームウェアやミドルウェアなどのソフトウェア開発を開始しなければならないことがある。ところが、実際にチップが完成する前にソフトウェア開発を行うためにはハード/ソフト協調検証を行う必要がある。
近年、ハード/ソフト協調検証を行う手法として、大きく分けて論理シミュレータ(ソフトシミュレータ)を使用する手法とハードウェア・エミュレータを使用する手法が用いられている。論理シミュレータを使用した手法は動作速度がエミュレータと比べて非常に低速であるため、大規模な回路を検証する場合は実用的ではない。そのため、エミュレータを使用する手法が用いられている。エミュレータを用いる手法には、命令セットシミュレータ(ISS)を使用する手法、イン・サーキット・エミュレータ(ICE)を使用する手法などある。
図15に従来のISSを用いたハード/ソフト協調検証装置を示して説明する。一般的にハードウェア/ソフトウェア協調検証装置は、ソフトウェアのデバッグを行うソフトウェア開発用ホスト151と、インタフェース153(以後IFとする)を経由して接続されたエミュレータ152によって構成される。IF153は、USB(Universal Serial Bus)、SCSI(Small Computer System Interface)のような汎用のインタフェースや独自インタフェースである。また、データ用、制御用というようにIF153が複数の場合もある。
エミュレータ制御ソフト部154は、エミュレータの制御を行うソフトウェアを有し、基本的にはエミュレータ151の実行、停止等の操作を行う。
ソフトウェア開発環境部155は、ホスト上で動作する開発環境でIF153を経由してエミュレータ152と接続される。SW開発環境部155には、ブレークポイントの設定、ステップ実行などを行うデバッガ156、CPU157の命令コードをソフトウェアで実行し、CPU1511のローカルメモリ1512などが含まれる。
エミュレータ制御部159は、ソフトウェア開発ホスト151上のエミュレータ制御ソフト部154からの指示に従ってエミュレータ152のハードウェア1513を制御する。ブレークポイント検出回路1510は、ソフトウェア開発ホスト151から設定されたブレークポイントを検出しエミュレータ制御部159に通知する。CPU1511にはエミュレータ152に展開したCPUコアまたは実CPUチップが使用される。ローカルメモリ1512は、基本的にCPU1511のみからアクセス可能で、エミュレータ内メモリに展開されるか実メモリが使用される。
ハードウェア部1513は、検証対象のハードウェアがエミュレータ152上に展開(マッピング)されている。共有メモリ1514はハードウェア部1513、CPU部1511からアクセスされるメモリである。
実際の検証時の動作は次のようになる。図16に示す通常モードでは、実行前にブレークポイントを設定しておく。最初はエミュレータ側のCPU1511で高速に動作させる。CPU1511上のプログラムがブレークポイントに達した時点でCPU1511の動作をISS側に切り替える。またはエミュレータ152側と同時に動作させる。そして、図17に示すデバッグモードでは、ソフトウェア開発ホスト151でソフトウェアのデバッグを行う。また、通常モードとデバッグモードは任意の時点で切り替え可能である。通常モードで高速にブレークポイントまで到達し、その後、デバッグモードでソフトのデバッグを行う。
特許文献1によれば、互いに関連して動作するソフトウエアおよびハードウェアのシミュレーションを行う場合に、ソフトウェアのデバッグ機能とハードウエアのシミュレーション機能とを容易にリンクさせることができる。このシミュレーション方法によれば、命令精度のシミュレーションとサイクル精度のシミュレーションとを1つのシミュレーションモデルでサポートできる。また、マイコンボード等の開発におけるソフトウェアおよびハードウェアの開発期間を短縮し、開発コストを低減する提案されている。
特開2002−366602号公報
しかしながら、ISSやICEを使用する場合、ISSやICE部分がボトルネックとなり、エミュレータの高速性を生かすことができない。また、CPUコアをエミュレータ上の再構成可能なエリアに展開する手法や実CPUチップを使用する手法の場合、エミュレータ単体ではソフトウェアのデバッグ機能が無いためソフトウェア開発には使用できないという問題がある。
また、高速性とデバッグ性を両立するハードウェア/ソフトウェア協調検証として、エミュレータ上に展開したCPUコアとISSを切り替えて行う方法がある。しかしながら、この方法は高速性とデバッグ性を両立しているがCPU切り替え時のローカルメモリへの転送に時間がかかるという問題がある。
また、特許文献1などは、切り替え時にローカルメモリの全てのデータを転送していたため、転送や制御の時間がかかるという問題がある。
本発明は上記のような実情に鑑みてなされたものであり、高速でかつデバッグ性のよいハードウェア/ソフトウェア協調検証と、さらにCPU切り替え時間を高速化にするハードウェア/ソフトウェア協調検証装置とその方法を提供することを目的とする。
本発明の態様のひとつであるエミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは上記エミュレータで検証し、デバッグモードでは上記命令セットシミュレータで検証するモード切替可能なハードウェア/ソフトウェア協調検証装置であって、 上記エミュレータに展開された上記検証対象回路のメモリ領域へのメモリライトアクセスを監視して、上記メモリ領域のデータに変化があったアドレスのアドレス番号を格納するエミュレータ側転送制御部と、 上記モード切替えをするときに、上記エミュレータ側転送制御部が格納した上記アドレス番号と、上記アドレス番号が示す上記メモリ領域のデータを抽出し、上記アドレスと上記データを転送するエミュレータ側データ転送部と、
上記モード切替えをするときに、上記エミュレータ側データ転送部から転送された上記アドレス番号と上記データを受信して格納し、格納した上記アドレスに対応する上記命令セットシミュレータ側のメモリ領域のアドレスに上記データを書き込む上記命令セットシミュレータ側データ転送部と、 を具備する構成である。
本発明の他の態様のであるエミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは上記エミュレータで検証し、デバッグモードでは上記命令セットシミュレータで検証するモード切替可能なハードウェア/ソフトウェア協調検証装置であって、 上記命令セットシミュレータの検証で使用しているメモリ領域へのメモリライトアクセスを監視して、上記メモリ領域のデータに変化があったアドレスのアドレス番号を格納する命令セットシミュレータ側転送制御部と、 上記モード切替えをするときに、上記命令セットシミュレータ側転送制御部が格納した上記アドレス番号と、上記アドレス番号が示す上記メモリ領域のデータを抽出し、上記アドレスと上記データを転送する命令セットシミュレータ側データ転送部と、 上記モード切替えをするときに、上記命令セットシミュレータ側データ転送部から転送された上記アドレス番号と上記データを受信して格納し、格納した上記アドレスに対応する上記エミュレータ側のメモリ領域のアドレスに上記データを書き込む上記エミュレータ側データ転送部と、
を具備する構成である。
好ましくは、上記エミュレータ側転送制御部として、上記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、上記メモリライトアクセスがあったアドレスの上記フラグ部を有効にして上記アドレス番号を示す構成でもよい。
好ましくは、上記命令セットシミュレータ側転送制御部として、上記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、上記メモリライトアクセスがあったアドレスの上記フラグ部を有効にして上記アドレス番号を示す構成としてもよい。
好ましくは、上記エミュレータ側転送制御部としてFIFO部を設け、上記検証対象回路のメモリ領域の対応するアドレスに上記メモリライトアクセスがあった上記アドレス番号を格納する構成としてもよい。
上記構成により、通常モードとデバッグモードの切り替え時間が短縮され、デバッグ性能を向上する。
本発明によれば、通常モードとデバッグモードの切り替え時間が短縮され、デバッグ性能を向上させることができる。
以下図面に基づいて、本発明の実施形態について詳細を説明する。
(原理説明)
本発明によるハードウェア/ソフトウェア協調検証装置の構成を図1に示す。ソフトウェアのデバッグを行うソフトウェア開発用ホスト1と、インタフェース3(以後IFとする)を経由して接続されたエミュレータ2によって構成される。
IF3は、ソフトウェア開発用ホスト1とエミュレータ2を接続するためのインタフェースであり、エミュレータ制御をする情報、データの転送に使用する。IF3のインタフェース規格はUSB、SCSI、Ethernet(登録商標)などの汎用のものでも専用のものでもよい。専用の場合はホストのワークステーション/PC等にインタフェースカードを取り付ける。また、ソフトウェア開発ホスト1とエミュレータ2間のIF3は図1のように1系統だけでもよい。また、エミュレータ2の制御はEthernet(登録商標)、データ転送は専用という様に複数あってもよい。また、エミュレータ2の制御をするホストがソフトウェア開発ホスト1と異なる場合、複数のIF3を使用することになる。
(ソフトウェア開発ホスト)
ソフトウェア開発用ホスト1は、エミュレータ制御ソフト部4、ソフトウェア開発環境部5を備えている。そして、ソフトウェア開発用ホスト1は検証対象回路上で動作するソフトウェアのデバッグ作業を行うホストである。
エミュレータ制御ソフト部4は、エミュレータ2の制御を行うソフトウェアを有し、エミュレータ2の実行、停止等の操作を行う。インターフェースIF3を介して接続されたホスト上で動作する。図1のようにソフトウェア開発ホスト1上で動作する場合もあるが、エミュレータ制御用のホストが別にあり、そのホスト上で動作してもよい。
ソフトウェア開発環境部5は、デバッガ6、CPU7(ISS)、ローカルメモリ8(ISS:メモリ領域)、転送制御部15(フラッグorFIFO領域)、データ転送部16、使用するCPU向けのコンパイラを有する。これらのうち、コンパイラ、デバッガ、ISSについては組み込み向けCPUの開発環境として一般的にCPUベンダより提供されるものである。ただし、コンパイラについては本発明とは直接の関係がないため、図1には記述しない。
デバッガ6は、ブレークポイント、ステップ実行などのソフトウェアデバッグのさいに使用する。図1ではISSと分かれたブロックとなっているが、ソフトウェア開発環境部5としては一体化したインターフェースで操作してよい。
CPU7(ISS)は、コンパイラなどによって生成されたオブジェクトコードをソフトウェアで解釈して実行し、実際のCPUと同等の動作をソフトウェア的に実現したものである。例えば、デバッグモード時にのみ動作し、検証対象回路上で動作するソフトウェアをデバッグするさいに使用する。ハードウェアと接続する場合は、CPUの内部状態やメモリの内容を転送するためにISS内のデータをISS外とやり取りする仕組みが必要となる(API等)。そのためAPI等を持たないISSの場合にはAPI等を持つISSを用意する必要がある。
ローカルメモリ8は、CPU7からのみアクセスされるメモリのことである。ISSに含まれる。本発明では、デバッグモード(ソフト側CPU(ISS)が動作)と通常モード(ハード側CPUが動作)との切替のさいにCPUの状態を同じにするためにローカルメモリの内容を転送する必要がある。本発明はそのさいの高速化を行うためのものである。
転送制御部15、18(フラッグorFIFO領域)は、デバッグモードと通常モード切替時のローカルメモリ8とローカルメモリ12のデータ転送高速化に使用する。
後述するフラグ方式の場合は、1ビット×ローカルメモリのワード数分の領域を使用する。(ローカルメモリ1ワードが1ビットに対応)。
また、FIFO方式の場合は、ローカルメモリのアドレス幅より大きいビット数(ローカルメモリのアドレスを格納)×任意の数の領域を使用する。また、FIFO方式では、何ワード分のアドレスを格納するかによって必要な領域が変わってくる。FIFO部がフルになったさいのデータ転送動作のオーバーヘッドが大きい場合は、FIFO部がフルになる回数を減らすために保持するアドレスのワード数を多くする。FIFO部がフルになったさいのオーバーヘッドが小さいとき、または転送制御部15、18(フラッグorFIFO領域)に使用するメモリ等を減らしたいときは、保持するアドレスのワードを少なくするというような使い方ができる。ソフトウェア開発用ホスト1側では、デバッグモードから通常モードへの切替時のデータ転送高速化のさいに使用する。配列等を用いてソフトウェア的に実現する(メモリを使用)。
データ転送部16は、デバッグモードから通常モードへ切り替えるさいのローカルメモリデータ転送高速化のために使用する。後述するフラグ方式ではモード切替時、FIFO方式ではモード切替時およびFIFOフル時、FIFO方式での随時転送ではモード切替時とFIFOフル時と各モードでの動作時にローカルメモリ12のデータを転送する。ソフトウェア開発用ホスト1側においては、データ転送部16はデバッグモードから通常モード切替時のデータ転送高速化のさいに使用する。ソフトウェアで実現してもよい。
(エミュレータ)
エミュレータ2は、エミュレータ制御部9、ブレークポイント検出回路10、CPU11、ローカルメモリ12(メモリ領域)、ハードウェア13(HW)、共有メモリ14、データ転送部17、転送制御部18(フラッグorFIFO領域)を有する。また、エミュレータ2はハードウェアの論理検証を行うための装置で、検証対象の回路を再構成可能なデバイスに展開(マッピング)して高速に動作させて検証を行う。また、クロックの動作開始、停止などの実行制御機能、波形プローブ、トリガなどのデバッグ機能、外部モジュールとの接続、テストデータの入出力機能なども備える。
再構成可能なデバイスとしては、主にFPGA、専用プロセッサ等が用いられる。また、検証対象回路内のメモリを展開するためのメモリも備える。本発明においてはハードウェア/ソフトウェア協調検証装置の一部で、ハードウェアの検証を行う部分となる。
エミュレータ制御部9は、ソフトウェア開発ホスト2上のエミュレータ制御ソフトからの指示に従ってエミュレータ2のハードウェアを制御する。実際のエミュレータハードウェアの各ブロックの制御を、エミュレータ制御ソフト部4とインターフェースIF3を経由して通信して行うことで、検証対象回路の動作制御、デバッグ機能等を実現する。
ブレークポイント検出回路10は、ソフトウェア開発ホスト1から設定されたブレークポイントを検出しエミュレータ制御部9に通知する。ソフトウェア開発環境部5で指定したブレークポイントに到達したことを検出する回路で、転送制御部15(フラグorFIFO領域)と同様にエミュレータ2の専用ハードとして実現される場合と、ソフトウェアによって自動生成されて展開される場合がある。
CPU11は、エミュレータ2に展開したCPUコアまたは実CPUチップが使用される。通常モード時に動作する。CPUはハードウェア記述言語で記述されたソースを論理合成して展開する場合の他に実チップを使用する場合も考えれられる。
ローカルメモリ12は、基本的にCPU11のみからアクセス可能で、エミュレータ内メモリに展開されるか実メモリが使用される。エミュレータ2側(ハード側)のローカルメモリ12は、通常モード時に動作する。ローカルメモリ12はSoC上の内部メモリである場合が多い。
ハードウェア部13は、検証対象のハードウェアがエミュレータ2上に展開されている。CPU11、共有メモリ14とデータのやり取りを行う。
共有メモリ14は、ハードウェア部13、CPU部11からアクセスされるメモリである。通常モード、デバッグモードの両方で動作し、共有メモリ14は大容量のチップ外メモリであってもよい。
データ転送部17と転送制御部18は切り替えの高速化を実現している。転送制御部18は、通常動作時またはデバッグ時に、ローカルメモリ12内の変化したデータ値の情報を保持しておき、モード切替時にデータ転送部17が変化したアドレスのデータ値だけ転送することで高速化を実現する。
(動作説明)
切り替え時のフローを図2に示す。同図Aは通常モードからデバッグモードへの切替えフロー図である。
ステップS1では、ブレークポイント検出回路10がブレークポイントを検出しエミュレーション制御部9へ通知をする。
ステップS2では、エミュレーション制御部9からの信号によりPCレジスタ値等のCPUの状態を示すデータを転送する。
ステップS3では、エミュレーション制御部9からの指示信号によりデータ転送部17からローカルメモリ12の内容(必要なデータ)をISS1側のデータ転送部16に転送する。
ステップS4では、転送されたデータをロードしエミュレータ2側のCPU11と同じ状態に初期化する。つまりデータ転送部16はローカルメモリ8へ受信した必要なデータを書き込みCPU11と同じ状態にする。
ステップS5では、ISS上でプログラムを実行してデバッグを行う。
次に、デバッグモードから通常モードへの切り替えについて説明する。
ステップS6では、ソフトウェア開発環境部5で通常モードに移行する設定をする。
ステップS7では、ソフトウェア開発環境部5から動作開始指示(runコンド等)をエミュレータ制御部9に送信する。
ステップS8では、エミュレータ制御部9がクロック周波数を通常速度に切り替える。
ステップS9では、エミュレータ2側回路は通常モードで高速に動作を開始する。
ステップS10では、ソフトウェア開発環境部5のCPU7などが動作を停止しブレーク後の再初期化待ち状態に遷移する。
デバッグモードから通常モードへの切り替えは、エミュレーションソフト制御部4からの指示信号によりデータ転送部16からローカルメモリ8の内容(必要なデータ)をエミュレータ2側のデータ転送部17に転送する。ISS1側のCPU17と同じ状態にするためにデータ転送部16はローカルメモリ12へ受信した必要なデータを書き込みする。
(実施例1)
(アドレス指定によるフラグ方式)
切り替え高速化の手段を以下に示す。転送制御部18にフラグ方式を使用した場合について説明する。図3にフラグ方式の原理動作を示す。転送元のローカルメモリ(メモリ領域)のデータが変化したかどうかを示すフラグ部31(フラグ設定エリア)を付加する。そして、モード切り替えが発生したさいに変化したワードだけ転送する方法である。本例では、メモリは16ビットを1ワードとしたデータである。
エミュレータ2側からISS側に転送をするときは、CPU11のローカルメモリ12(メモリ領域)のフラグ部31にフラグを立てる。逆に、ISS側からエミュレータ2側に転送をするときは、ローカルメモリ8(メモリ領域)に設けられたフラグ部にフラグを立てる。
図4にアドレス指定によるフラグ方式の動作について示す。図4のAとBにより通常モードとデバッグモードの動作説明をする。
図4Aに示す図はデータ転送時にアドレスも一緒に転送する場合の通常時の動作を示す図である。図1で示した原理図と構成は同じである。データ転送部41、フラグ部42、データ転送部43、フラグ部44の機能について説明する。
データ転送部41は図1のデータ転送部17に設けられるものである。フラグ部42は図1の転送制御部18に設けられるものである。データ転送部43は図1のデータ転送部16に設けられるものである。フラグ部44は図1の転送制御部15に設けられるものである。
通常モードのときは、エミュレータ2側が転送元となりデータ転送部41はローカルメモリ12へのライトアクセスを監視するとともに、フラグ部42のフラグ設定エリアにフラグを立てる。デバッグモードのとき、データ転送部43はローカルメモリ8へのライトアクセスを監視するとともに、フラグ部44に設けてあるフラグ設定エリアにフラグを立てる。また、切り替え時にデータ転送部41(43)は、アドレスとデータを転送先データ転送部43(41)に転送する。
転送先となったフラグ部44と42は、フラグがセットされた対応するアドレスの情報を記録する。
図4Bに示すステップS41では、転送元ローカルメモリのどのアドレスにメモリライトが発生したかを検知する。ステップS42では、メモリライトが検知されたときに対応するアドレスのフラグ部31にフラグをセットする。
通常モードのときはエミュレータ2側においてステップS41で、ローカルメモリ12のどのアドレスにライトが発生したかを検知し、ステップS42でメモリライトが検知されたときに対応するアドレスのフラグ部31にフラグをセットする。
デバッグモードのときはISS側においてステップS41で、ローカルメモリ8のどのアドレスにライトが発生したかを検知し、ステップS42でメモリライトが検知されたときに対応するアドレスのフラグ部にフラグをセットする。
図5のA〜Cにアドレス指定した場合の切り替え時の動作について示す。データ転送時にアドレスを同時に転送する場合の説明する。図5Bにデータ転送元フロー、図5Cに転送先フローを示す。
ステップS51では転送元の動作を停止する。デバッグモードへの切り替えであればエミュレータ2側の動作を停止させる。また、通常モードへの切り替えの場合はISS側の動作を停止する。
ステップS52ではデバッグモードへの切り替えであれば図5Aのフラグ部42のフラグを確認する。通常モードへの切り替えの場合は転送制御部44に設けたフラグ部を確認する。
ステップS53でフラグがセットされているかを検知する。セットされている場合はS54に移行する。セットされていない場合はS56に移行する。
ステップS54でフラグがセットされているアドレスとデータを転送する。デバッグモードへの切り替えであればデータ転送部41からデータ転送部43へ転送する。通常モードへの切り替えであればデータ転送部43からデータ転送部41へ転送する。ステップS55で転送したアドレスのフラグをクリアする。
ステップS56では、全てのフラグが立っていたデータの転送が完了したかが確認できた場合は、アドレスとデータ転送を終了する。まだ、完了していないときはS52に移行し全てのデータ転送が完了するまで各ステップを実行する。
ステップS57では転送先に完了通知を送信する。デバッグモードへの切り替えであればエミュレータ制御部9からエミュレータ制御ソフト部4およびデータ転送部16へ完了通知を転送する。通常モードへの切り替えであればエミュレータ制御ソフト部4からエミュレータ制御部9およびデータ転送部41へ完了通知を転送する。ステップS58では転送元が動作を再開する。
次に転送先の動作を説明する。
ステップS59では、転送元からフラグで指定したアドレスとデータを受信する。デバッグモードへの切り替えであればデータ転送部43が受信する。通常モードへの切り替えであればデータ転送部41が受信する。
ステップS510では、受信したアドレスとデータに基づいてローカルメモリにライトする。デバッグモードへの切り替えであればローカルメモリ8に書き込みをする。通常モードへの切り替えであればローカルメモリ12に書き込みをする。
ステップS511では、完了通知を受信して転送元からのデータ転送が完了したかを確認しローカルメモリへの書き込みを終了する準備をする。例えば、ローカルメモリへの書き込みするデータがなくなったことを確認してから終了する。デバッグモードへの切り替えであればローカルメモリ8への書き込みを完了する。通常モードへの切り替えであればローカルメモリ12への書き込みを完了する。
完了通知を受信しないときはS59に移行する。
(実施例2)
(フラグ情報によるフラグ方式)
フラグ情報を転送する場合について説明する。切り替え時にまずフラグ情報を転送し、その後データだけを転送する。つまり、転送先でフラグデータからアドレスを求めてライトする方法である。通常モードとデバッグモードでの通常動作時は実施例1と同じであるが切り替え時は図6A〜Dに示すようになる。
図6Aはフラグデータを転送する場合を示した図である。図1で示した原理図と構成は同じであるが、データ転送部61、フラグ部62、データ転送部63、フラグ部64の機能について説明する。
データ転送部61は図1のデータ転送部17に設けられるものである。フラグ部62は図1の転送制御部18に設けられるものである。データ転送部63は図1のデータ転送部16に設けられるものである。フラグ部64は図1の転送制御部15に設けられるものである。
通常モードのときは、エミュレータ2側が転送元となりデータ転送部61はローカルメモリ12(メモリ領域)へのライトアクセスを監視するととに、フラグ部62のフラグ設定エリアにフラグを立てる。デバッグモードのとき、データ転送部63はローカルメモリ8(メモリ領域)へのライトアクセスを監視するととに、フラグ部64に設けてあるフラグ設定エリアにフラグを立てる。また、切り替え時にデータ転送部61(63)は、後述するフラグ情報とデータを転送先データ転送部63(61)に転送する。転送は、図示しないが制御部によりフラグ情報を転送後データを転送する。
フラグ部62と64は、フラグがセットされた対応するアドレスに基づきフラグ情報をフラグ情報生成部(図示しない)で生成し転送先に転送する。フラグ情報は、フラグを立てたアドレスを全てまとめたデータでもよいし、フラグを立てたデータをコード化して転送してもよい。フラグを立てたアドレスが転送先で分かれば特に生成方法やデータ構造は限定しない。
図6Bはフラグが立っているデータの転送を示す図である。転送元のフラグ部が生成したフラグ情報をデータ転送部が転送先データ転送部に転送する。その後、転送元ローカルメモリのデータを転送先データ転送部に転送して、転送先ローカルメモリにそのデータの書き込みを行う。
図6Cは転送元切り替え時のフロー図である。通常モードからデバッグモードに切り替わるとき、ステップS61では転送元の動作を停止する。デバッグモードへの切り替えであればエミュレータ2側の動作を停止させる。また、通常モードへの切り替えの場合はISS側の動作を停止する。
ステップS62では、フラグ情報を転送先に送信する。通常モードからの切り替え時はフラグ部62で生成したフラグ情報をデータ転送部61から送信する。デバッグモードからの切り替え時はフラグ部64で生成したフラグ情報をデータ転送部63から送信する。
ステップS63ではデバッグモードへの切り替えであればフラグ部62のフラグを確認する。通常モードへの切り替えの場合はフラグ部64のフラグを確認する。
ステップS64でフラグがセットされているかを検知する。セットされている場合はS65に移行する。セットされていない場合はS67に移行する。
ステップS65でフラグがセットされているアドレスに対応したデータを転送する。デバッグモードへの切り替えであればデータ転送部61からデータ転送部63へ転送する。通常モードへの切り替えであればデータ転送部63からデータ転送部61へ転送する。ステップS66で転送したアドレスのフラグをクリアする。
ステップS67では、全てのフラグが立っていたデータの転送が完了したかが確認できた場合は、データ転送を終了する。まだ、完了していないときはS63に移行し全てのデータ転送が完了するまで各ステップを実行する。
ステップS68では転送元が動作を再開する。
次に転送先の動作を説明する。
ステップS69では転送元から転送されたデータを受信する。デバッグモードに切り替えするときは、データ転送部61から転送されたデータを受信する。通常モードに切り替わるときは、データ転送部63から転送されたデータを受信する。
ステップS610では、ステップS62で転送されたフラグ情報に基づいて転送先フラグ部が、転送先ローカルメモリの書き込みをするアドレスを指定する。その指定されたアドレスにフラグがセットされていることを確認する。デバッグモードに切り替えするときは、フラグ部64にフラグがセットされたことを確認する。通常モードに切り替わるときは、フラグ部62にフラグがセットされたことを確認する。
ステップS611では、フラグがセットされているかを判断する。セットされている場合はS612に移行する。されていない場合はS614に移行する。
ステップS612では、対応するアドレスのローカルメモリにデータを書き込みする。
ステップS613では、書き込みが完了したアドレスのフラグをクリアする。
ステップS614では、転送先の設定された全てのフラグを確認して転送された全てのデータ書き込みが確認できたかを判断する。もし、転送先ローカルメモリ全ての書き込みが完了しなければS69に移行しさらにステップ処理を行う。
(実施例3)
(アドレス指定によるFIFO方式)
図7にFIFOを使用した場合の動作を示す。転送元ローカルメモリの変化したアドレスを保持するFIFOを用意して切り替え時に変化したデータ(ワード)だけ転送する方法である。同図では転送元ローカルメモリのアドレス0、1、4番地が変化した場合の例である。メモリライトがされたアドレスをFIFO部に保持する。FIFO部がフルになったらエミュレータ2側を停止して、FIFO部に保存したアドレスとデータをISS1側に転送してローカルメモリ8に書き込みをする。
図8Aはデータ転送時にアドレスも一緒に転送する場合の通常モードとデバッグモードの通常動作を示す図である。データ転送部81はエミュレータ2側に設けられ、データ転送部83はISS側に設けられている。FIFO部82はエミュレータ2側に設けられ、FIFO部84はISS側に設けられている。
通常、転送元データ転送部は転送元FIFO部の転送元ローカルメモリ(メモリ領域)にライトアクセスがあった場合にアドレスを転送元FIFO部に格納する。デバッグモードに移行するときはFIFO部82にアドレス値を格納する。通常モードに移行するときはFIFO部84にアドレス値を格納する。
図8BはFIFO使用時の通常モードとデバッグモードでのデータ転送部81の動作を示すフロー図である。ステップS81では、デバッグモードの場合はローカルメモリ8(メモリ領域)へのメモリライトが発生したかを検知する。メモリへのアクセスが検知された場合、ステップS82でそのアドレス値をFIFO部84に書き込みする。検知されない場合は引き続きメモリへのアクセスがあるかを監視する。通常モードの場合はデータ転送部81によりFIFO部82にアドレス値が格納される。デバッグモードの場合はデータ転送部83によりFIFO部84にアドレス値が格納される。
ステップS83では、FIFO部がフル(full)になった場合は、S84に移行する。フルでない場合はS81に移行する。
次にFIFO部がフルになった場合の説明をする。
上記ステップS84の動作を図9Aに示す。転送元データ転送部は転送元FIFO部に格納したアドレス値と、そのアドレス値に対応するデータを転送元ローカルメモリから取得し、転送先データ転送部にアドレスとデータを転送する。転送されたアドレスとデータに基づいて転送先ローカルメモリにデータを書き込み、転送元ローカルメモリと同じ状態に転送先ローカルメモリの状態もする。
図9Bに示すステップS91では、通常モードではエミュレータ制御部9へ停止指示をしエミュレータ2側の動作を停止する。またデバッグモードではデバッガ6へ停止指示をしISS1側の動作を停止させる。
ステップS92では、転送元データ転送部が転送元FIFO部にリードする。通常モード時はデータ転送部81がFIFO部82にリードする。デバッグモード時はデータ転送部83がFIFO部84にリードする。
ステップS93では、リードしたアドレスとそのアドレスに対応するデータを転送元ローカルメモリから読み出し転送する。通常モードであれば、全てのFIFO部82内のデータが出力され、エンプティー(empty)となるまで、ローカルメモリ12のアドレス値に対応するアドレスとデータを転送する。デバッグモードであれば、全てのFIFO部84内のデータが出力され、エンプティーとなるまで、ローカルメモリ8のアドレス値に対応するアドレスとデータを転送する。
ステップS94ではFIFO部がエンプティーであるか判断する。エンプティーでなければS92に移行する。
ステップS95では、全てのデータの転送が完了したかが確認できた場合は、データ転送が終了したことを転送先データ転送部に通知する。通常モードであればISS1側に通知する。デバッグモードであればエミュレータ2側に通知する。その後、ステップS96では転送元が動作を再開する。
次に転送先の動作について説明する。
ステップS97では転送元データ転送部81(通常モード)または83(デバッグモード)からアドレスとデータを受信する。
ステップS98ではデータをローカルメモリ8(通常モード)または12(デバッグモード)に書き込みをする。
ステップS99では完了通知を受信する。
また、切り替え時の動作については上記FIFO部82または84がフルになったときと同じ動作をする。違いは、切り替えのときにFIFO部がフルになっていなくても転送を開始する。
(実施例4)
(FIFO情報によるFIFO方式)
切り替えをするときに、転送先FIFO部がフルになったときに先に後述するFIFO情報を転送する。その後、データだけを転送し、受信側でFIFO情報から書き込み先のアドレスを求めて、転送先ローカルメモリに書き込みをする。
通常モードとデバッグモードの通常動作は実施例3と同じである。違いはエミュレータ2側のFIFO部102に格納されたアドレス値をFIFO情報として、FIFO部がフルになるごとに転送する機能を設けている。FIFO情報の生成をするFIFO情報生成部は、FIFO部またはデータ転送部に設けることが望ましい。
FIFO部がフルのときについて説明する。図10Aに示すように転送元FIFO部102(104)からFIFO情報が転送元データ転送部101(103)を経由して転送先データ転送部103(101)に転送される。または転送元データ転送部101(103)で生成したFIFO情報を転送先データ転送部103(101)に転送する。転送は、図示しないが制御部によりFIFO情報を転送後データを転送する。FIFO情報を受信し、転送先FIFO部104(102)には、FIFO情報からアドレスを導き出し格納する。
次に、図10Bに示すようにメモリライトがあった転送元ローカルメモリ12(8)のデータを転送する。そして、転送先FIFO部104(102)のアドレス値に基づいて転送先データ転送部103(101)で受信したデータを対応する転送先ローカルメモリ8(12)に格納する。
図10Cに転送元のFIFO部がフルになったときの動作を示す。ステップS101では、転送元の動作を停止する。通常モードではエミュレータ2側を停止する。デバッグモードではISS1側を停止する。
ステップS102では、転送元データ転送部からFIFO情報を転送先に送信する。
ステップS103では、転送元データ転送部がFIFO部をリードする。
ステップS104では、リードしたアドレスに対応するデータを転送する。
つまり、通常モードではデータ転送装置101からFIFO部102のFIFO情報を取得し転送する。また、デバッグモードではデータ転送装置103からFIFO部104のFIFO情報を取得し転送する。FIFO情報はアドレスに基づいて生成されたコード等である。
ステップS105では、FIFO部102(通常モード)または104(デバッグモード)がエンプティーであるかを判断する。エンプティーであればステップS106に移行する。そうでない場合はS103に移行する。
図10Dに転送先の動作フローを示す。ステップS107では転送元データ転送部101(103)からデータを受信する。ステップS108では、FIFO部104(102)をリードする。
ステップS109では、リードしたアドレスに対応するローカルメモリ8(12)にデータを書き込みする。
ステップS1010では、FIFO部104(102)がエンプティーであるかを判断する。エンプティ−であれば完了し、そうでなければS107に移行する。
モード切り替えをする場合は、上記フルにおける動作と同じであるが、転送元FIFO部がフルになる前に転送を行い、転送先で書き込みを行う。
(実施例5)
(FIFO方式での随時転送)
図11にFIFO方式での随時転送の場合の動作を示す。転送元ローカルメモリが更新されたら順次転送していく方法である。転送先へのデータの転送が完了する前に転送元ローカルメモリで次の書き込みが発生した場合に、転送元FIFO部には転送元ローカルメモリにメモリライトされたアドレスを格納する。また、切り替え時に転送元FIFO部にアドレス値が残っていればそのときに転送をする。
通常モードの場合は転送元データ転送部をデータ転送部121とする。また転送元FIFO部をFIFO部122とする。転送先データ転送部をデータ転送部123とする。また転送先FIFO部をFIFO部124とする。
図12A〜Cは通常モードとデバッグモードの通常動作について示した図である。FIFO部にアドレスが書き込まれた時点で随時転送を行う。ただし、ISS側ローカルメモリ8への書込み速度に対してエミュレータ2側のローカルメモリ12への更新速度の方が高速であるため、FIFO部122がフルになる場合もありうる。その場合は、エミュレータ2側を一時停止してデータを転送する。ローカルメモリ12の更新頻度が少ない場合は、切り替え時点でFIFO部122が空になる場合もある。また、FIFO部122にデータが残っている場合は切り替えのときにデータの転送を行う。
図12Bは転送元の動作を示したフロー図である。ステップS121では、メモリへのライトが発生したかを判断する。発生していればS122に移行する。発生していなければS121に移行する。通常モードではローカルメモリ12にメモリライトがあったかを監視する。また、デバッグモードではローカルメモリ8にメモリライトがあるかを監視する。
ステップS122ではライトされたデータを転送元データ転送部から転送先データ転送部へ転送する。通常モードであれば転送元データ転送部121はメモリライトを検出して検出したアドレス内容を取得し、FIFO部122にそのアドレス値を格納し、アドレス内容であるデータを転送先のデータ転送部123へ転送する。デバッグモードであれば転送元データ転送部123はメモリライトを検出して検出したアドレス内容を取得し、FIFO部124にそのアドレス値を格納し、アドレス内容であるデータを転送先のデータ転送部121へ転送する。
ステップS123では、データの転送が完了したかを判断する。転送が完了していればS124に移行する。ステップS124ではFIFO部122(通常モードでは122またデバッグモードでは124)がエンプティーでなければS125に移行してFIFO部122(通常モードでは122またデバッグモードでは124)のアドレスのデータを転送する。
また、S124でエンプティーである場合はS121に移行する。
ステップS126では、メモリライトが発生するかを判断する。メモリライトが発生しなければS123に移行する。メモリライトがあるならばS127では、FIFO部122(124)にアドレスをライトする。S128では、FIFO部122(124)がフルであるかを判断する。フルでなければS123に移行する。S129では、FIFOフル時のフローへ移行する。フル時の動作は実施例4と同じである。
次に転送先のフローについて説明する。
ステップS1210では、転送元データ転送部121(123)からアドレスとデータを受信する。ステップS1211では、受信したアドレスに基づいてデータをローカルメモリ8(12)に書き込みする。
(実施例6)
上記説明した実施例1〜5は、転送制御部18(フラグ方式、FIFO方式、随時転送方式)、データ転送部17を専用ハードを用いて実現する場合が考えられる。図13に示すようにエミュレータ2に展開(マッピングまたはダウンロードなど)される回路とは別に固定のハードをエミュレータ装置内に持つことで実現する。
データ転送部17では、通常モードからデバッグモード切替時のデータ転送高速化のさいに使用する。エミュレータ内に専用ハードウェアを用意する。エミュレータハードウェアの機能の一部として実現する。
転送制御部18は、通常モード→デバッグモード切替時のデータ転送高速化のさいに使用する。エミュレータ内に専用ハードウェアを用意する。エミュレータハードウェアの機能の一部として実現する。
(実施例7)
上記説明した実施例1〜5は、図14に示すように転送制御部18(フラグ方式、FIFO方式、随時転送方式)、データ転送部17を検証対象ハードウェア部13(HW)、CPU11と同様にエミュレータの再構成可能なエリアに展開(マッピング)する場合が考えられる。
データ転送部17は通常モードからデバッグモード切替時のデータ転送高速化の際に使用する。エミュレータのマッピング領域(リコンフィギュアラブルな領域)にマッピングする。エミュレータ用マッピングソフトウェアにメモリ容量などのローカルメモリ関連パラメータを入力することによりソフトウェアで自動的に回路を生成するという方法。エミュレータ用マッピングソフトウェアの機能の一部として実現する。
転送制御部18は、通常モードからデバッグモード切替時のデータ転送高速化のさいに使用する。エミュレータのマッピング領域(リコンフィギュアラブルな領域)にマッピングする。エミュレータ用マッピングソフトウェアにメモリ容量などのローカルメモリ関連パラメータを入力することによりソフトウェアで自動的に回路を生成するという方法。エミュレータ用マッピングソフトウェアの機能の一部として実現する。
エミュレータ2としては特別なハードウェアを用意する必要が無いが、メモリサイズ等のパラメータから転送制御部18、データ転送部17をエミュレータに自動的に展開する。その場合には展開するためのツールが必要となる。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
(付記1)
エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア/ソフトウェア協調検証装置であって、
前記エミュレータに展開された前記検証対象回路のメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納するエミュレータ側転送制御部と、
前記モード切替えをするときに、前記エミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送するエミュレータ側データ転送部と、
前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記命令セットシミュレータ側のメモリ領域のアドレスに前記データを書き込む前記命令セットシミュレータ側データ転送部と、
を具備することを特徴とするハードウェア/ソフトウェア協調検証装置。
(付記2)
エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア/ソフトウェア協調検証装置であって、
前記命令セットシミュレータの検証で使用しているメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納する命令セットシミュレータ側転送制御部と、
前記モード切替えをするときに、前記命令セットシミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送する命令セットシミュレータ側データ転送部と、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記エミュレータ側のメモリ領域のアドレスに前記データを書き込む前記エミュレータ側データ転送部と、
を具備することを特徴とするハードウェア/ソフトウェア協調検証装置。
(付記3)
前記エミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする付記1に記載のハードウェア/ソフトウェア協調検証装置。
(付記4)
前記命令セットシミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする付記2に記載のハードウェア/ソフトウェア協調検証装置。
(付記5)
前記エミュレータ側転送制御部としてFIFO部を設け、前記検証対象回路のメモリ領域の対応するアドレスに前記メモリライトアクセスがあった前記アドレス番号を格納することを特徴とする付記1に記載のハードウェア/ソフトウェア協調検証装置。
(付記6)
前記命令セットシミュレータ側転送制御部としてFIFO部を設け、前記検証対象回路のメモリ領域の対応するアドレスに前記メモリライトアクセスがあった前記アドレス番号を格納することを特徴とする付記2に記載のハードウェア/ソフトウェア協調検証装置。
(付記7)
前記フラグが有効になったアドレス値と前記メモリライトがあった前記データとを関連付けるフラグ情報を生成するフラグ情報生成部を設け、
前記モード切替えをするときに、前記フラグ情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記エミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記フラグ情報に基づき前記アドレス番号を導き格納する命令セットシミュレータ側転送制御部と、
前記モード切替えをするときに、前記エミュレータ側データ転送部から前記データを受信し、前記命令セットシミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記命令セットシミュレータ側データ転送部と、
を具備することを特徴とする付記3に記載のハードウェア/ソフトウェア協調検証装置。
(付記8)
前記フラグが有効になったアドレス値と前記メモリライトがあった前記データとを関連付けるフラグ情報を生成するフラグ情報生成部を設け、
前記モード切替えをするときに、前記フラグ情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記命令セットシミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記フラグ情報に基づき前記アドレス番号を導き格納するエミュレータ側転送制御部と、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から前記データを受信し、前記エミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記エミュレータ側データ転送部と、
を具備することを特徴とする付記4に記載のハードウェア/ソフトウェア協調検証装置。
(付記9)
前記FIFO部にアドレス値と前記メモリライトがあった前記データとを関連付けるFIFO情報を生成するFIFO情報生成部を設け、
前記モード切替えをするときに、前記FIFO情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記エミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記FIFO情報に基づき前記アドレス番号を導き格納する命令セットシミュレータ側転送制御部と、
前記モード切替えをするときに、前記エミュレータ側データ転送部から前記データを受信し、前記命令セットシミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記命令セットシミュレータ側データ転送部と、
を具備することを特徴とする付記5に記載のハードウェア/ソフトウェア協調検証装置。
(付記10)
前記フラグが有効になったアドレス値と前記メモリライトがあった前記データとを関連付けるFIFO情報を生成するFIFO情報生成部を設け、
前記モード切替えをするときに、前記FIFO情報を転送し、その後に前記メモリライトがあった前記データを転送する制御部を前記命令セットシミュレータ側データ転送部に設け、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記FIFO情報に基づき前記アドレス番号を導き格納するエミュレータ側転送制御部と、
前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から前記データを受信し、前記エミュレータ側転送制御部のアドレス値の示す前記メモリ領域にデータを書き込む前記エミュレータ側データ転送部と、
を具備することを特徴とする付記6に記載のハードウェア/ソフトウェア協調検証装置。
ハードウェア/ソフトウェア協調検証装置の構成を示す図である。 通常モードからデバッグモードへの切り替えを示すフローである。 バッグモードから通常モードへの切り替えを示すフローである。 フラグ方式の動作を示す図である。 フラグ方式の通常モードとデバッグモード時の通常動作を示す図である。 フラグ方式(アドレス指定時)の通常モードとデバッグモード時の転送元のフローを示す図である。 フラグ方式(アドレス指定時)の切り替え時の動作を示す図である。 フラグ方式(アドレス指定時)の切り替え時の転送元の動作フローを示す図である。 フラグ方式(アドレス指定時)の切り替え時の転送先の動作フローを示す図である。 フラグ方式(フラグ情報指定時)の切り替え時のフラグ情報の転送動作を示す図である。 フラグ方式(フラグ情報指定時)の切り替え時のデータ転送動作を示す図である。 フラグ方式(フラグ情報指定時)の切り替え時の転送元の動作フローを示す図である。 フラグ方式(フラグ情報指定時)の切り替え時の転送先の動作フローを示す図である。 FIFO方式の動作を示す図である。 FIFO方式(アドレス指定時)の通常モードとデバッグモード時の通常動作を示す図である。 FIFO方式(アドレス指定時)の通常モードとデバッグモード時の転送元のフローを示す図である。 FIFO方式(アドレス指定時)のフル時の動作を示す図である。 FIFO方式(アドレス指定時)のフル時の転送元の動作フローを示す図である。 FIFO方式(アドレス指定時)のフル時の転送先の動作フローを示す図である。 FIFO方式(FIFO情報指定時)のフル時のフラグ情報の転送動作を示す図である。 FIFO方式(FIFO情報指定時)のフル時のデータ転送動作を示す図である。 FIFO方式(FIFO情報指定時)のフル時の転送元の動作フローを示す図である。 FIFO方式(FIFO情報指定時)のフル時の転送先の動作フローを示す図である。 FIFO方式での随時転送の場合の動作を示す図である FIFO方式(アドレス指定時)の通常動作を示す図である。 FIFO方式(アドレス指定時)の通常動作を転送元の動作フローを示す図である。 FIFO方式(アドレス指定時)の通常動作の転送先の動作フローを示す図である。 固定のハードウェアによりエミュレータ上に構成する図である。 エミュレータの再構成可能なエリアに展開する場合の図である。 従来のハードウェア/ソフトウェア協調検証装置の構成を示す図である。 従来の通常モードの説明図である。 従来のデバッグモードの説明図である。
符号の説明
1 ソフトウェア開発用ホスト
2 エミュレータ
3 インタフェース
4 エミュレータ制御部
5 ソフトウェア開発環境部
6 デバッガ
7 CPU(ISS)
8 ローカルメモリ
9 エミュレータ制御部
10 ブレークポイント検出回路
11 CPU
12 ローカルメモリ
13 ハードウェア(HW)
14 共有メモリ
15 転送制御部
16 データ転送部
17 データ転送部
18 転送制御部
31 フラグ部、
41 エミュレータ側データ転送部
42 エミュレータ側フラグ部
43 ISS側データ転送部
44 ISS側フラグ部
61 エミュレータ側データ転送部
62 エミュレータ側フラグ部
63 ISS側データ転送部
64 ISS側フラグ部
81 エミュレータ側データ転送部
82 エミュレータ側フラグ部
83 ISS側データ転送部
84 ISS側フラグ部
101 エミュレータ側データ転送部
102 エミュレータ側フラグ部
103 ISS側データ転送部
104 ISS側フラグ部
121 エミュレータ側データ転送部
122 エミュレータ側フラグ部
123 ISS側データ転送部
124 ISS側フラグ部

Claims (5)

  1. エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア/ソフトウェア協調検証装置であって、
    前記エミュレータに展開された前記検証対象回路のメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納するエミュレータ側転送制御部と、
    前記モード切替えをするときに、前記エミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送するエミュレータ側データ転送部と、
    前記モード切替えをするときに、前記エミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記命令セットシミュレータ側のメモリ領域のアドレスに前記データを書き込む前記命令セットシミュレータ側データ転送部と、
    を具備することを特徴とするハードウェア/ソフトウェア協調検証装置。
  2. エミュレータと命令セットシミュレータから構築され、検証対象回路を通常モードでは前記エミュレータで検証し、デバッグモードでは前記命令セットシミュレータで検証するモード切替可能なハードウェア/ソフトウェア協調検証装置であって、
    前記命令セットシミュレータの検証で使用しているメモリ領域へのメモリライトアクセスを監視して、前記メモリ領域のデータに変化があったアドレスのアドレス番号を格納する命令セットシミュレータ側転送制御部と、
    前記モード切替えをするときに、前記命令セットシミュレータ側転送制御部が格納した前記アドレス番号と、前記アドレス番号が示す前記メモリ領域のデータを抽出し、前記アドレスと前記データを転送する命令セットシミュレータ側データ転送部と、
    前記モード切替えをするときに、前記命令セットシミュレータ側データ転送部から転送された前記アドレス番号と前記データを受信して格納し、格納した前記アドレスに対応する前記エミュレータ側のメモリ領域のアドレスに前記データを書き込む前記エミュレータ側データ転送部と、
    を具備することを特徴とするハードウェア/ソフトウェア協調検証装置。
  3. 前記エミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする請求項1に記載のハードウェア/ソフトウェア協調検証装置。
  4. 前記命令セットシミュレータ側転送制御部として、前記検証対象回路のメモリ領域の対応するアドレスにフラグ部を設け、前記メモリライトアクセスがあったアドレスの前記フラグ部を有効にして前記アドレス番号を示すことを特徴とする請求項2に記載のハードウェア/ソフトウェア協調検証装置。
  5. 前記エミュレータ側転送制御部としてFIFO部を設け、前記検証対象回路のメモリ領域の対応するアドレスに前記メモリライトアクセスがあった前記アドレス番号を格納することを特徴とする請求項1に記載のハードウェア/ソフトウェア協調検証装置。
JP2006068223A 2006-03-13 2006-03-13 ハードウェア/ソフトウェア協調検証装置 Expired - Fee Related JP4589255B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006068223A JP4589255B2 (ja) 2006-03-13 2006-03-13 ハードウェア/ソフトウェア協調検証装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006068223A JP4589255B2 (ja) 2006-03-13 2006-03-13 ハードウェア/ソフトウェア協調検証装置

Publications (2)

Publication Number Publication Date
JP2007249293A JP2007249293A (ja) 2007-09-27
JP4589255B2 true JP4589255B2 (ja) 2010-12-01

Family

ID=38593570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006068223A Expired - Fee Related JP4589255B2 (ja) 2006-03-13 2006-03-13 ハードウェア/ソフトウェア協調検証装置

Country Status (1)

Country Link
JP (1) JP4589255B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9852244B2 (en) * 2015-05-04 2017-12-26 Synopsys, Inc. Efficient waveform generation for emulation
GB2542214B (en) 2015-11-11 2019-08-28 Imagination Tech Ltd Hardware monitor to verify memory units
CN111914410A (zh) * 2020-07-16 2020-11-10 博流智能科技(南京)有限公司 SoC软硬件协同仿真加速系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366602A (ja) * 2001-04-06 2002-12-20 Seiko Epson Corp ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
JP2005301981A (ja) * 2003-11-18 2005-10-27 Quickturn Design Syst Inc エミュレーションシステムとエミュレータの間でのシミュレーション及び可視化データ転送のための最適化インターフェース
JP2005332162A (ja) * 2004-05-19 2005-12-02 Nec Corp ハードウェア/ソフトウェア協調シミュレーション方式及びその方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366602A (ja) * 2001-04-06 2002-12-20 Seiko Epson Corp ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
JP2005301981A (ja) * 2003-11-18 2005-10-27 Quickturn Design Syst Inc エミュレーションシステムとエミュレータの間でのシミュレーション及び可視化データ転送のための最適化インターフェース
JP2005332162A (ja) * 2004-05-19 2005-12-02 Nec Corp ハードウェア/ソフトウェア協調シミュレーション方式及びその方法

Also Published As

Publication number Publication date
JP2007249293A (ja) 2007-09-27

Similar Documents

Publication Publication Date Title
US8180620B2 (en) Apparatus and method for performing hardware and software co-verification testing
CN115841089B (zh) 一种基于uvm的系统级芯片验证平台及验证方法
US7409330B2 (en) Method and system for software debugging using a simulator
CN100422953C (zh) 利用HDL扩展串口的SoC系统在线调试方法
EP0911735A2 (en) Microprocessor test system
TW594513B (en) Apparatus and method for in-circuit emulation using high-level programming language
JPH10214201A (ja) マイクロコンピュータ
JP2008507025A (ja) 集積回路テスト用エミュレーション及びデバッグインターフェイス
JP4589255B2 (ja) ハードウェア/ソフトウェア協調検証装置
JP2008282308A (ja) 協調検証装置、協調検証方法、協調検証プログラム
US20060212768A1 (en) Verification circuitry for master-slave system
JP2007058813A (ja) 検証装置及び検証方法
US7228513B2 (en) Circuit operation verification device and method
JP2002366602A (ja) ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
JP2004030124A (ja) 半導体装置の開発支援連携装置及び開発支援方法
JP4422011B2 (ja) 電子回路と制御プログラムとのコバリデーション方法
JP5900336B2 (ja) エミュレータ検証システム、エミュレータ検証方法
JP2005108007A (ja) Lsi設計検証装置及びlsi設計検証方法
JP2003263339A (ja) デバック機能内蔵型マイクロコンピュータ
CN113204929A (zh) 基于sv和uvm实现ahb vip的方法、电子装置及存储介质
JP5120103B2 (ja) デバッグ方法およびデバッグプログラム
JP2007052783A (ja) データ処理装置のシミュレーション
JP4893028B2 (ja) チップセットのエミュレーション装置および方法
CN117370093B (zh) 一种芯片调试方法、装置、设备及存储介质
TWI793774B (zh) 固態硬碟裝置的除錯方法及裝置以及電腦程式產品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081022

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100907

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100909

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130917

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees