(57)【要約】【課題】ＬＳＩの開発段階で使用されるエミュレーション方法に関し、プログラマブル・デバイスからの被検証回路のトレースデータの読み出しを小規模な回路で高速に行うことができるようにする。【解決手段】被検証回路を複数個のグループを有する複数個（例えば、３個）の部分回路に分割して複数個（例えば、３個）のＦＰＧＡ（２７〜２９）に割り振ってマッピングし、各ＦＰＧＡでは、被検証回路の内部レジスタの出力信号のリードサイクルをグループ順に発生し、各グループでは、内部レジスタの出力信号を複数個の束にして順に並列に出力し、かつ、全ての内部レジスタが状態変化をしなかったグループについてはリードサイクルを発生しないようにする。【選択図】    図１
2004199425.tif 000002
【特許請求の範囲】
【請求項１】
被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション方法であって、
エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないことを特徴とするエミュレーション方法。
【請求項２】
被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション装置であって、
エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しない制御手段を有することを特徴とするエミュレーション装置。
【請求項３】
前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数のグループを有する複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振られてマッピングされることを前提とし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする請求項２記載のエミュレーション装置。
【請求項４】
各プログラマブル・デバイス毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶する状態メモリと、前記複数の内部レジスタの出力信号を記憶するトレースメモリを備えていることを特徴とする請求項３記載のエミュレーション装置。
【請求項５】
前記制御手段は、複数のグループを有する複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする請求項２記載のエミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＳＩ（large scale integrated circuit）の開発段階で使用されるエミュレーション方法及び装置に関する。
【０００２】
ＬＳＩの開発段階では、例えば、ＨＤＬ（hardware description language）で記述されたＲＴＬ（register transfer level）記述のＬＳＩをソフトウェア・シミュレータによってシミュレーションすることにより、設計したＬＳＩの動作を検証するということが行われている。
【０００３】
しかし、近年、ＬＳＩの回路規模が大きくなり、ソフトウェア・シミュレータによるシミュレーションでは、ワークステーション等に対する負荷が重くなり過ぎるため、十分な動作検証を行うことが困難となっている。このような現状から、プロトタイピング装置やエミュレーション装置（エミュレータ）というハードウェア装置による動作検証が行われるようになってきている。
【０００４】
プロトタイピング装置とエミュレーション装置は殆ど同様のものであり、明確な切り分けの基準はないが、通常、ロジックアナライザ用コネクタを設けている程度で、デバッグ機能を殆んど持たないものをプロトタイピング装置と称し、ロジックアナライザ等のデバッグ機能を内蔵しているものをエミュレーション装置と称している。本発明のエミュレーション装置は、プロトタイピング装置を含むものである。
【０００５】
【従来の技術】
図１６は従来のエミュレーション装置の一例を示す回路図である。図１６中、１は装置本体、２〜４は被検証回路をマッピングするプログラマブル・デバイスであるＦＰＧＡ（field programmable gate array）、５はＦＰＧＡ２〜４間の接続を行うためのＦＰＧＡ間配線デバイスである。
【０００６】
６は被検証回路の動作クロックＣＬＫ及びシフトクロックＳＦＣＬＫを生成するクロック生成器、７は被検証回路の波形観測等を行うロジックアナライザ、８は被検証回路から出力されるトレースデータを格納するトレースメモリ、９はホスト・コンピュータ（図示せず）との接続を図るホスト・インタフェースである。
【０００７】
本例では、被検証回路の動作は、ＦＰＧＡ２〜４とＦＰＧＡ間配線デバイス５とで実現されるが、ＦＰＧＡ２〜４へのコンフィグレーション・データのダウンロードや、ＦＰＧＡ間配線デバイス５へのＦＰＧＡ間配線情報のダウンロードや、クロック生成器６及びロジックアナライザ７の動作条件の設定等は、ホスト・インタフェース９を介してホスト・コンピュータから行われる。
【０００８】
エミュレーションは、設定期間が終了するまで又はロジックアナライザ７に設定したトリガ条件が満たされるまで実行され、エミュレーション停止（被検証回路への動作クロックの停止）後、トレースメモリ８に蓄積されたトレースデータをホスト・コンピュータ９を介してホスト・コンピュータにアップロードし、波形表示する等してデバッグが行われる。
【０００９】
エミュレーション装置には、トレース可能な信号をＦＰＧＡ端子に出力されている信号のみとするものもあるが、ＦＰＧＡの内部信号をトレース可能とするものもある。ＦＰＧＡの内部信号を外部に読み出す方法には様々の方法があるが、図１７はＦＰＧＡの内部信号を外部に読み出す代表的な従来方法を説明するための回路図である。
【００１０】
図１７ＡはＦＰＧＡにマッピングされた被検証回路の一部分を示しており、図１７Ａ中、１０〜１２は内部レジスタ（Ｄフリップフロップ）、１３〜１５は論理回路、ＣＬＫは被検証回路の動作クロックである。
【００１１】
図１７ＢはＦＰＧＡ内にシリアル変換による内部信号読出し回路１６を設けた例を示している（例えば、特許文献１参照）。図１７Ｂ中、１７〜１９は内部レジスタ（Ｄフリップフロップ）、２０、２１はセレクタ、ＳＦＣＬＫはシフトクロックである。
【００１２】
本例は、被検証回路の内部レジスタ（内部レジスタ１０、１１等）の出力信号（トレースデータ）を内部信号読出し回路１６のセレクタ（セレクタ２０、２１等）を介して内部信号読出し回路１６の内部レジスタ（内部レジスタ１７〜１９等）に設定し、シフトクロックＳＦＣＬＫに同期させてシリアルにＦＰＧＡの外部に読み出すというものである。
【００１３】
図１７ＣはＦＰＧＡ内にメモリを利用した内部信号読出し回路２２を設けた例を示している。図１７Ｃ中、２３はメモリ、２４はメモリ２３に与えるアドレス信号を生成するアドレス生成回路、２５はメモリ２３から出力されるトレースデータをシリアル変換するシリアル変換回路である。
【００１４】
本例は、エミュレーション・サイクル期間中に、被検証回路のレジスタ（内部レジスタ１０、１１等）の出力信号（トレースデータ）をメモリ２３に書き込み、エミュレーション・サイクル停止後に、メモリ２３からトレースデータを読み出して、シリアル変換回路２５によってシリアル変換してＦＰＧＡの外部に読み出すというものである。
【００１５】
なお、内部信号読出し回路１６、２２は、エミュレーション用ダウンロード・データの生成作業（ＦＰＧＡ分割、合成、各ＦＰＧＡのコンフィグレーション・データ及びＦＰＧＡ間配線情報の生成）の段階で、被検証回路の中の選択された内部レジスタの出力信号あるいは全内部レジスタの出力信号を対象として挿入される。
【００１６】
また、内部信号読出し回路１６を設ける場合であっても、内部信号読出し回路２２を設ける場合であっても、論理ゲート間の信号については、トレースデータをホスト・コンピュータにアップロードした後、トレースデータとネットリストから計算される。
【００１７】
【特許文献１】
特表２００２−５０１６４６号公報
【００１８】
【発明が解決しようとする課題】
図１７Ｂに示す内部信号読み出し方法では、内部信号読出し回路１６は、出力信号をトレースデータとする内部レジスタと同数（被検証回路の全ての内部レジスタの出力信号をトレースデータとする場合には、被検証回路の内部レジスタと同数）の内部レジスタ及びセレクタを必要とするため、回路規模が大きくなり、ＦＰＧＡの容量を圧迫してしまうという問題点があった。
【００１９】
また、内部信号読出し回路１６によるシリアル出力動作は被検証回路の動作クロックＣＬＫの１サイクル期間内に完了する必要があるため、シフトクロックＳＦＣＬＫは被検証回路の動作クロックＣＬＫに対して格段に高速なクロックでなければならないことになる。これは、実際には被検証回路の動作クロックＣＬＫの方を低速なクロックとすることによって実現されることになる。このため、エミュレーション装置の最も重要な要素である高速性が損なわれてしまうという問題点もあった。
【００２０】
これに対して、図１７Ｃに示す内部信号読み出し方法では、エミュレーション・サイクル期間中にトレースデータをメモリ２３に記憶し、エミュレーション停止後にメモリ２３からトレースデータを取り出すので、シフトクロックＳＦＣＬＫのような被検証回路の動作クロックＣＬＫに対して格段に高速なクロックを用意する必要はなく、エミュレーション速度が低下するということも無い。また、メモリ２３からのトレースデータの取り出しも、被検証回路の動作クロックＣＬＫのレートで行うことが可能であるため、図１７Ｂに示す内部信号読み出し方法ほどには時間は掛からない。
【００２１】
しかしながら、図１７Ｃに示す内部信号読み出し方法では、被検証回路中のメモリモデルと内部信号読出し回路２２中のメモリ２３とでＦＰＧＡのメモリ領域を分け合うことになるが、ＦＰＧＡのメモリ領域は余り大規模ではないため、トレース可能な信号数及びトレースの深さが大きく制限されてしまうという問題点があった。
【００２２】
本発明は、かかる点に鑑み、プログラマブル・デバイスからの被検証回路のトレースデータの読み出しを小規模な回路で高速に行うことができるようにしたエミュレーション方法及び装置を提供することを目的とする。
【００２３】
【課題を解決するための手段】
本発明のエミュレーション方法及び装置は、被検証回路をプログラマブル・デバイスにマッピングすることにより、被検証回路の動作検証を行うものであって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないというものである。
【００２４】
【発明の実施の形態】
以下、図１〜図１５を参照して、本発明のエミュレーション方法及び装置の第１実施形態及び第２実施形態について説明する。
【００２５】
ＬＳＩの信号変化の状況をシミュレーション波形等で確認してみると、頻繁に変化する信号というのは余り見られない。大抵は数サイクル単位で変化するので、ある時点での前エミュレーション・サイクルと現エミュレーション・サイクルとの間で変化する信号の割合はかなり低いように考えられる。更に多くの場合、ある内部レジスタの出力信号に変化のない場合には、その内部レジスタと関連する周辺にも信号変化が見られない。大きな括りでは、機能ブロック単位で一定期間動作していない場合も多い。
【００２６】
本発明のエミュレーション方法及び装置の第１実施形態及び第２実施形態は、このような関連する回路群を１つのグループとして取り扱い、内部レジスタ読出しモード時に、信号変化を起こしていないグループの読出しを行わないことで、被検証回路のトレースデータの読み出し時間を短縮するものである。
【００２７】
（第１実施形態・・図１〜図１２）
図１は本発明のエミュレーション装置の第１実施形態を示す回路図である。本発明のエミュレーション装置の第１実施形態は、本発明のエミュレーション方法の第１実施形態を実行するものであり、本発明のエミュレーション方法の第１実施形態は、被検証回路をＮ＋１個のグループを有する３個の部分回路に分割し、これら３個の部分回路を３個のＦＰＧＡに割り振ってマッピングすることにより被検証回路の動作検証を行うというものである。
【００２８】
図１中、２６は装置本体、２７〜２９は被検証回路をマッピングするプログラマブル・デバイスであるＦＰＧＡ、３０〜３２はＦＰＧＡ２７〜２９に対応して設けられているエミュレーション制御部、３３はエミュレーション制御部３０〜３２を介してＦＰＧＡ２７〜２９間の接続を図るためのＦＰＧＡ間配線デバイスである。
【００２９】
３４はシステム・クロックＳＣＬＫを生成するクロック生成器、３５は被検証回路の波形観測等を行うロジックアナライザ、３６は被検証回路の動作クロックＣＬＯＣＫや動作モード信号ＭＯＤＥ等を出力して装置全体の動作を制御する全体動作制御部、３７はホスト・コンピュータ（図示せず）との接続を図るホスト・インタフェースである。
【００３０】
本実施形態では、被検証回路の動作は、ＦＰＧＡ２７〜２９とエミュレーション制御部３０〜３２とＦＰＧＡ間配線デバイス３３とで実現されるが、ＦＰＧＡ２７〜２９へのコンフィグレーション・データのダウンロードや、ＦＰＧＡ間配線デバイス３３へのＦＰＧＡ間配線情報のダウンロードや、エミュレーション制御部３０〜３２、クロック生成器３４及びロジックアナライザ３５の動作条件の設定等は、ホスト・インタフェース３７を介してホスト・コンピュータから行われる。
【００３１】
また、本実施形態では、全体動作制御部３６から出力される動作モード信号ＭＯＤＥによって、エミュレーション・サイクル毎に順に、▲１▼エミュレーション動作モード（被検証回路にエミュレーション動作を行わせるモード）、▲２▼内部レジスタ状態変化検出モード（被検証回路の内部レジスタの状態変化を検出するモード）、▲３▼内部レジスタ読出しモード（被検証回路の内部レジスタの出力信号を読み出すモード）とされるが、本実施形態では、被検証回路の全ての内部レジスタの出力信号をトレースデータとして読み出す場合を例としている。
【００３２】
図２はＦＰＧＡ２７及びエミュレーション制御部３０の構成例を示す回路図であり、他のＦＰＧＡ２８、２９及びエミュレーション制御部３１、３２も同様に構成される。図２中、ＦＰＧＡ２７において、３８は被検証回路を分割してなる部分回路であり、本実施形態では、部分回路３８は、更に、Ｎ＋１個のグループ０〜グループＮに分割されている。グループ１とグループＮとの間に存在するグループ２〜グループＮ−１は図示を省略している。
【００３３】
４０はグループ０〜グループＮとエミュレーション制御部３０との接続を図るスイッチング論理部であり、Ｉ／Ｏ＿ＤＡＴＡは被検証回路本来の入出力信号、Ｈ０〜ＨＮは被検証回路の内部レジスタの状態変化を検出してなる内部レジスタ状態変化検出信号、ＳＥＬＥＣＴは各グループ内の内部レジスタの出力信号を一定数ずつ順に選択して取り出すためのマルチプレクサ（後述）の動作を制御するマルチプレクサ制御信号、ＲＥＧ＿Ｄ０〜ＲＥＧ＿ＤＮはグループ０〜グループＮの内部レジスタの出力信号（トレースデータ）、ＲＥＧ＿ＤＡＴＡはトレースデータＲＥＧ＿Ｄ０〜ＲＥＧ＿ＤＮのいずれかである。
【００３４】
スイッチング論理部４０は、エミュレーション動作モード時には、グループ０〜グループＮへの被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡの伝送を行い、内部レジスタ状態変化検出モード時には、グループ０〜グループＮから出力される内部レジスタ状態変化検出信号Ｈ０〜ＨＮのエミュレーション制御部３０への伝送を行い、内部レジスタ読出しモード時には、マルチプレクサ制御信号ＳＥＬＥＣＴのグループ０〜グループＮへの伝送及びトレースデータＲＥＧ＿ＤＡＴＡのエミュレーション制御部３０への伝送を行う。
【００３５】
また、４１は全体動作制御部３６から出力された被検証回路の動作クロックＣＬＯＣＫを増幅するバッファ、４２〜４４はＩ／Ｏ用のＦＰＧＡ端子であり、ＦＰＧＡ端子４２は被検証回路の動作クロックＣＬＯＣＫ用に使用され、ＦＰＧＡ端子４３は動作モード信号ＭＯＤＥ用に使用され、ＦＰＧＡ端子４４は、エミュレーション動作モード時には、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡ用に使用され、内部レジスタ状態変化検出モード時には、内部レジスタ状態変化検出信号Ｈ０〜ＨＮ用に使用され、内部レジスタ読出しモード時には、マルチプレクサ制御信号ＳＥＬＥＣＴ用及びトレースデータＲＥＧ＿ＤＡＴＡ用に使用される。
【００３６】
また、エミュレーション制御部３０において、４５はＦＰＧＡ２７の制御を行うＦＰＧＡ制御部、４６は被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡ、内部レジスタ状態変化検出信号Ｈ０〜ＨＮ、マルチプレクサ制御信号ＳＥＬＥＣＴ及びトレースデータＲＥＧ＿ＤＡＴＡの通過を制御するスイッチング・デバイス、４７は内部レジスタ状態変化検出信号Ｈ０〜ＨＮを記憶する状態メモリ、４８はトレースデータＲＥＧ＿ＤＡＴＡを記憶するトレースメモリである。
【００３７】
なお、スイッチング論理部４０及びスイッチング・デバイス４６は、物理的なスイッチを有するものではなく、マルチプレクサ、トライステート・バッファ等で電子的に実現されるスイッチ機能を有するものであり、各動作モードは、全体動作制御部３６が動作モード信号ＭＯＤＥによってスイッチング論理部４０及びスイッチング・デバイス４６のスイッチング論理を切り替えることにより実現される。本実施形態では、エミュレーション動作モードと内部レジスタ状態変化検出モードと内部レジスタ読出しモードは、被検証回路の動作クロックＣＬＯＣＫの１サイクル期間内に実現される。
【００３８】
図３はグループ０の構成例を示す回路図であり、他のグループ１〜グループＮも同様に構成される。なお、実際の被検証回路では、グループ間を跨ぐ配線が存在するが、図３では図示を省略している。
【００３９】
図３中、４９−ｉｋは内部レジスタ（Ｄフリップフロップ）である。ここで、ｉ＝０、１、…、Ｙであり、ｋ＝１、２、…、Ｍである。但し、ｉ＝０〜３、Ｙ−１、Ｙの範囲では、内部レジスタ４９−ｉ１、４９−ｉＭ間に存在する内部レジスタ４９−ｉ２〜４９−ｉ［Ｍ−１］の図示を省略しており、ｉ＝４〜［Ｙ−２］の範囲では、内部レジスタ４９−ｉｋの図示を省略している。
【００４０】
５０−ｉｋは論理回路である。但し、ｉ＝０〜３、Ｙ−１、Ｙの範囲では、論理回路５０−ｉ１、５０−ｉＭ間に存在する論理回路５１−ｉ２〜５１−ｉ［Ｍ−１］の図示を省略しており、ｉ＝４〜［Ｙ−２］の範囲では、論理回路５０−ｉｋの図示を省略している。
【００４１】
５１−ｉｋは内部レジスタ状態変化検出回路である。但し、ｉ＝０〜３、Ｙ−１、Ｙの範囲では、内部レジスタ状態変化検出回路５１−ｉ１、５１−ｉＭ間に存在する内部レジスタ状態変化検出回路５１−ｉ２〜５１−ｉ［Ｍ−１］の図示を省略しており、ｉ＝４〜［Ｙ−２］の範囲では、内部レジスタ状態変化検出回路５１−ｉｋの図示を省略している。
【００４２】
５２は全ての内部レジスタ状態変化検出回路５１−０１〜５１−ＹＭの出力信号をＯＲ処理して内部レジスタ状態変化検出信号Ｈ０を生成するＯＲ回路、５３はマルチプレクサ制御信号に制御されて内部レジスタ４９−１〜４９−ＹＭの出力信号についてマルチプレクス動作を行うマルチプレクサである。
【００４３】
内部レジスタ４９−０１〜４９―ＹＭの出力信号は、Ｍ本ずつＹ＋１個の束に分けられている。具体的には、内部レジスタ４９−０１〜４９−０Ｍの出力信号の束、内部レジスタ４９−１１〜４９−１Ｍの出力信号の束、…、内部レジスタ４９−Ｙ１〜４９−ＹＭの出力信号の束に分けられている。
【００４４】
そこで、マルチプレクサ５３は、マルチプレクサ制御信号ＳＥＬＥＣＴにより制御されて、内部レジスタ４９−０１〜４９−０Ｍの出力信号の束、内部レジスタ４９−１１〜４９−１Ｍの出力信号の束、…、内部レジスタ４９−Ｙ１〜４９−ＹＭの出力信号の束を順に選択して各々をトレースデータＲＥＧ＿Ｄ０として出力するように動作する。グループ１〜グループＮのマルチプレクサ５３も、グループ０のマルチプレクサ５３と同様に、Ｍ×（Ｙ＋１）本のトレースデータをＭ本ずつＹ＋１回に分けて出力するように動作する。
【００４５】
このように、グループ０〜グループＮのＭ×（Ｙ＋１）本のトレースデータをＭ本ずつＹ＋１回に分けて読み出す理由は、トレースデータ用として使用できるＦＰＧＡ端子数よりも、１グループ内の内部レジスタ数の方が多い場合があるからである。Ｍは、Ｍ≒トレースデータ用として使用できるＦＰＧＡ端子数−（マルチプレクサ制御信号ＳＥＬＥＣＴの本数＋動作モード信号ＭＯＤＥの本数＋被検証回路の動作クロックＣＬＯＣＫの本数［１本］）で算出することができる。
【００４６】
図４はグループ０の一部分を拡大して示す回路図、図５は内部レジスタ状態変化検出回路５１−０１の動作タイミングを示す図であり、他の内部レジスタ状態変化検出回路５１−０２〜５１―ＹＭも同様のタイミングで動作する。図５Ａは被検証回路の動作クロックＣＬＯＣＫ、図５Ｂは内部レジスタ４９−０１の入力信号ＳＩ、図５Ｃは内部レジスタ４９−０１の出力信号ＳＯ、図５Ｄは内部レジスタ状態変化検出回路５１−０１の出力信号Ｅ０１を示している。
【００４７】
図５に示すように、内部レジスタ４９−０１の状態変化は、被検証回路の動作クロックＣＬＯＣＫのサイクルを単位として発生し、内部レジスタ４９−０１は、次の動作クロックＣＬＯＣＫが入力されるまで状態を保持することになる。そこで、内部レジスタ４９−０１の状態変化検出は、内部レジスタ４９−０１の入力信号ＳＩと出力信号ＳＯを比較することにより行われ、内部レジスタ状態変化検出回路５１−０１は、入力信号ＳＩと出力信号ＳＯが異なる値の時は、状態変化があったとして論理１を出力し、入力信号ＳＩと出力信号ＳＯが同一の値の時は、状態変化が無かったとして、論理０を出力する。
【００４８】
ここで、内部レジスタ状態変化検出回路５１−０１〜５１−ＹＭの出力信号はＯＲ回路５２でＯＲ処理されるので、内部レジスタ４９−０１〜４９−ＹＭのいずれかに状態変化があった時は、内部レジスタ状態変化検出信号Ｈ０は論理１となり、内部レジスタ４９−０１〜４９−ＹＭの全てに状態変化がなかった時は、内部レジスタ状態変化検出信号Ｈ０は論理０となる。他のグループ１〜グループＮにおいても同様の動作が行われ、内部レジスタ状態変化検出信号Ｈ１〜ＨＮが出力される。
【００４９】
図６は本実施形態のエミュレーション装置の動作タイミングを示す図であり、図６Ａは被検証回路の動作クロックＣＬＯＣＫの波形、図６Ｂはエミュレーション・サイクル数を示すエミュレーション・サイクル数信号Ｔ＿Ｃycleの内容、図６Ｃは動作モード信号ＭＯＤＥの内容、図６Ｄはマルチプレクサ制御信号ＳＥＬＥＣＴによるトレースデータの選択状況、図６ＥはＦＰＧＡ端子４４上の信号を示している。
【００５０】
本実施形態のエミュレーション装置では、まず、全体動作制御部３６は、動作モード信号ＭＯＤＥをエミュレーション動作モードを指示する内容とする。これによって、エミュレーション制御部３０〜３２のスイッチング・デバイス４６及びＦＰＧＡ２７〜２９のスイッチング論理部４０は、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡを通過させるように設定される。
【００５１】
この結果、ＦＰＧＡ２７〜２９のグループ０〜グループＮは、スイッチング論理部４０、スイッチング・デバイス４６及びＦＰＧＡ間配線デバイス３３を介して接続された状態となり、全体として１つの被検証回路が構成される。この状態で、全体動作制御部３６は、被検証回路の動作クロックＣＬＯＣＫを１個発生し、エミュレーションを１サイクル進める。
【００５２】
次に、全体動作制御部３６は、動作モード信号ＭＯＤＥを内部レジスタ状態変化検出モードを指示する内容とする。これによって、スイッチング論理部４０、スイッチング・デバイス４６は、グループ０〜グループＮから出力される内部レジスタ状態変化検出信号Ｈ０〜ＨＮを通過させるように設定される。この結果、内部レジスタ状態変化検出信号Ｈ０〜ＨＮは、ＦＰＧＡ制御部４５を介して状態メモリ４７に記憶される。
【００５３】
次に、全体動作制御部３６は、動作モード信号ＭＯＤＥを内部レジスタ読出しモードを指示する内容とする。これによって、スイッチング論理部４０及びスイッチング・デバイス４４は、ＦＰＧＡ制御部４５から出力されるマルチプレクサ制御信号ＳＥＬＥＣＴとグループ０〜グループＮから出力されるトレースデータＲＥＧ＿Ｄ０〜ＲＥＧ＿ＤＮ（ＲＥＧ＿ＤＡＴＡ）を通過させるように設定される。
【００５４】
この結果、ＦＰＧＡ制御部４５から出力されるマルチプレクサ制御信号ＳＥＬＥＣＴは、スイッチング・デバイス４６及びスイッチング論理部４０を介してグループ０〜グループＮのマルチプレクサ５３に与えられ、また、グループ０〜グループＮから出力されるトレースデータＲＥＧ＿Ｄ０〜ＲＥＧ＿ＤＮ（ＲＥＧ＿ＤＡＴＡ）は、スイッチング論理デバイス４０及びスイッチング・デバイス４６を介してトレースメモリ４８に記憶される。
【００５５】
但し、ＦＰＧＡ制御部４５は、内部レジスタ状態変化検出信号が論理０を示したグループ、すなわち、全ての内部レジスタに状態変化の無かったグループに対するマルチプレクサ制御信号ＳＥＬＥＣＴを発生せず、全ての内部レジスタに状態変化の無かったグループからのトレースデータの読み出しを実行しないようにする。図６では、ＦＰＧＡ２７のグループ１とＦＰＧＡ２９のグループ１及びグループ２のリードサイクルが省略されている例を示している。
【００５６】
エミュレーション制御部３０〜３２は、それぞれ、内部レジスタ読出し処理が完了した時点で、全体動作制御部３６に対して内部レジスタ読出し処理完了通知を出し、全体動作制御部３６は、全てのエミュレーション制御部３０〜３２から内部レジスタ読出し処理完了通知を受けた時点で、次のエミュレーション・サイクルに移ることになる（Ｃ→Ｃ＋１）。
【００５７】
ここで、通常、ＦＰＧＡ２７〜２９にマッピングされるグループ数（Ｎ＋１）はＦＰＧＡ毎に異なり、グループ内の内部レジスタの出力信号の束の数、すなわち、マルチプレクサ５３が選択する内部レジスタの束の数（Ｙ＋１）もグループ毎に異なり、リードサイクルが省略されるグループ数もＦＰＧＡ毎に異なる。
【００５８】
したがって、内部レジスタ読出し処理の完了時期はＦＰＧＡ毎に異なり、次のエミュレーション・サイクルに移行することができるのは、内部レジスタ読出し処理の最も遅いＦＰＧＡ（図６の例では、ＦＰＧＡ２８）の内部レジスタ読出し処理が完了した時点となる。
【００５９】
状態メモリ４７及びトレースメモリ４８の内容は、ロジックアナライザ３５に設定されたエミュレーション・サイクル数又はトリガ条件によるエミュレーション完了後、ホスト・インタフェース３７を介してホスト・コンピュータにアップロードされ、ホスト・コンピュータではトレースデータから波形が生成されることになる。
【００６０】
その際、状態メモリ４７の内容が確認され、或るエミュレーション・サイクルで内部レジスタに状態変化の無かったグループはトレースデータが存在しないので、前エミュレーション・サイクルでのトレースデータが現エミュレーション・サイクルでのトレースデータとして使用されることになる。
【００６１】
なお、１エミュレーション・サイクルの処理時間がＦＰＧＡ毎に異なる場合、最も遅いＦＰＧＡ（図６の例では、ＦＰＧＡ２８）の内部レジスタ読出し処理が完了するまでの間、先に内部レジスタ読出し処理が終了しているＦＰＧＡ（図６の例では、ＦＰＧＡ２７、２９）については待ち時間ができる。
【００６２】
そこで、このような場合には、先に内部レジスタ読出し処理が終了しているＦＰＧＡ（図６ではＦＰＧＡ２７、２９）についての内部レジスタ状態変化検出信号及びトレースデータの一部又は全部をホスト・コンピュータにアップロードする機能を持たせるようにしても良い。このようにする場合には、エミュレーションの高速化を図ることができる。
【００６３】
図７はエミュレーション・サイクル中のエミュレーション動作のサイクルのみを取り出した図であり、エミュレーション動作モード時の動作が被検証回路本来の動作になっていることが分かる。
【００６４】
図８〜図１２は本実施形態のエミュレーション方法及び装置の具体例を説明するための図であり、図８はＦＰＧＡ２７及びエミュレーション制御部３０の具体的構成例を示している。他のＦＰＧＡ２８、２９及びエミュレーション制御部３１、３２も同様に構成することができる。
【００６５】
本具体例では、グループ数を１６（Ｎ値を１５）、内部レジスタ状態変化検出信号Ｈ０〜Ｈ１５を合計１６ビットとし、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡを１０８ビット、動作モード信号ＭＯＤＥを２ビット、マルチプレクサ制御信号ＳＥＬＥＣＴを８ビット（Ｙ値を１５とし、上位４ビットをグループ選択信号、下位４ビットを内部レジスタの出力信号の束の選択信号としている）、トレースデータＲＥＧ＿Ｄ０〜ＲＥＧ＿Ｄ１５を各々１００ビットとしている。
【００６６】
この結果、ＦＰＧＡ端子４２を１ピン、ＦＰＧＡ端子４３を２ピン、ＦＰＧＡ端子４４を１０８ピンとしており、ＦＰＧＡ端子４４は、エミュレーション動作モード時及び内部レジスタ読出しモード時には１０８ピンの全てが使用され、内部レジスタ状態変化検出モード時には１６ピンが使用される。また、動作モード信号ＭＯＤＥは、エミュレーション動作モード時には０、内部レジスタ状態変化検出モード時には１、内部レジスタ読出しモード時には２とされる。
【００６７】
スイッチング論理部４０は、スイッチ５４、５５とスイッチ群５６とデコーダ５７を有するように構成される。スイッチ５４は、動作モード信号ＭＯＤＥによりＯＮ、ＯＦＦが制御され、動作モード信号ＭＯＤＥ＝０の時（エミュレーション動作モード時）にはＯＮとされ、それ以外の時にはＯＦＦとされる。
【００６８】
スイッチ５５は、動作モード信号ＭＯＤＥによりＯＮ、ＯＦＦが制御され、動作モード信号ＭＯＤＥ＝１の時（内部レジスタ状態変化検出モード時）にはＯＮとされ、それ以外の時にはＯＦＦとされる。
【００６９】
スイッチ群５６は、グループ０〜グループ１５に対応してスイッチ５８−０〜５８−１５を有し、デコーダ５７は、内部レジスタ読出しモード時にマルチプレクサ制御信号ＳＥＬＥＣＴの上位４ビットをデコードして、スイッチ５８−０〜５８−１５のＯＮ、ＯＦＦを制御し、マルチプレクサ制御信号ＳＥＬＥＣＴの上位４ビットがｑ（ｑ＝０、１、…、１５）を示す時は、スイッチ５８−ｑがＯＮされ、その他のスイッチはＯＦＦとされる。なお、エミュレーション動作モード時及び内部状態変化検出モード時には、スイッチ５８−０〜５８−１５は、全てＯＦＦとされる。
【００７０】
ここで、ＦＰＧＡ２７〜２９の各々から一度に出力させることができるトレースデータの個数は１００であるから、仮に、グループ数（Ｎ値）と、グループ内のマルチプレクサ５３の選択数（Ｙ値）が、全てのＦＰＧＡ２７〜２９で同じ条件だとすれば、本具体例では、被検証回路の内部レジスタの数は、３（ＦＰＧＡの数）×１６（グループ数）×１６（内部レジスタの出力信号の束の数）×１００（ＲＥＧ＿ＤＡＴＡのビット幅）＝７６，８００個となる。
【００７１】
また、スイッチング・デバイス４６は、スイッチ５９、６０、６１を有している。スイッチ５９は、動作モード信号ＭＯＤＥによりＯＮ、ＯＦＦが制御され、動作モード信号ＭＯＤＥ＝０の時（エミュレーション動作モード時）にはＯＮとされ、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡを通過させ、それ以外の時にはＯＦＦとされる。なお、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡは、エミュレーション制御部３０では、Ｓ＿Ｉ／Ｏ＿ＤＡＴＡと記している。
【００７２】
スイッチ６０は、動作モード信号ＭＯＤＥによりＯＮ、ＯＦＦが制御され、動作モード信号ＭＯＤＥ＝１の時（内部レジスタ状態変化検出モード時）にはＯＮとされ、内部レジスタ状態変化検出信号Ｈ０〜Ｈ１５を通過させ、それ以外の時にはＯＦＦとされる。なお、内部レジスタ状態変化検出信号Ｈ０〜ＨＮは、エミュレーション制御部３０では、Ｓ＿Ｈ０to１５と記し、また、内部レジスタ状態変化検出信号Ｓ＿Ｈ０to１５のＦＰＧＡ制御部４５でのラッチ出力をＨ＿ＲＥＧと記している。
【００７３】
スイッチ６１は、動作モード信号ＭＯＤＥによりＯＮ、ＯＦＦが制御され、動作モード信号ＭＯＤＥ＝２の時（内部レジスタ読出しモード時）にはＯＮとされ、マルチプレクサ制御信号ＳＥＬＥＣＴ及びトレースデータＲＥＧ＿ＤＡＴＡを通過させ、それ以外の時にはＯＦＦとされる。なお、マルチプレクサ制御信号ＳＥＬＥＣＴは、エミュレーション制御部３０では、Ｓ＿ＳＥＬＥＣＴと記している。
【００７４】
ＷＲ＿ＳＥＴは内部レジスタ状態変化検出信号Ｈ＿ＲＥＧの状態メモリ４７の入出力端子へのセットを指示するライトデータ・セット信号であり、論理０の時、内部レジスタ状態変化検出信号Ｈ＿ＲＥＧの状態メモリ４７の入出力端子へのセットを指示し、論理１の時、内部レジスタ状態変化検出信号Ｈ＿ＲＥＧの状態メモリ４７の入出力端子へのセットを不指示とするものである。
【００７５】
ＭＥＭ＿ＷＲは状態メモリ４７及びトレースメモリ４８のリード／ライト方向の制御を行うリード／ライト信号であり、論理０の時、リードを指示し、論理１の時、ライトを指示するものである。
【００７６】
６２、６３はライトデータ・セット信号ＷＲ＿ＳＥＴにより活性、非活性状態が制御されるトライステート・バッファである。トライステート・バッファ６２は、ライトデータ・セットＷＲ＿ＳＥＴが論理０の時に活性状態とされ、ＦＰＧＡ制御部４５から出力される内部レジスタ状態変化検出信号Ｈ＿ＲＥＧを状態メモリ４７の入出力端子に転送し、ライトデータ・セット信号ＷＲ＿ＳＥＴが論理１の時に非活性状態とされ、出力をハイ・インピーダンスとする。
【００７７】
また、トライステート・バッファ６３は、ライトデータ・セット信号ＷＲ＿ＳＥＴが論理０の時に活性状態とされ、動作モード信号ＭＯＤＥをスイッチング・デバイス４６に転送し、ライトデータ・セット信号ＷＲ＿ＳＥＴが論理１の時に非活性状態とされ、出力をハイ・インピーダンスとする。トライステート・バッファ６３の出力がハイ・インピーダンスの時は、スイッチ５９〜６１はＯＦＦとされる。
【００７８】
なお、状態メモリ４７は、エミュレーション・サイクル数信号Ｔ＿Ｃycleをアドレス信号としており、トレースメモリ４８は、エミュレーション・サイクル数信号Ｔ＿Ｃycleを上位アドレス信号、マルチプレクサ制御信号Ｓ＿ＳＥＬＥＣＴを下位アドレス信号としている。ここで、マルチプレクサ制御信号Ｓ＿ＳＥＬＥＣＴは、上位をグループ番号（０〜Ｎ）、下位をマルチプレクサ５３の選択番号（０〜Ｙ）になっているので、トレースメモリ４８のアドレスは、上位からエミュレーション・サイクル、グループ番号、マルチプレクサ５３の選択番号のようになっている。
【００７９】
図９は全体動作制御部３６及びＦＰＧＡ制御部４５の具体的構成例を示す回路図、図１０は全体動作制御部３６及びＦＰＧＡ制御部４５の動作タイミングを示す図であり、どちらの制御部３６、４５もシステム・クロックＳＣＬＫに同期して動作を行う。
【００８０】
本具体例では、まず、動作開始前に、ライトデータ・セット信号ＷＲ＿ＳＥＴを論理０（セット側）に設定し、更に、グループ番号の最大値、すなわち、Ｎ値（＝１５）をレジスタ６４に設定し、グループ０〜グループＮの各々のマルチプレクサ５３の選択番号の最大値、すなわち、Ｙ値（＝１５）をメモリ６５に設定する。
【００８１】
エミュレーションは、全体動作制御部３６のモード・カウンタ６６にスタート信号ＳＴＡＲＴが印加されることにより開始される。モード・カウンタ６６は、スタート信号ＳＴＡＲＴが印加されると、被検証回路の動作クロックＣＬＯＣＫを出力すると共に、システム・クロックＳＣＬＫをカウントする。
【００８２】
デコーダ６７は、モード・カウンタ６６のカウント値をデコードして動作モード信号ＭＯＤＥを出力し、モード・カウンタ６６のカウント値が０、１の時は、動作モード信号ＭＯＤＥを０（エミュレーション動作モード）、モード・カウンタ６６のカウント値が２の時は、動作モード信号ＭＯＤＥを１（内部レジスタ状態変化検出モード）、モード・カウンタ６６のカウント値が３の時は、動作モード信号ＭＯＤＥを２（内部レジスタ読出しモード）とする。
【００８３】
なお、モード・カウンタ６６は、後述するように、ＯＲ回路６８の出力が論理１になると、カウント値をホールドし、その後、ＯＲ回路６８の出力が論理０になると（ＦＰＧＡ２７〜２９からのトレースデータの読出し処理が終了すると）、リセットされ、システム・クロックＳＣＬＫのカウントを再び開始する。そして、カウント値１を出力する時、同時に被検証回路の動作クロックＣＬＯＣＫを出力する。
【００８４】
立下り検出回路６９は、ＯＲ回路６８の出力の立下りを検出し、トレース・カウンタ７０は、立下り検出回路６９によるＯＲ回路６８の出力の立下り検出回数をカウントし、立下り検出回路６９がＯＲ回路６８の出力の立下りを検出する毎に、エミュレーション・サイクル数信号Ｔ＿Ｃycleをインクリメントする。
【００８５】
ＦＰＧＡ制御部４５では、レジスタ７１は、動作モード信号ＭＯＤＥが１の時に、内部レジスタ状態変化検出信号Ｓ＿Ｈ０to１５をラッチする。また、レジスタ７２は、動作モード信号ＭＯＤＥが１の時に、システム・クロックＳＣＬＫの立ち上がりで１をセットし、その出力である内部レジスタ読出し期間表示信号ＭＥＭ＿ＥＮを１とする。
【００８６】
この結果、ゲート回路７３は、リード／ライト信号ＭＥＭ＿ＷＲを論理１（ライト側）にすると共に、セレクト・カウンタ７４及びグループ・カウンタ７５は活性状態とされる。なお、レジスタ７１は、ライトデータ・セット信号ＷＲ＿ＳＥＴが論理１になると、内部レジスタ状態変化検出信号Ｈ＿ＲＥＧの全ビットを論理１とする。
【００８７】
セレクト・カウンタ７４は、活性化されると、システム・クロックＳＣＬＫをカウントし、マルチプレクサ制御信号ＳＥＬＥＣＴの下位４ビットＳ＿ＯＵＴを出力する。比較器７６は、セレクト・カウンタ７４の出力Ｓ＿ＯＵＴと、メモリ６５にグループ毎に設定されたＹ値のうち、現在選択されているグループのＹ値との比較を行い、一致した時（現在選択されているグループからのトレースデータの読出し処理が終了した時）、一致信号Ｙ＿ＣＭＰを論理１とする。
【００８８】
セレクト・カウンタ７４及びグループ・カウンタ７５は、ＯＲ回路７７の出力を入力し、セレクト・カウンタ７４は、ＯＲ回路７７の出力が論理１となると、リセットされ、グループ・カウンタ７５は、ＯＲ回路７７の出力が論理１になるごとに、出力Ｇ＿ＯＵＴをインクリメントする。
【００８９】
グループ・カウンタ７５の出力Ｇ＿ＯＵＴは、マルチプレクサ制御信号Ｓ＿ＳＥＬＥＣＴの上位４ビットとしてＦＰＧＡ制御部４５から出力されると共に、メモリ６５に転送され、メモリ６５は、グループ・カウンタ７５の出力Ｇ＿ＯＵＴが示すグループのＹ値を出力する。
【００９０】
デコーダ７８は、グループ・カウンタ７５の出力Ｇ＿ＯＵＴをデコードして、グループ・カウンタ７５の出力Ｇ＿ＯＵＴがグループｊを示している時は、出力端子７８−ｊを論理１、その他の出力端子を論理０とする。
【００９１】
論理回路７９は、グループ・カウンタ７５の出力Ｇ＿ＯＵＴが示すグループの内部レジスタ状態変化検出信号が０であるか否かを検出するものであり、８０−ｑはデコーダ７８の各出力端子７８−ｑと内部レジスタ状態変化検出信号Ｈ＿ＲＥＧの対応するビットの論理値とをＡＮＤ処理するＡＮＤ回路（ＡＮＤ回路８０−２〜８０−１４は図示を省略）、８１はＡＮＤ回路８０−０〜８０−１５の出力をＯＲ処理してスキップ信号ＳＫＩＰを出力するＯＲ回路である。
【００９２】
ここで、現在選択されているグループの内部レジスタ状態変化検出信号が論理１の場合（現在選択されているグループの内部レジスタのいずれかに状態変化があった場合）、スキップ信号ＳＫＩＰは論理０となる。これに対して、現在選択されているグループの内部レジスタ状態変化検出信号が論理０の場合（現在選択されているグループの全ての内部レジスタに状態変化が無かった場合）には、スキップ信号ＳＫＩＰは論理１となる。
【００９３】
スキップ信号ＳＫＩＰが論理１になると、ＯＲ回路７７の出力が論理１となり、セレクト・カウンタ７４はリセットされると共に、グループ・カウンタ７５は出力Ｇ＿ＯＵＴをインクリメントする。すなわち、ＦＰＧＡ制御部４５は、現在選択されているグループの全ての内部レジスタに状態変化が無かった場合には、マルチプレクサ制御信号Ｓ＿ＳＥＬＥＣＴの出力の下位４ビットを“００００”とする。
【００９４】
比較器８２は、グループ・カウンタ７５の出力Ｇ＿ＯＵＴとレジスタ６４に記憶されているＮ値とを比較し、グループ・カウンタ７５の出力Ｇ＿ＯＵＴがレジスタ６４に記憶されているＮ値に一致すると、すなわち、グループ・カウンタ７５の出力Ｇ＿ＯＵＴが１５になると、出力値を論理１とする。
【００９５】
したがって、比較器８２の出力が論理１で、かつ、比較器７６の出力が論理１になると、すなわち、例えば、グループ・カウンタ７５の出力Ｇ＿ＯＵＴが１５を示し、セレクト・カウンタ７４の出力値Ｓ＿ＯＵＴがグループ１５のＹ値に一致すると、ＡＮＤ回路８３の出力値＝論理１となり、レジスタ７２はリセットされ、内部レジスタ読出し期間表示信号ＭＥＭ＿ＥＮは論理０となる。
【００９６】
ここで、ＦＰＧＡ２７〜２９の内部レジスタ読出し期間表示信号ＭＥＭ＿ＥＮが全て論理０になると、すなわち、ＦＰＧＡ２７〜２９のグループ０〜グループ１５のトレースデータが全て読み出されてＦＰＧＡ２７〜２９のトレースメモリ４８に格納されると、モード・カウンタ６６がリセットされると共に、立下り検出回路６９はＯＲ回路６８の出力の立下りを検出し、トレース・カウンタ７０は、エミュレーション・サイクル数信号Ｔ＿Ｃycleの値をインクリメントする。
【００９７】
図１０に示す例の場合、内部レジスタ状態変化検出信号Ｈ＿ＲＥＧは「１０１・・・・」であるから、すなわち、内部レジスタ状態変化検出信号Ｈ１が論理１であるから、グループ・カウンタ７５の出力Ｇ＿ＯＵＴが１の時、論理回路７９から出力されるスキップ信号ＳＫＩＰが論理１になり、スキップ信号ＳＫＩＰがセレクト・カウンタ７４をリセットし、グループ・カウンタ７５をインクリメントする。したがって、この例の場合、グループ１のマルチプレクサ制御信号Ｓ＿ＳＥＬＥＣＴが１個のみ発生し、続いて、グループ２のリードサイクルが開始されることになる。
【００９８】
図１１は本実施形態のエミュレーション装置の具体例の動作タイミングを示す図である。本具体例では、動作モード信号ＭＯＤＥが２サイクル目の０となると、被検証回路の動作クロックＣＬＯＣＫが１パルスだけ出力され、被検証回路がエミュレーション動作を行う。次に、動作モード信号ＭＯＤＥが１となると、内部レジスタ状態変化検出信号Ｈ０〜Ｈ１５が出力され、状態メモリ４７に記憶される。
【００９９】
次に、動作モード信号ＭＯＤＥが２とされると、内部レジスタの出力信号が読み出され、トレースメモリ４８に記憶される。エミュレーション終了後、状態メモリ４７及びトレースメモリ４８の内容がホスト・コンピュータにアップロードされる。この場合、ライトデータ・セット信号ＷＲ＿ＳＥＴを論理１に設定した状態で、全体動作制御部３６及びエミュレーション制御部３０〜３２を動作させる。
【０１００】
このように、ライトデータ・セット信号ＷＲ＿ＳＥＴを論理１に設定すると、リード／ライト信号ＭＥＭ＿ＷＲは論理０になり、かつ、レジスタ７１の出力Ｈ＿ＲＥＧの全ビットが論理１に固定される。この状態では、全体動作制御部３６及びエミュレーション制御部３０〜３２は、エミュレーション時と同様のサイクルを発生するが、レジスタ７１の出力Ｈ＿ＲＥＧの全ビットが論理１に固定されているのでグループを跳ばすことは無く、データが記憶されている可能性があるトレースメモリ４８の全領域がリードされることになる。
【０１０１】
この時、トライステート・バッファ６２も非活性状態となると共に、トライステート・バッファ６３も非活性状態となるため、スイッチ５９〜６１は全てＯＦＦにされるので、バスが衝突することなく、状態メモリ４７及びトレースメモリ４８の内容がホスト・コンピュータへアップロードされる。
【０１０２】
なお、被検証回路が複数の機能ブロック、例えば、３個の機能ブロックＡ、Ｂ、Ｃを有している場合、図１２に示すように、３個のＦＰＧＡ２７、２８、２９が機能ブロックＡ、Ｂ、Ｃの一部分をそれぞれ持つように分割する場合には、エミュレーション速度が内部読出し処理の最も遅いＦＰＧＡに依存することから、全てのＦＰＧＡ２７、２８、２９に均等に本実施形態の効果を得るように分割することになるので、安定的に高速なエミュレーションを実現することができる。
【０１０３】
以上のように、本実施形態によれば、被検証回路をＮ＋１個のグループを有する３個の部分回路に分割して３個のＦＰＧＡ２７〜２９に割り振ってマッピングし、被検証回路の内部レジスタの状態変化の検出及び被検証回路の内部レジスタの出力信号のリードサイクルの発生をグループ単位で行い、各グループでは、内部レジスタの出力信号をＹ＋１個の束にして並列に出力し、かつ、全ての内部レジスタが状態変化を起こさなかったグループについてはリードサイクルを発生しないようにしているので、被検証回路の内部レジスタの読出し時間を短縮することができる。
【０１０４】
例えば、本実施形態の具体例では、ＦＰＧＡ１個当たりの内部レジスタの数は１６（グループ数）×１６（マルチプレクサ５３の選択数）×１００（１束の出力信号数）＝２５，６００個であり、全てのグループ０〜グループ１５で内部レジスタの状態変化があったとすると、内部レジスタ読出しモードでは、１６×１６＝２５６個のシステム・クロックＳＣＬＫが使用されることになる。これに対して、２５，６００個の内部レジスタを図１７Ｂに示す従来方法で読み出す場合には、２５，６００個のシフトクロックＳＦＣＬＫを必要とする。したがって、本実施形態によれば、被検証回路の内部レジスタの読出し時間を図１７Ｂに示す従来方法の１／１００に短縮することができる。
【０１０５】
また、例えば、被検証回路が複数の機能ブロック、例えば、３個の機能ブロックＡ、Ｂ、Ｃを有している場合において、図１２に示すように、３個のＦＰＧＡ２７〜２９が機能ブロックＡ、Ｂ、Ｃの一部分をそれぞれ持つように分割する場合には、ＦＰＧＡ毎に約１／３の５個又は６個のグループについては、内部レジスタ状態の読出しを省略できる。この場合、必要なシステム・クロックＳＣＬＫは、１６×（１６−５）＝１７６個、又は、１６×（１６−６）＝１６０個で足りる。したがって、更なる高速化を図ることができる。
【０１０６】
また、図１７Ｂに示す従来方法では、被検証回路の内部レジスタ数と同数のレジスタ（Ｄフリップフロップ回路）が必要になるが、本実施形態では、ＦＰＧＡ２７〜２９への追加回路は、論理回路のみであり、レジスタを追加することがないので、ＦＰＧＡ２７〜２９の容量を圧迫することがない。
【０１０７】
なお、本実施形態では、３個のＦＰＧＡ２７〜２９を設けるようにしているが、ＦＰＧＡ２７〜２９の合計容量を有する１個のＦＰＧＡを設けるようにしても良い。
【０１０８】
また、本実施形態では、被検証回路を複数のグループを有する３個の部分回路に分割して３個のＦＰＧＡ２７〜２９に割り振ってマッピングするようにしているが、被検証回路をグループを有しない３個の部分回路に分割して３個のＦＰＧＡ２７〜２９に割り振ってマッピングするようにしても良い。このようにする場合には、内部レジスタ読出し時間は、本実施形態の場合よりも長くなるが、図１７Ｂに示す従来方法よりも短くなる。
【０１０９】
また、本実施形態では、ＦＰＧＡを使用した場合を例にして説明しているが、本発明は、ＦＰＧＡ以外のプログラマブル・デバイスを使用する場合にも適用することができるものである。
【０１１０】
（第２実施形態・・図１３〜図１５）
図１３は本発明のエミュレーション装置の第２実施形態を示す回路図である。
本発明のエミュレーション装置の第２実施形態は、本発明のエミュレーション方法の第２実施形態を実行するものであり、本発明のエミュレーション方法の第２実施形態は、被検証回路をＮ＋１個のグループを有するＮ＋１個の部分回路に分割し、これらＮ＋１個の部分回路を１個ずつ順に１個のＦＰＧＡにマッピングして被検証回路の動作検証を行うというものである。
【０１１１】
図１３中、８４は装置本体、８５はプログラマブル・デバイスであるＦＰＧＡ、８６−０〜８６−Ｎは被検証回路を分割してなる各部分回路のコンフィグレーション・データを格納するコンフィグレーション・メモリ、８７−０〜８７−Ｎは各部分回路の各グループの内部レジスタ状態変化検出信号Ｈ０〜ＨＮを格納する状態メモリ、８８−０〜８８−Ｎは各部分回路のトレースデータを格納するトレースメモリである。
【０１１２】
８９はシステム・クロックＳＣＬＫを生成するクロック生成回路、９０は制御部である。本発明のエミュレーション装置の第２実施形態では、ＦＰＧＡが１個であるため、本発明のエミュレーション装置の第１実施形態が備える全体動作制御部３６とエミュレーション制御部３０〜３２のＦＰＧＡ制御部４５は、制御部９０として１個に統合されている。
【０１１３】
９１はコンフィグレーション・メモリ８６−０〜８６−Ｎの中からＦＰＧＡ８５にマッピングすべき部分回路のコンフィグレーション・データを選択してＦＰＧＡ８５に転送するマルチプレクサ、９２は状態メモリ８７−０〜８７−Ｎの中から内部レジスタ状態検出信号Ｈ０〜ＨＮの転送先の状態メモリを選択するスイッチング・デバイスである。
【０１１４】
９３はトレースメモリ８８−０〜８８−Ｎの中からトレースデータの転送先のトレースメモリを選択するスイッチング・デバイス、９４は部分回路の入出力配線情報を記憶する記憶装置、９５はＦＰＧＡ８５に現にマッピングした部分回路と先にマッピングした部分回路との入出力配線上の整合を図るための配線用回路、９６は被検証回路本来の入出力信号用のバッファである。
【０１１５】
９７は動作モード信号ＭＯＤＥにより制御され、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡの転送と、ＦＰＧＡ８５から出力される内部レジスタ状態変化検出信号Ｈ０〜ＨＮのスイッチング・デバイス９２への転送と、被検証回路に設定すべきトレースデータの転送及び被検証回路から出力されるトレースデータのスイッチング・デバイス９３への転送を切り替えて行うスイッチング・デバイスである。
【０１１６】
ＦＰＧＡ８５の内部構成については、本発明のエミュレーション方法の第１実施形態の場合とほぼ同様であるが、内部レジスタの状態を設定するための回路が追加されている点が異なり、内部レジスタ設定用のクロックとしてシステム・クロックＳＣＬＫをＦＰＧＡ８５に入力するようにしている。
【０１１７】
図１４は本実施形態のエミュレーション装置の動作タイミングを示す図であり、図１４Ａは被検証回路の動作クロックＣＬＯＣＫの波形、図１４Ｂはエミュレーション・サイクル数信号Ｔ＿Ｃycleの内容、図１４Ｃは動作モード信号ＭＯＤＥの内容を示している。
【０１１８】
本実施形態では、第１エミュレーション・サイクルは、部分回路０から部分回路Ｎについて、順に、コンフィグレーション・データの設定、エミュレーション動作、内部レジスタの状態変化の検出、内部レジスタの出力信号の読出しが順に行われ、第２エミュレーション・サイクル以降は、部分回路０から部分回路Ｎについて、順に、コンフィグレーション・データの設定、内部レジスタの設定、エミュレーション動作、内部レジスタの状態変化の検出、内部レジスタの出力信号の読出しが順に行われる。
【０１１９】
すなわち、例えば、エミュレーション・サイクルＣでは、まず、部分回路０のコンフィグレーション・データがマルチプレクサ９１を介してＦＰＧＡ８５に転送され、部分回路０のマッピングが行われる。
【０１２０】
次に、トレースメモリ８８−０からエミュレーション・サイクルＣ−１における部分回路０のトレースデータがスイッチング・デバイス９３及びスイッチング・デバイス９７を介して内部レジスタ設定用データとしてＦＰＧＡ８５に供給され、部分回路０の内部レジスタの設定が行われる。
【０１２１】
次に、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡがバッファ９６、配線用回路９５及びスイッチング・デバイス９７を介してＦＰＧＡ８５に供給され、更に、被検証回路の動作クロックＣＬＯＣＫが１個供給され、部分回路０のエミュレーション動作が行われる。
【０１２２】
次に、部分回路０のグループ０〜グループＮの内部レジスタ状態変化検出信号Ｈ０〜ＨＮがスイッチング・デバイス９７及びスイッチング・デバイス９２を介して状態メモリ８７−０に転送されて記憶される。
【０１２３】
次に、部分回路０のグループ０〜グループＮの内部レジスタの出力信号がスイッチング・デバイス９２及びスイッチング・デバイス９３を介してトレースメモリ８８−０に転送されて記憶される。なお、各グループ０〜グループＮでは、出力信号はＹ＋１個の束にされて、１束ごとにＭ個の出力信号が並列出力されることは、本発明のエミュレーション方法の第１実施形態の場合と同様である。
【０１２４】
また、制御部９０が、内部レジスタ状態変化検出信号が論理０を示したグループ、すなわち、内部レジスタに状態変化の無かったグループに対するマルチプレクサ制御信号ＳＥＬＥＣＴを発生しないことも、本発明のエミュレーション方法の第１実施形態の場合と同様である。
【０１２５】
その後、部分回路１〜部分回路Ｎについて同様の動作が行われ、部分回路Ｎについて内部レジスタ読出し動作が終了すると、次のエミュレーション・サイクルＣ＋１に移行し、部分回路０〜部分回路Ｎについて同様の動作が繰り返される。
【０１２６】
なお、本実施形態では、図２に示すＦＰＧＡ端子４４に対応する端子は、内部レジスタ設定モード時には、内部レジスタ設定データの入力用に使用され、エミュレーション動作モード時には、被検証回路本来の入出力信号Ｉ／Ｏ＿ＤＡＴＡの入出力用に使用され、内部レジスタ状態変化検出モード時には、内部レジスタ状態変化検出信号Ｈ０〜ＨＮの出力用に使用され、内部レジスタ読出しモード時には、マルチプレクサ制御信号ＳＥＬＥＣＴの入力及び内部レジスタの出力信号ＲＥＧ＿ＤＡＴＡの出力用に使用される。
【０１２７】
図１５はＦＰＧＡ８５にマッピングされるトレースデータ入出力回路の構成例を示す回路図である。図１５中、９８はトレースデータ入出力回路であり、内部レジスタ設定用回路を含むものである。
【０１２８】
また、９９はスイッチング・デバイスである。スイッチング・デバイス９９は、図３に示すマルチプレクサ５３に代わるものであり、内部レジスタ読出しモード時には、マルチプレクサ５３と同様に動作し、内部レジスタ４９−０１〜４９―ＹＭから出力されるＭ×Ｙ＋１個の出力信号をＭ個ずつ順に選択して出力し、内部レジスタ設定モード時には、トレースメモリ８８−０〜８８−Ｎのいずれかから転送されてくる内部レジスタ設定用データ（トレースデータ）を内部レジスタ読出しモード時とは逆方向の経路で対応する内部レジスタに分配するものである。
【０１２９】
１００−０１〜１００−０３は内部レジスタ４９−０１〜４９−０３に対応して設けられているトレースデータ転送用のトライステート・バッファ、１０１−０１〜１０１−０３は内部レジスタ４９−０１〜４９−０３に対応して設けられている内部レジスタ設定用データ転送用のトライステート・バッファであり、内部レジスタ４９−０４〜４９−ＹＭと、内部レジスタ４９−０４〜４９−ＹＭに対応して設けられているトライステート・バッファ１００−０４〜１００−ＹＭ及び内部レジスタ設定用データ転送用のトライステート・バッファ１０１−０４〜１０１−ＹＭは、図示を省略している。
【０１３０】
１０２は動作モード信号ＭＯＤＥをデコードして内部レジスタ設定モード信号を出力するデコーダであり、デコーダ１０２は、動作モード信号ＭＯＤＥが内部レジスタ設定モードを示している時には、内部レジスタ設定モード信号を論理１、その他の時には、内部レジスタ設定モード信号を論理０とする。
【０１３１】
１０３−０は内部レジスタ４９−０１〜４９−１Ｍに対応して設けられているシステム・クロック供給制御回路であり、内部レジスタ設定モード信号とマルチプレクサ制御信号ＳＥＬＥＣＴを入力し、内部レジスタ設定モード信号が論理１とされている時、かつ、マルチプレクサ制御信号ＳＥＬＥＣＴが内部レジスタ４９−０１〜４９−１Ｍを選択している時のみ、論理１を出力するものである。
【０１３２】
１０４−０はシステム・クロック供給制御回路１０３の出力をゲート信号としてシステム・クロックＳＣＬＫの通過を制御するＡＮＤ回路、１０５−０はＡＮＤ回路１０４−０の出力と被検証回路の動作クロックＣＬＯＣＫとをＯＲ処理するＯＲ回路である。なお、内部レジスタ４９−１１〜４９−ＹＭに対応して設けられているシステム・クロック供給制御回路１０３−１〜１０３−Ｙ、ＡＮＤ回路１０４−１〜１０４−Ｙ及びＯＲ回路１０５−１〜１０５−Ｙは図示を省略している。
【０１３３】
本実施形態のエミュレーション方法では、内部レジスタ設定モード時には、内部レジスタの入力側に内部レジスタ設定用データをアサインし、この状態で、システム・クロックＳＣＬＫを１クロック供給することで、内部レジスタの出力側に前エミュレーション・サイクル時の出力信号が設定される。なお、ＦＰＧＡによっては、ＳＥＴポートを持つ内部レジスタを使用することができるものがあるが、その場合には、内部レジスタ設定用データを直接ＳＥＴポートにつなぐことで同等の機能を実現できる。
【０１３４】
以上のように、本実施形態によれば、被検証回路をＮ＋１個のグループを有するＮ＋１個の部分回路に分割して１個のＦＰＧＡ８５に順にマッピングするようにし、被検証回路の内部レジスタの状態変化の検出及び被検証回路の内部レジスタの出力信号のリードサイクルの発生をグループ単位で行い、各グループでは、内部レジスタの出力信号をＹ個の束にして並列に出力し、かつ、全ての内部レジスタが状態変化を起こさなかったグループについてはリードサイクルを発生しないようにしているので、大規模回路を１個のＦＰＧＡを使用して動作検証することができ、かつ、内部レジスタの出力信号をシリアルで出力する方法やグループ化をしない方法に比べて被検証回路の内部レジスタの読出し時間を短縮することができる。
【０１３５】
なお、本実施形態では、被検証回路をＮ＋１個のグループを有するＮ＋１個の部分回路に分割し、各部分回路を順にＦＰＧＡ８５にマッピングするようにしているが、被検証回路をグループを有しないＮ＋１個の部分回路に分割し、各部分回路を順にＦＰＧＡ８５にマッピングするようにしても良い。また、本実施形態では、ＦＰＧＡを使用した場合を例にして説明しているが、本発明は、ＦＰＧＡ以外のプログラマブル・デバイスを使用する場合にも適用することができるものである。
【０１３６】
ここで、本発明を整理すると、本発明には、以下のエミュレーション方法及び装置が含まれる。
【０１３７】
（付記１）被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション方法であって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないことを特徴とするエミュレーション方法。
【０１３８】
（付記２）前記被検証回路を複数のグループに分割し、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記１記載のエミュレーション方法。
【０１３９】
（付記３）前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを使用し、前記被検証回路を複数の部分回路に分割して前記複数のプログラマブル・デバイスに割り振ってマッピングし、前記複数の内部レジスタの状態変化の検出を各部分回路を単位として行うことを特徴とする付記１記載のエミュレーション方法。
【０１４０】
（付記４）前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを使用し、前記被検証回路を複数のグループを有する複数の部分回路に分割して前記複数のプログラマブル・デバイスに割り振ってマッピングし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記１記載のエミュレーション方法。
【０１４１】
（付記５）前記被検証回路を複数の部分回路に分割し、各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせることを特徴とする付記１記載のエミュレーション方法。
【０１４２】
（付記６）前記被検証回路を複数のグループを有する複数の部分回路に分割し、各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記１記載のエミュレーション方法。
【０１４３】
（付記７）前記複数の内部レジスタの出力信号を複数本ずつの束に分け、各束の出力信号を順に選択して出力する選択手段を前記プログラマブル・デバイスに設けることを特徴とする付記１、２、３、４、５又は６記載のエミュレーション方法。
【０１４４】
（付記８）前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子及び前記複数の内部レジスタの出力信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記１、２、３又は４記載のエミュレーション方法。
【０１４５】
（付記９）前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子、前記複数の内部レジスタの出力信号用の端子及び前記複数の内部レジスタに設定する信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記５又は６記載のエミュレーション方法。
【０１４６】
（付記１０）エミュレーション・サイクル毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を状態メモリに記憶する工程と、エミュレーション・サイクル毎に、前記複数の内部レジスタの出力信号をトレースメモリに記憶する工程と、前記状態メモリの内容から前記複数の内部レジスタの出力信号のリードサイクルを省略したグループ又は部分回路を確認し、該グループ又は部分回路については、前エミュレーション・サイクルでの出力信号を現エミュレーション・サイクルでの出力信号として補間する工程を有することを特徴とする付記２、３、４、５又は６記載のエミュレーション方法。
【０１４７】
（付記１１）各プログラマブル・デバイス毎に、状態メモリとトレースメモリを設け、各プログラマブル・デバイスから得られる前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を各プログラマブル・デバイスに対応して設けられている状態メモリに記憶し、各プログラマブル・デバイスから得られる前記複数の内部レジスタの出力信号を各プログラマブル・デバイスに対応して設けられているトレースメモリに記憶することを特徴とする付記３又は４記載のエミュレーション方法。
【０１４８】
（付記１２）１エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も処理時間の遅いプログラマブル・デバイスの処理が完了するのを待って、次のエミュレーション・サイクルに移ることを特徴とする付記１１記載のエミュレーション方法。
【０１４９】
（付記１３）１エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も遅いプログラマブル・デバイスの処理が完了するまでの間に、先に処理が終了しているプログラマブル・デバイスに対応して設けられている状態メモリ及びトレースメモリの内容の一部又は全部をホスト・コンピュータにアップロードすることを特徴とする付記１２記載のエミュレーション方法。
【０１５０】
（付記１４）前記プログラマブル・デバイスにコンフィグレーション・データをマッピングするサイクルと、前記複数の内部レジスタに前エミュレーション・サイクル時に退避させた出力信号を設定するサイクルと、前記被検証回路の動作サイクルと、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶するサイクルと、前記複数の内部レジスタの出力信号をトレースメモリに記憶するサイクルを順に発生する工程を有することを特徴とする付記５又は６記載のエミュレーション方法。
【０１５１】
（付記１５）前記複数の内部レジスタの出力信号を複数本ずつの束に分け、各束の出力信号を順に選択して出力する選択手段を前記プログラマブル・デバイスに設け、前記複数の内部レジスタに前記エミュレーション・サイクル時に退避させた出力信号を設定するサイクルでは、束とされている出力信号を出力した複数の内部レジスタ毎に、前記退避させた出力信号を前記選択手段の内部を逆方向に伝送させて各内部レジスタの入力側にアサートして一度に設定することを特徴とする付記１４記載のエミュレーション方法。
【０１５２】
（付記１６）被検証回路をプログラマブル・デバイスにマッピングすることにより、前記被検証回路の動作検証を行うエミュレーション装置であって、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しない制御手段を有することを特徴とするエミュレーション装置。
【０１５３】
（付記１７）前記被検証回路は、複数のグループに分割されており、前記制御手段は、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記１６記載のエミュレーション装置。
【０１５４】
（付記１８）前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振ってマッピングされることを前提とし、前記複数の内部レジスタの状態変化の検出を各部分回路を単位として行うことを特徴とする付記１６記載のエミュレーション装置。
【０１５５】
（付記１９）前記プログラマブル・デバイスとして、複数のプログラマブル・デバイスを有し、前記制御手段は、前記被検証回路が複数のグループを有する複数の部分回路に分割されて前記複数のプログラマブル・デバイスに割り振られてマッピングされることを前提とし、各プログラマブル・デバイスでは、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記１６記載のエミュレーション装置。
【０１５６】
（付記２０）前記制御手段は、複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせることを特徴とする付記１６記載のエミュレーション装置。
【０１５７】
（付記２１）前記制御手段は、複数のグループを有する複数の部分回路に分割された前記被検証回路の各部分回路を前記プログラマブル・デバイスに順にマッピングし、各部分回路毎にエミュレーション動作を行わせ、前記複数の内部レジスタの出力信号のリードサイクルをグループ順に発生することを特徴とする付記１６記載のエミュレーション装置。
【０１５８】
（付記２２）前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路の本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子及び前記複数の内部レジスタの出力信号用の端子として兼用するように信号の伝送を行う機能を有することを特徴とする付記１６、１７、１８又は１９記載のエミュレーション装置。
【０１５９】
（付記２３）前記プログラマブル・デバイスの入出力端子の一部を、前記被検証回路の本来の入出力信号用の端子、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号用の端子、前記複数の内部レジスタの出力信号用の端子及び前記複数の内部レジスタに設定する信号用の端子として兼用するように信号の伝送を行うことを特徴とする付記２０又は２１記載のエミュレーション装置。
【０１６０】
（付記２４）エミュレーション・サイクル毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を状態メモリに記憶する工程と、エミュレーション・サイクル毎に、前記複数の内部レジスタの出力信号をトレースメモリに記憶する工程と、前記状態メモリの内容から前記複数の内部レジスタの出力信号のリードサイクルを省略したグループ又は部分回路を確認し、該グループ又は部分回路については、前エミュレーション・サイクルでの出力信号を現エミュレーション・サイクルでの出力信号として補間する工程を実行する機能を有することを特徴とする付記１７、１８、１９、２０又は２１記載のエミュレーション装置。
【０１６１】
（付記２５）各プログラマブル・デバイス毎に、前記複数の内部レジスタに状態変化があったか否かを示す内部レジスタ状態変化検出信号を記憶する状態メモリと、前記複数の内部レジスタの出力信号を記憶するトレースメモリを備えていることを特徴とする付記１８又は１９記載のエミュレーション装置。
【０１６２】
（付記２６）１エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も処理時間の遅いプログラマブル・デバイスの処理が完了するのを待って、次のエミュレーション・サイクルに移る機能を有することを特徴とする付記２５記載のエミュレーション装置。
【０１６３】
（付記２７）１エミュレーション・サイクルの処理時間がプログラマブル・デバイス毎に異なる場合、最も遅いプログラマブル・デバイスの処理が完了するまでの間に、先に処理が終了しているプログラマブル・デバイスの状態メモリ及びトレースメモリの内容の一部又は全部をホスト・コンピュータにアップロードする機能を有することを特徴とする付記２６記載のエミュレーション装置。
【０１６４】
【発明の効果】
以上のように、本発明によれば、エミュレーション・サイクル毎に、出力信号をトレースデータとする複数の内部レジスタの状態変化を検出し、前記複数の内部レジスタに状態変化を起こしたものが無かった場合には、前記複数の内部レジスタの出力信号のリードサイクルを発生しないとしているので、プログラマブル・デバイスからの被検証回路のトレースデータの取り出しを小規模な回路で高速に行うことができる。
【図面の簡単な説明】
【図１】本発明のエミュレーション装置の第１実施形態を示す回路図である。
【図２】本発明のエミュレーション装置の第１実施形態が備えるＦＰＧＡ及びエミュレーション制御部の構成例を示す回路図である。
【図３】本発明のエミュレーション装置の第１実施形態が備えるＦＰＧＡにマッピングされるグループの構成例を示す回路図である。
【図４】図３に示すグループの一部分を拡大して示す回路図である。
【図５】本発明のエミュレーション装置の第１実施形態が備えるＦＰＧＡにマッピングされる内部レジスタ状態変化検出回路の動作タイミングを示す図である。
【図６】本発明のエミュレーション装置の第１実施形態の動作タイミングを示す図である。
【図７】本発明のエミュレーション装置の第１実施形態のエミュレーション動作サイクルのみを示す図である。
【図８】本発明のエミュレーション装置の第１実施形態が備えるＦＰＧＡ及びエミュレーション制御部の具体的構成例を示す回路図である。
【図９】本発明のエミュレーション装置の第１実施形態が備える全体動作制御部及びＦＰＧＡ制御部の具体的構成例を示す回路図である。
【図１０】本発明のエミュレーション装置の第１実施形態が備える全体動作制御部及びＦＰＧＡ制御部の動作タイミングを示す図である。
【図１１】本発明のエミュレーション装置の第１実施形態の具体例の動作タイミングを示す図である。
【図１２】本発明のエミュレーション装置の第１実施形態が備えるＦＰＧＡにマッピングする被検証回路の分割例を示す図である。
【図１３】本発明のエミュレーション装置の第２実施形態を示す回路図である。
【図１４】本発明のエミュレーション装置の第２実施形態の動作タイミングを示す図である。
【図１５】本発明のエミュレーション装置の第２実施形態が備えるＦＰＧＡにマッピングすべきトレースデータ入出力回路の構成例を示す回路図である。
【図１６】従来のエミュレーション装置の一例を示す回路図である。
【図１７】ＦＰＧＡの内部信号を外部に読み出す代表的な従来方法を説明するための回路図である。
【符号の説明】
４２〜４４…ＦＰＧＡ端子
４９−ｉｋ…内部レジスタ
５０−ｉｋ…論理回路
５１−ｉｋ…内部レジスタ状態変化検出回路
【図１】
2004199425.tif 000003
【図２】
2004199425.tif 000004
【図３】
2004199425.tif 000005
【図４】
2004199425.tif 000006
【図５】
2004199425.tif 000007
【図６】
2004199425.tif 000008
【図７】
2004199425.tif 000009
【図８】
2004199425.tif 000010
【図９】
2004199425.tif 000011
【図１０】
2004199425.tif 000012
【図１１】
2004199425.tif 000013
【図１２】
2004199425.tif 000014
【図１３】
2004199425.tif 000015
【図１４】
2004199425.tif 000016
【図１５】
2004199425.tif 000017
【図１６】
2004199425.tif 000018
【図１７】
2004199425.tif 000019