(57)【要約】      （修正有）【課題】ＦＰＧＡの利用度を最大限にすると同時に、ダイのサイズへの影響を最小限にする、新しいアーキテクチャ分散階層相互接続技法を提供する。【解決手段】ＦＰＧＡは、入力信号に対して論理関数を実行するいくつかのセルから成る。プログラマブル内部接続によって、論理クラスタに属するセルの各出力とその論理クラスタに属する他の各セルの少なくとも１つの入力との接続を行うことができるようにする。セルの数をアレイ内の前のセル数の２の２乗の関数として増やすと同時に、ルーティング線の長さとルーティング線の本数を２の一次関数として増やす場合には、追加のルーティング層を追加する。プログラマブル双方向パスゲートをスイッチとして使用して、どのルーティング網線を接続するかを制御する。【選択図】図６
2008278508.tif 000002
【特許請求の範囲】
【請求項１】
スイッチと、
第１の次元に沿って第１の長さを有する第１の導体と第１の次元に沿って第２の長さを有する第２の導体と第１の次元に沿って第３の長さを有する第３の導体であって、第１の長さは第２の長さより長く、かつ、第１の長さは第３の長さより長く、前記第１の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第１及び第２及び第３の導体と、
第２の次元に沿って第４の長さを有する第４の導体と第２の次元に沿って第５の長さを有する第５の導体と第２の次元に沿って第６の長さを有する第６の導体であって、第４の長さは第５の長さより長く、かつ、第４の長さは第６の長さより長く、前記第２の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第４及び第５及び第６の導体とを備え、
第１の導体は前記のスイッチを介して第４の導体に選択的に結合し、
第１及び第２及び第３及び第４及び第５及び第６の各導体は論理クラスタのセルの入力にも出力にも直結されないことを特徴とする集積回路。
【請求項２】
プログラマブル論理回路の相互接続方法であって、
第１の次元に沿って第１の長さを有する第１の導体と第１の次元に沿って第２の長さを有する第２の導体と第１の次元に沿って第３の長さを有する第３の導体であって、第１の長さは第２の長さより長く、かつ、第１の長さは第３の長さより長く、前記第１の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第１及び第２及び第３の導体を提供し、
第２の次元に沿って第４の長さを有する第４の導体と第２の次元に沿って第５の長さを有する第５の導体と第２の次元に沿って第６の長さを有する第６の導体であって、第４の長さは第５の長さより長く、かつ、第４の長さは第６の長さより長く、前記第２の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第４及び第５及び第６の導体を提供し、
スイッチを介して第１の導体を第４の導体に選択的に結合し、
第１及び第２及び第３及び第４及び第５及び第６の各導体は論理クラスタのセルの入力にも出力にも直結されないことを特徴とする方法。
【請求項３】
ある長さを有する集積回路であって、
スイッチと、
第１の次元に沿って第１の長さを有する第１の導体と第１の次元に沿って第２の長さを有する第２の導体と第１の次元に沿って第３の長さを有する第３の導体であって、第１の長さは少なくとも第２の長さ及び第３の長さのいずれかよりは長く、かつ、第１及び第２及び第３の長さはそれぞれ前記第１の次元に沿って集積回路の長さより短く、第１の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第１及び第２及び第３の導体と、
第２の次元に沿って第４の長さを有する第４の導体と第２の次元に沿って第５の長さを有する第５の導体であって、第４の長さは第５の長さより長く、かつ、第４の長さは前記第２の次元に沿って集積回路の長さより短く、前記第２の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第４及び第５の導体とを備え、
第１の導体は前記のスイッチを介して第４の導体に選択的に結合し、
第１及び第２及び第３及び第４及び第５の各導体は論理クラスタのセルの入力にも出力にも直結されないことを特徴とする集積回路。
【請求項４】
プログラマブル論理回路の相互接続方法であって、
第１の次元に沿って第１の長さを有する第１の導体と第１の次元に沿って第２の長さを有する第２の導体と第１の次元に沿って第３の長さを有する第３の導体であって、第１の長さは第２の長さか第３の長さのどちらかより長く、前記第１の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第１及び第２及び第３の導体を提供し、
第２の次元に沿って第４の長さを有する第４の導体と第２の次元に沿って第５の長さを有する第５の導体であって、第４の長さは第５の長さより長く、前記第２の次元に沿い、かつ、少なくとも１つの論理クラスタのセルに沿い、かつ、セルの長さに亘って配置されている、第４及び第５の導体を提供し、
スイッチを介して第１の導体を第４の導体に選択的に結合し、
第１及び第２及び第３及び第４及び第５の各導体は論理クラスタのセルの入力にも出力にも直結されないことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラマブル論理回路の分野に関する。具体的には、本発明はプログラマブル論理回路のアーキテクチャおよび相互接続技術に関する。
【背景技術】
【０００２】
集積回路（ＩＣ）が初めて導入されたときは、きわめて高価であり機能が限定されていた。半導体技術の急速な進歩により、コストが大幅に低下したと同時に、ＩＣチップのパフォーマンスが向上した。しかし、専用のカスタム・ビルトＩＣの設計、レイアウト、および製造工程のコストは依然としてかなり高い。少量のカスタム設計ＩＣを製造する場合には特に高い。さらに、ターンアラウンド・タイム（すなわち、初期設計から完成品までに要する時間）が相当長くなることが多く、複雑な回路設計の場合には特に長くなる。電子製品やコンピュータ製品の場合、市場で最初の製品であることは重要である。さらに、カスタムＩＣの場合、初期設計に変更を加えることはかなり難しい。必要な変更を行うには時間、労力、費用を要する。
【０００３】
カスタムＩＣに付きものの短所を考慮すると、多くの場合、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）が魅力的な解決策となる。基本的には、ＦＰＧＡは、ユーザが所望の構成にプログラムすることができる標準高密度既製ＩＣである。まず回路設計者が所望の論理機能を定義し、それに従って入力信号を処理するようにＦＰＧＡをプログラムする。それによって、実装ＦＰＧＡを迅速かつ効率的に設計、検証、修正することができる。論理密度要件と製造量によっては、ＦＰＧＡはコストと市場に出荷するまでの時間の点ですぐれた代替策である。
【０００４】
典型的なＦＰＧＡは基本的に、構成可能な論理ブロックの内部マトリックスを取り囲む入出力ブロックの外環から成る。ＦＰＧＡの周縁部にある入出力ブロックはユーザがプログラムすることが可能で、各ブロックを入力または出力としてプログラムすることができ、トライステートとすることもできる。各論理ブロックは一般に、プログラマブル組合せ論理回路と記憶レジスタを備えている。組合せ論理回路を使用して、その入力変数についてブール関数を行う。多くの場合、レジスタには論理ブロックの入力から直接ロードするか、または組合せ論理回路からロードすることができる。
【０００５】
論理ブロックの行と列の間と、論理ブロックと入出力ブロックの間のチャンネルを相互接続資源が占有する。これらの相互接続資源は、チップ上の指定された２点間の相互接続を制御する柔軟性を備えている。通常は、論理ブロック間を金属配線網が行と列の形で水平方向と垂直方向に走っている。論理ブロックおよび入出力ブロックの入力と出力は、プログラマブル・スイッチによってこれらの金属配線と接続されている。行と列の交差点にあるクロスポイント・スイッチと交換機構を使用して、信号を１つの線から他の線に切り換える。多くの場合、長い線を使用してチップの全長または全幅あるいはその両方にわたって張り巡らせる。
【０００６】
入出力ブロック、論理ブロック、およびそれぞれの相互接続部の機能はすべてプログラム可能である。一般に、これらの機能はオンチップ・メモリに記憶されている構成プログラムによって制御される。構成プログラムは、電源投入時、コマンド入力時、またはマイクロプロセッサによってシステム初期設定の一部としてプログラムされて、外部メモリから自動的にロードされる。
【０００７】
ＦＰＧＡの概念は、セルとセルラ・アレイの概念を再構成可能素子として説明したミニックによって、６０年代に以下の資料で概説されている。ミニック，Ｒ．Ｃ．およびショート，Ｒ．Ａ．，”Ｃｅｌｌｕｌａｒ Ｌｉｎｅａｒ−Ｉｎｐｕｔ Ｌｏｇｉｃ，Ｆｉｎａｌ Ｒｅｐｏｒｔ，”ＳＲＩ Ｐｒｏｊｅｃｔ ４１２２，Ｃｏｎｔｒａｃｔ ＡＦ １９（６２８）−４９８，Ｓｔａｎｆｏｒｄ Ｒｅｓｅａｒｃｈ Ｉｎｓｔｉｔｕｔｅ，Ｍｅｎｌｏ Ｐａｒｋ，Ｃａｌｉｆｏｒｎｉａ，ＡＦＣＲＬ ６４−６，ＤＤＣ Ｎｏ．ＡＤ ４３３８０２（Ｆｅｂｒｕａｒｙ １９６４）；Ｍｉｎｎｉｃｋ，Ｒ．Ｃ．，”Ｃｏｂｗｅｂ Ｃｅｌｌｕｌａｒ Ａｒｒａｙｓ，”Ｐｒｏｃｅｅｄｉｎｇｓ ＡＦＩＰＳ １９６５ Ｆａｌｌ Ｊｏｉｎｔ Ｃｏｍｐｕｔｅｒ Ｃｏｎｆｅｒｅｎｃｅ，Ｖｏｌ．
２７，Ｐａｒｔ １ ｐｐ．３２７−３４１（１９６５）；Ｍｉｎｎｉｃｋ，Ｒ．Ｃ．ｅｔ ａｌ．，”Ｃｅｌｌｕｌａｒ Ｌｏｇｉｃ，Ｆｉｎａｌ Ｒｅｐｏｒｔ，”ＳＲＩ Ｐｒｏｊｅｃｔ ５０８７，Ｃｏｎｔｒａｃｔ ＡＦ１９（６２８）−４２３３，Ｓｔａｎｆｏｒｄ Ｒｅｓｅｒｃｈ Ｉｎｓｔｉｔｕｔｅ，Ｍｅｎｌｏ Ｐａｒｋ，Ｃａｌｉｆｏｒｎｉａ，ＡＦＣＲＬ ６６−６１３，（Ａｐｒｉｌ １９６６）；およびＭｉｎｎｉｃｋ，Ｒ．Ｃ．，”Ａ Ｓｕｒｖｅｙ ｏｆ Ｍｉｃｒｏｃｅｌｌｕｌａｒ Ｒｅｓｅａｒｃｈ，”Ｊｏｕｒｎａｌ ｏｆ ｔｈｅ Ａｓｓｏｃｉａｔｉｏｎ ｆｏｒ Ｃｏｍｐｕｔｉｎｇ Ｍａｃｈｉｎｅｒｙ Ｖｏｌ．１４，Ｎｏ．２，ｐｐ．２０３−２４１（Ａｐｒｉｌ １９６７）。素子間の相互接続を可能にするメモリ・ベース（たとえばＲＡＭベース、ヒューズ・ベース、またはアンチヒューズ・ベース）の手段に加えて、ミニックは、近隣セル間の直接接続ともう一つのルーティング技法としてのバスの使用についても述べている。スパンドルファ、Ｌ．Ｍ．による論文”Ｓｙｎｔｈｅｓｉｓ ｏｆ Ｌｏｇｉｃ Ｆｕｎｃｔｉｏｎ ｏｎ ａｎ Ａｒｒａｙ ｏｆ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔｓ，”Ｓｔａｎｆｏｒｄ Ｒｅｓｅａｒｃｈ Ｉｎｓｔｉｔｕｔｅ，Ｍｅｎｌｏ Ｐａｒｋ，Ｃａｌｉｆ．，Ｃｏｎｔｒａｃｔ ＡＦ １９（６２８）２９０７，ＡＦＣＲＬ ６４−６，ＤＤＣ Ｎｏ．ＡＤ ４３３８０２（Ｎｏｖｅｍｂｅｒ １９６５）は、２本の相互接続線の間のスイッチ手段として、メモリ手段とそれに隣接する近隣セル相互接続とを介してプログラムすることが可能な相補形ＭＯＳ双方向パスゲートを使用する方法について述べている。ワールシュトローム、Ｓ．Ｅの”Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ａｒｒａｙｓ−Ｃｈｅａｐｅｒ ｂｙ ｔｈｅ Ｍｉｌｌｉｏｎｓ，”Ｅｌｅｃｔｒｏｎｉｃｓ，Ｖｏｌ．４０，Ｎｏ．２５，１１，ｐｐ．９０−９５（Ｄｅｃｅｍｂｅｒ １９６７）では、近隣セル間の相互接続とデータ・バス網の両方を使用した、同じセルの２次元アレイのＲＡＭベースの再構成可能論理アレイについて述べられている。
【０００８】
シャウプ、Ｒ．Ｇ．の”Ｐｒｏｇｒａｍｍａｂｌｅ Ｃｅｌｌｌｕｌａｒ Ｌｏｇｉｃ Ａｒｒａｙｓ，”Ｐｈ．Ｄ．ｄｉｓｓｅｒｔａｔｉｏｎ，Ｃａｒｎｅｇｉｅ−Ｍｅｌｌｏｎ Ｕｎｉｖｅｒｓｉｔｙ，Ｐｉｔｔｓｂｕｒｇｈ，ＰＡ（Ｍａｒｃｈ １９７０）は、プログラマブル・セルラ論理アレイについて述べ、ミニックと同じ概念と用語の多くを繰り返し、ワールシュトロームのアレイを繰り返している。シャウプの論旨では、近隣接続の概念は、単純２入力１出力最近隣接続から８近隣２方向接続に及んでいる。シャウプはさらに、相互接続構造の一部としてバスを使用してアレイの性能と柔軟性を向上させる方法についても述べている。通常の近隣接続では長すぎる距離または不都合な方向に信号を送るために、バスを使用することができる。これは特に、アレイの外部からの入力信号や出力信号を内部のセルに渡すのに有用である。
【０００９】
米国特許第４０２０４６９号では、それ自身をプログラム、試験、および修復することができるプログラマブル論理アレイについて述べている。米国特許第４８７０３０２号は、チャネル・アーキテクチャにおいて、プログラムされたすべての接続が３組のバスを使用して行われる、近隣直接相互接続を使用しない粗粒度（coarse grain）アーキテクチャを開示している。粗粒度セル（構成可能論理ブロックまたはＣＬＢと呼ぶ）は、ＲＡＭベースの論理テーブル参照組合せ論理回路と、ＣＬＢ内部のフリップフロップの両方を備え、ユーザ定義論理をＣＬＢ内部で使用可能な関数にマップしなければならない。米国特許第４９３５７３４号は、各セル内部でＮＡＮＤ、ＮＯＲまたは同様のタイプの単純論理関数として定義された単純論理関数セルを開示している。相互接続方式は、直接近隣接続および方向性バス接続を使用する。米国特許第４７００１８７号および第４９１８４４０号は、排他的ＯＲおよびＡＮＤ関数とレジスタ・ビットが使用可能で、セル内で選択可能である、より複雑な論理関数セルを定義している。好適な接続方式は、直接近隣接続によるものである。接続機構として双方向バスを使用する方法も含まれている。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
現在のＦＰＧＡ技法にはいくつかの欠点がある。それらの問題は、製造業者から供給されるオンチップで使用可能なトランジスタが大量である場合に、回路利用レベルの低さによるものである。回路利用度は３つの要因によって影響される。トランジスタ・レベルまたは細粒度（fine grain）セル・レベルでの第１の要因は、ユーザが容易に使用することができる基本論理素子の機能と柔軟性である。第２の要因は、最小限の回路面積を使用し、第１の論理素子を使用して意味のあるマクロ論理関数を形成する容易さである。最後の要因は、チップ・レベルの設計を効率的に実施するための、それらのマクロ論理関数の相互接続である。上記のような細粒度セル・アーキテクチャによって、設計者は基本論理素子レベルで容易に使用することができる柔軟性のある論理関数を使用することができるようになった。
【００１１】
しかし、稠密で複雑なマクロ関数およびチップ・レベルのルーティングの場合、セルの出力からの多数の信号を他のセルの入力に接続するのに必要な相互接続資源がすぐに使い尽くされてしまう可能性があり、そのような資源を追加するとシリコン面積の点できわめて不経済になることがある。その結果、細粒度アーキテクチャ設計では、アクセス不能なためにセルの大部分が未使用のままであったり、セルが論理回路ではなく相互配線として使用されたりする。これによって、論理回路の利用度が低くなるだけでなくルーティング遅延が増大したり、過度の量のルーティング資源の付加によって回路のサイズが大幅に増大したりする。粗粒度アーキテクチャを拡張ルーティング・バスと組み合わせることによって、１つのＣＬＢの出力を他のＣＬＢの入力に接続する信号にとって大幅な改善になる。ＣＬＢ相互接続での利用度は高くなる。しかし、問題は、ＣＬＢに厳密に合わせるための複雑な論理回路の区分化とマッピングである。ＣＬＢ内部の論理回路の一部が未使用のままであれば、ＣＬＢ内部の利用度（単位面積当たりの使用有効ゲート数）が低くなる可能性がある。
【００１２】
従来の技術のＦＰＧＡのもう一つの問題は、各論理ブロックに設けられる入力と出力の数が固定していることによる。偶然に特定の論理ブロックのすべての出力を使い果たした場合、その論路ブロックの残りの部分は役に立たなくなる。
【００１３】
したがって、従来の技術のＦＰＧＡでは、ＦＰＧＡの利用度を最大限にすると同時に、ダイのサイズへの影響を最小限にする、新しいアーキテクチャが必要である。この新しいアーキテクチャは、ユーザによる使用の機能性と柔軟性の点で最下位の論理素子レベルでの柔軟性と、ユーザが基本論理素子を使用して複雑な論理関数を容易に形成することができるマクロ・レベルでの単位面積当たり高密度の機能性と、チップ・レベルでのマクロと基本論理素子を接続する信号の階層的で均一に分散されたルーティング網による相互接続可能性の割合の高さとを備えていなければならない。さらに新しいアーキテクチャは、個々の論理ブロックの入力と出力の数を選択可能かつプログラム可能にする柔軟性と、いくつかのＦＰＧＡサイズに対応するスケーラブル・アーキテクチャをユーザに提供する必要がある。
【課題を解決するための手段】
【００１４】
[発明の概要]
本発明は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）用など、プログラマブル論理回路のための論理のアーキテクチャと接続方式に関する。
プログラマブル論理回路は、入力信号に対して関数を実行するいくつかのセルから成る。ユーザの特定の設計に応じて、所望の論理関数を実現するために特定のセルが特定の構成にプログラム可能に相互接続される。
【００１５】
現在のところ好ましい実施形態では、４個の論理セル（４個の２入力１出力ゲートとＤフリップフロップ）が１つの論理クラスタ（すなわち２×２セル・アレイ）を形成し、４組のクラスタが１つの論理ブロック（すなわち４×４セル・アレイ）を形成する。各クラスタ内には、内部接続マトリックス（Ｉマトリックス）と呼ぶ５本の内部接続線が１組あり、４個のゲートのそれぞれの出力と、他のセルの入力に接続可能なＤフリップフロップとに１本付随している。各論理ブロック内では、パスゲートを使用して各クラスタ内のＩマトリックスを隣接するクラスタまで延ばして、論理ブロック内の（内部接続範囲を延長する）接続を形成することができる。各論理ブロック内には、ブロック・コネクタ（ＢＣ）と呼ぶ関連する１組のアクセス線がある。ブロック・コネクタによって、同じ論理ブロックの様々なセルへのアクセスとそれらのセルの間の接続を行う。言い換えると、論理ブロックの各セルの入力と出力は、その論理ブロックに対応する１組のブロック・コネクタに接続することができる。同じ論理ブロック内のＩマトリックスとブロック・コネクタを賢明に使用することによって、論理ブロック外部の資源を使用せずに１組の信号を内部接続することができる。いくつかのプログラマブル・スイッチを使用して、現行論理ブロックの外部の信号に外部アクセス接続するためにどのブロック接続を一緒に、論理ブロック内のセルの１組の入力または出力、あるいはその両方に接続するかを制御する。言い換えると、現行論理ブロックの外部に外部接続する、論理ブロック内の入力ピンまたは出力ピンあるいはその両方が、現行論理ブロック内のブロック・コネクタを介してアクセスまたは接続される。
【００１６】
様々な論理ブロック間で信号をルーティングするために、均一に分散された多重レベル・アーキテクチャ（ＭＬＡ）ルーティング網を使用して、個々の組のブロック・コネクタ間を接続可能にする。第１のレベルのＭＬＡルーティング網線のいずれを一緒に接続するかを制御するために、プログラマブル・スイッチを用いる。追加のプログラマブル・スイッチを使用して、どのブロック・コネクタを特定の第１のレベルのＭＬＡルーティング線に接続するかを制御する。たとえば、このスイッチをプログラムして、１つの論理ブロックに属する送信元セルを別の論理ブロックに属する宛先セルに接続することができる。これは、送信元セルを、そのセルの１つまたは複数のブロック・コネクタを介して、第１のレベルのＭＬＡ上に接続し、距離に応じて他の１つまたは複数のレベルのＭＬＡ上に接続し、降下方向レベルのＭＬＡを降下して第１のレベルのＭＬＡに戻り、最後に宛先セルのブロック・コネクタを介して接続することによって行うことができる。
これによって、ブロック・コネクタと第１のレベルのＭＬＡルーティング網は、ブロック・クラスタと呼ぶ８×８セル・アレイを相互接続することができる。
【００１７】
本発明では、追加のレベルのＭＬＡルーティング網を実装することによって、より大きなセル・アレイを相互接続することができる。たとえば、第２のレベルのＭＬＡルーティング網線を実装して、様々な第１のレベルのＭＬＡルーティング線間を接続可能にし、それによって様々なブロック・クラスタ間の接続を行い、ブロック・セクタと呼ぶ１６×１６のセル・アレイの接続可能性を実現することができる。各レベルのＭＬＡは、そのレベルのルーティング網のプログラマブル相互接続を行うための、対応する数のスイッチを持っている。追加のスイッチ交換網を使用して、様々なレベルのＭＬＡ間を接続することができる。
【００１８】
１つの実施形態では、スイッチを使用して、異なる２組のブロック・コネクタ間を接続可能にすることができる。さらに、特定のレベルの、異なる組のＭＬＡのＭＬＡルーティング線間を接続可能にするようにスイッチを組み込むこともできる。これによって、ルーティングの柔軟性が増す。
【００１９】
本発明では、すべてのＭＬＡルーティング網線が双方向線である。スイッチは、プログラマブル双方向パスゲートから成る。レベル数を増やした場合、ルーティング線、パスゲート、および関連する負荷などを駆動するための必要なスイッチング速度を実現するためにドライバが必要な場合がある。１つの実施形態では、スイッチを使用して、様々な組のブロック・コネクタ間でのプログラマブル接続を可能にすることができる。追加のスイッチを実装して、様々な組の第１のレベルのＭＬＡ間でプログラマブル接続を可能にすることができる。この方式はさらに高いレベルのＭＬＡについて繰り返すことができる。
【発明を実施するための最良の形態】
【００２０】
詳細な説明
プログラマブル論理回路のアーキテクチャと相互接続方式について説明する。
以下の説明では、本発明を十分に理解することができるように、組合せ論理回路、セル構成、セルの番号など、説明のために多くの特定の詳細を記載する。しかし、当業者には、これらの特定の詳細がなくても本発明を実施することができることが明らかであろう。他の場合には、本発明を不必要にあいまいにするのを避けるために、公知の構造および素子はブロック図の形で示してある。また、本発明はスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ヒューズ、アンチヒューズ、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、ＦＬＡＳＨ、および強誘電プロセスなど、様々なプロセスに関係していることに留意されたい。
【００２１】
第１図を参照すると、本発明を実施することができるフィールド・プログラマブル・ゲート・アレイ論理回路のブロック図が１００として示してある。入出力論理ブロック１０２、１０３、１１１、および１１２は、ＦＰＧＡの外部パッケージ・ピンと内部ユーザ論理回路との間に、直接的に、または入出力論理ブロックとコアとのインタフェース１０４、１０５、１１３、１１４を介して、インタフェースを備える。４つのインタフェース・ブロック１０４、１０５、１１３、および１１４は、コア１０６と入出力論理ブロック１０２、１０３、１１１、および１１２との間の減結合を行う。コア１０６は、Ｉマトリックス１０１によって内部接続され、ＭＬＡルーティング網１０８によって相互接続されているいくつかのクラスタ１０７から成る。
【００２２】
制御／プログラミング論理回路１０９を使用して、ビット線とワード線をプログラムするすべてのビットを制御する。アンチヒューズ技法またはヒューズ技法の場合、高圧／高電流を加えてヒューズをザップまたは接続する。ＥＥＰＲＯＭ、フラッシュ、または強誘電技法の場合、消去サイクルの後に、メモリ・ビットの論理状態をプログラムするプログラミング・サイクルがある。スキューを最小限にするために、別個のクロック／リセット論理回路１１０を使用して、グループごとにクロック線とリセット線を形成する。
【００２３】
現在のところ好ましい実施形態では、各クラスタ１０７は論理クラスタと呼ぶ２×２階層の４個のセルから成る。第２Ａ図および第２Ｂ図に、個別のセル２００および２５０の例を示す。セル２００は、２つの入力信号（ＡおよびＢ）に対して複数の論理関数を実行し、出力信号Ｘを出力する。現在のところ好ましい実施形態では、セル２００は、ＸＯＲゲート２０１、２入力ＮＡＮＤゲート２０２、および２入力ＮＯＲゲート２０３から成る。しかし、他の実施形態では、セル２００は他の様々なタイプまたは組合せのゲートを備えることもできる。セル２５０は、Ｄフリップフロップ・セル２６０と結合されたセル２００から成る。セル２００の出力信号Ｘは、スイッチ２１８を起動してＤフリップフロップ・ゲート２０４のデータ入力Ｄに直接接続するようにプログラムすることができる。データ入力Ｄには、組合せセル２５０の第３の入力信号としてアクセスすることができる。
【００２４】
２つの入力信号ＡおよびＢのそれぞれと、ＤフリップフロップのＤ入力信号は、スイッチ２０６ないし２１１の状態に応じて反転または非反転される。スイッチ２０６、２０８、および２１０を起動すると、信号Ａ、Ｂ、およびＤがドライバ２１２ないし２１４によって駆動されてゲート２０１ないし２０４に非反転の形で送られる。スイッチ２０７、２０９、および２１１を起動すると、入力信号Ａ、Ｂ、およびＤはインバータ２１５ないし２１６によって反転されてからゲート２０１ないし２０４に渡される。６個のスイッチ２１２ないし２１７は、ユーザによるプログラムに従って、個別にオンおよびオフすることができる。
【００２５】
出力信号を次段に伝搬することによってＸＯＲゲート２０１、ＮＡＮＤゲート２０２、およびＮＯＲゲート２０３を使用してＸＮＯＲ、ＡＮＤおよびＯＲを実行することもでき、それによって信号を上述のように反転させることができることに留意されたい。
【００２６】
３個のスイッチ２１９ないし２２１は３個のゲート２０１ないし２０３の出力にそれぞれ結合されている。この場合も、このスイッチはユーザがプログラムすることができる。それによって、ユーザはゲート２０１ないし２０３からのどの出力信号を、セル２００からの出力信号Ｘとしてドライバ２２４に送るかを指定することができる。
【００２７】
上記のスイッチ２０６ないし２１１、２１８ないし２２１は双方向プログラム制御パスゲートから成る。これらのスイッチは、制御信号の状態に応じて、導通（すなわち線で信号を通す）状態になったり非導通（すなわち線で信号を通さない）状態になったりする。以下で述べるスイッチも同様にプログラム制御パスゲートから成る。
【００２８】
次に第３Ａ図を参照すると、論理クラスタ１０７が示されている。現在のところ好ましい実施形態では、論理クラスタ１０７はセル３０１ないし３０４とＤフリップフロップ３０５、２５個のスイッチ３０６ないし３３０、および５本の内部接続線３３１ないし３３５から成る。内部接続線３３１ないし３３５とスイッチ３０６ないし３３０は、Ｉマトリックスを形成している。Ｉマトリックスは、４個のセル３０１ないし３０４のそれぞれの出力信号ＸおよびＤフリップ・フロップ３０５の出力信号Ｘを、他の３個のセルおよびＤフリップフロップのそれぞれの少なくとも１つの入力と接続できるようにする。たとえば、スイッチ３０６および３０７をイネーブルすることによって、セル３０１の出力Ｘをセル３０２の入力Ａに接続することができる。同様に、スイッチ３０６および３１０をイネーブルすることによって、セル３０１の出力Ｘをセル３０３の入力Ｂと接続することができる。スイッチ３０６および３０８をイネーブルすることによって、セル３０１の出力Ｘをセル３０４の入力Ａと接続することができる。スイッチ３０６および３０９をイネーブルすることによって、セル３０１の出力ＸをＤフリップフロップ・セル３０５の入力Ｄと接続することができる。
【００２９】
同様に、スイッチ３１１および３１２をイネーブルすることによって、セル３０２からの出力Ｘをセル３０１の入力Ａと接続することができる。スイッチ３１１および３１５をイネーブルすることによって、セル３０２からの出力Ｘをセル３０３の入力Ａと接続することができる。スイッチ３１１および３１３をイネーブルすることによって、セル３０２からの出力Ｘをセル３０４の入力Ｂと接続することができる。スイッチ３１１および３１４をイネーブルすることによって、セル３０２の出力ＸをＤフリップフロップ・セル３０５の入力Ｄと接続することができる。
【００３０】
同様に、スイッチ３２６および３２７をイネーブルすることによって、セル３０３からの出力Ｘをセル３０１の入力Ｂと接続することができる。スイッチ３２６および３２８をイネーブルすることによって、セル３０３からの出力Ｘをセル３０２の入力Ａに接続することができる。スイッチ３２６および３２９をイネーブルすることによって、セル３０３からの出力Ｘをセル３０４の入力Ｂに接続することができる。スイッチ３２６および３３０をイネーブルすることによって、セル３０３の出力ＸをＤフリップフロップ・セル３０５の入力Ｄに接続することができる。
【００３１】
セル３０４の場合、スイッチ３１６および３１７をイネーブルすることによって、セル３０４からの出力Ｘをセル３０１の入力Ｂに接続することができる。スイッチ３１６および３１８をイネーブルすることによって、セル３０４からの出力Ｘをセル３０２の入力Ｂに接続することができる。スイッチ３１６および３１９をイネーブルすることによって、セル３０４からの出力Ｘをセル３０３の入力Ａに接続することができる。第２Ａ図のスイッチ２１８をイネーブルすることによって、セル３０４の出力ＸをＤフリップフロップ・セル３０５の入力Ｄに接続することができる。
【００３２】
セル３０５については、スイッチ３２０および３２１をイネーブルすることによって、その出力をセル３０１のＡ入力に接続することができ、スイッチ３２０および３２２をイネーブルすればセル３０２のＢ入力、スイッチ３２０および３２５をイネーブルすればセル３０３のＢ入力、スイッチ３２０および３２３をイネーブルすればセル３０４のＡ入力、スイッチ３２０および３２４をイネーブルすればセル３０５のＤ入力に接続することができる。
【００３３】
セル３０１ないし３０４およびＤフリップフロップ３０５の各出力は、その近隣セルまたはクラスタ内のフリップフロップあるいはその両方のそれぞれの入力と接続可能である。
【００３４】
本発明の現在のところ好ましい実施形態では、各論理クラスタは、各論理ブロック内の隣り合うクラスタからＩマトリックスを延長するパスゲート・スイッチを介して各論理ブロック内の他のすべての論理クラスタに接続可能である。第３Ｂ図に、論理クラスタ１０７のセル３０１ないし３０４およびＤフリップフロップ３０５のＩマトリックス内部接続線３３１ないし３３５を、同じ論理ブロック内のパスゲート・スイッチ３３６ないし３５５を介して近隣論理クラスタ１０７まで延長する様子を示す。
【００３５】
本発明の現在のところ好ましい実施形態では、各論理ブロックはＦＰＧＡの他のすべての論理ブロックに接続可能である。これは、多層相互接続を有するアーキテクチャを実行することによって実現される。この多層ルーティング・アーキテクチャは、プロセス階層でも技術階層でもなく概念階層であり、したがって現在のシリコン・プロセス技術で容易に実現可能であることに留意することが重要である。相互接続の最下位層を「ブロック・コネクタ」と呼ぶ。１組のブロック・コネクタによって、関連する（４個の論理クラスタまたは１６個のセルから成る）論理ブロック内の信号のアクセスと相互接続とを実現する。それによって、同じ論理ブロック内の様々な組の論理クラスタを、延長されたＩマトリックスまたはブロック・コネクタあるいはその両方を使用して、そのグループ内の他の任意の論理クラスタと接続することができる。この場合も、プログラマブル双方向パスゲートをスイッチとして使用して、ユーザにルーティングの柔軟性を与える。
【００３６】
その次のレベルの接続を「レベル１多重レベルアーキテクチャ（ＭＬＡ）」ルーティング網と呼ぶ。レベル１ＭＬＡルーティング網は、数組のブロック・コネクタ間を相互接続する。プログラマブル・パスゲート・スイッチを使用して、どのブロック・コネクタを接続するかをユーザが選択できるようにする。したがって、１組の論理ブロック・グループ内の第１の論理ブロックを、同じグループに属する第２の論理ブロックに接続することができる。適切なスイッチをイネーブルして、第１の論理ブロックのブロック・コネクタをレベル１ＭＬＡルーティング網のルーティング線に接続する。レベル１ＭＬＡルーティング網の適切なスイッチをイネーブルして、レベル１ＭＬＡルーティング網のルーティング線と第２の論理ブロックのブロック・コネクタとの接続を行う。適切なスイッチをイネーブルして、第１および第２の論理ブロックのブロック・コネクタに接続されているレベル１ＭＬＡルーティング網のルーティング線を接続する。さらに、ユーザは任意の論理ブロック内の様々なスイッチをプログラムして、任意の論理ブロックの各セル間の所望の内部接続を行う柔軟性も持っている。
【００３７】
次のレベルの接続を「レベル２多重レベルアーキテクチャ（ＭＬＡ）」ルーティング網と呼ぶ。レベル２ＭＬＡは、様々なレベル１ＭＬＡの相互接続を行って、ブロック・クラスタのアクセスと接続を果たす。この場合も、ユーザが双方向パスゲート・スイッチをプログラムして、所望の接続を行うことができる。レベル２ＭＬＡルーティング網を実装することによって、さらに多くの論理ブロック間のプログラマブル相互接続も実現することができる。
【００３８】
追加のレベルのＭＬＡルーティング網を実装して、さらに多くの数とグループの論理ブロック、ブロック・クラスタ・ブロック・セクタなどのプログラマブル相互接続を行うことができる。基本的に、本発明はルーティングの実施に３次元手法を用いる。信号は論理ブロックの内部接続間でルーティングされる。これらの信号には、ブロック・コネクタを介してアクセスすることができ、プログラムされたブロック・コネクタ接続に従ってルーティングすることができる。必要であれば、信号をレベル１ＭＬＡに「上げ」、レベル１ＭＬＡルーティング網を介してルーティングし、適切なブロック・コネクタに「下げ」てから、宛先論理ブロックに渡す。
【００３９】
レベル２ＭＬＡルーティング網が必要な場合は、信号の一部をもう一度レベル１ＭＬＡルーティング網線からレベル２ＭＬＡルーティング網に上げて、異なる組のレベル２ＭＬＡルーティング網線までルーティングし、そのレベル２ＭＬＡルーティング網線からレベル１ＭＬＡルーティング網線に「下げる」。そこで信号をもう一度「下げ」て、レベル１ＭＬＡから宛先論理ブロックの適切なブロック・コネクタに信号を渡す。ＦＰＧＡのサイズと密度に従って必要に応じてレベル３、４、５などのＭＬＡについてもこれと同じ手法を行う。上述の方法を使用して、部分ｎレベルＭＬＡを実行し、所与のセル・アレイ数のＦＰＧＡを実行することができる。
【００４０】
第４Ａ図に、論理ブロック内の論理クラスタとそれに関連する垂直ブロック・コネクタの例を示す。現在のところ好ましい実施形態では、論理クラスタ内の各セルは２つの垂直ブロック・コネクタによって入力からアクセス可能であり、論理クラスタ内のセルの各出力には２つの垂直ブロック・コネクタでアクセス可能である。たとえば、セル３０１の入力Ａは、それぞれスイッチ４６７、４６２を介して垂直ブロック・コネクタ４５１（ＢＣ−Ｖ１１）および４５３（ＢＣ−Ｖ２１）でアクセス可能で、セル３０１の入力Ｂは、それそれスイッチ４６６、４６８を介して垂直ブロック・コネクタ４５２（ＢＣ−Ｖ１２）および４５４（ＢＣ−Ｖ２２）でアクセス可能で、セル３０１の出力Ｘはそれぞれスイッチ４６０、４５９を介して垂直ブロック・コネクタ４５５（ＢＣ−Ｖ３１）および４５８（ＢＣ−Ｖ４２）でアクセス可能である。セル３０２の入力Ａは、それぞれスイッチ４６３、４６４を介して垂直ブロック・コネクタ４５３（ＢＣ−Ｖ２１）および４５５（ＢＣ−Ｖ３１）でアクセス可能で、セル３０２の入力Ｂはそれぞれスイッチ４６９、４７０を介して垂直ブロック・コネクタ４５４（ＢＣ−Ｖ２２）および４５６（ＢＣ−Ｖ３２）でアクセス可能で、セル３０２の出力Ｘはそれぞれスイッチ４６１、４６５を介して垂直ブロック・コネクタ４５２（ＢＣ−Ｖ１２）および４５７（ＢＣ−Ｖ４１）でアクセス可能である。セル３０３の入力Ａは、それぞれスイッチ４８５、４７６を介して垂直ブロック・コネクタ４５１（ＢＣ−Ｖ１１）および４５３（ＢＣ−Ｖ２１）でアクセス可能で、セル３０３の入力Ｂは、それぞれスイッチ４８０、４７６を介して垂直ブロック・コネクタ４５２（ＢＣ−Ｖ１２）および４５４（ＢＣ−Ｖ２２）でアクセス可能で、セル３０３の出力Ｘは、それぞれスイッチ４７２、４７１を介して垂直ブロック・コネクタ４５５（ＢＣ−Ｖ３１）および４５８（ＢＣ−Ｖ４２）でアクセス可能である。セル３０４の入力Ａは、それぞれスイッチ４７７、４７８を介して垂直ブロック・コネクタ４５３（ＢＣ−Ｖ２１）および４５５（ＢＣ−Ｖ３１）でアクセス可能で、セル３０４の入力Ｂはそれぞれスイッチ４８２、４８４を介して垂直ブロック・コネクタ４５４（ＢＣ−Ｖ２２）および４５６（ＢＣ−Ｖ３２）でアクセス可能であり、セル３０４の出力Ｘはそれぞれスイッチ４７５、４７４を介して垂直ブロック・コネクタ４５２（ＢＣ−Ｖ１２）および４５７（ＢＣ−Ｖ４１）でアクセス可能である。Ｄフリップフロップ・セル３０５の入力には、それぞれスイッチ４７３、４７９を介して垂直ブロック・コネクタ４５４（ＢＣ−Ｖ２２）および４５５（ＢＣ−Ｖ３１）でアクセス可能であり、セル３０５の出力Ｘはそれそれスイッチ４８３、４８６を介して垂直ブロック・コネクタ４５２（ＢＣ−Ｖ１２）および４５７（ＢＣ−Ｖ４１）でアクセス可能である。
【００４１】
同様にして、第４Ｂ図に、水平ブロック・コネクタと第４Ａ図の論理クラスタとに対応する可能な接続を示す。セル３０１の入力Ａは、それぞれスイッチ４０９、４１３を介して水平ブロック・コネクタ４０２（ＢＣ−Ｈ１２）および４０４（ＢＣ−Ｈ２２）でアクセス可能であり、セル３０１の入力Ｂはそれぞれスイッチ４１５、４１６を介して水平ブロック・コネクタ４０１（ＢＣ−Ｈ１１）および４０３（ＢＣ−Ｈ２１）でアクセス可能で、セル３０１の出力Ｘはそれぞれスイッチ４２１および４２８を介して水平ブロック・コネクタ４０５（ＢＣ−Ｈ３１）および４０８（ＢＣ−Ｈ４２）でアクセス可能である。セル３０２の入力Ａは、それぞれスイッチ４１１、４１４を介して水平ブロック・コネクタ４０２（ＢＣ−Ｈ１２）および４０４（ＢＣ−Ｈ２２）でアクセス可能で、セル３０２の入力Ｂはそれぞれスイッチ４３３、４１７を介して水平ブロック・コネクタ４０１（ＢＣ−Ｈ１１）および４０３（ＢＣ−Ｈ２１）でアクセス可能で、セル３０２の出力Ｘはそれぞれスイッチ４１８、４２４を介して水平ブロック・コネクタ４０５（ＢＣ−Ｈ３１）および４０８（ＢＣ−Ｈ４２）でアクセス可能である。セル３０３の入力Ａは、それぞれスイッチ４１９、４２６を介して水平ブロック・コネクタ４０４（ＢＣ−Ｈ２２）および４０６（ＢＣ−Ｈ３２）でアクセス可能であり、セル３０３の入力Ｂはそれぞれスイッチ４２０、４２５を介して水平ブロック・コネクタ４０３（ＢＣ−Ｈ２１）および４０５（ＢＣ−Ｈ３１）でアクセス可能で、セル３０３の出力Ｘはそれぞれスイッチ４１０、４２７を介して水平ブロック・コネクタ４０２（ＢＣ−Ｈ１２）および４０７（ＢＣ−Ｈ４１）でアクセス可能である。セル３０４の入力Ａは、それぞれスイッチ４２２、４３０を介して水平ブロック・コネクタ（ＢＣ−Ｈ２２）および４０６（ＢＣ−Ｈ３２）でアクセス可能で、セル３０４の入力Ｂはそれぞれスイッチ４２３、４２９を介して水平ブロック・コネクタ４０３（ＢＣ−Ｈ２１）および４０５（ＢＣ−Ｈ３１）でアクセス可能で、セル３０４の出力Ｘはそれぞれスイッチ４１２、４３４を介して水平ブロック・コネクタ４０２（ＢＣ−Ｈ１２）および４０７（ＢＣ−Ｈ４１）でアクセス可能である。Ｄフリップフロップ・セル３０５の入力は、それぞれスイッチ４３６、４３１を介して水平ブロック・コネクタ４０３（ＢＣ−Ｈ２１）および４０６（ＢＣ−Ｈ３２）でアクセス可能で、セル３０５の出力Ｘはそれぞれスイッチ４３２、４３５を介して水平ブロック・コネクタ４０１（ＢＣ＝Ｈ１１）および４０８（ＢＣ−Ｈ４２）でアクセス可能である。
【００４２】
第４Ａ図および４Ｂ図には、現在のところ好ましい実施形態における論理ブロック内部の左上（北西）の論理クラスタへの水平および垂直のブロック・コネクタのアクセス方法が示されている。左下（南西）のクラスタの垂直ブロック・コネクタへのアクセス方法も、北西のクラスタと同じである。右上（北東）クラスタのアクセス方法も、垂直ブロック・コネクタについては北西クラスタのアクセス方法と同様であるが、水平ブロック・コネクタ・アクセスのシーケンスがシフトされる。垂直ブロック・コネクタ４５１ないし４５８は、１つの円柱（４５１、４５２、．．．、４５８）として連鎖しているように見る。たとえば４だけシフトさせると、新しいシーケンス（４５５、４５６、４５７、４５８、４５１、４５２、４５３、４５４）が形成される。第４Ａ図に示すように北西クラスタ内のセル３０１のアクセスを垂直ブロック・コネクタ４５１および４５３から開始する代わりに、北東クラスタ内のセル３０１は垂直ブロック・コネクタ４５５および４５７でアクセス可能である。番号は４だけ「シフト」される。右下（南東）クラスタの垂直ブロック・コネクタへのアクセス・ラベル付けは、北東クラスタと同じである。
【００４３】
同様に、北西クラスタへの水平ブロック・コネクタ・アクセスは北東クラスタと同じであり、南西クラスタは南東クラスタと同じであるが、南西クラスタへの水平ブロック・コネクタ・アクセスは北西クラスタの水平ブロック・コネクタ・アクセスと比較して４だけシフトされる。
【００４４】
現在のところ好ましい実施形態では、１つの論理ブロックについて１６本のブロック・コネクタ（すなわち４個のクラスタ、または１つの４×４セル・アレイ）を使用する。レベル１ＭＬＡルーティング網を追加することによって、ブロック・クラスタ（８×８セル・アレイ）の接続が可能になる。レベル２ＭＬＡルーティング網を追加すると、接続がブロック・セクタ（１６×１６セル・アレイ）まで拡大される。追加レベルのＭＬＡルーティング網によって、ブロック・セクタ数が４倍に増加すると同時に、ＭＬＡルーティング網内の各線の長さ（または到達距離）が２倍に増加する。レベル２ＭＬＡのルーティング線の本数は、２倍に増加する。単位面積当たりブロック・セクタ数が４倍に増えるため、階層の次のレベルのルーティング線の数は実際には２分の１に減る。
【００４５】
第５Ａ図に、付随する１６本のブロック・コネクタを持つ論理ブロックと、その論理ブロックに付随するレベル１ＭＬＡルーティング線を示す。１６本のブロック・コネクタ５０１ないし５１６は太い線で図示し、１６本のレベル１ＭＬＡルーティング網線５１７−５３２は細い線で図示してある。ブロック・コネクタの長さすなわち全長は論理ブロック内で終わっているが、レベル１ＭＬＡルーティング網線の長さは近隣論理ブロックまで延びている（ブロック・コネクタの長さの２倍）ことに留意されたい。
【００４６】
ブロック・コネクタとレベル１ＭＬＡルーティング網線は両方とも、水平グループと垂直グループ、すなわち垂直ブロック・コネクタ５０１ないし５０８、水平ブロック・コネクタ５０９ないし５１６、垂直レベル１ＭＬＡルーティング網線５１７ないし５２４、および水平レベル１ＭＬＡルーティング網線５２５ないし５３２に細分されている。
【００４７】
現在のところ好ましい実施形態では、論理ブロック内の１６本のＭＬＡルーティング網線について２４個のレベル１ＭＬＡ転換点がある。第５Ａ図では、２４個の転換点が明確な点５４１ないし５６４として図示されている。
【００４８】
ＭＬＡ転換点は、水平ＭＬＡルーティング網線と垂直ＭＬＡルーティング網線の間の接続を可能にするプログラマブル双方向パスゲートである。たとえば、レベル１ＭＬＡ転換点５４１をイネーブルすると、水平レベル１ＭＬＡルーティング網線５２６と垂直レベル１ＭＬＡルーティング網線５２０とが接続される。第５Ｂ図に、レベル１ＭＬＡ転換点５４１を示す。レベル１ＭＬＡルーティング網線５２６をレベル１ＭＬＡルーティング網線５２０に接続するかどうかが、スイッチ５８３によって制御される。スイッチがイネーブルされると、レベル１ＭＬＡルーティング網線５２６はレベル１ＭＬＡルーティング網線５２０と接続される。イネーブルされない場合、線５２６は線５２０と接続されない。スイッチ５８３はユーザがプログラムすることができる。転換点は、２つ以上のブロック・コネクタを、まずブロック・コネクタを介してレベル１ＭＬＡ交換網に接続し、次にスイッチをイネーブルすることによって選択されたレベル１ＭＬＡルーティング線を接続するスイッチング・アクセスを提供することを目的として、対になったグループとして配置されている。レベル１ＭＬＡ線を使用して、同じブロック・クラスタ内の別々の論理ブロックにあるブロック・コネクタを接続する。
【００４９】
再び第５Ａ図を参照すると、各論理ブロックについてレベル１ＭＬＡ交換網５３３ないし５４０に接続する８本のブロック・コネクタがある。これらの交換網は、ユーザによるプログラムに従って特定のブロック・コネクタをレベル１ＭＬＡ線に接続するように動作する。第５Ｃ図に、交換網５３７を詳細に示す。レベル１ＭＬＡルーティング交換網に接続するブロック・コネクタは、８個のドライバ５７５ないし５８２を有している。この８個のドライバ５７５ないし５８２を使用して、ブロック・コネクタ５０１、５０２およびレベル１ＭＬＡ線５１７、５１８を双方向に駆動する。たとえば、スイッチ５６５をイネーブルすると、ドライバ５７５によってブロック・コネクタ５０１上の信号が駆動されてレベル１ＭＬＡ線５１７に送られる。スイッチ５６６をイネーブルすると、ドライバ５７６によってレベル１ＭＬＡ線５１７上の信号が駆動されてブロック・コネクタ５０１に送られる。スイッチ５６７をイネーブルすると、ドライバ５７７によってブロック・コネクタ５０１上の信号が駆動されてレベル１ＭＬＡ線５１８に送られる。スイッチ５６８をイネーブルすると、ドライバ５７８によってレベル１ＭＬＡ線５１８上の信号が駆動されてブロック・コネクタ５０１に送られる。
【００５０】
同様に、スイッチ５６９をイネーブルすると、ドライバ５７９によってブロック・コネクタ５０２上の信号が駆動されてレベル１ＭＬＡ線５１７に送られる。
スイッチ５７０をイネーブルすると、ドライバ５８０によってレベル１ＭＬＡ線５１７上の信号が駆動されてブロック・コネクタ５０２に送られる。スイッチ５７１をイネーブルすると、ドライバ５８１によってブロック・コネクタ５０２上の信号が駆動されてレベル１ＭＬＡ線５１８に送られる。スイッチ５７２をイネーブルすると、ドライバ５８２によってレベル１ＭＬＡ線５１８上の信号が駆動されてブロック・コネクタ５０２に送られる。スイッチ５７３を使用して、１つのブロック・コネクタ５０１から隣接する論理ブロックに属する隣接するブロック・コネクタ５８４に信号を渡すかどうかを制御する。
【００５１】
同様に、スイッチ５７４を使用して、１つのブロック・コネクタ５０２から隣接論理ブロックに属する隣接ブロック・コネクタ５８５に信号を渡すかどうかを制御する。
【００５２】
第６図に、ブロック・クラスタのルーティング網を示す。このブロック・クラスタは基本的に、レベル１ＭＬＡ交換網５３３ないし５４０によって相互接続することができる４つの論理ブロックから成る。３２本のレベル１ＭＬＡルーティング網線があるのがわかる。
【００５３】
第７Ａ図に、ブロック・セクタのブロック図を示す。このブロック・セクタは４つのブロック・クラスタ７０１ないし７０４から成る。前述のように、ブロック・クラスタはブロック・コネクタおよびレベル１ＭＬＡルーティング網線によって相互接続される。さらに、このブロック・セクタは、６４本のレベル２ＭＬＡルーティング網線と６４本のレベル２からレベル１への交換網を備え、レベル１ＭＬＡルーティング網とレベル２ＭＬＡルーティング網とを接続可能にする。
【００５４】
レベル１からレベル２へのＭＬＡルーティング交換網は、第７Ａ図で矩形で図示されている。さらに、ブロック・セクタ内の４つの論理ブロックのそれぞれに関連する４８個のレベル２ＭＬＡ転換点がある。したがって、このブロック・セクタには１９２個のレベル２ＭＬＡ転換点があることになる。
【００５５】
第７Ｂ図に、レベル１からレベル２へのＭＬＡルーティング交換網７０５のサンプルを示す。スイッチ７１０を使用して、レベル１ＭＬＡ線７０９とレベル２ＭＬＡ線７０８の間で信号を受け渡しするかどうかを制御する様子がわかる。スイッチ７１１を使用して、レベル１ＭＬＡ線７０９とレベル２ＭＬＡ線７０７の間で信号の受け渡しをするかどうかを制御する。スイッチ７１２を使用して、レベル１ＭＬＡ線７０６とレベル２ＭＬＡ線７０８の間で信号を受け渡しするかどうかを制御する。スイッチ７１３を使用して、レベル１ＭＬＡ線７０６とレベル２ＭＬＡ線７０７の間で信号を受け渡しするかどうかを制御する。スイッチ７１４を使用して、１本のレベル１ＭＬＡ線７０９から隣接ブロック・クラスタに属する隣接レベル１ＭＬＡ線７１６に信号を渡すかどうかを制御する。同様に、スイッチ７１５を使用して、１つのレベル１ＭＬＡ線７０６から隣接ブロック・クラスタに属する隣接レベル１ＭＬＡ線７１５に信号を渡すかどうかを制御する。
【００５６】
第８Ａ図にセクタ・クラスタを示す。このセクタ・クラスタは、４つのブロック・セクタ８０１ないし８０４とそれに関連するブロック・コネクタ、レベル１およびレベル２のＭＬＡルーティング網線および交換網からなる。さらに、１２８本のレベル３ＭＬＡルーティング網線があり、同じセクタ・クラスタ８００内の異なるブロック・セクタ８０１ないし８０４に属するレベル２ＭＬＡ線間を接続することができる。ブロック・セクタ８０１ないし８０４のそれぞれについてレベル３ＭＬＡ線に関連する９６個のレベル３ＭＬＡ転換点がある（すなわちセクタ・クラスタには合計３８４個のレベル３ＭＬＡ転換点がある）。さらに、４つのブロック・セクタ８０１ないし８０４のそれぞれに関連する３２本のレベル２からレベル３へのＭＬＡルーティング交換網がある。したがって、合計１２８のレベル３ＭＬＡルーティング交換網があって、様々なレベル２およびレベル３ＭＬＡ線の間のプログラマブル接続を行うことができる。
【００５７】
第８Ｂ図に、レベル２からレベル３へのＭＬＡルーティング交換網８０５の例を示す。スイッチ８１０をイネーブルするとレベル２ＭＬＡ線８０８上の信号がレベル３ＭＬＡ線８０６に接続されることがわかる。スイッチ８１０をディスエーブルすると、レベル２ＭＬＡ線８０８がレベル３ＭＬＡ線８０６から切断される。スイッチ８１１をイネーブルすると、レベル２ＭＬＡ線８０８上の信号がレベル３ＭＬＡ線８０７に接続される。スイッチ８１１をディスエーブルすると、レベル２ＭＬＡ線８０８がレベル３ＭＬＡ線８０７から切断される。同様に、スイッチ８１２をイネーブルするとレベル２ＭＬＡ線８０９上の信号がレベル３ＭＬＡ線８０６に接続される。スイッチ８１２をディスエーブルすると、レベル２ＭＬＡ線８０９がレベル３ＭＬＡ線８０６から切断される。スイッチ８１３をイネーブルすると、レベル２ＭＬＡ線８０９上の信号がレベル３ＭＬＡ線８０７に接続される。スイッチ８１３をディスエーブルすると、レベル２ＭＬＡ線８０９がレベル３ＭＬＡ線８０７から切断される。
【００５８】
本発明では、対応するＭＬＡ転換点および交換網を有する追加のレベルのＭＬＡルーティング網によって接続された、追加の論理セクタ・クラスタを付加することによって、さらに大規模でさらに強力なＦＰＧＡを実現することができる。
【００５９】
本発明の１つの実施形態では、５本のＩマトリクス線（第３Ａ図の３３１ないし３３５）のそれぞれを延長して、２つの異なるクラスタに属する２つの隣接するＩマトリックス線間を接続可能にすることができる。第３Ｂ図のパスゲート・スイッチ３３６ないし３４０、３４１ないし３４５、３４６ないし３５０、および３５１ないし３５５は、異なる４組のＩマトリックス線延長スイッチの例である。これにより、ブロック・コネクタを使用してルーティングしなくても２つの隣接クラスタ間で信号をルーティングすることができるようにすることによって柔軟性がさらに増す。
【００６０】
同様に、ブロック・コネクタを延長して、２つの異なる論理ブロックに属する２つの隣接するブロック・コネクタ間を接続可能にすることができる。第５Ｃ図のスイッチ５７３は、ブロック・コネクタ５０１をブロック・コネクタ５８４にスイッチ５７３を介して接続するこの種のブロック・コネクタ延長を示している。これにより、レベル１ＭＬＡ線とそれに関連するＭＬＡ交換網を介してルーティングしなくても２つの隣接論理ブロック間で信号のルーティングができるようになることによって、柔軟性がさらに増す。この概念はレベル１ＭＬＡ線にも同様に適用することができる。第７Ｂ図のスイッチ７１４は、スイッチ７１４をイネーブルすることによってレベル１ＭＬＡ線７０９が延長されてレベル１ＭＬＡ線７１６に接続する例を示している。これにより、レベル２ＭＬＡ線とそれに関連するＭＬＡ交換網を介してルーティングしなくても２つの隣接するブロック・クラスタ間で信号をルーティングすることができるようになり、柔軟性がさらに増す。
【００６１】
以上のように、プログラマブル論理回路のための内部接続および相互接続手段を備えたアーキテクチャを開示する。
【図面の簡単な説明】
【００６２】
本発明を、限定的なものではなく例示的なものとして添付図面の図に示す。図面では、同様の参照番号は同様の要素を示す。
【図１】本発明を実施することができるフィールド・プログラマブル・ゲート・アレイ論理回路のブロック図である。
【図２Ａ】個別のセルを示す一実施形態の図である。
【図２Ｂ】別個のセルを示す他の実施形態の図である。
【図３Ａ】論理クラスタの図である。
【図３Ｂ】１つの論理クラスタのＩマトリックス内部接続を近隣論理クラスタに延長する様子を示す図である。
【図４Ａ】垂直ブロック・コネクタを備えた論理クラスタの実施形態を示す図である。
【図４Ｂ】水平ブロック・コネクタを備えた論理クラスタの実施形態を示す図である。
【図５Ａ】論理ブロックに関連するレベル１ＭＬＡ交換網に接続する８ブロック・コネクタとレベル１ＭＬＡ転換点を示す図である。
【図５Ｂ】レベル１ＭＬＡ転換点を示す図である。
【図５Ｃ】交換網を示す図である。
【図６】ブロック・クラスタのルーティング網を示す図である。
【図７Ａ】ブロック・セクタのブロック図である。
【図７Ｂ】レベル１からレベル２へのＭＬＡルーティング交換網を示す図である。
【図８Ａ】セクタ・クラスタを示す図である。
【図８Ｂ】レベル２からレベル３へのＭＬＡルーティング交換網を示す図である。
【図１】
2008278508.tif 000003
【図２Ａ】
2008278508.tif 000004
【図２Ｂ】
2008278508.tif 000005
【図３Ａ】
2008278508.tif 000006
【図３Ｂ】
2008278508.tif 000007
【図４Ａ】
2008278508.tif 000008
【図４Ｂ】
2008278508.tif 000009
【図５Ａ】
2008278508.tif 000010
【図５Ｂ】
2008278508.tif 000011
【図５Ｃ】
2008278508.tif 000012
【図６】
2008278508.tif 000013
【図７Ａ】
2008278508.tif 000014
【図７Ｂ】
2008278508.tif 000015
【図８Ａ】
2008278508.tif 000016
【図８Ｂ】
2008278508.tif 000017