(57)【要約】【課題】  エミュレーション回路と捕獲回路を含む、集積回路設計をエミュレートするためのプロセッサベースのエミュレーションシステムに関する。【解決手段】  捕獲回路は、エミュレーション回路からの処理結果を捕獲可能である。捕獲された処理結果は、集積回路設計内の機能エラーを判定するために使用可能である。プロセッサベースのエミュレーションシステムは、捕獲回路を含んでいるため、エミュレーション回路は、処理結果を捕獲するために用いられない。【選択図】    図３
2006338144.tif 000002
【特許請求の範囲】
【請求項１】
集積回路設計をエミュレートするためのシステムであって、
集積回路設計をエミュレートするための複数のプロセッサクラスタと、
集積回路設計のエミュレーションの間にデータを捕獲するための捕獲回路と、
捕獲されたデータを蓄積するためのメモリとを備え、
各プロセッサクラスタは、捕獲回路と電気的に通信可能であり、捕獲回路は、メモリと電気的に通信可能である。
【請求項２】
請求項１のシステムであって、メモリは、ランダムアクセスメモリである。
【請求項３】
請求項１のシステムであって、各プロセッサクラスタは、集積回路設計をエミュレートするように設計された複数のプロセッサを含んでいる。
【請求項４】
請求項１のシステムであって、各プロセッサクラスタは、
複数のプロセッサと、
複数のプロセッサと電気的に通信可能であるデータスタックを含んでいる。
【請求項５】
請求項１のシステムであって、各プロセッサクラスタは、
複数のプロセッサと、
複数のプロセッサと電気的に通信可能であるデータスタックと、
データスタックと電気的に通信可能である複数のマルチプレクサを含んでいる。
【請求項６】
請求項１のシステムであって、各プロセッサクラスタは、
複数のプロセッサと、
複数のプロセッサと電気的に通信可能であるデータスタックと、
データスタックと電気的に通信可能である複数のマルチプレクサと、
複数のマルチプレクサと電気的に通信可能である複数のレジスタを含んでいる。
【請求項７】
請求項１のシステムであって、プロセッサクラスタは、通信リンクを介して、データを互いに転送可能である。
【請求項８】
請求項１のシステムであって、捕獲回路は、ＦＩＦＯ（ファーストイン−ファーストアウト）メモリを含んでいる。
【請求項９】
請求項１のシステムであって、プロセッサクラスタ及び捕獲回路は、単一の集積回路に実装されている。
【請求項１０】
プロセッサベースのエミュレーションシステムであって、
集積回路設計からの論理を実行する複数のエミュレーションプロセッサを有する複数のプロセッサクラスタと、
集積回路設計のエミュレーションの間に、プロセッサクラスタによって生成されるデータを捕獲するように動作可能な捕獲回路とを備え、
各プロセッサクラスタは、捕獲回路に対する専用の接続を有している。
【請求項１１】
請求項１０のプロセッサベースのエミュレーションシステムであって、さらに、捕獲回路と電気的に通信可能であるメモリを有している。
【請求項１２】
請求項１０のプロセッサベースのエミュレーションシステムであって、各プロセッサクラスタは、集積回路設計をエミュレートするように設計された複数のプロセッサを含んでいる。
【請求項１３】
請求項１０のプロセッサベースのエミュレーションシステムであって、各プロセッサクラスタは、
複数のプロセッサと、
複数のプロセッサと電気的に通信可能であるデータスタックを含んでいる。
【請求項１４】
請求項１０のプロセッサベースのエミュレーションシステムであって、各プロセッサクラスタは、
複数のプロセッサと、
複数のプロセッサと電気的に通信可能であるデータスタックと、
データスタックと電気的に通信可能である複数のマルチプレクサを含んでいる。
【請求項１５】
請求項１０のプロセッサベースのエミュレーションシステムであって、各プロセッサクラスタは、
複数のプロセッサと、
複数のプロセッサと電気的に通信可能であるデータスタックと、
データスタックと電気的に通信可能である複数のマルチプレクサと、
複数のマルチプレクサと電気的に通信可能である複数のレジスタを含んでいる。
【請求項１６】
請求項１０のプロセッサベースのエミュレーションシステムであって、プロセッサクラスタは、通信リンクを介して、互いにデータを転送可能である。
【請求項１７】
請求項１０のプロセッサベースのエミュレーションシステムであって、捕獲回路は、ＦＩＦＯ（ファーストイン−ファーストアウト）メモリを含んでいる。
【請求項１８】
請求項１０のプロセッサベースのエミュレーションシステムであって、プロセッサクラスタ及び捕獲回路は、単一の集積回路に実装されている。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２００４年６月１日に出願された米国仮出願番号６０／５７６１２３に対する優先権を主張する。この仮出願に対する優先権は、明白に請求され、また、仮出願の開示は、その全てを参照として本明細書に組み込まれている。
【技術分野】
【０００２】
本明細書の開示は、プロセッサベースのエミュレーションシステム(processor-based  emulation  system)に関し、特に、専用の捕獲回路(capture  circuitry)を有するプロセッサベースのエミュレーションシステムに関する。また、プロセッサベースのエミュレーションシステムの可視化方法に関する。
【背景技術】
【０００３】
ハードウェアエミュレーションシステムは、電子回路設計を、チップあるいは印刷回路ボードとして組み立てる前に検証するために設計される。典型的なエミュレーションシステムは、プログラム可能な相互接続チップによって相互接続されたプログラム可能な論理チップあるいはプログラム可能に相互接続されるプロセッサチップを用いる。
プログラム可能な論理チップ（例えば、フィールドプログラマブルゲートアレイ，ＦＰＧＡ）ベースのエミュレーションシステムでは、ユーザ設計（しばしば、“検証対象の設計”（”ＤＵＶ“）あるいは“検査対象の設計”（“ＤＵＴ”）と呼ばれる）に含まれている論理は、ＤＵＶ内に実装された論理が、プログラム可能な論理装置内で実際の動作形態をとるように、論理チップ内にプログラムされる。
プロセッサベースのエミュレーションシステムでは、ユーザ設計は、設計の出力を計算することによって、その機能がプロセッサ内に生成されているように処理される。論理自身は、プロセッサベースのエミュレーションシステム内に実装されない。これは、ＤＵＶが、プロセッサ内で、実際の動作形態をとらないことを意味する。しかしながら、プロセッサの出力は、実際の装置内の論理の出力と等しい。
プログラム可能な論理装置を用いる、ハードウェア論理エミュレーションシステムの例は、例えば、米国特許第５１０９３５３号、５０３６４７３号、５４７５８３０号及び５９６０１９１号で見ることができる。米国特許第５１０９３５３号、５０３６４７３号、５４７５８３０号及び５９６０１９１号は、参照として本明細書に組み込まれている。
プロセッサチップを用いるハードウェア論理エミュレーションシステムの例は、例えば、米国特許第５５５１０１３号、第６０３５１１７号及び６０５１０３０号に開示されている。米国特許第５５５１０１３号、第６０３５１１７号及び６０５１０３０号は、参照として本明細書に組み込まれている。
【特許文献１】米国特許第５１０９３５３号
【特許文献２】米国特許第５０３６４７３号
【特許文献３】米国特許第５４７５８３０号
【特許文献４】米国特許第５９６０１９１号
【特許文献５】米国特許第５５５１０１３号
【特許文献４】米国特許第６０３５１１７号
【特許文献５】米国特許第６０５１０３０号
【０００４】
トレーシング(tracing)とも呼ばれている可視化は、プロセッサベースのエミュレーションシステムでは重要な特徴である。可視化は、ユーザに、エミュレートされる設計内の要素の状態を捕獲及び観察させるための能力である。
ケイデンスデザインシステムズが“フル−ビジョン(Full-Vision)”と呼んでいる、特別の集積回路設計の全てのノードの状態（すなわち、プロセッサ出力）を観察する能力は、機能検証システムにとって非常に重要な特徴である。フル−ビジョンは、ある時間期間、すなわち、多くのクロックサイクルに亘って必要である。エミュレーションの間にノードの内部状態を捕獲することによって、ユーザは、エミュレートされる設計内の行動を観察することができ、それによって、設計をデバッグすることができる。エミュレーションの間にノードの内部状態を観察する能力が無いと、ユーザは、設計内のバグ（欠陥）の原因を理解するのが非常に困難である。
【０００５】
典型的には、フル−ビジョンは、システム内のノードの戦略的な部分を捕獲することによって達成される。そして、それらの出力は、システム内の他のノードの値を計算するために用いられる。これにより、ユーザは、設計の全てのノード上の行動を観察することができる。なお、いくつかの値は、物理的な抽出値（サンプル）であり、他の値は、計算から導き出される。
この戦略的な抽出技術は、ユーザに対して、システム内の任意のノード上の行動の観察を許容しながら、システム内の全てのノードを捕獲するための回路を必要としないため、有利である。
【０００６】
一般的なプロセッサベースのエミュレーションシステムは、設計内の要素の状態を捕獲するためにエミュレーションリソースを用いる。エミュレーションリソースは、検査される集積回路設計（例えば、エミュレーションプロセッサ）をエミュレートするために用いられる回路である。
設計の内部状態を捕獲するために必要なエミュレーションリソースの量は、ささいな量ではない。例えば、フル−ビジョンを達成するためには、エミュレーションリソースの約２０％が用いられる。フル−ビジョンが要求されない場合でも、エミュレーションリソースのかなりの量を、設計の内部状態を捕獲するために用いなければならない。
同様に、エミュレーションに対して使用可能なメモリリソースのかなりの量が、設計の内部状態を捕獲するために用いられる。
したがって、ユーザは、エミュレーション機能あるいは捕獲機能を実行するために、プロセッサリソースの使用とメモリリソースの使用の間で交換を行わなければならない。
【０００７】
状態獲得は、プロセッサベースのエミュレーションシステムにおける他の重要な特徴である。状態獲得によって、ユーザは、一方ではトリガに基づいて他の時間からのデータを無視しながら、“興味がある”時間点でデータを捕獲することができる。トリガは、データの捕獲を開始させる、予め設定されたイベントである。また、状態獲得は、システム内の利用可能な捕獲リソースを用いるための効率の良い方法を提供する。
【０００８】
また、一般的なプロセッサベースのエミュレーションシステムは、状態獲得のためにエミュレーションリソースを用いる。特に、エミュレーションリソースは、トリガ状態が計算されるまで、エミュレーションプロセッサから出力されるデータを蓄積するために用いられる。エミュレーションプロセッサから出力されるデータは、通常、そのデータはトリガ状態が計算される前に利用可能であるため、蓄積されなければならない。
【０００９】
したがって、プロセッサベースのエミュレーションシステムで生成されるデータを捕獲するための、改良された方法及び装置に対する要求がある。
【概要】
【００１０】
本明細書に開示されているさまざまの実施の形態は、改良されたプロセッサベースのエミュレーションシステムを提供する。エミュレーションシステムは、エミュレーションプロセッサ、専用の捕獲リソース及びメモリを有するエミュレーションエンジンを含んでいる。
専用の捕獲リソースは、エミュレーションプロセッサによって生成されたデータを捕獲し、捕獲したデータをメモリに供給するために用いられる。そして、ユーザは、集積回路設計のデバッグを援助するために、メモリ内の捕獲されたデータを検査することができる。
専用の捕獲リソースを提供することによって、エミュレーションプロセッサは、データ捕獲のために用いられない。これにより、より大きな集積回路設計が、定められたエミュレーションエンジン内でエミュレート可能である。
【００１１】
装置及び要素の組み合わせの種々の独創性がある詳細を含む、本明細書に開示されている種々の実施の形態の前述した及び他の好ましい特徴及び利点は、添付の図面を参照してより詳しく説明されており、また、請求項に記載されている。特別の方法及び回路が、例示のためにのみ示され、制限のために示されていないことが理解される。当業者に理解されるように、本明細書に開示されている原理及び特徴は、本発明の概念から逸脱することなく、種々のまた多くの実施の形態で実現可能である。
【発明の詳細な説明】
【００１２】
図面を参照して、本発明の実施の形態を説明する。
【００１３】
プロセッサベースのエミュレーションシステム１００の一例が、図１に示されている。プロセッサベースのエミュレーションシステム１００は、集積回路設計が集積回路内に実際に実装される前に、集積回路設計が、所期のターゲットシステム内でテストされることを可能とする。
プロセッサベースのエミュレーションシステム１００は、ホストコンピュータ１０２と、ターゲットシステム１０６に順次接続されるエミュレーションエンジン１０４を含んでいる。ホストコンピュータ１０２とエミュレーションエンジン１０４は、通信リンク１０８を介して互いに通信する。エミュレーションエンジン１０４とターゲットシステム１０６は、通信リンク１１０を介して互いに通信する。
通信リンクは、電気的、光学的あるいは無線の通信リンク等の、データを転送可能なあらゆる種類のリンクであってよい。ホストコンピュータ１０２は、エミュレーションエンジン１０４と通信可能なあらゆる種類のコンピュータであってよい。エミュレーションエンジン１０４は、以下で詳述するように、集積回路設計の機能をエミュレートし、集積回路設計がターゲットシステム１０６内でどのように動作するかをユーザが観察することを可能とする。
【００１４】
ターゲットシステム１０６は、典型的には、メモリ、マイクロプロセッサ、特定用途向け集積回路(application  specific  integrated  circuit)（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の多くの装置１１２を含んでいる。また、ターゲットシステム１０６は、入力／出力１１４を含んでいる。入力／出力１１４は、エミュレートされる集積回路の入力及び出力に対応し、通信リンク１１０と電気的に通信可能である。
【００１５】
集積回路設計をエミュレートするために、ユーザは、先ず、典型的には、集積回路設計ソフトウェアを用いて完成される集積回路設計を生成する。ユーザ設計は、時には、“検査対象の設計”（“ＤＵＴ”）あるいは“検証対処の設計”（“ＤＵＶ”）と呼ばれる。集積回路設計ソフトウェアは、ホストコンピュータ１０１あるいは他のコンピュータ上で動作する。
ユーザが、集積回路設計を完成させると、設計は、エミュレーションエンジン１０４と互換性があるデータフォーマットにコンパイルされる。
次に、コンパイルされた設計は、ホストコンピュータ１０２を介してエミュレーションエンジン１０４にロードされる。そして、集積回路設計をエミュレートするエミュレーションエンジン１０４は、集積回路設計がターゲットシステム１０６内で適切に動作するか否かを決定するために、ターゲットシステム１０６と共に動作する。ターゲットシステム１０６に接続されると、集積回路設計の入力及び出力は、ターゲットシステム１０６内の入力／出力１１４を通り、通信リンク１１０を介して伝送される。
【００１６】
プロセッサベースのエミュレーションシステム１００を用いて集積回路設計を検査し、機能的に検証することにより、集積回路設計内に機能的なエラーが存在する時に、時間と費用を大幅に節約することができる。これは、一般的なことであるが、集積回路設計内の機能エラーが、集積回路設計が実際の集積回路装置内に実装される前に確認及び決定することができるからである。
【００１７】
集積回路設計内の機能エラーを確認するために、エミュレーションシステムは、エミュレーションの間に、デバッグ情報（すなわち、集積回路設計の内部状態に関する情報）を捕獲する。捕獲されると、この情報は、通信リンク１０８を介してホストコンピュータ１０２に転送される。そして、ホストコンピュータ１０２を用いて、ユーザは、デバッグ情報を観察し、設計内の機能エラーを確認及び決定するためにこの情報を用いることができる。
【００１８】
図２は、一般的なプロセッサベースのエミュレーションエンジン２００を示している。一般的なプロセッサベースのエミュレーションエンジンは、図１に示されているプロセッサベースのエミュレーションシステム１００のような、プロセッサベースのエミュレーションシステム内に実装可能である。
一般的なプロセッサベースのエミュレーションエンジン２００は、プロセッサシステム(processor  system)２０２とメモリ２０４を含んでいる。プロセッサシステム２０２は、典型的には、多くのエミュレーションプロセッサ（図示省略）と他の論理（図示省略）を含んでいる。
通信リンク２１０は、エミュレーションプロセッサ２０２からメモリ２０４へのエミュレーションデータ及びトレースデータを転送するために用いられる。通信リンク２１２は、エミュレーションプロセッサ２０２からメモリ２０４へのエミュレーションアドレス信号及びトレースアドレス信号を転送するために用いられる。同様に、通信リンク２１４は、エミュレーションプロセッサ２０２からメモリ２０４へのエミュレーションコントロール信号及びトレースコントロール信号を転送するために用いられる。
【００１９】
エミュレーションエンジン２００のような、一般的なプロセッサベースのエミュレーションエンジンでは、プロセッサシステム２０２内のエミュレーションプロセッサは、集積回路設計をエミュレートするために用いられる。しかしながら、エミュレーションプロセッサは、エミュレーションの間に、集積回路設計の内部状態を捕獲するためにも用いられる。
前述したように、エミュレーションに対して使用可能なエミュレーションリソースの量を著しく減少させるため、設計の内部状態を捕獲するためにエミュレーションプロセッサを用いることは好ましくない。
これは、定められた大きさのエミュレーションエンジン内でエミュレート可能な集積回路設計の大きさを制限する。このことは、集積回路設計が絶えずより大きくまたより複雑になっているため、非常に不利である。したがって、エミュレーションプロセッサは、捕獲回路に対して用いるよりも、設計内でブーラン論理を実行するために用いるのが好ましい。
【００２０】
図３は、本明細書に開示されている種々の実施の形態に対応するプロセッサベースのエミュレーションエンジン３００を示している。プロセッサベースのエミュレーションエンジン３００は、図１に示されているプロセッサベースのエミュレーションシステム１００のような、プロセッサベースのエミュレーションシステム内に実装可能である。
プロセッサベースのエミュレーションエンジン３００は、プロセッサシステム３０２、メモリ３０４及び捕獲リソース３０６を含んでいる。プロセッサシステム３０２は、多くのエミュレーションプロセッサ（図示省略）を含んでいる。エミュレーションプロセッサは、集積回路設計をエミュレートするように設計された特別な回路である。
捕獲リソース３０６によって、プロセッサベースのエミュレーションエンジン３００は、前述した一般的なプロセッサベースのエミュレーションエンジンの不利な点を克服することができる。
プロセッサシステム３０２、捕獲リソース３０６及びメモリ３０４は、同じ集積回路あるいは共通のサブストレート(substrate)やバックプレーン(backplane)のいずれかに製造するのが好ましい。
【００２１】
捕獲リソース３０６は、プロセッサシステム３０２内でエミュレーションプロセッサによって生成されたデータを捕獲し、そして、捕獲されたデータをメモリ３０４に転送するために用いられる。捕獲リソース３０６は、集積回路設計をエミュレートするためには用いられない。捕獲リソース３０６が集積回路設計をエミュレートするために用いられないため、プロセッサシステム３０２内のエミュレーションプロセッサは、集積回路設計の機能をエミュレートするためにのみ使用可能である。これにより、より大きくまたより複雑な集積回路設計が、定められた大きさのエミュレーションエンジン内でエミュレート可能となる。
【００２２】
エミュレーションデータ及びトレースデータは、通信リンク３１０を介してプロセッサ３０２と捕獲リソース３０６との間で転送され、また、通信リンク３１１を介して捕獲リソース３０６とメモリ３０４との間で転送される。エミュレーションアドレス信号及びトレースアドレス信号は、通信リンク３１２を介してプロセッサ３０２と捕獲リソース３０６との間で転送され、また、通信リンク３１３を介して捕獲リソース３０６とメモリ３０４との間で転送される。エミュレーションコントロール信号及びトレースコントロール信号は、通信リンク３１４を介してプロセッサ３０２と捕獲リソース３０６との間で転送され、また、通信リンク３１５を介して捕獲リソース３０６とメモリ３０４との間で転送される。
【００２３】
捕獲リソース３０６は、プロセッサシステム３０２内の、選択されたエミュレーションプロセッサの出力を捕獲する。捕獲されるデータの量は、ユーザの要求に応じて変化する。例えば、ユーザが設計内への制限された可視性のみを必要とする場合には、捕獲リソース３０６は、制限されたデータ量を捕獲し、そのデータをメモリ３０４に供給可能である。また、捕獲リソース３０６は、トリガに基づいてデータを捕獲、すなわち、１あるいは多くの予め定められている状態が発生する時にデータを捕獲することができる。
【００２４】
図４Ａは、例示的なプロセッサベースのエミュレーションエンジン４００を示している。プロセッサベースのエミュレーションエンジン４００は、図１に示されているプロセッサベースのエミュレーションシステム１００のような、プロセッサベースのエミュレーションシステム内に実装可能である。
エミュレーションエンジン４００は、処理システム(processing  system)４０２、トレースアレイ(trace  array)４０４、メモリ４０６、トレース論理(trace  logic)４０８、ＲＡＭコントロール論理４１０、マルチプレクサ４１２及び４１４を含んでいる。
処理システム４０２は、複数のプロセッサクラスタ(processor  cluster)４１６を含んでいる。プロセッサクラスタ１６は、ブーラン式を実行するように設計された特別の回路であり、多くのエミュレーションプロセッサ（図４Ｂ参照）を含んでいる。図示されている実施の形態では、各プロセッサクラスタ４１６は、８つのエミュレーションプロセッサを含んでいる。プロセッサクラスタ４１６は、通信リンク４１７を介して互いにデータを転送可能である。
メモリ４０６は、プロセッサベースのエミュレーションエンジン４００内の他の構成要素と同じ集積回路上に配設可能であり、または、１つあるいはより多くの別々の集積回路装置を有していてもよい。
【００２５】
エミュレーションデータ、すなわち、ユーザ設計を実行する時にエミュレーションプロセッサによって生成されるデータは、通信リンク４２１を介して処理システム４０２とマルチプレクサ４１２との間で転送される。
トレースデータは、通信リンク４２２を介して処理システム４０２とトレースアレイ４０４との間で転送される。各通信リンク４２２は、特別のプロセッサクラスタ４１６とトレースアレイ４０４との間での専用の接続を提供する。トレースデータは、通信リンク４２３を介してトレースアレイ４０４とマルチプレクサ４１２との間で転送される。
エミュレーションデータあるいはトレースデータは、選択信号４２４の値に応じて、通信回線４２５を介してマルチプレクサ４１２とメモリ４０６との間で転送される。
【００２６】
エミュレーションアドレス信号は、通信リンク４２６を介して処理システム４０２とマルチプレクサ４１４との間で転送される。
トリガ信号は、通信リンク４２７を介して処理システム４０２とトレース論理４０８との間で転送される。
トレースアドレス信号は、通信リンク４２８を介してＲＡＭコントロール論理４１０とマルチプレクサ４１４との間で転送される。
エミュレーションアドレス信号あるいはトレースアドレス信号は、選択信号４２４の値に応じて、通信リンク４２９を介してマルチプレクサ４１４とメモリ４０６との間で転送される。
【００２７】
エミュレーションコントロール信号は、通信リンク４３０を介して処理システム４０２とＲＡＭコントロール論理４１０との間で転送される。
トレースコントロール信号は、通信リンク４３１を介してトレース論理４０８とＲＡＭコントロール論理４１０との間で転送される。
ＲＡＭコントロール信号は、通信リンク４３２を介してＲＡＭコントロール論理４１０とメモリ４０６との間で転送される。
【００２８】
図４Ｂは、本明細書に開示されている実施の形態とともに用いられる、例示的なプロセッサクラスタ４１６を示している。
プロセッサクラスタ４１６は、８つのエミュレーションプロセッサ４５０、データスタック(data  stack)４５２、マルチプレクサ４５４及び４５６、捕獲レジスタ４５８及び４６０を含んでいる。
エミュレーションプロセッサ４５０及びデータスタック４５２は、集積回路設計をエミュレートするためにのみ用いられるエミュレーションリソースとして作用する。すなわち、それらは、エミュレーションの間、集積回路設計の内部状態を捕獲するために用いられない。
これに比べて、マルチプレクサ４５４及び４５６、捕獲レジスタ４５８及び４６０は、エミュレーションの間、集積回路設計の内部状態を捕獲するための捕獲リソースとして作用する。すなわち、それらは、集積回路設計をエミュレートするために用いられない。
プロセッサクラスタ４１６は、単一の集積回路内に実装可能である。例えば、単一の集積回路は、１クラスタ当たり８つのプロセッサを有している９６のプロセッサクラスタを包含可能である。
【００２９】
各エミュレーションプロセッサ４５０は、通信リンク４７０を介して４つの入力ビットを受信する。各エミュレーションプロセッサは１ビットのデータを出力し、それは、８ビットの通信リンク４７１を介してデータスタック４５２に供給される、１ビットのデータを出力する。同様に、１あるいはより多くの他のプロセッサクラスタ（図示省略）から、エミュレーションプロセッサの１ビットの出力が、８ビットの通信リンク４７２を介してデータスタック４５２に供給される。データスタック４５２の３２ビットの出力は、３２ビットの通信リンク４７３を介してマルチプレクサ４５４及び４５６に転送される。
マルチプレクサ４５４は、選択信号４７６の値に応じて３２の入力ビットの１つを選択し、そして、１ビットの通信リンク４７４を介して、選択されたビットをレジスタ４５８に供給する。同様に、マルチプレクサ４５６は、選択信号４７７の値に応じて３２の入力ビットの１つを選択し、そして、１ビットの通信リンク４７５を介して、選択されたビットをレジスタ４６０に供給する。選択信号４７６と４７７は、独立している。これにより、３２ビットのうちの２ビットが、レジスタ４５８と４６０に供給可能である。
以下に詳述するように、レジスタ４５８と４６０によって捕獲されたデータは、集積回路設計の内部状態を決定するために用いることができるトレースデータである。トレースデータは、２ビットの通信リンク４２２を介して、プロセッサクラスタ４１６とトレースアレイ４０４（図４Ａ）との間で転送される。
【００３０】
プロセッサクラスタ４１６のようなプロセッサクラスタや、エミュレーションプロセッサ４５０のような、プロセッサクラスタ内のエミュレーションに関する更なる詳細は、Beausoleilらに特許された米国特許第６６１８６９８号やBeausolilらに特許された米国特許第５５５１０１３号に開示されている。これらの双方は、参照として本明細書に組み込まれている。
エミュレーションプロセッサをクラスタ内に配置することによって、各クラスタ内のプロセッサは、共通のエミュレーションリソース（例えば、入力及びデータスタック）を分配する。これにより、相互の通信が改善され、米国特許第６６１８６９８号に説明されているように、エミュレーションの効率と速度が増大する。
【００３１】
エミュレーションエンジン４００及びプロセッサクラスタ４１６の動作は、図４Ａ及び４Ｂを参照して説明されている。
ユーザが集積回路設計を完成した後、ユーザは、ホストコンピュータ１０２（図１）あるいは他のコンピュータ上で動作する特別のコンピュータソフトウェアを用いて、設計をコンパイルする。そして、コンパイルされた集積回路設計は、エミュレーションエンジン４００内のエミュレーションプロセッサ４５０にロードされる。
一般的なエミュレーションエンジンと違って、捕獲論理は、コンパイルされた集積回路設計内に構築されず、したがって、エミュレーションプロセッサ４５０内にロードされないということを知ることが重要である。これにより、エミュレーションプロセッサ４５０は、集積回路設計内の論理を実行するためにのみ使用され、より大きくまたより複雑な集積回路設計が、定められた大きさのエミュレーショエンジン４００内でエミュレートされることが可能となる。
【００３２】
集積回路設計は、メインサイクルとして参照されている、予め定められた数のステップ（例えば、２５６）を順次実行することによってエミュレートされる。各メインサイクルは、動作環境の単一のクロックサイクル（例えば、ターゲットシステム内のクロックサイクル）に対応する。各ステップは、エミュレートされる集積回路設計内のクロックサイクルに対応する。
図４Ｂを参照すると、４ビットが、各エミュレーションステップの間に、各エミュレーションプロセッサ４５０の入力に供給される。接続は示されていないが、各エミュレーションプロセッサ４５０に対する４ビットの入力は、データスタック４５２からの３２ビットの出力のいくつかから選択可能である。各エミュレーションプロセッサ４５０は、４つの入力ビットの値に基づいて、論理機能（例えば、ＡＮＤ、ＯＲ、ＸＯＲ、ＮＯＴ、ＮＯＲ、ＮＡＮＤ等）あるいはメモリアクセス機能を実行する。そして、各エミュレーションプロセッサ４５０は、論理あるいはメモリ動作の結果に対応する１ビットの結果を出力する。
そして、プロセッサクラスタ４１６内の８つのエミュレーションプロセッサ４５０の１ビットの出力は、通信リンク４７１を介して、プロセッサクラスタのデータスタック４５２に書き込まれる。
さらに、１つあるいはより多くの他のプロセッサクラスタ（図示省略）から、エミュレーションプロセッサの１ビットの出力が、８ビットの通信リンク４７２を介してデータスタック４５２に書き込まれる。
【００３３】
データスタック４５２は、１６ビットの幅で１６０ステップの深さであり、したがって、２５６０ビットのデータを蓄積可能である。
データスタック４５２の最初の８ビットは、８つのローカルエミュレーションプロセッサ４５０の１ビットの出力を蓄積するために用いられる。また、２番目の８ビットは、１あるいはより多くの他のプロセッサクラスタ（図示省略）からのエミュレーションプロセッサの８つの１ビットの出力を蓄積するために用いられる。これにより、１６ビットが、エミュレーション内の各ステップに対して、データスタック４５２内に蓄積される。
【００３４】
集積回路設計の内部状態は、各プロセッサクラスタ４１６内の捕獲リソースを用いて、各エミュレーションステップ（エミュレーションエンジンのクロックサイクルに等しい）で捕獲可能である。特に、選択論理（図示省略）は、データスタック４５２内の２５６０ビットの中の３２ビットを選択し、これらビットを、通信リンク４７３を介してマルチプレクサ４５４と４５６に供給する。
マルチプレクサ４５４は、選択信号４７６の値に応じて、３２ビットの中の１ビットを選択する。そのビットは、レジスタ４５８に蓄積される。同様に、マルチプレクサ４５６は、選択信号４７７の値に応じて、３２ビットの中の１ビットを選択する。そのビットは、レジスタ４６０に蓄積される。そして、２つの蓄積されたビットは、通信リンク４２２を介してトレースアレイ４０４に供給される。
【００３５】
エミュレーションエンジン４００は、各エミュレーションステップの間に、エミュレーションプロセッサ４５０の出力（８つの出力の中の２つ）の２５％を捕獲可能であることを認識することが重要である。分析では、フル−ビジョンは、エミュレーションプロセッサ４５０の出力の約２０％を捕獲することによって実行可能であることが示されている。したがって、エミュレーションエンジン４００は、フル−ビジョン能力を提供する。
さらに、エミュレーションエンジン４００は、エミュレーションエンジン４００が、専用の捕獲リソースを含んでいるため、エミュレーションリソース（例えば、エミュレーションプロセッサ４５０）を用いることなく、フル−ビジョン能力を提供する。
【００３６】
図４Ａに示されているように、エミュレーションデータあるいはトレースデータの一方は、メモリ４０６に供給可能である。ユーザは、ホストコンピュータ１０２を介して、メモリ４０６内に蓄積されているエミュレーションデータあるいはトレースデータを読み出し可能である。
エミュレーションデータは、以下のようにして、メモリ４０６に蓄積される。
処理システム４０２内のエミュレーションプロセッサ４５０によって生成されたエミュレーションデータは、通信リンク４２１を介してマルチプレクサ４１２に供給される。選択信号４２４は、エミュレーションデータ入力を選択する。そして、マルチプレクサ４１２は、エミュレーションデータを、通信リンク４２５を介してメモリ４０６に供給し、蓄積する。
同時に、処理システム４０２は、通信リンク４２６を介して、エミュレーションアドレス信号をマルチプレクサ４１４に供給する。選択信号４２４は、エミュレーションアドレス入力を選択する。そして、マルチプレクサ４１４は、エミュレーションアドレス信号を、通信リンク４２９を介してメモリ４０６に供給する。
また、処理システム４０２は、エミュレーションコントロール信号を、通信リンク４３０を介してＲＡＭコントロール論理４１０に供給する。ＲＡＭコントロール論理４１０は、ＲＡＭコントロール信号を、通信リンク４３２を介してメモリ４０６に順に供給する。
【００３７】
トレースデータは、以下のようにして、メモリ４０６に蓄積される。
トレースデータは、２ビットの通信リンク４２２を介してトレースアレイ４０４に供給される。トレースアレイ４０４は、トリガ状態の計算の間、トレースデータを一時的に蓄積するメモリ装置である。トレースアレイ４０４は、例えば、ＦＩＦＯ（ファーストイン−ファーストアウト）メモリ装置である。トレースアレイ４０４は、専用の捕獲リソースであり、集積回路設計のエミュレートに対しては用いられない。
トレースアレイ４０４が利用できない場合には、エミュレーションプロセッサ４５０のようなエミュレーションリソースが、トリガ状態の計算の間、トレースデータを一時的に蓄積するために用いられなければならない。
トリガ状態は、トレースデータがメモリ４０６に蓄積されるか否か、あるいは、トレースデータが廃棄されるか否かを決定する。トリガ状態は、トレースデータを捕獲するか否かを決定するために必要であるが、その状態の評価は、メモリ４０６に蓄積されるデータがトレースアレイ４０４に対して利用可能となった後に到来する。このトリガの評価における遅れは、トリガが、エミュレーションエンジン内の他のチップあるいはボードを含む、離れたか場所から到来する信号を用いているという事実に起因する。
トレースデータは、専用の捕獲リソースであるトレースアレイ４０４に蓄積されるが、トリガ状態は、エミュレーションリソースを用いて計算される。
【００３８】
トリガ状態が有効である場合には、トレースアレイ４０４に蓄積されているトレースデータは、メモリ４０６に書き込まれる。これを完成させるために、選択信号４２４が、マルチプレクサ４１２へのトレースデータ入力とマルチプレクサ４１４へのトレースアドレス信号を選択する。そして、適切なトレースアドレス信号とトレースコントロール信号が生成され、それぞれ通信リンク４２９及び４３２を介してメモリに供給される。
フル−ビジョンモードで動作する場合、トリガ状態は、常に有効であり、全てのトレースデータがメモリ４０６に蓄積される。
【００３９】
ＲＡＭアドレス及びＲＡＭコントロール線は、処理システム４０２内の特別の論理（図示省略）によって生成される。ＲＡＭアドレス及びＲＡＭコントロール線は、メモリ４０６自身が捕獲データ及びエミュレーションデータを蓄積するために用いられるため、捕獲使用とエミュレーション使用との間で分配される。捕獲モードで動作する場合には、アドレス及びコントロール信号は、専用の捕獲リソースで生成され、したがって、エミュレーションリソースは用いられない。
【００４０】
いくつかの実施の形態では、メモリ４０６はＤＲＡＭである。エミュレーションサイクルの始めでは、ＤＲＡＭ４０６は、バーストモードに設定可能である。バーストモードであるが、トレースデータは、エミュレーションサイクル内の全てのステップでＤＲＡＭに書き込み可能である。エミュレーションサイクルの終わりでは、ＤＲＡＭ４０６は、バーストモードから解除され、リフレッシュ可能である。
【００４１】
当業者は、エミュレーションエンジン４００が、一般的なエミュレーションエンジンを越える多くの利益を提供することを認識する。
第一に、トレースデータを捕獲するための専用のリソースを用いることは、トレースが、エミュレーションリソースを用いる場合と比べて高速で実行可能であることを意味する。これらの捕獲リソースが、他のプロセッサの出力だけでなく、数ステップ前に対するローカルプロセッサクラスタの出力から選択することができるとう事実は、効率を改善する。また、トレースを作動させることは、エミュレーション目的に利用可能なプロセッサの数に影響を及ぼさない。メモリは依然として分配されるが、メモリの数は、ユーザが、フル−ビジョンモード時でも利用可能なメモリを有するように、増加可能である。状態獲得に対してトレースアレイを用いることによって、非常に多くのエミュレーションリソースが節約される。トリガ状態計算の結果を待機しながら、エミュレーションプロセッサを用いてトレースデータを蓄積する必要が無いことは、これらのプロセッサがエミュレーションリソースとして使用可能であることを意味する。
【００４２】
第二に、エミュレーションエンジン４００は、エミュレートされる設計を修正する必要なしに、異なるデータが捕獲されるのを可能とする。ユーザは、選択信号４７６及び４７７に対して異なる値を用いることによって、異なるデータを捕獲可能である。一般的なプロセッサベースのエミュレーションシステムでは、捕獲されるデータが変化すると、設計を再コンパイルする必要がある。なぜなら、蓄積される必要があるデータは、正しいエミュレーションプロセッサに再方向付けされる必要があり、また、そのエミュレーションプロセッサ内で実行される論理機能が、他のエミュレーションプロセッサに移されなければならないからである。
【００４３】
最後に、エミュレーションエンジン４００は、実際に達成するのが非常に困難である、非常に大規模のエミュレーションシステムにおいて、フル−ビジョンを達成するために使用可能である。例えば、ケイデンスデザインシステムズによって開発中の大規模のエミュレーションシステムは、約２億５千６百万個のＡＳＩＣゲートと等しい機能である、合計８８４７３６個のエミュレーションプロセッサを含んでいる。このシステム内のエミュレーションプロセッサは、約２００ＭＨｚで動作する。本明細書に開示されているものと同様の実施の形態を用いることによって、このエミュレーションシステムは、２００ＭＨｚにおいて１クロック当たり２２１１８４ビットである、全てのプロセッサ出力の約２５％を捕獲することができる。このデータを捕獲するためには、エミュレーションシステムは、それぞれ４００ＭＨｚ（すなわち、２００ＭＨｚのエミュレーションプロセッサクロックの２倍の速さ）で動作する、多くの一般的なＲＡＭチップを用いる。各ＲＡＭチップは、エミュレーションクロックサイクル当たり６４ビットを捕獲することができる。したがって、プロセッサからの２２１１８４ビットの出力を捕獲するためには、合計３４５６個のＲＡＭチップが使用される。
【００４４】
このシステムの帯域幅（１秒当たりのビット）は、４４トリロン（１０１２）ビット／秒（すなわち、２１１１８４ビット×２００ＭＨｚ）に等しい。さらに、このシステムで用いられるメモリの深さは２Ｍである。このことは、エミュレーションシステムが、合計４５０ビリオン（１０９）ビットのデータを捕獲する能力を有していることを意味する。当業者が認識するように、このエミュレーションシステムによって捕獲可能なデータ量は、非常に大きく、また、大規模エミュレーションシステム内でフル−ビジョンを達成するための能力は、重要な技術業績である。
【００４５】
当業者は、多くの修正が、エミュレーションエンジン４００に対して実行可能であることを認識する。前述したように、エミュレーションエンジン４００は、エミュレーションプロセッサ出力の２５％を捕獲することができる。したがって、エミュレーションエンジンは、エミュレーションプロセッサの出力の大体２０％がフル−ビジョンを達成するために捕獲される必要があるため、フル−ビジョンを実行することができる。
しかしながら、エミュレーションエンジン４００は、必要であれば、他のデータを捕獲するように容易に修正することができる。例えば、捕獲されるビットの数が増加可能であり、および／または、データスタック４５２の深さが増加可能である。より多くの出力ビットが捕獲される場合には、フル−ビジョンを達成するために必要な計算が少なくなり、システムの速度を潜在的に増大させることができる。
また、修正は、捕獲レジスタ４５８及び４６０が、データを捕獲するために用いられる回路の量を増加させることなく、より多くのデータの捕獲を可能とする増大された速度で作動するように実行可能である。
また、トレースアレイ４０４は、より洗練された方法で、トレースデータを捕獲するために用いることができる。例えば、トレースアレイ４０４は、エミュレーションの全ステップの間ではないが、フル−ビジョンに対して必要な、エミュレーションプロセッサの出力の量を捕獲することができる。
トリガを用いることによって、任意のステップのみ捕獲することができる。これにより、“興味がある”サイクルでのみフル−ビジョンを提供する。
また、エミュレーションエンジン４００は、エミュレーションが停止し、そして、捕獲リソースが、エミュレーションエンジン４００内の全てのデータスタック４５２をメモリ４０６内にダンプするために用いられるように修正可能である。これは、ユーザに、最後の数サイクルに対する、チップ内の全ての単一のプロセッサの出力を提供する。これは、フル−ビジョンのようなものに対して必要とされる値だけでなく、任意のプロセッサ出力の値を再生成する必要なしに、ユーザに設計の可視性を与える、全ての中間値を含んでいる。
【００４６】
また、当業者は、本明細書に開示されている実施の形態が、エミュレーションエンジン及びシミュレーションアクセラレータに適用可能であることを認識する。双方における根本的な技術は、プロセッサの使用であるため、本明細書に開示されている実施の形態は、双方の適用に有益である。
【００４７】
種々の独創性がある概念が、前述の特別な実施の形態を参照にして説明されている。しかしながら、本明細書に開示されている独創性がある概念のより広い精神及び範囲から逸脱することなく、種々の修正及び変更がそれらに対して実行可能であることは明らかである。例えば、読み手は、本明細書に開示されているプロセッサ行動の特別な順序や組み合わせは、単に例示であり、独創性がある概念は、異なるあるいは追加の処理行動、処理行動の異なる組み合わせあるいは順序を用いて実行可能であることを理解すべきである。したがって、明細書及び図面は、限定の意味ではなく例示の意味で認識され、独創性がある概念は、請求項及びそれらの法律上の均等物に対応する場合を除いて、限定あるいは制限されない。
【図面の簡単な説明】
【００４８】
【図１】プロセッサベースのエミュレーションシステムの一例を示す。
【図２】一般的なプロセッサベースのエミュレーションエンジンの一例を示す。
【図３】本明細書に開示されている実施の形態に対応するプロセッサベースのエミュレーションエンジンの一例を示す。
【図４Ａ】本明細書に開示されている実施の形態に対応するプロセッサベースのエミュレーションエンジンの一例を示す。
【図４Ｂ】本明細書に開示されている実施の形態に対応するプロセッサクラスタの一例を示す。
【符号の説明】
【００４９】
１０２  ホストコンピュータ
１０４、２００、３００、４００  エミュレーションエンジン
１０６  ターゲットシステム
２０２、３０２  プロセッサシステム
２０４、３０４、４０６  メモリ
３０６  捕獲リソース
４０２  処理システム
４０４  トレースアレイ
４０８  トレース論理
４１０  ＲＡＭコントロール論理
４１２、４１４、４５４、４５６  マルチプレクサ
４１６  プロセッサクラスタ
４５０  エミュレーションプロセッサ
４５２  データスタック
４５８、４６０  レジスタ
【図１】
2006338144.tif 000003
【図２】
2006338144.tif 000004
【図３】
2006338144.tif 000005
【図４Ａ】
2006338144.tif 000006
【図４Ｂ】
2006338144.tif 000007