(57)【特許請求の範囲】
【請求項１】
プログラム可能論理装置において、
少なくとも１個の形態特定可能論理ブロックが設けられており、各形態特定可能論理ブロックは組合わせ要素と順序論理要素とを有しており、
前記少なくとも１個の形態特定可能論理ブロックを形態特定させるための複数個のプログラム可能論理要素が設けられており、少なくとも１個のプログラム可能論理要素は、前記組合わせ要素の形態を特定させるための複数個のメモリセルを有しており、且つ少なくとも１個のプログラム可能論理要素は前記順序論理要素の形態を特定させるための複数個のメモリセルを有しており、
１個の形態特定可能論理ブロックの複数個の中間状態を格納するための格納装置が設けられおり、
各形態特定可能論理ブロックが、更に、前記中間状態へアクセスするため又は少なくとも１個の形態特定可能論理ブロックにおける値へアクセスするための複数個のセレクタを有している、
ことを特徴とするプログラム可能論理装置。
【請求項２】
請求項１において、前記値が順序論理要素の出力信号であることを特徴とするプログラム可能論理装置。
【請求項３】
請求項１において、前記値が組合わせ要素の出力信号であることを特徴とするプログラム可能論理装置。
【請求項４】
請求項１において、前記格納装置が第一トリガ信号によって制御されることを特徴とするプログラム可能論理装置。
【請求項５】
請求項１において、前記セレクタが複数個のトリガ信号によって制御されることを特徴とするプログラム可能論理装置。
【請求項６】
請求項１において、更に、複数個のラッチが設けられており、前記格納装置の各ビットが関連するラッチへ供給され、前記複数個のラッチの出力端子がマルチプレクサの入力端子へ結合されており、前記マルチプレクサは前記複数個のプログラム可能論理要素によって制御されることを特徴とするプログラム可能論理装置。
【請求項７】
請求項６において、前記複数個のラッチが第一トリガ信号によってクロック動作されることを特徴とするプログラム可能論理装置。
【請求項８】
請求項７において、前記格納装置が前記第一トリガ信号よりも精度の低い複数個のトリガ信号によって制御されることを特徴とするプログラム可能論理装置。
【請求項９】
請求項７において、更に、バイパスラッチが前記形態特定可能論理ブロックと前記マルチプレクサとの間に結合されており、前記バイパスラッチが前記複数個のラッチと同一のトリガによって制御されることを特徴とするプログラム可能論理装置。
【請求項１０】
請求項１において、各セレクタが前記形態特定可能論理ブロック及び前記格納装置から信号を受取るための第一マルチプレクサを有していることを特徴とするプログラム可能論理装置。
【請求項１１】
請求項１において、更に、前記順序論理要素又は前記組合わせ要素から前記格納装置へ信号を選択的に供給するために少なくとも１個の形態特定可能論理ブロック内にマルチプレクサが設けられていることを特徴とするプログラム可能論理装置。
【請求項１２】
請求項１において、更に、前記プログラム可能論理要素のうちの１つの出力信号として前記複数個のメモリセルのうちの１つの値を供給するラッチが設けられていることを特徴とするプログラム可能論理装置。
【請求項１３】
請求項１において、各形態特定可能論理ブロックが、更に、前記格納装置からの信号を受取るための出力マルチプレクサを有していることを特徴とするプログラム可能論理装置。
【請求項１４】
請求項１において、前記格納装置が前記形態特定可能論理ブロックのうちの少なくとも１つの入力端子へ結合されていることを特徴とするプログラム可能論理装置。
【請求項１５】
請求項１において、更に、前記複数個のメモリセルへアクセスするための複数個のラインが設けられていることを特徴とするプログラム可能論理装置。
【請求項１６】
請求項１５において、更に、１つの形態と関連した前記複数個のプログラム可能論理要素のうちの所定の組を選択するための手段が設けられていることを特徴とするプログラム可能論理装置。
【請求項１７】
請求項１５において、更に、１個の形態特定可能論理ブロック内の１つの形態と関連した前記複数個のプログラム可能論理要素のうちの所定の組を選択するレジスタが設けられていることを特徴とするプログラム可能論理装置。
【請求項１８】
プログラム可能論理装置において、
組合わせ要素及び順序論理要素を含む形態特定可能論理ブロックが設けられており、
入力／出力ブロックが設けられており、
前記形態特定可能論理ブロック及び前記入力／出力ブロックを相互接続する相互接続構成体が設けられており、
前記形態特定可能論理ブロック及び前記相互接続構成体の形態を特定するための複数個のプログラム可能論理要素が設けられており、少なくとも１個のプログラム可能論理要素が複数個のメモリセルを有しており、
前記入力／出力ブロックの複数個の中間状態を格納するための格納装置が設けられており、
各形態特定可能論理ブロックが、更に、前記中間状態へアクセスするため又は少なくとも１個の形態特定可能論理ブロックにおける値へアクセスするための複数個のセレクタを有している、
ことを特徴とするプログラム可能論理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大略、プログラマブルロジック装置即ちプログラム可能論理装置に関するものであって、更に詳細には、コンフィギャラブル（形態特定可能）論理ブロック及びプログラム可能ルーチング（経路付け）マトリクスがダイナミックに再度形態特定されるフィールドプログラマブルゲートアレイ、即ち現場においてプログラム可能なゲートアレイに関するものである。
【０００２】
【従来の技術】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のプログラム可能論理装置は公知のタイプの集積回路であり且つ再プログラム可能特性によって提供される柔軟性のために広く適用可能なものである。ＦＰＧＡは、典型的に、ユーザ（回路設計者）によって所望される論理関数を与えるために互いにプログラムすることによって相互接続される複数個のコンフィギャラブル（形態特定可能）論理ブロック（ＣＬＢ）からなるアレイを有している。ＦＰＧＡは、典型的に、同一の複数個のＣＬＢからなる規則的なアレイを有しており、各ＣＬＢは、多数の異なる論理関数のうちのいずれか１つを実行するために個別的にプログラムされる。ＦＰＧＡは、所望のユーザの回路設計にしたがってＣＬＢを相互接続するためのコンフィギャラブル即ち形態特定可能なルーチング（経路付け）構成体を有している。ＦＰＧＡは、更に、多数のコンフィギュレーション（形態）メモリセルを有しており、それらはＣＬＢと結合されて各ＣＬＢによって実行されるべき関数を特定し、且つコンフィギャラブルルーチング（形態特定可能な経路付け）構成体へ結合されており各ＣＬＢの入力線及び出力線の結合を特定する。ＦＰＧＡは、更に、動作期間中にユーザによってアクセス可能なデータ格納メモリセルを有することが可能である。然しながら、特に断りがない限り、メモリセルという用語はコンフィギュレーション（形態）メモリセルのことを言及する。ザイリンクスインコーポレイテッドの１９９４年に出版された「ザ・プログラマブル・ロジック・データ・ブック（Ｔｈｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄａｔａ  Ｂｏｏｋ）」という題名の出版物は、幾つかのＦＰＧＡ製品を記載しており、引用によってその全体を本明細書に取込む。
【０００３】
論理回路の複雑性及び寸法を増加させるために従来技術において使用可能な１つのアプローチは、外部接続によって複数個のＦＰＧＡ（即ち、複数個のチップ）を結合させることであった。然しながら、ＦＰＧＡ間での入力／出力接続部、即ちピンの数が制限されていたために、全ての回路がこのアプローチを使用して実現することが可能なものではない。更に、１個を超えた数のＦＰＧＡを使用することは、ユーザの回路設計を実現する上で、電力消費、コスト及び空間を不所望に増加させる。
【０００４】
別の公知の解決方法は、ＦＰＧＡにおけるＣＬＢ及び相互接続構成体の数を増加させることであった。然しながら、いずれの与えられた半導体製造技術の場合にも、実際的な寸法の集積回路チップ上に製造することの可能なＣＬＢの数には制限がある。従って、ＦＰＧＡ用の論理ゲート数即ちＣＬＢ密度を増加させることの必要性が継続して存在している。
【０００５】
異なる時間において異なる論理関数を実行するためにＦＰＧＡを再度形態を特定することは当該技術分野において公知である。然しながら、この再形態特定は、各再形態特定のためにコンフィギュレーション（形態）ビットストリームを再ロードする時間のかかるステップを必要とする。更に、従来のＦＰＧＡの再形態特定は、通常、論理関数の実行を中断し、論理関数の現在の状態をＦＰＧＡ外部のメモリ装置内へ保存し、メモリ形態セルの全アレイを再ロードし、且つチップ外に保存した論理関数の状態及びその他の必要な入力を入力することを必要とする。これらのステップの各々は、かなりの時間を必要とし、そのために再形態特定は典型的な回路を実現する場合に非実際的なものとさせている。
【０００６】
【発明が解決しようとする課題】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、形態特定可能論理ブロック及びプログラム可能経路付けマトリクスをダイナミックに再形態特定することの可能なプログラム可能論理装置を提供するを目的とする。
【０００７】
【課題を解決するための手段】
本発明によれば、プログラム可能論理装置（ＰＬＤ）が、少なくとも１個のコンフィギャラブルロジックブロック即ち形態特定可能論理ブロック（ＣＬＢ）と、該ＣＬＢを相互接続するための相互接続構成体と、該ＣＬＢ及び該相互接続構成体をコンフィギュア、即ち形態を特定するための複数個のプログラム可能論理要素とを有している。各ＣＬＢは、組合わせ要素と順序論理要素とを有しており、少なくとも１個のプログラム可能論理要素は、該組合わせ要素をコンフィギュア、即ち形態を特定するための複数個のメモリセルを有しており、且つ少なくとも１個のプログラム可能論理要素は該順序論理要素をコンフィギュア、即ち形態を特定するための複数個のメモリセルを有している。本発明によれば、ＰＬＤは、前記複数個のメモリ要素のうちの少なくとも１つへのアクセスをディスエーブル、即ち動作不能状態とさせる手段を有している。一実施例においては、該メモリセルはＲＡＭセルであり、一方他の実施例においては、該メモリセルはＲＯＭセルであり、又はそれらの組合わせである。
【０００８】
本発明の一実施例によれば、コンフィギュレーション（形態）メモリ用に使用されるメモリセルは、更に、ユーザのデータメモリとしても使用可能である。従って、１個のメモリスライス（１つのコンフィギュレーション即ち形態に対するビットの全て）又は１つのメモリスライスの一部を、コンフィギュレーションメモリ又はユーザデータのいずれかとして選択的に使用される。ラッチがアクティブ即ち活性なコンフィギュレーション（形態）を保持している間に、データビットをアドレスでアクセスすることが可能である。
【０００９】
マイクロレジスタが１個のＣＬＢ又は相互接続構成体の複数個の中間状態を格納する。該マイクロレジスタは複数個の読取ポートを有しており、その際に１つのコンフィギュレーション（形態）が幾つかのその他のコンフィギュレーション（形態）のうちのいずれか１つの期間中に該ＣＬＢにおいて計算された値を同時的に使用することを可能としている。このような態様で、ＣＬＢは他のコンフィギュレーション（形態）においてＣＬＢ（その他のＣＬＢ又はそれ自身）によって計算された値へアクセスすることが可能である。種々の実施例において、該マイクロレジスタはＣＬＢの出力端か、ＣＬＢの入力端か、又は相互接続構成体内のその他の箇所のいずれかに位置されている。
【００１０】
本ＰＬＤは、ランダムアクセスによるか、又は外部又は内部信号からのコマンドによって、逐次的にコンフィギュレーション（形態）間でスイッチする。このスイッチ動作は、「フラッシュリコンフィギュレーション（フラッシュ再形態特定）」と呼ばれる。フラッシュリコンフィギュレーションは、本ＰＬＤがＮ個のコンフィギュレーション（形態）のうちの１つにおいて機能することを可能とし、尚、Ｎは各プログラム可能な点へ割当てられた最大数のメモリセルに等しい。このような態様で、Ｍ個の実際のＣＬＢを有するＰＬＤは、それがあたかもＭ×Ｎ個の実効的なＣＬＢを有するように機能する。従って、８個のコンフィギュレーション（形態）を仮定した場合に、本ＰＬＤは、付加的なコンフィギュレーションメモリを有することによってそれが実際に有する論理の量の８倍の論理を実現する。フラッシュリコンフィギュレーションを使用することによって、本発明のＣＬＢはダイナミックに効果的に再使用され、その際に与えられた数の論理関数を実現するために必要とされる物理的なＣＬＢの数をコンフィギュレーションの数の係数だけ減少させる。更に、該マイクロレジスタは、各フラッシュリコンフィギュレーションに対して保存及び再格納機能を提供し、その際にそのコンフィギュレーション（形態）が最後に終了した箇所からコンフィギュレーション即ち形態特定を行なうこととを再開することを可能とする。
【００１１】
本発明は、典型的に、前記プログラム可能論理要素のうちの１つの出力信号として該メモリセルの１つの値を供給するためのラッチを有している。このラッチは、該メモリセルのコンフィギュア即ち形態特定を行なうための複数個のビット線に関して行なわれるプレチャージの遅延を効果的に隠す。更に、該ラッチはユーザのコンフィギュレーションとは独立的に該ＰＬＤに対し既知の状態へパワーアップする。更に、該ラッチは、コンフィギュレーション即ち形態特定がアクティブ即ち活性状態にある間にメモリへのアクセスを可能とさせる。
【００１２】
一実施例においては、各ＣＬＢは、更に、該中間状態、少なくとも１個のＣＬＢにおける値（順序論理要素又は組合わせ要素と関連している）又はＣＬＢへの外部信号のいずれかへアクセスするための複数個のマルチプレクサを有している。
【００１３】
【発明の実施の形態】
以下の説明は、トピック毎に分割されており、それらは以下の目次に従って構成されている。
【００１４】
目  次
１．０  用語
２．０  論理アレイアーキテクチュア
２．１  マイクロレジスタ
２．１ａ  マイクロレジスタ位置
２．２  バスヒエラルキ
３．０  パワー節約
４．０  共用メモリ
５．０  チップレイアウト
６．０  リコンフィギュレーション（再形態特定）
７．０  単一クロックシーケンサ
７．１  コンフィギュレーションシーケンス動作
７．２  コンフィギュレーション期間
７．３  同期型ＦＰＧＡ用のマイクロサイクル発生
８．０  動作モード
８．１  タイムシェアリングモード
８．２  論理エンジンモード
８．２ａ  同期／非同期クロック動作
８．２ｂ  論理エンジンモード用制御器
８．２ｃ  スケジューラ
８．２ｄ  圧縮スケジューリング
８．２ｅ  同時的スケジューリング及び配置
８．２ｆ  論理エンジン入力及び出力信号
８．３  スタティックモード
８．４  混合モード
９．０  その他
９．１  可変深さＣＬＢ
９．２  マイクロサイクルインタラプトシミュレーション
９．３  マイクロレジスタ代替物
９．４  より深い論理に対する代替物
９．５  ＣＬＢ毎メモリアクセスコンフィギュレーションビット
９．６  マイクロレジスタセレクタオプション
９．７  低パワー相互接続回路
９．８  コンフィギュレーション用マルチアクセス
９．９  パイプライン特徴モード
９．１０  ＲＯＭセルの組込み
１．０  用語
ここにおいては３つのタイプのデータ（３つのタイプのメモリ又は格納部を暗示する）、即ち、コンフィギュレーションデータ、ユーザデータ、状態データについて説明する。コンフィギュレーションデータは、そのデータが論理ブロック又は相互接続体へ供給された場合に、論理ブロック又は相互接続体のコンフィギュレーション即ち形態特定を決定する。ユーザデータは、典型的に、ユーザの論理によって発生され且つそうでなければコンフィギュレーションデータの格納のために使用することの可能なメモリにおいて格納／検索されるデータである。状態データは、任意の特定の時間においてのユーザ論理におけるノードの論理値を画定するデータである。典型的に、状態データは、該ノードにおける値が後の時間において必要とされる場合に格納される。「状態」という用語は、特定の時間においてのノード値の全て又はこれらの値のうちのサブセットのいずれかを言及するために使用される。
【００１５】
２．０  論理アレイアーキテクチュア
従来の１つのＦＰＧＡ、例えばザイリンクスインコーポレイテッドから市販されているザイリンクスＸＣ４０００（商標）ファミリィのＦＰＧＡのうちの１つの装置は、各プログラミング点を制御するために１個のコンフィギュレーションメモリセルを有している。図１に示したように、従来のラッチ１０１（即ち、４トランジスタ装置）及びセレクトトランジスタ１０２は、ＦＰＧＡチップ上の全ての論理関数に対する制御の基本的なユニットを形成する５トランジスタ（５Ｔ）メモリセル１００を有している。１９８９年４月１１日付で発行された米国特許第４，８２１，２３３号、及び１９８８年６月７日付で発行された米国特許第４，７５０，１５５号は、この５Ｔメモリセルのコンフィギュレーション即ち形態特定について詳細に説明しており、それらは引用によって本明細書に導入する。
【００１６】
本発明によれば、且つ図２を参照すると、各メモリセル１００（図１）はランダムアクセスメモリ（ＲＡＭ）ビット組２００で置換されている。ビット組２００は、８個のメモリセルＭＣ０−ＭＣ７を有している。各メモリセルＭＣはラッチ２０１と、それと関連するセレクトトランジスタ２０２とを有している。メモリセルＭＣ０−ＭＣ７はクロック動作されるラッチ２０４へ信号を供給する共通ビット線２０３へ結合されている。別の実施例においては、メモリセルＭＣ０−ＭＣ７は従来の６トランジスタ（６Ｔ）メモリセルであって、それらは当該技術分野において公知であり、従ってその詳細な説明は割愛する。異なるビット組における同一の位置における全てのコンフィギュレーションビット（例えば、メモリセルＭＣ２によってラッチ２０１2 により格納されている３番目のコンフィギュレーションビット）はメモリの単一の「スライス」内に存在するものと考えられ、アレイの単一コンフィギュレーション（形態）に対応している。
【００１７】
付加的なコンフィギュレーションメモリセルはＦＰＧＡ回路のダイナミックな再使用により論理密度を増加させる。特に、ＣＬＢ及び相互接続体はある時刻において何らかの定義されたタスクを実行すべく形態特定され且つ別の時刻において別のタスクを実効すべく再度形態特定される。従って、各先のＦＰＧＡプログラミング点に対してビット組を供給することにより、本発明におけるＦＰＧＡは従来のＦＰＧＡの論理量の８倍の量を「保持」する。ＣＬＢを再度形態特定させることによって、ＣＬＢにおける関数発生器の数、典型的には、ユーザの回路において与えられた数のルックアップテーブル（「仮想のＬＵＴ」）を実現するために必要とされる従来のルックアップテーブル（「現実のＬＵＴ」）の数は、コンフィギュレーション（形態特定）の数の係数だけ減少される。
【００１８】
図３は本発明に基づくＣＬＢ３０１の一実施例を示したブロック図である。この実施例においては、ＣＬＢ３０１は３２０個のプログラミング点を有しており、各プログラミング点は１ビットのコンフィギュレーションデータを必要とし、各ビットは８ビットメモリを有している。例えば、Ｇ論理関数発生器３０２は１２８個のビット（１６ビット×８）によって形態が特定される。論理関数発生器３０２，３０３，３０４、複数個のマルチプレクサ３０５−３２１、ＳＲ制御を制御するコンフィギュレーションビットは、コンフィギュレーションワード内のビットの各々の「後ろ側」の８ビットメモリ組を表わす陰付きボックスとして示されている。説明の便宜上、図３はスイッチボックス及び接続ボックス及びそれらに関連するコンフィギュレーションビットを図示していないが、これらのボックス内の各プログラミング点も８ビットメモリを有している。
【００１９】
動作期間中に、同一のスライス内の全ての値が同時的に読み出されて、チップ上のＣＬＢ及び相互接続体のコンフィギュレーション即ち形態特定をアップデートし、その際にＣＬＢをして異なる論理関数を実行させ且つ相互接続体をして異なる接続を行なわせる。
【００２０】
２．１  マイクロレジスタ
図３はマルチプレクサ３１１及び３１２の出力端子へ結合されているマイクロレジスタ３２４及び３２５を示している。中間論理状態を格納する各マイクロレジスタは、８個のマイクロレジスタビットを有しており、その場合に、各マイクロレジスタビットは前述した８個のメモリスライスのうちの１つに対応している（然しながら、一実施例においては、全てのマイクロレジスタの全てのビットが存在する訳ではない）。コンフィギュレーション即ち形態特定の変化の直前において、現在のメモリスライスに対応するマイクロレジスタビットがクロック動作され全てのＣＬＢ（及び、ある実施例においては、ＩＯＢ）の状態を捕獲する。本発明によれば、マイクロレジスタ３２４及び３２５の内容はどのようなコンフィギュレーション（形態特定）においても使用することが可能である。各コンフィギュレーション期間中に、信号は従来の態様でＦＰＧＡを介して伝播し、プログラムした相互接続体を介してマイクロレジスタからルックアップテーブル（ＬＵＴ）又はＣＬＢの入力端子へ付加的な経路が与えられる。
【００２１】
一実施例においては、各マイクロレジスタに対する複数個のセレクタが設けられており、従って単一のコンフィギュレーション即ち形態特定が、ＣＬＢの複数個のその他のコンフィギュレーションによって発生された値へアクセスするか、又はマイクロレジスタ３２４及び３２５をバイパスする現在のＣＬＢの値へアクセスすることが可能である。例えば、マイクロレジスタ３２４は複数個の出力セレクタ、即ちマルチプレクサ３１３，３１４，３１５，３１６へ結合されている。同様の態様で、マイクロレジスタ３２５はマルチプレクサ３１７，３１８，３１９，３２０へ結合されている。注意すべきことであるが、上述したマルチプレクサ（セレクタ）の各々は関数発生器３０２，３０３，３０４からの信号、又はＣＬＢ３０１外部の信号（即ち、信号Ｈ１又はＤＩＮ）を受取る。マルチプレクサの数は、一度に使用することの可能なマイクロレジスタからの信号の数を制限する。例えば、各マイクロレジスタに対して４個の出力マルチプレクサが存在しているので（即ち、マイクロレジスタ３２４に対してマルチプレクサ３１３−３１６及びマイクロレジスタ３２５に対してマルチプレクサ３１７−３２８）、単一のコンフィギュレーションは、その他のコンフィギュレーションにおいて同一のマイクロレジスタ内に格納されている４つを超えた数の信号へアクセスすることは不可能である。
【００２２】
図３Ａを参照すると、レジスタ書込セレクト（ＬＷＳ）信号がどのマイクロレジスタビット、即ちビット０−７へ書込を行なうかを決定する。読取セレクト信号は、例えば、出力マルチプレクサ３１３を制御し、該マルチプレクサはどのマイクロレジスタビットを読取るかを決定する。コンフィギュレーションセレクト（ＣＲＳ）信号は、ブロック３３０から読取ったどのセレクト信号を使用するかを決定し、各ブロックは８個のメモリセル（ＭＣ０−ＭＣ７）を有している。注意すべきことであるが、ＲＷＳ信号は、メモリ書込動作のみのためにメモリ制御器によって供給され（図１１及び１２を参照して更に詳細に説明する）及びその他の動作のためにシーケンサによって供給される（図２２Ａ及び５２を参照して更に詳細に説明する）。対照的に、ＣＲＳ信号は、コンフィギュレーション読取動作のためにシーケンサによって供給され且つその他の動作のためにメモリ制御器によって供給される。
【００２３】
最も簡単な実施例においては、ＲＷＳ信号は、単に、一つのマイクロサイクルだけ遅延されたＣＲＳ信号である（「マイクロサイクル」は「μｃｙｃｌｅ」又は「ｕｃｙｃｌｅ」とも呼称する）。即ち、ＣＲＳ信号はマイクロサイクルの開始時において計算を特定し、且つＲＷＳ信号はマイクロサイクルの終了時にその結果を格納する。
【００２４】
出力信号、例えば出力信号ＹＡはマイクロクロック（μＣＬＫ）信号によってパイプラインラッチ３５０内へラッチされるので、読取セレクト信号又はＣＲＳ信号をラッチすることは必要ではなく、従ってシリコン面積を最小とすると共にマルチプレクサ３１３がコンフィギュレーション読取プロセスと並列的に動作することを可能としている。
【００２５】
図４はマイクロレジスタ３２４と、マルチプレクサ３０５，３２１，３１３−３１６と、Ｄフリップフロップ３２２とを有するＣＬＢ３０１（図３）の一部のより詳細な実施例を示している。注意すべきことであるが、図４に示した構造はＣＬＢ３０１内において二度複製されている。何故ならば、２組のマイクロレジスタ（即ち、マイクロレジスタ３２４及び３２５）が設けられているからである。この実施例においては、マルチプレクサ３１１（図３）は３個のマルチプレクサ４０２，４０３，４０４を有している。マルチプレクサ３１３，３１４，３１５，３１６は、夫々、バッファした出力信号ＹＡ，ＹＢ，ＹＱＡ，ＹＱＢを供給する。
【００２６】
ＲＥＣＩＲＣ経路の機能はクロックイネーブル信号によって制御される。特に、クロックイネーブル信号ＥＣが論理０であると、現在のマイクロレジスタビットの前の値を以下の態様で得ることが可能である。最初に、マイクロレジスタ３２４からの出力信号がＣＲＳ信号で選択され且つマルチプレクサ４０８を介してマイクロクロック（μＣＬＫ）信号と共にラッチ４１５へ転送される。図３Ａを参照して前述したように、このＣＲＳ信号は現在アクティブなコンフィギュレーションのビット組におけるアドレス即ち位置である。第二に、ラッチされた信号ＱＯＬＤは、次いで、マルチプレクサ４０２（信号ＥＣ′によって制御される）、マルチプレクサ４０３（信号ＳＥＬ（コンフィギュレーションビットによって供給される）によって制御される）、及びマルチプレクサ４０４（信号ＳＡＶＥ（シーケンサによって与えられる）によって制御される）を介して、現在のマイクロレジスタビットへフィードバックされる。
【００２７】
図４に示した入力信号は、概略、市販されているザイリンクスＸＣ４０００ファミリィのＦＰＧＡにおいて与えられる信号に適合している。例えば、信号Ｋはクロック入力信号であり、且つ信号IVはパワーアップ又はリセット時のフリップフロップ３２２の初期値であり且つビット組２００（図２）によって与えられる値である。
【００２８】
信号Ｘ１はマイクロレジスタ３２４への入力信号である（尚、Ｘ２（不図示）はマイクロレジスタ３２５への入力信号である）。注意すべきことであるが、ビット組２００（図２）は図４の種々の要素を制御する。マルチプレクサ４０８の出力信号はメモリインターフェース（ＭＥＭ  Ｉ−Ｆ）４０５へ供給され、該メモリインターフェースはマイクロレジスタ３２４のプレロードのため、パワーアップ動作のため、又はデバッグ動作のため等のためにマルチプレクサ４０４へ値を供給する。一実施例においては、マイクロレジスタ３２４は、該レジスタの各ビットがそれを発生したコンフィギュレーションと同一のアドレス空間内に存在するようにアドレスされ、その際に状態へアクセスすることの複雑性を著しく減少させている。注意すべきことであるが、Ｄフリップフロップ３２２のセット／リセット（Ｓ／Ｒ）及びイネーブルクロック（ＥＣ）端子へ供給される信号（ＳＲ′及びＥＣ′）は、ライン４１３及び４１４を介してマルチプレクサ４０２の動作を制御する。
【００２９】
マルチプレクサ４０３は、Ｄフリップフロップ３２２からの信号又はマルチプレクサ４０２からの信号（１つのコンフィギュレーションにおいては、マイクロレジスタ３２４からのフィードバック信号ＲＥＣＩＲＣ）がマルチプレクサ４０４へ供給されるか否かを決定する。ラッチ４０７はマルチプレクサ４０４からの出力信号を捕獲し且つ適宜のマイクロサイクルクロック信号μＣＬＫによってこの値をマイクロレジスタ３２４へ転送させる。図６３Ａ，６３Ｂ，６３Ｃはマルチプレクサ３１３−３２０（図３）に対する種々の実施例を示している。
【００３０】
図６３ＡはＣＬＢの出力信号ＯＵＴ＿を相互接続構成体へ供給する本発明に基づく出力マルチプレクサの一実施例、この場合には、マルチプレクサ３１３（図４）を示している。尚、本明細書において英文字記号の後にアンダーラインを付したものはその英文字記号の反転した信号であることを示している。注意すべきであるが、ラッチ４０７及びレジスタ３２４はマルチプレクサ３１４−３１６によって共用されている（図４参照）。レジスタ書込信号ＲＷＳ０−ＲＷＳ７を受取るレジスタ３２４は信号ｕＲ０−ｕＲ７をマルチプレクサ６３０１Ａ−６３０１Ｄへ供給する。アドレスビットＡ０は、各マルチプレクサへの２つの信号のうちのいずれがマルチプレクサ６３０１Ｅ及び６３０１Ｆへ転送されるかを決定する。同様の態様で、アドレスビットＡ１は、これらのマルチプレクサへの２つの信号のうちのいずれがマルチプレクサ６３０１Ｇへ転送されるかを決定する。アドレスビットＡ２は、どの入力信号が反転され且つマルチプレクサ６３０１Ｈへ転送されるかを決定する。マルチプレクサ６３０１Ｈは、更に、ラッチ４０７から反転されたレジスタバイパス信号ＲＢＹＰを受取り且つ回路６３０２へ出力信号を供給する（セレクト信号Ａ３によって決定される）。アドレスビットＡ３は、マルチプレクサ６３０１Ｇからの出力信号か又はレジスタバイパス信号ＲＢＹＰのいずれが爾後にマルチプレクサ６３０１Ｉへ供給されるかを決定する。注意すべきことであるが、信号ＲＢＹＰが選択されると、マルチプレクサ６３０１Ｈは前のマイクロサイクルにおいて該レジスタ内に書き込んだ値を供給している。ＲＢＹＰ信号はツリーマルチプレクサ６３０１の待ち時間を取除いているが、該信号は論理エンジンモード以外における前のマイクロサイクルにおける値に関してある程度の不明確性を発生させる場合がある。
【００３１】
図６３Ｄに示した表は、各マルチプレクサ３１３−３２０に対する入力信号を示しており、その場合に、信号Ｘ１はラッチ４０７の出力信号であり（即ち、マイクロレジスタ３２４と関連しているレジスタバイパス信号）、且つ信号Ｘ２はマイクロレジスタ３２５と関連しているレジスタバイパス信号である。入力信号ＳＢＹＰ０及びＳＢＹＰ１は、典型的に、ザイリンクスＸＣ４０００ファミリィの装置のコンフィギュレーション論理ブロックにおいて発生される逐次的なバイパス信号（即ち、信号Ｆ，Ｈ，ＤＩＮ又はＱ）を参照している。
【００３２】
注意すべきことであるが、信号ＳＢＹＰ０及びＳＢＹＰ１はアドレスビットＡ１−Ａ３によって選択される。特に、アドレスビットＡ１はラッチ６３０３内に格納され、該ラッチはマルチプレクサ６３０１Ｊを制御し（即ち、入力信号ＳＢＹＰ０及びＳＢＹＰ１の間の選択を行なう）、一方アドレスビットＡ２及びＡ３はＡＮＤゲート６３０４へ供給される。両方のアドレスビットＡ２及びＡ３が低状態であると、高信号がラッチ６３０５内に格納され、そうでない場合には低信号がラッチ６３０５内に格納される。ラッチ６３０５の出力信号は、マルチプレクサ６３０１Ｉがマルチプレクサ６３０１Ｈ又はマルチプレクサ６３０１Ｊの出力信号を選択することを制御する（以下に詳細に説明する）。
【００３３】
図６３Ｂは別の実施例を示しており、この場合は、ラッチ４０７がマイクロレジスタ３２４へ接続されており、マイクロレジスタ３２４はラッチ６３１１0 −６３１１7 及びラッチ６３１２へ接続している。上述したラッチの全てはマイクロクロック信号ｕＣｌｋによってクロック動作されるので、回路６３１５は複数個のフリップフロップとして機能し、信号ＲＷＳ０−ＲＷＳ７はこれらのフリップフロップに対してのイネーブル信号として作用する。更に、マイクロクロック信号ｕＣｌｋはチップ全体にわたって低スキューで分布されるので、信号ＲＷＳ０−ＲＷＳ７は図６３Ｆにおいてハッチングした部分によって示したようにかなりの勾配を有することが可能であり、その部分は信号ＲＷＳに対する「ｄｏｎ’ｔ  ｃａｒｅ」期間を表わしている。注意すべきことであるが、回路６３１５において競合問題を除去するために、マイクロクロック信号ｕＣｌｋとｕＣｌｋ＿との間にあるオーバーラップしていない部分が与えられている（そうでないと、オーバーラップ期間中にデータがこれらのラッチを介して通過する場合がある）。この実施例においては、信号ＳＢＹＰ０及びＳＢＹＰ１が選択されると、それはマイクロサイクルクロックｕＣｌｋとは無関係にマルチプレクサ３１３によって転送され、一方マイクロレジスタ３２４からの信号が選択される場合には、そのような信号はマイクロサイクルクロックｕＣｌｋのエッジ上でサンプルされる。
【００３４】
図６３Ｃは更に別の実施例を示しており、この場合は、ラッチ４０７がマイクロレジスタ３２４へ接続されており、マイクロレジスタ３２４はマルチプレクサ３１３Ａへ接続している。図示したように、この実施例は、ラッチされる入力信号に対してマルチプレクサ３１３Ａを設けてあり且つラッチされない入力信号に対して別のマルチプレクサ３１３Ｂを設けてある。従って、ラッチ６３１１（図６３Ｂ）はマルチプレクサ３１３を介して「プッシュ」されており、その際に図６３Ｂにおける９個のラッチ、即ちラッチ６３１１0 −６３１１7 からラッチ数を効果的に１個、即ちラッチ６３１７へ減少させている。マルチプレクサ３１３Ａは４個のブロック３３０によって制御され（図３Ａ参照）、一方マルチプレクサ３１３Ｂはラッチ６３１８を介してブロック３３０によって制御される。この実施例においては、マルチプレクサ３１３Ａからの出力信号に対してラッチ６３１７が設けられている。従って、リコンフィギュレーション即ち再形態特定が完了すると、図６３Ｃの実施例は値がマルチプレクサ３１３Ａを介してリップル動作することを待機する必要はない。
【００３５】
図６３Ｅは回路６３０２（図６３Ａ）に対する真理値表を示している。例えば、信号ＳＢＹＰ０又は信号ＳＢＹＰ１のいずれかが選択されると、アドレスビットＡ２及びＡ３は０である。従って、ゲート６３０４の出力信号（実効的には、その反転された入力端子のためにＮＯＲゲートである）は高状態である。ラッチ６３０５によってｕＣｌｋ信号が検知された後に、それは高信号を出力し、その際にＯＲゲート６３０６の出力信号を強制的に高状態とさせる。その高信号は、実効的に、ラッチ６３０７をトランスペアレントなものとさせ、その際に信号ＳＢＹＰ０又はＳＢＹＰ１のいずれかが直接的にＣＬＢ出力線へリップル動作することを可能とさせる。換言すると、回路６３０２はマルチプレクサとして機能する。注意すべきことであるが、図６３Ｂ及び６３Ｃに示した構造も同一の機能を実行するが、その機能は異なる態様で実現される。
【００３６】
一方、マイクロレジスタ３２４の出力信号が所望される場合には、ラッチ６３０５の出力信号が低状態であり且つＯＲゲート６３０６の出力信号はマイクロクロックと同じである。この態様においては、ラッチ６３０７はラッチ６３１７と同一の機能を実行する（図６３Ｃ）。従って、このコンフィギュレーションにおいては、回路６３０２はラッチへ結合されているマルチプレクサとして機能する。
【００３７】
図６３Ｇはトランジスタ６３３０−６３３３及びインバータ６３３４−６３３７を有する回路６３０２に対する１つの詳細な実現例を示している。
【００３８】
図５はマルチプレクサ４０２，４０３，４０４，ＭＥＮ  Ｉ／Ｆ４０５を示しており、それらは、この実施例においては、効果的に単一のマルチプレクサ回路５００として統合されており、それは直列したパストランジスタの数を減少させることによって遅延を減少させている。注意すべきことであるが、読取信号ＲＤ、書込信号ＷＲ、メモリセレクト信号ＭＳＥＬはメモリ制御器（図１１を参照して詳細に説明する）によって供給され、一方ＳＡＶＥ信号はシーケンサ（図２２Ａ及び５２を参照して詳細に説明する）によって供給され、且つセレクト信号ＳＥＬはコンフィギュレーションビットによって供給される。図６はノード５０１（図５）における特定の信号となる種々の入力信号に対する真理値表６０１を示している。
【００３９】
２．１ａ  マイクロレジスタ位置
マイクロレジスタ３２４及び３２５（図３）は択一的な箇所に位置されている。一実施例においては（図３に示してある）、マイクロレジスタ３２４，３２５は出力マルチプレクサ３１３−３２０の入力端子へ結合されている。第二実施例においては、これらのマイクロレジスタは論理関数発生器３０２及び３０３の入力端子へ結合されている。例えば、マイクロレジスタ３２４が論理関数発生器３０２の入力端子へ結合されている場合には、マルチプレクサ３１３−３１６は簡単化される。注意すべきことであるが、２つの信号が同一のコンフィギュレーションにおいて発生され且つこれらの信号が異なるコンフィギュレーションに関し論理関数発生器の同一のピン上で必要とされる場合には、コンフリクト即ち競合が発生する。特に、これらのマイクロレジスタが論理関数発生器の入力端子へ結合されている場合には、これらのマイクロレジスタへ供給される２つの信号は同一のコンフィギュレーション上で供給することは不可能である。
【００４０】
第三実施例においては、これらのマイクロレジスタは相互接続体内に位置されており、その場合に、使用可能である場合には信号がマイクロレジスタへ経路付けされ且つ必要とされる場合にはこれらのマイクロレジスタから経路付けされる。一実施例においては、これらのマイクロレジスタは計算を行なう論理関数発生器とは独立的に割当てられている。このような態様で、配置プログラムはコンフリクト即ち競合を有することのないマイクロレジスタのみを自動的に選択することが可能である。この実施例はデータ格納位置に関し最大の柔軟性を与えている。
【００４１】
第四実施例においては、これらのマイクロレジスタはコンフィギュレーションとは独立した格納位置内に位置されている。そのアドレス又はそのアドレスの一部はコンフィギュレーションビット又は配置位置とすることが可能である。この態様においては、維持されるべき値のみが格納され且つコンフリクト即ち競合を有することのない位置のみが選択される。
【００４２】
２．２  バスヒエラルキ
上述したように、従来のＦＰＧＡにおける各コンフィギュレーション即ち形態特定動作は１組のコンフィギュレーションメモリビットによって制御される。これらのコンフィギュレーションビットをロードするために使用されるバスは、典型的に、単一レベルのヒエラルキ即ち階層を形成し、垂直アドレス線がＣＬＢアレイの高さ全体にわたり、且つ水平なデータ線（グローバルバスとして呼称する）がアレイの幅全体にわたる。
【００４３】
本発明によれば、従来のコンフィギュレーションメモリビットの各々がＮ個のビットによって置換されている。これらのＮ個のビット、即ちメモリセルＭＣ０−ＭＣ７内に格納されているビットは、それらのローカルバス２０３を介しスイッチ７００を介して図７に示したようにグローバルバス７０１へ接続されている。ローカルバス２０３はメモリ機能装置７０３（即ち、ＣＬＢ又は相互接続構成体におけるプログラム可能点）を駆動するためにメモリセルＭＣ０−ＭＣ７へランダムに又は逐次的にアクセスすることが可能である。一実施例においては、スイッチ７００はトランジスタであり、一方その他の実施例においては、スイッチ７００は従来のバッファ型スイッチである。一実施例においては、各メモリセルＭＣは５トランジスタメモリセル１００（図１）を使用して実現される。その他のメモリセル実現例については以下に詳細に説明する。
【００４４】
ローカルバス２０３は各コンフィギュレーションに対するビットを担持するのでよりアクティブであり（ラッチ２０４に対して）、一方グローバルバス７０１はプレーン（スライスとも呼ばれる）をリコンフィギュア即ち再形態特定する場合又はユーザメモリ動作を実施する場合にのみアクティブである。ローカルバス２０３の容量は、小型のレイアウト及び電力及び速度に関して小型のトランジスタ寸法によって最小とされている。バス２０５はトランジスタ２０２に対してコンフィギュレーションセレクト（ＣＲＳ）信号を供給し、アドレスバス７０２はスイッチ７００へアドレス信号を供給する。
【００４５】
一実施例においては、ローカルバス２０３及びグローバルバス７０１は、所望により、真信号及びその相補的信号を担持する。例えば、メモリセルＭＣは従来の６トランジスタ（６Ｔ）メモリセル（それは当該技術分野において公知であり、従ってその詳細な説明は割愛する）で実現されている場合には、２つのローカルバス２０３Ａ及び２０３Ｂ、２つのスイッチ７００Ａ及び７００Ｂ、及び２つのグローバルバス７０１Ａ及び７０１Ｂは、典型的に、図７Ａに示した如くに使用され、その際に各ビット組２００Ａに対するトランジスタ数を増加させる。
【００４６】
ローカルバスからグローバルバスへの転送においては、その転送に参加するメモリセルＭＣはグローバルバス７０１当たり１個に過ぎない（従って、ＣＬＢアレイに対する一列のＭＣセル）。本発明に基づき、４個の列及び列当たり８０個のビット組を有する例示的なＣＬＢにおいては、１６×１６ＣＬＢアレイは６４個の列及び列当たり１２８０個のビット組を有するアレイを形成する。
【００４７】
２レベルヒエラルキの改良したものを図１７に示してあり、その場合には、２つのローカルバス１７０２Ａ及び１７０２Ｂが単一のグローバルバス１７０１上に多重化される。この改良の利点はグローバルバス線を減少させることである。注意すべきことであるが、その他の実施例においては（不図示）、２つを超えた数のローカルバスが単一のグローバルバス上へ多重化される。
【００４８】
３．  パワー節約
１個のチップ上に設けられるビット組２００の数が多い、即ち１６０，０００の程度であるために、ダイナミックな電力消費は著しいものである。４Ｔ，５Ｔ，６Ｔメモリセルのビット線容量、電圧の振れ及びクロックサイクル時間は異なるものである。更に、それらの夫々のバス線の電圧の振れの周波数も異なる。特に、図８及び９を参照すると、４Ｔセル８０１はローカルバスＬＢ及びＬＢＢ上の信号を高状態へ駆動することは不可能である。何故ならば、抵抗８０２はその抵抗値が高過ぎるからである。従って、ローカルバスＬＢ及びＬＢＢは、コンフィギュレーションを読取る度にプレチャージされねばならない（トランジスタ９０２Ａ及び９０２Ｂのゲートへ供給される低プレチャージ信号ＰＣＨＢを介して）。ローカルバスＬＢＢ上の信号はローカルバスＬＢ上の信号の反転したものであり、従って全てのサイクルに関して、ローカルバスＬＢ又はローカルバスＬＢＢのいずれかがメモリセル８０１のうちの１つによって放電される。従って、サイクル当たり１つの高及び１つの低遷移が存在しており、そのことはセンスアンプ９０１によって検知され、該アンプはメモリ機能装置７０３を駆動する。
【００４９】
対照的に、再度図７を参照すると、５Ｔメモリセルはローカルバス２０３を高状態及び低状態へ駆動することが可能であり、その際にプレチャージの必要性を取除いている（６Ｔセルもプレチャージを必要とするものではない）。逐次的なアクセスは異なるデータを有するのと同様に同一のデータを有する可能性があるので、５Ｔの場合に対する平均的バス遷移は１つ置きのサイクルである。６Ｔセルは２つのバスを有しているので、そのセルに対する平均的バス遷移は４Ｔセルのものと５Ｔセルのものとの間である。従って、５Ｔメモリセルは４Ｔセルが有するものの遷移数の１／４を有しており、一方６Ｔメモリセルは４Ｔセルが有する遷移数の半分を有している。各バス遷移はパワーすなわち電力を使用することに対応しているので、５Ｔセルは７５％だけ電力消費を減少させ、一方６Ｔセルは５０％だけ電力消費を減少させる。例えば、電源が５Ｖであり、電圧の振れが２Ｖであり、１６０Ｋのローカルバス２０３であり、ＣＬ＝０．０６ｐＦであり、１００ＭＨｚのクロック周波数であると仮定すると、４Ｔセル形態９０５（図９）を使用するチップの電力消費は１０ワットである。同一のパラメータを使用した場合に、ビット組２００（図７）を使用することにより、チップの電力消費は２．５ワットへ減少される。
【００５０】
チップメモリへのアクセスが行なわれる場合に電力が消費される。一実施例において電力を節約するために、メモリセルへのアクセスはＣＬＢに対するコンフィギュレーション当たり１ビットを持ったレジスタを付加することによって各コンフィギュレーションに対してＣＬＢ毎に制限される。ＣＬＢ７５０Ａ及び７５０Ｂを示した図７Ｂを参照すると、レジスタ７２００及び７２０１はメモリセル１０１（図１）である。これらのメモリセルの格納されている値は、本発明のコンフィギュレーション即ち形態特定に対するメモリセル２０１に対するセレクトトランジスタ２０２を制御する（説明の便宜上、２つのコンフィギュレーション、即ち「０」及び「１」コンフィギュレーションのみ、及び２つのビット組、即ちＡ及びＢビット組のみが図７Ｂに対して仮定されている）。特に、レジスタ７２００の値が低状態である場合には、ＡＮＤゲート７２１０は論理０出力信号を供給する。このような態様で、アクセストランジスタ２０２０Ａ及び２０２０Ｂはターンオンされることはなく、その際にＣＬＢ７０５Ａ内のメモリセル２０１０Ａ及び２０１０Ｂが読取られることがないことを確保し、その結果電力を節約している。ライン２０５Ａ上のＣＲＳ信号（図２）はグローバル組２０５から各ＣＬＢ内において局所的に発生され且つ制御レジスタビット７２０がセットされていない場合にはアサート即ち活性化されることはない。
【００５１】
コンフィギュレーションデータビットは読取られた後にラッチ２０４内に格納されるので、本ＦＰＧＡはコンフィギュレーションメモリの初期的な読取の後にその機能７０３を継続して実行する。ユーザデータ参照期間中にパワー散逸を制限するための付加的な手段は、アドレスされた列内のローカルバス線２０３のみが活性化されることを可能とする。典型的に、これはローカルバス線の６０分の１である。
【００５２】
４．  共用メモリ
本発明は、従来のＬＵＴメモリとは異なるタイプのユーザデータメモリを提供している。特に、メモリスライスの各々は、コンフィギュレーションデータか又は読取／書込（ユーザデータとも呼称される）メモリのいずれかに割当てられている。８個のメモリスライス全てを読取／書込メモリのために使用することが可能であるが、少なくとも１個のメモリスライスは初期的にはコンフィギュレーションデータを格納している。このコンフィギュレーションデータがラッチ２０４内に格納されると、コンフィギュレーションメモリはユーザデータのために再使用することが可能である。
【００５３】
コンフィギュレーションメモリスライスの一部は、コンフィギュレーションのその部分によって制御される論理が論理を実行しているコンフィギュレーションの残部の動作と干渉することがない場合には、ユーザデータのために使用することが可能である。コンフィギュレーションの一部の割当ては厄介な場合があるので、一実施例では各メモリスライス全体をコンフィギュレーションか又はユーザデータメモリへ割当てる。換言すると、メモリスライスがユーザデータメモリへ割当てられると、そのスライス内の全てのビットは読取／書込格納部、即ち全てのＣＬＢに対する全体的なコンフィギュレーションワードとして使用することが可能である。従って、本発明は、ユーザに対して豊富な格納部を使用可能なものとしている。例えば、２０×２０アレイのＣＬＢの場合には、ＲＡＭの約１６，０００バイトがメモリスライス毎に使用可能である。
【００５４】
図１１は本発明の一実施例のメモリのブロック図を示しており、その場合に、データバスＤｂｕｓ、メモリ１１０２、論理１１０１は、夫々、図７におけるグローバルバス７０１、メモリセルＭＣ０−ＭＣ７、機能（関数）装置７０３と等価である。アドレスバスＡｂｕｓ及びレジスタバスＲｂｕｓは一般論理及び相互接続体を使用してＣＬＢ１１００において形態が特定される。一般相互接続線は、ＣＬＢ１１００の周辺部に位置されている専用のレジスタへの経路付けを行なう。メモリアドレスレジスタＭＡＲ１１０５はメモリアドレスを保持し、一方メモリデータレジスタＭＤＲ１１０３はメモリデータを保持する。一般論理及び相互接続体はＡｂｕｓ／Ｒｂｕｓのために使用されるので、ユーザメモリをサポートするためにＣＬＢ１１００内において専用のメモリハードウエアは必要ではない。
【００５５】
ＭＤＲ１１０３の幅はプログラム可能であり、典型的な値は１，２又は４バイトである。列データレジスタＣＤＲ１１０８はＤｂｕｓ幅と同数のビットを有しており、典型的には、１６×１６ＣＬＢアレイに対しては２５６ビット幅である。ＣＤＲ１１０８を使用することにより、ＣＤＲ１１０８の転送毎にＭＤＲ１１０３の複数個の転送を行なうことが可能であり、その際に性能を向上させ且つＣＬＢ１１００における行デコードを減少させている。シフタ１１０４はＭＤＲ１１０３内のデータをＣＤＲ１１０８内の適切なバイトへシフトさせる。ＣＬＢ１１００の周辺部に位置されているメモリ制御器１１０６は入力信号ＲＣ（読取コマンド）、ＷＣ（書込コマンド）、ＢＵＲＳＴ（バーストコマンド）をＣＬＢ１１００内のユーザ論理から受取る。
【００５６】
図１５及び１６を参照して以下に説明するバースト読取（ＢＲ）及びバースト書込（ＢＷ）動作をサポートするための制御信号であるＢＵＲＳＴ信号は、ＣＤＲ転送毎の複数個のＭＤＲ転送をトリガする。バーストアクセスは隣接したアドレスに制限される。何故ならば、これはデータバスＤｂｕｓを介してメモリ１１０２とＣＤＲ１１０８との間で転送するデータだからである。
【００５７】
ユーザ論理１１０１はメモリアドレス、データ寸法識別子（図１１における論理１１０１によって発生されるＳＩＺＥ信号）、及びデータを発生し、次いでこれらのパラメータ（メモリに特定の論理なしで）をＭＡＲ１１０５、ＭＤＲ１１０３、ＣＬＢ１１００へ及びそれらから転送させる。ＭＡＲ１１０５、ＭＤＲ１１０３、ＣＤＲ１１０８、シフタ１１０４、メモリ制御器１１０６、アドレスデコード・タイミングブロック１１０７は、全て、チップの周辺部における専用のメモリハードウエアである。
【００５８】
図１２はＭＡＲ１１０５、メモリ制御器１１０６、アドレスデコード１１０７、ＭＤＲ１１０３、メモリ１１０２、ＣＤＲ１１０８の部分をより詳細に示している（全て「Ａ」で示してある）。シフタ１１０４は図１２において暗示されており、それにより、Ｖｂｕｓ１２０１に沿ってのＣＤＲセルが活性化される。３２ビット未満のデータ（即ち、１又は２バイト）はＲｂｕｓ１２０２、フリップフロップ１２１２、ラッチ１２０８上で右側に整列される。アライナ即ち整列器１２０６及び１２１１はデータを右側整列からＶｂｕｓ１２０１上でアドレス整列又はその逆に変換を行なう。
【００５９】
クロック信号μＣＬＫはチップ全体にわたり分布される高周波数の低スキュークロックである。そうであるから、μＣＬＫ（又は、それのイネーブルさせたもの）は、ＭＤＲセル１１０３Ａのような専用ハードウエア、単一クロックシーケンサ（図２２Ａに参照して詳細に説明する）、コンフィギュレーションラッチ２０４（図２）、ＣＬＢ常駐フリップフロップ３２２及び３２３のような形態特定可能ハードウエア及びローカルメモリ（図１２には示していないが、本明細書に取込んだ１９９４年ザイリンクスデータブック２頁乃至１３頁に詳細に記載されている）をクロック動作するために使用される。
【００６０】
本装置が論理エンジンモード（以下に詳細に説明する）で使用される場合には、全てのメモリスライス信号は所定数のμＣＬＫサイクルを有している。装置がタイムシェアリングモード（以下に詳細に説明する）で使用される場合には、任意の数のμＣＬＫサイクルに対して単一のコンフィギュレーションが活性状態にあるが、コンフィギュレーションスイッチングは未だにμＣＬＫに対して同期されている。従って、μＣＬＫは、論理エンジンモードにあるか又はタイムシェアリングモードにあるかに拘らず、メモリ参照用のクロックである。
【００６１】
ユーザが発生した信号であるＲＣ、ＷＣ、ＳＩＺＥ（即ち、転送されるべきバイト数を表わすマルチビット値）、ＢＵＲＳＴ、Ａｂｕｓはフリップフロップ１２１７においてμＣＬＫの上昇エッジ上で捕獲される。書込信号Ｗはメモリ制御器１１０６によって供給される。組合わせ論理１２１８はアドレス（Ａｂｕｓ）及びＳＩＺＥ信号をアドレス行（ＡＲｉ）及びアドレス列（ＡＣｊ，ＳＡＬＫ）選択信号へ変換する。信号ＡＲｉ，ＡＣｊ，ＳＥＬｋは、μＣＬＫサイクル内に発生する読取Ｒ、書込Ｗ、バースト読取ＢＲ、バースト書込ＢＷ、形態特定ＣＦＧ（図２２Ａ及び５２において更に詳細に説明するシーケンサによって供給される）信号パルスをイネーブルさせる。マルチプレクサ出力信号である信号ＳＥＬｋは、データメモリ及びコンフィギュレーション参照のために使用される。特に、信号ＳＥＬｋはメモリスライスを選択する。信号ＰＲＥＶはデコードしたアドレス信号である。
【００６２】
読取動作
メモリ読取動作の場合には、読取コマンド信号ＲＣ＝１が読取セレクト信号ＲＳＥＬ＝１とさせ（読取セレクト信号ＲＳＥＬは組合わせ論理１２１８によって供給される）、その際にトランジスタ２１３をターンオンさせ且つマルチプレクサ１２０７においてＶｂｕｓ１２０１を選択する。このような態様でＶｂｕｓ上の信号はラッチ１２０８内にラッチされ且つＲｂｕｓ１２０２上に駆動される（導通状態にあるトランジスタ１２１３を介して）。この読取動作期間中に、トランジスタ１２１５及び１２１６がターンオンされ、その際にメモリセルＭＣｉからローカルバス１２１４へ及びＤｂｕｓ１２０５へデータを転送させる。次いで、このデータはラッチ１２０９内へラッチされる。トランジスタ１２０４は、それが導通状態にある場合に、ラッチ１２０９内に格納されている信号をＶｂｕｓ１２０１上へ駆動する。
【００６３】
書込動作
メモリ書込動作の場合には、ＲＣ＝０がトランジスタ１２１３をターンオフさせ且つＲｂｕｓ１２０２上のデータ（フリップフロップ１２１２内に格納されている）が書込動作のためにＶｂｕｓ１２０１へ転送されるようにマルチプレクサ１２０７におけるフリップフロップ１２１２を選択する。この書込動作期間中に、トランジスタ１２０３，１２１６，１２１５はＶｂｕｓ１２０１からＤｂｕｓ１２０５へデータを転送し、Ｄｂｕｓ１２０５からローカルバス１２１４へ転送し、且つローカルバス１２１４からメモリセルＭＣｉへ転送する。この駆動は、メモリセルＭＣｉの試みによる駆動に打ち勝つのに充分に強いものである。一列内の選択したメモリセルＭＣｉのみが書き込まれ、その場合にこのような選択はトランジスタ１２０３によって制御される。特に、トランジスタ１２０３がアドレスＡｒｉに対してオフである場合には、Ｄｂｕｓ１２０５上の駆動のみがメモリセルＭＣｉによって供給されるものであり、従ってメモリセルＭＣｉ内の値は不変のまま溜まる。
【００６４】
非バースト読取動作（単一サイクル）
図１３は非バースト読取動作タイミング線図を示している。アドレスバスＡｂｕｓ上の信号がμＣＬＫ上昇エッジでサンプルされ、その際に１つのμＣＬＫサイクルに対し安定なＡＣｊ，Ａｒｉ信号を発生する。安定な信号ＡＣｊ，ＡｒｉはＲパルスをイネーブルさせ、それはメモリセルＭＣｉからローカルバス１２１４（図１２）へ、Ｄｂｕｓ１２０５へ、次いでＶｂｕｓ１２０１へのデータの伝搬を開始させる。このデータは、次いで、アライナ（整合器）１２０６によって整合され、マルチプレクサ１２０７を介して転送されラッチ１２０８内へラッチされ、導通状態にあるトランジスタ１２１３によって転送され、最後にＲｂｕｓ１２０２上に供給される。次いで、そのデータは図１３に示した如くμＣＬＫの２番目の上昇エッジでサンプルされる。従って、読取動作の場合には、１つのμＣＬＫサイクルにおけるＡｂｕｓ上のアドレス信号は次のμＣＬＫサイクル上でＲｂｕｓ１２０２上にデータを発生する。このデータは、μＣＬＫレートでデータを発生させるためにパイプライン動作させることが可能である。
【００６５】
（ｉ）ｕＣＬＫ信号がアドレスバスＡｂｕｓ上の信号と共にＭＡＲ１１０５をロードし且つ読取制御信号ＲＣがｕＣＬＫ信号と共にラッチされる。この時間における信号Ａｒｉ及びＡｃｊ（夫々、行アドレス及び列アドレス）がＭＡＲ１１０５の信号を反映する。ラッチした信号ＲＳＥＬは、レジスタバスＲｂｕｓではなくメモリ１１０２がラッチ１２０８をロードするようにＭＤＲ１１０３内のマルチプレクサ１２０７を制御する。［即ち、読取メモリデータをＣＬＢ論理内へ］
（ii）格納したデータメモリ１１０２は信号Ｒ＊ＡＣｊ＝１を受取った後にラッチ１２０９へ転送される。ラッチ１２０９は、信号Ｒ＊Ａｒｉ＝１である場合に垂直バス１２０１へ結合される。垂直バス１２０１は、信号Ｒ＝１でラッチ１２０８へ結合される。
【００６６】
非バースト書込動作
図１４は非バースト書込動作のタイミング線図を示している。Ａｂｕｓ上の信号がμＣＬＫの上昇エッジでサンプルされ、その際に１つのμＣＬＫサイクルに対し安定なＡＣｊ，ＡＲｉ（夫々、列及び行アドレス）を発生する。安定な信号ＡＣｊ，ＡＲｉは、Ｗパルスをイネーブルさせ、該パルスは、ラッチ１２０８からアライナ１２１１を介してＶｂｕｓ１２０１へ、導通状態にあるトランジスタ１２０３を介してＤｂｕｓ１２０５へ、導通状態にあるトランジスタ１２１６を介してローカルバス１２１４へ、トランジスタ１２１５を介してメモリセルＭＣｉへのデータの伝搬を開始させる。
【００６７】
（ｉ）ｕＣＬＫ信号はアドレスバスＡｂｕｓ内容上の信号と共にＭＡＲ１１０５をロードし、且つ信号ＲＣはｕＣＬＫ信号と共にフリップフロップ１２１７内へラッチされる。この時間における信号Ａｒｉ，ＡＣｊはＭＡＲ１１０５の信号を反映する。ＲＣ＝０のラッチされた信号は、メモリ１１０２ではなくレジスタバスＲｂｕｓがラッチ１２０８をロードするように、ＭＤＲ１１０３内のマルチプレクサ１２０７を制御する。信号ＷＣ＝１の場合には、その信号は信号Ｗを発生するシーケンスを開始させる。
【００６８】
（ii）ラッチ１２０８内に格納されている信号は、信号Ｗ＝１の場合に、垂直バス１２０１へ転送される。垂直バス１２０１上の信号は、信号Ｗ＊ＡＲｉ＝１の場合にデータバスＤｂｕｓへ転送される。
【００６９】
バースト読取動作
バースト読取（ＢＲ＝１）は、Ａｒｉが各読取動作と共に変化しながら、ＣＤＲロード当たりＣＤＲを複数回読取ることによって画定される。ＢＲ信号は性能を改善する。何故ならば、それはメモリセルＭＣｉからの同数の読取よりも高速だからである。
【００７０】
図１５はバースト読取動作のタイミング線図を示している。μＣｙ１期間中、読取パルスＲはメモリセルＭＣｉへアクセスする（Ｒパルスがトランジスタ１２１５のゲートを制御する図１２を参照）。
【００７１】
一実施例においては、読取アクセスはＣＬＢ当たり１６ビットをＣＬＢ列からＣＤＲ１１０８Ａ内へロードする。ＣＤＲ１１０８（図１１）は複数個のＣＤＲセル１１０８Ａを有しているので、爾後の読取がこれらのＣＤＲセルに対してのものである場合には、読取動作はメモリセルＭＣｉからではなくＣＤＲ１１０８から容易に実施することが可能である。従って、メモリセルＭＣｉはμＣｙ２乃至μＣｙ４に対して二度アクセスされる必要はなく、その際にこれらのサイクルを短縮化している。再度図１５を参照すると、信号ＢＲはデータビットｄ１，ｄ２，ｄ３へアクセスする（信号ＢＲは図１２のトランジスタ１２０４及びラッチ１２０８を制御する）。
【００７２】
バースト読取プロセスは以下のステップを有している。
【００７３】
（ｉ）マイクロサイクル０（ｕＣｙ０）期間中、ユーザはアドレスバスＡｂｕｓ上のアドレス信号ａ０−ａ３のアサート（活性化）を開始し且つ信号ＲＣ＝１を供給する。信号ＢＵＲＳＴ＝０は非バースト読取であることを意味している。これらの信号は次のｕＣＬＫの上昇エッジでサンプルされる。
【００７４】
（ii）ｕＣｙ１期間中、ｕＣｙ０においてアソートされた即ち活性化された信号ＲＣが実行される。データビットｄ０／ｄ１／ｄ２／ｄ３を包含するメモリ列全体（各データ「ビット」は複数個のビットを含んでいる）がデータビットｄ１／ｄ２／ｄ３を得るためにメモリ１１０２の代わりに現在アクセス可能なテンポラリレジスタＣＤＲ１１０８内へラッチされる。データビットｄ０もＭＤＲ１１０３へ供給される。ｕＣｙ１においてアソートされた両方の信号ＲＣ＝１＝ＢｕｒｓｔがマイクロサイクルｕＣｙ２においてＣＤＲ１１０８へアクセスする。
【００７５】
（iii ）ｕＣｙ２及びｕＣｙ３期間中、データビットは継続してアドレスＡｒｉに関してインクリメントし且つ信号ＲＣ＝１＝Ｂｕｒｓｔをアサートする。更に、ユーザは書込を行なう前に各サイクル毎にＭＤＲ１１０３を読み出さねばならない（Ｒｂｕｓ１２０２上）。
【００７６】
（iv）マイクロサイクルｕＣｙ４期間中、それは最後のサイクルであるが、ＲＣ＝０＝Ｂｕｒｓｔ（又は別の基準）の信号を発生する。
【００７７】
バースト書込動作
バースト書込（ＢＷ＝１）はメモリセルＭＣｉに対するＣＤＲ書込毎にＣＤＲ内に複数回書込を行なうことによって画定され、その際に全ての書込に関してメモリセルＭＣｉに対して書込を行なうことの必要性を取り除いている。
【００７８】
図１６はバースト書込動作のタイミング線図を示している。この動作期間中、フリップフロップ１２１２、マルチプレクサ１２０７、ラッチ１２０８、アライナ１２１１、最後にトランジスタ１２０３を介してのＲｂｕｓ１２０２からの複数サイクルのデータがラッチ１２０９（図１２）内へロードされる。信号ＡＲｉは図１６に示したようにシーケンス動作され、ラッチ１２０９内の複数個のデータ要素をアドレスする。マイクロサイクル４において、最後のデータ要素が、トランジスタ１２１９を介してメモリセルＭＣｉ内のＤｂｕｓ１２０５を駆動する前にロードしたＣＤＲデータと並列的に、メモリセルＭＣｉ内へＤｂｕｓ１２０５へのトランジスタ１２０３を介してリップル動作する。トランジスタを制御する信号、即ち信号Ｗ＊Ｐｒｅｖにおいて、前のバーストサイクルにおいてロードされているアドレスに対してＰｒｅｖは「１」に等しい。図１６において、Ｐｒｅｖ＝ａ０＋ａ１＋ａ２である。
【００７９】
バースト書込プロセスは以下のステップを有している。
【００８０】
（ｉ）ｕＣｙ０期間中、ユーザはアドレスバスＡｂｕｓ上のアドレス信号ａ０及びそのアドレスに対するレジスタバスＲｂｕｓ上のデータ信号ｄ０をアサート即ち活性化させる。両方の信号ともＷＣ＝Ｂｕｒｓｔ＝１である。
【００８１】
（ii）ｕＣｙ１期間中、ｕＣｙ０においてアサートされた信号ＷＣは実行される。データ信号ｄ０はアドレス信号ａ０によって決定されたＣＤＲ１１０８のバイト内へロードされる。同時的に、ユーザはアドレスバスＡｂｕｓ上のアドレス信号ａ１及びレジスタバスＲｂｕｓ上のデータ信号ｄ１をアサートする。
【００８２】
（iii ）ｕＣｙ２及びｕＣｙ３期間中、データ信号ｄ１及びｄ２はアドレス信号ａ１及びａ２によって決定されたＣＤＲ１１０８のバイト内へロードされる。ユーザはアドレスバスＡｂｕｓ上のアドレス信号ａ３及びａ４及びレジスタバスＲｂｕｓ上のデータ信号ｄ３及びｄ４をアサートする。ｕＣｙ３期間中、ユーザはＷＣ＝１をアサートするが、メモリ制御器１１０６をトリガするＢＵＲＳＴ＝０をリターンさせて、バースト動作期間中にＣＤＲ１１０８内へロードされた全てのバイトをｕＣｙ４においてメモリへ書き戻させる。
【００８３】
（iv）ｕＣｙ４期間中、それは最後のサイクルであるが、ＣＤＲ１１０８の修正したバイトが最終的なデータ要素と共にメモリセルＭＣｉへ書込まれる。ＣＤＲ１１０８の修正していないバイトはＣＤＲ１１０８からデータバスＤｂｕｓ上へ駆動することがないことによって書込まれることはない。
【００８４】
以下の説明は、どのようにしてコンフィギュレーションメモリアクセスがユーザメモリアクセスとインターリーブされるかを説明する。一例においては、コンフィギュレーションアクセスは信号ＣＲＳ０乃至ＣＲＳ７のサブセットであるＣＲＳｉ信号のシーケンスであり、一方ユーザメモリアクセスはコンフィギュレーションサブセット内に存在しないＣＳＲｊアクセスである。
【００８５】
図１８は図１７に示したコンフィギュレーションに対する書込動作のタイミング線図を示している。３つのマイクロサイクル（ｕＣｙ１，ｕＣｙ２，ｕＣｙ３）が図１８に示されており、各マイクロサイクルはＣＬＢアレイに対し異なるコンフィギュレーションを有している。アクセス信号ＣＲＳ１はｕＣｙ１に対するコンフィギュレーションを画定する。同様の態様で、アクセス信号ＣＲＳ２及びＣＲＳ３は、夫々、ｕＣｙ２及びｕＣｙ３に対するコンフィギュレーションを画定する。アサートした信号ＣＲＳ２及びＣＲＳ３の間において、ユーザアクセス信号ＣＲＳ７が与えられる。書込（Ｗ＝１）信号がこのユーザアクセス信号期間中にアサートされる。アドレス信号（Ａｂｕｓ上）及び書込データ信号（Ｒｂｕｓ上）はｕＣｙ１においてユーザ論理によって画定されており、それら両方を次のマイクロサイクルクロックでラッチし、従ってそれらはｕＣｙ２に対して使用可能である。８個のＣＲＳ信号の場合、３個のアドレスビットがユーザアクセスに対する信号ＣＲＳｎ（この例においてはＣＲＳ７）を選択するために使用される。各コンフィギュレーションはＭＤＲ１１０３（図１１）とインターフェースするそれ自身の組のレジスタを有している。
【００８６】
５．  チップレイアウト
本発明の一実施例によれば、時間多重型ＦＰＧＡ集積回路チップはザイリンクスＸＣ４０００（商標）ファミリィの装置のアーキテクチュアに基づいている。
図２３はチップレイアウトと同一のトポロジィを有するビット組２００（図２）の２×５アレイ２３００を示している。ビット組列２３００Ａ及び２３００Ｂは、両方とも、５個のラッチ出力線２３２０0 −２３２０4 を提供する。スプリッタトランジスタ２３０１Ａ及び２３０１Ｂ（夫々ライン７０２Ａ及び７０２Ｂ上のアドレス信号によって制御される）は、マルチプレクサトランジスタ２３０３及びスイッチ２３０２をビット組列２３００Ａ及び２３００Ｂの間で共用することを可能とし、一方全てのトランジスタ２３０１がターンオフされている場合に両方の列がラッチ２０４を並列的にロードすることを可能とする。信号Ｙ０乃至Ｙ４は、グローバルバス７０１転送に対してどの行が選択されるかを決定する。トランジスタ２３０２は、アレイ２３００の１ビット組列をグローバルバス７０１へ選択的に結合させることを可能とする。
【００８７】
図２４は３つの列、即ち列２４０１Ａ，２４０１Ｂ，２４０１Ｃを含むＣＬＢレイアウトを示しており、その場合に各列２４０１は１６個のアレイ２３００（図２３）を有している。列２４０１Ａ及び２４０１Ｃは隣接するＣＬＢ（不図示）で共用され、一方列２４０１ＢはＣＬＢ２４００によって使用される。２つの論理セクション、即ちＩＯ２４０３及びＣＬＥ２４０２が隣接するアレイ２３００のラッチ出力によって供給される。この実施例においては、各論理セクションは１６０個のラッチによって供給される。
【００８８】
６．  リコンフィギュレーション（再形態特定）
従来のＦＰＧＡリコンフィギュレーション、即ち再形態特定は、ＦＰＧＡの状態をリセットすることなしに、オフチップからの新たなコンフィギュレーションデータのローディングを行なっている。このことは、ＦＰＧＡが動作中に実施することが可能であり（ダイナミックリコンフィギュレーション即ち動的再形態特定）と呼ばれる）且つ全コンフィギュレーションデータパターンを再ロードする必要性なしにコンフィギュレーションのある部分に対してのみのものとすることが可能である（即ち、部分的再形態特定）。対照的に、本発明は、オンチップ即ちチップ上に複数個のコンフィギュレーション（形態）を格納する能力を与えることによって、従来のリコンフィギュレーション（再形態特定）モードのスーパーセットを画定する。
【００８９】
タイムシェアリングモードにおける一実施例において、ＦＰＧＡが第一コンフィギュレーションに基づいて動作し、一方部分的な又は全体的な新たな組のコンフィギュレーションデータがメモリスライスの１つ又はそれ以上のものの中へロードされる（オフチップから）。（注意すべきことであるが、この動作は、論理エンジンが８個のメモリスライスに等しいか又はそれ未満のものを使用する場合には、論理エンジンモードにおいても動作する。）次いで、フラッシュリコンフィギュレーション動作によって第二コンフィギュレーションデータが並列的に活性化される。この動作は、システムのブートアップの後に付加的なコンフィギュレーションデータがオフチップから持ち込まれるという点において、通常のフラッシュリコンフィギュレーションとは異なる。このオフチップ能力は、ユーザが、８個のみ（本発明の一実施例を参照して上述した）ではなく無制限の数のコンフィギュレーションの間で変更することを可能としている。クロック速度に依存して、リコンフィギュレーション（再形態特定）はオフチップから各新たなコンフィギュレーションワードをロードするのにミリ秒を必要とする場合がある。然しながら、注意すべきことであるが、ＦＰＧＡはこの時間期間中いまだに活性状態にある。専用のリコンフィギュレーションハードウエアがユーザメモリインターフェースのメモリアクセス機能を共用することが可能であるか、又はユーザ論理がリコンフィギュレーション（再形態）を制御することが可能であるか、又はその両方である。
【００９０】
７．  単一クロックシーケンサ
本発明によれば、シーケンサが、リコンフィギュレーション（再形態特定）を開始させ、リコンフィギュレーションを終了させ、且つコンフィギュレーションシーケンス動作を管理するための制御信号を発生する。好適には、シーケンサはユーザ論理によって制御されるか又はそれから形成され、その際に入力信号と出力信号の任意の組合わせを使用して論理を形成する場合にユーザが著しい柔軟性を有することを確保している。
【００９１】
７．１  コンフィギュレーションシーケンス動作
シーケンサは、プログラムすることによって次のコンフィギュレーション即ち形態を選択する。前述したように、次のコンフィギュレーションは逐次的に選択されるか、又はアドレスで直接選択される。そのアドレスは外部的に発生させるか（即ち、ＦＰＧＡチップのピンへ供給する）、又は内部的に発生させることが可能である。従って、次のアドレスは内部又は外部論理に関して条件付けすることが可能である。次のコンフィギュレーションへのスイッチは、外部信号、内部信号又はナノサイクルの数のカウントによって代替的に支配される（尚、ナノサイクルは２００ＭＨｚの程度の非常に高速の内部クロックである）。注意すべきことであるが、一実施例においては、シーケンス動作方法の選択は１つのコンフィギュレーションと次のコンフィギュレーションでは異なっている。
【００９２】
一実施例においては、ＦＰＧＡは複数個のシーケンサを有しており、その各々がＦＰＧＡの異なる部分を制御する。該シーケンサは、ロック（ｌｏｃｋ）ステップで動作し、単一のシーケンサをエミュレートするか、又は独立的に動作して、複数個のユーザクロックで動作することを可能とする。
【００９３】
論理エンジンモードにおける本発明によれば、フラッシュリコンフィギュレーション（即ち、メモリスライスのコンフィギュレーション）が２つの方法のうちの１つにおいて発生する。第一の方法においては、フラッシュリコンフィギュレーションは選択した入力信号（又はいずれかの入力信号）によってトリガされる。チップは、選択した組の入力信号のうちの１つが変化するまで（即ち、高状態又は低状態へ移行するまで）何等計算をすることなしに（低電力消費状態）待機する。この時点において、チップは、内部又は外部信号がストップ条件を表わすまで、１つの主要なサイクル（尚、１つの主要なサイクルは全てのリコンフィギュレーションを介しての完全な繰返しである）、固定した数の主要なサイクル、又は多数の主要なサイクル又はリコンフィギュレーションと関連するリコンフィギュレーションを実行する。
【００９４】
第二の方法においては、フラッシュリコンフィギュレーションは連続的なリコンフィギュレーションシーケンス動作を含んでいる。特に、チップは何等特定の外部信号を考慮することなしに全ての又は幾つかのリコンフィギュレーションを介して断続的にサイクル動作する。
【００９５】
７．２  コンフィギュレーション期間
論理エンジンモードにおいては、マイクロサイクル期間は、次のコンフィギュレーションへ進行する前に最も長いネットが安定化するのに充分に長いものでなければならない。本発明は、シーケンサにおける以下の代替物を提供している。
１．固定マイクロサイクル期間
全てのネット遅延はこの時間拘束条件を満足するのに充分に短いものでなければならない。一実施例においては、この時間拘束条件の実行はどのような可能な経路も予め設定した限界よりも長いものでないようにアーキテクチュア（即ち、ハードウエア）において行なわれる。別の実施例においては、その施行は時間制限を超えるネットを再経路付けすることによってソフトウエアで行なわれる。
【００９６】
２．設計毎の可変マイクロサイクル期間
特に、ユーザが正規のマイクロサイクルクロックを供給することを可能とする。
【００９７】
３．マイクロサイクル毎の可変マイクロサイクル期間
マイクロサイクル期間を変化するのには幾つかの方法がある。同期的方法においては、各マイクロサイクルコンフィギュレーションは期間フィールドを有している。このフィールドは固定した遅延を選択し、その場合に、固定した遅延の寸法は以下の方法のうちの１つによって設定される。
【００９８】
ａ．チップ内に遅延を構築する。
【００９９】
ｂ．チップがどのように配線されるかによって（即ち外部遅延回路）遅延を決定する。
【０１００】
ｃ．チップのコンフィギュレーション情報内に遅延を設定する。
【０１０１】
ｄ．マイクロサイクルにおけるナノサイクル数の各マイクロサイクルとカウントとを関連付ける。ナノサイクルはナノサイクルクロックと呼ばれる非常に高速の内部クロックのサイクルである。
【０１０２】
ｅ．外部トリガ、例えば、不規則的なパルスを有する外部マイクロサイクルクロックに基づいて１つのマイクロサイクルから次のマイクロサイクルへ進行する。
【０１０３】
ｆ．内部信号が到着する場合に次のマイクロサイクルへ進行し、その場合にその内部信号は、それがマイクロサイクルにおける最も遅い経路をトラバースするように経路付けされる。
【０１０４】
ｇ．インタラプトアドレス信号を使用して、マイクロサイクルシーケンスをトリガしてすぐさま新たなアドレスへジャンプし且つその点から動作を継続する。
【０１０５】
ｈ．シーケンサへ供給された内部信号に基づいて２つのアドレスのうちの１つを選択する。換言すると、この代替方法は次のマイクロサイクルへの条件付きジャンプを与える。別の実施例においては、複数個の内部信号が供給され、その場合に、各内部信号は異なる次のアドレスを選択する（即ち、マルチウエイ分岐）。所定のシーケンス動作の場合（即ち、コンフィギュレーションのスキップがない）、これらのビットは定数に対して配線されねばならない。更に別の実施例においては、次のアドレスはマイクロサイクルにおいてユーザ論理によって計算される。一実施例においては、シーケンサは現在のコンフィギュレーションを保存し且つそのコンフィギュレーション又は次のコンフィギュレーションへ復帰し、その際にサブセットのコンフィギュレーションに対しての「サブルーチンコール」を効果的に与える。
【０１０６】
論理エンジンモードにおいては、新たなメモリスライスに対する読取アクセス時間は、次のコンフィギュレーションに対するメモリの読取が現在のコンフィギュレーションの論理と並列的に行なわれるようにパイプライン動作され、その際にリコンフィギュレーション時間を最小としている。
【０１０７】
７．３  同期型ＦＰＧＡに対するマイクロサイクル発生
アナログ自己同期型回路は当該技術分野において公知である。図１９は従来のアナログ自己同期型回路１９１０を示しており、それはＡＮＤゲート１９０４及び３個のインバータ１９０５，１９０６，１９０７を有している。ＡＮＤゲート１９０４は信号１９００及び信号１９０１（信号１９００の反転されたもの）を受取る。図２０における回路１９１０の関連するタイミング線図に示したように、信号１９０１はインバータ１９０５によって多少遅延されている。ＡＮＤゲート１９０４は信号１９０２を出力し、その場合に信号１９００と１９０１の両方が高状態である場合にのみ信号１９０２は高状態である。信号１９０２は更に反転され、従ってインバータ１９０６及び１９０７によって二度遅延される。この二度遅延された信号１９０３を図２０に示してある。従って、回路１９１０は複数個のクロック、即ち信号１９０２及び１９０３を形成する。
【０１０８】
然しながら、回路１９１０はインバータ１９０５，１９０６又は１９０７の遅延を制御するためのフィードバックを与えるものではない。従って、該インバータによって与えられる遅延が小さすぎる場合には（典型的に、処理又は環境変動によって発生される）、信号１９０２及び１９０３のパルス幅は回路条件を満足するのには小さすぎるものとなる。このような態様で、外部クロック、即ち信号１９００が遅滞化しても、チップは動作することはない。換言すると、アナログ自己同期型回路は、それが機能障害を起こしている場合には、典型的に、どのような速度においても機能不全である。
【０１０９】
対照的に、本発明はデジタルタイミング割当を形成し、それはチップが動作上機能的なものとさせるために外部クロックをスローダウンさせることを可能とし、その際にアナログ自己同期型回路１９１０よりもより信頼性のある正確な複数個のクロックを供給する方法を提供している。一実施例においては、時間多重型ＦＰＧＡは、外部サイクル毎に複数個の内部サイクルが発生するように、外部クロック周波数の倍数である内部クロック周波数を与える。図２１を参照すると、外部クロック２１０１はフェーズロックループ（ＰＬＬ）２１０７に対してクロック信号を供給する。ＰＬＬ２１０７は、典型的に、位相検知器２１０２、ローパスフィルタ（ＬＰＦ）２１０３、オシレータ２１０４を有している。オシレータ２１０４は外部クロック２１０１によって与えられるクロック信号の倍数である周波数で動作する。
【０１１０】
分周器２１０５は、外部クロック２１０１によって与えられた信号周波数を近似するためにオシレータ周波数を分周する。外部クロック２１０１によって与えられた入力クロック信号に対してのこれらの出力信号の正確な同期を確保するために、フィードバック線２１０６が位相比較器２１０２へ結合されている。位相比較器２１０２は入力線２１０８上に与えらえた周波数とフィードバック線２１０６上の周波数とを比較する。位相比較器２１０２はこれら２つの周波数の間の位相差によって決定される出力位相エラー信号を発生する。ライン２１０６上の周波数がライン２１０８上の周波数と等しくない場合には、位相エラー信号は、ＬＰＦ２１０３（これはジッタを補正する）によってフィルタされた後に、オシレータ２１０４の周波数をライン２１０８上の周波数の方向へそらさせる。
【０１１１】
本発明によれば、高内部オシレータ周波数（即ち、５ナノ秒周期）は全ての内部サイクルをオシレータ周期の倍数とすることを可能とする。特に、オシレータ２１０４の周波数が高ければ高い程、可能な内部サイクルはより精細に同調され、即ちより短いものとなる。例えば、オシレータ２１０４が２００ＭＨｚ（即ち５ナノ秒周期）の周波数を与えるものと仮定すると、単一クロックシーケンサ（図２２Ａを参照して詳細に説明する）は５ナノ秒又はその倍数の内部サイクルを供給することが可能である。本発明においては、内部サイクルは等しいものである必要はないが、内部サイクルの全ての和は外部サイクルと等しい。
【０１１２】
コンフィギュレーションブロック２１０９からのコンフィギュレーションビットは、フィードバック線２１０６に対しての分周を選択するように分周器２１０５をプログラムし、その際に外部クロック２１０１の周波数範囲を拡張させる。分周器２１０５は従来の二進カウンタであって、分周器が０に到達するたびにコンフィギュレーションブロック２１０９によってプリセットされる。
【０１１３】
図２２Ａは本発明の一実施例における単一クロックシーケンサ２２０１を示しており、それはその動作を制御するためにＣＬＢ１１００からユーザが発生した信号を受取る。特に、ユーザが発生した信号ＪｕｍｐＣｏｍｍ（即ち、ユーザ論理から発生され且つ、例えば、マルチプレクサ３１５（図１３）によって与えられる）は、単一クロックシーケンサ２２０１に対してそのプログラムされたシーケンスのコンフィギュレーションからそれることを支持し、一方ユーザが発生した信号ＪｕｍｐＡｄｄｒ（典型的に３ビット）は、どのスライスへ単一クロックシーケンサ２２０１がジャンプするかを決定する。単一クロックシーケンサ２２０１はいつ及びどこへジャンプするかを決定する場合に論理１１０１を助けるために、ユーザ論理１１０１に対して現在のスライスアドレス信号ＣｕｒｒｅｎｔＡｄｄｒを供給する。
【０１１４】
単一クロックシーケンサ２２０１は、３つのフィールド、即ちＮｅｘｔＡｄｄｒ，ＪｕｍｐＥｎ，Ｄｕｒａｔｉｏｎへ分割されている複数個のビットを具備するシーケンステーブル２２０２を有している。ビットＮｅｘｔＡｄｄｒ０乃至ＮｅｘｔＡｄｄｒ７は夫々のメモリスライスに対するアドレスである（即ち、ＮｅｘｔＡｄｄｒ０はスライス０に対するもの等）。ビットＪｕｍｐＥｎ０乃至ＪｕｍｐＥｎ７は、ユーザジャンプコマンドをそのメモリスライスに対して実行すべきか否かを決定する。ビットＤｕｒａｔｉｏｎ０乃至Ｄｕｒａｔｉｏｎ７は、夫々のメモリスライスの期間を表示する。一実施例においては、シーケンステーブル２２０２のビットはコンフィギュレーションビットストリームによって供給され、一方その他の実施例においては、これらのビットはユーザ論理１１０１によって供給される。
【０１１５】
本発明によれば、単一クロックシーケンサ２２０１の動作はモードに依存するものである。例えば、
（ｉ）タイムシェアリングのみのモード又はタイムシェアリング＋スタティックモードにおいては、ｎａｎｏｃｌｏｃｋ（ｎＣＬＫ）はマイクロクロック（ｕＣＬＫ）へ等しく（タイムシェアリングモード信号ＴＳｍｏｄｅによって設定される）、且つコンフィギュレーションスイッチのみがユーザ論理ジャンプによるものである。この場合には、ＮｅｘｔＡｄｄｒは循環される。換言すると、次のアドレスは現在のアドレスである。
【０１１６】
（ii）いくらかのタイムシェアリングといくらかの論理エンジンＣＬＢが存在する混合モードをサポートする実施例においては、第二単一クロックシーケンサが必要となる。即ち、１つのシーケンサは論理エンジンモード用であり且つ別のシーケンサはタイムシェアリングモード用のシーケンステーブルのないものである。その実施例においては、各シーケンサ２２０１は別個のＪｕｍｐＣｏｍｍ及びＪｕｍｐＡｄｄｒ入力ビット及び別個のＣｕｒｒｅｎｔＡｄｄｒ出力ビットを有している。
【０１１７】
（iii ）論理エンジンモードのみ又は論理エンジン＋スタティックモードにおいては、単一クロックシーケンサ２２０１が使用される。
【０１１８】
注意すべきことであるが、図２２Ａに示した単一クロックシーケンサ２２０１は、例えば当該技術分野において公知な例えばリセット等の特徴を有しているが、その詳細な説明は割愛する。
【０１１９】
単一クロックシーケンサ２２０１の定常状態動作は以下のとおりである。
【０１２０】
（ｉ）スライス０の活性化期間中に、フリップフロップ２２０４は「０」を有しており且つアドレスデコーダ２２０３はシーケンステーブル２２０２からスライス０の値を選択する（即ち、ＮｅｘｔＡｄｄｒ０，ＪｕｍｐＥｎ０，Ｄｕｒａｔｉｏｎ０）。
【０１２１】
（ii）ＮｅｘｔＡｄｄｒ０は、ジャンプがとられない場合に、次のｕＣｙｃｌｅに対するメモリスライスの番号を与える。ＪｕｍｐＥｎ０はジャンプが可能であるか否かを決定する。従って、ＪｕｍｐＥｎ＝０である場合には、ＪｕｍｐＣｏｍｍは無視される。
【０１２２】
（iii ）ＪｕｍｐＥｎ０＝１である場合には、ユーザ論理１１０１（図１１）は３ビットアドレスＪｕｍｐＡｄｄｒを供給し且つＪｕｍｐＣｏｍｍ上でジャンプコマンドを発生することによって、次のコンフィギュレーションに対するメモリスライスアドレスを決定する。ユーザ論理１１０１はＣｕｒｒｅｎｔＡｄｄｒに関する現在のコンフィギュレーションアドレスを使用してＪｕｍｐＡｄｄｒを計算する（換言すると、ユーザ論理１１０１はアクティブ即ち活性状態にあるスライスに依存してジャンプを表示する）。
【０１２３】
（iv）カウンタ２２０５は現在のｕＣｙｃｌｅに対するナノサイクル即ちｎａｎｏｃｙｌｅをカウントする。例えば、カウンタ２２０５がＤｕｒａｔｉｏｎ０でロードされたと仮定すると、０へカウントダウンし（カウンタ２２０５上での「＝０」信号）、且つ新たなｕＣＬＫパルスを発生し、それはフリップフロップ２２０４をロードし且つ次のｕＣｙｃｌｅでプロセスを再開始する。
【０１２４】
本発明によれば、ユーザは、あるスライスに対するシーケンサテーブル２２０２内の選択したＮｅｘｔＡｄｄｒ信号が使用されないように、即ち８未満のシーケンスに対して、ＮｅｘｔＡｄｄｒ値をプログラムすることが可能である。３つのコンフィギュレーションのシーケンスに対するタイミングを図２２Ｂに示してある。特に、最初のｕＣｙｃｌｅ（ｕＣＬＫパルス２２１０によって示してある）は、３つのナノクロック２２１１を有しており、２番目のｕＣｙｃｌｅ（ｕＣＬＫパルス２２１２によって示してある）は５つのナノサイクル２２１３を有しており、且つ３番のｕＣｙｃｌｅ２２１４（ｕＣＬＫパルス２２１４によって示してある）は４個のナノサイクル２２１５を有している。注意すべきことであるが、ｕＣＬＫパルス２２１０は「２」のカウンタ値のローディングをトリガし、ｕＣＬＫパルス２２１２は「４」のカウンタ値のローディングをトリガし、且つｕＣＬＫパルス２２１４は「３」のカウンタ値のローディングをトリガする。ローディングの後に、各ナノサイクルパルスは「０」が発生されるまでカウンタ値を「１」だけ減少させる。０が発生されると次のｕＣＬＫパルスをトリガする。８．  動作モード
本発明に基づくＦＰＧＡは３つのモードで動作する。第一のモード、即ちタイムシェアリングモードにおいては、フラッシュリコンフィギュレーション当たり複数個のユーザサイクルが存在している（例えば、複数個のユーザクロックサイクルに対してＦＰＧＡは単一のコンフィギュレーションに溜まる）。フラッシュリコンフィギュレーション（再形態特定）は、通常、信号によってトリガされ、且つ典型的には予め定めたシーケンスのコンフィギュレーションは存在しない。第二のモードである論理エンジンモードにおいては、ユーザサイクル当たり複数個のフラッシュリコンフィギュレーション（マイクロサイクル）が存在している。このモードにおいては、フラッシュリコンフィギュレーションは、通常、予め定めたシーケンスのコンフィギュレーションで継続的にシーケンス動作される。第三のモードであるスタティックモードにおいては、多くのコンフィギュレーションが同一である。換言すると、ＦＰＧＡがリコンフィギュア即ち再形態特定が行なわれる場合に実行中の論理は同一のままであり、その際に永久的に常駐しているように見える。このモードにおいては、フラッシュリコンフィギュレーションは上述した方法のいずれかによってトリガされる。幾つかの実施例では１つのモードにおいて排他的に動作するが、他の実施例は逐次的か又は同時的かのいずれかにおいて複数個のモードで動作する。これらのモードの各々については以下に詳細に説明する。
【０１２５】
８．１  タイムシェアリングモード
図２５を参照すると、タイムシェアリングモードにおいては、ＦＰＧＡは、同時的に動作状態となることが必要ではない異なる機能をサポートするために、複数個のコンフィギュレーション２５００、即ちメモリスライス０−７でプログラムされる。図示した形状２５０１の各々は任意の寸法（例えば、ＣＬＢの数）及び形態（例えば、経路付け構成体）の論理関数を表わしている。論理関数２５０１Ａ−２５０１Ｈが図２５に示されている。１つのシーケンス動作において、ＦＰＧＡは初期的にある論理関数（例えば、２５０１Ａ）を実行すべくプログラムされており、次いでフラッシュリコンフィギュレーションによって再形態特定されて異なる論理関数（例えば、２５０１Ｈ）を実行する。ＦＰＧＡはユーザ論理において発生されるか又は外部ピンによって与えられる信号に応答していずれかの論理関数からいずれかのその他の論理関数へスイッチする。
【０１２６】
この実施例においては、ＦＰＧＡはオンチップ即ちチップ上に同時的に最大で８個の別個のコンフィギュレーションを格納する（各々は異なるメモリスライスに格納される）。フラッシュリコンフィギュレーションが発生すると、ＣＬＢの出力の状態が自動的に前述したマイクロレジスタ内へ格納され、その際にコンフィギュレーション間においてパラメータをパスさせることを可能としている。前に使用したコンフィギュレーションを再度呼ぶ場合には、コンフィギュレーション動作がそれが中断した箇所から再開することが可能であるように全ての以前の状態を回復することが可能である。
【０１２７】
図２５に示したように、各論理関数２５０１は所定数のゲートを必要とする。従来技術においては、例えば４００個のＣＬＢからなるアレイが１０，０００個のゲートの論理を実現していた。然しながら、本発明の時間多重能力によれば、最大で８０，０００個のゲートの論理を実現可能である（８×１０，０００）。図２５は、４００個のＣＬＢからなるアレイにおいて６２，０００個のゲートの論理が実現されている実施例を示している。
【０１２８】
図４を参照すると、ラッチされた信号ＱＯＬＤは、マイクロレジスタ３２４へ供給することに加えて、フリップフロップ３２２へも供給される。上述したタイムシェアリングモードにおいては、新たなコンフィギュレーションの最初のサイクル上で（それはアクティブグローバル信号ＦｉｒｓｔＣｙｃによって表わされる）、信号ＱＯＬＤはフリップフロップ３２２のＱ出力端子へ回復される。これと対比して、スタティックモードにおいては（セクション８．３参照）、信号ＦｉｒｓｔＣｙｃはコンフィギュレーションビットを具備するスタティックモードＣＬＢにおいて局所的に禁止され、その際に信号ＱＯＬＤがフリップフロップ３２２内へロードされることを防止する。特に、その他の周辺論理（不図示）は信号ＦｉｒｓｔＣｙｃを発生する。この信号は、コンフィギュレーションビットと共にゲート動作され、その際に信号ＦｉｒｓｔＣｙｃを禁止させるか又はアクティブ即ち活性な信号ＦｉｒｓｔＣｙｃを供給する。
【０１２９】
１つのコンフィギュレーションから別のコンフィギュレーションへ変化するビットによって制御されるライン上でグリッチが発生する場合がある。これらの可能性のあるグリッチはスタティックモードフリップフロップ接続を制限する。特に、組合わせ論理と対比して、殆どのフリップフロップ入力信号はグリッチがフリップフロップ状態を変化させることを防止するために常にグリッチがない状態に維持されねばならない。従って、例えばＣ及びＳＲ等の信号は、それらの供給源へ至るまでずっとグリッチのないものでなければならず、これらの経路上全てにおいてコンフィギュレーションビット制限を暗示している。更に、信号Ｄ及びＥＣはクロック信号Ｃと相対的なあるセットアップ及びホールド時間に関し有効なものである必要がある。非同期的クロックの場合には、信号Ｃはコンフィギュレーションスイッチング時間に対し何等関係を有するものではないので、信号Ｄ及びＥＣはコンフィギュレーションスイッチに基づく任意の時間においてグリッチを有することができず、その際に信号Ｃ及びＳＲと同一の制限を暗示している。
【０１３０】
８．２  論理エンジンモード
論理エンジンモードにおいては、ＦＰＧＡは、幾つかのステージに分かれた単一の大きな設計を実現すべくプログラムされており、各ステージは１つのコンフィギュレーションである。ＦＰＧＡは、典型的に、各論理部分を介しての信号伝搬速度と同等の速度で所定の順番で全てのコンフィギュレーションを介してシーケンス動作する。１つのコンフィギュレーションにおいて実行された論理の結果は後のコンフィギュレーションで使用するためにマイクロレジスタ内に格納される。この設計におけるフリップフロップ内に格納すべき結果はマイクロレジスタ内に格納され且つマイクロサイクルを介して後のパスにおいて使用される。このプロセスはＣＬＢの再使用のために従来のＦＰＧＡよりも遅いが、チップ容量は著しく増加される。
【０１３１】
このモードにおいて、各フラッシュリコンフィギュレーションは「マイクロサイクル」と呼ばれる。全てのマイクロサイクルを介しての１つの繰返しは「主要なサイクル」と呼ばれる。「ユーザサイクル」はユーザの最も速いクロックサイクルにおける時間である。典型的に、出力信号はユーザサイクル当たり一度アップデートされねばならない。簡単な場合においては、ユーザサイクルは主要なサイクルと同一である。全てのユーザ論理が同期的であり且つ一つのクロックのみが存在するか（「ユーザ」クロック）、又はその他の全てのクロックがユーザクロックから派生される場合には、そのユーザクロックは主要なサイクルと同一であるユーザサイクルを画定する。ユーザクロックは全てのコンフィギュレーションを介してシーケンス動作するマイクロサイクルをトリガするか、又はシーケンサは全てのマイクロサイクルを介して断続的にサイクル動作することが可能である。注意すべきことであるが、主要なサイクルはユーザクロックと同期させることが可能である（例えば、コンフィギュレーション０はユーザクロックの上方向遷移と同期させることが可能である）。
【０１３２】
典型的に、論理エンジンモードにおいては、ユーザの設計における組合わせ論理がＬＵＴ又はＦＰＧＡ上で使用可能な論理原始要素に分割される。あるデザイン（設計）におけるＬＵＴ「レベル」は以下の如くに定義される。フリップフロップ出力端子及びチップ入力ピンへの接続のみを有するＬＵＴのレベルは「１」であり、一方その他全てのＬＵＴのレベルはその入力信号を発生するＬＵＴの最も大きなレベルよりも１つ大きなものである。組合わせ論理サイクルはＬＵＴ出力信号に依存するＬＵＴ入力信号を無視することによって分解される。このデザイン（設計）における任意のＬＵＴの最も大きなレベルはこの設計の深さと呼ばれる。
【０１３３】
論理をマイクロサイクルへ分割する場合に、１つのＬＵＴから次のものへの直列接続は、その信号の供給を発生するＬＵＴは、その信号の全てのディスティネーション（宛先）よりも１つのマイクロサイクル先に（又は同一のマイクロサイクル）評価されねばならない。従って、各ＬＵＴはそのレベルに対応するマイクロサイクルにおいて評価され、その場合にＬＵＴ出力信号はマイクロレジスタ内に保持される。その設計のレベル及び深さは、その論理を評価するのに必要とされるマイクロサイクルの数を表わす。これらの制限については図２６及び３０を参照して後に説明する。
【０１３４】
前述したようにＬＵＴ及び相互接続体は、論理エンジンモードにおいては各マイクロサイクルに対して再形態特定が行なわれ、中間状態は後のマイクロサイクルにおいてアクセスするためにマイクロレジスタ内に保持される。図２６に示した例においては、５個の仮想ＬＵＴ２６０１−２６０５を必要とする回路設計が、単に３個の実際のＬＵＴを使用して実現されている。第一マイクロサイクル期間中、即ちμｃｙｃｌｅ  ０期間中に、ＬＵＴ２６０１−２６０３がコンフィギュア、即ち形態が特定され、ネット１−８から信号を受取り、且つネット９，１０，１１上にその結果を発生する。ネット９，１０，１１の状態は、マイクロレジスタ内にラッチされ、且つ第二マイクロサイクル、即ちμｃｙｃｌｅ  １に対応する新たなコンフィギュレーションワードが読取られる。μｃｙｃｌｅ  １において、ＬＵＴ２６０４は、μｃｙｃｌｅ  ０において前に使用したＬＵＴ３０２−３０４（図３）のうちの１つを再度使用することによって実現される。ネット１０及び１１へのアクセスは、出力マルチプレクサ３１３−３２０（図３）のうちの３つを介して行なわれる。同様の態様において、μｃｙｃｌｅ  ２において、ＬＵＴ３０２−３０４（図３）のうちの１つを再度使用することによって、ＬＵＴ２６０５が構成される。
【０１３５】
説明の便宜上、図２６は３つのマイクロサイクルを示しているに過ぎない。然しながら、８個のメモリスライスの全てがコンフィギュレーションデ−タのために使用されるものと仮定すると、本発明に基づくＦＰＧＡは最大で従来技術の回路と等価な論理の量の８倍の量を保持するものである。然しながら、実現される論理はクリティカルパス（臨界的経路）における論理レベルの数及びユーザクロック条件に依存して、より遅いものである。例えば、クリティカルパスが２つのレベルの深さに過ぎないが、回路設計は８個のマイクロサイクルを使用して実現される場合には、その回路設計は従来のＦＰＧＡで実現されたもの（又は、本明細書に詳細に説明したようにタイムシェアリング又はスタティックモードで）実現した設計よりも少なくとも４倍遅いものとなる。一方、回路設計がそのクリティカルパスにおいて８個又はそれ以上の論理レベルを有するものである場合には、本発明において実現したような設計は従来のＦＰＧＡよりもわずかに遅いものに過ぎない場合がある。従って、論理エンジンモードはある程度速度を犠牲にして著しい密度を得るものである。
【０１３６】
該設計の論理深さはＦＰＧＡ内に構築されたコンフィギュレーションの数と同一でない場合がある。例えば、該設計が単に３つのコンフィギュレーションを必要とするに過ぎない場合（即ち、計算が３つのコンフィギュレーションで完了）、シーケンサはその他のコンフィギュレーション（例えば、８個のコンフィギュレーションを有するＦＰＧＡにおけるコンフィギュレーション４乃至８）をスキップし且つ最初のコンフィギュレーションへ復帰する場合がある。このように、該論理の完了後（即ち、３番目のマイクロサイクル（μｃｙｃｌｅ２）の後）次のものの開始への待ち時間はより少ない（即ち、潜在的に、５サイクル後の代わりに次のマイクロサイクルにおいて）。従ってこの例においては、主要なサイクルは該設計に適合するように短縮化されている。一実施例においては、この各ユーザ設計に対して設定されるシーケンサ内のこの終了カウントはプログラム可能なレジスタ内に格納される。
【０１３７】
基本的なチップアーキテクチュアの場合、即ち「ｎ」マイクロサイクルアーキテクチュアの場合には、最大でｎ個のレベルの深さまでのユーザ設計のみが評価することが可能であるように見える。回路設計における平均経路深さは典型的に３個のレベルと４個のレベルとの間であるが、典型的な回路設計においては２，３の長い経路を有することは異常ではない。性能を改善するか又はユーザの設計が使用可能なマイクロサイクルの数よりも多くのレベルの論理を有する場合に設計に適合させるために、該設計の深さよりもより少ないマイクロサイクルに適合させるように設計を修正させることが可能である。本発明は、以下の代替的な解決方法を提供している。
【０１３８】
１．「バイパス」接続を使用してマイクロレジスタ周りに信号を指向させる（例えば、マルチプレクサ３１３−３１４（図３）へ供給される信号Ｇ参照）。これらの信号は、現在のマイクロサイクルにおいてその他の論理によって使用されるが、それらがマイクロレジスタ内に格納されていない限りその他のマイクロサイクルにおいて論理によって使用されることはない。
【０１３９】
２．マイクロレジスタはＦＰＧＡにおけるマイクロサイクルコンフィギュレーションの総数よりも多くの値を保持しており、その際に１つを超えた主要なサイクル前に発生された結果へアクセスすることを可能としている。該コンフィギュレーション（主要なサイクル）を介しての複数個のパスが該計算を完了するのに必要とされる。
【０１４０】
３．自走マイクロサイクルシーケンスを与え且つより長い計算の結果に関するイネーブルとしてユーザクロックを供給する。従って、この解決方法においては、ユーザサイクルは１つを超えた主要サイクルを有している。オプションとして、この解決方法はマイクロサイクルの数より長いマイクロサイクルシーケンスカウントを有しており、従って回路設計におけるマイクロサイクルの数はチップ内に組込んだ実際のマイクロサイクルの数の倍数である必要はない。
【０１４１】
解決方法３において、各ＬＵＴは各ユーザサイクルにおける複数個の主要なサイクルのうちの単に１つのみに関して使用される。その他の主要なサイクルに関しては、ＬＵＴは無視される値を計算する。従って、ユーザクロックは無視された値が格納されることがないことを確保するためのイネーブル信号として必要とされ、コンフィギュレーションビットはどの主要サイクルに関して結果を保存するかを表わすために必要とされ、且つグローバル信号はどの主要なサイクルがアクティブ即ち活性状態であるかを表わすために必要とされる。オプションとして、いつ結果及びグローバル活性信号を保存するかの表示は、ＦＰＧＡに関する論理で構成することが可能である。
【０１４２】
８．２ａ  複数個のクロック／非同期クロック動作
論理エンジンモードの上述した説明は単一のクロックを暗示しているが、多くのユーザ回路設計はこの制限を有するものではない。クロック動作される回路の２つの異なるカテゴリが存在しており、即ち複数個の関連したクロック及び関連していない（非同期）クロックである。
【０１４３】
回路設計が１つを超えた数のクロックを有しており且つ全てのクロックが最も速いクロックの倍数である場合には、最も速いクロックはユーザクロックとして実現され、且つその他の全てのクロックはマイクロサイクルレジスタイネーブル信号で実現される。例えば、図３９及び３９Ａを参照すると、遅いクロック信号ＳＣ（状態３９０１において決定される）の上昇エッジの後可及的速やかに、遅いクロックイネーブル信号ＳＣＥがアクティブ即ち活性状態（状態３９０２）へ移行し且つ１つの主要サイクルの間アクティブ即ち活性状態に溜まる。１つの主要サイクルの後（主要なクロック信号ＭＣによって決定される）、遅いクロックが低状態へ移行し（ステップ３９０３）且つシステムは遅いクロックＳＣが０へ復帰する場合の遅いクロックの上昇エッジ（状態３９０１）を待機する状態に復帰する。イネーブル信号状態マシンは、オンチップの特別目的論理として与えられるか又はＣＬＢにおいてＦＰＧＡ論理から構築される。この技術は、最も速いクロックの倍数ではないより遅いクロックを実現するために使用することも可能である。
【０１４４】
例えば、図２７はユーザの設計の一部を示しており、その場合に、フリップフロップ２７００はクロックゲート動作回路２７０１からクロック信号を受取る。この実施例においては、クロックゲート動作回路２７０１はＡＮＤゲート２７０２を有しており、該ゲートはクロック２７０３及びイネーブル回路２７０４から入力信号を受取る。このように、フリップフロップ２７００のクロック端子Ｋは、クロック２７０３及びイネーブル回路２７０４からの両方の信号が論理高である場合にのみ、ＡＮＤゲート２７０２からイネーブル信号を受取る。クロック２７０３は主要なサイクル毎に信号を供給する（即ち、ＰＬＤにおける最も速いユーザクロック信号を供給する）。１つの例示的なユーザ設計においては、イネーブル回路２７０４は主要なサイクル毎に信号を供給する。従って、クロックゲート動作回路２７０１がユーザの設計したフリップフロップ２７００へ結合されているものとして識別される場合には、２つの重要な情報が決定される。第一に、クロック２７０３によって供給される信号（ユーザクロック）及びフリップフロップ２７００のクロック端子Ｋへ供給される信号は関連しており、且つ、第二に、フリップフロップ２７００のクロック端子Ｋへ供給される信号はユーザクロックよりも遅いものである。従って、より遅いクロック信号が識別される。このより遅い信号がマイクロレジスタイネーブルでクロックイネーブルピンへ供給されるようにユーザの設計を最適化させることが可能であり、その場合にはＡＮＤゲート２７０２を除去している。
【０１４５】
別の実施例においては、ライブラリ要素（ゲート、フリップフロップ又はその他の論理関数）がクロックの分割即ち分周を特定する（換言すると、エンドユーザによって選択されるマイクロクロックを識別する）。図２８は例示的なライブラリ要素２８０２Ａ，２８０２Ｂ，２８０２Ｃ及びそれらのマイクロサイクルクロック２８０１に対する関係を示している。特に、ライブラリ要素２８０２Ｂは、クロック信号ＣＬＫが８によって分周されることを特定し、その際に出力信号ＣＬＫ８を与える。最後に、一般的ライブラリ要素２８０２Ｎが、クロック信号ＣＬＫがＮによって分周されることを特定し、その場合にＮはユーザによって与えられる数である。然しながら、この実施例においてはユーザの設計がクロック分周器を使用しているが、本発明は、典型的に、図２７に示した態様でクロック分周器を実現する。換言すると、クロック２８０１はマイクロサイクルクロック信号を供給し、且つライブラリ要素２８０２Ａ−２８０２Ｎと関連する分周器はイネーブル信号を供給する。
【０１４６】
出力信号ＣＬＫ１０，ＣＬＫ８，ＣＬＫＮは、概略的捕獲期間中にユーザによって決定されるフリップフロップ（不図示）のクロック入力端子へ供給される信号である。図２９に示した一実施例においては、これらの信号は、分周信号、例えば出力線２８０８上の分周信号を図３９に示した状態マシンに従って動作する回路２９１１へ供給することによって実現される。回路２９１１はマイクロレジスタ２９１０のイネーブルＥＮピンへ遅いクロックイネーブル信号を供給する。
高速論理の一部は、例えば、システム全体としての速度の２倍乃至４倍で走る場合がある。本発明においては、この論理は例えば、マイクロサイクル１−４、次いで、再度、マイクロサイクル５−８において複製され且つ実現される。この実現、即ち高速クロックの２つのサイクルを単一の主要なサイクルへ適合させることは、論理の残部に関して高速論理の速度を２倍とさせる。
【０１４７】
８．２ｂ  論理エンジンモード／マイクロサイクルシーケンス動作用シーケンサシーケンサは、元のコンフィギュレーションからの入力及びユーザが発生した信号を取りながらマイクロサイクルを介してシーケンス動作する。回路設計の最良の性能のためには、マイクロサイクルは可及的に短い期間から構成する。マイクロサイクルの期間は、
１．コンフィギュレーションメモリからのマイクロサイクルコンフィギュレーションの読取、
２．ＬＵＴへの信号の伝搬、
３．ＬＵＴの評価、
４．次のマイクロサイクルに対するマイクロレジスタのセットアップ、
を行なうために必要とされる時間の量によって設定される。
【０１４８】
複数個のレベルの論理が１つのマイクロサイクルで評価される場合にはステップ２及び３が繰返し行なわれる（注意すべきであるが、ステップ１の待ち時間は、パイプラインラッチによって隠すことが可能であり、従ってそれはμｃｙｃｌｅ期間に貢献することはない）。
【０１４９】
ＦＰＧＡ内に設けられる論理は、高速論理、即ちその動作を迅速に実行する論理、及びより遅い論理、即ちその動作を完了するために著しくより多くの時間（高速論理によって必要とされる時間と比較して）を必要とする論理へ分割することが可能である。本発明の一実施例によれば、高速論理はそれがいずれかの主要なサイクルにおいて少なくとも２回評価されるように所定のマイクロサイクルにおいて複数回評価される。この評価は、繰返し技術（図３３を参照して説明する）又はサブルーチン技術（図３４を参照して説明する）を使用して行なわれる。換言すると、高速論理が低速論理のクロック速度の２倍の速度を有するものと仮定する。この例においては、主要なサイクルは低速論理のクロック速度に設定され、その場合に、高速論理は主要サイクル毎に２度実行する。
【０１５０】
図３３は時間に関して、特にマイクロサイクル３３０１−３３０５を介してのＣＬＢ１−５の表示を示している。前述したように、各ＣＬＢ１−５は、典型的に、各マイクロサイクル３３０１−３３０５に対して異なるコンフィギュレーション（形態）を有している。陰線の付けた区域３３０６は、矢印３３１０によって示したように、各主要なサイクルにおいて複数回評価されるべき論理を表わしている。
【０１５１】
特に、この実施例においては、マイクロサイクル３３０２がマイクロサイクル３３０１に追従している。マイクロサイクル３３０２と関連するコンフィギュレーションを完了した後に、高速論理はマイクロサイクル３３０１（矢印３３１０で示してある）と関連するコンフィギュレーションへ復帰することを表わす次のマイクロサイクルアドレスを発生する。マイクロサイクル３３０１及び３３０２と関連するＣＬＢ１−５に対するコンフィギュレーションが繰返される。一実施例においては、繰返しカウントは例えば２等の固定数である。その実施例においては、ＣＬＢ１−５はマイクロサイクル３３０１及び３３０２期間中に４回リコンフィギュア即ち再形態特定が行なわれる（即ち、３３０１，３３０２，３３０１，３３０２，３３０３．．．）。
【０１５２】
別の実施例においては、マイクロサイクル３３０１及び３３０２と関連するコンフィギュレーションは、ある条件（条件付き分岐論理へ供給される）が充足されるまで繰返される。マイクロサイクル３３０１及び３３０２が適宜の回数繰返された後に、マイクロサイクル３３０３，３３０４，３３０５は逐次的に追従する（即ち、（３３０１，３３０２）．．．（３３０１，３３０２），３３０３，３３０４，３３０５））。従って、マイクロサイクル３３０１及び３３０２と関連する論理は、マイクロサイクル３３０３，３３０４，３３０５と関連する論理よりも多数回評価される。マイクロサイクル３３０１及び３３０２と関連する論理はマイクロサイクル３３０３，３３０４，３３０５と関連する論理よりもより多数回評価されるので、該論理はより速い応答を有しており従ってより高速で走るように見える。従って、マイクロサイクル３３０１及び３３０２を介しての繰返しは、典型的に、主要なサイクル当たり多数回発生し、一方、マイクロサイクル３３０３，３３０４，３３０５を介してのシーケンスは、典型的に、主要なサイクル当たり１回発生する。
【０１５３】
一方、別の実施例においては、高速論理はサブルーチンコールに類似したものである。換言すると、サブルーチンはマイクロサイクルシーケンスにおける任意の場所において選択的にコールされ、且つ元のマイクロサイクルシーケンスへリターンする。図３４はマイクロサイクル３４０１，３４０５を介してのＣＬＢ１−５の表示を示している。この実施例においては、マイクロサイクル３４０１と関連するＣＬＢ１−ＣＬＢ５の低速論理コンフィギュレーションの後に、マイクロサイクル３４０４及び３４０５と関連する高速論理コンフィギュレーションがコールされ（矢印３４１０で表わしてある）且つ解析される。マイクロサイクル３４０５の完了の後に、プログラムはリターンして（矢印３４１１で表わしてある）マイクロサイクル３４０２において与えられた低速論理コンフィギュレーションを解析する。従って、プログラムは再度マイクロサイクル３４０４及び３４０５において高速論理コンフィギュレーションをコールする（矢印３４１２で表わしてある）。マイクロサイクル３４０５の完了後、プログラムはリターンし（矢印３４１３で表わしてある）マイクロサイクル３４０３において低速論理コンフィギュレーションを解析する。最後に、プログラムは、シーケンス全体を繰返すために、マイクロサイクル３４０１へリターンする（矢印３４１４で表わしてある）。従って、この実施例においては、プログラムは、マイクロサイクル３４０１，３４０４，３４０５，３４０２，３４０４，３４０５，３４０３と関連する論理コンフィギュレーションシーケンスに従う。
【０１５４】
８．２ｃ  スケジューラ
ユーザの設計における論理の論理エンジンモードにおけるコンフィギュレーションスライスへの割当はスケジューリングと呼ばれる。スケジューリングは手動的に行なうことが可能であるが、より便宜的にはスケジューラと呼ばれるプログラムによって自動的に行なわれる。
【０１５５】
スケジューリングは任意的なものではない。例えば回路２６における回路等の回路が１つの主要なサイクルにおいて正しい結果を発生するためには、各ＬＵＴは、それに対して入力信号を発生する全てのＬＵＴよりも速くないようにマイクロサイクルにおいてスケジューリングがなされねばならない。更に、フリップフロップに対して２つの条件が存在している。第一に、各フリップフロップはそのＬＵＴに対する入力信号を発生する全てのＬＵＴよりも速くないようにマイクロサイクルにおいてスケジューリングされねばならない。第二に、各フリップフロップは、それを駆動する全てのＬＵＴ又はフリップフロップよりも速くないようにマイクロサイクルにおいてスケジューリングされねばならない。
【０１５６】
図２６Ｂを参照すると、フリップフロップ２６１１は第二の条件を満足する、即ちＬＵＴ２６１０（この場合には、ＬＵＴ２６１０と同一のマイクロサイクルｎ内にある）よりも速くないようにスケジューリングされている。従って、ＬＵＴ２６１０は前のユーザサイクルからフリップフロップから２６１１の値をとる。このように、フリップフロップ２６１１の出力信号はマイクロサイクルｎ＋１まで変化することはない。従って、フリップフロップ２６１１はマイクロサイクルｎの終了時にＬＵＴ２６１０の入力信号に対してサンプルされる。注意すべきことであるが、フリップフロップ２６１１は後のマイクロサイクルにおいてスケジューリングすることが可能であったものであり且つＬＵＴ２６１０はより速いマイクロサイクルにおいてスケジューリングすることが可能であったものである。更に、フリップフロップ２６１２は第一の条件を満足する。即ち、ＬＵＴ２６１０よりも速くないようにマイクロサイクルにおいてスケジューリングされている（この場合には、後のマイクロサイクルにおいてスケジューリングされている）。フリップフロップ２６１２もマイクロサイクルｎ内にスケジューリングすることが可能であったものであり又はマイクロサイクルｎ＋１の後のマイクロサイクルにおいてスケジューリングすることが可能であったものである。
【０１５７】
論理エンジンモードにおける本発明によれば、ソフトウエアプログラム（以後、「スケジューラ」と呼ぶ）が設計中のクリティカルパスを識別するためのレベライゼーション（ｌｅｖｅｌｉｚａｔｉｏｎ）即ちレベル化と呼ばれる技術を使用する。最も簡単な場合においては、該設計は全てのフリップフロップが同一のクロック信号によって同期される同期型設計であると仮定される（注意すべきことであるが、マルチクロック設計のクロックイネーブル信号を有する単一クロック設計への変換についてはセクション８．２ｆにおいて後に詳細に説明する）。最初の（最も低い番号）マイクロサイクルはユーザクロックの上昇エッジと同期される。全ての組合わせ論理が評価され且つ全てのフリップフロップ値が該コンフィギュレーションを介しての１つのパスにおいてアップデートされる。各ユーザクロックサイクルは全てのマイクロサイクルの評価を行なう。
【０１５８】
単に１つのＬＵＴ又はＣＬＢの組合わせ論理が各マイクロサイクルにおいて評価されるものと仮定すると（換言すると、マイクロサイクル当たり１つを超えたＬＵＴを介して伝搬が発生することがない）、１つのマイクロサイクル期間は、１つのＬＵＴ遅延＋入力信号をＬＵＴ入力端子へ転送するための相互接続遅延から構成されている。マイクロレジスタは後のマイクロサイクルにおいて使用するために組合わせ論理中間値を保持する。マイクロレジスタは、更に、マイクロサイクルを介しての次のパス上で評価される次のユーザサイクルにおいて使用するためのフリップフロップ値を保持する。
【０１５９】
これらの拘束条件が与えられると、該設計はレベライゼーションアルゴリズムを使用してスケジューリングすることが可能である。特にチップ入力ピン又はフリップフロップからのみ入力信号をとる各ＬＵＴはレベル１が与えられる。その他のＬＵＴはいずれかの入力の最も大きいレベルよりも１つ大きなレベル番号が与えられる。この技術は可及的速やかなスケジュールを発生する。
【０１６０】
図２６に示した可及的速やかスケジューリングは、全ての入力信号がレディ即ち準備されるや否や各ＬＵＴをスケジューリングする。図３０に示した可及的に遅いスケジューリングは、その出力信号が要求される前にマイクロサイクルにおいて各ＬＵＴをスケージューリングする。その他のスケジューリングも可能であり、例えば、各マイクロサイクルにおいて必要とされるＬＵＴの数を減少させるためにマイクロサイクルの数を増加させるもの等がある。例えば、図２６において、スケジューラが５個のマイクロサイクルを使用することが許容される場合には、スケジューラはそれ自身のマイクロサイクルにおいて各ＬＵＴをスケジューリングすることが可能であり、全ての結果をマイクロレジスタ内に保存し、且つ前のマイクロサイクル期間中にマイクレジスタ内の格納した結果を入力信号として使用することが可能である。このように、該設計を構築するのに単に１つの実際のＬＵＴが必要とされるに過ぎない。
【０１６１】
レベライゼーションは部分的な評価を与えるものであるが、クリティカル即ち臨界的な遅延経路上にないＬＵＴに対する部分的な評価には著しい余裕が存在している。このために、スケジューラはクリティカルパス内にないＬＵＴを識別し且つマイクロサイクル当たり必要とされるＬＵＴの数を最小とさせるためにそれらの評価をその他のマイクロサイクル内へ再スケジュールすることが可能である。例えば、図２６と図３０とを比較すると、ＬＵＴ２６０１はマイクロサイクル１期間中に評価されるべく再スケジュールされている（スケジューラによって）。このようにすることによって、回路設計を実現するために必要とされる物理的なＬＵＴの数は３個から２個へ減少される。ＬＵＴ２６０１はクリティカルパス即ち臨界的経路内にはないので、そのＬＵＴをマイクロサイクル１内へ再度スケジューリングすることは回路性能に影響を与えるものではない。
【０１６２】
最適化方法がスケジューリングを改善することが可能であり、即ち（ｉ）いずれかのマイクロサイクルにおいて必要とされる実際のＬＵＴの数を最小とさせ、（ii）各ネットが表われる毎にマイクロサイクルの数を最小とさせ、且つ（iii ）同一のマイクロサイクル内に経路付けされた各ネットのピン数を最大とすることによって改善することが可能である。
【０１６３】
スケジューリングを最適化するための方法、即ちリストスケジューリングとして知られる技術の変形例について図４０を参照して説明する。
【０１６４】
１．最初のマイクロサイクルでスタートする（ステップ４００１）。
【０１６５】
２．このマイクロサイクルにおいてスケジュールすることの可能な全ての
ＬＵＴを識別する（ステップ４００２）。即ち、その入力信号がチップ入力ピン、フリップフロップ出力端子、又はより先のマイクロサイクルにおいて既にスケジューリングされている入力信号を発生する全てのＬＵＴを持ったＬＵＴから来る入力信号を受取るＬＵＴを識別する。
【０１６６】
３．以下の点に基づいてＬＵＴを優先度で順番付けする（ステップ
４００３）。
【０１６７】
ａ．タイミング：ＬＵＴの可及的に遅いスケジューリングによって決定されて、最も速い又は最も遅いスケジュールを有するＬＵＴが最初である。
ｂ．ネット：その他の全てのデスティネーションＬＵＴが既にスケジューリングされている入力ネットを有するＬＵＴ。
【０１６８】
ｃ．ピン：そのディスティネーションインスタンスのうちの少なくとも１つがスケジューリングされているネット上の１個のピンを有するＬＵＴ。
ｄ．可能なネット：リスト内の先のＬＵＴを付加することによってこのマイクロサイクルにおいて導入させることの可能なネットを完成するＬＵＴ。
【０１６９】
ｅ．可能なピン：リスト内の先のＬＵＴを付加することによってこのマイクロサイクル内に導入することの可能なネット上に１個のピンを有するＬＵＴ。
【０１７０】
４．最も高い優先度を有するｍ個のＬＵＴを選択し、尚ｍはＦＰＧＡにおける実際のＬＵＴの数である。これらｍ個のＬＵＴを現在のマイクロサイクル番号の符号を付ける。それらを識別したＬＵＴのリストから取除く（ステップ４００４）。
【０１７１】
５．次のマイクロサイクルへ移行する（ステップ４００５）。
【０１７２】
６．いまだにスケジューリングしていないＬＵＴが存在する場合には（ステップ４００６）、ステップ４００２へ移行し、そうでない場合には終了する（ステップ４００７）。
【０１７３】
別の実施例においては、ｍ個のＬＵＴは一度に１個選択され、その場合には、ステップ４００３は各選択の後に再度実行される。この実施例は低速であるが、各選択の後にＬＵＴの順番付けをすることは、より少ない数のマイクロサイクルを使用する結果となるか又は配置させ且つ経路付けすることがより簡単となる。
８．２ｄ  スケジューリング圧縮
クリティカルパスにおける論理のレベル数がＦＰＧＡ設計が実現されるコンフィギュレーションの数よりも大きい場合には、スケジューラはクリティカルパスを圧縮させる。図２６Ａを参照すると、２つのＬＵＴ、即ちＬＵＴ２６０４及び２６０５を同一のマイクロサイクル、即ちマイクロサイクル１において直列的に接続させるためにマイクロレジスタバイパスを使用してクリティカルパス上のレベルの対を単一レベルへ合体させる。一実施例においては、圧縮はクリティカルパス上のＬＵＴの数の最小の拡張に基づいて、合体すべき対を選択する。
【０１７４】
８．２ｅ  同時的スケジューリング及び配置
１つのコンフィギュレーションにおける論理は、その他のコンフィギュレーションにおける同一のＬＵＴにおいて発生される固定数の信号を超えてアクセスすることはできない。この制限はスケジューリング（コンフィギュレーション）と配置（実際のＬＵＴ）との間の拘束条件であり、そのことはこれらのプロセスを分離することを困難又は非現実的なものとしている。
【０１７５】
上述した説明においてはＬＵＴをスケジューリングするためにＬＵＴをレベル化することについて説明したが、スケジューリングによって課される拘束条件はプレースメント即ち配置及び経路付け可能性に悪影響を与える場合がある。従って、一実施例においては、スケジューリング及びプレースメント（配置）は同時的に行なわれる。
【０１７６】
以下の表Ａは、標準的なＦＰＧＡ、「簡単な」時間多重型ＦＰＧＡ設計プロセス、及び「より良い」時間多重型ＦＰＧＡ設計プロセスに対するスタンダードなＦＰＧＡ回路設計プロセスを比較している。
【０１７７】
0003729943.tif 000002
標準ＦＰＧＡプロセスにおいては、回路設計エントリの後、回路設計が最適化され且つＦＰＧＡ上で使用可能な物理的資源に対してマッピングが行なわれる（例えば、組合わせ論理に対するＬＵＴ）。最適化は当業者にとって公知であるが、それは設計におけるＬＵＴを最小とするための組合わせ論理の作り直し、及び長い組合わせ論理経路を短くするための再計時を行なうことを包含する。次いで、ＦＰＧＡ資源は、ユーザの論理における各関数を実現するために使用される実際の資源を選択するために配置され且つこれらの資源を接続するための経路付けが行なわれる。
【０１７８】
プロセス設計流れをタイムシェアリングＦＰＧＡで実現するための簡単な方法は、テクノロジマッピングの後であるがプレースメント（配置）の前にスケジュールステップを付加することである。このスケジュールステップは、設計内の各ＬＵＴのマイクロサイクルを決定し、その際に該設計をＮ個の配置及び経路付け問題へ分割することを可能とする（尚、Ｎは該設計によって使用されるマイクロサイクルの数である）。
【０１７９】
スケジュール及び配置ステップは互いに依存している。特に、スケジュールステップは、各マイクロサイクル期間中にどのネットが必要とされるかを決定する。明らかに、接続されるべきネットの数又はピンの数が減少されると、プレースメント即ち配置はそれに対応してより簡単なものとなる。
【０１８０】
特定のマイクロサイクルｎにおいて与えられるＬＵＴの出力信号はその他のマイクロサイクル（例えば、ｎ＋１）における入力信号として使用される。従って、これらｎ個の配置のうちの１つにおける全てのネットの供給源の位置はその他のマイクロサイクルにおけるＬＵＴの配置によって決定される。各ＬＵＴ出力マイクロレジスタがＮ個のマルチプレクサを有する場合には、同一の実際のＬＵＴが同一のマイクロサイクルにおいてスケジュールされるべきＮ個を超える異なる信号を供給すべきではない。設計におけるＬＵＴのＦＰＧＡにおける実際のＬＵＴへの割当はプレースメント（配置）ステップ期間中に行なわれる。従って、よりよいタイムシェアリングＦＰＧＡプロセスにおいて、スケジューリング及び配置動作は同時的に行なわれる。
【０１８１】
図３１を参照すると、各ボックスは空間（ＬＵＴ配置９）及び時間（マイクロサイクル）における配置である。スケジューリング拘束条件はマイクロサイクル（時間）次元におけるＬＵＴの相対的配置に関する拘束条件である。
【０１８２】
ＦＰＧＡは二次元であるので、結合させたスケジューリングと配置とは図３２に示したように三次元配置問題として解くことが可能である。配置コスト関数は、ＰＬＤのｘ及びｙ次元における物理的な拘束条件コスト及びマイクロサイクル次元におけるスケジューリング拘束条件コストを反映している。従来の配置発見的手法、例えばシミュレーション型アニーリング、最小切断ニ分割（ｍｉｎ−ｃｕｔ  ｂｉ−ｐａｒｔｉｔｉｏｎｉｎｇ）、クラスタ成長、シミュレーション型展開（ｓｉｍｕｌａｔｅｄ  ｅｖｏｌｕｔｉｏｎ）及び力指向型緩和（ｆｏｒｃｅ−ｄｉｒｅｃｔｅｄ  ｒｅｌａｘａｔｉｏｎ）が適用可能である。配置アルゴリズムはスケジューリングによって課される相対的な配置拘束条件に従わねばならない。
【０１８３】
８．２ｆ  論理エンジン入力及び出力信号
入力／出力信号はユーザサイクルの終了によってアップデートせねばならない。然しながら、好適には、最後のマイクロサイクルを待つのではなく、値が計算されるとそれを出力へパスさせる。
【０１８４】
論理エンジンモードの最も簡単な動作モデルにおいては、全ての入力信号が最初のマイクロサイクルにおいて使用可能であり且つ全ての出力信号はユーザサイクルの終りにおいて必要とされる（最後のマイクロサイクルの終了時）。実際に、幾つかの入力信号はあとに到着し、且つ幾つかの出力信号はより速く必要とされる。これらの拘束条件を受付けるために、スケジューラコンピュータプログラムは幾つかのマイクロサイクルの後になるまで後に到着する入力信号を使用するスケジューリングを回避し、且つ最後のマイクロサイクルの前の早期に必要とされる出力信号を発生する。これらの早期の出力信号は早期のマイクロサイクルにおいて夫々の出力パッドへ経路付けされ且つチップ出力ピン上に供給されねばならない。
【０１８５】
全てのマイクロサイクル期間中にチップ出力端に値を供給するために、信号を保持するレジスタから出力パッドへ経路付けされた経路はスタティック即ち静的な経路でなければならない（即ち、セクション８．３において説明したスタティック論理技術を使用し、その場合に、その経路に対するプログラミングは全てのマイクロサイクルコンフィギュレーション内に含まれている）。一実施例においては、単一のスタティックレジスタが出力すべき値を保持する全ての出力パッドを具備している。
【０１８６】
本発明の一実施例によれば、非同期入力信号が論理エンジン同期動作と同期される。この同期はその他のシステムにおいて遭遇する同期問題と類似している。ユーザの回路設計がユーザクロックがサイクル動作する場合に信号が使用可能であることを考慮に入れる。後に到着する信号は主要なサイクルにおいてこれらの信号を後に使用するようにスケジューリングすることによって受入れることが可能である。
【０１８７】
非同期信号の到着時間を予測することは不可能である。入力信号から出力信号をアップデートするために完全なユーザサイクルが必要とされる。更に、主要なサイクルのスタート直後に入力信号が変化すると、その信号は結果の中に含まれない場合がある。従って、非同期入力の結果が可視的なものであることが保証される前に、２つの完全な主要なサイクルが必要とされる。同期を簡単化させるために、入力信号を直接チップへ供給するか又はＩ／Ｏブロック内のマイクロレジスタを介して供給する。
【０１８８】
ユーザサイクルにおける幾つかのマイクロサイクルが実行された後に入力信号が変化するとスキュー問題が発生する。特に、信号の異なる値が計算の異なる部分に含まれる場合があり、その際に不正確な結果となる場合がある。例えば、図６４Ａを参照すると、マイクロサイクル１及び２期間に信号ＩＮを使用する論理はＩＮ＝１を使用し、マイクロサイクル４及び５期間中にＩＮを使用する論理はＩＮ＝０を使用し、且つマイクロサイクル３期間中にＩＮを使用する論理はＩＮ＝０又はＩＮ＝１のいずれかを使用する。図６４Ｂは、論理要素がそれらがスケジューリングされているマイクロサイクルの符号が付けられた論理回路６４００を示している。信号ＩＮの値はＡＮＤゲート６４０１及び６４０２の評価の間で変化するので、これらのゲートは同一の信号の異なる値を受取り、その際に予測不可能な結果を発生する。特に、この場合には、ＯＲゲート６４０３の出力信号は、ＡＮＤゲート６４０１又は６４０２の一方が「１」を供給するので、信号Ａの値に拘らずに、「１」である（信号ＩＮはこれらのゲートの評価の値で変化する）。
【０１８９】
入力／出力ブロックにおけるマイクロレジスタを使用する本発明の入力同期はこの問題を回避している。例えば、入力／出力ブロック４１００の一部を示している図４１を参照すると、マイクロレジスタ４１０１はパッド４１０５からの入力信号を捕獲し、一方マイクロレジスタ４１０２はフリップフロップ４１０３からの出力信号を捕獲する。ビット組２００（図２）によって制御されるマルチプレクサ４１０６は、マイクロレジスタ４１０１、マイクロレジスタ４１０２、又はライン４１０７からの信号を選択的に出力する。パッド４１０５への出力信号を捕獲するマイクロレジスタ４１０４は、タイムシェアリングモードにおいて値を出力するためにリコンフィギュレーション即ち再形態特定からの遅延に対し一定の（即ち、設計と独立的な）時間仕様を可能としている。
【０１９０】
８．３  スタティックモード
非同期経路及び特に高速論理は、ＣＬＢ及び相互接続体の幾つかをこれらの信号及び計算に対するスタティックロジック即ち静的論理として専用化することによって実現することが可能である。
【０１９１】
第三モード、即ちスタティックモードにおいては、ＦＰＧＡの一部が、ＦＰＧＡのその他の部分が再形態特定される場合に、単一のコンフィギュレーション即ち形態特定を維持する。スタティックモードで形態特定されているＦＰＧＡの部分は、機能的には、従来のＰＦＧＡの対応する部分と同一である。付加的なシリコン面積がメモリビットによって消費されるので、スタティックモードにおけるＣＬＢの論理密度は従来のＣＬＢの論理密度よりも低い。
【０１９２】
スタティックモードは、典型的に、全てのメモリスライスを同一のコンフィギュレーション（形態特定）値へプログラミングすることによって実現され、その際にコンフィギュレーションに拘らずに機能が同一状態を維持することを確保する。スタティックモードにおいては、フリップフロップクロック及びマイクロレジスタクロックは互いに何等関係を有するものではない。従って、マイクロレジスタからスタティックフリップフロップへ値を回復されることは何等意味がなく、且つ禁止されねばならない。例えば、スタティックフリップフロップはマイクロレジスタクロックを定義する全てのユーザサイクルに対し複数個のクロックサイクルを有することが可能である。従って、マイクロレジスタ値は古すぎるかも知れず且つ回復動作はセクション８．１タイムシェアリングモードにおいて詳細に説明した信号ＦｉｒｓｔＣｙｃ（図４）をディスエーブルさせることによって禁止されねばならない。
【０１９３】
８．４  混合モード
システム設計が、幾つかが高性能条件で幾つかが中程度性能の必要性を有する論理タイプの混合を必要とする場合がある。更に、同期システムは、実時間インタラプトを取扱うために何らかの非同期能力を有する必要性がある。このことをサポートするために、本発明アーキテクチュアは混合動作モードを提供している。例えば、幾つかのコンフィギュレーションではタイムシェアリングサイクルで動作し、一方その他のコンフィギュレーションは論理エンジンシーケンスに結合される。例えば、マイクロプロセサバスぺリフェラルは、バス動作を検知するための静的論理を有する場合があり且つペリフェラルがプリンタ制御器、ネットワークインターフェース又はディスクドライブ制御器等と異なる時間に動作することを可能とするタイムシェアリグを行なう。この適用例の一実施例においては、プリンタ制御器が論理エンジンの幾つかのマイクロサイクルを有する場合がある。更に、ＣＬＢ及び相互接続体のサブセットがスタティックモードでプログラムされ、その場合にそれらがタイムシェアリング又は論理エンジンモード使用可能ではない。
【０１９４】
９．０  その他
９．１  可変深さＣＬＢ
論理の所要の深さ（従って、各プログラミング点を超えるコンフィギュレーションメモリセルの数）は回路設計依存性であり且つ設計内において変化する。従って、特定のユーザ設計が各ＣＬＢの全てのコンフィギュレーションの利点を得ることができない場合には、コンフィギュレーションメモリの幾つかは浪費され、その際に必要以上のＦＰＧＡとなる。従って、本発明に基づく典型的なＣＬＢはＮ個のメモリサイクルに対しＮ個ビットを有するものであるが、幾つかの実施例における幾つかのＣＬＢはより少ない数を有している。図３５はタイムシェアリング型ＰＬＤを示しており、ｙ軸上のＣＬＢＡ−Ｆ及びｘ軸上のコンフィギュレーション１−６を有している。図３５において、各ＣＬＢは６個の異なるコンフィギュレーションを有している。従って、アーキテクチュア３５００はメモリの３６個のＣＬＢマップを必要とする（即ち、６個のＣＬＢ×６個のマイクロサイクル）。
【０１９５】
修正したアーキテクチュアを図３６に示してあり、その場合には、ＣＬＢ  Ａ及びＢはコンフィギュレーション１−８を有しており、一方ＣＬＢ  Ｃ及びＤはコンフィギュレーション１−５を有しており、且つＣＬＢ  Ｅ及びＦはコンフィギュレーション１を有するに過ぎない。アーキテクチュア３６００はメモリの２８個のＣＬＢＭマップを必要とする（２×８＋２×５＋２×１）。従って、回路設計が深さにおける変化を有するものと仮定すると、アーキテクチュア３６００はアーキテクチュア３５００と比較して著しい量のメモリを節約する。
【０１９６】
典型的な良好に設計されたＰＬＤはその上で実現されるべき回路設計に適合すべく選択された深さの分布を有している。例えば、図３７Ａ及び３７Ｂは２つの２入力ＬＵＴを示しており、即ちＬＵＴ３７００Ａ（マルチプレクサ３７０１及びメモリセル３７０２によって供給される８個のコンフィギュレーションを包含している）、且つＬＵＴ３７００Ｂ（マルチプレクサ３７０３及びメモリセル３７０４によって与えられる４つのコンフィギュレーションを含んでいる）。１列のメモリセルが各コンフィギュレーションに対して必要とされる。従って、メモリセル３７０２は８個の列に配列されており、一方メモリセル３７０４は４つの列に配列されている。動作期間中に、１列のメモリセルがＬＵＴの内容として逐次的に選択される。
【０１９７】
コンフィギュレーション即ち形態特定用のメモリセルを有することのないＣＬＢは尚且つそのコンフィギュレーションに対してプログラムされねばならない。例えば、図３６を参照すると、ＣＬＢ  Ｅ及びＦはコンフィギュレーション２−８期間中にプログラムされねばならず、且つＣＬＢ  Ｃ，Ｄ，Ｅ，Ｆはコンフィギュレーション６−８期間中にプログラムされねばならない。幾つかの実施例においては、特定のコンフィギュレーションに対してＣＬＢを実際的にプログラミングする代わりに、本発明は以下の代替方法を提供している。
【０１９８】
１．最後の値を保持する。ＣＬＢプログラミングは最後に実現されたメモリセル上に存在していたものを残存させる。
【０１９９】
２．リサイクル。最大数のコンフィギュレーションより少ない数を有するＣＬＢはより高いコンフィギュレーション数に対してそのコンフィギュレーションを介して再度サイクル動作する（最大で８個のコンフィギュレーションがあり且つＣＬＢでの格納が４ビットである場合には、ＣＬＢは１２３４１２３４の順番で進行する）。
【０２００】
３．アイドリング状態を維持。ＣＬＢは何をすることもなく、即ち所定のハードワイヤードアイドリング形態を使用する。
【０２０１】
４．ＣＬＢ毎の選択。どのオプションを使用するかの選択はＣＬＢ毎に基づいて行なわれる。
【０２０２】
図３８は異なるマルチプレクサ入力端子に対して異なる数の形態を有する２入力ＬＵＴ３８０１を示している。同様に、マルチプレクサ３８０３は５個のコンフィギュレーションを受取るための２つの入力端子を有すると共に、４つのコンフィギュレーションを受取るための２つの入力端子を有している。アイドリング形態の選択は０，１又はユーザ信号３８０５とすることが可能でありその場合は、これらのコンフィギュレーションに対して、ＬＵＴはより少ない数の完全に制御される入力信号を有するか、全ての入力信号の幾つかの制限された関数がいまだに使用可能である。全ての入力信号が存在するものではないコンフィギュレーションにおいては、ＬＵＴ３８０１はあるメモリセルが入力信号を供給し且つある定数が入力信号を供給するマルチプレクサとして記述することが可能である。
９．２  マイクロサイクルインタラプトシミュレーション
論理エンジンモードは単一クロックシステムで両方に動作する。然しながら、ネットワークはしばしばマルチクロックシステムとして動作する。特に、多くのエンドユーザ設計におけるフリップフロップは、関係のないクロックによってトリガされ、又クロック間のタイミング関係は決定することは不可能である。換言すると、これらのクロックは非同期的に動作するものと考えられる。
【０２０３】
本発明によれば、非同期クロックを有する論理回路網がシミュレーションされる。特に、論理回路網は、最初に、サブネットワーク即ち副回路網へ分割され、各サブネットワークは共通のクロック及び中間論理を共用するフリップフロップを含んでいる。一実施例においては、論理ネットワークはクロックの数を減少させるために変換され、その際にサブネットワークの数を減少させる。従って、各サブネットワークは前述した方法を使用して独立的に編集され（スケジューリングされ）且つその他のサブネットワークとは排他的にそれが占有する８個のコンフィギュレーションスライスからなるサブセットが割当られる。最後に、各サブネットワークと関連するクロックネットに関する遷移が検知され、ダイナミックスケジューリングとして夫々のサブネットワークの評価をトリガする。
【０２０４】
図４２は、フリップフロップ４２０１，４２０２，４２０４が第一クロック線４２０９上の信号によってトリガされ且つフリップフロップ４２０３及び４２０５が第二クロック線４２１０上の信号によってトリガされるユーザネットワーク４２００の一例を示している。注意すべきことであるが、中間組合わせ論理ブロック（以後、ブロックと呼ぶ）４２１１−４２１４は異なる時間において信号を受取る。例えば、ブロック４２１３はライン４２０８上の主要な入力信号ｉ１を受取り更にクロック線４２０９上のクロック信号Ｃａによってトリガされるフリップフロップ４２０２からの別の入力信号ｉ２を受取る。別の例として、ブロック４２１４はブロック４２１３からの出力信号を受取ると共にクロック線４２１０上のクロック信号Ｃｂによってトリガされるフリップフロップ４２０３からの信号を受取る。注意すべきことであるが、ブロック４２１１−４２１４は、定義上、フリップフロップ又はフィードバックループを包含するものではない。
【０２０５】
図４２Ａはユーザネットワーク４２００のサブネットワーク４２００−１，４２００−２，４２００−３への区画化即ち分割を示している。これらのサブネットワークはオーバーラップしており、そのことは幾つかのブロックの評価は１つを超えた数のクロック遷移によってトリガすることを可能であることを意味している。極端な一例として、ブロック４２１４は信号Ｃａの正のエッジ、信号Ｃｂの正のエッジ、又は信号Ｉ１における何等かの変化によってトリガすることが可能である。
【０２０６】
本発明に対する向上として、同一のクロックのフリップフロップから派生するものではない全てのブロック入力信号は、可能である場合には、それらの入力を供給するフリップフロップを介して前方向へ「再同期」される。例えば、図４３を参照すると、ブロック４２１２はフリップフロップ４２０４を介して再同期され且つブロック４２１４はフリップフロップ４２０５を介して再同期される。このステップにおいては、フリップフロップ４２０４は２個のフリップフロップ４２０４Ａ及び４２０４Ｂによって置換されており、これらのフリップフロップの各々はブロック４２１２に対して出力信号を供給する。同様に、フリップフロップ４２０５は２個のフリップフロップ４２０５Ａ及び４２０５Ｂによって置換されており、その場合にこれらのフリップフロップの各々はブロック４２１４に対して出力信号を供給する。図４４においては、ブロック４２１３はフリップフロップ４２０４Ｂを介して再同期される。このステップにおいては、フリップフロップ４２０４Ｂはフリップフロップ４２０４Ｂ１及び４２０４Ｂ２によって置換されている。再度図４３を参照すると、ブロック４２１３はフリップフロップ４２０４Ｂ及びフリップフロップ４２０５Ａの両方へ出力信号を供給する。従って、ネットワーク４２００においては、ブロック４２１３もフリップフロップ４２０５Ａを介して再同期されねばならず、その際にフリップフロップ４２０５Ａ１及び４２０５Ａ２を形成する。
【０２０７】
図４５はネットワーク４２００Ｂを示しており、それは機能的にネットワーク４２００（図４２）と等価であり、それは本発明に基づいてサブネットワーク４２００Ｂ１及び４２００Ｂ２に分割され、その各サブネットワークは１つのクロックを有するに過ぎない。ブロック４２１３Ａ及び４２１３Ｂはブロック４２１３を有するに過ぎないネットワーク４２００と比較して、１個のブロックだけネットワーク４２００Ｂのダイ面積を増加させる。フリップフロップ４２０４Ｂ１，４２０４Ｂ２，４２０５Ａ１，４２０５Ａ２，４２０５Ｂは、ユーザの設計においては「新しい」フリップフロップとして表わされているが、それらは、通常、付加的なハードウエア資源を必要とするものではない。何故ならば、マイクロレジスタがブロック出力端において充分な格納を与え、且つその格納はユーザの設計におけるブロック出力端においてのフリップフロップの配置とは無関係に必要とされるからである（セクション２．１参照）。付加的な資源はフリップフロップ又は主要な入力が中間論理なしでフリップフロップへ供給する稀な場合においてのみ必要とされるに過ぎない。従って、フリップフロップの数の増加がユーザのネットワークを実現するのに必要とされるダイ面積を著しく増加させるという蓋然性はない。
【０２０８】
ネットワーク４２００の例においては、ブロック４２１３が、１つを超えたクロックエッジで評価されねばならないので、変換されたネットワーク４２００Ｂ内において複製されている。然しながら、典型的な設計プラクティスにおいては、単一のブロックは複数個のクロックエッジにおいて動作することが必要とされるものではない。従って、再同期はユーザの設計においてブロック数を殆ど増加させることはない。従って、再同期変換はダイ面積の増加をさせることはないか殆どさせることはない。
【０２０９】
図４６及び４７は、スケジューリングを行なった論理ネットワーク４２００及び４２００Ｂ（図４２及び４５）の夫々に対しての擬似的コード変換４６００及び４７００を示している（再同期プロセスを含む変換４７００は典型的に変換４６００よりも好適であるが、両方の変換が機能的に正しい結果を発生する）。各変換は複数個の区画部、即ちプロセスを有している。例えば、変換４６００はプロセス１（５），２（５），３（５）を有している。プロセス１（５）はクロック信号Ｃａの正のエッジによってトリガされ、プロセス２（５）はクロック信号Ｃｂの正のエッジによってトリガされ、且つプロセス３（５）は信号Ｉ１の遷移によってトリガされる。
【０２１０】
クロック信号Ｃａの正のエッジを検知した後に、プロセス１（５）は最初にフリップフロップ４２０１及び４２０２の入力信号をサンプルする（即ち、フリップフロップ４２０１及び４２０２のＱ出力端子へ転送された入力信号ｉ２及びｉ３であって、信号ｉ３及びｉ２として示してある）。第二に、プロセス１（５）は図４８に示したスケジューリング拘束条件４６００Ａに基づいて論理ネットワーク４２００−１を評価する。尚、「＜」は「前」を表わしている。従って、例えば、ブロック４２１１はブロック４２１２の前に評価される。同様に、「≧」は「後又は同時」を表わしている。従って、例えば、ブロック４２１２はブロック４２１１の後か又は同時に評価される。
【０２１１】
図４６及び４８の両方を参照すると、クロック信号Ｃｂの正のエッジを検知した後に、プロセス２（５）はブロック４２１４を評価する前に信号ｏ２をサンプルする。同時的に、プロセス２（５）は出力信号Ｏ２をサンプリングする前ではない時にブロック４２１４を評価し、且つ出力信号Ｏ２が変換した信号ｏ２であることを識別する。入力Ｉ１の信号遷移を検知した後に、プロセス３（５）はブロック４２１４の前にブロック４２１３を評価する。図５０はプロセス１−３（５）に対するマイクロサイクル割当を示している。特に、プロセス１（５）はマイクロサイクルＣ０及びＣ１を有しており、プロセス２（５）はマイクロサイクルＣ２を有しており、且つプロセス３（５）はマイクロサイクルＣ３及びＣ４を有している。残りのマイクロサイクル、即ちマイクロサイクルＣ５−Ｃ７は使用されないままである。
【０２１２】
図５１は図５０に示したマイクロサイクル割当に対する状態線図を示している。ステップ５１０５において状態マシンが開始した後に、例えばプロセス１（５）の等のプロセスが開始する（図４６においても示してある）。プロセス１（５）が完了した後に、状態マシンはアイドル状態５１００へ復帰し、そこで別のプロセス、例えばプロセス３（５）が開始するまでシステムはループ状態となる（ループ５１０４で示してある）。同様に、プロセス３（５）が完了した後に、状態マシンは、更に別のプロセスが開始するまで、アイドル状態５１００へ復帰する。然しながら、図５１に示したように、この状態マシンは論理資源に対する「プロセス」競合の可能性を考慮に入れるものではない。
【０２１３】
本発明によれば、論理ネットワーク４２００Ｂ（図４５）は、論理ネットワーク４２００Ｂ（図４５）は、論理ネットワーク４２００（図４２）よりも複雑であるが、実際にはより簡単な擬似的コード変換を有している。スケジュール４６００において、ブロック４２１２，４２１３，４２１４は１つを超えた位置が割当てられる。この割当は、マイクロレジスタ書込セレクト信号が本明細書に開示した実現例によってはサポートされていないＣＬＢ毎に独立的に制御されることを必要とする。この問題に対する解決方法は、アレイ内に専用のサイト（箇所）を与えることであり、各箇所は任意の組合わせのマイクロサイクルでクロック動作すべく形態が特定されたフリップフロップから構成されている。このような箇所は、１個のブロックが１つを超えたマイクロサイクルでスケジューリングされている場合にマイクロレジスタの代りに使用することが可能である。付加的な利点として、このような箇所は使用していない相互接続体に対して定数１又は０のいずれかを適用するハードウエア資源（業界においては「タイダウン（ｔｉｅ−ｄｏｗｎ）」として知られている）として使用することが可能であり、その際に相互接続体におけるバッファがフローティング条件の結果としてスタティックな電流を流すことを防止する。
【０２１４】
再同期が行なわれると、フリップフロップによって破られることのない主要な入力端から主要な出力端への経路に沿って発生する場合にのみマイクロレジスタに１つを超えた位置が割当てられ、且つそれは異なるクロックからなる信号によって供給される。論理を複製することによって、このようなマイクロレジスタは主要な出力端においてのみ必要とされる。
【０２１５】
ランタイムの環境においては、サブネットワーク（マイクロプロセッサにおいて「プロセス」として言及される）はデフォルトによってトリガイベントを待機している（即ち、プロセスは「ブロック」されている）。本発明においては、トリガイベントはプロセスによって特定される入力ピン遷移である。クロックエッジが発生すると、対応するサブネットワークが評価される。その評価が完了すると、サブネットワークは待機状態へ復帰し、その場合にシステムは次のクロックエッジによってトリガされる。
【０２１６】
シミュレーション資源は制限されているので、システムが既に別のサブネットワークを評価するプロセスにある間にクロックエッジが到着する可能性があり、その際に多数の異なる動作のうちの１つをトリガする。一実施例においては、インタラプトしているサブネットワークが待機状態とされる。資源が使用可能となると、例えばインタラプト中のサブネットワーク等の所定のプロセスが選択され且つ稼動される。このプロセススケジューリングを実現する１つの回路実施例を図５２に示してある。
【０２１７】
図５２はマルチクロックシーケンサ５２００を示しており、それは外部クロック信号Ｃ１，Ｃ２，．．．，ＣＫ（典型的に、ＦＰＧＡチップ上のピンを介して供給される）を受取り、且つ適宜のマイクロサイクル（即ちサブネットワーク）を活性状態とすることを決定する内部マイクロサイクルクロックｕＣ０，ｕＣ１，．．．，ｕＣＮを出力する。エッジ検知ブロック５２０１Ａ−５２０１Ｋはクロック信号Ｃ１−ＣＫのエッジを夫々検知する。これらの信号は同期ブロック５２０２Ａ−５２０２Ｋによって自走マルチクロックシーケンサへ同期される。マルチクロックシーケンサクロックは図５２において「シーケンサクロック（ｓｅｑｕｅｎｃｅｒ  ＣＬＯＣＫ）」として示してあり、それは、暗示的に、明示的には接続されていない回路内の全てのクロック入力端（例えば、５２０２Ａ−Ｋ，５２０５Ａ−Ｋ，５２０９Ａ−Ｎ）へ接続されている。優先度付器５２０３は同期ブロック５２０２Ａ−５２０２Ｋから信号を受取り、且つ、複数個の信号が同時的に受取られた場合に、どの信号をＡＮＤゲート５２０４Ａ−５２０４Ｋへ供給すべきかを決定する。図５２に示したように、ＡＮＤゲート５２０４Ａ−５２０４Ｋは、更に、ＡＮＤゲート５２１２Ｎによって供給される信号ＢＬＯＣＫを受取る（以下に詳細に説明する）。ＢＬＯＣＫ信号は、サブネットワークは稼動中である場合には、なされた要求（入力クロック信号によって示されている）が無視されることとする。特に、ＢＬＯＣＫ信号が低状態である場合には、ＡＮＤゲート５２０４Ａ−５２０４Ｋの全ての出力信号も低状態である。その条件の結果、デマルチプレクサ（ｄｅｍｕｘ）５２０６は全て論理０信号を供給する（即ち、「無視」条件）。
【０２１８】
一方、ＢＬＯＣＫ信号が高状態である場合には、システムがアイドルであることを意味する（即ち、どのサブネットワークも稼動中ではない）。この条件においては、ＡＮＤゲート５２０４の出力信号（即ち、信号ＲＵＮ）が高状態へ移行すると、その特定の高信号は、その他のＡＮＤゲート５２０４によって供給されるその他の全ての低信号と共に、デマルチプレクサ（ＤＥＭＵＸ）５２０６へ供給され、その際に、１ホット又は０ホットパターンを与え、該パターンは、それも１ホット又は０ホットであるＤＥＭＵＸ５２０６の出力信号を決定する。ＤＥＭＵＸ５２０６は、該プロセスのスタートのマイクロサイクルを反映すべく形態特定されている。ＤＥＭＵＸ５２０６の出力信号は、どのマイクロサイクルクロックｕＣが活性されるべきかを決定し、そのことは、どのマイクロサイクルが活性化されるかを決定する。ＤＥＭＵＸ５２０６はメモリセル５２０７によってプログラムされ、そのプログラミングはどのマイクロサイクルが各トリガ信号ｕＣと関連するかを決定する。
【０２１９】
フリップフロップ５２０５Ａ−５２０５Ｋは、夫々、ＲＵＮ（Ａ）−ＲＵＮ（Ｋ）を受取る。マルチクロックシーケンサクロック（ＦＰＧＡチップ上の最高速のクロック）によってトリガされると、フリップフロップ５２０５Ａ−５２０５Ｎは、夫々、エッジ検知器５２０１Ａ−５２０１Ｎへフィードバック信号を供給する。このコンフィギュレーションにおいては、高信号がフリップフロップ５２０５によって出力されると、その高信号は夫々のエッジ検知器５２０１をリセットし、従って１つのエッジの受取りをアクノレッジ即ち認証する。
【０２２０】
ＯＲゲート５２０８Ａ−５２０８Ｎ、ＡＮＤゲート５２１０Ａ−５２１０Ｎ、ＡＮＤゲート５２１２Ａ−５２１２Ｎを包含する論理ゲートは信号ＢＬＯＣＫを発生する。１つの好適実施例においては、ＡＮＤゲート５２１２Ａ−５２１２Ｎの直列チェーンが単一幅ＮＯＲゲートとして実現されており且つ別のプレチャージ型論理が使用されている。このような実現例は従来公知であり（例えば、Ｗｅｓｔｅ及びＥｓｈｒａｇｈｉａｎ「ＣＭＯＳ  ＶＬＳＩ設計の原理：システム展望（Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  ＣＭＯＳ  ＶＬＳＩ  Ｄｅｓｉｇｎ：  Ａ  Ｓｙｓｔｅｍ  Ｐｅｒｓｐｅｃｔｉｖｅ）」、１６０−１６４頁、アジソンウェリィ出版社、１９８８）、従ってその詳細については割愛する。
【０２２１】
メモリセル５２１１Ａ−５２１１Ｎの各々は、対応するマイクロサイクルがスケジューリングされたネットワークにおけるプロセスの最後のマイクロサイクルである場合にのみ、それに対応するＡＮＤゲート５２１０Ａ−５２１０Ｎへ論理０を供給する。例えば、図５０のスケジュールにおいて、マイクロサイクル１，２，４は最後のマイクロサイクルであり、従ってメモリセル５２１１Ｂ，５２１１Ｃ，５２１１Ｅ（明示的には示していない）が論理０を供給する。メモリセル５２１１Ａ−５２１１Ｎ，５２０４，５２０７はコンフィギュレーションメモリの一部を構成しているが、それらの出力は図２に示したように時間多重型ではない。フリップフロップ５２０９Ａ−５２０９Ｎの状態は現在のマイクロサイクルの状態を表わしている。特に、フリップフロップ５２０９Ａ−５２０９Ｎは論理１を保持するものではない場合には、マルチクロックシーケンサ５２００はアイドル状態にある（図５７の状態５１００）。単一のフリップフロップが論理１を保持している場合には、マルチクロックシーケンサ５２００は対応するマイクロサイクル内にある。例えば、フリップフロップ５２０９Ｂが１を保持している場合にのみ、マルチクロックシーケンサ５２００はマイクロサイクル１内にある（図５０）。フリップフロップ５２０９Ａ−５２０９Ｎのその他の全ての状態は無効である。
【０２２２】
該回路の動作は以下の如くである。アイドル状態において、フリップフロップ５２０９Ａ−５２０９Ｎは低信号を格納し、そのことはＡＮＤゲート５２１０Ａ−５２１０Ｎの出力信号を強制的に低状態とさせる。これらの低信号はゲート５２１２Ａ−５２１２Ｎの出力信号、従って信号ＢＬＯＣＫを強制的に高状態とさせる。高ＢＬＯＣＫ信号は、最も優先度の高い未定のクロックエッジ（存在する場合）がＤＥＭＵＸ５２０６へ高信号を供給することを可能とする。どのエッジも未定でない場合には、（換言すると、サービスされていないクロックエッジが検知されない場合）、全て０がＤＥＭＵＸ５２０６へ供給される。次いで、ＤＥＭＵＸ５２０６は信号を発生するエッジ（存在する場合）を対応するプロセスにおける最初のマイクロサイクルへマッピングする。未定のエッジが存在しない場合には、ＤＥＭＵＸ５２０６は全てのその出力端上で論理０を出力し、その際に全てのＯＲゲート５２０８Ａ−５２０８Ｎの出力信号を強制的に０とさせる。これらの低信号はフリップフロップ５２０９Ａ−Ｎへ供給され、マルチクロックシーケンサ５２００が次のシーケンサクロックにおいてアイドル状態に溜まることを確保する。
【０２２３】
然しながら、未定のエッジが存在する場合には、単一のＤＥＭＵＸ出力信号が高状態であり、対応するＯＲゲート５２０８の出力信号を強制的に高状態とさせる。この高信号は、マルチクロックシーケンサ５２００をして次のシーケンサクロックで適宜のマイクロサイクルへエンターさせる。
【０２２４】
マルチクロックシーケンサ５２００がシーケンスの最後のマイクロサイクルではないマイクロサイクルにある場合には、現在のマイクロサイクルに対応するメモリセル５２１１が高信号を格納する。従って、対応するＡＮＤゲート５２１０の出力信号は高状態であり、ＢＬＯＣＫ信号が低状態であることを保証する。低ＢＬＯＣＫ信号は、ＤＥＭＵＸ５２０６の出力信号が全て低状態であることを保証する。対応するフリップフロップ５２０９における論理１信号が対応するＡＮＤゲート５２１０を介して次のＯＲゲート５２０８へ流れ、次いで次のフリップフロップ５２０９内へ流れる。このように、マルチクロックシーケンサ５２００は次のシーケンサクロックにおいてシーケンス内の次のマイクロサイクルへエンターする。
【０２２５】
マルチクロックシーケンサ５２００がシーケンスの最後のマイクロサイクルであるマイクロサイクル内にある場合には、ＢＬＯＣＫ信号は高状態であり、あたかもマルチクロックシーケンサ５２００が現在アイドル状態にあるかのように次の状態を決定させる。これは、ＩＤＬＥ（アイドル）状態５１００を適宜バイパスすることが可能であるという点において、図５１によって例示される形態の状態線図よりも改良されたものである。
【０２２６】
上述したシーケンサクロックは自走であり、且つ各マイクロサイクルは１つのシーケンササイクルの間持続する。フェーズロックループ（ＰＬＬ）５２１４は通常必要とされる。何故ならば、適切なシステム性能を達成するために、シーケンサクロックはオフチップから実際的に分配されるのには高過ぎる周波数のものでなければならないからである。従って、より低い周波数のクロック信号ＣＩＮがピン５２１２を介して供給され且つＰＬＬ５２１４によって周波数が増加されてシーケンサクロックを達成する。ＰＬＬ５２１４は又、クロックのオフチップのものとオンチップのものとの間のスキュー即ち歪を効果的に最小なものとさせる。ある場合には、トリガ信号はシーケンサクロックに対して同期していることが既知であり（例えば、シーケンサクロックから分周された信号、別の信号によって特性付けられたシーケンサクロック、又は何等かのそれらの組合わせ）、従ってシンクロナイザ５２０２Ａ−Ｋと関連する本質的な遅延を解消している。同期クロック発生器５２１３はこのようなクロックを発生するために設けられており、その際に不必要な同期ステップをバイパスしている。マイクロサイクル期間はシーケンサクロックの期間を操作することによって変化する。
【０２２７】
別の実施例においては、稼動中のサブネットワークは、インラプトしているサブネットワークが評価されている間に、先買され且つ待機状態とされる。インタラプト中のサブネットワークの稼動が完了すると、先買されたサブネットワークの中間状態が回復され且つ評価が継続して行なわれる。更に別の実施例においては、稼動中のサブネットワークが先買され、その中間状態が廃棄され、且つ稼動中のサブネットワークが待機状態とされる。資源が使用可能となると、先買されたサブネットワークの評価が回復される。このアプローチは通常計算環境において代替的なものではないが、この実施例は、状態節約の使用可能なレベルの数がサブネットワークの数よりも少ない場合に利点を与える。
【０２２８】
サブネットワーク間で転送される信号は「プロセス間通信」メカニズムを必要とする。特に、サブネットワークＡからの信号がサブネットワークＢにおけるフリップフロップへ供給される場合に、サブネットワークＢは、単に、サブネットワークＢに対するクロックエッジが発生する場合にサブネットワークＡのデータ空間からの値を読取る。換言すると、サブネットワークＡ及びＢは共用メモリを有している。然しながら、複数個のサブネットワークからの信号が同一の組合わせ論理へ供給される場合には、各「プロセス」がその組合わせ論理の出力信号をアップデートすることを可能とするメカニズムが必要である。冗長な論理ブロックを形成することによりこのような条件を迂回することが可能であるが（図４５を参照して詳細に説明する）、このようなメカニズムは、基本的に、複数個のクロックエッジで変化する出力信号を実現することを必要とする。
【０２２９】
例えば図５３に示した論理ネットワーク５３００のようなある論理ネットワークは、それらの入力信号の関数として非同期的に遷移する信号を有している。特に、ピン５３１１Ａ、ピン５３１１Ｂ、クロックピン５３１４上の信号が互いに非同期的であると仮定すると、ＡＮＤゲート５３１２Ａの出力信号、即ちノード５３１３における信号Ｉは、入力ピン５３１１Ａ及び５３１１Ｂ上に供給される信号が遷移する場合にはいつでも遷移する。ノードＩにおける信号遷移が観察されると、入力ピン５３１１Ａ及び５３１１Ｂへ供給される信号は評価をトリガするクロックとして考えねばならない。然しながら、フリップフロップ５３０１が入力ピン５３１１Ａ及び５３１１Ｂにおける全ての信号遷移をサンプルするのに充分な頻度でクロック動作されない限り、信号Ｉは出力ピン５３１１Ｃへ到達することはない。このコンフィギュレーションにおいて、ＡＮＤゲート入力信号のうちの１つが変化する度にＡＮＤゲート５３１２Ａは不必要にシミュレーションされ、その際に不所望にシミュレーションの複雑性を増加させる。
【０２３０】
図５４は本発明に基づく論理ネットワーク５４００を例示しており、その場合に、ＡＮＤゲート５３１２Ａはフリップフロップ５３０１を介して再同期され、且つそれは論理ネットワーク５３００と機能的に等価である（図５３）。論理ネットワーク５４００において、重要である場合には（即ち、出力信号に影響を与えることが可能）、入力信号をサンプルするために冗長な論理が形成され、その際にシミュレーションを簡単化させる。特にフリップフロップ５４１０Ｂ及び５４１０Ｃはフリップフロップ５３０１を置換する（図５３）。従って、このコンフィギュレーションにおいては、入力ピン５４１１Ｄ及び５４１１Ｅは、夫々、フリップフロップ５４１０Ｂ及び５４１０Ｃへ信号を供給する。このように、クロック信号Ｃを受取ると（クロック５３１４によって供給される）、フリップフロップ５４１０Ｂ及び５４１０ＣはＡＮＤゲート５４１２Ｂへ信号を供給し、それは出力ピン５４１１Ｆへ信号を供給する。
【０２３１】
再同期が行なわれない場合には、例えば、フリップフロップにおいて破られることのない入力から出力の経路の場合には、各入力端に対して別個のサブネットワークが必要とされる。サブネットワークの数が法外もなく大きくなることを防止するために、信号のうちのいずれか１つの遷移が入力信号によって組合わせにより共用される単一のサブネットワークをトリガするように入力信号をグループ化させる。このステップは、典型的に、該経路がフリップフロップで破られることがない場合にのみ行なわれる。再度、再同期が行なわれない場合には、典型的に、各入力端に対して別個のサブネットワークが必要とされる。
【０２３２】
本発明の一実施例においては、ローカル（即ち、オンチップ）メモリ内に存在するアイドルのサブネットワークが現在ローカルメモリ内に存在することのないサブネットワークに対するコンフィギュレーションメモリとして又はユーザメモリとして使用するためにローカルメモリを解放するために格納（即ち、オフチップ）メモリへ転送させることが可能である。従って、サブネットワークは要求によりロードさせることが可能であり、且つ同時的にオンチップに存在することは必要ではない。外部メモリからコンフィギュレーションをローディングするためにある応答の時間の犠牲が必要であるが、このコンフィギュレーションにおけるチップの論理密度は理論的に無制限である。
【０２３３】
９．３  マイクロレジスタ代替物
特に論理エンジンモードに対して状態格納を提供する別の方法は、「バイパス」と呼ばれる固定した遅延を持った格納装置によるものである。図１０Ａを参照すると、バイパス３５０及び３５１が、夫々、上述したマイクロレジスタ３２４及び３２５を置換している（図３）。バイパスは単一ビット装置であって、それは次のコンフィギュレーションまで現在の結果を保存するラッチを有している。単に次のコンフィギュレーションへパスされるこれらの信号はバイパス３５０及び３５１内に格納される。典型的に、バイパス３５０及び３５１は完全なマイクロレジスタ３２４及び３２５よりもより小型で且つより簡単である。
【０２３４】
図１０Ｂに示した別の実施例においては、各バイパス３５０及び３５１がシフトレジスタ３５２を有している。このように、信号が、例えば、バイパス３５０内に格納される場合には、その信号は１マイクロサイクル遅延されるものではなく、その代わりに、多数のマイクロサイクル遅延される。この遅延は該信号をマイクロサイクル毎に経路再決定することを節約し、そのサイクルに相互接続資源を節約している。
【０２３５】
バイパスは共用することが可能であり、マイクロサイクル毎に異なる信号をシフトレジスタ内へ入れ、且つレジスタ遅延の後に結果的に得られる値を取出すことが可能である。スケジューラは同一の遅延を有する信号を同一のバイパスへ割当てるに過ぎない。
【０２３６】
スケジューラは、シフトレジスタバイパスの利用を最大とするために論理遅延を同一の長さのものとさせる。
【０２３７】
シフトレジスタにおける遅延は以下のうちの択一的なものである。
【０２３８】
１．アーキテクチュアにおいて固定されているもの。この実施例においては、ＦＰＧＡは多様なバイパス遅延で予め構築されており、その場合に各バイパスは固定した遅延を有している。全ての遅延が同じである必要はないので、シフトレジスタ３５２の長いもの及び短いものが存在する場合がある。シフトレジスタ長さの適切な分布は回路設計における必要とされる最小レジスタ格納時間の解析から決定される。
【０２３９】
２．コンフィギュレーション時間において固定されているもの。この実施例においては、バイパスはどのビットが出力信号であるかを選択する長さレジスタを有している。スケジューラプログラムは手元にある設計に対するバイパス長さを選択する。
【０２４０】
３．各マイクロサイクルにおいて選択可能なもの。この実施例においては、各マイクロサイクルにおいて、どのビットが出てくるかを選択することが可能である。スケジューラは、それらのビットが同一のマイクロサイクルにおいて必要とされる場合には、同一のバイパス内に２つのビットをスケジュールしてはならない。
【０２４１】
４．実施例１−３の組合わせによって決定されるもの。
【０２４２】
シフトレジスタバイパスの長さはチップ内のマイクロサイクルの数よりも長い場合がある。一実施例においては、２つのバイパスをカスケードさせてより長い遅延を構築することが可能である。
【０２４３】
別の実施例においては、マイクロレジスタの幾つかのビットをアーキテクチュアから省略することが可能である。減少させたマイクロレジスタは、ＣＬＢがマイクロレジスタビットを有するものではないマイクロサイクルに対するバイパスと結合させることが可能である。換言すると、殆どのＣＬＢが全てのマイクロサイクルからの出力信号を格納するマイクロレジスタを有しており、幾つかのＣＬＢは最初の２，３個のマイクロサイクルからの出力信号を保存するためにのみ構築することが可能である。これらのＣＬＢは他のマイクロサイクルにおけるバイパスで次のマイクロサイクルへ信号をパスせねばならない。
【０２４４】
９．４  より深い論理に対する代替物
一方、ＳＬＢアレイはｍ個のブロックへ区画化即ち分割されており、各ブロック内のＣＬＢは論理エンジンモードにおけるｍ個のシーケンスのマイクロサイクルのうちの１つにおいてアクティブ即ち活性状態である。部分的な結果が１つのブロックから次のブロックへパス即ち通過される。この場合には、最大論理深さはｍ×ｎである。スケジューリング及び区画化によって、論理を非常に効率的に詰込むことが可能である。何故ならば、ｎよりも深いレベルを有する論理部分のみが別個に区画化させることが必要であるに過ぎず、論理の残部は、尚且つ、全てのシーケンスのマイクロサイクルにおいて稼動しているからである。例えば、活性なＣＬＢのアレイ５５００を示す図５５を参照すると、ＣＬＢ５５０１は特定のシーケンスのマイクロサイクル期間中に活性であるに過ぎず、一方ＣＬＢ５５０２は、全てのシーケンスのマイクロサイクル期間中において活性状態だからである（８．２ａ  同期／非同期クロック動作参照）。
【０２４５】
この技術の拡張は、ＦＰＧＡ内におけるコンフィギュレーションスライスの数よりもより多くのマイクロサイクルを可能とするマイクロサイクルシーケンサを調節することである。この実施例においては、シーケンサは、コンフィギュレーションを選択するためにマイクロサイクル番号の低次ビットを使用して、論理のレベル当たり１つのマイクロサイクルを介してサイクル動作すべく設定される。この実施例は論理の深さがＦＰＧＡにおけるコンフィギュレーション数よりも大きい場合の経路に対するＣＬＢアレイの部分的区画化に関連している。より長いアドレスカウンタは、チップ内のコンフィギュレーション数の単純な倍数ではなくコンフィギュレーションの任意の数ＦＰＧＡがシーケンス動作することを可能とする。
【０２４６】
９．５  ＣＬＢ毎のメモリアクセスコンフィギュレーションビット
本発明の一実施例によれば、付加的なレジスタがメモリアクセスサイクル期間中にメモリへのアクセスを制限する。このレジスタは、メモリサイクルによって影響されることのないＣＬＢに対するメモリアクセスを選択的にターンオフし、その際に各メモリサイクルに対する電力消費を減少させている。更に、電力の節約に加えて、このレジスタはメモリへのアクセスを選択的にディスエーブルさせることによってメモリのサブセットへのアクセスを可能とさせる。例えば、図６１を参照すると、信号ＭＣｉｋはレジスタ７２０に類似した態様でメモリへのアクセスを制御するメモリセル（不図示）からのものである（図７Ｂ）。従って、この信号は、指定されたメモリセルが読取のために選択されているか否かを決定する。従って、信号ＭＣｉｋがこの実施例において論理「０」である場合には、ＣＬＫｂ内のメモリセルは読取られるか書込まれることはなく、その際に電力を節約している。
【０２４７】
９．６  マイクロレジスタセレクタオプション
本発明によれば、マイクロレジスタ上のセレクタの数（以前に簡単化のためにマルチプレクサとして言及した）がチップ面積を節約するために最小化されている。一実施例によれば、セレクタに対する２つの要素が存在しており、即ちマルチプレクサとバッファとである。隣接するレジスタに関してマルチプレクサを共用することによりセレクトのピークの利用を低下させる。図５６Ａ及び５６Ｂはマイクロレジスタ（この例においては８ビットレジスタ）５６０１及び５６０２及び関連するセレクタ（即ち、３出力マルチプレクサ）５６０１Ａ及び５６０２Ａを夫々示している。
【０２４８】
図５７において、マイクロレジスタ５６０１（それはＣＬＢ  Ａから信号を受取る）からマルチプレクサセレクタ５６０２Ａ（それはＣＬＢ  Ｂから信号を受取る）へ付加的な接続５７００が設けられている。このように、ＣＬＢ  Ｂがコンフィギュレーションにおけるマルチプレクサの全てを必要とするものではなく且つＣＬＢ  Ａがエキストラな１つを必要とする場合には、ＣＬＢ  Ａは共用マルチプレクサを使用することが可能である。レジスタ５６０１における全てのビットが全てのコンフィギュレーションに関して共用されることは必要ではない。実際に、異なるビットが異なるセレクタに関して共用されうる。
【０２４９】
図５８の回路は、通常マルチプレクサ５６０１Ａ及び５６０２Ａと関連しているバッファ（図４の出力線上）の幾つかを取除いている。例えば、幾つかの信号がＣＬＢ  Ａによって次のコンフィギュレーションにおいて使用される場合には、マルチプレクサ５６０１Ａは経路５８０１を使用することによって完全にバイパスされる。マルチプレクサ５６０１Ａからの信号がＣＬＢ  Ａ内に位置されるべき場合には、該信号はフィードバック経路５８０２上に供給される。更に、マルチプレクサ５６０１Ａからの信号が隣接するＣＬＢ  Ｂ内に位置されるべき場合には、該信号は直接接続経路５８０３上に供給される。
【０２５０】
９．７  低パワー相互接続回路
本発明によれば、信号電圧の振れが制限されており、それにより速度を増加させ且つＰＬＤの相互接続回路における電力を著しく減少させている。図５９はＰＬＤ５９００の一部を示しており、それは、ソース（発信元）形態特定可能論理ブロック（ＣＬＢ）出力回路５９０１、ディスティネーション（宛先）ＣＬＢ入力回路５９０３、相互接続構成体５９０２を有している。ソースＣＬＢ出力回路５９０１の出力線５９０１Ａは相互接続構成体５９０２を介してディスティネーションＣＬＢ入力回路５９０３の入力線５９０３Ａへ結合している。
【０２５１】
相互接続構成体５９０２は、実効的には、Ｎチャンネルトランジスタ５９０８Ａ−５９０８Ｎによって実現されるＲＣネットワークである。特に、各トランジスタ５９０８Ａ−５９０８Ｎは関連する抵抗Ｑを提供し、一方各トランジスタ５９０８Ａ−５９０８Ｎ及び関連するラインセグメント５９１０Ａ−５９１０Ｎは、夫々、容量５９０９Ａ−５９０９Ｎ（コンデンサとして示してある）を提供する。
【０２５２】
当業者にとって公知の如く、いずれかのトランジスタ５９０８の容量は、そのチャンネル領域の面積を増加することによって増加される。従って、いずれかのトランジスタ５９０８の幅を増加させることによって抵抗Ｑを低下させることは、減少効果を有している。何故ならば、関連する容量５９０９も増加するからである。
【０２５３】
本発明によれば、トランジスタ５９０８Ａ−５９０８Ｎのゲート上の電圧を高く維持しながらこれらのトランジスタのソース／ドレイン電圧を制限することによって、容量５９０９を増加させることなしに実効的に抵抗Ｑを低下させ、その際に相互接続構成体５９０２を介しての信号転送速度を改善し且つＣＬＡ５９００における電力消費を著しく減少させる。従って、本発明によれば、ソースＣＬＢ出力回路５９０１は低い電圧トリガ点及び２つのＮチャンネルトランジスタを有する従来のインバータ５９０４を有している。
【０２５４】
ソースＣＬＢ出力回路５９０１へ供給される論理０信号は、トランジスタ５９０６のゲートへ供給され、その際に該トランジスタをターンオフさせる。該論理０信号はインバータ５９０４によって反転され、その際にトランジスタ５９０５へ高信号を供給し、そのトランジスタを完全にターンオンさせる。トランジスタ５９０５は、そのオン状態において、約２．０Ｖを相互接続線５９０１Ａへ転送する。
【０２５５】
一方、ソースＣＬＢ出力回路５９０１へ供給された論理１信号はトランジスタ５９０５をターンオフし且つトランジスタ５９０６をターンオンし、その際に相互接続線５９０１Ａ上の電圧を接地へプルする。このように、ソースＣＬＢ出力回路５９０１は、高ゲート電圧駆動（インバータ５９０４を介し）を供給し、一方相互接続構成体５９０２へ最大２Ｖを確保する（トランジスタ５９０５及び５９０６を介して）。出力線５９０１Ａ上の電圧の振れを約３．６Ｖではなく２Ｖへ制限することによって、相互接続構成体５９０２の電力条件を著しく減少させる（式１を参照して以下に説明する）。
【０２５６】
インバータ５９０７Ａ−５９０７Ｎはパストランジスタ５９０８Ａ−５９０８Ｎのゲートへ夫々供給される制御信号を反転させる。インバータ５９０７Ａ−５９０７Ｎが論理低信号を受取るものと仮定すると、トランジスタ５９０８Ａ−５９０８Ｎがターンオンし、その際に出力線５９０１Ａ上の信号を入力線５９０３Ａへ転送させる。
【０２５７】
ディスティネーションＣＬＢ入力回路５９０３は、約０．８Ｖのノイズマージンにおける低パワーで、低「１」レベル（即ち、２Ｖ）入力を取扱うことが可能であり且つ高「１」レベル（即ち、５Ｖ）出力を与えることが可能でなければならない。典型的に、高スレッシュホールドは１個の０．８ＶスレッシュホールドＶｃｃから低い信号によって駆動されるゲートにおける１．６Ｖ範囲において回路５９０３のＰチャンネル装置上で使用される。回路５９０３の場合には、入力「１」レベルはＶｃｃから約３Ｖ低い。図６０に示した一実施例においては、３つのステージが「１」レベルをＶｃｃとさせ、各ステージは１Ｖ上昇させる。各ステージの生来のＰチャンネル装置のゲート対ソース電圧（Ｖｇｓ）は、Ｐチャンネル装置６００１がオフである場合に、１．６Ｖのスレッシュホールド電圧よりも０．６Ｖ低く、その際に良好なマージンを与えている。３及び４Ｖの中間状態供給電圧は当該技術分野において公知のＮ個のダイオードで得ることが可能であり、従ってその詳細な説明は割愛する。
【０２５８】
当該技術分野において公知の如く、ＣＭＯＳ回路における電力消費は次式と等価である。
【０２５９】
Ｐ＝（ＣＬ×Ｖ１×Ｖ２×ｆ）／２            （１）
尚、ＣＬは出力上の容量負荷であり、Ｖ１は供給電圧であり、Ｖ２は相互接続構成体５９０２の電圧の振れであり、且つｆは動作周波数である。容量負荷ＣＬ、毎秒当たりの遷移数ｆ、供給電圧Ｖ１が適用場面毎に一定であると仮定すると、本発明はＰＬＤ５９００における電力消費を著しく減少させる。特に、３．６Ｖ信号レベルの代わりに２Ｖの信号レベルを与えることによって、本発明は４４％電力消費を減少させる。何故ならば、電圧Ｖ１は変化せず電圧Ｖ２が変化するに過ぎないからである。
【０２６０】
９．８  コンフィギュレーションに対するマルチアクセス
メモリアクセスは相互接続体及びＬＵＴアクセスよりもかなり速いので、メモリをパイプライン動作させることが可能であり、即ち各メモリサイクル期間中に複数個のコンフィギュレーションワードを読取ることが可能である。
【０２６１】
マイクロレジスタがＣＬＢ出力線へ結合されていると仮定すると（例えば、図３参照）、論理エンジンモードにおけるマイクロサイクルは以下のステップを包含している（典型的な関連する時間は各ステップに続くカッコ内に示されている）。
【０２６２】
１．コンフィギュレーションワードを読取り且つパイプラインラッチ値をアップデートする（５ｎｓ）。
【０２６３】
２．相互接続体を介して論理入力線へ信号を伝搬させる（１５ｎｓ）。
【０２６４】
３．ラッチ入力をパイプライン動作させるためにＬＵＴを介して信号を伝搬させる（５ｎｓ）。
【０２６５】
信号がそれらの夫々ＬＵＴ入力線へ到達するまでＬＵＴコンフィギュレーションは必要とされない（上述した実施例においては、相互接続が有効となった後１５ｎｓ）。従って、ＬＵＴコンフィギュレーションは、相互接続コンフィギュレーションの後メモリから読取ることが可能である。実際に、ＬＵＴコンフィギュレーションに対してメモリを２度目にサイクル動作する時間がある。
【０２６６】
従って、図６２に示した１つの実施例において、全ての従来のコンフィギュレーションメモリセルの「後ろ側」に８個のビットを置く代わりに、各対の従来のコンフィギュレーションメモリセル（即ち、１つが相互接続用及び別のものが論理用）に対して１６ビット（即ち、メモリセルＭＣ１−ＭＣ１５内に格納されているビット）を供給する。この実施例においては、コンフィギュレーションデータは２つのメモリアクセスで読取られ、その際により大きな深さに基づいてメモリ効率の利点を得ている。この実施例においてはビット線２０３が共用されているが、各メモリアクセスに対し付加的なラッチ２０４が設けられており、各ラッチ２０４は別個のクロック線を有している。従って、ラッチ２０４1 （それは相互接続体に対して信号を供給する）及びラッチ２０４2 （それはＣＬＢ論理に対して信号を供給する）は、夫々、コンフィギュレーションクロック１及び２によって駆動される。爾後のマイクロサイクルがオーバーラップされる上述したプロセスと異なり、この実施例においては、ＦＰＧＡをコンフィギュア即ち形態特定するために複数回のメモリアクセスが必要とされる。
【０２６７】
９．９  パイプライン特徴
論理エンジンモードにおけるＦＰＧＡのフラッシュリコンフィギュレーションの後に、ＦＰＧＡ計算が従来の対応で実行される。典型的に、これらの計算はメモリアクセスよりも長い時間を必要とする。従って、初期的なコンフィギュレーションデータを読取った後に、コンフィギュレーションメモリはある時間期間の間アイドル状態となる。
【０２６８】
コンフィギュレーションデータが上述したようにラッチされると、図２を参照すると、論理及び相互接続が評価されている間にそのコンフィギュレーションと同一のマイクロサイクルにおけるメモリアイドル時間内にメモリ動作を「挿入」することが可能であり、その際に効果的にメモリアクセスをパイプライン動作させる。ユーザメモリアクセス、コンフィギュレーション、ユーザ論理及び相互接続のタイミングは以下の表Ｂに示してある。
【０２６９】
0003729943.tif 000003
尚、Ｃはコンフィギュレーションアクセスであり、ＬＩＰは論理相互接続伝搬であり、且つＭはメモリアクセスである。
【０２７０】
コンフィギュレーションＣ０は時間Ｔ０においてコンフィギュレーションメモリから読取られる。時間Ｔ１において、コンフィギュレーションはＦＰＧＡにおける論理及び相互接続を制御するためにラッチされ（ＬＩＰ０）、それはＲＥＡＤ（読取）メモリ動作を発生させることを包含している。メモリアクセス（Ｍ０）は時間Ｔ２において行なわれ、データが時間Ｔ３においてＣＬＢ入力信号として与えられる。メモリアクセスの後に、メモリは再度サイクル動作されて次のマイクロサイクルに対するコンフィギュレーション情報を維持する。コンフィギュレーションＣ１はコンフィギュレーションＣ０によるメモリアクセスの結果を使用することはできないが、コンフィギュレーションＣ１は次のメモリアドレスを発生する。従って、１サイクルの待ち時間期間の後（コンフィギュレーションＣ１に対して）、メモリはサイクル当たり１個の転送割合でフローを転送する。
【０２７１】
単一のコンフィギュレーションに対するメモリアクセス（Ｍ）及びコンフィギュレーションアクセス（Ｃ）は同一の時間Ｔにおいて発生することは不可能であるが、時間（Ｔ）の期間は、通常、論理相互接続伝搬（ＬＩＰ）ステップによって決定される。従って、メモリ（Ｍ）は、コンフィギュレーションの論理が評価されている間に多数回サイクル動作することが可能である。実際に、ＦＰＧＡ計算の期間に依存して、マイクロサイクルの期間を増加させることなしに、幾つかのメモリサイクル（例えば書込に続く読取）を挿入させることが可能である。本発明のその他の実施例においては、より短い待ち時間を有するパイプラインスケジュールが提供される。
【０２７２】
0003729943.tif 000004
表ＣにおいてＭ０に対するアドレスはＬＩＰ０に関連して計算される。そのメモリアクセスは、そのアドレスの計算が完了するまで遅延され、その計算はＬＩＰ遅延全体よりも小さい場合がある。Ｍ０が充分に短いか又はＴ１が充分に長い場合には、メモリ動作Ｍ０の結果が時間Ｔ１内に得られる場合がある。
【０２７３】
メモリアクセスはＦＰＧＡコンフィギュレーションの後に発生するので、アドレス計算が充分に速いものと仮定すると、メモリはアドレスが計算されるのと同一のサイクルにおいてアクセス可能である。このような高速計算は次のものを含んでいる。
【０２７４】
１．コンフィギュレーションデータにおいて与えられるアドレス計算（即ち、即値）。
【０２７５】
２．そのアドレス値が、最も最後に到着する信号よりも充分前にアドレスレジスタに到着する場合（即ち、迅速な経路）。後者の計算においては、メモリは、アドレスが発生されるＦＰＧＡサイクルの後の部分においてアクセス可能である。一実施例においては、リコンフィギュレーション即ち再形態特定は、メモリ動作から結果が戻されるまで遅延される。遅延の量は、最悪の場合のアドレス発生遅延＋メモリアクセス遅延から決定することが可能である。
【０２７６】
９．１０  ＲＯＭセルの組込
上述した実施例においては、全てのメモリスライスがＲＡＭセルを有している。その他の実施例においては、付加的なメモリスライスはＲＯＭセルを有しており、それはローカルバス２０３上のサイト即ち箇所を占有し（図２）、ＲＡＭセルと同一のラッチ２０４を使用し、且つそれ自身の制御線２０５を有している。ＲＯＭセルはＲＡＭセルよりも著しく小さいが柔軟性はより低い。従って、ＲＡＭセルと比較してＲＯＭセルを使用することの柔軟性の減少は、ＲＯＭセルに関連する低コストとバランスされる。これらの実施例においては、ＲＯＭセルは、製品をエンドユーザがテストすることを助けるための自己テスト等の機能のため、又は例えば直接メモリアクセス又は特定バスインターフェース（例えば、ＰＣＩ）等のある固定した機能を提供するために使用される。
【０２７７】
エンドユーザは、その機能を含むスライスへジャンプすることによってこれらの機能を喚起させる。自己テスト機能能力は、固定機能能力よりも容易に提供される。何故ならば、自己テストは、典型的に、ユーザのコンフィギュレーションとは独立的だからである。対照的に、固定機能能力は、より制限的なものである。何故ならば、コールを行なうエンドユーザスライスとＲＯＭスライスとの間でパラメータをパスするための構成を設けねばならないからである。パラメータのパスはユーザメモリとして設定されたＲＡＭスライスの固定したサブセットを介して行なうことが可能である。パスされたパラメータ及びメモリ内のパラメータ区域でさえも、例えばスタートアドレス、リターンプレーンアドレス等の機能特定性である。
【０２７８】
固定機能は、典型的に、異なる製品に対して異なっている。本発明によれば、新たな製品はＲＯＭ技術を定義するマスク層を単に変更するだけで開発される。一方、ＲＯＭは例えばアンチヒューズ等の一度だけプログラム可能な装置で実現することが可能である。一実施例においては、混合ＲＯＭ及びＲＡＭ装置が２つの既存の業界標準部品、即ちＲＡＭをベースとしたＦＰＧＡとそのハードワイヤード型等価物の間のハイブリッド部品として使用される（例えば、ザイリンクスのＨａｒｄＷｉｒｅ（商標）装置）。このように顧客はＲＯＭ密度の単価の利点を得るために顧客に特定的なＲＯＭマスクの固定コストを支払うが、尚且つ、可変のコンフィギュレーション及びユーザメモリのために使用可能な幾つかのスライスを有している。
【０２７９】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【図１】  従来のＦＰＧＡコンフィギュレーションビットを示した概略図。
【図２】  本発明に基づくコンフィギュレーションビットスライスを示した概略図。
【図３】  時間多重型ＣＬＢを示した概略ブロック図。
【図３Ａ】  複数個のメモリセルブロック、出力マルチプレクサ、マイクロレジスタの夫々供給される本発明のコンフィギュレーション選択信号、読取選択信号、書込選択信号を示した概略図。
【図４】  図３に示した時間多重型ＣＬＢの一部をより詳細に示した概略ブロック図。
【図５】  図４のＣＬＢの一部をより詳細に示した概略図。
【図６】  図５の回路に対する真理値表を示した概略図。
【図７】  ２レベルメモリヒエラルキを示した概略図。
【図７Ａ】  ２つのローカルバス及び２つのグローバルバスが真及び相補信号をビット組へ担持する実施例を示した概略図。
【図７Ｂ】  ＣＬＢ毎にメモリセルへのアクセスを与えるレジスタコンフィギュレーションを示した概略図。
【図８】  公知の４トランジスタメモリセルを示した概略図。
【図９】  ＰＬＤにおける４トランジスタセルメモリコンフィギュレーションを示した概略図。
【図１０Ａ】  本発明の一実施例に基づいて固定遅延を有する格納装置を具備するＣＬＢを示した概略図。
【図１０Ｂ】  本発明の一実施例に基づく固定遅延を持った格納装置を具備する別のＣＬＢを示した概略図。
【図１１】  共用メモリを示した概略ブロック図。
【図１２】  図１１の共用メモリの詳細を示した概略図。
【図１３】  共用メモリに対するワード読取タイミングを示した概略図。
【図１４】  共用メモリに対するワード書込タイミングを示した概略図。
【図１５】  共用メモリに対するバースト読取タイミングを示した概略図。
【図１６】  共用メモリに対するバースト書込タイミングを示した概略図。
【図１７】  共用メモリに対する複数個のコンフィギュレーションビットを示した概略図。
【図１８】  共用メモリに対するコンフィギュレーションアクセスタイミングを示した概略図。
【図１９】  従来の自己同期型回路を示した概略図。
【図２０】  図１９の回路に対するタイミングを示した概略図。
【図２１】  各外部クロックサイクルに対する複数個の内部サイクルを発生するタイミング回路を示した概略図。
【図２２Ａ】  本発明の一実施例に基づく単一クロックシーケンサを示した概略図。
【図２２Ｂ】  ３つのコンフィギュレーションに対する例示的なタイミングシーケンスを示した概略図。
【図２３】  本発明に基づく分割メモリを示した概略図。
【図２４】  ＣＬＢに対するレイアウトの一実施例を示した概略図。
【図２５】  ＰＬＤの多機能タイムシェアリング動作モードを示した概略図。
【図２６】  ＰＬＤにおける論理エンジンモードの実現例を示した概略図。
【図２６Ａ】  クリティカルパス上のレベルの対が同一のマイクロサイクル内に２つのＬＵＴを直列的に適合させるためにマイクロレジスタバイパスを使用して単一レベルへ合体させる本発明の一実施例に基づく圧縮方法を示した概略図。
【図２６Ｂ】  装置内のフリップフロップとその他の要素との間の２つの必要なスケジューリング関係を示した概略図。
【図２７】  ゲート型クロックフリップフロップを示した概略図。
【図２８】  マイクロサイクルクロックに対する種々のライブラリィ要素及びそれらの関係を示した概略図。
【図２９】  クロックイネーブル型フリップフロップを示した概略図。
【図３０】  図２６の再スケジュールされた論理を示した概略図。
【図３１】  二次元空間におけるスケジューリング及び配置ルックアップテーブルを示した概略図。
【図３２】  三次元空間におけるスケジューリング及び配置ルックアップテーブルを示した概略図。
【図３３】  時間多重型ＰＬＤにおけるマイクロサイクルシーケンス動作を示した概略図。
【図３４】  時間多重型ＰＬＤにおけるマイクロサイクルシーケンス動作を示した概略図。
【図３５】  各メモリサイクルに対し異なるコンフィギュレーションを持った全てのＣＬＢを示した概略図。
【図３６】  あるマイクロサイクルに対してコンフィギュレーションを有することのない幾つかのＣＬＢを示した概略図。
【図３７Ａ】  １つの可変深さ時間多重型ＣＬＢを示した概略図。
【図３７Ｂ】  別の可変深さ時間多重型ＣＬＢを示した概略図。
【図３８】  異なる入力に対し異なる数のマイクロサイクルを有するＣＬＢを示した概略図。
【図３９】  最高速クロックがユーザクロックとして実現され且つその他の全てのクロックがマイクロサイクルレジスタイネーブル信号で実現されている場合の適宜の波形を与える状態マシンを示した概略図。
【図３９Ａ】  図３９の遅いクロック信号、イネーブル信号及びマスタクロック信号を示したタイミング線図。
【図４０】  本発明に基づくスケジューリングを最適化する流れを示したフローチャート図。
【図４１】  本発明に基づく例示的な入力／出力ブロックを示した概略図。
【図４２】  マイクロサイクルインタラプトシミュレーションに露呈される回路を示した概略図。
【図４２Ａ】  図４２のユーザネットワークを複数個のサブネットワークへ区画化する状態を示した概略図。
【図４３】  図４２の回路の変形例を示した概略図。
【図４４】  図４２の回路の変形例を示した概略図。
【図４５】  図４２の回路の変形例を示した概略図。
【図４６】  図４２の回路の擬似コード変換を示した概略図。
【図４７】  図４５の回路の擬似コード変換を示した概略図。
【図４８】  図４６の擬似コード変換に関連して使用されるスケジューリング拘束条件を示した概略図。
【図４９】  図４７の擬似コード変換に関連して使用されるスケジュ−リング拘束条件を示した概略図。
【図５０】  １つのマイクロサイクル割当を示した概略図。
【図５１】  図５０に対する状態線図を示した概略図。
【図５２】  適宜のマイクロサイクルを決定する回路を示した概略図。
【図５３】  同期した出力信号を有する等価回路を示した概略図。
【図５４】  同期した出力信号を有する別の等価回路を示した概略図。
【図５５】  拡張可能な論理深さを有する時間多重型ＰＬＤを示した概略図。
【図５６Ａ】  自分自身の出力マイクロレジスタ及びマルチプレクサを具備するＣＬＢを示した概略図。
【図５６Ｂ】  それ自身の出力マイクロレジスタ及びマルチプレクサを具備する別のＣＬＢを示した概略図。
【図５７】  マルチプレクサを共用する２つのＣＬＢを示した概略図。
【図５８】  マルチプレクサを共用し且つフィードバック経路を具備する２つのＣＬＢを示した概略図。
【図５９】  相互接続体を有するＰＬＤの一部を示した概略図。
【図６０】  図５９のＰＬＤにおいて使用するインバータを示した概略図。
【図６１】  付加的なレジスタがメモリアクセスサイクル期間中にメモリへのアクセスを制限する本発明の一実施例を示した概略図。
【図６２】  コンフィギュレーションデータが２つのメモリアクセスで読取られる本発明の一実施例を示した概略図。
【図６３Ａ】  １つの出力マルチプレクサを制御するコンフィギュレーションメモリへ供給されるコンフィギュレーション選択信号及びマイクロレジスタへ供給される書込選択信号を示した概略図。
【図６３Ｂ】  出力マルチプレクサの別の実施例を示した概略図。
【図６３Ｃ】  図６３Ｂの出力マルチプレクサと比較してラッチ数を減少させる出力マルチプレクサの更に別の実施例を示した概略図。
【図６３Ｄ】  本発明の出力マルチプレクサに対する入力信号を示した表の説明図。
【図６３Ｅ】  図６３Ａに示した出力マルチプレクサ内に設けられる回路に対する真理値表を示した説明図。
【図６３Ｆ】  図６３Ｂに示した出力マルチプレクサに対するタイミング線図。
【図６３Ｇ】  図６３Ａにおいて識別した回路の詳細な実現例を示した概略図。
【図６４Ａ】  本発明によって解消されるスキュー問題を例示するタイミング線図。
【図６４Ｂ】  本発明によって解消されるスキュー問題を例示する回路を示した概略図。
【符号の説明】
２００  ランダムアクセスメモリビット組
２０１  ラッチ
２０２  セレクトトランジスタ
２０３  共通ビット線
２０４  クロック型ラッチ
【図１】
0003729943.tif 000005
【図２】
0003729943.tif 000006
【図３】
0003729943.tif 000007
【図３Ａ】
0003729943.tif 000008
【図４】
0003729943.tif 000009
【図５】
0003729943.tif 000010
【図６】
0003729943.tif 000011
【図７】
0003729943.tif 000012
【図７Ａ】
0003729943.tif 000013
【図７Ｂ】
0003729943.tif 000014
【図８】
0003729943.tif 000015
【図９】
0003729943.tif 000016
【図１０Ａ】
0003729943.tif 000017
【図１０Ｂ】
0003729943.tif 000018
【図１１】
0003729943.tif 000019
【図１２】
0003729943.tif 000020
【図１３】
0003729943.tif 000021
【図１４】
0003729943.tif 000022
【図１５】
0003729943.tif 000023
【図１６】
0003729943.tif 000024
【図１７】
0003729943.tif 000025
【図１８】
0003729943.tif 000026
【図１９】
0003729943.tif 000027
【図２０】
0003729943.tif 000028
【図２１】
0003729943.tif 000029
【図２２Ａ】
0003729943.tif 000030
【図２２Ｂ】
0003729943.tif 000031
【図２３】
0003729943.tif 000032
【図２４】
0003729943.tif 000033
【図２５】
0003729943.tif 000034
【図２６】
0003729943.tif 000035
【図２６Ａ】
0003729943.tif 000036
【図２６Ｂ】
0003729943.tif 000037
【図２７】
0003729943.tif 000038
【図２８】
0003729943.tif 000039
【図２９】
0003729943.tif 000040
【図３０】
0003729943.tif 000041
【図３１】
0003729943.tif 000042
【図３２】
0003729943.tif 000043
【図３３】
0003729943.tif 000044
【図３４】
0003729943.tif 000045
【図３５】
0003729943.tif 000046
【図３６】
0003729943.tif 000047
【図３７Ａ】
0003729943.tif 000048
【図３７Ｂ】
0003729943.tif 000049
【図３８】
0003729943.tif 000050
【図３９】
0003729943.tif 000051
【図３９Ａ】
0003729943.tif 000052
【図４０】
0003729943.tif 000053
【図４１】
0003729943.tif 000054
【図４２】
0003729943.tif 000055
【図４２Ａ】
0003729943.tif 000056
【図４３】
0003729943.tif 000057
【図４４】
0003729943.tif 000058
【図４５】
0003729943.tif 000059
【図４６】
0003729943.tif 000060
【図４７】
0003729943.tif 000061
【図４８】
0003729943.tif 000062
【図４９】
0003729943.tif 000063
【図５０】
0003729943.tif 000064
【図５１】
0003729943.tif 000065
【図５２】
0003729943.tif 000066
【図５３】
0003729943.tif 000067
【図５４】
0003729943.tif 000068
【図５５】
0003729943.tif 000069
【図５６Ａ】
0003729943.tif 000070
【図５６Ｂ】
0003729943.tif 000071
【図５７】
0003729943.tif 000072
【図５８】
0003729943.tif 000073
【図５９】
0003729943.tif 000074
【図６０】
0003729943.tif 000075
【図６１】
0003729943.tif 000076
【図６２】
0003729943.tif 000077
【図６３Ａ】
0003729943.tif 000078
【図６３Ｂ】
0003729943.tif 000079
【図６３Ｃ】
0003729943.tif 000080
【図６３Ｄ】
0003729943.tif 000081
【図６３Ｅ】
0003729943.tif 000082
【図６３Ｆ】
0003729943.tif 000083
【図６３Ｇ】
0003729943.tif 000084
【図６４Ａ】
0003729943.tif 000085
【図６４Ｂ】
0003729943.tif 000086