(57)【特許請求の範囲】
【請求項１】
デジタル・ロジックにより構成されるユーザ設計を実現するために構成される電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記ユーザ設計は少なくとも１つのユーザ・クロック信号を利用するものであり、
ロジック・ボードを備え、
前記少なくとも１つのユーザ・クロック信号の各々と非同期の多重クロック信号を生成する多重クロック信号ソースを備え、
出力マルチプレクサ用回路及び入力デマルチプレクサ用回路を有する回路に電気的に接続された複数の入力／出力ピンを有する複数のプログラム可能なロジック装置を備え、前記出力マルチプレクサ用回路及び入力デマルチプレクサ用回路は前記多重クロック信号によって制御されるものであり、
出力マルチプレクサ用回路及び入力デマルチプレクサ用回路を有する回路に電気的に接続された複数の入力／出力ピンを有する複数のプログラム可能な相互接続装置を備え、前記出力マルチプレクサ用回路及び入力デマルチプレクサ用回路は前記多重クロック信号によって制御され、プログラム可能なロジック装置は複数のプログラム可能な相互接続装置の少なくとも１つのプログラム可能な相互接続装置を使用して相互接続されるものであり、
前記ロジック・ボードは、パーシャル・クロスバー・インターコネクションの配置において、前記プログラム可能なロジック装置の入力／出力ピンを前記プログラム可能な相互接続装置の前記入力／出力ピンに接続する１組の固定された電気導体をさらに備え、前記導体は、前記プログラム可能なロジック装置の前記入力／出力ピンと前記プログラム可能な相互接続装置の前記入力／出力ピンとの間に時間多重化信号を伝達する、
ことを特徴とするエミュレーション・システム。
【請求項２】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記再プログラム可能なロジック装置はプログラマブル・ゲート・アレイにより構成されていることを特徴とするエミュレーション・システム。
【請求項３】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記再プログラム可能なロジック装置はフィールド・プログラマブル・ゲート・アレイにより構成されていることを特徴とするエミュレーション・システム。
【請求項４】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記再プログラム可能な相互接続装置はプログラマブル・ゲート・アレイにより構成されていることを特徴とするエミュレーション・システム。
【請求項５】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記再プログラム可能な相互接続装置はクロスポイント・スイッチのアレイが形成されている集積回路により構成されていることを特徴とするエミュレーション・システム。
【請求項６】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記複数のプログラム可能なロジック装置の前記入力デマルチプレクサは少なくとも２つのシーケンシャル・ロジック・エレメントにより構成されていることを特徴とするエミュレーション・システム。
【請求項７】
請求項６に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記少なくとも２つのシーケンシャル・ロジック・エレメントはフリップ・フロップにより構成されていることを特徴とするエミュレーション・システム。
【請求項８】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記複数のプログラム可能なロジック装置の前記出力マルチプレクサは少なくとも２つのシーケンシャル・ロジック・エレメントにより構成されており、前記少なくとも２つのシーケンシャル・ロジック・エレメントの各々のそれぞれの出力はマルチプレクサに入力されることを特徴とするエミュレーション・システム。
【請求項９】
請求項８に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記少なくとも２つのシーケンシャル・ロジック・エレメントはフリップ・フロップにより構成されており、前記フリップ・フロップの各々はデータ入力、イネーブル入力、クロック入力及び出力を有することを特徴とするエミュレーション・システム。
【請求項１０】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記複数の前記再プログラム可能な相互接続装置の前記入力デマルチプレクサは少なくとも２つのシーケンシャル・ロジック・エレメントにより構成されていることを特徴とするエミュレーション・システム。
【請求項１１】
請求項１０に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記少なくとも２つのロジックエレメントはフリップ・フロップにより構成されていることを特徴とするエミュレーション・システム。
【請求項１２】
請求項１１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記少なくとも２つのシーケンシャル・ロジック・エレメントは第二のクロック分周器の出力によってクロックされ、前記第二のクロック分周器は前記多重クロック信号を受信することを特徴とするエミュレーション・システム。
【請求項１３】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記複数のプログラム可能なロジック装置の前記出力マルチプレクサは第一のマルチプレクサにより構成されており、前記第一のマルチプレクサは少なくとも選択入力及び２つの入力から構成されていることを特徴とするエミュレーション・システム。
【請求項１４】
請求項１３に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記第一のマルチプレクサの前記選択入力は第一のクロック分周器の出力を受信するものであり、前記第一のクロック分周器は前記多重クロック信号を受信することを特徴とするエミュレーション・システム。
【請求項１５】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記出力マルチプレクサ用回路及び前記入力デマルチプレクサ用回路は、前記複数のプログラム可能なロジック装置の各々の前記入力／出力ピンと電気的に通信を行ってプログラム可能な回路にプログラムされることを特徴とするエミュレーション・システム。
【請求項１６】
請求項１に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記出力マルチプレクサ用回路及び前記入力デマルチプレクサ用回路は、前記複数のプログラム可能なロジック装置の各々に形成されているとともに、前記複数のプログラム可能なロジック装置の前記入力／出力ピンと電気的に通信を行うことを特徴とするエミュレーション・システム。
【請求項１７】
請求項７に記載の電気的に再構成可能なハードウェア・エミュレーション・システムであって、前記少なくとも２つのシーケンシャル・ロジック・エレメントは第一のクロック分周器の出力によってイネーブルされるものであり、前記第一のクロック分周器は前記多重クロック信号を受信することを特徴とするエミュレーション・システム。
【発明の詳細な説明】
発明の技術分野
本発明は、一般的には電子回路設計を検証するための装置に関し、より詳細には複数の設計信号がプログラム可能なロジック・チップ（logic  chip）間で１つの物理的な結線により伝送されるハードウェア・エミュレーション・システム（hardware  emulation  system）に関する。
発明の背景技術
ハードウェア・エミュレーション・システムは、チップ又はプリント回路基板の製造に先立って電子回路設計を検証するために設計された装置である。これらのシステムは、一般的には、プログラム可能なロジック・チップ（ロジック・チップ）及びプログラム可能な相互接続チップ（相互接続チップ）（interconnectchip）によって構築される。ここで、「チップ」という用語は、集積回路をいうものとする。ロジック・チップの例としては、フィールド・プログラマブル・ゲート・アレイ（field-programmable  gate  arrays）（“ＦＰＧＡｓ”）のような再プログラム可能な論理回路（logic  circuit）を含み、既製品と注文品が含まれる。相互接続チップの例としては、再プログラム可能なＦＰＧＡ、マルチプレクサ・チップ（multiplexer chip）、クロスポイント・スイッチ・チップ（crosspoint  switch  chip）等を含む。相互接続チップは、既製品又は注文設計された製品のいずれであってもよい。
従来のエミュレーション・システムは、一般的に、エミュレーションされる１つの電子回路設計内の各信号が１つのロジック・チップ内の１つ又は複数の物理的な金属配線（“ワイヤ”）にマップされるように設計されていた。ロジック・チップ間でやりとりされる信号は、１つのロジック・チップ上の１つ又は複数の物理的ピンと、ロジック・チップ及び相互接続チップを含むプリント回路基板上の１つ若しくは複数の物理的な経路にマップされていた。
従来のエミュレーション・システムにおける設計信号の物理的なピン及び経路に対する１対１のマッピングのため、エミュレーション・システムは、少なくともロジック・チップの間を接続する設計信号と同じ数のロジック・チップのピン及びプリント回路基板の経路が必要である。このような構成によれば、エミュレーション・システムを構成するために、非常に複雑で高価な集積回路のパッケージ、プリント回路基板及び回路基板コネクタが必要であった。これらの部品は高価であるために、ハードウェア・ロジック・エミュレーション・システムの価格も順次高価なものとなり、設計者の数が限定され、それにより、システムからの恩恵が限定され、ハードウェア・エミュレーション・システムの優位性が限定される要因となっていた。
さらに、集積回路の製造技術の進展により、急速に小型化されたサイズのものが使用できるようになった。このため、ロジック・チップのロジック密度（すなわち、ロジック・チップの中に設けることができるロジック・ゲートの数）は劇的に増加した。しかしながら、１つのロジック・チップに設けられ又はエミュレートされるロジック・ゲートの数の増加は、チップのパッケージ（package）の入力、出力、クロック等に利用可能なピン（すなわち、リード線）の数の増加に結びつかない。集積回路パッケージのピンの数は、チップの利用可能な周辺の長さにより限定される。さらに、集積回路のダイス（dice）上の結合パッドをパッケージ上のピンに接続するために用いられるワイヤ・ボンディング組み立て装置の能力は、長い時間をかけてゆっくりと向上している。このため、１つのロジック・チップ上で利用可能なロジックの数と、これらのロジックを外部に接続するために利用可能なピンの数との間の食い違いは、ますます大きなものとなっている。このため、ロジック・チップの論理的な容量（logical  capacity）の平均的な利用率は低く、任意の大きさの電子回路設計のエミュレーションに必要とされるハードウェア・エミュレーション・システムのコストを押し上げる結果となっている。
時間多重（time-multiplexing）は、各物理的な接続のコストが非常に高いあるタイプのシステムにおいて、複数の論理信号の間で１つの物理的ワイヤ又はピンを共有するために用いられてきた技術である。このようなシステムには、遠距離通信システムが含まれる。しかしながら、従来の時間多重技術方法ではエミュレートされる回路の動作速度が大きく低下するため、時間多重は、Quickturn Design Systems，Inc.、Mentor Graphics Corporation、Aptix Corporationその他により提供されるハードウェア・エミュレーション・システムには一般的には用いられていなかった。さらに、従来の時間多重技術では、ハードウェア・エミュレーション・システムにおいて、組み込みまれた設計の非同期の動作を正しく保持することが困難である。
前述したように、ハードウェア・エミュレーション・システムの１つの機能は、集積回路の機能を検証することにある。典型的には、回路の設計者又は技術者が集積回路を設計する時、その設計は、設計の“ネットリスト”記述の形で表わされる。ネットリスト記述（又は当業者によって呼ばれている“ネットリスト”）は、集積回路の部品及びその部品の間の電気的な相互接続を記述したものである。これらの部品には、ロジック回路を供給するために必要なすべての回路要素（例えば、ゲート）及びシーケンシャル・ロジック（sequential  logic）（例えば、フリップ・フロップ及びラッチ）が含まれる。従来のエミュレーション・システムでは、ネットリストをハードウェア・エミュレーション・システムに供給する前に、ユーザーの回路のネットリストの解析を行っていた。この解析には、その設計のさまざまな回路上の経路をクロック経路、クロック・クオリファイア（clock  qualifier）及びデータ経路に分離するステップが含まれていた。この解析と分離を行う方法は、Chen等による米国特許Ｎｏ．５，４７５，８３０号に開示されている。この特許は、本発明の譲受人と同一の譲受人に譲渡されている。ここで、参考のために、米国特許Ｎｏ．５，４７５，８３０号の開示内容を完全な形で組み込む。米国特許Ｎｏ．５，４７５，８３０号に開示されている技術は、Quickturn  Design  Systems，Inc.，Mountain  View，CaliforniaのSystem  RealizerTMブランドのハードウェア・エミュレーション・システムのような従来のエミュレーション・システムにおいて用いられてきた。しかしながら、そこに開示されている技術は、いかなる種類の時間多重とも組み合わせられて使用されていない。
Virtual  Machine  Works（現在のIKOS）、ARKOS（現在のSynopsis）及びIBMから提供されている従来のハードウェア・エミュレーション・システムでは、エミュレーションされる任意のサイズの電子的な設計についてハードウェアのコストの低減を図るべく、設計信号を単一の物理的なロジック・チップのピン及びプリント回路基板に時間多重する試みがなされていた。しかしながら、これらの従来のエミュレーション・システムでは、正確な回路の動作を維持するためにクロック経路を変更（alter）し又は再合成（re-synthesize）する。これらの変更又は再合成のプロセスは、同期的な設計については予測可能な動作を行う。しかしながら、非同期的な設計では、不正確又は誤ったエミュレーション結果をもたらす可能性がある。多くの回路設計では非同期クロック構造が採用されているため、クロック経路の変更又は再合成の必要性は大きな欠点となっている。
これに加えて、時間多重を使用している従来のハードウェア・エミュレーション機器は、低い動作速度に悩んでいた。これは、クロック経路の再合成に起因する。これらの機器では、設計について１つのクロック・サイクルをエミュレートするために複数の内部マシン・サイクルが必要となる。このため、エミュレーションされる設計の実効的な動作速度は、通常は、エミュレーション・システム自体の最大クロック・レートよりもかなり遅いものとなる。エミュレーションされる設計に複数の非同期のクロックが含まれると、各組の入力クロックのエッジの間でエミュレートされる設計の状態を評価する必要が生じるため、通常、動作速度の低下はさらに深刻になる。
時間多重を用いた従来のハードウェア・エミュレーション・システムでは、単一の物理的なロジック・チップ・ピン又はプリント回路基板の配線（trace）における多くの設計信号の流れを同期させるための複雑なソフトウェアが必要である。各設計信号は、システムの他の部分において、他の設計信号を計算するためにそれが必要とされる時点において正確な値を有するように時間的に管理される必要がある。このタイミング解析のソフトウェア（スケジューリング・ソフトウェアとも呼ばれている）は、エミュレータの複雑性を増加させ、回路設計をエミュレータの中に編集（compile）するのに必要な時間を増加させる。
さらに、時間多重を用いた従来のハードウェア・エミュレーション機器は、最小限のハードウェアを必要とする簡単な形式の時間多重を使用するのみでよいが、大きな消費電力（例えば、電流）及び複雑なシステム設計が必要である。
以上の理由により、論理的容量が非常に大きく、編集時間が短く、複雑なソフトウェアでなく、簡略化された機械設計及び消費電力が小さいハードウェア・エミュレーション・システムが求められている。
発明の概要
複数の設計信号を複数の物理的なロジック・チップのピン及び複数のプリント回路基板の配線に時間多重化することによってハードウェアのコストを削減し、低い動作速度や低い非同期動作性等の制限がない新しい種類のハードウェア・エミュレーション・システムを開示し、特許請求の範囲に記載する。また、ハードウェア・エミュレーションに適しているが、大商品電力や複雑なシステム設計等の欠点のない複数の信号を単一の物理的相互接続に時間多重化する追加の方法も開示する。
好ましい実施例では、時間多重化は、設計中のクロック・クオリファイア経路（クロック・クオリファイアとは、クロック信号をゲートするために使用されるすべての信号をいう）及びデータ経路で実行されるが、クロック経路（クロック経路とは、クロック信号とクロック信号を生成するクロック資源との間の経路をいう）では実行されない。
本発明の再構成可能（reconfigurable）なロジック・システムは、複数の再構成可能なロジック・デバイス（logic  device）によって構成されている。各ロジック・デバイスは、少なくとも組み合わせロジック・エレメント（logic  element）及び格納エレメント（storage  element）を提供するために再プログラム可能に構成することができる内部回路を有している。また、このプログム可能なロジック・デバイスは、ロジック・デバイスの機能エレメント（functional  element）の中から選択された１つの機能エレメントに再プログラム可能に相互接続することができる入力／出力端子を有している。再プログラム可能なロジック・デバイスは、各入力／出力端子に設けられた入力デマルチプレクサ（input  demultiplexer）及び出力マルチプレクサ（output  multiplexer）を有している。入力デマルチプレクサは、時間多重化信号を受信して、これを１つ又は複数の内部信号に分割する。出力マルチプレクサは、１又は複数の内部信号を単一の物理的な相互接続に結合する。
また、本発明は、複数の再プログラム可能な相互接続デバイスによって構成されている。各相互接続デバイスは、入力／出力端子と、選択された入力／出力端子の間に相互接続を提供するように再プログラム可能に構成することができる内部回路を有している。また、再プログラム可能な相互接続デバイスは、各入力／出力端子に設けられた入力デマルチプレクサ及び出力マルチプレクサを有している。入力デマルチプレクサは、時間多重化された入力信号を受信して、これを１つ又は複数のコンポーネント信号に分割する。出力マルチプレクサは、１又は複数のコンポーネント信号を第二の単一の物理的な相互接続として結合する。
また、本発明は、再プログラム可能なロジック・デバイス上のプログラム可能な入力／出力端子を、再プログラム可能な相互接続デバイス上の入力／出力端子に接続する１組の固定された電気的導体を含む。
本発明の他の観点では、ロジック・アナライザが、エミュレーションを受けている設計の完全な視認性を提供するロジック・エミュレーション・システムに統合されている。本発明のロジック・アナライザは、その構成部分がエミュレーション・システムの多くの資源に統合される形で分配される。本発明のロジック・アナライザは、少なくとも、ロジック・ボードの各ロジック・チップにプログラムされるスキャン・チェーン（scan  chains）を有している。スキャン・チェーンは、少なくとも１つのフリップ・フロップにより構成される。スキャン・チェーンは、エミュレーションを受けている設計のシーケンシャル・ロジック・エレメントの選択されたサブセットにプログラム可能な形で接続することができる。
ロジック・アナライザは、さらに、スキャン・チェーンとの通信を行うメモリ・デバイスを含む。このメモリ・デバイスは、エミュレーションを受けているロジック設計のシーケンシャル・ロジック・エレメントからのデータを格納する。制御回路は、エミュレーション・システムのロジック・チップと通信して、スキャン・チェーンのクロックとなるロジック・アナライザ・クロック信号を生成する。制御回路は、また、ロジック・チップの中で予め定められた信号の組み合わせが発生したときに、トリガ信号を生成する。
エレメントの供給及び組み合わせの種々の新規な詳細を含む、本発明の上記の及び他の好ましい特徴は、添付する図面を参照してより詳しく記載されており、また請求の範囲に指摘されている。発明の実施する特定の方法及び回路は、説明のために示されており、発明の範囲を制限するものではないと理解すべきである。当業者に理解されるように、本発明の原理及び特徴は、本発明の趣旨を逸脱することなく、多くの様々な、多くの実施例において用いることができる。
【図面の簡単な説明】
本発明のさまざまな側面を解説するための実施例を示す添付図面を参照することにより、新規な特徴及び優位性が明らかとなる。
図１は、時間多重を組み込んだ部分的なクロスバー・ネットワークを示すブロック図である。
図２は、２対１の時間多重における信号の関係を示すタイミング図である。
図３は、２対１の時間多重を行うためにＦＰＧＡ内に必要な回路を示すブロック図である。
図４は、多重を行うチップ内の等価回路を示すブロック図である。
図５は、４対１の時間多重を行うために必要な信号の関係を示すタイミング図である。
図６は、４対１の時間多重を行うためにＦＰＧＡ内に必要なロジックを示すブロック図である。
図７は、多重を行うチップ内の等価回路を示すブロック図である。
図８は、ハードウェア・エミュレーション・システムに好適なパルス幅エンコーディング処理のための信号の関係を示すタイミング図である。
図９は、ハードウェア・エミュレーション・システムに好適な位相エンコーディング処理のための信号の関係を示すタイミング図である。
図１０は、ハードウェア・エミュレーション・システムに好適なシリアル・データ・エンコーディング処理のための信号の関係を示すタイミング図である。
図１１は、本発明の好ましい実施例のロジック・ボードのブロック図である。
図１２は、本発明の好ましい実施例の種々の回路基板の間の相互接続を示すブロック図である。
図１３は、本発明の好ましい実施例の物理的な構成を示す図である。
図１４は、より少ないロジック容量を有する現時点での好ましいバージョンのエミュレーション・システムの種々の回路基板の間の相互接続のブロック図である。
図１５は、１つのロジック・ボードと１つのＩ／Ｏボードを有する図１４に記載のエミュレーション・システムの物理的な構成を示す図である。
図１６は、Ｉ／Ｏボード及びコア・ボード（core  board）のブロック図である。
図１７は、マルチプレクサ・ボード（mux  board）のブロック図である。
図１８は、拡張可能なマルチプレクサ・ボードのブロック図である。
図１９は、本発明の好ましいハードウェア・エミュレーション・システムにおけるユーザー・クロックの分配状態を示すブロック図である。
図２０は、本発明の好ましいハードウェア・エミュレーション・システムの制御構造を示すブロック図である。
図２０ａは、本発明の好ましい実施例のロジック・アナライザのブロック図である。
図２０ｂは、本発明の好ましい実施例のロジック・アナライザ信号のデータ経路を示すブロック図である。
図２０ｃは、本発明の好ましい実施例におけるロジック・アナライザのイベント（event）のロジック・チップ内での分配状態を示すブロック図である。
図２０ｄは、格納エレメント及び外部入力値からプローブ信号（probed signal）を計算する状態を示すロジック図である。
図２１は、本発明の好ましいハードウェア・エミュレーション・システムをプログラムする状態を示すフロー・チャート図である。
図２２は、本発明の好ましい実施例に対応する動作テストベンチ・コンパイラ（behavioral  testbench  compiler）により作成されたソフトウェア−ハードウェア・モデルの編集に必要なステップの順序を示すフロー図である。
図２２ａは、本発明の好ましい実施例のＬＣＭメモリ・ジェネレータ（memory generator）によって生成され得るメモリ回路の例を示すブロック図である。
図２３は、本発明の好ましい実施例に対応するマイクロプロセッサのイベント同期バス（microprocessor  event  synchronaization）の共同シミュレーション・ロジック（co-simulation  logic）の特別な接続を表現するために作成されたネットリスト構造のブロック図である。
図２４ａは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セル（time-division-multiplexing  cell）の概略図である。
図２４ｂは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｃは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｄは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｅは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｆは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｇは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｈは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｉは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｊは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２４ｋは、本発明の好ましい実施例におけるロジック・チップのＩ／Ｏピンの種別に応じて挿入される時分割多重セルの概略図である。
図２５は、本発明の好ましい実施例のイベント検出セル（event detection cell）のブロック図である。
図２６は、本発明の一実施例に対応する特別なイベント多重セル（special event-multiplexing  cell）を用いて１組ごとに時間多重化されるＡＮＤツリーの出力状態を示す概略図である。
図２７は、本発明の好ましい実施例のイベント検出ダウンロード回路（event  detector  download）のブロック図である。
図面の詳細な説明
以下に、図面を参照しながら、現時点において好ましい本発明の装置及び方法を説明する。
図１は、本発明のハードウェア・エミュレーション・システムの好ましい実施例のパーシャル・クロスバー・インターコネクション（partial  crossbar  interconnect）の一部を示したものである。パーシャル・クロスバー・インターコネクションのアーキテクチャの実施例は、本発明の譲受人と同一の譲受人に譲渡されたＢｕｔｔｓ等による米国特許Ｎｏ．５，０３６，４７３号、５，４４８，４９６号、５，４５２，２３１号に開示されている。米国特許Ｎｏ．５，０３６，４７３号、５，４４８，４９６号、５，４５２，２３１号の開示内容を完全な形での参照により組み込む。パーシャル・クロスバー・インターコネクションでは、各ロジック・チップの入力／出力ピンは、各ロジック・チップで同一の分割手法を用いて適当なサブセットに分割される。各マルチプレクサ・チップ（Mux chip）（クロスバー・チップとも呼ばれる）は、各ロジック・チップの同一のサブセットに接続される。このためクロスバー・チップ‘n’は、各ロジック・チップのピンのサブセット‘n’に接続される。サブセットと同じ数のクロスバー・チップが用いられ、各クロスバー・チップは、サブセットのピンの数にロジック・チップの数を乗算した数のピンを有する。各ロジック・チップ／クロスバー・チップの組は、各サブセットのピンと同じ数の、経路と呼ばれるワイヤによって相互接続される。
図１のパーシャル・クロスバー・インターコネクションは、多くの再プログラム可能な相互接続ブロック１２、好ましい実施例ではマルチプレクサ・チップ（Mux  chip）により構成される。図１のパーシャル・クロスバー・インターコネクションは、さらに、複数の再プログラム可能な構成ロジック・チップ（reprogrammable  configurable  chip）１０、現時点での好ましい実施例ではフィールド・プログラマブル（field-programmable）・ゲート・アレイ（ＦＰＧＡ）により構成される。各マルチプレクサ・チップ１２は、各ロジック・チップ１０に対して１つ又は複数の接続を有する。Ｂｕｔｔｓが開示している好ましい実施例では、ロジック・チップからマルチプレクサ・チップに向かう各設計信号は、１つの物理的相互接続を必要とする。換言すれば、ロジック・チップ１０の１つのピン上の１つの信号は、マルチプレクサ・チップ１２の１つのピンに相互接続される。本発明の実施例では、パーシャル・クロスバー・アーキテクチャにおける各物理的相互接続は、１つ又は複数の設計信号を表わす。
各マルチプレクサ・チップ１２は、クロスバー２２、複数の入力デマルチプレクサ２４及び複数の出力マルチプレクサ２６を有する。入力デマルチプレクサ２４は、時間多重入力信号を１つ又は複数のコンポーネント信号に分割する。コンポーネント信号は、クロスバー２２を介して分離して伝送される。これらの信号は、出力マルチプレクサ回路２６によって、同一又は異なる組み合わせにおいて再び多重化される。好ましい実施例では、時間多重信号は、マルチプレクサ・チップ・クロスバー２２を経由して伝送されない。時間多重信号をマルチプレクサ・チップ、クロスバー２２を経由して伝送しないことによって、マルチプレクサ・チップに対する入力信号及び出力信号が異なる組み合わせで組み合わされるため、パーシャル・クロスバー・ネットワークをルーティング（routing）する柔軟性が向上する。これは、時間多重周波数がコンポーネント信号の平均スイッチング比よりも格段に高いため、マルチプレクサ・チップの消費電力を削減する。
ロジック・チップ１０は、また、複数の入力デマルチプレクサ３４及び出力マルチプレクサ３６を有する。出力マルチプレクサ３６は、１つ又は複数のロジック・チップ１０の信号を１つの物理的相互接続に組み合わせる。入力デマルチプレクサ３４は、時間多重信号を１つ又は複数の内部ロジック・チップ１０の信号に分割する。現時点で好ましい実施例では、これらのマルチプレクサ３６及びデマルチプレクサ３４は、商業的に入手可能な既製のＦＰＧＡの内部的に構成可能なロジック・ブロックを使用して構成される。しかしながら、これらは、エミュレーションのために注文設計された再プログラム可能なロジック・チップの入力／出力ブロックを用いて構成することもできる。
図１は、専ら説明のためのものであるが、それぞれ４つのピンを有する２つのマルチプレクサ・チップ１２及びそれぞれ２つのピンを有する４つのロジック・チップ１０を示している。好ましいハードウェア・エミュレーション・システムの現実的な実施例では、より多くの種類のチップを有し、各チップはより多くのピンを有するであろう。マルチプレクサ・チップ１２、ロジック・チップ１０の実際の数及び各チップのピンの数は、純粋に設計上の選択の問題であり、達成すべき望ましいゲート容量に依存する。現時点における好ましい実施例では、各プリント回路基板は、５４個のマルチプレクサ・チップ及び３７個のロジック・チップ１０を含む。現時点において好ましいロジック・チップ１０は、４０３６ＸＬ  ＦＰＧＡ（“ロジック・セル・アレイ”とも呼ばれる）であり、Xilinx Corporationによって製造されたものである。しかしながら、Altera Corporation、Lucent  Technologies、Actel  Corporation等によって提供される他の再プログラム可能なロジック・チップも使用可能であることに注意すべきである。現時点における好ましい実施例では、３６個のロジック・チップ１０が５４個のマルチプレクサ・チップ１２の各々に５つの接続を持っている。これは、これらの３６個のロジック・チップ１０の各々の５つのピンが５４個のマルチプレクサ・チップ１２の各々の５つのピンに対する物理的、電気的な接続を有している。３７番目のロジック・チップ１０は、５４個のマルチプレクサ・チップのそれぞれに対して３つの接続を持っている。これは、３７番目のロジック・チップ１０の３つのピンが、５４個のマルチプレクサ・チップ１２の各々の３個のピンに物理的、電気的に接続されていることを意味する。
図２は、２対１の時間多重エミュレーション・システムのタイミング図であり、内部ロジック・チップ信号Ａ４０及び内部ロジック・チップ信号Ｂ４２が単一の出力信号４６に多重化される。多重クロック信号４４は、分周クロック信号５０を生成するために２分周される。同期信号４８は、多重クロック分周器６８（図３参照）を同期させる。すなわち、同期信号４８がローレベルの時、多重クロック４４の立下りエッジによって分周クロック信号５０をゼロに設定する。分周クロック５０は、各立ち上がりエッジで内部信号Ａ４０をサンプリングする。このサンプルは、フリップ・フロップ又はラッチ（図３参照）のような格納エレメントに格納される。同じ分周クロック信号５０は、各立ち下りエッジで内部信号Ｂ４２をサンプリングするために使用される。このサンプルは、他のフリップ・フロップ又はラッチ（図３参照）に格納される。好ましい実施例では、多重クロック信号４４は、信号Ａ４０及び信号Ｂ４２に対して非同期であってもよい。分周クロック信号５０の値がハイレベルの時には、先にサンプリングされた信号Ａ４０は出力信号４６に転送される。分周クロック信号５０がローレベルの時には、先にサンプリングされた信号Ｂ４２は出力信号４６に転送される。
図３を参照すると、現時点で好ましい実施例のＦＰＧＡ１０内に設けられ、図２に示す信号のタイミングを作成するロジックの詳細が示されている。２対１のクロック分周器６８は、多重クロック信号４４を分周して分周クロック信号５０を生成する。クロック分周器６８は、フリップ・フロップ６８ａ、ＡＮＤゲート６８ｂとインバータ６８ｃを有する。分周クロック信号５０は、出力マルチプレクサ６６（図１のマルチプレクサ３６参照）及び入力デマルチプレクサ６４（図１のデマルチプレクサ３４参照）に入力される。クロック分周器６８は、システム内のすべてのクロック分周器が同期化されるのを補償するために、同期信号４８によって周期的にリセットされる。入力デマルチプレクサ６４は、２つのフリップ・フロップ６５ａ及び６５ｂを有する。フリップ・フロップ６５ａ及び６５ｂは、多重クロック４４が供給される。１つのフリップ・フロップ（例えば６５ｂ）は、分周クロック信号５０がハイレベルの時にイネーブルされ、他のフリップ・フロップ（例えば６５ａ）は、分周クロック信号５０がローレベルの時にイネーブルされる。分周クロック信号５０は、ＦＰＧＡ１０の低スキュー・ライン（low-skew  line）を維持するために、入力デマルチプレクサ６４及び出力マルチプレクサ６６のフリップ・フロップ６５ａ、６５ｂに対するクロックとしては直接に使用されない。フリップ・フロップ６５ａ又は６５ｂのいずれかの出力は、静的にデマルチプレクスされた設計信号をＦＰＧＡ１０のコア６２（ＦＰＧＡ１０のコア６２は、ユーザー設計のロジック機能を実現するために使用される構成可能なエレメントを有する。）に供給する。出力マルチプレクサ６６は、多重クロック４４が供給される２つのフリップ・フロップ６７ａ、６７ｂを有する。出力マルチプレクサ６６は、２対１のマルチプレクサ６７ｃも有する。一方のフリップ・フロップ（例えば、フリップ・フロップ６７ｂ）は、分周クロック信号５０がハイレベルの時にイネーブルされ、他のフリップ・フロップ（例えば、フリップ・フロップ６７ａ）は、分周クロック信号５０がローレベルの時にイネーブルされる。２対１のマルチプレクサ６７ｃは、フリップ・フロップ６７ａ又はフリップ・フロップ６７ｂのいずれかの出力Ｑを選択し、出力ピンに出力する。
マルチプレクサ・チップ１２に対応する回路を図４に示す。ロジック・チップ１０の回路とは異なり、マルチプレクサ・チップ１２の出力マルチプレクサ７６（図１のマルチプレクサ２６参照）は、フリップ・フロップを備えてなく、そのため、２対１のマルチプレクサ７６ａを有している。これは、好ましい実施例では、マルチプレクサ・チップ１２を介した遅延が小さいので実現可能である。付加的なロジックを省略するために、入力デマルチプレクサ７４（図１のデマルチプレクサ２４参照）のフリップ・フロップ７４ａ、７４ｂは、イネーブル入力を持たない。その代わり、分周クロック信号５０がフリップ・フロップ７４ａ、７４ｂに直接に供給される。クロック分周器７８は、好ましくは、フリップ・フロップ７８ａ、ＡＮＤゲート７８ｂ及びインバータ７８ｃを有する。クロック分周器７８、入力デマルチプレクサ７４、出力マルチプレクサ７６は、図３の対応するエレメントと同様に動作する。
マルチプレクス・チップ１２の入力／出力（“Ｉ／Ｏ”）ピンが与えられた設計に対して入力又は出力となるかは前もって分からないため、マルチプレクサ・チップ１２の全てのＩ／Ｏピンは、入力デマルチプレクサ７４及び出力マルチプレクサの両方を含んでいる。
本発明の概念を利用することにより、ピンが、ある時点では入力となり、ある時点では出力となる、４対１の時間多重を行うことが可能である。図５は、４対１の時間多重のタイミング図を示すものである。２対１の時間多重の場合と同様に、多重クロック信号４４及び同期信号４８が存在する。多重クロック信号４４は、分周クロック信号５０を生成するために２分周される。分周器は、同期信号がローレベルで、多重クロック信号４４が立ち下がった時にリセットされる。これらに加えて、分周クロック信号５０をさらに２分周した追加の方向信号８０が存在する。方向信号８０は、各時点においてピンが入力であるか出力であるかを制御する。４つのイネーブル信号Ｅ０−９０、Ｅ１−９２、Ｅ２−９４及びＥ３−９６は、後述するように、ロジック・チップ１０の各フリップ・フロップをイネーブルするために使用される。これらの４つの信号は、分周クロック信号５０及び方向信号８０から形成される。
分周クロック信号５０は、外部信号９８をサンプリングし、方向信号８０がローレベルの時に、内部入力信号Ｅ−８６及びＦ−８８を生成する。方向信号８０がローレベルの時には、ピンが入力方向で動作していることを示す。内部入力信号Ｅ−８６は、分周クロック信号５０の立ち上がりエッジでサンプリングによって生成される。内部入力信号Ｆ−８８は、分周クロック信号５０の立ち下りエッジでサンプリングによって生成される。方向信号８０がハイレベルの時には、これを受信したピンは出力として動作する。内部出力信号Ｃ−８２は、分周クロック信号がローレベルの時に外部信号９８に出力され、分内部出力信号Ｄ（８４）は、分周クロック信号５０がハイレベルの時に出力される。
図６を参照すると、図５のタイミング信号を生成するためにロジック・チップ１０に設けられたロジックの詳細が示されている。クロック分周器１０４は、多重クロック信号４４を分周し、分周クロック信号５０及び方向信号８０を生成する。クロック分周器１０４は、フリップ・フロップ１０４ａ、１０４ｂ、ＡＮＤゲート１０４ｃ、１０４ｄ、インバータ１０４ｅ、イクスクルーシブＯＲゲート（exclusive-or  gate）１０４ｆ、ＡＮＤゲート１０４ｇ〜１０４ｊを有する。クロック・分周器１０４は、システム内の全てのクロック分周器１０４が同期されるのを補償するために、同期信号４８によって周期的にリセットされる。これらに加えて、クロック分周回路１０４は、また、イネーブル信号Ｅ０−９０、Ｅ１−９２、Ｅ２−９４及びＥ３−９６を生成する。これらの信号は、入力／出力マルチプレクサ回路１００及び１０２においてイネーブルとして使用される。
入力／出力マルチプレクサ回路１００は、図５に対応するタイミングを有している。外部信号９８は、方向信号８０がローレベルの時に入力となる。信号Ｅ−８６及び信号Ｆ−８８は、イネーブル信号Ｅ０−９０及びイネーブル信号Ｅ１−９２がアクティブである時に外部信号９８からサンプリングされ、それぞれフリップ・フロップ１００ａ及び１００ｂに置かれる。信号Ｄ−８４及びＣ−８２は、イネーブル信号Ｅ２−９４及びＥ１−９２がアクティブである時に、フリップ・フロップ１００ｃ及び１００ｄにセーブされる。好ましい入力／出力マルチプレクサ回路１００は、また、マルチプレクサ１００ｅ及びバッファ１００ｆを有する。これらの構成により、フリップ・フロップ１００ｃ及び１００ｄに予めセーブされた信号Ｄ−８４及びＣ−８２は、方向信号８０がハイレベルの時に外部信号９８に連続して出力される。
入力／出力のマルチプレクサ回路１０２は、方向信号８０がローレベルの時に信号１０６が出力となるようにタイミングが変更されている点を除いて、同様の構成である。入力／出力マルチプレクサ１０２は、好ましくは、フリップ・フロップ１０２ａ〜１０２ｄ、マルチプレクサ１０２ｅ、バッファ１０２ｆを有する。ここで、入力／出力マルチプレクサ１００を“インアウト”マルチプレクサ（inout  multiplexer）と呼び、マルチプレクサ１０２を“アウトイン”マルチプレクサ（outin  multiplexer）と呼ぶものとする。ピンがシステム内で互いに接続されている時、一方のピンがドライブ（drive）し、他方のピンが読み取る（即ち、信号の受信準備ができている又は信号を受信中）ことができるように、インアウト・ピンは常にアウトイン・ピンに接続されている必要がある。
対応する４線（4-way）の時間多重回路を、図７にマルチプレクサ・チップ１２として示す。クロック分周器１３２は、分周クロック信号５０及び方向信号８０を生成する。クロック分周器１３２は、フリップ・フロップ１３２ａ、１３２ｂ、ＡＮＤゲート１３２ｃ、１３２ｄ、インバータ１３２ｅ及びイクスクルーシブＯＲゲート１３２ｆを有する。ロジック・チップ１０と同様に、インアウト・マルチプレクサ１２０及びアウトイン・マルチプレクサ１２２が存在する。インアウト・マルチプレクサ１２０は、好ましくは、フリップ・フロップ１２０ａ、１２０ｂ、２対１マルチプレクサ１２０ｃ及びバッファ１２０ｄを有する。インアウト・マルチプレクサ１２０は、図５に示すタイミングを有する。外部信号９８は、方向信号８０がローレベルの時に入力となり、方向信号８０がハイレベルの時に出力となる。内部信号１２４及び１２６は、方向信号８０がローレベルの時に外部信号９８からサンプリングされる。内部信号１２８及び１３０は、方向信号８０がハイレベルの時に外部信号９８に出力される。
アウトイン・マルチプレクサ回路１２２は、信号１３４が、方向信号８０がハイレベルの時に入力となり、方向信号８０がローレベルの時に出力となるようにタイミングが変更されている点を除いて、同様の構成である。アウトイン・マルチプレクサ１２２は、好ましくは、フリップ・フロップ１２２ａ、１２２ｂ、２対１のマルチプレクサ１２２ｃ及びバッファ１２２ｄを有する。マルチプレクサ・チップ１２のアウトイン・ピンは、他のマルチプレクサ・チップ１２又はロジック・チップ１０のインアウト・ピンに接続する必要がある。付加的な構成ビット（configuration  bit）（図７に図示していない）により、マルチプレクス・チップ１２の任意のピンを、多重化（non-multiplexed）されていない入力又は出力、２対１に多重化された入力又は出力としても、４対１に多重化されたインアウト・ピン又はアウトイン・ピンとしてもプログラム可能に構成することができる。これは、選択的に、方向信号８０を常にローレベル（２対１入力に対応）、常にハイレベル（２対１出力に対応）、非反転状態（１２０のようなアウトイン・４対１ピンに対応）とし、又は反転状態（１２２のようなアウトイン・４対１ピンに対応）とすることによって実現される。これらに加えて、外部信号９８は、非多重化入力に対応して、コア信号１２４に直接に接続することができる。コア出力１２８及び１３０は、非多重化入力に対応して、バッファ１２０ｄの入力及びイネーブル・ピンに直接に接続することができる。
好ましい実施例では２対１及び４対１の時間多重を採用しているが、ここに開示された技術は、設計者によって選択されるあらゆる他の要因による多重化についても拡張して適用することができる。一般的には、高度に多重化を行うと、エミュレーション速度は低下するが、物理的なワイヤ及びピンをより多くのロジック設計信号間で共有することができるため、ハードウェアを簡略化することができ、低コストとなる。
さらに、エミュレーション・システムに使用可能な、情報の複数のビットを１つの物理的ワイヤに多重化する多くの他の方法が存在する。これらの技術の例としては、パルス幅変調、位相変調及びシリアル・データ・エンコーディング等がある。特定の実施例どの方法を選択するかは、設計者の選択の問題であり、動作速度、コスト、消費電力及び必要とされるロジックの複雑さの間での相対関係に依存する。
ハードウェア・エミュレーション・システムにおいて重要となるこれらのさらに複雑なエンコーディング手法の一側面は、消費電力を低減することができることである。ハードウェア・エミュレーション・システムは、通常、数千の相互接続経路を有している。システムを通じた遅延を最小化するために、これらの相互接続経路を異なるロジック設計信号の間でできるだけ速く切り替えることが望ましい。しかしながら、システムの消費電力は、相互接続経路が切り替えられる速度に大きく依存している。大規模なシステムでは、電力の生成及び分配とこれに伴う発熱の除去のために、システムの複雑さとコストが大きく増大する。このため、高速で動作するが、大きな電力を必要としない多重方式を採用することが望ましい。消費電力を最小化する方法の１つとして、設計信号を連続して転送するのではなく、設計データが変更された時にのみ設計信号情報を転送するものがある。この方法は、現時点での好ましい実施例で採用されている。
エンコーディング方法を選択する時に考慮すべき他の重要な観点は、相互に非同期で又はマスタ・多重クロック（master  multiplexing  clock）に非同期で動作する相互接続を有することができることである。前記した、現時点での好ましい実施例に対応する時間多重の簡単な形式では、マスタ・多重クロックを、低スキュー（low  skew）でシステム内の全てのロジック・チップ１０及びマルチプレクス・チップ１２に分配する必要がある。これに加えて、マスタ・多重クロックは、システム内の最も長い相互接続上を信号が通過可能であるように十分に低い速度とする必要がある。同時に、システム内の最も短い相互接続においてホールドタイム違反（hold-time  violation）が発生してはならない。ホールドタイム違反は、受信装置がデータ信号をフリップ・フロップ又はラッチに適切にセーブする前に、送信装置がデータ信号を除去することによって生じ得る。低スキューの、マスタ・クロックに対する要求によって、エミュレーション・システムの複雑さとコストは大幅に増大する。これに加えて、想定可能な最短データ経路上でのホールドタイム違反を防止するとともに、想定可能な最長データ経路上を信号が通過するのに十分な時間を確保することは、多重クロックが比較的低速で動作しなければならないことを意味する。すでに説明したとおり、これは、エミュレーション・システムの実効的な動作速度を限定するため、好ましくない。
前記した、時間多重の最も簡単な形式に関する発明の概念は、より複雑なエンコーディング方法にも同様に適用可能である。以下に、それを説明する。パルス幅変調、位相シフト変調及びシリアル・エンコーディングを用いたエンコーディング方法は、消費電力を低減し、最も簡単な形式の時間多重に本質的な問題である比較的低い動作速度を増加させることができる。これらのすべての手法の欠点（簡単な時間多重に関して）は、これらが格段に多くのエンコーディング・ロジック及びデコーディング・ロジックを必要とすることである。このため、現時点での好ましい実施例では、簡単な時間多重が用いられていた。デジタル・ロジックのコストが物理的なピンや回路基板経路（circuit  board  trace）のコストに比較して減少するにつれ、将来的には、１つ又は複数のこれらのより複雑なエンコーディング手法が使用されることとなろう。
図８を参照すると、ハードウェア・エミュレーション・システムに適すると思われるパルス幅変調の１つの形式が示されている。外部信号１４６は、通常はローレベルである。設計信号１４０又は１４２が変化すると、パルスが外部信号１４６に出力される。高速の非同期クロック信号１４４は、システム内の全てのチップに分配される。図2を参照して述べた多重クロック４４とは異なり、非同期クロック信号１４４は、システム内の任意の２つのチップ間、又は同じチップの２つのピンの間であっても同期化する必要がない。そのため、図２を参照して述べた同期信号４８は必要ない。また、非同期クロック１４４は、外部信号１４４に生成される最小パルス幅が品質の劣化を伴わずに相互接続を介して通過することができる限り、任意の速度で動作させることができる。外部信号１４６に出力されるパルスは、２つの設計信号１４０及び１４２の信号変化時点における値が００、０１、１０又は１１であるか否かに応じて、１つ、２つ、３つ又は４つのクロックの幅を有する。しかしながら、非同期クロック信号１４４は、情報が失われることがないように、設計信号１４０及び１４２の連続するエッジの間に常に５つのクロック・サイクルが経過するよう十分に高速でなければならない。データ信号１４０及び１４２は、外部信号１４６がハイレベルとなるたびに発生する非同期クロック１４４のサイクル数をカウントすることにより、外部信号１４６から再生することができる。現実の実施例では、非同期クロック１４４は、再生された信号が明確に判別できるように、ここに示す速度の２倍又は３倍の速度で動作することになるであろう。また、付加的な回路は、設計信号が変化しない場合でも設計を適正に初期化できるようにするために、周期的にデータを転送するための付加回路が加えられる。
設計信号１４０及び１４２は、非同期クロック１４４と平均的に比較して比較的頻繁には変化しないため、消費電力は、前記した連続的な時間多重に比べて低くなる。それに加えて、このエンコーディング手法は、送信回路及び受信回路の間の遅延量の変化の影響を受けない。
このパルス幅エンコーディング手法を実現するために必要なロジック回路は、回路設計の分野における当業者によって設計が可能である。ここでは、これ以上論じない。しかしながら、当業者は、同じ機能を実現する、多くの異なった種類のロジック回路を設計することができることに注意すべきである。例えば、２つではなく、３つの設計信号を１つの外部信号１４６にエンコードすることができる。また、設計信号１４０及び１４２の異なるエンコード手法を用いることができ、又は外部信号１４６のデフォルト値を０ではなく１とすることもできる。
図８に示したパルス幅変調エンコーディング手法は、以下の制約がある。パルス幅変調エンコード手法では、パルス幅は、外部信号１４６の立ち上がりエッジから外部信号１４６の立ち下りエッジの間で測定される。しかしながら、信号がルーティング・チップ（routing  chips）の多くのレベルを通過する時、立ち上がりエッジは、しばしば、立ち下りエッジとは異なる遅延が発生する。このため、信号多重の速度は、ルーティング・チップの多くのレベルを通過した後でも信号の値を判別することができるように、低速化する必要がある。また、図８の変調手法は、避けることのできない一時的な信号の変化又は外部信号１４６のグリッチに敏感である。このため、誤った信号の値が送信される可能性がある。
図９を参照すると、ハードウェア・エミュレーション・システムに適していると思われる位相変調の一方式を示す。内部の位相ロックループ（“PLL”）回路は、入力として非同期クロック１４４を用い、連続的に０から３までカウントする（図９のＰＬＬカウント１５０参照）。このＰＬＬ回路は、一般的にデジタル位相ロックループ（“DPLL”）と呼ばれるもので、相補型の金属酸化半導体（“CMOS”）集積回路技術を用いて比較的簡単に構成することができる。設計信号の１４０又は１４２に変化が生じると、外部信号１５２は、設計信号１４０及び１４２の値に依存した時間に変化する。例えば、信号Ａ−１４０の最初の変化の後では、信号Ａ−１４０及び信号Ｂ−１４２の両方がハイレベルとなる。そのため、外部信号１５２は、ＰＬＬがカウント３の状態（Ａ、Ｂ＝１１）の時に変化する。その後、信号Ｂ−１４２の変化の後で、信号Ａ１４０がハイレベルとなり、信号Ｂ−１４２がローレベルとなる。このため、外部信号１５２は、ＰＬＬがカウント２の状態（Ａ、Ｂ＝１０）の時に変化する。
受信回路は、転送すべきデータがない時に定期的に送信される同期パルスによって送信ＰＬＬとの同期状態を保持される、マッチングＰＬＬを有する。同期パルスは、送信ＰＬＬの時間０及び時間２において発生する２つの変化により構成される。１つのＰＬＬサイクル内で外部信号１５２に２つの変化が生ずるのは同期パルスが送信される時のみであるため、同期パルスは、受信ＰＬＬによって認識することができる。同期パルスによって受信ＰＬＬのカウントが除々に調整され、いくつかの同期パルスが発生した後に受信ＰＬＬは送信ＰＬＬと同期状態となる。同期パルスは、信号Ａ−１４０及び信号Ｂ−１４２の変化に比べて比較的少ない頻度で発生させれば充分であるため、消費電力は大きくは増加しない。現実の実施例では、非同期クロック１４４は、外部信号１５２の異なるエッジ変化時間の間を明確に区別するのに十分な分解能を持たせるために、図９に示す速度の２倍又は３倍の相対速度で動作させることになるであろう。代わりに、分解能を向上させるために、位相ロックループを非同期クロック１４４の周波数の数倍の速度で動作させることもできる。また、設計信号Ａ−１４０及び設計信号Ｂ−１４２が変化していない場合でもその値を定期的に送信する回路を付加し、設計が適正に初期化されるようにすることもできる。
この位相エンコード手法で用いられる、デジタル位相ロックループを構成するために必要な回路、送信及び受信回路は、回路設計の技術分野における当業者によって設計可能であり、ここでは、これ以上論じない。
前記した位相変調エンコード手法は、これまでに論じたパルス幅変調手法（図８参照）に対していくつかの利点を有する。図８の外部信号１４６の場合に比べて、信号Ａ−１４０及び信号Ｂ−１４２の値を送信するために必要な外部信号１５２の変化が少ない。これにより、システムによって消費される電力が低減される。また、故障（glitch）パルス又は短パルスは同期パルスとして扱われ、ＰＬＬカウント１５０は除々に影響を受けるのみであるため、ノイズに対する回路の感度を引き下げることができる。これに加えて、同期パルスは常に１つの立ち上がりエッジと１つの立ち下りエッジを有しているため、立ち上がりエッジと立ち下りエッジを計時するために別個のＰＬＬカウンタを使用することができる。立ち上がりエッジと立ち下りエッジを個別に計時することにより、非同期クロック１４４は、非常に高い周波数で動作することができるとともに、信号Ａ−１４０及び信号Ｂ−１４２の再生の信頼性に影響を与えることなく、外部信号１５２を中間のルーティング・チップを介して通過させることができる。しかしながら、位相変調の主な欠点は、比較的大量のデジタル・ロジックを組み込む必要があることである。
ここに開示した位相変調エンコード手法については、本発明の趣旨を逸脱することなく様々な変更を加えることができる。例えば、ＰＬＬは、４つ以外の８又は１６の変化時点を認識することができる。また、設計信号に変化が発生する毎に外部信号１５２に複数のエッジを作成することによって、付加的な設計信号を送信することができる。例えば、設計信号Ａ及びＢは、外部信号１５２の最初のエッジで送信することができ、設計信号Ｃ及びＤは、外部信号１５２の２番目のエッジで送信することができる。これにより、外部信号１５２でより多くのデータを送信できるという効果を生じるが、速度は低くなる。
図１０を参照すると、ハードウェア・エミュレーション・システムに使用可能と思われる、変調の他の形式が示されている。この技術は、シリアル・データ・エンコーディングと呼ばれている。ＲＳ２３２Ｃ等の多くの一般的なプロトコルでは、シリアル・データ・エンコーディングの変形を使用している。設計信号Ａ−１４０又は設計信号Ｂ−１４２が変化すると、データのシリアル・ストリング（serial  string）が外部信号１６２に送信される。常に０であるスタート・ビットは、送信が開始されることを示す。次に、信号Ａ−１４０及び信号Ｂ−１４２の値が連続して送信される。最後に、常に１であるストップ・ビットが送信される。受信回路は、信号Ａ−１４０を再生するために外部信号１６２をサンプリングする前に、非同期クロック信号１４４を使ってスタート・ビットの立ち下りエッジから１及び１．５クロックだけ遅延させる。そして、信号Ｂ−１４２を再生するために外部信号１６２をサンプリングする前に、さらに１クロック遅延させる。現実の実施例では、信号Ａ−１４０及び信号Ｂ−１４２が送信されている時、外部信号１６２をその中央点で正確にサンプリングするために、非同期クロック１４４は、図１０に示す周波数より数倍高い周波数で動作することになろう。
シリアル・データ・エンコード手法を構成するために必要な回路は、回路設計の技術分野における当業者によって設計可能であり、ここでは、これ以上論じない。
シリアル・データ・エンコーディングは、比較的簡単なデジタル・ロジックを使用できるという利点がある。しかしながら、設計信号Ａ−１４０及び設計信号Ｂ−１４２に対する変化を送信する毎に外部信号１６２に複数のエッジが必要であるという欠点がある。これは、データ・レートが比較的低く、他の技術に比較して消費電力が比較的に高いことを意味する。
ここで開示したシリアル・データ・エンコード手法については、本発明の趣旨を逸脱することなく様々な変更を加えることができる。例えば、設計信号が変化した時毎に、２つ以上の設計信号の値を送信することもできる。
図８〜１０に示す各エンコード手法は、いくるかの形式のエラー・チェック技術を追加することによってさらに改良することができる。設計データは設計信号が変化したときにのみ送信されるため、送信エラーが発生すると、受信回路によって誤ったデータ値がラッチされることになり、またエミュレーションが誤動作する可能性がある。パリティ・チェックや巡回型冗長性チェック（CRC）等の一般的なエラー検出を用いることができる。
好ましい実施例のシステム面をさらに詳細に開示する。図１１を参照すると、ロジック・チップ（現時点での好ましい実施例ではＦＰＧＡ）及びマルチプレクサ・チップ１２を組み込んだ、好ましい実施例のロジック・ボード２００のブロック図が示されている。ロジック・ボード２００は、Ｂｕｔｔｓらによって開示されたものに類似するパーシャル・クロスバー・インターコネクションを有している。主な相違点は、本発明の現時点での好ましい実施例のパーシャル・クロスバーは、後述するロジック・チップ２０４に接続されているマルチプレクサの数が他のロジック・チップより少ないため、完全に同型（uniform）になっていないことである。現時点での好ましい実施例では、それぞれが２６０個のＩ／Ｏピンを有する５４個のマルチプレクサ・チップ１２及びそれぞれが２７０個のＩ／Ｏピンを有する３６個のロジック・チップ（FPGA）がある。現時点での好ましい実施例では、Xilinx  Corporation，San  Jose，California，U.S.A．により製造された部品番号ＸＣ４０３６ＸＬのＦＰＧＡをロジック・チップ１０として使用する。３６個のロジック・チップ１０の各々は、５４個のマルチプレクス・チップ１２の各々との間に５つの接続を有している。３７番目のロジック・チップ２０４は、ここでは共同シミュレーション（co-simulation）（CoSim）として知られているが、５４個のマルチプレクサ・チップの各々との間に３つの接続を有している。現時点での好ましい実施例では、３７番目のロジック・チップ２０４も、Xilinxによって製造された部品番号４０３６ＸＬのＦＰＧＡである。マルチプレクサ・チップ１２及びロジック・チップ１０、２０４の追加のピン（図示していない）は、ダウンロード、クロック分配及び他のシステム機能のために確保されている。以下に、ＣｏＳｉｍロジック・チップの目的を説明する。任意のマルチプレクサ・チップ１２からロジック・チップ１０への接続は、マルチプレクサ・チップ１２及びロジック・チップ１０を適当にプログラムすることにより、非多重、２対１の多重、４対１の多重とすることができる。
前記した相互接続に加え、ＣｏＳｉｍロジック・チップ２０４も、プロセッサ２０６と電気的に通信を行う。現時点での好ましい実施例では、プロセッサ２０６は、IBM  Corporationから入手可能なPowerPC  403GCチップである。プロセッサ２０６は、共同シミュレーションのために使用される。これは、Sampleらによる「Method  And  Apparatus  For  Design  Verification  using  Emulation  And  Simulation」という名称の米国特許第５，８４１，９６７号に開示されている。参考のため、米国特許第５，８４１，９６７号の開示内容をここに組み入れる。プロセッサ２０６は、診断機能や、マルチプレクサ・チップ１２、ロジック・チップ１０、２０４、ＲＡＭ２０８（以下に説明する）及びＳＧＲＡＭ２１０（以下に説明する）への情報のダウンロードに使用される。プロセッサ２０６は、ＶＭＥインターフェース（図示していない）を介してバックプレーン・コネクタ（backplane  connector）２２０に接続される。また、１２個のロジック・チップ１０は、３２個の静的・ランダム・アクセス・メモリ（static randomacess  memory）（RAM）・チップ２０８によって３２Ｋに接続される。このＲＡＭチップ２０８は、エミュレートされる回路の一部となり得る大きなメモリを構成するために使用される。また、ＲＡＭ２０８は、ロジック・チップ１０をマルチプレクサ・チップ１２に接続している線の一部に取り付けられる。このようにして、ＲＡＭが使用されていない場合には、ロジック・チップ１０からマルチプレクサ・チップ１２への接続は、通常の相互接続機能として使用することが可能であり、これらが失われることはない。ＲＡＭ２０８が特定のネットリストの一部のメモリを構成するために必要とされる場合には、それと通信するロジック・チップ１０にはＲＡＭコントローラ機能がプログラムされる。
マルチプレクサ・チップ１２は、バック・プレーン・コネクタ２２０及びターボ・コネクタ（turbo  connector）２０２との間にも接続を有している。バック・プレーン及びターボとの接続は、非多重、２対１の多重あるいは４対１の多重のいずれでもよい。ターボ・コネクタ２０２は、２つのロジック・ボード２００をサンドウィッチの形で電気的に接続するために使用される。２つのロジック・ボードを１組として直接に接続することにより、特定の設計について必要とされるバックプレーン接続が軽減される。バックプレーン・コネクタは、ロジック・ボードの一辺に沿って適合するものでなければならず、可能なバックプレーン接続の数は利用可能なコネクタの種類によって限定される。不十分なバックプレーン接続が存在する場合には、パーティショニング・ソフトウェア（partitioning software）は、効率的に動作することができず、ボードのロジック容量は低下する。サンドウィッチ状に接続された２つのエミュレーション・ボードを図１３に示す。２つより少ないエミュレーション・ボードから成る小規模なエミュレーション・システムが要求される場合には、ロジック回路が配設されていない特別のターボ・ループバック・ボード（turbo  loopback  board）が使用される。このようなシステムでは、この特別なターボ・ループバック・ボードは、ターボ・コネクタ２０２からバック・プレーン・コネクタ２２０に信号をルーティング（route）する。ターボ・ループバック・ボードを使用した構成の例を図１５に示す。
これに加えて、マルチプレクス・チップ１２は、１組の同期グラフィックＲＡＭ（SGRAM）２１０に対する８つの接続を有する。これらのＳＧＲＡＭ２１０は、分配されたロジック・アナライザのデータ経路を形成するために使用される。設計信号は、ロジック・チップ１０及びＣｏＳｉｍロジック・チップ２０４でサンプリングされ、マルチプレクサ・チップ１２を介してルーティングされ、そしてユーザによる将来的な解析のためにＳＧＲＡＭ２１０にセーブされる。ロジック・アナライザについて、以下で説明する。
ロジック・チップ１０及びＣｏＳｉｍロジック・チップ２０４は、また、イベント・バス２１２及びクロック入力・バス２１４が設けられている。イベント・バスは、イベント信号をロジック・チップ１０及びＣｏＳｉｍロジック・チップ２０４内からロジック・アナライザ制御回路（以下に説明する図２０ａ参照）にルーティングする。イベント・バスは、４つの信号により構成され、８つの信号を供給するために２対１に時間多重化される。イベント・バス２１２の信号は、バッファに格納され、そしてバックプレーン・コネクタ２２０上の付加ピン（図示していない）にルーティングされる。
バス２１４のクロックは、すべてのロジック・チップ１０及びＣｏＳｉｍロジック・チップ２０４（以下に説明する）にルーティングされる８つの低スキューの特別目的のクロック・ネット（clock  net）により構成される。バス２１４のクロックは、米国特許Ｎｏ．５，４７５，８３０号に説明されているように、クロック信号を分配するために使用される。バス２１４のクロックからのクロックは、バック・プレーン・コネクタ２２０上の付加ピン（図示していない）に接続される信号２１８からバッファ２１６を介して直接的に送られ、又は主クロック信号をＣｏＳｉｍロジック・チップ２０４内のロジックと組み合わせることによって作成される。ＣｏＳｉｍロジック・チップ２０４がクロック・ロジックを供給するために使用されている場合には、米国特許Ｎｏ．５，４７５，８３０号説明されているように、“クロック生成ＦＰＧＡ”として動作する。
図１２参照すると、ボード間の相互接続が示されている。ロジック・ボードは、ターボ・コネクタ２０２を介して接続される一対として組み立てられる。ロジック・ボードは、また、バックプレーン・コネクタ２２０（図１１参照）介してスイッチング・バックプレーン４２０に接続される。スイッチング・バックプレーン４２０は、ロジック・ボードに直角に配設されたマルチプレクサ・ボード４００により構成される。ロジック・ボード及びスイッチング・ボードの配置は、本発明の譲受人と同一の譲受人であるSampleらに譲渡された米国特許Ｎｏ．５，３５２，１２３号に開示されている。米国特許Ｎｏ．５，３５２，１２３号は、参考のために、ここに完全な形で組み込まれる。スイッチング・バックプレーン４２０は、また、Ｉ／Ｏボード３００に接続されている（図１２では、１つのＩ／Ｏボードのみが示されている。しかしながら、複数のＩ／Ｏボード３００を使用することも、本発明の一部であると考えられる。）。Ｉ／Ｏボード３００は、コア・ボード５００又は外部システム５４０に含まれる外部装置からの信号をルーティングするとともにバッファする機能を提供する。また、これらは、すべての外部ピンに対して刺激信号（stimulus  signal）を提供する能力を有している。それによって、エミュレートされる設計は、外部装置又は外部システムが無い場合でも動作可能である。
Ｉ／Ｏボード３００は、コア・ボード５００及びリピータ・ポッド５２０を介して外部システム５４０に接続される。簡略化のため、図１２では、現実のボード及び接続の数より低減されている。現時点における好ましい実施例では、２２個のマルチプレクサ・ボード４００、１から１０対のロジック・ボード２００及び最大８個のＩ／Ｏボード３００が存在する。現時点における好ましい実施例では、２以上のＩ／Ｏボードが使用されると、一対のロジック・ボード２００は、追加のＩ／Ｏボード３００の対の各々について失われる。現時点における好ましい実施例では、各Ｉ／Ｏボード３００は、ケーブルに取り付けられる、最大７つのリピータ・ポッド５２０を有するコア・ボード５００を１つ有している。現時点における好ましい実施例における各リピータ・ポッドは、８８の双方向信号をバッファする。
図１３は、好ましい実施例のシステムの物理的な構成を示したものである。マルチプレクサ・ボード４００は、ロジック・ボード２００及びＩ／Ｏボード３００に対して直角に設けられている。バックプレーン８００は、一方側にマルチプレクサ・ボード４００に対するコネクタを有し、他方側にロジック・ボード２００又はＩ／Ｏボード３００に対するコネクタを有する。図面の簡略化のため、１つのマルチプレクサ４００及び３対のロジック・ボード２００のみを示している。しかしながら、現時点における好ましい実施例では、現実には、２２個のマルチプレクサ・ボード４００及び最大７対までのロジック・ボード２００又はＩ／Ｏボード３００が存在する。Ｉ／Ｏボード３００は、コネクタ３３０を介してコア・ボード５００に取り付けられている。コア・ボード５００は、外部コネクタ５１０を有している。外部コネクタ５１０は、ケーブルを介してリピータ・ポッド５２０及び外部システム５４０（図１３に示していない）に装着される。電源ボード２４０は、４８ＶのＤＣ主電源を、ロジック・ボードの電源供給のために必要な３．３Ｖに変換する。この種の分配電源変換は、時間多重回路の電源に対する高い要求によって必要となる。これに加えて、システムは、コントロール・ボード６００及びＣＰＵボード７００（図２０参照）を含む。現時点での好ましい実施例では、ＣＰＵボード７００は、Themis  Computerやその他から入手可能な、ＶＭＥバス対応のPower-PCプロセッサ・ボードである。他の同様なプロセッサボードを利用することも可能である。使用する特定のプロセッサボードの選択は、コスト、速度、ＲＡＭ容量及びその他の要因の間での相対関係に依存する。ＣＰＵボード７００は、ネットワーク・インターフェースを提供し、エミュレーション・システムを総合的に制御する。コントロール・ボード６００は、クロック分配、ダウンロード及び他のボードのテスト機能を提供するとともに、ロジック・アナライザ及びパターン・ジェネレータ（構造及び機能は以下で説明する）の集中化機能を提供する。
また、現時点において好ましいエミュレーション・システムの縮小バージョンを構成することもできる。このシステムのブロック図を図１４に示す。縮小されたシステムは、スイッチング・バックプレーン４２０を持たない。その代わり、ロジック・ボード２００は、互いに直接に接続され、またＩ／Ｏボード３００に接続される。これは、システムのサイズが二対のロジック・ボード２００及び一対のＩ／Ｏボード３００に限定されため、可能である。バックプレーン接続は、図１４の上部に示される。各バックプレーン・コネクタ２２０からのピン（図１１に示されている）は、４つの等しいグループに分割される。各グループは、バックプレーンを介して、同一の対に含まれない２つのロジック・ボード２００の１つ及び各Ｉ／Ｏボード３００にルーティングされる。接続は、ロジック・ボード２００の場合にはターボ・コネクタ２０２を介して提供され、Ｉ／Ｏボード３００の場合には接続を必要としないため、同一の対に含まれる他のロジック・ボード２００又はＩ／Ｏボードに対してはバックプレーンを介して接続する必要はない。図１４に示す接続パターンは、ボード間の十分に余裕のあるルータビリティ（routability）を提供するが、スイッチング・バックプレーン４２０が高価となるのを避ける。大規模なシステムでは、Ｉ／Ｏボードは、コア・ボード５００及びリピータ・ポッド５２０を通じて外部システム５４０に接続される。図面の簡略化のために、第２のボードに対して、コア・ボード５００、リピータ・ポッド５２０及び外部システム５４０が現実には存在するが、示していない。追加のボードの組を、そうしなければ使われることのないバックプレーン及びターボ・コネクタの間を接続するために使用することにより、小規模なシステムのバージョンは、１から４個のロジック・ボード２００及び１個又は２個のＩ／Ｏボード３００のいずれかによって構成することができる。これらの追加ボードは、図１５に示されているターボ・ループバック・ボード２６０及びバックプレーン・ループバック・ボード２８０である。これらのボードのいずれもデジタル・ロジックを有していない。これらは、コネクタ間で信号をルーティングするに過ぎない。
１つのロジック・ボード及び１つのＩ／Ｏボードを有する小規模なシステムの物理的な図を図１５に示す。バックプレーン８０２は、これまでに図１４を参照しながら説明した接続を提供する。Ｉ／Ｏボードは、コネクタ３３０を介してコア・ボード５００に接続される。コア・ボード５００は、ケーブルを介してリピータ・ポッド５２０及び外部システム５４０（図１５には図示していない）を装着する外部コネクタ５１０を有する。電源ボードは２４０、４８ＶのＤＣ主電源をロジック・ボードの電源供給のために必要な３．３Ｖに変換する。これに加え、小規模なシステムは、これまでに図１３を参照して説明した大規模システムのように、コントロール・ボード６００及びＣＰＵボード７００を含む。４個以下のロジック・ボードが使用される時、ルーティング接続を確保するために、ターボ・ループバック・ボード２６０は、ロジック・ボード２００の使用されていないターボ・コネクタ２０２（図１１に示されている）からの信号をバック・プレーン８０２に接続する。ターボ・ループバック・ボード２６０は、システム内の１つ又は３つのロジック・ボード２００が存在する場合に使用される。追加のバックプレーン・ループバック・ボード２８０の対は、使用されていないロジック・ボード・スロットがある時に、バックプレーンを介したルーティング接続を確保するために使用される。これは、システム内に１つ又は２つのロジック・ボードが存在する場合に発生する。バックプレーン・ループバック・ボード２８０は、バック・プレーン信号（図４に示されている）のグループを互いに接続して、空のバックプレーン・コネクタが存在する時に信号が失われないようにする。
図１６に、Ｉ／Ｏボード３００及びコア・ボード５００のブロック図を示す。マルチプレクサ・チップ１２の第１列３０１は、Ｉ／Ｏボード３００のバックプレーン・コネクタ３２０に装着される。図の簡略化のため、３つのマルチプレクサ・チップ１２のみが第１列３０１に示されている。しかしながら、現時点における好ましい実施例では、最初の列３０１には１４個のマルチプレクサ・チップ１２が存在する。マルチプレクサ・チップ１２の第２列３０３は、マルチプレクサ・チップ１２の第１列に接続されるとともに、電界効果型トランジスタ（FET）３０８及びロジック・チップ３０４に接続される。ここでも、図面は、簡略化されて、２つのマルチプレクサ・チップ１２だけが示されている。現時点における好ましい実施例では、第２列３０３には１２個のマルチプレクサ・チップ１２が存在する。マルチプレクサ・チップ１２の２つの列３０１、３０２は、ルーティングにおける十分な柔軟性を達成することが要求される。それにより、任意の外部信号を、コア・ボード５００のリピータ・ケーブル・コネクタ５１０の任意のピンに接続することができる。ロジック・チップ３０４も、同期グラフィックＲＡＭ（SGRAM）３０２に装着される。現時点における好ましい実施例では、ロジック・チップ３０４は、ＦＰＧＡである。１つのロジック・チップ３０４と１つのＳＧＲＡＭ３０２のみが示されているが、現時点における好ましい実施例では、Ｉ／Ｏボード３００には６個のロジック・チップ３０４及び３個のＳＧＲＡＭ３０２が存在する。ロジック・チップ３０４及びＳＧＲＡＭ３０２は、刺激ベクトル（stimulus  vector）を外部接続ピン上のエミュレータにドライブする能力を提供する。刺激ベクトルをドライブする時には、ＦＥＴ３０８はターンオフされる（即ち、開放される）。これにより、刺激が、リピータ・ポッド５２０を介してコネクタ５１０に装着することのできる外部システムからの信号と競合を生じないようにする。刺激ベクトルをドライブしない時には、ロジック・チップ３０４のピンは、トライステートされ（tristate）、ＦＥＴ３０８がターンオンされる（即ち、閉じられる）。これにより、コネクタ５１０の信号は、第２列のマルチプレクサ・チップ３０３からの信号をドライブ又は受信することができる。現時点における好ましい実施例では、ロジック・チップ３０４は、Xilinx Corporation，San  Jose，Californiaから入手可能なXC5215であるが、他のプログラム可能なロジック・チップを使用することによっても満足すべき結果を得ることができる。図１６に示す部品に加えて、Ｉ／Ｏボード３００は、ＶＭＥインターフェースを通じてバックプレーン・コネクタ３２０に接続されるプロセッサ・チップ（図示していない）を含む。現時点における好ましい実施例では、このプロセッサ・チップは、IBM  Corporationから入手可能なPowerPC  403GCであるが、他のマイクロプロセッサ・チップを用いることによっても満足すべき結果を得ることができる。プロセッサのチップは、プロセッサ・バス３１０を介してロジック・チップ３０４に装着される。プロセッサ・バス３１０は、刺激情報をＳＧＲＡＭ３０２にアップロードする働きをする。プロセッサは、診断機能のため、マルチプレクサ・チップ１２、ロジック・チップ３０４及びＳＧＲＡＭ３０２からの情報をアップロード及びダウンロードするために使用される。
コネクタ３３０は、コア・ボード５００をＩ／Ｏボードに装着する。ＦＥＴ３０８から送られるロジック信号に加えて、このコネクタ３３０は、ＪＴＡＧ信号を受信し、電気的にＶＭＥバスに接続される。ＪＴＡＧ信号は、コネクタ５１０に差し込むことのできるリピーター・ポッド５２０をダウンロード及びテストするためのものである。現時点における好ましい実施例では、ＶＭＥバスは、コア・ボードと共に使用されていない。しかしながら、ＶＭＥバスは、コネクタ３３０に差し込むことができる他の種類のボードとともに使用することが考えられる。例えば、大容量のメモリ・ボードをコネクタ３３０に差し込んで、ＲＡＭ２０８に収納可能なメモリよりも大きなメモリをエミュレートする能力を提供することが考えられる（図１１に示されている）。
図１７を参照すると、マルチプレクサ・ボードのブロック図が示されている。マルチプレクサ・チップ１２は、バックプレーン・コネクタ４２０に対して分配される形で装着される。図１７の簡略化のために、４つのマルチプレクサ・チップ１２のみが示されている。しかしながら、現時点における好ましい実施例では、実際には、マルチプレクス・ボード４００には７個のマルチプレクサ・チップが存在する。さらに、マルチプレクサ１２への接続は、図１７に示されている数よりはるかに多く存在する。これらの追加の接続は、図示されたものと同様に配置される。図１７に示すマルチプレクサ・チップ１２に加えて、マルチプレクサ・ボード４００は、バックプレーン・コネクタ４２０に装着され、マルチプレクサ・チップ１２にダウンロードし又はテストするＪＴＡＧインターフェース（図示していない）を含んでいる。
図１７のマルチプレクサ・ボードは、拡張性のないエミュレーション・システムに適している。しかしながら、いくつかのエミュレーション・システムを互いに接続することによって、大容量のエミュレーション・システムを構成することが、しばしば要望される。この場合には、拡張性のあるマルチプレクサ・ボード４００が使用される。拡張可能なマルチプレクサ・チップ・ボード４０２のブロック図を図１８に示す。マルチプレクサ・チップ１２の第１列４０４は、バックプレーン・コネクタ４２０に電気的に接続されている。図面の簡略化のため、第１列４０４には、４つのマルチプレクサ・チップ１２のみが示されている。しかしながら、現時点における好ましい実施例では、第１列４０４には、１０個のマルチプレクサ・チップ１２が存在する。マルチプレクサ・チップ１２の第１列４０４は、マルチプレクサ・チップ１２の第２列４０６及びターボ・コネクタ４３０に電気的に接続される。マルチプレクサ・チップ１２の第２列４０６は、また、ターボ・コネクタ４３０及び外部コネクタ４４０に電気的に接続される。図１８には、第２列には、２つのマルチプレクサ・チップ１２のみが示されており、そして２つの外部コネクタ４４０のみが示されている。しかしながら、現時点における好ましい実施例では、第２列４０６には、５個のマルチプレクサ・チップ１２が存在する。さらに、現時点における好ましい実施例では、６個の外部コネクタ４４０が存在する。現時点における好ましい実施例の各外部コネクタ４４０は、９２個のＩ／Ｏピンを有している。マルチプレクサ・ボード４０２は、ターボ・コネクタ４３０を介して互いに結合された対に組み立てられる。ターボ・コネクタ４３０は、マルチプレクサ・ボード４０２の対とロジック・ボード２００の対の間の有効な交差領域（intersection  area）を拡張する役割を果たす。ターボ・コネクタ４３０が無い場合には、交差領域が小さくなりすぎて、外部コネクタ４４０とロジック・ボード２００の間での有効なルーティング性能（routability）を確保することができない。
図１９を参照すると、エミュレーション・システム内におけるユーザ・クロックの分配方法が示されている。ユーザ・クロックの分配は、エミュレーション・システムの設計において重要である。米国特許Ｎｏ．５，４７５，８３０号に開示されているように、ユーザ・クロックは、ユーザー・クロック及びデータ信号が外部システム５４０（外部システムは、図１２及び１４に示されている。）内で同時に変化すると仮定すると、データ信号の前にエミュレーション・ボード２００のロジック・チップ１０に到達する必要がある。この要求は、データ信号を遅延させることにより満足させることができる。しかしながら、この解決方法では、エミュレーション・システムの最大動作速度が低下する。より好ましい代替案は、ユーザ・クロックの分配ネットワークをできる限り高速とし、データ信号に遅延を付加する必要があるとしても、遅延を最小限とすることである。
図１９に、好ましいハードウェア・エミュレーション・システムに対するクロックの分配を示す。クロックは、コントロール・ボード６００のクロック・コネクタ６２０を介して、コントロール・ボード６００のマルチ・ボックス・クロック・コネクタ６３０を介して、又はコア・ボード５００のコネクタ５１０の通常の信号としてのいずれかによってシステムに入力することができる。前述したように、コア・ボード５００は、Ｉ／Ｏボード３００に装着されている。簡略のため、図１９には、１つのコネクタのみが示されている。しかしながら、現時点における好ましい実施例では、各コア・ボード５００には７つのコネクタ５１０が存在する。また、システムは、複数のＩ／Ｏボードとコア・ボードの組み合わせを含めてもよい。これまでに図１２及び１４を参照して説明したように、コネクタ５１０は、外部システム５４０に接続されるリピータ・ポッド５２０に装着されている。クロック・コネクタがクロックを入力するために使用される場合には、コネクタ６２０も、ケーブルを通じて外部システム５４０に装着されるであろう。クロック・コネクタ６２０は、クロックをエミュレーション・システムに入れるための速い方法を提供し、コア・ボード５００のコネクタ５１０は、より簡単な方法をユーザーに提供する。
コア・ボード５００のコネクタ５１０は、これまでに図１６を参照して説明したように、コネクタ３３０及びＦＥＴ３０８を介してＩ／Ｏボード３００上のマルチプレクサ・チップ１２の第２列に接続される。マルチプレクサ・チップ１２の第２列３０３は、これまでに説明した他の接続に加えて、バックプレーン・コネクタ３２０の専用クロック・ピンに接続される。現時点における好ましい実施例では、これらのピンは１６本存在する。Ｉ／Ｏボードのバックプレーン・コネクタ３２０から、クロックは、バックプレーン８００又は８０２を介してコントロール・ボード（図１３参照）に接続する。コントロール・ボード６００では、マルチプレクサ・チップ１２は、異なる可能性を有する全てのソースの中から１つのクロックの組み合わせを選択するために用いられる。システムは、最大３２まで別個のクロック・ソースを有することができる。これらの中の任意の８つを、一対のエミュレーション・ボード２００上で使用することができる。これにより、必要に応じ、例えば、複数のチップの設計が１つのハードウェア・エミュレーション・システム内でエミュレートされる場合には、エミュレーション・ボード２００の異なる対が異なるクロックを持つことができる。クロックは、プログラム可能な遅延エレメント６０４及びバッファ６１４を介し、そしてバックプレーン８００又は８０２を介してエミュレーション・ボード２００にルーティングされる。これまでに図１１を参照しながら説明したとおり、エミュレーション・ボード２００のクロックは、ロジック・チップ１０に到達する前に、バッファ２１６又はクロック生成ロジック・チップ２０４（即ち、ＣｏＳｉｍロジック・チップ）のいずれを介してルーティングされてもよい。
コントロール・ボード６００のロジック・アナライザのクロック生成ロジック・チップ６０２によりクロックを生成してもよい。これは、一般的には、システムをテスト・ベクトルで動作させる場合に起こる。クロックＲＡＭ６１２からのデータは、ロジック・アナライザのクロック生成ロジック・チップ６０２内にプログラムされ、リターン・トゥ・ゼロ（return-to-zero）、ノン・リターン・トゥ・ゼロ（non-return-to-zero）、２位相ノン・オーバーラッピング（two-phase  non-overlapping）等の異なるクロック・パターンを生成するステート・マシン（state  machine）に入力される。このようなステート・マシンの設計は、制御ロジック設計の当業者によって十分に理解することができるため、ここではこれ以上説明しない。ロジック・アナライザのクロック生成ロジック・チップ６０２から生成された３２種のクロックは、クロック選択・マルチプレクサ・チップ１２に通信される。現時点における好ましい実施例では、ロジック・アナライザのクロック生成ロジック・チップは、Xilinx Corporationによって製造されたXC4036XLを使用しているが、他のプログラム可能なロジック・デバイスを用いても満足できる結果を得ることができる。
マルチ・ボックス・クロック・コネクタ（multi-box  clock  connector）６３０は、入力クロックに対しても、出力クロックに対しても動作することができる。方向は、バッファ６０８によって制御される。マルチボックス・エミュレーション・システム、即ち、複数の孤立した（stand  alone）エミュレーション・システムによって構成されるエミュレーション・システムでは、１つのボックスがマスタとして指定され、他のボックスはスレーブ（slave）として指定される。マスタ・ボックスは、そのマルチ・ボックス・クロック・コネクタ６３０でクロックを生成し、次にこれがマルチボックス・クロック・コネクタ６３０を通じて全ての他のスレーブ・エミュレーション・システムに入力される。マルチ・ボックス・システムでは、マスタ・ボックス内に遅延エレメント６０４がプログラムされ、マスタ・ボックスとスレーブ・ボックスの間での避けることのできないケーブルによる遅延を補償する。
当業者であれば、図１９は、明瞭にするために大幅に簡略化されており、多くの相互接続及び構成部品が示されていないことを認識できる。これらの追加の構成部品及び相互接続に対する要求は、設計上の選択の問題である。
図２０を参照すると、ハードウェア・エミュレーション・システムの制御構造が示されている。従来のハードウェア・エミュレーション・システムでは、一般的に不十分な処理能力が問題となっていた。このため、システムに又はシステムからデータを転送する時、設計データをシステムにロードする時、ハードウェア診断を動作させる時に、長い遅延を生じていた。本発明の好ましい実施例では、この問題を軽減するために、２つのレベルのプロセッサ・アーキテクチャが使用される。メイン・プロセッサ７００は、コントロール・ボード６００に装着される。現時点における好ましい実施例では、プロセッサ７００は、Themis Computerから入手可能な、Power  PCのＶＭＥ準拠プロセッサ・カードであるが、他の類似のカードを用いても満足な結果を得ることができる。プロセッサ７００は、イーサネット及びコントロール・ボード６００のＶＭＥバス６５０に電気的に接続される。ＶＭＥバス６５０は、インターフェース（図２０には図示していない）を介してバックプレーン８００又は８０２に電気的に接続され、次いでロジック・ボード２００及びＩ／Ｏボード３００に接続される。ＶＭＥバスは６５０は、また、コントロール・ボード６００のＪＴＡＧインターフェース６６０及びバックプレーン８００を介してマルチプレクサ・ボード４００に接続される。
各ロジック・ボード２００及びＩ／Ｏボード３００は、ＶＭＥインターフェース及びメモリを備えたローカル・プロセッサを有している。類似する回路が各Ｉ／Ｏボード３００に存在するが、ロジック・ボード２００を参照しながら、この回路を論じる。プロセッサ２０６（これまでに図１１に示した）は、ＶＭＥインターフェース２２２を通じてバックプレーン８００又は８０２のＶＭＥバス６５０に電気的に接続される。これは、また、コントローラ２２１にも電気的に接続される。好ましい実施例では、コントローラ２２１は、Xilinx  Corporationの複数個のｐXC5215 FPGAによって構成される。コントローラ２２１は、ＪＴＡＧのテスト信号をロジック・ボード２００の他の部品に供給する。これに加えて、フラッシュＥＥＰＲＯＭ２２４やダイナミックＲＡＭ２２６等のような種々の装置がプロセッサ２０６に接続される。プロセッサ２０６は、ボードレベルでの診断を実行する時、ロジック・チップ１０内に構成データをロードする時、メモリ２０８及び２１０（これまでに図１１に示した）に又はメモリ２０８及び２１０からデータを伝送する時に、独立して動作する。
図２０ａを参照しながら、好ましい実施例のシステムのロジック・アナライザ回路を詳細に論じる。ロジック・アナライザは、分配される。これは、ロジック・アナライザの部分が各ロジック・ボード２００に含まれ、集中化された機能がコントロール・ボード６００に含まれることを意味する。イベント、即ち、エミュレーションを受けている設計内の信号ステート（signal  state）の組み合わせは、ロジック・ボード２００のロジック・チップ１０及び２０４の内部で生成される。これらは、一対に結合されて信号２３６上に出力され、そして特別なイベント・ロジック・チップ２３２（図２０ａでＡＮＤゲート２３２として示されている）で共にＡＮＤ（論理積）される。この結果得られる結合イベント信号は、フリップ・フロップ２３０（簡略のため、図２０ａには２つのフリップ・フロップのみが示されている）によって８つの信号に分離される。分離されたイベント信号２４０は、次に、バックプレーン８００又は８０２（図２０ａには示されていない）を介してコントロール・ボード６００に送られ、そこで他のボード又は他のボックスからのイベントと再びＡＮＤゲート６７８（ロジック・チップの一部）でＡＮＤ（論理積）される。コネクタ６７０は、他のエミュレーション・ボックスからのイベント情報を与えてもよい。最後のイベント信号は、トリガ条件及び条件付き読み込み条件（conditional  acquisition  condition）を計算し、またロジック・ボード２００上のデータの読み込み（acquisition）を制御する読み込みイネーブル信号２３８を生成するためのコントロール・ボード６００上のトリガ・生成ロジック・チップに６７４に伝達される。トリガ生成ロジック・チップ６７４の出力は、バッファ６７１を介してコネクタ６７２に送出され、また遅延エレメント６７６を通る。遅延エレメント６７６の出力は、バッファ６７３によりバッファされ、バックプレーン８００又は８０２を介してロジック・ボード２００上のロジック・アナライザのメモリ・コントローラ２３４に送られる。コントロール・ボード６００は、また、経路、機能テスト・クロック及び他のロジック・アナライザ／パターン生成信号を発生する。
図２０ｂを参照すると、ロジック・アナライザのデータ経路が示されている。データ信号は、ロジック・チップ１０及び２０４内にラッチされ、エミュレーション・ボード２００の同期グラフィックＲＡＭ（SGRAM）２１０にスキャン出力される。ロジック・アナライザのデータ経路は、すべてのロジック・ボード２００に渡って分配される。ロジック・ボード２００の各マルチプレクサ・チップ１２は、２５６K×３２のＳＧＲＡＭに接続された８つのピンを持っている。ＳＧＲＡＭ２１０は、エミュレーションがロジック・アナライザのデータをセーブしている時に高速で動作する。データは、望ましいロジック解析速度、チャンネルの深さ及びプローブ信号（probed  signal）の数に応じて、以下の表に示すように、２対１から６４対１のいずれかによって時間多重化される。
0004424760.tif 000002
上で示した最高速度は概略値であり、ロジック・アナライザの設計及びマルチプレクスのクロック速度に応じて変化する。０．５ＭＨｚのレートでは、十分な数のチャンネルが利用できるため、同時に、エミュレートされる設計の各フリップ・フロップ又はラッチをプローブ（probe）することが可能である。信号が“プローブ”されると、そのエレメント又はノードにおける信号の値が読み取られる。一般的に、この値はメモリ・エレメント（SGRAM-210）に格納される。組み合わせ信号（combinational  signal）をソフトウェアで再構築することにより、ユーザは、信号の任意の組み合わせを、トリガ条件の前後の数千クロックにわたって、プローブ（probes）を移動させることなく又はエミュレータの再スタートをも必要とせずに見ることができる。組み合わせ信号をプローブする必要がある場合には、ソフトウェアは、設計のネットリストを検査する。ロジックのコーン（cone  of  logic）が抽出され、その中で意図する信号に続く各組み合わせロジック経路が後ろ向きに、プローブ格納エレメント（probed  storage  ekement）（例えばフリップ・フロップ又はラッチ）又は設計の外部入力までトレース（trace）される。意図する信号についてのロジック機能は、次に、すべての格納エレメント又はこれに与えられる外部入力から求められる。最後に、意図する信号の値は、全ての格納ノード及び外部入力について予めセーブされた値を用いてロジック機能を評価することによって、各瞬間毎に算出される。ロジック機能は、ロジック・コーンに対する入力の１つが変化する各時点において評価される。これは、設計デバッグ・ソフトウェアの一部として実行される。
例えば、図２０ｄでは、プローブされた信号Ｅは、格納エレメントＢ、Ｃ、Ｄ及び設計入力Ａで終了する組み合わせロジック・コーンを抽出することにより算出される。信号Ｅの式は、信号Ａ、Ｂ、Ｃ、Ｄが変化したときに評価される。信号Ｅの波形は、物理的なプローブが置かれているかのように、正確に表示される。この完全な視認性により、複雑な設計上の問題に対するデバッグが格段に高速化される。この完全な視認性は、ロジック・チップ１０又は２０４あたりのフリップ・フロップの数が限定されている場合には、より高い周波数でも確保される。
より高い速度、即ち、０．５ＭＨｚより高い速度では、ユーザは、プローブする信号を指定しなければならない。しかしながら、各ロジック・ボード２００は、それぞれ自身のロジック・アナライザ・メモリ２１０を有しているため、プローブされている信号の切り替えは速い。この理由は、従来のエミュレーション・システムのように、プローブがバックプレーンの上をルーティングされる必要がないことによる。
図２０ｂを再び参照すると、各ロジック・チップ１０又は２０４の内部には、追加のロジック回路２０００が、ロジック・チップ１０又は２０４内にプログラムされているユーザの設計に追加される。注文設計のロジック・チップが使用される場合には、このロジック回路２０００をチップの中に設計（即ち、ハード・ワイヤ（hard-wired）することができる。専用スキャン・レジスタの数は、プローブすべき信号の数に応じて追加される。スキャン・レジスタの最大の深さは、上記の表に従って決定される。各専用スキャン・レジスタは、スキャン・チェーン（scan  chain）として知られている。各スキャン・フリップ・フロップ２００４の間には、２対１のマルチプレクサ２００５が配置されている。各マルチプレクサ２００５の出力は、これに続くスキャン・フリップ・フロップ２００４のＤ入力に与えられる。各マルチプレクサ２００５への最初の入力は、ユーザの設計内ノードによって供給される。各マルチプレクサ２００５への２番目の入力は、その前のスキャン・フリップ・フロップ２００４によって供給される。マルチプレクサ２００５への選択入力は、トレース・クロック２００２であり、その機能は以下に説明する。スキャン・フリップ・フロップ２００４は、多重クロック信号４４によってクロックされる。一連のスキャン・フリップ・フロップ２００４及びマルチプレクサ２００５は、全体としてスキャン・レジスタ又はスキャン・チェーンを構成する。スキャン・チェーンの長さ及びプローブすべき信号の数に応じて、各ロジック・チップ１０又は２０４は、０、１又は複数のスキャン・チェーンを有する。任意のチップ内のスキャン・チェーンの数は、プローブすべきフリップ・フロップ又信号の数に依存する。後に説明するように、ソフトウェアは、スキャン・チェーンに信号を割り当てることにより、チェーンの数を最小化し、チップのルーティングを簡素化する。好ましい実施例では、エミュレートされる設計内のすべてのフリップ・フロップ又はラッチをプローブするために、ロジック・チップ１０又は２０４の１個当り、最大１２個のスキャン・チェーン及び１２個のＩ／Ｏピンが必要である。ロジック・アナライザの動作速度を最大限に高めるため、スキャン・チェーン及びＳＧＲＡＭ２１０は、時間多重周波数の２倍の速度で動作する。時間多重クロックの各サイクルごとに、各スキャン出力ピン２００６に１ビットのデータが出力される。
図２０ｃを参照すると、ロジック・アナライザのイベントは、ロジック・ボード２００の上に分配される。これにより、イベントに寄与する設計信号をバックプレーン８００又は８０２にルーティングする必要がない。イベントは、ロジック・ボード２００上の各ロジック・チップ１０又は２０４に挿入された追加専用のロジック２０００を用いて検出される。
イベントに寄与する信号（Signal  Contributing  to  event）は、ロジック・アナライザのデータについて使用され、またこれまでに図２０ｂに示した、同一のスキャン・フリップ・フロップ２００４によってラッチされる。これらの信号は、ＣＬＢメモリ２０１８（ＣＬＢメモリは、ロジック・チップ１０、２０４において利用可能）を構成するＪＴＡＧプログラマブル・エッジ検出器にルーティングされ、次いで、８つのイベント信号を形成するためにワイドなエッジ・デコーダ（wide  edge  decoder）２０１２を使って一緒にＡＮＤされる。各ロジック・チップ１０、２０４内の８つのイベント信号は、マルチプレクサ２０２０を使って２つずつ１つのピンに組み合わされ、エミュレーション・ボードに対してイベント信号２３６（同じく図２ｏａに示されている）として出力される。これらは、そこで他のＦＰＧＡからのイベント信号と再びＡＮＤされる。ボード・レベルのイベント信号は、バックプレーンを渡ってコントロール・ボードに送信される。これらは、そこで他のエミュレーション・ボード又は他のボックスからのイベント信号とＡＮＤされる。結果として得られるシステムのワイドなイベント信号（wide  event  signal）は、コントロール・ボードのトリガ・ロジック・チップ６７４に送られ、読み取りイネーブル（acquisition  enable）その他のロジック・アナライザ制御信号を生成するために利用される。
イベントに寄与する信号は、ワークステーションがエミュレーション・システムに接続されるのに先だってユーザに対して表示される形式を整理することにより、編集の前にエミュレーション・システムのユーザによって定義される。これが行われると、ロジック・チップ１０、２０４内の十分に構成可能なロジック・ブロックは（configurable  logic  blocks）（CLB）（ＣＬＢは、ロジック・チップ１０、２０４内の機能性を実現するために用いられる論理構築ブロック（logical  building  block）である）、全ての必要なイベント・ロジックを適合させるための編集処理の間予約される。容量にほとんど影響を与えることなく、任意の数の信号を予め定義することができる（信号あたり、概略４つのＣＬＢ）。コンパイルが全て完了した後でも、新しい信号を加えることが可能である。このためには、インクリメンタルな再編集を行って、再びダウン・ロードして追加のエッジ検出器を作成して新しい信号をルーティングする必要がある。イベントに寄与する信号がすべて定義されると、ユーザは、エミュレーションの実行中に素早くイベントの条件を変更することのできる総合的な柔軟性を得ることができる。ブレーク・ポイント、トリガ条件及び条件付き読み取り条件は修正が可能であり、エミュレーションを停止することなくロジック・アナライザを再スタートさせることができる。これは、イベント・ロジックの設定にＪＴＡＧプログラミングを用いることによって可能となる。
図２０ｃに、すべてのイベント及びスキャン・ロジックを挿入したロジック・チップ１０又は２０４を示す。設計は、スキャン・フリップ・フロップ２００４及びマルチプレクサ２００５によって構成されるスキャン・レジスタと、フリップ・フロップ２０１０、ＪＴＡＧインターフェース２０１６及び２０１４、１組のエッジ検出器２０１８及びワイドなエッジ・デコーダ２０１２により構成されるイベント・レジスタとに分割される。
イベント信号は、ロジック・アナライザのデータがシフト出力される時に内容が変化するため、スキャン・フリップ・フロップ２００４内にはセーブすることができない。このため、イベント・フリップ・フロップ２０１０を使って、イベントに寄与するすべての信号についての現在及び過去の状態（state）を記憶する。イベント・レジスタ２０１０は、スキャン・レジスタ２００４がトレース・クロック信号２００２（以下で説明する）によってロードされた後の次のスキャン・クロックによって１回クロックされる。代わりに、スキャン・レジスタ２００４は、平行なシャドウ・レジスタ（parallel  shadow  register）として使用することができ、トライステート・バッファは、スキャン・データをスキャン出力ピンにロードするために使用することができるであろう。
イベント・フリップ・フロップ２０１０からの出力は、エッジ検出器２０１８への入力として使用される。エッジ検出器２０１８は、デュアル・ポートＣＬＢメモリにより構成される。各ＣＬＢメモリは、ロードされて、２つの入力信号に対して所望のレベル／エッジ検出を行い、１つのイベント出力を生成する。１つのイベントに属するすべてのＣＬＢメモリからの出力は、組み付けのワイドなデコーダ２０１２を使ってＡＮＤされ、このロジック・チップ１０についての１つのイベント信号を形成する。次に、イベント信号はマルチプレクサ２０２０を使って結合され、Ｉ／Ｏピンの場所のトライステート・バッファ２０２２に出力される。ユーザの信号がいずれかのイベントで必要とされるたびに、８つのイベントのすべてについてこれが添付され、イベントの定義を稼動中に変更することができるようになっている。
エッジ検出器２０１８の内部で使用されるＣＬＢメモリは、ＪＴＡＧバス上でプログラムされる。これは、好ましい実施例のロジック・チップ１０、２０４のデュアル・ポート・メモリの性質を使ってカウンタ２０１６及びデコーダ２０１４によって実現される。イベント回路の数が多い場合には、デコーダ２０１４からの選択信号の作成及びルーティングに、ロジック・チップ１０のゲート容量のかなりの部分を費やすことになる。代わりに、すべてのエッジ検出器メモリ２０１８を含むシフト・レジスタを作成する方法がある。しかしながら、この代替案では、ランダムなアクセスを行うことができない。
イベントに寄与する各信号は、概略４つのＣＬＢとＪＴＡＧインターフェースのための小さなオーバーヘッドを必要とする。信号が追加されるたびに、８つのイベントのすべて又は一部として使用できるように必要なロジックが挿入されることが想定される。ユーザーが、どのイベントについてその信号が使用されるのかを正確に指定した場合には、ＣＬＢの２分の１が必要とされるに過ぎない。しかしながら、この方法では、エミュレーションの実行中にイベントの条件に変更を加える能力を著しく制限することとなる。
各信号／イベントの組み合わせに対するエッジ検出メモリ２０１８は、次の条件のうちの１つを検出するようにプログラムされる。
0004424760.tif 000003
ロジック・アナライザのサイクルは、トレース・クロック信号２００２によってスタートする。トレース・クロック２００２は、厳密に制御された信号ではない。これは、多重クロック信号（MUXCLK）の立ち上がりエッジでのみ有効であることが保証されている。トレース・クロック２００２は、データの同期サンプルをすべてのスキャン・チェーンにおいてセーブさせる。これは、また、イベントの計算を開始する。ボード・レベルのイベントは、コントロール・モジュール６００に送出され、そこで、一緒にＡＮＤされ、トリガ生成・ステート・マシン６７４（trigger  generator  state  machine）を制御するために使用される。いくつかのトレース・クロック期間の後に、トリガ生成器は、ロジック・ボード２００のＳＧＲＡＭ２１０へのデータの書き込みを制御する読み取りイネーブル信号（acquire  enable  signal）２３８を生成する。そして、回路は、次のトレース・クロック２００２まで非アクティブを保持する。
ロジック・アナライザのデータは、各エミュレーション・ボードのＲＡＭ内に格納される。これまでに述べたように、各ロジック・ボード２００は、５４個のマルチプレクサ・チップ１２を有している。また、各マルチプレクサ・チップは、ＳＧＲＡＭ２１０に接続される８本のピンを有している。このため、ＲＡＭには５４×８＝４３２のデータ・チャンネルが存在する。ロジック・アナライザのデータは、フレームと呼ばれる基本単位に格納される。１つのフレームは、各トレース・クロック２００２の後に生成され、ロジック・チップ１０又は２０４のスキャン・チェーンから一度シフト出力（shift  out）されたすべてのデータにより構成される。フレームは、２から６４までのＲＡＭ位置を満たし、また生成のために２から６４の多重クロック信号（MUXCLK）を必要とする。典型的なフレームは、以下のようなものである。
データ・チャンネル（４３２）
フレーム０    データ０
データ１
データ２
データ３
フレーム１    データ０
データ１
データ２
データ３
最小のフレームでは、２つのＲＡＭ位置だけを必要とする。フレームの長さは常に２の倍数である。このため、有効な長さは、２、４、８、・・・６４のＲＡＭ位置である。ＳＧＲＡＭ２１０のタイミング要求を満たすために、１つのフレーム内のシーケンシャルな書き込みは、メモリの反対側のバンクに行われる。最小サイズのフレームの場合、データの１つのワードが低いＲＡＭのバンクに格納され、また１つのワードが高いＲＡＭのバンクに格納される。
ロジック・ボードのメモリは、２５６Ｋワードの容量（deep）を有している。メモリは、３２の独立したブロックに等しく分割される。各ブロックは、８１９２のワードの大きさであり、フレームの長さに応じて４０９６から１２８のフレームを含むことができる。ブロックは、固定した長さを有しており、常に８Ｋワードの境界から開始する。１つのブロック内では、フレームは、ランダムな順序で格納されるが、ブロック間でのフレームの重なりは発生しない。後のブロックにある全てのフレームは、前のブロックにある全てのフレームよりも新しいタイムスタンプ値（timestamp  value）を有している。
ロジック・ボードのメモリ２１０の深さは、設計者の設計者の選択及び利用可
ロジック・ボードのメモリ２１０の深さは、設計者の設計者の選択及び利用可能なメモリ・チップの深さに依存する。将来的には、より深いメモリが使用可能となり、より大きなＳＧＲＡＭが利用可能となろう。
タイムスタンプ値は、フレームがロジック・ボード２００にセーブされる毎に、コントロール・ボード６００のクロックＲＡＭ６１２（図１９に示されている）にセーブされる。
ロジック・アナライザは、条件付き読み取りのオプションをサポートする。これは、個々のフレームは、１つのイベント信号の値及び／又はトリガ・ステート・マシンの現在の状態（current  state）に応じてメモリに書き込まれ又は書き込まれないということを意味している。条件付き読み取りによって、重要なデータだけをセーブすることができるため、メモリをより効率的に利用することができる。条件付き読み取りは、コントロール・ボード６００で生成される読み取りイネーブル信号２３８によって制御される。トレース・クロック２００２の後で読み取りイネーブル信号が生成されるまでに、概略トレース・クロック４個のパイプライン遅延（pipeline  delay）が存在する。
遅延された読み取りイネーブル信号のために、データが利用可能になった時点では、そのデータをセーブすべきであるか否かを決定することができない。このため、常にデータをメモリにセーブし、遅延された読み取りイネーブル信号が、それが正しい信号でないことを示している場合には、後で上書きする。これにより、データは、基本的にメモリ内にランダムな順序でセーブされる。正しいデータの順序は、ロジック・アナライザが停止した後に、クロックＲＡＭ６１２にセーブされたタイムスタンプをソートし、そして各ロジック・ボード・プロセッサ２０６に対する１組のポインタをソートすることによって回復される。ポインタは、各シーケンシャル・データ・サンプルの物理的なメモリ位置を示す。メモリ・アドレス・カウンタの重ね合わせ（wraparound）を処理する必要があるため、規定外（out-of-order）のデータは、メモリの１つのブロックに限定される。アドレス・カウンタがブロックの先頭位置に再び書き込みを行うと、直ちに最も古いブロックのデータを破棄する必要がある。
コントロール・ボードのロジック・アナライザ・コントロール・ロジック・チには、各ブロックが書き込まれた後に、データの５ビットがセーブされる（合計１６０ビット）。これらのビットのうち４ビットは、最後に書き込まれた４つのフレームの各々についての読み取りイネーブル信号の値である。特定の１ビットは、そのブロックがソートされた順に書き込まれたかどうかを示す。これは、実質的に、ブロック中の各トレース・クロックについての読み取りイネーブルが有効であったことを示す。
ブロックがオーバーラップされないようにするために、読み取りイネーブル信号の状態に関係なく、各ブロック内の最後の４つのフレームは常に書き込まれ。これらの最後の４つのフレームは、有効なデータを含む場合と含まない場合がある。コントロール・モジュールのプロセッサは、ブロック・レジスタ内の対応する読み取りイネーブル・ビットを調べて、データが有効であるか否かを判断する。このため、１つのブロック内の実際のデータ・フレームの数は、４つまでの誤差がある。
エミュレーション・ボードについてのポインタのセットを作成する場合には、これを考慮する必要がある。ロジック・アナライザが停止する前の最後の４つのデータのワードは、有効なデータを含んでいる場合と含んでいない場合とがある。これは、ロジック・アナライザが停止した後、読み取りイネーブル・パイプラインをブロック・レジスタに流し込むことによって決定される。
コントロール・モジュール・プロセッサ７００は、ロジック・アナライザが停止する前に最後に格納したフレームのアドレスを、ロジック・アナライザのコントロール・チップ６７４から読み取ることができる。これは、最後に書き込まれたデータ・ブロックを決定するために使用される。最初のデータ・ブロックは、アドレス・カウンタがオーバー・ランしていない場合にはブロック０であり、そうでない場合には次の高いブロックである。アドレス・カウンタが初めてオーバーランする時にセットされる追加のステータス・ビットが必要である。
ロジック・アナライザが停止した時に書き込まれている最後のデータ・ブロックは、多分、アドレス・カウンタのその前のラップアラウンドの間に書き込まれたいくつかの古いフレームを含んでいるであろう。これらは、破棄する必要がある。破棄すべきフレームは、タイムスタンプ値をソートし、そして最初のデータ・ブロック内の最も古いタイムスタンプ値より前のタイムスタンプを有するフレームを破棄することによって決定される。
例えば、フレーム長が１（２から６４ではなく）であると仮定すると、ブロック当り８つのフレーム（４０９６ではない）が存在し、メモリは２４の深さ（２６２，１４４ではない）を有することになる。ロジック・ボード及びコントロール・ボードのメモリは、ロジック・アナライザが停止した後では以下のデータを有する可能性がある。
0004424760.tif 000004
アドレス・カウンタは位置２で停止しており、アドレス・オーバーフロー・ビットがセットされている。これは、位置０から７のブロックが最後のブロックであり、８から１５のブロックが最初のブロックであることを意味する。最初のブロックに対して格納された読み取りイネーブル・ブロックを調べることによって、最初のブロックの終わりの部分の位置１２及び１４にあるフレームは有効であり、最初のブロックの終わりの部分の位置１３及び１５にあるフレームは無効であることを決定する。このブロック内の全ての他のフレームは有効である。それは、もしそうでなければ、アドレス・カウンタは、次のブロックにインクリメントされていないはずだからである。タイムスタンプによってソートし、そして無効なデータを除去した後は、最初のブロックは以下のようになる。
0004424760.tif 000005
次に、２番目のブロックが処理される。アドレス１６から開始する２番目のブロックでは、アドレス２３のフレームが無効である。このブロックに対してソートされたビットはブロック・レジスタにセットされているため、このブロックは、ソートする必要がない。無効なフレームを除去した後、ブロックは、以下のようになる。
0004424760.tif 000006
最後のブロックは、アドレス０から開始する処理が実行される。まず、フレームは、タイムスタンプによってソートされて以下のようになる。
0004424760.tif 000007
次に、最初のタイムスタンプより前のタイムスタンプを有する全てのフレームで最初のブロック（１０）にあるものは破棄される。これにより、そのブロックには３つのフレームだけが残される。
0004424760.tif 000008
最後のフレームについてのブロック・レジスタの読み取りイネーブル・ビットは、読み取りイネーブル・パイプラインからの最後の値を含んでいる。このブロックについてのレジスタの内容は０１１１である。これは、アドレス１にある最後のフレームが無効であり、アドレス０及び２にある他の２つのフレームは有効であることを意味する。このブロックには３つのフレームしか書き込まれていないため、低いオーダー（order）のビットは意味がない。最後のブロックは以下のようになる。
0004424760.tif 000009
再生されたデータの完全なセットは、以下のようになる。
0004424760.tif 000010
好ましい実施例のシステムをプログラムするために必要なソフトウェアを以下に説明する。ソフトウェアは、アップデートされている。そのため、これまでに米国特許Ｎｏ．５，１０９，３５３号、５，０３６，４７３号、５，４４８，４９６号、５，４５２，２３１号、５，４７５，８３０号に開示されているソフトウェアとは異なっている。これらの特許の開示を、参考のためにすべてここに組み込む。フロー図を図２１に示す。
ソースのネットリストは、ネットリスト・インポータ１０００によって直接にインポート（import）することができ、Quickturn  Design  Systems，Inc．から入手可能なHDL-ICETMブランドのロジック合成ソフトウェアのようなロジック合成プログラム１００２又は動作テストベンチ・コンパイラ（behavioraltestbench  compiler）１００４によって生成することができる。ネットリスト・インポータ１０００は、ゲート・レベルのテキスト形式のネットリストをEDIFやVerilogのような種々のフォーマットに取り入れることができる。また、ネットリストを、階層的に定義されたセル、一般的なセル、特別なハードウェア・セルを含むデータ・ベース・ロジカル・ライブラリ（data  base  logical  library）によって表現する内部データベース・ネットリスト・フォーマットに変換することができる。特別なハードウェア・セルには、メモリ仕様セル（memoryspecification  cells）、マイクロプロセッサ・セル、部品アダプタ・セルが含まれる。階層的に定義されたセルの一部には、チップ間をルーティングする時のタイミング問題を避けるために、これらのロジック・チップの間で平坦化されまた分割されるのを防止するフラグを持っている。ネットリストのインポート・ソフトウェアの選択と設計は、設計上の選択の問題であり、これ以上論じない。前述したように平坦化されたセルは、階層構造のセルを含んでいない。これは、簡単なロジック・ゲートのような最も基本的な部品のみを含む。
HDL-ICETMブランドのロジック・シンセサイザ１００２は、現時点における好ましいロジック・シンセサイザ１００２であり、レジスタ転送レベル（register-transfer-level）（RTL）のVerilog又はVDHHLネットリストを受け取り、それらをロジック合成プロセスを通じてネットリスト・インポータ又は他のコンパイル・ステップ（compilation  step）で使用されるデータベース・フォーマットに変換する。他の好適な合成のための製品がSynopsys  Corporation及びその他から商業的に入手可能であるが、HDL-ICETMブランドのロジック・シンセサイザは、より良い集積化やより高い動作速度などのいくつかの利点を有している。
動作テストベンチ・コンパイラ１００４は、Verilog又はVHDLで記述された動作テストベンチをエミュレートすることができる。１又は複数のロジック・ボード２００のプロセッサ２０６で並列に実行されるコードは、共同ミュレーションのロジック・チップ２０４を通じて、ネットリスト・インポート・プログラム１０００又はHDL-ICETMブランドのロジック・シンセサイザに対応可能な他のロジックチップと緊密に結合される。プロセッサ２０６で実行中のコードは、ロジック設計の動作（合成不可能）表現であるかもしれないが、他のロジックは、ゲート・レベルの（合成可能）RTL表現である。
ロジック・セル・メモリ（LCM）・ジェネレータ１００６は、ロジック・チップ内に組み込まれたメモリを使用するように供給されるユーザ設計からのメモリ仕様セルを、ロジック・チップ１０内の構成可能なロジック・ブロック及び各ロジック・チップ内の相対的な位置へのマッピングを含むメモリ・セルの供給を定義する階層的に定義されたセル（ハード・マクロ）に置き換える。
ユーザ・データ入力プログラム１００８により、設計のコンパイルに必要な、クロック情報、プローブ情報、特別のネット情報等を入力することができる。この情報は、特別な方法で処理しない時、エミュレーション中に問題を起こす可能性のある任意の条件を処理する際にエミュレーション・システムを支援する。
データ・クオリフィケーション・プログラム（data  qualification  program）１０１０は、ネットリスト及びユーザ・データが正確であるか否かを確認する。これは、ドライブされない入力又は複数の出力がネットに割り当てられている場合などの一般的なネットリストのエラーを検出する。
クロック・ツリー抽出プログラム１０１２は、階層的なネットリストからクロックのツリーを抽出し、設計階層の全てのレベルのクロックの末端（terminal）を特定する。このステップの動作は、米国特許Ｎｏ．５，４７５，８３０号に詳細に開示されている。
階層的パーティション計画プログラム（Hierarchical  partition  planning  program）（HPP）１０１４は、物理的なモジュール・チップのパーティショニングのアルゴリズムである。これは、各ロジック・ボード２００に割当てられる（map）設計の部分を特定する。
パーティションＤＢセットアップ１０１６は、ＨＰＰ１０１４によって特定された各部分について、チップ・パーティショニング・プログラムを並列に動作させるためのデータベースを準備する。
チップ・パーティショニング・プログラム１０１８は、別個のロジック・チップ１０の各々において実現されるロジックのクラスタ（cluster）を特定する。
ＮＧＤ出力プログラム１０２０は、チップの分割（パーティショニング）の結果に基づいて、各チップに対応するＮＧＤファイルを作成する。ＮＧＤは、Xilinx  Corporationから入手可能な種々のソフトウェア・プログラムに共通するファイル・フォーマットである。ＮＧＤファイルは、ロジック・チップ内にロジック設計を組み込むために必要なロジック及びルーティングの情報を含む。前述したように、現時点における好ましい実施例では、Xilinxのロジック・チップが用いられている。ＮＧＤ出力プログラム１０２０は、データ・ベースの情報をＮＧＤフォーマットに翻訳する。また、ＮＧＤ出力プログラムは、任意のピン割り当てがなされた個々のロジック・チップ１０に対して、並列パーティショニング、配置及びルーティング（PPR）ジョブ１０２２を開始する。ＰＰＲプログラム１０２２は、Xilinx  Corporationから商業的に入手可能なプログラムであり、Xilinxが製造するＦＰＧＡについてのプログラミング・ファイルを生成する。
物理的ＤＢ生成プログラム１０２６は、ボード・パーティショニング・プログラムで用いられる物理的データ・ベースを準備する。物理的データ・ベースは、システム中の各ボードのロジック・チップ１０及びマルチプレクサ・チップ１２の間での物理的接続についての情報を含む。
ボード・パーティショニング・プログラム１０２８は、各ロジック・ボード対内のロジック・チップ１０へのロジック・ゲートの配置を特定する。これは、各ロジック・ボード２００で実現可能なメモリ・インスタンス（memory  instance）の制約、ロジック・アナライザのプローブ・チャンネルの制約、ボード当りのマイクロプロセッサの制約とともに、バックプレーン及びターボ・コネクタの制約を考慮する。
ＥＢＭコンパイル・プログラム１０３０は、同一のロジック・ボード２００に割り当てられたメモリ仕様セルをＲＡＭ２０８（これまでに図１１に示されている）に対応する最大１２のグループに結合する。ＳＲＡＭチップ２０８に接続するＩ／Ｏ信号２０８は、対応するピン番号のマークが付されている。
システム・ルーティング・モジュール１０３２は、物理的なネット及び時分割多重（TDM）位相を選択して、チップの境界（boundary）を超えた論理的なネットを実現する。これは、ピン番号及びＴＤＭ位相を全てのチップＩ／Ｏピンに割り当てる。これは、また、マルチプレクサ・チップ１２及びリピータ・ポッド５２０のプログラミング・データを生成する。
ＮＧＤ更新プログラム１０３４は、各ロジック・チップに対する最終的なインクリメンタルＰＰＲジョブ１０３６を開始し、ＴＤＭロジック及びＩ／Ｏ割り当ての最終的な接続性を提供する。ジョブが正常に完了すると、コンパイルは終了する。
種々のプログラムの機能性の詳細をさらに説明する。
図２２を参照すると、動作テストベンチ・コンパイラ１００４によって作成されるソフトウェア−ハードウェア・モデルのコンパイルに必要なステップのシーケンスが示されている。コンパイルは、Velilog又はVHDLのユーザのソース・コードから開始する。インポート・プロセス１１００の結果として、動作データベース表現１１０２が作成される。モデルのコンパイルが終了すると、エミュレーション・モデル１１１４の論理表現及びこれまでに図２０に示したロジック・モジュール・プロセッサＤＲＡＭ２２６にダウンロード可能な実行可能形式（executable）１１１２のセットが生成される。
動作テストベンチ・コンパイラ・ソフトウェア１００４は、４つの実行可能形式及び１つのランタイム・サポート・ライブラリ（runtime  support  library）を含む。
インポータ１１００は、ユーザのVerilog又はVHDLソース・ファイルを処理し、動作データ・ベース・ライブラリ１１０２を作成する。これは、ソース・ファイル名、位置及びライブラリのファイル名のリストを受け入れ、未定義のモジュール・リファレンスの問題を解決する。ソース・ファイル名は、Velilog又はVHDLで使用されるファイル名である。
プリプロセッサ（preprocessor）１１０４は、インポータ１１００によって作成された動作データベース・ライブラリ１１０２を新しい動作データベース・ライブラリ１１０６に変換する。これは、動作コードを各利用可能なプロセッサ２０６での実行を目的とするクラスタ（パーティションとも呼ばれる）にパーティショニング（分割）し、コード・フラグメント（code  fragment）の実行順序及びパーティションにおける変数の場所を決定する。コード・フラグメントは、プロセッサ２０６で並列に実行できる独立したコードの片（piece）をいう。また、プリプロセッサは、ホールド・タイム違反がないモデルを作成するために必要なすべての変換を行う。例えば、Priceらによる米国特許Ｎｏ．５，２５９，００６号を参照されたい。参考のために、これによる開示をここに完全な形で組み込む。
コード・ジェネレータ１１１０は、プリプロセッサ１１０４で変換された動作データベース・ライブラリ１１０６を読み込み、プリプロセッサ１１０４によって特定される各クラスタに対してダウンロード可能な実行可能形式を生成する。これらの実行可能形式は、プロセッサ２０６の実行のためＤＲＡＭ２２６にダウンロードされる。
ネットリスト・ジェネレータ１１０８は、プリプロセッサ１１０４によって変換された動作データベース・ライブラリを読み込み、他のコンパイラ・プログラム１００６〜１０３６によるさらなる処理のために論理的データベース・ライブラリ１１１４を生成する。共同シミュレーション・ロジック・チップ２０４のマイクロプロセッサのバス及びイベント同期バス（図１１参照）に対する特別な接続を表現するために、ネットリスト・ジェネレータ１１０８は、図２３に示すようなネットリスト構造を作成する。ＭＰセル１２００は、プロセッサ２０６に対応する特別なセルであり、パーティショニング・プログラム１０１８（ＬＢＭセル・インスタンスに類似する）によってはクラスタに分割されない。ペリフェラル・コントローラ・セル１２０２は、ライブラリ・コンポーネントのインスタンスを含む通常のセルであり、共同シミュレーション・ロジック・チップ２０４内に配置される。マイクロプロセッサのバスと直接にやりとりを行う、このセル１２０２には、最小限のロジックのみが配置される。ペリフェラル・コントロール・セル１２０２内に最小限のロジックを配置することにより、待ち状態のプログラミング（wait  state  programming）の必要性がなくなる。ペリフェラル・コントロール・セル１２０２は、チップ・パーティショニング・プログラム１０１８がそれをいくつかのロジック・チップ１０に分割するのを防止するためのフラグが付されている。このセルの容量が１つのロジック・チップ２０４を超えないように、またこのセルとネットリストの他の部分の間の接続の数が共同シミュレーション・ロジック・チップ２０４及びマルチプレクサ・チップ１２の間の接続の数を超えないように、ネットリスト・ジェネレータ１１０８の責任によって管理される。これまでに開示したように、共同シミュレーション・ロジック・チップ２０４は、５４個のマルチプレクサ・チップ１２の各々と電気的な通信を行う３つのピンを持っている。これは、図１１に示すように、共同シミュレーション・ロジック・チップ２０４とマルチプレクサ・チップ１２との間に１６２（３×５４＝１６２）の接続が可能であることを意味する。ネットリスト・ジェネレータ１１０８は、また、特別なネットをマーク（mark）する。このネットは、共同シミュレーション・ロジック・チップ２０４に対する正しい物理的接続を生成するようにシステム・ルータ（system  router）をガイドする、対応するピン番号を有するＭＰセル１２００に接続する。これは、プロセッサ２０６と共同シミュレーション・ロジック・チップ２０４との間の接続がロジック・チップ２０４の特定のピンに接続されるために必要である。
動作テストベンチ・コンパイラ１００４は、Sampleらによる、名称が「Method And Apparatus For Design Verification Using Emulation And Simulation」である、米国特許第５，８４１，９６７号に十分に開示されている。参考のために、これをここに完全な形で組み込む。
ロジック・チップ・メモリ（LCM）・ジェネレータ１００６は、Xilinxのrelationally placed macros（rpms）を用いて、浅いが高度にポートされた（highly  ported）メモリを実現する。これは、最大１４までの書き込みポート、任意の数の読み取りポート及びデバッグ時のアクセスのための追加の１つの読み取り／書き込みポートをサポートする。これは、ロジック・チップ１０の一部として利用可能な同期型のデュアル・ポートＲＡＭの基本要素（primitives）を使用している。
図２２ａに、ロジック・チップ１０内に配置するためにＬＣＭメモリ・ジェネレータ１００６によって生成されるメモリ回路の例を示す。図２２ａのメモリ回路は、以下の部品によって構成される。
書き込みイネーブルのサンプラ及びアービトレータ（arbitrator）１０５０は、書き込みイネーブル信号を高速なクロックに同期化する。また、いくつかのポートからのリクエストが同時に発生した場合に、メモリ回路の書き込み動作の優先順位を決定する。書き込みイネーブル・サンプラ及びアービトレータ１０５０は、書き込みアドレス／データ、マルチプレクサ選択及び書き込みイネーブル信号を出力する。書き込みイネーブル・サンプラ及びアービトレータのセルは、２から１６までの種々の書き込みポート構造を有するハード・マクロ（hard  macros）の形式でリファレンス・ライブラリにプリコンパイル（precompile）されている。
図２２ａのメモリ回路は、また、読み取りカウンタ１０５２を有する。読み取りカウンタ１０５２は、実現されるメモリの読み取りポートを循環（cycle）するために使用される。これらのカウンタは、また、種々のカウント長を持ったハード・マクロ・セルとしてリファレンス・ライブラリにプリコンパイルされる。
図２２ａのメモリ回路は、また、読み取りカウンタ１０５２又は書き込みイネーブル・サンプラ及びアービトレータ１０５０のいずれかをその出力に配置するマルチプレクサ１０５３を有している。マルチプレクサ１０５３の出力は、スロット選択信号ＳＬＯＴ＿ＳＥＬであり、１６のスロット（又はポート）のうちの任意の１つを選択することができる４つのワイヤによって構成されている。
図２２ａのメモリ回路は、また、アドレス・マルチプレクサ及びデータ・マルチプレクサ１０５６を有する。アドレス・マルチプレクサ及びデータ・マルチプレクサ１０５６は、適当なスロット又はポート時間になると、ポートの書き込み／読み取りのアドレス・データ及びポートの書き込みデータを選択するために使用される。スロット選択信号ＳＬＯＴ＿ＳＥＬは、この機能を実行するために、アドレス・マルチプレクサ及びデータ・マルチプレクサ１０５６の選択入力に入力される。
図２２ａのメモリ回路は、また、メモリ１０５８を有する。メモリ１０５８は、１つ又は複数のXilinxの、構成可能なロジック・ブロック（CLB）部分として利用可能なスタティックＲＡＭメモリである。
図２２ａのメモリ回路は、また、読み取りスロット・デコーダ１０５４を有する。読み取りスロット・デコーダ１０５４は、スロット選択信号ＳＬＯＴ＿ＳＥＬを（ここでは４つ存在する）を最大１６の別個のワイヤにデコードする。ワイヤは、出力レジスタ１０６０に対するクロック・イネーブル入力として使用される。
図２１を参照すると、ＬＣＭメモリ生成プログラム１００６によって生成されるポートの幅、深さ及び数は、ネットリスト・インポート・プログラム１０００、HDL-ICETMブランドの合成プログラム１００２又は動作テストベンチ・プログラム１００４によって生成されるネットリストの要求に依存する。Xilinxのrelationally  placed  macros（RPMS）は、一般的なセル・インスタンス及びロジック・チップ１０の特定のロジック・モジュールへのメモリ回路のマッピングを制御する特別なFMAPとHMAPのセルのインスタンスによって定義されたデータベース・セルを用いて作成される。FMAP及びHMAPのセルは、Xilinx PPRプログラム１０２２の動作を制御するための特別の基本部品である。これまでに論じたように、現時点における好ましい実施例では、これらは、XilinxのＦＰＧＡ内のＣＬＢである。これらのインスタンスは、また、ロジックを配置するロジック・モジュール（現時点における好ましい実施例ではＣＬＢ）の相対的な位置を指定するＲＬＯＣ特性を持っている。
ＲＰＭセルには、チップ・パーティショニング・プログラム１０１８がそれらをいくつかのロジック・チップ間に分割するのを防ぐために、フラグ（現時点における好ましい実施例では、このフラグは“NOFLAT”と呼ばれる）を付加しなければならない。ＲＰＭセルは、また、予め計算された容量値及びその大きさ（垂直及び水平方向に用いられるロジック・モジュール、すなわちＣＬＢの数）を含む特性を持っていなければならない。
ＦＭＡＰ及びＨＭＡＰの基本要素（プリミティブ）とロジック基本要素との間のパラレル接続は設計ルール違反を生じることがあるため、データ判定プログラム１０１０は、ＲＡＭセル内のネットリストの確認を行わない。ＮＧＤ出力プログラム１０２０は、各ＲＡＭインスタンス内の全ての基本要素のＲＬＯＣの値を保持する。これにより、ＰＰＲ１０２２は、ＲＬＯＣの特性によって定義される制約を満たすような形でＲＰＭをチップ内に配置することができる。
ユーザデータ入力プログラム１００８は、ユーザによるクロック及び他の設計情報の入力を可能とするのみならず、グローバルなプローブ多重係数を計算する。プローブは、設計をデバッグ中に観察される、ネットリスト内部の点である。プローブ多重係数は、ロジック・チップ１０に付加されるスキャン・チェーンの長さを決定する。ユーザは、プローブを表にするか、全体表示モードをリクエストすることができる。全体を表示する場合には、多重係数は６４となる。ユーザが、信号の指定リストのみを目で見たい場合には、多重係数は、以下のように計算される。
（プローブの数）×（偏差係数）／（４３２×ロジック・ボードの数）
ロジック・ボード２００の数は、計算が行われるときに知られていなければならない。偏差係数は、実験的に決定される係数であり、プローブされる信号がロジック・ボード２００の間で均一に分配されない場合に考慮されるものである。確率的な理論を考慮に入れれば、大きいシステムに対する１．４と２枚のボードのシステムに対する１．７の間となる。Ｂ枚のボードを有するシステムに対しては、概略、１／（１−０．２９）ｓｑｒｔ（Ｂ／（Ｂ−１）））である。この係数をさらに大きくすることによって、複数のロジック・ボード２００のリコンパイルを必要とせずにプローブを増加的に加算するためのルーム（room）を提供する。
好ましい実施例のシステムにおけるロジック・アナライザのイベントは、ロジック・ボード２００のロジック・チップ１０内で、プログラム可能なロジックによって計算される。それゆえ、イベントの計算のために、ロジック・チップ１０内に容量を確保する必要がある。この結果として、ユーザが、信号及びイベントの定義を設計のコンパイル後まで遅らせると、影響を受けるチップのインクリメンタルな再コンパイルを行う必要が生ずる。あるチップについて確保された容量が十分でない場合には、図２０ｃで示したように、他のロジック・チップ１０でイベント検出器を構成するに十分な容量があるものに信号をルートしなければならない。この場合には、より長いコンパイル時間を要する。イベントを作成するために使用される全ての信号をコンパイル前に指定することによって、コンパイル時間が長くなるのを防ぐことができる。この段階では、実際にイベント又はトリガを定義する必要はない。なぜなら、このような定義は容量に影響を与えないためである。イベント・ロジック機能自体は、コントローラ２２１に接続されたＪＴＡＧバス（図２０及び２０ｃに示す）を使って動作中にロジック・チップ１０にダウンロードすることができる。
最後に、このユーザデータ入力ステップ１００８の間では、ユーザーは、クリティカルでない（non-critical）信号に対する時間多重係数を選択しなければならない。前述したように、時間多重係数は、１、２又は４のいずれにも設定できる。
チップ・パーティショニング・プログラム１０１６及び１０１８は、クラスタリングの基礎アルゴリズム（a  clustering  based  algorithm）を使用する。類似するアルゴリズムの例としては、Quick  Turn  Design  Systems，Inc．のSystem  RealizerTM等のハードウェア・エミュレーション・システムがある。しかしながら、現時点における好ましい実施例では、種々の相違点がある。これらの相違点を、以下に詳しく説明する。
１）特定の種類のセルでは、不適正なパーティショニングやクラスタリング等を防止するために特別な注意を払わなければならない。ノー・タッチ（“No-touch”）セルは、ロジックと一緒にクラスタすることができない特定のセルである。ノー・タッチ・セルの例としては、図２３に示すＭＰセルがある。ノー・フラット（“No-flat”）セルは、いくつかのチップの間に分割することができないセルである。ノー・フラット・セルの例としては、ラッチ及びハード・マクロがある。これらでは、分割によってタイミングの問題を生ずる。
２）ある特別なネットは、ドライバを持ってなく、任意に切断することができない。ＰＯＷＥＲ及びＧＲＯＵＮＤに加え、ロジック・ゲートが接続される特別のネットのような例が多重クロック信号４４である。特に、動作テストベンチ・コンパイラ１００４、ＥＢＭコンパイラ１０３０及びＬＣＭコンパイラ１００６は、時間多重クロックに接続されるロジックを作成する。
３）ピン出力の制約によって、クラスタが有するネットの最大数が制御される。ロジックのクラスタがＲＩレギュラー外部入力ネット、ＲＯレギュラー外部出力ネット、ＣＮクリティカル外部ネット、Ｐプローブ信号（P  probed  signals）を有し、プローブに対する時分割多重係数がＴであると仮定すると、このクラスタを１つのチップの上に実現するために必要なピンの数は、以下のように計算される（すべての分割動作は、四捨五入のない純粋な整数型の分割である）。
ａ．ロジック信号について時間多重を行わない場合には、ピンの数は、ＲＩ＋ＲＯ＋ＣＮ＋（Ｐ＋Ｔ−１）／Ｔで与えられる。
ｂ．ロジック信号について２対１の時間多重を行う場合には、ピンの数は、（ＲＩ＋１）／２＋（ＲＯ＋１）／２＋ＣＮ＋（Ｐ＋Ｔ−１）／Ｔで与えられる。
ｃ．ロジック信号について４対１の時間多重を行う場合には、ピンの数は、ｍａｘ（（ＲＩ＋１）／２）、（ＲＯ＋１）／２）＋ＣＮ＋（Ｐ＋Ｔ−１）／Ｔで与えられる。
注）ユーザーによって完全表示モードが選択された場合には、プローブＰの数は、フリップ・フロップ及びラッチの数と等しいものとされる。
４）クラスタに許される最大サイズは、特定のロジック・チップ１０のゲート容量に依存する。このロジック・ゲートに加え、時分割多重、プローブ及びイベント検出回路について、追加の容量が必要となる。ロジックのクラスタは、ＲＮ個のレギュラー（ノン・クリティカル）外部ネット（ＲＮ＝ＲＩ＋ＲＯ）、Ｐ個のプローブ信号、Ｅ個のイベント検出で使用される検出信号を仮定すると、時間分割マルチプレクシング、プローブ及びイベント検出の回路における追加される容量は以下のように与えられる。
ａ．ロジック信号について時間多重を行わない場合には、ロジック・アナライザにおける追加の容量は以下で与えられる。
フリップ・フロップ：    Ｐ＋２×Ｅ＋ｌｏｇＥ
ゲート：                Ｃ１×Ｐ＋Ｃ２×（（Ｅ＋１）／２）×８
現時点における好ましい実施例では、定数は、Ｃ１＝２、Ｃ２＝４である。これらは、実験の結果に応じて後で修正される。
ｂ．任意の種類の時間多重（２：１、４：１又は他の処理）を有し、ロジック・アナライザで必要とされるものに加えてＲＮ個のフリップ・フロップの追加が必要となる。
５）米国特許Ｎｏ．５，４７５，８３０号に説明されているように、クロック・ツリーを正確に実現する必要性から、パーティショニングが制御される。設計内の各ネットは、ＣＬＫＭＡＳＫと呼ばれる１６ビット整数型のプロパティを割り当てられる。ＣＬＫＭＡＳＫのビットｉは、ユーザー・クロックｉが直接（非反転）の位相でネットに到達する場合にセットする必要がある。ビット８＋ｉは、ユーザー・クロックｉが反転された位相でこのネットに到達する場合にセットする必要がある。この情報は、ＰＰＲプログラム１０２２に渡されて、必要な遅延の調整を行う。
ＮＧＤ出力プログラム１０２０は、ＰＰＲプログラム１０２２での処理に適したフォーマットでネットリストを出力する。これに加え、これは、いくつかのロジックの修正に関係する、時間領域マルチプレクス又はロジックのデバッグを行う。これらの関数としては、以下のものがある。
・関連配置（RP）マクロの保存：
データベース内の関連配置マクロは、ＰＰＲに渡されるＮＧＤファイルに保存される。ＲＰマクロは、XilinxのＦＰＧＡの中の固定的なＣＬＢのパターンにマップされたロジック・ゲートのマクロである。ＲＰマクロは、後続のソフトウェアのステップで再びパーティションされることはなく、そのタイミング特性は保存される。
・ＴＤＭセル挿入：時分割多重セルは、マルチプレクサ・チップ１２に接続される各ロジック・チップ１０の境界（バウンダリ）に追加される。予め定められたセルは、多重化されているＩ／Ｏピンの組に対して相対的に配置されて使用される。図２４ａ〜２４ｋは、このＩ／Ｏピンの種類に応じて挿入される種々の異なるＴＤＭセルを示したものである。時分割多重のために、ロジック・チップ１０及びマルチプレクサ・チップ１２の端子は、特別なＲＰＭセルを使用して図２４ａ〜２４ｋに示すように、４つのグループに分割される。残りの端子、２つのグループは使用され、又はレギュラーな非多重Ｉ／Ｏはすでにロジック・チップ１０又はマルチプレクサ・チップ１２で使用されている。非多重Ｉ／Ｏは、常に、クリティカルなネットに対して使用される。
・ＴＤＭ制御ロジック挿入：ＴＤＭ制御ロジックは、ＴＤＭ制御信号であるＭＣ、ＭＳ、ＭＴ、Ｅ０、Ｅ１、Ｅ２及びＥ３を生成し、図２４ａ〜２４ｋに示す回路に分配する。これらの信号は、図２４ａ〜２４ｋに示すロジックに加えて、各ロジック・チップ１０に挿入される３つの特別な制御セルの中の１つによって生成される。これらの信号の生成は、図６に示すロジック１０４又は図３に示すロジック６８によって行われる。ＭＣはマルチプレクサ・クロック信号４４であり、ＭＳは分周クロック信号５０であり、ＭＴは方向信号８０であり、Ｅ０〜Ｅ３はそれぞれイネーブル信号９０、９２、９４、９６である。特別なセルは、ロジック・チップ１０の固定入力ピンに接続される２つの入力MUXCLK及び同期４８を有している。ある種類の制御セル（図示していない）は、ＴＤＭを使用しないが、多重クロック信号（MUXCLK）４４に接続されるチップに対して使用される。このセルは、マルチプレクサ・クロック信号（MUXCLK）４４のみを出力する。第２の種類は（図３に示すロジック６８）は、２対１のＴＤＭを有する設計に対して使用される。これは、多重クロック信号（MUXCLK）４４及びＭＳ（分周クロック）信号５０を出力する。第三の種類の制御セル（図６のロジック１０４）は、４対１の時間多重に使用される。これは、マルチプレクサ・クロック信号（MUXCLK）４４、ＭＳ（分周クロック）５０、ＭＴ（方向）８０、Ｅ０  ９０、Ｅ１  ９２、Ｅ２  ９４、Ｅ３  ９６を生成する。
・プローブされた信号へのスキャン・セル挿入：プローブされた信号の各々は、プローブ・セルのデータ入力に接続する必要がある。プローブ・セルは出力を持っておらず、他の２つの入力を持っている。これらの入力のうちの１つは、多重クロック信号（MUXCLK）４４である。他の入力は、チップの入力からのトレース・クロック信号２００２に接続されている。プローブ・セルは、図２０ｂ及び図２０ｃに示すように、フリップ・フロップ２００４及びマルチプレクサ２００５を有している。
・スキャン・チェーン指定ファイルの生成：プローブ・セルのすべてのインスタンスは、スキャン・チェーン指定ファイルにリストされている。チップのスキャン出力２００６（図２０ｂ参照）も、リストに加えておく必要がある。これらの出力は、チップ・ロジックのクラスタのデータベース・モデルに挿入される。これにより、システムのルータは、これを参照して、適切な接続を生成する。出力の数は、（Ｐ＋Ｔ−１）／Ｔで与えられ、ここで、Ｐはプローブ・セルの数、Ｔはプローブ・信号の時分割多重係数である。
・イベントに寄与する信号についてのイベント検出セルの挿入：イベントに寄与する信号は、一対ごとに分割される。各対は、図２５に示すように、イベント検出セル１３００の８つのコピー（copy）のうちのＩ０及びＩ１に接続される。イベント検出セルの好ましい実施例は、図２０ｃに示されている。イベント検出セル１３００は、４つのフリップ・フロップ２０１０及びＣＬＢメモリ２０１８によって構成される。４つのマルチプレクサ２０２０及び４つの出力バッファ２０２２は、４つの多重化されたイベント信号２３６を生成するために使用される（図２０ｃ及び２０ａに示されている）。信号の数が奇数の場合には、各イベント検出セルに対する入力のうちの１つは、対応する８つのセルについて使用されないままとなる。
・イベント検出器の出力に対する８つのバランスされたＡＮＤツリーの生成及び８つのＡＮＤツリーの出力を４つの指定されたイベントピンに接続するＴＤＭロジック：イベント検出セル１３００の出力は、直前のステップで作成された８つのツリーの１つのコピーが各ツリーに存在するように、８つのバランスされたＡＮＤツリーを用いて結合される。ツリーの出力は、図２６に示されているように、特別なイベント多重セルを用いて一対ごとに時間多重化される。この回路は、図２０ｃを参照して説明されている。ＡＮＤゲート２０１２は、図２０ｃに示されているように、ワイド・エッジ・デコーダ２０１２を用いて構成される。図２６に、この回路をさらに詳細に示す。
・イベント検出器のダウンロード経路の生成及びバウンダリ・スキャン・コントローラ：イベント検出器ダウンロード回路１５００を図２７に示す。これは、カウンタ２０１６、シフト・レジスタ２０１４及びＪＴＡＧコントローラ１１５０により構成される。ＪＴＡＧコントローラ１１５０は、Xilinxのロジック・チップ１０の標準的な部分として利用可能である。この回路は、また、スキャン・レジスタ及びイベント検出器とともに図２０ｃに示されている。イベント検出器のダウンロード回路１５００は、ＷＡ１５０２、ＷＥ１５０４、ＤＲＣＬＫ１５０８及びＴＤＩ１５０６信号をすべてのイベント検出器に対して生成する（図２０ｃにも示されている）。イベント検出器のカウンタ２０１６は、ＷＡ信号１５０２及びシフト・レジスタ２０１４に対するクロックを生成する。シフト・レジスタ２０１４の長さは、イベント・デーコーダ回路の数に依存する。この回路を、図２０ｃ及び２７に示されている。好ましい実施例では、シフト・レジスタ２０１４は、イベント検出器の数に応じて作成される。しかしながら、これは、チップあたりのイベント検出器の最大数を限定し、シフト・レジスタ２０１４の設計を決定するものであり受容される。ＰＰＲプログラム１０２２は、使用されないロジックのほとんどを整理する。
図２１を参照して、ボード・パーティショニングのステップ１０２４を説明する。ボード・パーティショニングのステップ１０２４では、１つのロジック・ボード２００（３７チップ）又は一対のロジック・ボード（７４チップ）のロジック・チップ１０及び２０４のチップの数を超えない最大のチップ数を持ったチップ・クラスタチップのクラスタ（１つのクラスタは、相互接続された部品の集合である）を、以下の条件で検索する。
１．入力（ingoing）又は出力（outgoing）のネットの総数は、図１１に示す一対のロジック・ボード２００に対する２つのバックプレーン・コネクタ２２０のＩ／Ｏ接続の数にバックプレーン利用係数（backplane  utilization  coefficient）を乗じた数を超えてはならない。ターゲットのバックプレーン利用係数は、実験的に決定され、システムのルーティング・プログラム１０３２が平均的にどの程度成功するかに依存する。ターゲットのバックプレーン利用係数は、９０％程度になると予想される。
２．ロジック・アナライザのチャンネルとしてマークされたチップの出力の総数は、８６４を超えてはならない（５４個のマルチプレクサ・チップ１２の数に８個のＳＧＲＡＭ２１０のピンの数８を乗じ、その総数は、１つのモジュール内の２つのロジック・ボード２００の数２を乗じたものである。）。
３．ＥＢＭメモリのインスタンスのフル・セットは、２４チップ（サイズが半分のモジュールでは１２）以下でなければならず（図１１を参照して説明したように、１つのロジック・ボード２００には１２のＲＡＭ２０８があり、また一対のロジック・ボードには２４個存在する）、そして、ＥＢＭメモリについて必要とされるロジック・チップの数は総数である７４（サイズが半分のモジュールでは３７）から減算される。
４．ＣＰＵセルのインスタンス（即ち、ユーザの設計からのＣＰＵインスタンスの数）は２を超えてはならない（サイズが半分のモジュールでは１）（図１１を参照して説明したように、ロジック・ボード２００当り１つのプロセッサ２０６があり、一対のロジック・ボードには２個存在する。）。
５．７４の（サイズが半分のモジュールでは３７）チップのうち２（サイズが半分のモジュールでは１）つのチップ２０４は、クロック・ジェネレーション・ロジック・チップとして使用でき又はマイクロプロセッサのセルに装着して使用することができる。マイクロプロセッサのセルが存在する場合には、クロック・ジェネレーション・チップは使用することができず、その逆も成立する。これは、CoSimロジック・チップ２０４が、チップでは同時に１つの機能にしか使用できないためである。しかしながら、どちらの機能も使用されない場合がある。このような場合には、７２（１つのロジック・ボード２００では３６）の最大容量のロジック・チップ１０しか使用できない。クラスタのＩ／Ｏピンの数が１６２以下のときには、２つの追加のCoSimロジック・チップ２０４（サイズが半分のモジュールでは１つ）を追加されるユーザー・ロジックを実現するために使用することができる（図１１参照）。
適当なクラスタが特定されると、フル・サイズのクラスタは、ボード間の相互接続が１８６８（ターボ・コネクタ２０２のピンの数）以内の条件で、２つのエミュレーション・ボードに分割される。各ボードは、クリティカルなクラスタのリソースの総数の半分（１８０４入力又は出力ネット、１２のＥＢＭメモリ、４３２のロジック・アナライザ・チャンネル、３７のロジック・チップ１０、２０４）を超えてはならない。
ＥＢＭのコンパイル・ステップ１０３０では、エミュレーション・ブロック・メモリ（ＥＢＭ）として実現されるメモリ・セルのインスタンスを作成する。これらは、チップのパーティショニングの間は、どのロジック・クラスタにも含められない特別なセルとして作成される。評価サブルーチンによって、任意のメモリ・インスタンスのセットとして、いくつのＥＢＭチップ２０８（図１１参照）が必要となるかが評価される。このサブルーチンは、階層パーティション・プランニング・プログラム（hierarchial  partition  planning  program）（HPP）１０１４（この接続は図２１に表示しない）からコールされ、ボード・パーティショニング・プログラム１０２８が、１つのボードに実現される１組のメモリ・インスタンスを適当に決定し、また、メモリ制御回路で使用されるロジック・チップ１０の数を決定する。ボード・パーティショニング・プロセスが完了すると、ＥＢＭメモリ・コンパイラ１０３０は、ロジック・ボード２００の各ＲＡＭチップ２０８に関連するロジック・クラスタを作成する。ＲＡＭチップ２０８に接続される配線には、ＮＧＤ出力プログラム１０２０がこれらに時間多重を組み込まないように、すべて、“クリティカル”の表示が付される。これらは、また、システム・ルータ１０３２が正しいＩ／Ｏの制約を生成できるよう、それぞれのロジック・チップ１０のピン番号を含むプロパティを持っている。ＥＢＭロジック・クラスタは、ユーザーによってはアクセスできない自動的に生成されるロジックを含んでいるため、ＥＢＭロジック・クラスタにプローブ信号を含めることができず、ＥＢＭロジック・クラスタは、イベントを生成することができない。
好ましい実施例では、ＥＢＭロジック・クラスタは、プリコンパイルされる。これにより、これらのクラスタ配置とルーティングの時間がセーブされる。ＥＢＭメモリ・コンパイラ１０３０は、米国特許第５，８４１，９６７号に完全に開示されている。
システム・ルータ１０３２は、ロジック・チップ１０、２０４、マルチプレクサ・チップ１２及びロジック・ボード２００に物理的なワイヤをロジック・ネット（又はエミュレートされる設計の信号）、一対のロジック・ネット（２対１マルチプレクス）及び４つのネットからなるグループ（４対１マルチプレクス）に割り当てる。次いで、ロジック・チップ１０のピン及び時分割多重（TDM）の位相をロジック・チップ１０及び２０４に入り又はこれらから出る信号に割り当てる。
システムのルーティングを行う時には、信号の遅延を最小限に抑えるように、時間多重信号を最適にルーティングすることが重要である。このためのアルゴリズムを以下に示す。
１．２対１時分割多重（２−１ＴＤＭ）
最適なルートは、各マルチプレクス・チップ１２内のＴＤＭ位相をスイッチするが、物理的ネットのソースから物理的ネットの目的地（destination）にはルーティングしない。最適なルートの例としては以下のものがある。
alpha/output/even-beta/input/even-beta/output/odd-alpha/input/odd，又は、
alpha/output/even-beta/input/even-beta/output/odd-muxbeta/input/odd-muxbeta/output/evenbeta/input/even-beta/output/odd-alpha/input/odd
この記述では、alphaチップはロジック・チップ１０又は２０４に相当し、betaチップはマルチプレクサ・チップ１２に等価となる。これにより、２つのロジック・チップ１０又は２０４の間での遅延は、最小値である１サイクルとなる。この遅延を、図３及び図４の回路について調べれば、２分の１サイクルになるとも思える。実際には、これはちょうど１サイクルかかる。これは、ロジック・チップ１０、２０４内のデマルチプレクサ３４は、２分の１サイクルの終わりに近い部分で信号をクロックするため、データが受信されても２分の１サイクルにわたって、そのまま変化しないからである。ルータ１０３２によって最適なルートが見つからない場合には、即ち、適当なマルチプレクサ出力が利用可能でないか、適当な位相のマルチプレクサ出力が利用可能でないか適当なフェーズでのロジック・チップ１０又は２０４の入力が利用可能でないときは、信号はさらに２分の１サイクルの遅延を失う。ルータは、可能な限り、同じネットについてのミスを重ねないように努める。クリティカルなネットは、遅延を最小化するため、マルチプレクスされない。
２．４対１時分割多重（４−１ＴＤＭ）
各物理的ネットは、常に、１つのインアウト・ピン（ＩＩＯＯシーケンス）及び１つのアウトイン・ピン（ＯＯＩＩシーケンス）を有している。ここでも、最適なルートは、各マルチプレクス・チップ１２内の時分割多重（TDM）位相をスイッチするが、物理的ネットのソースから物理的ネットの目的値にはルートしない。最適なルートの例としては以下のものがある。
alpha/OI/O1-beta/IO/I1-beta/OI/O2-alpha/IO/2alpha/OI/02-beta/I0I2-beta/IO/O3-alpha/OI/I3alpha/OI/O1-beta/IO/I1-beta/OI/O2-muxbeta/IO/I2-muxbeta/IO/O3-beta/OI/I3-beta/IO/O4-alpha/OI/I4
これにより、最小限の２分の１サイクルの遅延alpha-to-alphaが得られる。しかしながら、４対１時分割多重（４−１ＴＤＭ）の２分の１サイクルは、２対１時分割多重（２−１ＴＤＭ）の１サイクルと同じ期間となる。このため、全てのネットが最適にルーティングされたと仮定すれば、４対１時分割多重（４−１ＴＤＭ）では、２対１時分割多重（２−１ＴＤＭ）に比べて速度が損なわれることはない。しかしながら、４対１時分割多重（４−１ＴＤＭ）におけるミス（すなわち、前記した、最適ルートの検索に失敗する）は、２対１時分割多重（２−１ＴＤＭ）における場合よりも重大な影響を及ぼす。例えば、経路：alpha/OI/O1-beta/IO/I1-beta/OI/O1-alpha/IO/I1は、信号を１．２５［４対１時分割多重（４−１ＴＤＭ）サイクル］（又は２．５［２対１時分割多重（２−１ＴＤＭ）サイクル］遅延させる。これは、最適な遅延に比べ１．５倍悪い。マルチプレクサ・チップ１２、ルータ１０３２を通じた行程ごとに、ルータ１０３２が選択した入力−出力対に応じて４対１時分割多重サイクルの０、１／４、１／２又は３／４倍の遅延が生じる。このように、クリティカルなネットは、遅延を最小限とするために多重化すべきではない。
一部のロジック・チップ１０又は２０４は、特定のピンに固定された入力／出力のネットを有している。例としては、多重クロック信号（MUXCLK）４４、トレース・クロック信号２００２、共同シミュレーション・ロジック・チップ２０４とプロセッサ２０６（図１１参照）との間の接続、メモリ・コントロール・ロジック・チップ１０とＲＡＭチップ２０８との間の接続、イベント信号出力２３６等がある。これらの接続は、ルートする必要はないが、ロジック・チップ１０、２０４のピンの制約のデータに含める必要がある。
制御モジュール６００（図１９に示されている）のクロック分配回路（マルチプレクサ・チップ１２）については、追加のプログラムが必要とされる。これは、各ロジック・モジュールに到達する最大８つまでのユーザ・クロックを選択するためのクロック回路の一部である。
ＮＧＤアップデート・プログラム１０３４は、システム・ルータ１０３２によって生成された実際のピンＩ／Ｏ割り当てについての情報を、最終のパラレルパーティション・配置・ルート（PPR）ソフトウェア１０３６に供給する。これは、非時分多重化されない設計に対しては、Ｉ／Ｏパッドへの信号の割り当てと同じである。時分多重化される設計に対しては、ロジック・チップ１０、２０４及びマルチプレクサ・チップ１２の周辺にＴＤＭロジックも追加される。
最終のパラレルパーティション・配置及びルート（PPR）プログラム１０３６は、ＰＰＲプログラムをインクリメンタル・モードに戻してチップの周辺においてＩ／Ｏピンを再ルートする。これまでに述べたとおり、ＰＰＲプログラムはXilinx Corporationから入手可能である。この再ルーティングにより、ロジック・チップ１０、２０４の構成ファイル（configuration  file）は、その前に準備ＰＰＲステップ１０２２で作成されたロジック・チップ１０、２０４のコンフィギュレーション・ファイルが変更され、ピン出力はシステム・ルーティング・ステップ１０３２で決定されて固定される。
以上のように、集積回路をエミュレートし、検証し、解析するための好ましい方法及び装置について説明した。本発明の実施例及び応用例を示し、説明したが、当業者であれば、ここに開示した発明の概念を逸脱することなく種々の実施例及び応用例が可能であることは明らかであろう。それゆえ、本発明は、添付した請求の範囲の精神を除いては限定されるべきではない。
【図１】
0004424760.tif 000011
【図２】
0004424760.tif 000012
【図３】
0004424760.tif 000013
【図４】
0004424760.tif 000014
【図５】
0004424760.tif 000015
【図６】
0004424760.tif 000016
【図７】
0004424760.tif 000017
【図８】
0004424760.tif 000018
【図９】
0004424760.tif 000019
【図１０】
0004424760.tif 000020
【図１１】
0004424760.tif 000021
【図１２】
0004424760.tif 000022
【図１３】
0004424760.tif 000023
【図１４】
0004424760.tif 000024
【図１５】
0004424760.tif 000025
【図１６】
0004424760.tif 000026
【図１７】
0004424760.tif 000027
【図１８】
0004424760.tif 000028
【図１９】
0004424760.tif 000029
【図２０】
0004424760.tif 000030
【図２０ａ】
0004424760.tif 000031
【図２０ｂ】
0004424760.tif 000032
【図２０ｃ】
0004424760.tif 000033
【図２０ｄ】
0004424760.tif 000034
【図２１】
0004424760.tif 000035
【図２２】
0004424760.tif 000036
【図２２ａ】
0004424760.tif 000037
【図２３】
0004424760.tif 000038
【図２４ａ】
0004424760.tif 000039
【図２４ｂ】
0004424760.tif 000040
【図２４ｃ】
0004424760.tif 000041
【図２４ｄ】
0004424760.tif 000042
【図２４ｅ】
0004424760.tif 000043
【図２４ｆ】
0004424760.tif 000044
【図２４ｇ】
0004424760.tif 000045
【図２４ｈ】
0004424760.tif 000046
【図２４ｉ】
0004424760.tif 000047
【図２４ｊ】
0004424760.tif 000048
【図２４ｋ】
0004424760.tif 000049
【図２５】
0004424760.tif 000050
【図２６】
0004424760.tif 000051
【図２７】
0004424760.tif 000052