JP2004199425A - エミュレーション方法及び装置 - Google Patents
エミュレーション方法及び装置 Download PDFInfo
- Publication number
- JP2004199425A JP2004199425A JP2002367544A JP2002367544A JP2004199425A JP 2004199425 A JP2004199425 A JP 2004199425A JP 2002367544 A JP2002367544 A JP 2002367544A JP 2002367544 A JP2002367544 A JP 2002367544A JP 2004199425 A JP2004199425 A JP 2004199425A
- Authority
- JP
- Japan
- Prior art keywords
- emulation
- circuit
- output
- signal
- internal
- 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.)
- Withdrawn
Links
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】LSIの開発段階で使用されるエミュレーション方法に関し、プログラマブル・デバイスからの被検証回路のトレースデータの読み出しを小規模な回路で高速に行うことができるようにする。
【解決手段】被検証回路を複数個のグループを有する複数個(例えば、3個)の部分回路に分割して複数個(例えば、3個)のFPGA(27〜29)に割り振ってマッピングし、各FPGAでは、被検証回路の内部レジスタの出力信号のリードサイクルをグループ順に発生し、各グループでは、内部レジスタの出力信号を複数個の束にして順に並列に出力し、かつ、全ての内部レジスタが状態変化をしなかったグループについてはリードサイクルを発生しないようにする。
【選択図】 図1
【解決手段】被検証回路を複数個のグループを有する複数個(例えば、3個)の部分回路に分割して複数個(例えば、3個)のFPGA(27〜29)に割り振ってマッピングし、各FPGAでは、被検証回路の内部レジスタの出力信号のリードサイクルをグループ順に発生し、各グループでは、内部レジスタの出力信号を複数個の束にして順に並列に出力し、かつ、全ての内部レジスタが状態変化をしなかったグループについてはリードサイクルを発生しないようにする。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、LSI(large scale integrated circuit)の開発段階で使用されるエミュレーション方法及び装置に関する。
【0002】
LSIの開発段階では、例えば、HDL(hardware description language)で記述されたRTL(register transfer level)記述のLSIをソフトウェア・シミュレータによってシミュレーションすることにより、設計したLSIの動作を検証するということが行われている。
【0003】
しかし、近年、LSIの回路規模が大きくなり、ソフトウェア・シミュレータによるシミュレーションでは、ワークステーション等に対する負荷が重くなり過ぎるため、十分な動作検証を行うことが困難となっている。このような現状から、プロトタイピング装置やエミュレーション装置(エミュレータ)というハードウェア装置による動作検証が行われるようになってきている。
【0004】
プロトタイピング装置とエミュレーション装置は殆ど同様のものであり、明確な切り分けの基準はないが、通常、ロジックアナライザ用コネクタを設けている程度で、デバッグ機能を殆んど持たないものをプロトタイピング装置と称し、ロジックアナライザ等のデバッグ機能を内蔵しているものをエミュレーション装置と称している。本発明のエミュレーション装置は、プロトタイピング装置を含むものである。
【0005】
【従来の技術】
図16は従来のエミュレーション装置の一例を示す回路図である。図16中、1は装置本体、2〜4は被検証回路をマッピングするプログラマブル・デバイスであるFPGA(field programmable gate array)、5はFPGA2〜4間の接続を行うためのFPGA間配線デバイスである。
【0006】
6は被検証回路の動作クロックCLK及びシフトクロックSFCLKを生成するクロック生成器、7は被検証回路の波形観測等を行うロジックアナライザ、8は被検証回路から出力されるトレースデータを格納するトレースメモリ、9はホスト・コンピュータ(図示せず)との接続を図るホスト・インタフェースである。
【0007】
本例では、被検証回路の動作は、FPGA2〜4とFPGA間配線デバイス5とで実現されるが、FPGA2〜4へのコンフィグレーション・データのダウンロードや、FPGA間配線デバイス5へのFPGA間配線情報のダウンロードや、クロック生成器6及びロジックアナライザ7の動作条件の設定等は、ホスト・インタフェース9を介してホスト・コンピュータから行われる。
【0008】
エミュレーションは、設定期間が終了するまで又はロジックアナライザ7に設定したトリガ条件が満たされるまで実行され、エミュレーション停止(被検証回路への動作クロックの停止)後、トレースメモリ8に蓄積されたトレースデータをホスト・コンピュータ9を介してホスト・コンピュータにアップロードし、波形表示する等してデバッグが行われる。
【0009】
エミュレーション装置には、トレース可能な信号をFPGA端子に出力されている信号のみとするものもあるが、FPGAの内部信号をトレース可能とするものもある。FPGAの内部信号を外部に読み出す方法には様々の方法があるが、図17はFPGAの内部信号を外部に読み出す代表的な従来方法を説明するための回路図である。
【0010】
図17AはFPGAにマッピングされた被検証回路の一部分を示しており、図17A中、10〜12は内部レジスタ(Dフリップフロップ)、13〜15は論理回路、CLKは被検証回路の動作クロックである。
【0011】
図17BはFPGA内にシリアル変換による内部信号読出し回路16を設けた例を示している(例えば、特許文献1参照)。図17B中、17〜19は内部レジスタ(Dフリップフロップ)、20、21はセレクタ、SFCLKはシフトクロックである。
【0012】
本例は、被検証回路の内部レジスタ(内部レジスタ10、11等)の出力信号(トレースデータ)を内部信号読出し回路16のセレクタ(セレクタ20、21等)を介して内部信号読出し回路16の内部レジスタ(内部レジスタ17〜19等)に設定し、シフトクロックSFCLKに同期させてシリアルにFPGAの外部に読み出すというものである。
【0013】
図17CはFPGA内にメモリを利用した内部信号読出し回路22を設けた例を示している。図17C中、23はメモリ、24はメモリ23に与えるアドレス信号を生成するアドレス生成回路、25はメモリ23から出力されるトレースデータをシリアル変換するシリアル変換回路である。
【0014】
本例は、エミュレーション・サイクル期間中に、被検証回路のレジスタ(内部レジスタ10、11等)の出力信号(トレースデータ)をメモリ23に書き込み、エミュレーション・サイクル停止後に、メモリ23からトレースデータを読み出して、シリアル変換回路25によってシリアル変換してFPGAの外部に読み出すというものである。
【0015】
なお、内部信号読出し回路16、22は、エミュレーション用ダウンロード・データの生成作業(FPGA分割、合成、各FPGAのコンフィグレーション・データ及びFPGA間配線情報の生成)の段階で、被検証回路の中の選択された内部レジスタの出力信号あるいは全内部レジスタの出力信号を対象として挿入される。
【0016】
また、内部信号読出し回路16を設ける場合であっても、内部信号読出し回路22を設ける場合であっても、論理ゲート間の信号については、トレースデータをホスト・コンピュータにアップロードした後、トレースデータとネットリストから計算される。
【0017】
【特許文献1】
特表2002−501646号公報
【0018】
【発明が解決しようとする課題】
図17Bに示す内部信号読み出し方法では、内部信号読出し回路16は、出力信号をトレースデータとする内部レジスタと同数(被検証回路の全ての内部レジスタの出力信号をトレースデータとする場合には、被検証回路の内部レジスタと同数)の内部レジスタ及びセレクタを必要とするため、回路規模が大きくなり、FPGAの容量を圧迫してしまうという問題点があった。
【0019】
また、内部信号読出し回路16によるシリアル出力動作は被検証回路の動作クロックCLKの1サイクル期間内に完了する必要があるため、シフトクロックSFCLKは被検証回路の動作クロックCLKに対して格段に高速なクロックでなければならないことになる。これは、実際には被検証回路の動作クロックCLKの方を低速なクロックとすることによって実現されることになる。このため、エミュレーション装置の最も重要な要素である高速性が損なわれてしまうという問題点もあった。
【0020】
これに対して、図17Cに示す内部信号読み出し方法では、エミュレーション・サイクル期間中にトレースデータをメモリ23に記憶し、エミュレーション停止後にメモリ23からトレースデータを取り出すので、シフトクロックSFCLKのような被検証回路の動作クロックCLKに対して格段に高速なクロックを用意する必要はなく、エミュレーション速度が低下するということも無い。また、メモリ23からのトレースデータの取り出しも、被検証回路の動作クロックCLKのレートで行うことが可能であるため、図17Bに示す内部信号読み出し方法ほどには時間は掛からない。
【0021】
しかしながら、図17Cに示す内部信号読み出し方法では、被検証回路中のメモリモデルと内部信号読出し回路22中のメモリ23とでFPGAのメモリ領域を分け合うことになるが、FPGAのメモリ領域は余り大規模ではないため、トレース可能な信号数及びトレースの深さが大きく制限されてしまうという問題点があった。
【0022】
本発明は、かかる点に鑑み、プログラマブル・デバイスからの被検証回路のトレースデータの読み出しを小規模な回路で高速に行うことができるようにしたエミュレーション方法及び装置を提供することを目的とする。
【0023】
【課題を解決するための手段】
本発明のエミュレーション方法及び装置は、被検証回路をプログラマブル・デバイスにマッピングすることにより、被検証回路の動作検証を行うものであって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないというものである。
【0024】
【発明の実施の形態】
以下、図1〜図15を参照して、本発明のエミュレーション方法及び装置の第1実施形態及び第2実施形態について説明する。
【0025】
LSIの信号変化の状況をシミュレーション波形等で確認してみると、頻繁に変化する信号というのは余り見られない。大抵は数サイクル単位で変化するので、ある時点での前エミュレーション・サイクルと現エミュレーション・サイクルとの間で変化する信号の割合はかなり低いように考えられる。更に多くの場合、ある内部レジスタの出力信号に変化のない場合には、その内部レジスタと関連する周辺にも信号変化が見られない。大きな括りでは、機能ブロック単位で一定期間動作していない場合も多い。
【0026】
本発明のエミュレーション方法及び装置の第1実施形態及び第2実施形態は、このような関連する回路群を1つのグループとして取り扱い、内部レジスタ読出しモード時に、信号変化を起こしていないグループの読出しを行わないことで、被検証回路のトレースデータの読み出し時間を短縮するものである。
【0027】
(第1実施形態・・図1〜図12)
図1は本発明のエミュレーション装置の第1実施形態を示す回路図である。本発明のエミュレーション装置の第1実施形態は、本発明のエミュレーション方法の第1実施形態を実行するものであり、本発明のエミュレーション方法の第1実施形態は、被検証回路をN+1個のグループを有する3個の部分回路に分割し、これら3個の部分回路を3個のFPGAに割り振ってマッピングすることにより被検証回路の動作検証を行うというものである。
【0028】
図1中、26は装置本体、27〜29は被検証回路をマッピングするプログラマブル・デバイスであるFPGA、30〜32はFPGA27〜29に対応して設けられているエミュレーション制御部、33はエミュレーション制御部30〜32を介してFPGA27〜29間の接続を図るためのFPGA間配線デバイスである。
【0029】
34はシステム・クロックSCLKを生成するクロック生成器、35は被検証回路の波形観測等を行うロジックアナライザ、36は被検証回路の動作クロックCLOCKや動作モード信号MODE等を出力して装置全体の動作を制御する全体動作制御部、37はホスト・コンピュータ(図示せず)との接続を図るホスト・インタフェースである。
【0030】
本実施形態では、被検証回路の動作は、FPGA27〜29とエミュレーション制御部30〜32とFPGA間配線デバイス33とで実現されるが、FPGA27〜29へのコンフィグレーション・データのダウンロードや、FPGA間配線デバイス33へのFPGA間配線情報のダウンロードや、エミュレーション制御部30〜32、クロック生成器34及びロジックアナライザ35の動作条件の設定等は、ホスト・インタフェース37を介してホスト・コンピュータから行われる。
【0031】
また、本実施形態では、全体動作制御部36から出力される動作モード信号MODEによって、エミュレーション・サイクル毎に順に、▲1▼エミュレーション動作モード(被検証回路にエミュレーション動作を行わせるモード)、▲2▼内部レジスタ状態変化検出モード(被検証回路の内部レジスタの状態変化を検出するモード)、▲3▼内部レジスタ読出しモード(被検証回路の内部レジスタの出力信号を読み出すモード)とされるが、本実施形態では、被検証回路の全ての内部レジスタの出力信号をトレースデータとして読み出す場合を例としている。
【0032】
図2はFPGA27及びエミュレーション制御部30の構成例を示す回路図であり、他のFPGA28、29及びエミュレーション制御部31、32も同様に構成される。図2中、FPGA27において、38は被検証回路を分割してなる部分回路であり、本実施形態では、部分回路38は、更に、N+1個のグループ0〜グループNに分割されている。グループ1とグループNとの間に存在するグループ2〜グループN−1は図示を省略している。
【0033】
40はグループ0〜グループNとエミュレーション制御部30との接続を図るスイッチング論理部であり、I/O_DATAは被検証回路本来の入出力信号、H0〜HNは被検証回路の内部レジスタの状態変化を検出してなる内部レジスタ状態変化検出信号、SELECTは各グループ内の内部レジスタの出力信号を一定数ずつ順に選択して取り出すためのマルチプレクサ(後述)の動作を制御するマルチプレクサ制御信号、REG_D0〜REG_DNはグループ0〜グループNの内部レジスタの出力信号(トレースデータ)、REG_DATAはトレースデータREG_D0〜REG_DNのいずれかである。
【0034】
スイッチング論理部40は、エミュレーション動作モード時には、グループ0〜グループNへの被検証回路本来の入出力信号I/O_DATAの伝送を行い、内部レジスタ状態変化検出モード時には、グループ0〜グループNから出力される内部レジスタ状態変化検出信号H0〜HNのエミュレーション制御部30への伝送を行い、内部レジスタ読出しモード時には、マルチプレクサ制御信号SELECTのグループ0〜グループNへの伝送及びトレースデータREG_DATAのエミュレーション制御部30への伝送を行う。
【0035】
また、41は全体動作制御部36から出力された被検証回路の動作クロックCLOCKを増幅するバッファ、42〜44はI/O用のFPGA端子であり、FPGA端子42は被検証回路の動作クロックCLOCK用に使用され、FPGA端子43は動作モード信号MODE用に使用され、FPGA端子44は、エミュレーション動作モード時には、被検証回路本来の入出力信号I/O_DATA用に使用され、内部レジスタ状態変化検出モード時には、内部レジスタ状態変化検出信号H0〜HN用に使用され、内部レジスタ読出しモード時には、マルチプレクサ制御信号SELECT用及びトレースデータREG_DATA用に使用される。
【0036】
また、エミュレーション制御部30において、45はFPGA27の制御を行うFPGA制御部、46は被検証回路本来の入出力信号I/O_DATA、内部レジスタ状態変化検出信号H0〜HN、マルチプレクサ制御信号SELECT及びトレースデータREG_DATAの通過を制御するスイッチング・デバイス、47は内部レジスタ状態変化検出信号H0〜HNを記憶する状態メモリ、48はトレースデータREG_DATAを記憶するトレースメモリである。
【0037】
なお、スイッチング論理部40及びスイッチング・デバイス46は、物理的なスイッチを有するものではなく、マルチプレクサ、トライステート・バッファ等で電子的に実現されるスイッチ機能を有するものであり、各動作モードは、全体動作制御部36が動作モード信号MODEによってスイッチング論理部40及びスイッチング・デバイス46のスイッチング論理を切り替えることにより実現される。本実施形態では、エミュレーション動作モードと内部レジスタ状態変化検出モードと内部レジスタ読出しモードは、被検証回路の動作クロックCLOCKの1サイクル期間内に実現される。
【0038】
図3はグループ0の構成例を示す回路図であり、他のグループ1〜グループNも同様に構成される。なお、実際の被検証回路では、グループ間を跨ぐ配線が存在するが、図3では図示を省略している。
【0039】
図3中、49−ikは内部レジスタ(Dフリップフロップ)である。ここで、i=0、1、…、Yであり、k=1、2、…、Mである。但し、i=0〜3、Y−1、Yの範囲では、内部レジスタ49−i1、49−iM間に存在する内部レジスタ49−i2〜49−i[M−1]の図示を省略しており、i=4〜[Y−2]の範囲では、内部レジスタ49−ikの図示を省略している。
【0040】
50−ikは論理回路である。但し、i=0〜3、Y−1、Yの範囲では、論理回路50−i1、50−iM間に存在する論理回路51−i2〜51−i[M−1]の図示を省略しており、i=4〜[Y−2]の範囲では、論理回路50−ikの図示を省略している。
【0041】
51−ikは内部レジスタ状態変化検出回路である。但し、i=0〜3、Y−1、Yの範囲では、内部レジスタ状態変化検出回路51−i1、51−iM間に存在する内部レジスタ状態変化検出回路51−i2〜51−i[M−1]の図示を省略しており、i=4〜[Y−2]の範囲では、内部レジスタ状態変化検出回路51−ikの図示を省略している。
【0042】
52は全ての内部レジスタ状態変化検出回路51−01〜51−YMの出力信号をOR処理して内部レジスタ状態変化検出信号H0を生成するOR回路、53はマルチプレクサ制御信号に制御されて内部レジスタ49−1〜49−YMの出力信号についてマルチプレクス動作を行うマルチプレクサである。
【0043】
内部レジスタ49−01〜49―YMの出力信号は、M本ずつY+1個の束に分けられている。具体的には、内部レジスタ49−01〜49−0Mの出力信号の束、内部レジスタ49−11〜49−1Mの出力信号の束、…、内部レジスタ49−Y1〜49−YMの出力信号の束に分けられている。
【0044】
そこで、マルチプレクサ53は、マルチプレクサ制御信号SELECTにより制御されて、内部レジスタ49−01〜49−0Mの出力信号の束、内部レジスタ49−11〜49−1Mの出力信号の束、…、内部レジスタ49−Y1〜49−YMの出力信号の束を順に選択して各々をトレースデータREG_D0として出力するように動作する。グループ1〜グループNのマルチプレクサ53も、グループ0のマルチプレクサ53と同様に、M×(Y+1)本のトレースデータをM本ずつY+1回に分けて出力するように動作する。
【0045】
このように、グループ0〜グループNのM×(Y+1)本のトレースデータをM本ずつY+1回に分けて読み出す理由は、トレースデータ用として使用できるFPGA端子数よりも、1グループ内の内部レジスタ数の方が多い場合があるからである。Mは、M≒トレースデータ用として使用できるFPGA端子数−(マルチプレクサ制御信号SELECTの本数+動作モード信号MODEの本数+被検証回路の動作クロックCLOCKの本数[1本])で算出することができる。
【0046】
図4はグループ0の一部分を拡大して示す回路図、図5は内部レジスタ状態変化検出回路51−01の動作タイミングを示す図であり、他の内部レジスタ状態変化検出回路51−02〜51―YMも同様のタイミングで動作する。図5Aは被検証回路の動作クロックCLOCK、図5Bは内部レジスタ49−01の入力信号SI、図5Cは内部レジスタ49−01の出力信号SO、図5Dは内部レジスタ状態変化検出回路51−01の出力信号E01を示している。
【0047】
図5に示すように、内部レジスタ49−01の状態変化は、被検証回路の動作クロックCLOCKのサイクルを単位として発生し、内部レジスタ49−01は、次の動作クロックCLOCKが入力されるまで状態を保持することになる。そこで、内部レジスタ49−01の状態変化検出は、内部レジスタ49−01の入力信号SIと出力信号SOを比較することにより行われ、内部レジスタ状態変化検出回路51−01は、入力信号SIと出力信号SOが異なる値の時は、状態変化があったとして論理1を出力し、入力信号SIと出力信号SOが同一の値の時は、状態変化が無かったとして、論理0を出力する。
【0048】
ここで、内部レジスタ状態変化検出回路51−01〜51−YMの出力信号はOR回路52でOR処理されるので、内部レジスタ49−01〜49−YMのいずれかに状態変化があった時は、内部レジスタ状態変化検出信号H0は論理1となり、内部レジスタ49−01〜49−YMの全てに状態変化がなかった時は、内部レジスタ状態変化検出信号H0は論理0となる。他のグループ1〜グループNにおいても同様の動作が行われ、内部レジスタ状態変化検出信号H1〜HNが出力される。
【0049】
図6は本実施形態のエミュレーション装置の動作タイミングを示す図であり、図6Aは被検証回路の動作クロックCLOCKの波形、図6Bはエミュレーション・サイクル数を示すエミュレーション・サイクル数信号T_Cycleの内容、図6Cは動作モード信号MODEの内容、図6Dはマルチプレクサ制御信号SELECTによるトレースデータの選択状況、図6EはFPGA端子44上の信号を示している。
【0050】
本実施形態のエミュレーション装置では、まず、全体動作制御部36は、動作モード信号MODEをエミュレーション動作モードを指示する内容とする。これによって、エミュレーション制御部30〜32のスイッチング・デバイス46及びFPGA27〜29のスイッチング論理部40は、被検証回路本来の入出力信号I/O_DATAを通過させるように設定される。
【0051】
この結果、FPGA27〜29のグループ0〜グループNは、スイッチング論理部40、スイッチング・デバイス46及びFPGA間配線デバイス33を介して接続された状態となり、全体として1つの被検証回路が構成される。この状態で、全体動作制御部36は、被検証回路の動作クロックCLOCKを1個発生し、エミュレーションを1サイクル進める。
【0052】
次に、全体動作制御部36は、動作モード信号MODEを内部レジスタ状態変化検出モードを指示する内容とする。これによって、スイッチング論理部40、スイッチング・デバイス46は、グループ0〜グループNから出力される内部レジスタ状態変化検出信号H0〜HNを通過させるように設定される。この結果、内部レジスタ状態変化検出信号H0〜HNは、FPGA制御部45を介して状態メモリ47に記憶される。
【0053】
次に、全体動作制御部36は、動作モード信号MODEを内部レジスタ読出しモードを指示する内容とする。これによって、スイッチング論理部40及びスイッチング・デバイス44は、FPGA制御部45から出力されるマルチプレクサ制御信号SELECTとグループ0〜グループNから出力されるトレースデータREG_D0〜REG_DN(REG_DATA)を通過させるように設定される。
【0054】
この結果、FPGA制御部45から出力されるマルチプレクサ制御信号SELECTは、スイッチング・デバイス46及びスイッチング論理部40を介してグループ0〜グループNのマルチプレクサ53に与えられ、また、グループ0〜グループNから出力されるトレースデータREG_D0〜REG_DN(REG_DATA)は、スイッチング論理デバイス40及びスイッチング・デバイス46を介してトレースメモリ48に記憶される。
【0055】
但し、FPGA制御部45は、内部レジスタ状態変化検出信号が論理0を示したグループ、すなわち、全ての内部レジスタに状態変化の無かったグループに対するマルチプレクサ制御信号SELECTを発生せず、全ての内部レジスタに状態変化の無かったグループからのトレースデータの読み出しを実行しないようにする。図6では、FPGA27のグループ1とFPGA29のグループ1及びグループ2のリードサイクルが省略されている例を示している。
【0056】
エミュレーション制御部30〜32は、それぞれ、内部レジスタ読出し処理が完了した時点で、全体動作制御部36に対して内部レジスタ読出し処理完了通知を出し、全体動作制御部36は、全てのエミュレーション制御部30〜32から内部レジスタ読出し処理完了通知を受けた時点で、次のエミュレーション・サイクルに移ることになる(C→C+1)。
【0057】
ここで、通常、FPGA27〜29にマッピングされるグループ数(N+1)はFPGA毎に異なり、グループ内の内部レジスタの出力信号の束の数、すなわち、マルチプレクサ53が選択する内部レジスタの束の数(Y+1)もグループ毎に異なり、リードサイクルが省略されるグループ数もFPGA毎に異なる。
【0058】
したがって、内部レジスタ読出し処理の完了時期はFPGA毎に異なり、次のエミュレーション・サイクルに移行することができるのは、内部レジスタ読出し処理の最も遅いFPGA(図6の例では、FPGA28)の内部レジスタ読出し処理が完了した時点となる。
【0059】
状態メモリ47及びトレースメモリ48の内容は、ロジックアナライザ35に設定されたエミュレーション・サイクル数又はトリガ条件によるエミュレーション完了後、ホスト・インタフェース37を介してホスト・コンピュータにアップロードされ、ホスト・コンピュータではトレースデータから波形が生成されることになる。
【0060】
その際、状態メモリ47の内容が確認され、或るエミュレーション・サイクルで内部レジスタに状態変化の無かったグループはトレースデータが存在しないので、前エミュレーション・サイクルでのトレースデータが現エミュレーション・サイクルでのトレースデータとして使用されることになる。
【0061】
なお、1エミュレーション・サイクルの処理時間がFPGA毎に異なる場合、最も遅いFPGA(図6の例では、FPGA28)の内部レジスタ読出し処理が完了するまでの間、先に内部レジスタ読出し処理が終了しているFPGA(図6の例では、FPGA27、29)については待ち時間ができる。
【0062】
そこで、このような場合には、先に内部レジスタ読出し処理が終了しているFPGA(図6ではFPGA27、29)についての内部レジスタ状態変化検出信号及びトレースデータの一部又は全部をホスト・コンピュータにアップロードする機能を持たせるようにしても良い。このようにする場合には、エミュレーションの高速化を図ることができる。
【0063】
図7はエミュレーション・サイクル中のエミュレーション動作のサイクルのみを取り出した図であり、エミュレーション動作モード時の動作が被検証回路本来の動作になっていることが分かる。
【0064】
図8〜図12は本実施形態のエミュレーション方法及び装置の具体例を説明するための図であり、図8はFPGA27及びエミュレーション制御部30の具体的構成例を示している。他のFPGA28、29及びエミュレーション制御部31、32も同様に構成することができる。
【0065】
本具体例では、グループ数を16(N値を15)、内部レジスタ状態変化検出信号H0〜H15を合計16ビットとし、被検証回路本来の入出力信号I/O_DATAを108ビット、動作モード信号MODEを2ビット、マルチプレクサ制御信号SELECTを8ビット(Y値を15とし、上位4ビットをグループ選択信号、下位4ビットを内部レジスタの出力信号の束の選択信号としている)、トレースデータREG_D0〜REG_D15を各々100ビットとしている。
【0066】
この結果、FPGA端子42を1ピン、FPGA端子43を2ピン、FPGA端子44を108ピンとしており、FPGA端子44は、エミュレーション動作モード時及び内部レジスタ読出しモード時には108ピンの全てが使用され、内部レジスタ状態変化検出モード時には16ピンが使用される。また、動作モード信号MODEは、エミュレーション動作モード時には0、内部レジスタ状態変化検出モード時には1、内部レジスタ読出しモード時には2とされる。
【0067】
スイッチング論理部40は、スイッチ54、55とスイッチ群56とデコーダ57を有するように構成される。スイッチ54は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=0の時(エミュレーション動作モード時)にはONとされ、それ以外の時にはOFFとされる。
【0068】
スイッチ55は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=1の時(内部レジスタ状態変化検出モード時)にはONとされ、それ以外の時にはOFFとされる。
【0069】
スイッチ群56は、グループ0〜グループ15に対応してスイッチ58−0〜58−15を有し、デコーダ57は、内部レジスタ読出しモード時にマルチプレクサ制御信号SELECTの上位4ビットをデコードして、スイッチ58−0〜58−15のON、OFFを制御し、マルチプレクサ制御信号SELECTの上位4ビットがq(q=0、1、…、15)を示す時は、スイッチ58−qがONされ、その他のスイッチはOFFとされる。なお、エミュレーション動作モード時及び内部状態変化検出モード時には、スイッチ58−0〜58−15は、全てOFFとされる。
【0070】
ここで、FPGA27〜29の各々から一度に出力させることができるトレースデータの個数は100であるから、仮に、グループ数(N値)と、グループ内のマルチプレクサ53の選択数(Y値)が、全てのFPGA27〜29で同じ条件だとすれば、本具体例では、被検証回路の内部レジスタの数は、3(FPGAの数)×16(グループ数)×16(内部レジスタの出力信号の束の数)×100(REG_DATAのビット幅)=76,800個となる。
【0071】
また、スイッチング・デバイス46は、スイッチ59、60、61を有している。スイッチ59は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=0の時(エミュレーション動作モード時)にはONとされ、被検証回路本来の入出力信号I/O_DATAを通過させ、それ以外の時にはOFFとされる。なお、被検証回路本来の入出力信号I/O_DATAは、エミュレーション制御部30では、S_I/O_DATAと記している。
【0072】
スイッチ60は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=1の時(内部レジスタ状態変化検出モード時)にはONとされ、内部レジスタ状態変化検出信号H0〜H15を通過させ、それ以外の時にはOFFとされる。なお、内部レジスタ状態変化検出信号H0〜HNは、エミュレーション制御部30では、S_H0to15と記し、また、内部レジスタ状態変化検出信号S_H0to15のFPGA制御部45でのラッチ出力をH_REGと記している。
【0073】
スイッチ61は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=2の時(内部レジスタ読出しモード時)にはONとされ、マルチプレクサ制御信号SELECT及びトレースデータREG_DATAを通過させ、それ以外の時にはOFFとされる。なお、マルチプレクサ制御信号SELECTは、エミュレーション制御部30では、S_SELECTと記している。
【0074】
WR_SETは内部レジスタ状態変化検出信号H_REGの状態メモリ47の入出力端子へのセットを指示するライトデータ・セット信号であり、論理0の時、内部レジスタ状態変化検出信号H_REGの状態メモリ47の入出力端子へのセットを指示し、論理1の時、内部レジスタ状態変化検出信号H_REGの状態メモリ47の入出力端子へのセットを不指示とするものである。
【0075】
MEM_WRは状態メモリ47及びトレースメモリ48のリード/ライト方向の制御を行うリード/ライト信号であり、論理0の時、リードを指示し、論理1の時、ライトを指示するものである。
【0076】
62、63はライトデータ・セット信号WR_SETにより活性、非活性状態が制御されるトライステート・バッファである。トライステート・バッファ62は、ライトデータ・セットWR_SETが論理0の時に活性状態とされ、FPGA制御部45から出力される内部レジスタ状態変化検出信号H_REGを状態メモリ47の入出力端子に転送し、ライトデータ・セット信号WR_SETが論理1の時に非活性状態とされ、出力をハイ・インピーダンスとする。
【0077】
また、トライステート・バッファ63は、ライトデータ・セット信号WR_SETが論理0の時に活性状態とされ、動作モード信号MODEをスイッチング・デバイス46に転送し、ライトデータ・セット信号WR_SETが論理1の時に非活性状態とされ、出力をハイ・インピーダンスとする。トライステート・バッファ63の出力がハイ・インピーダンスの時は、スイッチ59〜61はOFFとされる。
【0078】
なお、状態メモリ47は、エミュレーション・サイクル数信号T_Cycleをアドレス信号としており、トレースメモリ48は、エミュレーション・サイクル数信号T_Cycleを上位アドレス信号、マルチプレクサ制御信号S_SELECTを下位アドレス信号としている。ここで、マルチプレクサ制御信号S_SELECTは、上位をグループ番号(0〜N)、下位をマルチプレクサ53の選択番号(0〜Y)になっているので、トレースメモリ48のアドレスは、上位からエミュレーション・サイクル、グループ番号、マルチプレクサ53の選択番号のようになっている。
【0079】
図9は全体動作制御部36及びFPGA制御部45の具体的構成例を示す回路図、図10は全体動作制御部36及びFPGA制御部45の動作タイミングを示す図であり、どちらの制御部36、45もシステム・クロックSCLKに同期して動作を行う。
【0080】
本具体例では、まず、動作開始前に、ライトデータ・セット信号WR_SETを論理0(セット側)に設定し、更に、グループ番号の最大値、すなわち、N値(=15)をレジスタ64に設定し、グループ0〜グループNの各々のマルチプレクサ53の選択番号の最大値、すなわち、Y値(=15)をメモリ65に設定する。
【0081】
エミュレーションは、全体動作制御部36のモード・カウンタ66にスタート信号STARTが印加されることにより開始される。モード・カウンタ66は、スタート信号STARTが印加されると、被検証回路の動作クロックCLOCKを出力すると共に、システム・クロックSCLKをカウントする。
【0082】
デコーダ67は、モード・カウンタ66のカウント値をデコードして動作モード信号MODEを出力し、モード・カウンタ66のカウント値が0、1の時は、動作モード信号MODEを0(エミュレーション動作モード)、モード・カウンタ66のカウント値が2の時は、動作モード信号MODEを1(内部レジスタ状態変化検出モード)、モード・カウンタ66のカウント値が3の時は、動作モード信号MODEを2(内部レジスタ読出しモード)とする。
【0083】
なお、モード・カウンタ66は、後述するように、OR回路68の出力が論理1になると、カウント値をホールドし、その後、OR回路68の出力が論理0になると(FPGA27〜29からのトレースデータの読出し処理が終了すると)、リセットされ、システム・クロックSCLKのカウントを再び開始する。そして、カウント値1を出力する時、同時に被検証回路の動作クロックCLOCKを出力する。
【0084】
立下り検出回路69は、OR回路68の出力の立下りを検出し、トレース・カウンタ70は、立下り検出回路69によるOR回路68の出力の立下り検出回数をカウントし、立下り検出回路69がOR回路68の出力の立下りを検出する毎に、エミュレーション・サイクル数信号T_Cycleをインクリメントする。
【0085】
FPGA制御部45では、レジスタ71は、動作モード信号MODEが1の時に、内部レジスタ状態変化検出信号S_H0to15をラッチする。また、レジスタ72は、動作モード信号MODEが1の時に、システム・クロックSCLKの立ち上がりで1をセットし、その出力である内部レジスタ読出し期間表示信号MEM_ENを1とする。
【0086】
この結果、ゲート回路73は、リード/ライト信号MEM_WRを論理1(ライト側)にすると共に、セレクト・カウンタ74及びグループ・カウンタ75は活性状態とされる。なお、レジスタ71は、ライトデータ・セット信号WR_SETが論理1になると、内部レジスタ状態変化検出信号H_REGの全ビットを論理1とする。
【0087】
セレクト・カウンタ74は、活性化されると、システム・クロックSCLKをカウントし、マルチプレクサ制御信号SELECTの下位4ビットS_OUTを出力する。比較器76は、セレクト・カウンタ74の出力S_OUTと、メモリ65にグループ毎に設定されたY値のうち、現在選択されているグループのY値との比較を行い、一致した時(現在選択されているグループからのトレースデータの読出し処理が終了した時)、一致信号Y_CMPを論理1とする。
【0088】
セレクト・カウンタ74及びグループ・カウンタ75は、OR回路77の出力を入力し、セレクト・カウンタ74は、OR回路77の出力が論理1となると、リセットされ、グループ・カウンタ75は、OR回路77の出力が論理1になるごとに、出力G_OUTをインクリメントする。
【0089】
グループ・カウンタ75の出力G_OUTは、マルチプレクサ制御信号S_SELECTの上位4ビットとしてFPGA制御部45から出力されると共に、メモリ65に転送され、メモリ65は、グループ・カウンタ75の出力G_OUTが示すグループのY値を出力する。
【0090】
デコーダ78は、グループ・カウンタ75の出力G_OUTをデコードして、グループ・カウンタ75の出力G_OUTがグループjを示している時は、出力端子78−jを論理1、その他の出力端子を論理0とする。
【0091】
論理回路79は、グループ・カウンタ75の出力G_OUTが示すグループの内部レジスタ状態変化検出信号が0であるか否かを検出するものであり、80−qはデコーダ78の各出力端子78−qと内部レジスタ状態変化検出信号H_REGの対応するビットの論理値とをAND処理するAND回路(AND回路80−2〜80−14は図示を省略)、81はAND回路80−0〜80−15の出力をOR処理してスキップ信号SKIPを出力するOR回路である。
【0092】
ここで、現在選択されているグループの内部レジスタ状態変化検出信号が論理1の場合(現在選択されているグループの内部レジスタのいずれかに状態変化があった場合)、スキップ信号SKIPは論理0となる。これに対して、現在選択されているグループの内部レジスタ状態変化検出信号が論理0の場合(現在選択されているグループの全ての内部レジスタに状態変化が無かった場合)には、スキップ信号SKIPは論理1となる。
【0093】
スキップ信号SKIPが論理1になると、OR回路77の出力が論理1となり、セレクト・カウンタ74はリセットされると共に、グループ・カウンタ75は出力G_OUTをインクリメントする。すなわち、FPGA制御部45は、現在選択されているグループの全ての内部レジスタに状態変化が無かった場合には、マルチプレクサ制御信号S_SELECTの出力の下位4ビットを“0000”とする。
【0094】
比較器82は、グループ・カウンタ75の出力G_OUTとレジスタ64に記憶されているN値とを比較し、グループ・カウンタ75の出力G_OUTがレジスタ64に記憶されているN値に一致すると、すなわち、グループ・カウンタ75の出力G_OUTが15になると、出力値を論理1とする。
【0095】
したがって、比較器82の出力が論理1で、かつ、比較器76の出力が論理1になると、すなわち、例えば、グループ・カウンタ75の出力G_OUTが15を示し、セレクト・カウンタ74の出力値S_OUTがグループ15のY値に一致すると、AND回路83の出力値=論理1となり、レジスタ72はリセットされ、内部レジスタ読出し期間表示信号MEM_ENは論理0となる。
【0096】
ここで、FPGA27〜29の内部レジスタ読出し期間表示信号MEM_ENが全て論理0になると、すなわち、FPGA27〜29のグループ0〜グループ15のトレースデータが全て読み出されてFPGA27〜29のトレースメモリ48に格納されると、モード・カウンタ66がリセットされると共に、立下り検出回路69はOR回路68の出力の立下りを検出し、トレース・カウンタ70は、エミュレーション・サイクル数信号T_Cycleの値をインクリメントする。
【0097】
図10に示す例の場合、内部レジスタ状態変化検出信号H_REGは「101・・・・」であるから、すなわち、内部レジスタ状態変化検出信号H1が論理1であるから、グループ・カウンタ75の出力G_OUTが1の時、論理回路79から出力されるスキップ信号SKIPが論理1になり、スキップ信号SKIPがセレクト・カウンタ74をリセットし、グループ・カウンタ75をインクリメントする。したがって、この例の場合、グループ1のマルチプレクサ制御信号S_SELECTが1個のみ発生し、続いて、グループ2のリードサイクルが開始されることになる。
【0098】
図11は本実施形態のエミュレーション装置の具体例の動作タイミングを示す図である。本具体例では、動作モード信号MODEが2サイクル目の0となると、被検証回路の動作クロックCLOCKが1パルスだけ出力され、被検証回路がエミュレーション動作を行う。次に、動作モード信号MODEが1となると、内部レジスタ状態変化検出信号H0〜H15が出力され、状態メモリ47に記憶される。
【0099】
次に、動作モード信号MODEが2とされると、内部レジスタの出力信号が読み出され、トレースメモリ48に記憶される。エミュレーション終了後、状態メモリ47及びトレースメモリ48の内容がホスト・コンピュータにアップロードされる。この場合、ライトデータ・セット信号WR_SETを論理1に設定した状態で、全体動作制御部36及びエミュレーション制御部30〜32を動作させる。
【0100】
このように、ライトデータ・セット信号WR_SETを論理1に設定すると、リード/ライト信号MEM_WRは論理0になり、かつ、レジスタ71の出力H_REGの全ビットが論理1に固定される。この状態では、全体動作制御部36及びエミュレーション制御部30〜32は、エミュレーション時と同様のサイクルを発生するが、レジスタ71の出力H_REGの全ビットが論理1に固定されているのでグループを跳ばすことは無く、データが記憶されている可能性があるトレースメモリ48の全領域がリードされることになる。
【0101】
この時、トライステート・バッファ62も非活性状態となると共に、トライステート・バッファ63も非活性状態となるため、スイッチ59〜61は全てOFFにされるので、バスが衝突することなく、状態メモリ47及びトレースメモリ48の内容がホスト・コンピュータへアップロードされる。
【0102】
なお、被検証回路が複数の機能ブロック、例えば、3個の機能ブロックA、B、Cを有している場合、図12に示すように、3個のFPGA27、28、29が機能ブロックA、B、Cの一部分をそれぞれ持つように分割する場合には、エミュレーション速度が内部読出し処理の最も遅いFPGAに依存することから、全てのFPGA27、28、29に均等に本実施形態の効果を得るように分割することになるので、安定的に高速なエミュレーションを実現することができる。
【0103】
以上のように、本実施形態によれば、被検証回路をN+1個のグループを有する3個の部分回路に分割して3個のFPGA27〜29に割り振ってマッピングし、被検証回路の内部レジスタの状態変化の検出及び被検証回路の内部レジスタの出力信号のリードサイクルの発生をグループ単位で行い、各グループでは、内部レジスタの出力信号をY+1個の束にして並列に出力し、かつ、全ての内部レジスタが状態変化を起こさなかったグループについてはリードサイクルを発生しないようにしているので、被検証回路の内部レジスタの読出し時間を短縮することができる。
【0104】
例えば、本実施形態の具体例では、FPGA1個当たりの内部レジスタの数は16(グループ数)×16(マルチプレクサ53の選択数)×100(1束の出力信号数)=25,600個であり、全てのグループ0〜グループ15で内部レジスタの状態変化があったとすると、内部レジスタ読出しモードでは、16×16=256個のシステム・クロックSCLKが使用されることになる。これに対して、25,600個の内部レジスタを図17Bに示す従来方法で読み出す場合には、25,600個のシフトクロックSFCLKを必要とする。したがって、本実施形態によれば、被検証回路の内部レジスタの読出し時間を図17Bに示す従来方法の1/100に短縮することができる。
【0105】
また、例えば、被検証回路が複数の機能ブロック、例えば、3個の機能ブロックA、B、Cを有している場合において、図12に示すように、3個のFPGA27〜29が機能ブロックA、B、Cの一部分をそれぞれ持つように分割する場合には、FPGA毎に約1/3の5個又は6個のグループについては、内部レジスタ状態の読出しを省略できる。この場合、必要なシステム・クロックSCLKは、16×(16−5)=176個、又は、16×(16−6)=160個で足りる。したがって、更なる高速化を図ることができる。
【0106】
また、図17Bに示す従来方法では、被検証回路の内部レジスタ数と同数のレジスタ(Dフリップフロップ回路)が必要になるが、本実施形態では、FPGA27〜29への追加回路は、論理回路のみであり、レジスタを追加することがないので、FPGA27〜29の容量を圧迫することがない。
【0107】
なお、本実施形態では、3個のFPGA27〜29を設けるようにしているが、FPGA27〜29の合計容量を有する1個のFPGAを設けるようにしても良い。
【0108】
また、本実施形態では、被検証回路を複数のグループを有する3個の部分回路に分割して3個のFPGA27〜29に割り振ってマッピングするようにしているが、被検証回路をグループを有しない3個の部分回路に分割して3個のFPGA27〜29に割り振ってマッピングするようにしても良い。このようにする場合には、内部レジスタ読出し時間は、本実施形態の場合よりも長くなるが、図17Bに示す従来方法よりも短くなる。
【0109】
また、本実施形態では、FPGAを使用した場合を例にして説明しているが、本発明は、FPGA以外のプログラマブル・デバイスを使用する場合にも適用することができるものである。
【0110】
(第2実施形態・・図13〜図15)
図13は本発明のエミュレーション装置の第2実施形態を示す回路図である。
本発明のエミュレーション装置の第2実施形態は、本発明のエミュレーション方法の第2実施形態を実行するものであり、本発明のエミュレーション方法の第2実施形態は、被検証回路をN+1個のグループを有するN+1個の部分回路に分割し、これらN+1個の部分回路を1個ずつ順に1個のFPGAにマッピングして被検証回路の動作検証を行うというものである。
【0111】
図13中、84は装置本体、85はプログラマブル・デバイスであるFPGA、86−0〜86−Nは被検証回路を分割してなる各部分回路のコンフィグレーション・データを格納するコンフィグレーション・メモリ、87−0〜87−Nは各部分回路の各グループの内部レジスタ状態変化検出信号H0〜HNを格納する状態メモリ、88−0〜88−Nは各部分回路のトレースデータを格納するトレースメモリである。
【0112】
89はシステム・クロックSCLKを生成するクロック生成回路、90は制御部である。本発明のエミュレーション装置の第2実施形態では、FPGAが1個であるため、本発明のエミュレーション装置の第1実施形態が備える全体動作制御部36とエミュレーション制御部30〜32のFPGA制御部45は、制御部90として1個に統合されている。
【0113】
91はコンフィグレーション・メモリ86−0〜86−Nの中からFPGA85にマッピングすべき部分回路のコンフィグレーション・データを選択してFPGA85に転送するマルチプレクサ、92は状態メモリ87−0〜87−Nの中から内部レジスタ状態検出信号H0〜HNの転送先の状態メモリを選択するスイッチング・デバイスである。
【0114】
93はトレースメモリ88−0〜88−Nの中からトレースデータの転送先のトレースメモリを選択するスイッチング・デバイス、94は部分回路の入出力配線情報を記憶する記憶装置、95はFPGA85に現にマッピングした部分回路と先にマッピングした部分回路との入出力配線上の整合を図るための配線用回路、96は被検証回路本来の入出力信号用のバッファである。
【0115】
97は動作モード信号MODEにより制御され、被検証回路本来の入出力信号I/O_DATAの転送と、FPGA85から出力される内部レジスタ状態変化検出信号H0〜HNのスイッチング・デバイス92への転送と、被検証回路に設定すべきトレースデータの転送及び被検証回路から出力されるトレースデータのスイッチング・デバイス93への転送を切り替えて行うスイッチング・デバイスである。
【0116】
FPGA85の内部構成については、本発明のエミュレーション方法の第1実施形態の場合とほぼ同様であるが、内部レジスタの状態を設定するための回路が追加されている点が異なり、内部レジスタ設定用のクロックとしてシステム・クロックSCLKをFPGA85に入力するようにしている。
【0117】
図14は本実施形態のエミュレーション装置の動作タイミングを示す図であり、図14Aは被検証回路の動作クロックCLOCKの波形、図14Bはエミュレーション・サイクル数信号T_Cycleの内容、図14Cは動作モード信号MODEの内容を示している。
【0118】
本実施形態では、第1エミュレーション・サイクルは、部分回路0から部分回路Nについて、順に、コンフィグレーション・データの設定、エミュレーション動作、内部レジスタの状態変化の検出、内部レジスタの出力信号の読出しが順に行われ、第2エミュレーション・サイクル以降は、部分回路0から部分回路Nについて、順に、コンフィグレーション・データの設定、内部レジスタの設定、エミュレーション動作、内部レジスタの状態変化の検出、内部レジスタの出力信号の読出しが順に行われる。
【0119】
すなわち、例えば、エミュレーション・サイクルCでは、まず、部分回路0のコンフィグレーション・データがマルチプレクサ91を介してFPGA85に転送され、部分回路0のマッピングが行われる。
【0120】
次に、トレースメモリ88−0からエミュレーション・サイクルC−1における部分回路0のトレースデータがスイッチング・デバイス93及びスイッチング・デバイス97を介して内部レジスタ設定用データとしてFPGA85に供給され、部分回路0の内部レジスタの設定が行われる。
【0121】
次に、被検証回路本来の入出力信号I/O_DATAがバッファ96、配線用回路95及びスイッチング・デバイス97を介してFPGA85に供給され、更に、被検証回路の動作クロックCLOCKが1個供給され、部分回路0のエミュレーション動作が行われる。
【0122】
次に、部分回路0のグループ0〜グループNの内部レジスタ状態変化検出信号H0〜HNがスイッチング・デバイス97及びスイッチング・デバイス92を介して状態メモリ87−0に転送されて記憶される。
【0123】
次に、部分回路0のグループ0〜グループNの内部レジスタの出力信号がスイッチング・デバイス92及びスイッチング・デバイス93を介してトレースメモリ88−0に転送されて記憶される。なお、各グループ0〜グループNでは、出力信号はY+1個の束にされて、1束ごとにM個の出力信号が並列出力されることは、本発明のエミュレーション方法の第1実施形態の場合と同様である。
【0124】
また、制御部90が、内部レジスタ状態変化検出信号が論理0を示したグループ、すなわち、内部レジスタに状態変化の無かったグループに対するマルチプレクサ制御信号SELECTを発生しないことも、本発明のエミュレーション方法の第1実施形態の場合と同様である。
【0125】
その後、部分回路1〜部分回路Nについて同様の動作が行われ、部分回路Nについて内部レジスタ読出し動作が終了すると、次のエミュレーション・サイクルC+1に移行し、部分回路0〜部分回路Nについて同様の動作が繰り返される。
【0126】
なお、本実施形態では、図2に示すFPGA端子44に対応する端子は、内部レジスタ設定モード時には、内部レジスタ設定データの入力用に使用され、エミュレーション動作モード時には、被検証回路本来の入出力信号I/O_DATAの入出力用に使用され、内部レジスタ状態変化検出モード時には、内部レジスタ状態変化検出信号H0〜HNの出力用に使用され、内部レジスタ読出しモード時には、マルチプレクサ制御信号SELECTの入力及び内部レジスタの出力信号REG_DATAの出力用に使用される。
【0127】
図15はFPGA85にマッピングされるトレースデータ入出力回路の構成例を示す回路図である。図15中、98はトレースデータ入出力回路であり、内部レジスタ設定用回路を含むものである。
【0128】
また、99はスイッチング・デバイスである。スイッチング・デバイス99は、図3に示すマルチプレクサ53に代わるものであり、内部レジスタ読出しモード時には、マルチプレクサ53と同様に動作し、内部レジスタ49−01〜49―YMから出力されるM×Y+1個の出力信号をM個ずつ順に選択して出力し、内部レジスタ設定モード時には、トレースメモリ88−0〜88−Nのいずれかから転送されてくる内部レジスタ設定用データ(トレースデータ)を内部レジスタ読出しモード時とは逆方向の経路で対応する内部レジスタに分配するものである。
【0129】
100−01〜100−03は内部レジスタ49−01〜49−03に対応して設けられているトレースデータ転送用のトライステート・バッファ、101−01〜101−03は内部レジスタ49−01〜49−03に対応して設けられている内部レジスタ設定用データ転送用のトライステート・バッファであり、内部レジスタ49−04〜49−YMと、内部レジスタ49−04〜49−YMに対応して設けられているトライステート・バッファ100−04〜100−YM及び内部レジスタ設定用データ転送用のトライステート・バッファ101−04〜101−YMは、図示を省略している。
【0130】
102は動作モード信号MODEをデコードして内部レジスタ設定モード信号を出力するデコーダであり、デコーダ102は、動作モード信号MODEが内部レジスタ設定モードを示している時には、内部レジスタ設定モード信号を論理1、その他の時には、内部レジスタ設定モード信号を論理0とする。
【0131】
103−0は内部レジスタ49−01〜49−1Mに対応して設けられているシステム・クロック供給制御回路であり、内部レジスタ設定モード信号とマルチプレクサ制御信号SELECTを入力し、内部レジスタ設定モード信号が論理1とされている時、かつ、マルチプレクサ制御信号SELECTが内部レジスタ49−01〜49−1Mを選択している時のみ、論理1を出力するものである。
【0132】
104−0はシステム・クロック供給制御回路103の出力をゲート信号としてシステム・クロックSCLKの通過を制御するAND回路、105−0はAND回路104−0の出力と被検証回路の動作クロックCLOCKとをOR処理するOR回路である。なお、内部レジスタ49−11〜49−YMに対応して設けられているシステム・クロック供給制御回路103−1〜103−Y、AND回路104−1〜104−Y及びOR回路105−1〜105−Yは図示を省略している。
【0133】
本実施形態のエミュレーション方法では、内部レジスタ設定モード時には、内部レジスタの入力側に内部レジスタ設定用データをアサインし、この状態で、システム・クロックSCLKを1クロック供給することで、内部レジスタの出力側に前エミュレーション・サイクル時の出力信号が設定される。なお、FPGAによっては、SETポートを持つ内部レジスタを使用することができるものがあるが、その場合には、内部レジスタ設定用データを直接SETポートにつなぐことで同等の機能を実現できる。
【0134】
以上のように、本実施形態によれば、被検証回路をN+1個のグループを有するN+1個の部分回路に分割して1個のFPGA85に順にマッピングするようにし、被検証回路の内部レジスタの状態変化の検出及び被検証回路の内部レジスタの出力信号のリードサイクルの発生をグループ単位で行い、各グループでは、内部レジスタの出力信号をY個の束にして並列に出力し、かつ、全ての内部レジスタが状態変化を起こさなかったグループについてはリードサイクルを発生しないようにしているので、大規模回路を1個のFPGAを使用して動作検証することができ、かつ、内部レジスタの出力信号をシリアルで出力する方法やグループ化をしない方法に比べて被検証回路の内部レジスタの読出し時間を短縮することができる。
【0135】
なお、本実施形態では、被検証回路をN+1個のグループを有するN+1個の部分回路に分割し、各部分回路を順にFPGA85にマッピングするようにしているが、被検証回路をグループを有しないN+1個の部分回路に分割し、各部分回路を順にFPGA85にマッピングするようにしても良い。また、本実施形態では、FPGAを使用した場合を例にして説明しているが、本発明は、FPGA以外のプログラマブル・デバイスを使用する場合にも適用することができるものである。
【0136】
ここで、本発明を整理すると、本発明には、以下のエミュレーション方法及び装置が含まれる。
【0137】
(付記1)被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション方法であって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないことを特徴とするエミュレーション方法。
【0138】
(付記2)前記被検証回路を複数のグループに分割し、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記1記載のエミュレーション方法。
【0139】
(付記3)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを使用し、前記被検証回路を複数の部分回路に分割して前記複数のプログラマブル・デバイスに割り振ってマッピングし、前記複数の内部レジスタの状態変化の検出を各部分回路を単位として行うことを特徴とする付記1記載のエミュレーション方法。
【0140】
(付記4)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを使用し、前記被検証回路を複数のグループを有する複数の部分回路に分割して前記複数のプログラマブル・デバイスに割り振ってマッピングし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記1記載のエミュレーション方法。
【0141】
(付記5)前記被検証回路を複数の部分回路に分割し、各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせることを特徴とする付記1記載のエミュレーション方法。
【0142】
(付記6)前記被検証回路を複数のグループを有する複数の部分回路に分割し、各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記1記載のエミュレーション方法。
【0143】
(付記7)前記複数の内部レジスタの出力信号を複数本ずつの束に分け、各束の出力信号を順に選択して出力する選択手段を前記プログラマブル・デバイスに設けることを特徴とする付記1、2、3、4、5又は6記載のエミュレーション方法。
【0144】
(付記8)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子及び前記複数の内部レジスタの出力信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記1、2、3又は4記載のエミュレーション方法。
【0145】
(付記9)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子、前記複数の内部レジスタの出力信号用の端子及び前記複数の内部レジスタに設定する信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記5又は6記載のエミュレーション方法。
【0146】
(付記10)エミュレーション・サイクル毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を状態メモリに記憶する工程と、エミュレーション・サイクル毎に、前記複数の内部レジスタの出力信号をトレースメモリに記憶する工程と、前記状態メモリの内容から前記複数の内部レジスタの出力信号のリードサイクルを省略したグループ又は部分回路を確認し、該グループ又は部分回路については、前エミュレーション・サイクルでの出力信号を現エミュレーション・サイクルでの出力信号として補間する工程を有することを特徴とする付記2、3、4、5又は6記載のエミュレーション方法。
【0147】
(付記11)各プログラマブル・デバイス毎に、状態メモリとトレースメモリを設け、各プログラマブル・デバイスから得られる前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を各プログラマブル・デバイスに対応して設けられている状態メモリに記憶し、各プログラマブル・デバイスから得られる前記複数の内部レジスタの出力信号を各プログラマブル・デバイスに対応して設けられているトレースメモリに記憶することを特徴とする付記3又は4記載のエミュレーション方法。
【0148】
(付記12)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も処理時間の遅いプログラマブル・デバイスの処理が完了するのを待って、次のエミュレーション・サイクルに移ることを特徴とする付記11記載のエミュレーション方法。
【0149】
(付記13)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も遅いプログラマブル・デバイスの処理が完了するまでの間に、先に処理が終了しているプログラマブル・デバイスに対応して設けられている状態メモリ及びトレースメモリの内容の一部又は全部をホスト・コンピュータにアップロードすることを特徴とする付記12記載のエミュレーション方法。
【0150】
(付記14)前記プログラマブル・デバイスにコンフィグレーション・データをマッピングするサイクルと、前記複数の内部レジスタに前エミュレーション・サイクル時に退避させた出力信号を設定するサイクルと、前記被検証回路の動作サイクルと、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶するサイクルと、前記複数の内部レジスタの出力信号をトレースメモリに記憶するサイクルを順に発生する工程を有することを特徴とする付記5又は6記載のエミュレーション方法。
【0151】
(付記15)前記複数の内部レジスタの出力信号を複数本ずつの束に分け、各束の出力信号を順に選択して出力する選択手段を前記プログラマブル・デバイスに設け、前記複数の内部レジスタに前記エミュレーション・サイクル時に退避させた出力信号を設定するサイクルでは、束とされている出力信号を出力した複数の内部レジスタ毎に、前記退避させた出力信号を前記選択手段の内部を逆方向に伝送させて各内部レジスタの入力側にアサートして一度に設定することを特徴とする付記14記載のエミュレーション方法。
【0152】
(付記16)被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション装置であって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しない制御手段を有することを特徴とするエミュレーション装置。
【0153】
(付記17)前記被検証回路は、複数のグループに分割されており、前記制御手段は、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記16記載のエミュレーション装置。
【0154】
(付記18)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振ってマッピングされることを前提とし、前記複数の内部レジスタの状態変化の検出を各部分回路を単位として行うことを特徴とする付記16記載のエミュレーション装置。
【0155】
(付記19)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数のグループを有する複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振られてマッピングされることを前提とし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記16記載のエミュレーション装置。
【0156】
(付記20)前記制御手段は、複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせることを特徴とする付記16記載のエミュレーション装置。
【0157】
(付記21)前記制御手段は、複数のグループを有する複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記16記載のエミュレーション装置。
【0158】
(付記22)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路の本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子及び前記複数の内部レジスタの出力信号用の端子として兼用するように信号の伝送を行う機能を有することを特徴とする付記16、17、18又は19記載のエミュレーション装置。
【0159】
(付記23)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路の本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子、前記複数の内部レジスタの出力信号用の端子及び前記複数の内部レジスタに設定する信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記20又は21記載のエミュレーション装置。
【0160】
(付記24)エミュレーション・サイクル毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を状態メモリに記憶する工程と、エミュレーション・サイクル毎に、前記複数の内部レジスタの出力信号をトレースメモリに記憶する工程と、前記状態メモリの内容から前記複数の内部レジスタの出力信号のリードサイクルを省略したグループ又は部分回路を確認し、該グループ又は部分回路については、前エミュレーション・サイクルでの出力信号を現エミュレーション・サイクルでの出力信号として補間する工程を実行する機能を有することを特徴とする付記17、18、19、20又は21記載のエミュレーション装置。
【0161】
(付記25)各プログラマブル・デバイス毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶する状態メモリと、前記複数の内部レジスタの出力信号を記憶するトレースメモリを備えていることを特徴とする付記18又は19記載のエミュレーション装置。
【0162】
(付記26)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も処理時間の遅いプログラマブル・デバイスの処理が完了するのを待って、次のエミュレーション・サイクルに移る機能を有することを特徴とする付記25記載のエミュレーション装置。
【0163】
(付記27)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も遅いプログラマブル・デバイスの処理が完了するまでの間に、先に処理が終了しているプログラマブル・デバイスの状態メモリ及びトレースメモリの内容の一部又は全部をホスト・コンピュータにアップロードする機能を有することを特徴とする付記26記載のエミュレーション装置。
【0164】
【発明の効果】
以上のように、本発明によれば、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないとしているので、プログラマブル・デバイスからの被検証回路のトレースデータの取り出しを小規模な回路で高速に行うことができる。
【図面の簡単な説明】
【図1】本発明のエミュレーション装置の第1実施形態を示す回路図である。
【図2】本発明のエミュレーション装置の第1実施形態が備えるFPGA及びエミュレーション制御部の構成例を示す回路図である。
【図3】本発明のエミュレーション装置の第1実施形態が備えるFPGAにマッピングされるグループの構成例を示す回路図である。
【図4】図3に示すグループの一部分を拡大して示す回路図である。
【図5】本発明のエミュレーション装置の第1実施形態が備えるFPGAにマッピングされる内部レジスタ状態変化検出回路の動作タイミングを示す図である。
【図6】本発明のエミュレーション装置の第1実施形態の動作タイミングを示す図である。
【図7】本発明のエミュレーション装置の第1実施形態のエミュレーション動作サイクルのみを示す図である。
【図8】本発明のエミュレーション装置の第1実施形態が備えるFPGA及びエミュレーション制御部の具体的構成例を示す回路図である。
【図9】本発明のエミュレーション装置の第1実施形態が備える全体動作制御部及びFPGA制御部の具体的構成例を示す回路図である。
【図10】本発明のエミュレーション装置の第1実施形態が備える全体動作制御部及びFPGA制御部の動作タイミングを示す図である。
【図11】本発明のエミュレーション装置の第1実施形態の具体例の動作タイミングを示す図である。
【図12】本発明のエミュレーション装置の第1実施形態が備えるFPGAにマッピングする被検証回路の分割例を示す図である。
【図13】本発明のエミュレーション装置の第2実施形態を示す回路図である。
【図14】本発明のエミュレーション装置の第2実施形態の動作タイミングを示す図である。
【図15】本発明のエミュレーション装置の第2実施形態が備えるFPGAにマッピングすべきトレースデータ入出力回路の構成例を示す回路図である。
【図16】従来のエミュレーション装置の一例を示す回路図である。
【図17】FPGAの内部信号を外部に読み出す代表的な従来方法を説明するための回路図である。
【符号の説明】
42〜44…FPGA端子
49−ik…内部レジスタ
50−ik…論理回路
51−ik…内部レジスタ状態変化検出回路
【発明の属する技術分野】
本発明は、LSI(large scale integrated circuit)の開発段階で使用されるエミュレーション方法及び装置に関する。
【0002】
LSIの開発段階では、例えば、HDL(hardware description language)で記述されたRTL(register transfer level)記述のLSIをソフトウェア・シミュレータによってシミュレーションすることにより、設計したLSIの動作を検証するということが行われている。
【0003】
しかし、近年、LSIの回路規模が大きくなり、ソフトウェア・シミュレータによるシミュレーションでは、ワークステーション等に対する負荷が重くなり過ぎるため、十分な動作検証を行うことが困難となっている。このような現状から、プロトタイピング装置やエミュレーション装置(エミュレータ)というハードウェア装置による動作検証が行われるようになってきている。
【0004】
プロトタイピング装置とエミュレーション装置は殆ど同様のものであり、明確な切り分けの基準はないが、通常、ロジックアナライザ用コネクタを設けている程度で、デバッグ機能を殆んど持たないものをプロトタイピング装置と称し、ロジックアナライザ等のデバッグ機能を内蔵しているものをエミュレーション装置と称している。本発明のエミュレーション装置は、プロトタイピング装置を含むものである。
【0005】
【従来の技術】
図16は従来のエミュレーション装置の一例を示す回路図である。図16中、1は装置本体、2〜4は被検証回路をマッピングするプログラマブル・デバイスであるFPGA(field programmable gate array)、5はFPGA2〜4間の接続を行うためのFPGA間配線デバイスである。
【0006】
6は被検証回路の動作クロックCLK及びシフトクロックSFCLKを生成するクロック生成器、7は被検証回路の波形観測等を行うロジックアナライザ、8は被検証回路から出力されるトレースデータを格納するトレースメモリ、9はホスト・コンピュータ(図示せず)との接続を図るホスト・インタフェースである。
【0007】
本例では、被検証回路の動作は、FPGA2〜4とFPGA間配線デバイス5とで実現されるが、FPGA2〜4へのコンフィグレーション・データのダウンロードや、FPGA間配線デバイス5へのFPGA間配線情報のダウンロードや、クロック生成器6及びロジックアナライザ7の動作条件の設定等は、ホスト・インタフェース9を介してホスト・コンピュータから行われる。
【0008】
エミュレーションは、設定期間が終了するまで又はロジックアナライザ7に設定したトリガ条件が満たされるまで実行され、エミュレーション停止(被検証回路への動作クロックの停止)後、トレースメモリ8に蓄積されたトレースデータをホスト・コンピュータ9を介してホスト・コンピュータにアップロードし、波形表示する等してデバッグが行われる。
【0009】
エミュレーション装置には、トレース可能な信号をFPGA端子に出力されている信号のみとするものもあるが、FPGAの内部信号をトレース可能とするものもある。FPGAの内部信号を外部に読み出す方法には様々の方法があるが、図17はFPGAの内部信号を外部に読み出す代表的な従来方法を説明するための回路図である。
【0010】
図17AはFPGAにマッピングされた被検証回路の一部分を示しており、図17A中、10〜12は内部レジスタ(Dフリップフロップ)、13〜15は論理回路、CLKは被検証回路の動作クロックである。
【0011】
図17BはFPGA内にシリアル変換による内部信号読出し回路16を設けた例を示している(例えば、特許文献1参照)。図17B中、17〜19は内部レジスタ(Dフリップフロップ)、20、21はセレクタ、SFCLKはシフトクロックである。
【0012】
本例は、被検証回路の内部レジスタ(内部レジスタ10、11等)の出力信号(トレースデータ)を内部信号読出し回路16のセレクタ(セレクタ20、21等)を介して内部信号読出し回路16の内部レジスタ(内部レジスタ17〜19等)に設定し、シフトクロックSFCLKに同期させてシリアルにFPGAの外部に読み出すというものである。
【0013】
図17CはFPGA内にメモリを利用した内部信号読出し回路22を設けた例を示している。図17C中、23はメモリ、24はメモリ23に与えるアドレス信号を生成するアドレス生成回路、25はメモリ23から出力されるトレースデータをシリアル変換するシリアル変換回路である。
【0014】
本例は、エミュレーション・サイクル期間中に、被検証回路のレジスタ(内部レジスタ10、11等)の出力信号(トレースデータ)をメモリ23に書き込み、エミュレーション・サイクル停止後に、メモリ23からトレースデータを読み出して、シリアル変換回路25によってシリアル変換してFPGAの外部に読み出すというものである。
【0015】
なお、内部信号読出し回路16、22は、エミュレーション用ダウンロード・データの生成作業(FPGA分割、合成、各FPGAのコンフィグレーション・データ及びFPGA間配線情報の生成)の段階で、被検証回路の中の選択された内部レジスタの出力信号あるいは全内部レジスタの出力信号を対象として挿入される。
【0016】
また、内部信号読出し回路16を設ける場合であっても、内部信号読出し回路22を設ける場合であっても、論理ゲート間の信号については、トレースデータをホスト・コンピュータにアップロードした後、トレースデータとネットリストから計算される。
【0017】
【特許文献1】
特表2002−501646号公報
【0018】
【発明が解決しようとする課題】
図17Bに示す内部信号読み出し方法では、内部信号読出し回路16は、出力信号をトレースデータとする内部レジスタと同数(被検証回路の全ての内部レジスタの出力信号をトレースデータとする場合には、被検証回路の内部レジスタと同数)の内部レジスタ及びセレクタを必要とするため、回路規模が大きくなり、FPGAの容量を圧迫してしまうという問題点があった。
【0019】
また、内部信号読出し回路16によるシリアル出力動作は被検証回路の動作クロックCLKの1サイクル期間内に完了する必要があるため、シフトクロックSFCLKは被検証回路の動作クロックCLKに対して格段に高速なクロックでなければならないことになる。これは、実際には被検証回路の動作クロックCLKの方を低速なクロックとすることによって実現されることになる。このため、エミュレーション装置の最も重要な要素である高速性が損なわれてしまうという問題点もあった。
【0020】
これに対して、図17Cに示す内部信号読み出し方法では、エミュレーション・サイクル期間中にトレースデータをメモリ23に記憶し、エミュレーション停止後にメモリ23からトレースデータを取り出すので、シフトクロックSFCLKのような被検証回路の動作クロックCLKに対して格段に高速なクロックを用意する必要はなく、エミュレーション速度が低下するということも無い。また、メモリ23からのトレースデータの取り出しも、被検証回路の動作クロックCLKのレートで行うことが可能であるため、図17Bに示す内部信号読み出し方法ほどには時間は掛からない。
【0021】
しかしながら、図17Cに示す内部信号読み出し方法では、被検証回路中のメモリモデルと内部信号読出し回路22中のメモリ23とでFPGAのメモリ領域を分け合うことになるが、FPGAのメモリ領域は余り大規模ではないため、トレース可能な信号数及びトレースの深さが大きく制限されてしまうという問題点があった。
【0022】
本発明は、かかる点に鑑み、プログラマブル・デバイスからの被検証回路のトレースデータの読み出しを小規模な回路で高速に行うことができるようにしたエミュレーション方法及び装置を提供することを目的とする。
【0023】
【課題を解決するための手段】
本発明のエミュレーション方法及び装置は、被検証回路をプログラマブル・デバイスにマッピングすることにより、被検証回路の動作検証を行うものであって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないというものである。
【0024】
【発明の実施の形態】
以下、図1〜図15を参照して、本発明のエミュレーション方法及び装置の第1実施形態及び第2実施形態について説明する。
【0025】
LSIの信号変化の状況をシミュレーション波形等で確認してみると、頻繁に変化する信号というのは余り見られない。大抵は数サイクル単位で変化するので、ある時点での前エミュレーション・サイクルと現エミュレーション・サイクルとの間で変化する信号の割合はかなり低いように考えられる。更に多くの場合、ある内部レジスタの出力信号に変化のない場合には、その内部レジスタと関連する周辺にも信号変化が見られない。大きな括りでは、機能ブロック単位で一定期間動作していない場合も多い。
【0026】
本発明のエミュレーション方法及び装置の第1実施形態及び第2実施形態は、このような関連する回路群を1つのグループとして取り扱い、内部レジスタ読出しモード時に、信号変化を起こしていないグループの読出しを行わないことで、被検証回路のトレースデータの読み出し時間を短縮するものである。
【0027】
(第1実施形態・・図1〜図12)
図1は本発明のエミュレーション装置の第1実施形態を示す回路図である。本発明のエミュレーション装置の第1実施形態は、本発明のエミュレーション方法の第1実施形態を実行するものであり、本発明のエミュレーション方法の第1実施形態は、被検証回路をN+1個のグループを有する3個の部分回路に分割し、これら3個の部分回路を3個のFPGAに割り振ってマッピングすることにより被検証回路の動作検証を行うというものである。
【0028】
図1中、26は装置本体、27〜29は被検証回路をマッピングするプログラマブル・デバイスであるFPGA、30〜32はFPGA27〜29に対応して設けられているエミュレーション制御部、33はエミュレーション制御部30〜32を介してFPGA27〜29間の接続を図るためのFPGA間配線デバイスである。
【0029】
34はシステム・クロックSCLKを生成するクロック生成器、35は被検証回路の波形観測等を行うロジックアナライザ、36は被検証回路の動作クロックCLOCKや動作モード信号MODE等を出力して装置全体の動作を制御する全体動作制御部、37はホスト・コンピュータ(図示せず)との接続を図るホスト・インタフェースである。
【0030】
本実施形態では、被検証回路の動作は、FPGA27〜29とエミュレーション制御部30〜32とFPGA間配線デバイス33とで実現されるが、FPGA27〜29へのコンフィグレーション・データのダウンロードや、FPGA間配線デバイス33へのFPGA間配線情報のダウンロードや、エミュレーション制御部30〜32、クロック生成器34及びロジックアナライザ35の動作条件の設定等は、ホスト・インタフェース37を介してホスト・コンピュータから行われる。
【0031】
また、本実施形態では、全体動作制御部36から出力される動作モード信号MODEによって、エミュレーション・サイクル毎に順に、▲1▼エミュレーション動作モード(被検証回路にエミュレーション動作を行わせるモード)、▲2▼内部レジスタ状態変化検出モード(被検証回路の内部レジスタの状態変化を検出するモード)、▲3▼内部レジスタ読出しモード(被検証回路の内部レジスタの出力信号を読み出すモード)とされるが、本実施形態では、被検証回路の全ての内部レジスタの出力信号をトレースデータとして読み出す場合を例としている。
【0032】
図2はFPGA27及びエミュレーション制御部30の構成例を示す回路図であり、他のFPGA28、29及びエミュレーション制御部31、32も同様に構成される。図2中、FPGA27において、38は被検証回路を分割してなる部分回路であり、本実施形態では、部分回路38は、更に、N+1個のグループ0〜グループNに分割されている。グループ1とグループNとの間に存在するグループ2〜グループN−1は図示を省略している。
【0033】
40はグループ0〜グループNとエミュレーション制御部30との接続を図るスイッチング論理部であり、I/O_DATAは被検証回路本来の入出力信号、H0〜HNは被検証回路の内部レジスタの状態変化を検出してなる内部レジスタ状態変化検出信号、SELECTは各グループ内の内部レジスタの出力信号を一定数ずつ順に選択して取り出すためのマルチプレクサ(後述)の動作を制御するマルチプレクサ制御信号、REG_D0〜REG_DNはグループ0〜グループNの内部レジスタの出力信号(トレースデータ)、REG_DATAはトレースデータREG_D0〜REG_DNのいずれかである。
【0034】
スイッチング論理部40は、エミュレーション動作モード時には、グループ0〜グループNへの被検証回路本来の入出力信号I/O_DATAの伝送を行い、内部レジスタ状態変化検出モード時には、グループ0〜グループNから出力される内部レジスタ状態変化検出信号H0〜HNのエミュレーション制御部30への伝送を行い、内部レジスタ読出しモード時には、マルチプレクサ制御信号SELECTのグループ0〜グループNへの伝送及びトレースデータREG_DATAのエミュレーション制御部30への伝送を行う。
【0035】
また、41は全体動作制御部36から出力された被検証回路の動作クロックCLOCKを増幅するバッファ、42〜44はI/O用のFPGA端子であり、FPGA端子42は被検証回路の動作クロックCLOCK用に使用され、FPGA端子43は動作モード信号MODE用に使用され、FPGA端子44は、エミュレーション動作モード時には、被検証回路本来の入出力信号I/O_DATA用に使用され、内部レジスタ状態変化検出モード時には、内部レジスタ状態変化検出信号H0〜HN用に使用され、内部レジスタ読出しモード時には、マルチプレクサ制御信号SELECT用及びトレースデータREG_DATA用に使用される。
【0036】
また、エミュレーション制御部30において、45はFPGA27の制御を行うFPGA制御部、46は被検証回路本来の入出力信号I/O_DATA、内部レジスタ状態変化検出信号H0〜HN、マルチプレクサ制御信号SELECT及びトレースデータREG_DATAの通過を制御するスイッチング・デバイス、47は内部レジスタ状態変化検出信号H0〜HNを記憶する状態メモリ、48はトレースデータREG_DATAを記憶するトレースメモリである。
【0037】
なお、スイッチング論理部40及びスイッチング・デバイス46は、物理的なスイッチを有するものではなく、マルチプレクサ、トライステート・バッファ等で電子的に実現されるスイッチ機能を有するものであり、各動作モードは、全体動作制御部36が動作モード信号MODEによってスイッチング論理部40及びスイッチング・デバイス46のスイッチング論理を切り替えることにより実現される。本実施形態では、エミュレーション動作モードと内部レジスタ状態変化検出モードと内部レジスタ読出しモードは、被検証回路の動作クロックCLOCKの1サイクル期間内に実現される。
【0038】
図3はグループ0の構成例を示す回路図であり、他のグループ1〜グループNも同様に構成される。なお、実際の被検証回路では、グループ間を跨ぐ配線が存在するが、図3では図示を省略している。
【0039】
図3中、49−ikは内部レジスタ(Dフリップフロップ)である。ここで、i=0、1、…、Yであり、k=1、2、…、Mである。但し、i=0〜3、Y−1、Yの範囲では、内部レジスタ49−i1、49−iM間に存在する内部レジスタ49−i2〜49−i[M−1]の図示を省略しており、i=4〜[Y−2]の範囲では、内部レジスタ49−ikの図示を省略している。
【0040】
50−ikは論理回路である。但し、i=0〜3、Y−1、Yの範囲では、論理回路50−i1、50−iM間に存在する論理回路51−i2〜51−i[M−1]の図示を省略しており、i=4〜[Y−2]の範囲では、論理回路50−ikの図示を省略している。
【0041】
51−ikは内部レジスタ状態変化検出回路である。但し、i=0〜3、Y−1、Yの範囲では、内部レジスタ状態変化検出回路51−i1、51−iM間に存在する内部レジスタ状態変化検出回路51−i2〜51−i[M−1]の図示を省略しており、i=4〜[Y−2]の範囲では、内部レジスタ状態変化検出回路51−ikの図示を省略している。
【0042】
52は全ての内部レジスタ状態変化検出回路51−01〜51−YMの出力信号をOR処理して内部レジスタ状態変化検出信号H0を生成するOR回路、53はマルチプレクサ制御信号に制御されて内部レジスタ49−1〜49−YMの出力信号についてマルチプレクス動作を行うマルチプレクサである。
【0043】
内部レジスタ49−01〜49―YMの出力信号は、M本ずつY+1個の束に分けられている。具体的には、内部レジスタ49−01〜49−0Mの出力信号の束、内部レジスタ49−11〜49−1Mの出力信号の束、…、内部レジスタ49−Y1〜49−YMの出力信号の束に分けられている。
【0044】
そこで、マルチプレクサ53は、マルチプレクサ制御信号SELECTにより制御されて、内部レジスタ49−01〜49−0Mの出力信号の束、内部レジスタ49−11〜49−1Mの出力信号の束、…、内部レジスタ49−Y1〜49−YMの出力信号の束を順に選択して各々をトレースデータREG_D0として出力するように動作する。グループ1〜グループNのマルチプレクサ53も、グループ0のマルチプレクサ53と同様に、M×(Y+1)本のトレースデータをM本ずつY+1回に分けて出力するように動作する。
【0045】
このように、グループ0〜グループNのM×(Y+1)本のトレースデータをM本ずつY+1回に分けて読み出す理由は、トレースデータ用として使用できるFPGA端子数よりも、1グループ内の内部レジスタ数の方が多い場合があるからである。Mは、M≒トレースデータ用として使用できるFPGA端子数−(マルチプレクサ制御信号SELECTの本数+動作モード信号MODEの本数+被検証回路の動作クロックCLOCKの本数[1本])で算出することができる。
【0046】
図4はグループ0の一部分を拡大して示す回路図、図5は内部レジスタ状態変化検出回路51−01の動作タイミングを示す図であり、他の内部レジスタ状態変化検出回路51−02〜51―YMも同様のタイミングで動作する。図5Aは被検証回路の動作クロックCLOCK、図5Bは内部レジスタ49−01の入力信号SI、図5Cは内部レジスタ49−01の出力信号SO、図5Dは内部レジスタ状態変化検出回路51−01の出力信号E01を示している。
【0047】
図5に示すように、内部レジスタ49−01の状態変化は、被検証回路の動作クロックCLOCKのサイクルを単位として発生し、内部レジスタ49−01は、次の動作クロックCLOCKが入力されるまで状態を保持することになる。そこで、内部レジスタ49−01の状態変化検出は、内部レジスタ49−01の入力信号SIと出力信号SOを比較することにより行われ、内部レジスタ状態変化検出回路51−01は、入力信号SIと出力信号SOが異なる値の時は、状態変化があったとして論理1を出力し、入力信号SIと出力信号SOが同一の値の時は、状態変化が無かったとして、論理0を出力する。
【0048】
ここで、内部レジスタ状態変化検出回路51−01〜51−YMの出力信号はOR回路52でOR処理されるので、内部レジスタ49−01〜49−YMのいずれかに状態変化があった時は、内部レジスタ状態変化検出信号H0は論理1となり、内部レジスタ49−01〜49−YMの全てに状態変化がなかった時は、内部レジスタ状態変化検出信号H0は論理0となる。他のグループ1〜グループNにおいても同様の動作が行われ、内部レジスタ状態変化検出信号H1〜HNが出力される。
【0049】
図6は本実施形態のエミュレーション装置の動作タイミングを示す図であり、図6Aは被検証回路の動作クロックCLOCKの波形、図6Bはエミュレーション・サイクル数を示すエミュレーション・サイクル数信号T_Cycleの内容、図6Cは動作モード信号MODEの内容、図6Dはマルチプレクサ制御信号SELECTによるトレースデータの選択状況、図6EはFPGA端子44上の信号を示している。
【0050】
本実施形態のエミュレーション装置では、まず、全体動作制御部36は、動作モード信号MODEをエミュレーション動作モードを指示する内容とする。これによって、エミュレーション制御部30〜32のスイッチング・デバイス46及びFPGA27〜29のスイッチング論理部40は、被検証回路本来の入出力信号I/O_DATAを通過させるように設定される。
【0051】
この結果、FPGA27〜29のグループ0〜グループNは、スイッチング論理部40、スイッチング・デバイス46及びFPGA間配線デバイス33を介して接続された状態となり、全体として1つの被検証回路が構成される。この状態で、全体動作制御部36は、被検証回路の動作クロックCLOCKを1個発生し、エミュレーションを1サイクル進める。
【0052】
次に、全体動作制御部36は、動作モード信号MODEを内部レジスタ状態変化検出モードを指示する内容とする。これによって、スイッチング論理部40、スイッチング・デバイス46は、グループ0〜グループNから出力される内部レジスタ状態変化検出信号H0〜HNを通過させるように設定される。この結果、内部レジスタ状態変化検出信号H0〜HNは、FPGA制御部45を介して状態メモリ47に記憶される。
【0053】
次に、全体動作制御部36は、動作モード信号MODEを内部レジスタ読出しモードを指示する内容とする。これによって、スイッチング論理部40及びスイッチング・デバイス44は、FPGA制御部45から出力されるマルチプレクサ制御信号SELECTとグループ0〜グループNから出力されるトレースデータREG_D0〜REG_DN(REG_DATA)を通過させるように設定される。
【0054】
この結果、FPGA制御部45から出力されるマルチプレクサ制御信号SELECTは、スイッチング・デバイス46及びスイッチング論理部40を介してグループ0〜グループNのマルチプレクサ53に与えられ、また、グループ0〜グループNから出力されるトレースデータREG_D0〜REG_DN(REG_DATA)は、スイッチング論理デバイス40及びスイッチング・デバイス46を介してトレースメモリ48に記憶される。
【0055】
但し、FPGA制御部45は、内部レジスタ状態変化検出信号が論理0を示したグループ、すなわち、全ての内部レジスタに状態変化の無かったグループに対するマルチプレクサ制御信号SELECTを発生せず、全ての内部レジスタに状態変化の無かったグループからのトレースデータの読み出しを実行しないようにする。図6では、FPGA27のグループ1とFPGA29のグループ1及びグループ2のリードサイクルが省略されている例を示している。
【0056】
エミュレーション制御部30〜32は、それぞれ、内部レジスタ読出し処理が完了した時点で、全体動作制御部36に対して内部レジスタ読出し処理完了通知を出し、全体動作制御部36は、全てのエミュレーション制御部30〜32から内部レジスタ読出し処理完了通知を受けた時点で、次のエミュレーション・サイクルに移ることになる(C→C+1)。
【0057】
ここで、通常、FPGA27〜29にマッピングされるグループ数(N+1)はFPGA毎に異なり、グループ内の内部レジスタの出力信号の束の数、すなわち、マルチプレクサ53が選択する内部レジスタの束の数(Y+1)もグループ毎に異なり、リードサイクルが省略されるグループ数もFPGA毎に異なる。
【0058】
したがって、内部レジスタ読出し処理の完了時期はFPGA毎に異なり、次のエミュレーション・サイクルに移行することができるのは、内部レジスタ読出し処理の最も遅いFPGA(図6の例では、FPGA28)の内部レジスタ読出し処理が完了した時点となる。
【0059】
状態メモリ47及びトレースメモリ48の内容は、ロジックアナライザ35に設定されたエミュレーション・サイクル数又はトリガ条件によるエミュレーション完了後、ホスト・インタフェース37を介してホスト・コンピュータにアップロードされ、ホスト・コンピュータではトレースデータから波形が生成されることになる。
【0060】
その際、状態メモリ47の内容が確認され、或るエミュレーション・サイクルで内部レジスタに状態変化の無かったグループはトレースデータが存在しないので、前エミュレーション・サイクルでのトレースデータが現エミュレーション・サイクルでのトレースデータとして使用されることになる。
【0061】
なお、1エミュレーション・サイクルの処理時間がFPGA毎に異なる場合、最も遅いFPGA(図6の例では、FPGA28)の内部レジスタ読出し処理が完了するまでの間、先に内部レジスタ読出し処理が終了しているFPGA(図6の例では、FPGA27、29)については待ち時間ができる。
【0062】
そこで、このような場合には、先に内部レジスタ読出し処理が終了しているFPGA(図6ではFPGA27、29)についての内部レジスタ状態変化検出信号及びトレースデータの一部又は全部をホスト・コンピュータにアップロードする機能を持たせるようにしても良い。このようにする場合には、エミュレーションの高速化を図ることができる。
【0063】
図7はエミュレーション・サイクル中のエミュレーション動作のサイクルのみを取り出した図であり、エミュレーション動作モード時の動作が被検証回路本来の動作になっていることが分かる。
【0064】
図8〜図12は本実施形態のエミュレーション方法及び装置の具体例を説明するための図であり、図8はFPGA27及びエミュレーション制御部30の具体的構成例を示している。他のFPGA28、29及びエミュレーション制御部31、32も同様に構成することができる。
【0065】
本具体例では、グループ数を16(N値を15)、内部レジスタ状態変化検出信号H0〜H15を合計16ビットとし、被検証回路本来の入出力信号I/O_DATAを108ビット、動作モード信号MODEを2ビット、マルチプレクサ制御信号SELECTを8ビット(Y値を15とし、上位4ビットをグループ選択信号、下位4ビットを内部レジスタの出力信号の束の選択信号としている)、トレースデータREG_D0〜REG_D15を各々100ビットとしている。
【0066】
この結果、FPGA端子42を1ピン、FPGA端子43を2ピン、FPGA端子44を108ピンとしており、FPGA端子44は、エミュレーション動作モード時及び内部レジスタ読出しモード時には108ピンの全てが使用され、内部レジスタ状態変化検出モード時には16ピンが使用される。また、動作モード信号MODEは、エミュレーション動作モード時には0、内部レジスタ状態変化検出モード時には1、内部レジスタ読出しモード時には2とされる。
【0067】
スイッチング論理部40は、スイッチ54、55とスイッチ群56とデコーダ57を有するように構成される。スイッチ54は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=0の時(エミュレーション動作モード時)にはONとされ、それ以外の時にはOFFとされる。
【0068】
スイッチ55は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=1の時(内部レジスタ状態変化検出モード時)にはONとされ、それ以外の時にはOFFとされる。
【0069】
スイッチ群56は、グループ0〜グループ15に対応してスイッチ58−0〜58−15を有し、デコーダ57は、内部レジスタ読出しモード時にマルチプレクサ制御信号SELECTの上位4ビットをデコードして、スイッチ58−0〜58−15のON、OFFを制御し、マルチプレクサ制御信号SELECTの上位4ビットがq(q=0、1、…、15)を示す時は、スイッチ58−qがONされ、その他のスイッチはOFFとされる。なお、エミュレーション動作モード時及び内部状態変化検出モード時には、スイッチ58−0〜58−15は、全てOFFとされる。
【0070】
ここで、FPGA27〜29の各々から一度に出力させることができるトレースデータの個数は100であるから、仮に、グループ数(N値)と、グループ内のマルチプレクサ53の選択数(Y値)が、全てのFPGA27〜29で同じ条件だとすれば、本具体例では、被検証回路の内部レジスタの数は、3(FPGAの数)×16(グループ数)×16(内部レジスタの出力信号の束の数)×100(REG_DATAのビット幅)=76,800個となる。
【0071】
また、スイッチング・デバイス46は、スイッチ59、60、61を有している。スイッチ59は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=0の時(エミュレーション動作モード時)にはONとされ、被検証回路本来の入出力信号I/O_DATAを通過させ、それ以外の時にはOFFとされる。なお、被検証回路本来の入出力信号I/O_DATAは、エミュレーション制御部30では、S_I/O_DATAと記している。
【0072】
スイッチ60は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=1の時(内部レジスタ状態変化検出モード時)にはONとされ、内部レジスタ状態変化検出信号H0〜H15を通過させ、それ以外の時にはOFFとされる。なお、内部レジスタ状態変化検出信号H0〜HNは、エミュレーション制御部30では、S_H0to15と記し、また、内部レジスタ状態変化検出信号S_H0to15のFPGA制御部45でのラッチ出力をH_REGと記している。
【0073】
スイッチ61は、動作モード信号MODEによりON、OFFが制御され、動作モード信号MODE=2の時(内部レジスタ読出しモード時)にはONとされ、マルチプレクサ制御信号SELECT及びトレースデータREG_DATAを通過させ、それ以外の時にはOFFとされる。なお、マルチプレクサ制御信号SELECTは、エミュレーション制御部30では、S_SELECTと記している。
【0074】
WR_SETは内部レジスタ状態変化検出信号H_REGの状態メモリ47の入出力端子へのセットを指示するライトデータ・セット信号であり、論理0の時、内部レジスタ状態変化検出信号H_REGの状態メモリ47の入出力端子へのセットを指示し、論理1の時、内部レジスタ状態変化検出信号H_REGの状態メモリ47の入出力端子へのセットを不指示とするものである。
【0075】
MEM_WRは状態メモリ47及びトレースメモリ48のリード/ライト方向の制御を行うリード/ライト信号であり、論理0の時、リードを指示し、論理1の時、ライトを指示するものである。
【0076】
62、63はライトデータ・セット信号WR_SETにより活性、非活性状態が制御されるトライステート・バッファである。トライステート・バッファ62は、ライトデータ・セットWR_SETが論理0の時に活性状態とされ、FPGA制御部45から出力される内部レジスタ状態変化検出信号H_REGを状態メモリ47の入出力端子に転送し、ライトデータ・セット信号WR_SETが論理1の時に非活性状態とされ、出力をハイ・インピーダンスとする。
【0077】
また、トライステート・バッファ63は、ライトデータ・セット信号WR_SETが論理0の時に活性状態とされ、動作モード信号MODEをスイッチング・デバイス46に転送し、ライトデータ・セット信号WR_SETが論理1の時に非活性状態とされ、出力をハイ・インピーダンスとする。トライステート・バッファ63の出力がハイ・インピーダンスの時は、スイッチ59〜61はOFFとされる。
【0078】
なお、状態メモリ47は、エミュレーション・サイクル数信号T_Cycleをアドレス信号としており、トレースメモリ48は、エミュレーション・サイクル数信号T_Cycleを上位アドレス信号、マルチプレクサ制御信号S_SELECTを下位アドレス信号としている。ここで、マルチプレクサ制御信号S_SELECTは、上位をグループ番号(0〜N)、下位をマルチプレクサ53の選択番号(0〜Y)になっているので、トレースメモリ48のアドレスは、上位からエミュレーション・サイクル、グループ番号、マルチプレクサ53の選択番号のようになっている。
【0079】
図9は全体動作制御部36及びFPGA制御部45の具体的構成例を示す回路図、図10は全体動作制御部36及びFPGA制御部45の動作タイミングを示す図であり、どちらの制御部36、45もシステム・クロックSCLKに同期して動作を行う。
【0080】
本具体例では、まず、動作開始前に、ライトデータ・セット信号WR_SETを論理0(セット側)に設定し、更に、グループ番号の最大値、すなわち、N値(=15)をレジスタ64に設定し、グループ0〜グループNの各々のマルチプレクサ53の選択番号の最大値、すなわち、Y値(=15)をメモリ65に設定する。
【0081】
エミュレーションは、全体動作制御部36のモード・カウンタ66にスタート信号STARTが印加されることにより開始される。モード・カウンタ66は、スタート信号STARTが印加されると、被検証回路の動作クロックCLOCKを出力すると共に、システム・クロックSCLKをカウントする。
【0082】
デコーダ67は、モード・カウンタ66のカウント値をデコードして動作モード信号MODEを出力し、モード・カウンタ66のカウント値が0、1の時は、動作モード信号MODEを0(エミュレーション動作モード)、モード・カウンタ66のカウント値が2の時は、動作モード信号MODEを1(内部レジスタ状態変化検出モード)、モード・カウンタ66のカウント値が3の時は、動作モード信号MODEを2(内部レジスタ読出しモード)とする。
【0083】
なお、モード・カウンタ66は、後述するように、OR回路68の出力が論理1になると、カウント値をホールドし、その後、OR回路68の出力が論理0になると(FPGA27〜29からのトレースデータの読出し処理が終了すると)、リセットされ、システム・クロックSCLKのカウントを再び開始する。そして、カウント値1を出力する時、同時に被検証回路の動作クロックCLOCKを出力する。
【0084】
立下り検出回路69は、OR回路68の出力の立下りを検出し、トレース・カウンタ70は、立下り検出回路69によるOR回路68の出力の立下り検出回数をカウントし、立下り検出回路69がOR回路68の出力の立下りを検出する毎に、エミュレーション・サイクル数信号T_Cycleをインクリメントする。
【0085】
FPGA制御部45では、レジスタ71は、動作モード信号MODEが1の時に、内部レジスタ状態変化検出信号S_H0to15をラッチする。また、レジスタ72は、動作モード信号MODEが1の時に、システム・クロックSCLKの立ち上がりで1をセットし、その出力である内部レジスタ読出し期間表示信号MEM_ENを1とする。
【0086】
この結果、ゲート回路73は、リード/ライト信号MEM_WRを論理1(ライト側)にすると共に、セレクト・カウンタ74及びグループ・カウンタ75は活性状態とされる。なお、レジスタ71は、ライトデータ・セット信号WR_SETが論理1になると、内部レジスタ状態変化検出信号H_REGの全ビットを論理1とする。
【0087】
セレクト・カウンタ74は、活性化されると、システム・クロックSCLKをカウントし、マルチプレクサ制御信号SELECTの下位4ビットS_OUTを出力する。比較器76は、セレクト・カウンタ74の出力S_OUTと、メモリ65にグループ毎に設定されたY値のうち、現在選択されているグループのY値との比較を行い、一致した時(現在選択されているグループからのトレースデータの読出し処理が終了した時)、一致信号Y_CMPを論理1とする。
【0088】
セレクト・カウンタ74及びグループ・カウンタ75は、OR回路77の出力を入力し、セレクト・カウンタ74は、OR回路77の出力が論理1となると、リセットされ、グループ・カウンタ75は、OR回路77の出力が論理1になるごとに、出力G_OUTをインクリメントする。
【0089】
グループ・カウンタ75の出力G_OUTは、マルチプレクサ制御信号S_SELECTの上位4ビットとしてFPGA制御部45から出力されると共に、メモリ65に転送され、メモリ65は、グループ・カウンタ75の出力G_OUTが示すグループのY値を出力する。
【0090】
デコーダ78は、グループ・カウンタ75の出力G_OUTをデコードして、グループ・カウンタ75の出力G_OUTがグループjを示している時は、出力端子78−jを論理1、その他の出力端子を論理0とする。
【0091】
論理回路79は、グループ・カウンタ75の出力G_OUTが示すグループの内部レジスタ状態変化検出信号が0であるか否かを検出するものであり、80−qはデコーダ78の各出力端子78−qと内部レジスタ状態変化検出信号H_REGの対応するビットの論理値とをAND処理するAND回路(AND回路80−2〜80−14は図示を省略)、81はAND回路80−0〜80−15の出力をOR処理してスキップ信号SKIPを出力するOR回路である。
【0092】
ここで、現在選択されているグループの内部レジスタ状態変化検出信号が論理1の場合(現在選択されているグループの内部レジスタのいずれかに状態変化があった場合)、スキップ信号SKIPは論理0となる。これに対して、現在選択されているグループの内部レジスタ状態変化検出信号が論理0の場合(現在選択されているグループの全ての内部レジスタに状態変化が無かった場合)には、スキップ信号SKIPは論理1となる。
【0093】
スキップ信号SKIPが論理1になると、OR回路77の出力が論理1となり、セレクト・カウンタ74はリセットされると共に、グループ・カウンタ75は出力G_OUTをインクリメントする。すなわち、FPGA制御部45は、現在選択されているグループの全ての内部レジスタに状態変化が無かった場合には、マルチプレクサ制御信号S_SELECTの出力の下位4ビットを“0000”とする。
【0094】
比較器82は、グループ・カウンタ75の出力G_OUTとレジスタ64に記憶されているN値とを比較し、グループ・カウンタ75の出力G_OUTがレジスタ64に記憶されているN値に一致すると、すなわち、グループ・カウンタ75の出力G_OUTが15になると、出力値を論理1とする。
【0095】
したがって、比較器82の出力が論理1で、かつ、比較器76の出力が論理1になると、すなわち、例えば、グループ・カウンタ75の出力G_OUTが15を示し、セレクト・カウンタ74の出力値S_OUTがグループ15のY値に一致すると、AND回路83の出力値=論理1となり、レジスタ72はリセットされ、内部レジスタ読出し期間表示信号MEM_ENは論理0となる。
【0096】
ここで、FPGA27〜29の内部レジスタ読出し期間表示信号MEM_ENが全て論理0になると、すなわち、FPGA27〜29のグループ0〜グループ15のトレースデータが全て読み出されてFPGA27〜29のトレースメモリ48に格納されると、モード・カウンタ66がリセットされると共に、立下り検出回路69はOR回路68の出力の立下りを検出し、トレース・カウンタ70は、エミュレーション・サイクル数信号T_Cycleの値をインクリメントする。
【0097】
図10に示す例の場合、内部レジスタ状態変化検出信号H_REGは「101・・・・」であるから、すなわち、内部レジスタ状態変化検出信号H1が論理1であるから、グループ・カウンタ75の出力G_OUTが1の時、論理回路79から出力されるスキップ信号SKIPが論理1になり、スキップ信号SKIPがセレクト・カウンタ74をリセットし、グループ・カウンタ75をインクリメントする。したがって、この例の場合、グループ1のマルチプレクサ制御信号S_SELECTが1個のみ発生し、続いて、グループ2のリードサイクルが開始されることになる。
【0098】
図11は本実施形態のエミュレーション装置の具体例の動作タイミングを示す図である。本具体例では、動作モード信号MODEが2サイクル目の0となると、被検証回路の動作クロックCLOCKが1パルスだけ出力され、被検証回路がエミュレーション動作を行う。次に、動作モード信号MODEが1となると、内部レジスタ状態変化検出信号H0〜H15が出力され、状態メモリ47に記憶される。
【0099】
次に、動作モード信号MODEが2とされると、内部レジスタの出力信号が読み出され、トレースメモリ48に記憶される。エミュレーション終了後、状態メモリ47及びトレースメモリ48の内容がホスト・コンピュータにアップロードされる。この場合、ライトデータ・セット信号WR_SETを論理1に設定した状態で、全体動作制御部36及びエミュレーション制御部30〜32を動作させる。
【0100】
このように、ライトデータ・セット信号WR_SETを論理1に設定すると、リード/ライト信号MEM_WRは論理0になり、かつ、レジスタ71の出力H_REGの全ビットが論理1に固定される。この状態では、全体動作制御部36及びエミュレーション制御部30〜32は、エミュレーション時と同様のサイクルを発生するが、レジスタ71の出力H_REGの全ビットが論理1に固定されているのでグループを跳ばすことは無く、データが記憶されている可能性があるトレースメモリ48の全領域がリードされることになる。
【0101】
この時、トライステート・バッファ62も非活性状態となると共に、トライステート・バッファ63も非活性状態となるため、スイッチ59〜61は全てOFFにされるので、バスが衝突することなく、状態メモリ47及びトレースメモリ48の内容がホスト・コンピュータへアップロードされる。
【0102】
なお、被検証回路が複数の機能ブロック、例えば、3個の機能ブロックA、B、Cを有している場合、図12に示すように、3個のFPGA27、28、29が機能ブロックA、B、Cの一部分をそれぞれ持つように分割する場合には、エミュレーション速度が内部読出し処理の最も遅いFPGAに依存することから、全てのFPGA27、28、29に均等に本実施形態の効果を得るように分割することになるので、安定的に高速なエミュレーションを実現することができる。
【0103】
以上のように、本実施形態によれば、被検証回路をN+1個のグループを有する3個の部分回路に分割して3個のFPGA27〜29に割り振ってマッピングし、被検証回路の内部レジスタの状態変化の検出及び被検証回路の内部レジスタの出力信号のリードサイクルの発生をグループ単位で行い、各グループでは、内部レジスタの出力信号をY+1個の束にして並列に出力し、かつ、全ての内部レジスタが状態変化を起こさなかったグループについてはリードサイクルを発生しないようにしているので、被検証回路の内部レジスタの読出し時間を短縮することができる。
【0104】
例えば、本実施形態の具体例では、FPGA1個当たりの内部レジスタの数は16(グループ数)×16(マルチプレクサ53の選択数)×100(1束の出力信号数)=25,600個であり、全てのグループ0〜グループ15で内部レジスタの状態変化があったとすると、内部レジスタ読出しモードでは、16×16=256個のシステム・クロックSCLKが使用されることになる。これに対して、25,600個の内部レジスタを図17Bに示す従来方法で読み出す場合には、25,600個のシフトクロックSFCLKを必要とする。したがって、本実施形態によれば、被検証回路の内部レジスタの読出し時間を図17Bに示す従来方法の1/100に短縮することができる。
【0105】
また、例えば、被検証回路が複数の機能ブロック、例えば、3個の機能ブロックA、B、Cを有している場合において、図12に示すように、3個のFPGA27〜29が機能ブロックA、B、Cの一部分をそれぞれ持つように分割する場合には、FPGA毎に約1/3の5個又は6個のグループについては、内部レジスタ状態の読出しを省略できる。この場合、必要なシステム・クロックSCLKは、16×(16−5)=176個、又は、16×(16−6)=160個で足りる。したがって、更なる高速化を図ることができる。
【0106】
また、図17Bに示す従来方法では、被検証回路の内部レジスタ数と同数のレジスタ(Dフリップフロップ回路)が必要になるが、本実施形態では、FPGA27〜29への追加回路は、論理回路のみであり、レジスタを追加することがないので、FPGA27〜29の容量を圧迫することがない。
【0107】
なお、本実施形態では、3個のFPGA27〜29を設けるようにしているが、FPGA27〜29の合計容量を有する1個のFPGAを設けるようにしても良い。
【0108】
また、本実施形態では、被検証回路を複数のグループを有する3個の部分回路に分割して3個のFPGA27〜29に割り振ってマッピングするようにしているが、被検証回路をグループを有しない3個の部分回路に分割して3個のFPGA27〜29に割り振ってマッピングするようにしても良い。このようにする場合には、内部レジスタ読出し時間は、本実施形態の場合よりも長くなるが、図17Bに示す従来方法よりも短くなる。
【0109】
また、本実施形態では、FPGAを使用した場合を例にして説明しているが、本発明は、FPGA以外のプログラマブル・デバイスを使用する場合にも適用することができるものである。
【0110】
(第2実施形態・・図13〜図15)
図13は本発明のエミュレーション装置の第2実施形態を示す回路図である。
本発明のエミュレーション装置の第2実施形態は、本発明のエミュレーション方法の第2実施形態を実行するものであり、本発明のエミュレーション方法の第2実施形態は、被検証回路をN+1個のグループを有するN+1個の部分回路に分割し、これらN+1個の部分回路を1個ずつ順に1個のFPGAにマッピングして被検証回路の動作検証を行うというものである。
【0111】
図13中、84は装置本体、85はプログラマブル・デバイスであるFPGA、86−0〜86−Nは被検証回路を分割してなる各部分回路のコンフィグレーション・データを格納するコンフィグレーション・メモリ、87−0〜87−Nは各部分回路の各グループの内部レジスタ状態変化検出信号H0〜HNを格納する状態メモリ、88−0〜88−Nは各部分回路のトレースデータを格納するトレースメモリである。
【0112】
89はシステム・クロックSCLKを生成するクロック生成回路、90は制御部である。本発明のエミュレーション装置の第2実施形態では、FPGAが1個であるため、本発明のエミュレーション装置の第1実施形態が備える全体動作制御部36とエミュレーション制御部30〜32のFPGA制御部45は、制御部90として1個に統合されている。
【0113】
91はコンフィグレーション・メモリ86−0〜86−Nの中からFPGA85にマッピングすべき部分回路のコンフィグレーション・データを選択してFPGA85に転送するマルチプレクサ、92は状態メモリ87−0〜87−Nの中から内部レジスタ状態検出信号H0〜HNの転送先の状態メモリを選択するスイッチング・デバイスである。
【0114】
93はトレースメモリ88−0〜88−Nの中からトレースデータの転送先のトレースメモリを選択するスイッチング・デバイス、94は部分回路の入出力配線情報を記憶する記憶装置、95はFPGA85に現にマッピングした部分回路と先にマッピングした部分回路との入出力配線上の整合を図るための配線用回路、96は被検証回路本来の入出力信号用のバッファである。
【0115】
97は動作モード信号MODEにより制御され、被検証回路本来の入出力信号I/O_DATAの転送と、FPGA85から出力される内部レジスタ状態変化検出信号H0〜HNのスイッチング・デバイス92への転送と、被検証回路に設定すべきトレースデータの転送及び被検証回路から出力されるトレースデータのスイッチング・デバイス93への転送を切り替えて行うスイッチング・デバイスである。
【0116】
FPGA85の内部構成については、本発明のエミュレーション方法の第1実施形態の場合とほぼ同様であるが、内部レジスタの状態を設定するための回路が追加されている点が異なり、内部レジスタ設定用のクロックとしてシステム・クロックSCLKをFPGA85に入力するようにしている。
【0117】
図14は本実施形態のエミュレーション装置の動作タイミングを示す図であり、図14Aは被検証回路の動作クロックCLOCKの波形、図14Bはエミュレーション・サイクル数信号T_Cycleの内容、図14Cは動作モード信号MODEの内容を示している。
【0118】
本実施形態では、第1エミュレーション・サイクルは、部分回路0から部分回路Nについて、順に、コンフィグレーション・データの設定、エミュレーション動作、内部レジスタの状態変化の検出、内部レジスタの出力信号の読出しが順に行われ、第2エミュレーション・サイクル以降は、部分回路0から部分回路Nについて、順に、コンフィグレーション・データの設定、内部レジスタの設定、エミュレーション動作、内部レジスタの状態変化の検出、内部レジスタの出力信号の読出しが順に行われる。
【0119】
すなわち、例えば、エミュレーション・サイクルCでは、まず、部分回路0のコンフィグレーション・データがマルチプレクサ91を介してFPGA85に転送され、部分回路0のマッピングが行われる。
【0120】
次に、トレースメモリ88−0からエミュレーション・サイクルC−1における部分回路0のトレースデータがスイッチング・デバイス93及びスイッチング・デバイス97を介して内部レジスタ設定用データとしてFPGA85に供給され、部分回路0の内部レジスタの設定が行われる。
【0121】
次に、被検証回路本来の入出力信号I/O_DATAがバッファ96、配線用回路95及びスイッチング・デバイス97を介してFPGA85に供給され、更に、被検証回路の動作クロックCLOCKが1個供給され、部分回路0のエミュレーション動作が行われる。
【0122】
次に、部分回路0のグループ0〜グループNの内部レジスタ状態変化検出信号H0〜HNがスイッチング・デバイス97及びスイッチング・デバイス92を介して状態メモリ87−0に転送されて記憶される。
【0123】
次に、部分回路0のグループ0〜グループNの内部レジスタの出力信号がスイッチング・デバイス92及びスイッチング・デバイス93を介してトレースメモリ88−0に転送されて記憶される。なお、各グループ0〜グループNでは、出力信号はY+1個の束にされて、1束ごとにM個の出力信号が並列出力されることは、本発明のエミュレーション方法の第1実施形態の場合と同様である。
【0124】
また、制御部90が、内部レジスタ状態変化検出信号が論理0を示したグループ、すなわち、内部レジスタに状態変化の無かったグループに対するマルチプレクサ制御信号SELECTを発生しないことも、本発明のエミュレーション方法の第1実施形態の場合と同様である。
【0125】
その後、部分回路1〜部分回路Nについて同様の動作が行われ、部分回路Nについて内部レジスタ読出し動作が終了すると、次のエミュレーション・サイクルC+1に移行し、部分回路0〜部分回路Nについて同様の動作が繰り返される。
【0126】
なお、本実施形態では、図2に示すFPGA端子44に対応する端子は、内部レジスタ設定モード時には、内部レジスタ設定データの入力用に使用され、エミュレーション動作モード時には、被検証回路本来の入出力信号I/O_DATAの入出力用に使用され、内部レジスタ状態変化検出モード時には、内部レジスタ状態変化検出信号H0〜HNの出力用に使用され、内部レジスタ読出しモード時には、マルチプレクサ制御信号SELECTの入力及び内部レジスタの出力信号REG_DATAの出力用に使用される。
【0127】
図15はFPGA85にマッピングされるトレースデータ入出力回路の構成例を示す回路図である。図15中、98はトレースデータ入出力回路であり、内部レジスタ設定用回路を含むものである。
【0128】
また、99はスイッチング・デバイスである。スイッチング・デバイス99は、図3に示すマルチプレクサ53に代わるものであり、内部レジスタ読出しモード時には、マルチプレクサ53と同様に動作し、内部レジスタ49−01〜49―YMから出力されるM×Y+1個の出力信号をM個ずつ順に選択して出力し、内部レジスタ設定モード時には、トレースメモリ88−0〜88−Nのいずれかから転送されてくる内部レジスタ設定用データ(トレースデータ)を内部レジスタ読出しモード時とは逆方向の経路で対応する内部レジスタに分配するものである。
【0129】
100−01〜100−03は内部レジスタ49−01〜49−03に対応して設けられているトレースデータ転送用のトライステート・バッファ、101−01〜101−03は内部レジスタ49−01〜49−03に対応して設けられている内部レジスタ設定用データ転送用のトライステート・バッファであり、内部レジスタ49−04〜49−YMと、内部レジスタ49−04〜49−YMに対応して設けられているトライステート・バッファ100−04〜100−YM及び内部レジスタ設定用データ転送用のトライステート・バッファ101−04〜101−YMは、図示を省略している。
【0130】
102は動作モード信号MODEをデコードして内部レジスタ設定モード信号を出力するデコーダであり、デコーダ102は、動作モード信号MODEが内部レジスタ設定モードを示している時には、内部レジスタ設定モード信号を論理1、その他の時には、内部レジスタ設定モード信号を論理0とする。
【0131】
103−0は内部レジスタ49−01〜49−1Mに対応して設けられているシステム・クロック供給制御回路であり、内部レジスタ設定モード信号とマルチプレクサ制御信号SELECTを入力し、内部レジスタ設定モード信号が論理1とされている時、かつ、マルチプレクサ制御信号SELECTが内部レジスタ49−01〜49−1Mを選択している時のみ、論理1を出力するものである。
【0132】
104−0はシステム・クロック供給制御回路103の出力をゲート信号としてシステム・クロックSCLKの通過を制御するAND回路、105−0はAND回路104−0の出力と被検証回路の動作クロックCLOCKとをOR処理するOR回路である。なお、内部レジスタ49−11〜49−YMに対応して設けられているシステム・クロック供給制御回路103−1〜103−Y、AND回路104−1〜104−Y及びOR回路105−1〜105−Yは図示を省略している。
【0133】
本実施形態のエミュレーション方法では、内部レジスタ設定モード時には、内部レジスタの入力側に内部レジスタ設定用データをアサインし、この状態で、システム・クロックSCLKを1クロック供給することで、内部レジスタの出力側に前エミュレーション・サイクル時の出力信号が設定される。なお、FPGAによっては、SETポートを持つ内部レジスタを使用することができるものがあるが、その場合には、内部レジスタ設定用データを直接SETポートにつなぐことで同等の機能を実現できる。
【0134】
以上のように、本実施形態によれば、被検証回路をN+1個のグループを有するN+1個の部分回路に分割して1個のFPGA85に順にマッピングするようにし、被検証回路の内部レジスタの状態変化の検出及び被検証回路の内部レジスタの出力信号のリードサイクルの発生をグループ単位で行い、各グループでは、内部レジスタの出力信号をY個の束にして並列に出力し、かつ、全ての内部レジスタが状態変化を起こさなかったグループについてはリードサイクルを発生しないようにしているので、大規模回路を1個のFPGAを使用して動作検証することができ、かつ、内部レジスタの出力信号をシリアルで出力する方法やグループ化をしない方法に比べて被検証回路の内部レジスタの読出し時間を短縮することができる。
【0135】
なお、本実施形態では、被検証回路をN+1個のグループを有するN+1個の部分回路に分割し、各部分回路を順にFPGA85にマッピングするようにしているが、被検証回路をグループを有しないN+1個の部分回路に分割し、各部分回路を順にFPGA85にマッピングするようにしても良い。また、本実施形態では、FPGAを使用した場合を例にして説明しているが、本発明は、FPGA以外のプログラマブル・デバイスを使用する場合にも適用することができるものである。
【0136】
ここで、本発明を整理すると、本発明には、以下のエミュレーション方法及び装置が含まれる。
【0137】
(付記1)被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション方法であって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないことを特徴とするエミュレーション方法。
【0138】
(付記2)前記被検証回路を複数のグループに分割し、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記1記載のエミュレーション方法。
【0139】
(付記3)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを使用し、前記被検証回路を複数の部分回路に分割して前記複数のプログラマブル・デバイスに割り振ってマッピングし、前記複数の内部レジスタの状態変化の検出を各部分回路を単位として行うことを特徴とする付記1記載のエミュレーション方法。
【0140】
(付記4)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを使用し、前記被検証回路を複数のグループを有する複数の部分回路に分割して前記複数のプログラマブル・デバイスに割り振ってマッピングし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記1記載のエミュレーション方法。
【0141】
(付記5)前記被検証回路を複数の部分回路に分割し、各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせることを特徴とする付記1記載のエミュレーション方法。
【0142】
(付記6)前記被検証回路を複数のグループを有する複数の部分回路に分割し、各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記1記載のエミュレーション方法。
【0143】
(付記7)前記複数の内部レジスタの出力信号を複数本ずつの束に分け、各束の出力信号を順に選択して出力する選択手段を前記プログラマブル・デバイスに設けることを特徴とする付記1、2、3、4、5又は6記載のエミュレーション方法。
【0144】
(付記8)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子及び前記複数の内部レジスタの出力信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記1、2、3又は4記載のエミュレーション方法。
【0145】
(付記9)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子、前記複数の内部レジスタの出力信号用の端子及び前記複数の内部レジスタに設定する信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記5又は6記載のエミュレーション方法。
【0146】
(付記10)エミュレーション・サイクル毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を状態メモリに記憶する工程と、エミュレーション・サイクル毎に、前記複数の内部レジスタの出力信号をトレースメモリに記憶する工程と、前記状態メモリの内容から前記複数の内部レジスタの出力信号のリードサイクルを省略したグループ又は部分回路を確認し、該グループ又は部分回路については、前エミュレーション・サイクルでの出力信号を現エミュレーション・サイクルでの出力信号として補間する工程を有することを特徴とする付記2、3、4、5又は6記載のエミュレーション方法。
【0147】
(付記11)各プログラマブル・デバイス毎に、状態メモリとトレースメモリを設け、各プログラマブル・デバイスから得られる前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を各プログラマブル・デバイスに対応して設けられている状態メモリに記憶し、各プログラマブル・デバイスから得られる前記複数の内部レジスタの出力信号を各プログラマブル・デバイスに対応して設けられているトレースメモリに記憶することを特徴とする付記3又は4記載のエミュレーション方法。
【0148】
(付記12)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も処理時間の遅いプログラマブル・デバイスの処理が完了するのを待って、次のエミュレーション・サイクルに移ることを特徴とする付記11記載のエミュレーション方法。
【0149】
(付記13)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も遅いプログラマブル・デバイスの処理が完了するまでの間に、先に処理が終了しているプログラマブル・デバイスに対応して設けられている状態メモリ及びトレースメモリの内容の一部又は全部をホスト・コンピュータにアップロードすることを特徴とする付記12記載のエミュレーション方法。
【0150】
(付記14)前記プログラマブル・デバイスにコンフィグレーション・データをマッピングするサイクルと、前記複数の内部レジスタに前エミュレーション・サイクル時に退避させた出力信号を設定するサイクルと、前記被検証回路の動作サイクルと、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶するサイクルと、前記複数の内部レジスタの出力信号をトレースメモリに記憶するサイクルを順に発生する工程を有することを特徴とする付記5又は6記載のエミュレーション方法。
【0151】
(付記15)前記複数の内部レジスタの出力信号を複数本ずつの束に分け、各束の出力信号を順に選択して出力する選択手段を前記プログラマブル・デバイスに設け、前記複数の内部レジスタに前記エミュレーション・サイクル時に退避させた出力信号を設定するサイクルでは、束とされている出力信号を出力した複数の内部レジスタ毎に、前記退避させた出力信号を前記選択手段の内部を逆方向に伝送させて各内部レジスタの入力側にアサートして一度に設定することを特徴とする付記14記載のエミュレーション方法。
【0152】
(付記16)被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション装置であって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しない制御手段を有することを特徴とするエミュレーション装置。
【0153】
(付記17)前記被検証回路は、複数のグループに分割されており、前記制御手段は、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記16記載のエミュレーション装置。
【0154】
(付記18)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振ってマッピングされることを前提とし、前記複数の内部レジスタの状態変化の検出を各部分回路を単位として行うことを特徴とする付記16記載のエミュレーション装置。
【0155】
(付記19)前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数のグループを有する複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振られてマッピングされることを前提とし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記16記載のエミュレーション装置。
【0156】
(付記20)前記制御手段は、複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせることを特徴とする付記16記載のエミュレーション装置。
【0157】
(付記21)前記制御手段は、複数のグループを有する複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記16記載のエミュレーション装置。
【0158】
(付記22)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路の本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子及び前記複数の内部レジスタの出力信号用の端子として兼用するように信号の伝送を行う機能を有することを特徴とする付記16、17、18又は19記載のエミュレーション装置。
【0159】
(付記23)前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路の本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子、前記複数の内部レジスタの出力信号用の端子及び前記複数の内部レジスタに設定する信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記20又は21記載のエミュレーション装置。
【0160】
(付記24)エミュレーション・サイクル毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を状態メモリに記憶する工程と、エミュレーション・サイクル毎に、前記複数の内部レジスタの出力信号をトレースメモリに記憶する工程と、前記状態メモリの内容から前記複数の内部レジスタの出力信号のリードサイクルを省略したグループ又は部分回路を確認し、該グループ又は部分回路については、前エミュレーション・サイクルでの出力信号を現エミュレーション・サイクルでの出力信号として補間する工程を実行する機能を有することを特徴とする付記17、18、19、20又は21記載のエミュレーション装置。
【0161】
(付記25)各プログラマブル・デバイス毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶する状態メモリと、前記複数の内部レジスタの出力信号を記憶するトレースメモリを備えていることを特徴とする付記18又は19記載のエミュレーション装置。
【0162】
(付記26)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も処理時間の遅いプログラマブル・デバイスの処理が完了するのを待って、次のエミュレーション・サイクルに移る機能を有することを特徴とする付記25記載のエミュレーション装置。
【0163】
(付記27)1エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も遅いプログラマブル・デバイスの処理が完了するまでの間に、先に処理が終了しているプログラマブル・デバイスの状態メモリ及びトレースメモリの内容の一部又は全部をホスト・コンピュータにアップロードする機能を有することを特徴とする付記26記載のエミュレーション装置。
【0164】
【発明の効果】
以上のように、本発明によれば、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないとしているので、プログラマブル・デバイスからの被検証回路のトレースデータの取り出しを小規模な回路で高速に行うことができる。
【図面の簡単な説明】
【図1】本発明のエミュレーション装置の第1実施形態を示す回路図である。
【図2】本発明のエミュレーション装置の第1実施形態が備えるFPGA及びエミュレーション制御部の構成例を示す回路図である。
【図3】本発明のエミュレーション装置の第1実施形態が備えるFPGAにマッピングされるグループの構成例を示す回路図である。
【図4】図3に示すグループの一部分を拡大して示す回路図である。
【図5】本発明のエミュレーション装置の第1実施形態が備えるFPGAにマッピングされる内部レジスタ状態変化検出回路の動作タイミングを示す図である。
【図6】本発明のエミュレーション装置の第1実施形態の動作タイミングを示す図である。
【図7】本発明のエミュレーション装置の第1実施形態のエミュレーション動作サイクルのみを示す図である。
【図8】本発明のエミュレーション装置の第1実施形態が備えるFPGA及びエミュレーション制御部の具体的構成例を示す回路図である。
【図9】本発明のエミュレーション装置の第1実施形態が備える全体動作制御部及びFPGA制御部の具体的構成例を示す回路図である。
【図10】本発明のエミュレーション装置の第1実施形態が備える全体動作制御部及びFPGA制御部の動作タイミングを示す図である。
【図11】本発明のエミュレーション装置の第1実施形態の具体例の動作タイミングを示す図である。
【図12】本発明のエミュレーション装置の第1実施形態が備えるFPGAにマッピングする被検証回路の分割例を示す図である。
【図13】本発明のエミュレーション装置の第2実施形態を示す回路図である。
【図14】本発明のエミュレーション装置の第2実施形態の動作タイミングを示す図である。
【図15】本発明のエミュレーション装置の第2実施形態が備えるFPGAにマッピングすべきトレースデータ入出力回路の構成例を示す回路図である。
【図16】従来のエミュレーション装置の一例を示す回路図である。
【図17】FPGAの内部信号を外部に読み出す代表的な従来方法を説明するための回路図である。
【符号の説明】
42〜44…FPGA端子
49−ik…内部レジスタ
50−ik…論理回路
51−ik…内部レジスタ状態変化検出回路
Claims (5)
- 被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション方法であって、
エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないことを特徴とするエミュレーション方法。 - 被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション装置であって、
エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しない制御手段を有することを特徴とするエミュレーション装置。 - 前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数のグループを有する複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振られてマッピングされることを前提とし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする請求項2記載のエミュレーション装置。
- 各プログラマブル・デバイス毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶する状態メモリと、前記複数の内部レジスタの出力信号を記憶するトレースメモリを備えていることを特徴とする請求項3記載のエミュレーション装置。
- 前記制御手段は、複数のグループを有する複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする請求項2記載のエミュレーション装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002367544A JP2004199425A (ja) | 2002-12-19 | 2002-12-19 | エミュレーション方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002367544A JP2004199425A (ja) | 2002-12-19 | 2002-12-19 | エミュレーション方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004199425A true JP2004199425A (ja) | 2004-07-15 |
Family
ID=32764399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002367544A Withdrawn JP2004199425A (ja) | 2002-12-19 | 2002-12-19 | エミュレーション方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004199425A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008097131A (ja) * | 2006-10-06 | 2008-04-24 | Aoi Electronics Co Ltd | 回路構成情報生成装置、制御装置、回路検証システム、回路検証方法、回路構成情報生成プログラム及び制御プログラム |
US11520961B2 (en) * | 2019-11-11 | 2022-12-06 | International Business Machines Corporation | Heterogeneous-computing based emulator |
JP7446123B2 (ja) | 2020-02-19 | 2024-03-08 | 三菱電機株式会社 | 制御装置 |
-
2002
- 2002-12-19 JP JP2002367544A patent/JP2004199425A/ja not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008097131A (ja) * | 2006-10-06 | 2008-04-24 | Aoi Electronics Co Ltd | 回路構成情報生成装置、制御装置、回路検証システム、回路検証方法、回路構成情報生成プログラム及び制御プログラム |
US11520961B2 (en) * | 2019-11-11 | 2022-12-06 | International Business Machines Corporation | Heterogeneous-computing based emulator |
JP7446123B2 (ja) | 2020-02-19 | 2024-03-08 | 三菱電機株式会社 | 制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6701491B1 (en) | Input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it | |
US6247147B1 (en) | Enhanced embedded logic analyzer | |
EP0919916B1 (en) | Embedded logic analyzer | |
US9495492B1 (en) | Implementing synchronous triggers for waveform capture in an FPGA prototyping system | |
US8415974B1 (en) | Methods and circuits enabling dynamic reconfiguration | |
US5748875A (en) | Digital logic simulation/emulation system | |
EP2145273B1 (en) | Computation of phase relationship by clock sampling | |
US7418681B2 (en) | Simulation system, simulation method and simulation program for verifying logic behavior of a semiconductor integrated circuit | |
US7610528B2 (en) | Configuring flash memory | |
US7804724B2 (en) | Method and apparatus for boundary scan programming of memory devices | |
US8286025B1 (en) | Selection of port adapters for clock crossing boundaries | |
US7739093B2 (en) | Method of visualization in processor based emulation system | |
US20050267727A1 (en) | System and method for providing flexible signal routing and timing | |
US8898051B2 (en) | System and method for implementing a trace interface | |
JPH0773066A (ja) | メモリ回路構成法および装置 | |
JP2005174349A (ja) | 電子機器の動作をエミュレートする装置 | |
US9292640B1 (en) | Method and system for dynamic selection of a memory read port | |
JP5236908B2 (ja) | エミュレーションシステム | |
US8909833B2 (en) | Systems, methods, and articles of manufacture to stream data | |
US7228513B2 (en) | Circuit operation verification device and method | |
EP1233341B1 (en) | Embedded logic analyser | |
JP2004199425A (ja) | エミュレーション方法及び装置 | |
Chatterjee et al. | Verification and debugging of lc-3 test bench environment using system verilog | |
WO2022081898A1 (en) | High-speed functional protocol based test and debug | |
JP5043500B2 (ja) | 状態回復を有する回路エミュレーション |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060307 |