(57)【特許請求の範囲】
【請求項１】
連続的に配置される第１の複数個の論理アレイブロックと、
前記第１の複数個の論理アレイブロックの側面に沿って連続的に配置される複数個のセグメンテーションバッファと、
第１の複数個の論理アレイブロックから離れており、かつ複数個のセグメンテーションバッファの側面に沿って連続的に配置される第２の複数個の論理アレイブロックと、
複数個のセグメンテーションバッファから離れており、かつ第２の複数個の論理アレイブロックの側面に沿って連続的に配置される複数個のステッチバッファと、
第２の複数個の論理アレイブロックから離れており、かつ複数個のステッチバッファの側面に沿って連続的に配置される第３の複数個の論理アレイブロックと、
複数個のステッチバッファから離れており、かつ第３の複数個の論理ゲートの側面に沿って連続的に配置される第４の複数個の論理アレイブロックと、
第１の複数個の論理アレイブロックにプログラム可能に結合されかつ複数個のセグメンテーションバッファに結合される第１の複数個の配線ラインと、
第２の複数個の論理アレイブロックにプログラム可能に結合されかつ複数個のセグメンテーションバッファおよび複数個のステッチバッファに結合される第２の複数個の配線ラインと、
第３の複数個の論理アレイブロックおよび第４の複数個の論理アレイブロックにプログラム可能に結合されかつ複数個のステッチバッファに結合される第３の複数個の配線ラインとを含み、
複数個のセグメンテーションバッファは、第１の複数個の配線ラインから第２の複数個の配線ラインへ信号を駆動し、または第２の複数個の配線ラインから第１の複数個の配線ラインへ信号を駆動し、または第１の複数個の配線ラインと第２の複数個の配線ラインとの間に開回路を与えるよう構成可能である、プログラマブルロジックデバイス。
【請求項２】
複数個のステッチバッファは、第２の複数個の配線ラインから第３の複数個の配線ラインに結合され、または第２の複数個の配線ラインと第３の複数個の配線ラインとの間に開回路を与えるよう構成可能である、請求項１に記載のプログラマブルロジックデバイス。
【請求項３】
第１の複数個の論理アレイブロックは、第１の複数個の行に配置され、第３の複数個の論理アレイブロックは第２の複数個の行に配置される、請求項２に記載のプログラマブルロジックデバイス。
【請求項４】
第２の複数個の論理アレイブロックは、第１の行に配置され、第４の複数個の論理アレイブロックは、第２の行に配置される、請求項３に記載のプログラマブルロジックデバイス。
【請求項５】
論理アレイブロックの機能は、初期には第１の複数個の行、第２の複数個の行、第１の行の各々と関連付けられ、論理アレイブロックの機能は、初期には第２の行と関連付けられない、請求項４に記載のプログラマブルロジックデバイス。
【請求項６】
論理アレイブロックが機能しないのであれば、その行を含む行と初期に関連付けられた機能および論理ブロックのその行と論理ブロックの第２の行との間の機能は各々、第２の行の方向に１行分移動される、請求項５に記載のプログラマブルロジックデバイス。
【請求項７】
論理アレイブロックが機能しないのであれば、第１の複数個のセグメンテーションバッファの構成を変更することができる、請求項６に記載のプログラマブルロジックデバイス。
【請求項８】
論理アレイブロックが機能せず、かつ機能しない論理アレイブロックが第１の複数個の論理アレイブロック内にあれば、第１の複数個のセグメンテーションバッファの構成を変更することができる、請求項６に記載のプログラマブルロジックデバイス。
【請求項９】
制御回路をさらに含み、制御回路は、複数個のセグメンテーションバッファおよび複数個のステッチバッファの構成を決定する制御信号を発生する、請求項８に記載のプログラマブルロジックデバイス。
【請求項１０】
請求項６のプログラマブルロジックデバイスを含む集積回路。
【請求項１１】
セグメンテーションバッファと、複数個の冗長の論理アレイブロックと、セグメンテーションバッファの第１の側であってセグメンテーションバッファと複数個の冗長の論理アレイブロックとの間の第１の複数個の論理アレイブロックと、セグメンテーションバッファの第２の側であってセグメンテーションバッファと複数個の冗長の論理アレイブロックとの間にない第２の複数個の論理アレイブロックとを含むプログラマブルロジックデバイスにおけるプログラム可能な配線ラインをセグメント化する方法であって、前記方法は、
欠陥のある論理アレイブロックが存在するかどうかを決定するステップと、
欠陥のある論理アレイブロックが存在しなければ、セグメンテーションバッファに変更を加えないステップとを含み、欠陥のある論理アレイブロックが存在すれば、
欠陥のある論理アレイブロックの場所を決定するステップと、
欠陥のある論理アレイブロックの場所が第１の複数個の論理アレイブロックにあれば、セグメンテーションバッファに変更を加えないステップとを含み、欠陥のある論理アレイブロックの場所が第１の複数個の論理アレイブロックになければ、
セグメンテーションバッファに結合されたラインのための活性のラインドライバの場所を決定するステップと、
活性のラインドライバの場所がセグメンテーションバッファの第２の側の隣の論理アレイブロックにあれば、第１の複数個の論理アレイブロックから第２の複数個の論理アレイブロックへ信号を駆動するようセグメンテーションバッファを設定するステップとを含み、活性のラインドライバの場所がセグメンテーションバッファの第２の側の隣の論理アレイブロックになければ、
第２の複数個の論理アレイブロックから第１の複数個の論理アレイブロックに信号を駆動するようセグメンテーションバッファを設定するステップとを含む、方法。
【請求項１２】
第１および第２の複数個の論理アレイブロックは行に配置される、請求項１１に記載の方法。
【請求項１３】
プログラマブルロジックデバイスは、ステッチバッファをさらに含み、ステッチバッファは、セグメンテーションバッファから論理アレイブロックの１行離れて、セグメンテーションバッファと論理アレイブロックの冗長の行との間に位置し、ステッチバッファは、開路または短絡回路として構成可能である、請求項１２に記載の方法。
【請求項１４】
セグメンテーションバッファの初期構成を決定するステップと、
セグメンテーションバッファが初期には開路として構成されていれば、回路を与えるようステッチバッファを設定するステップと、セグメンテーションバッファが初期には開路として構成されていなければ、
短絡回路を与えるようステッチバッファを設定するステップとをさらに含む、請求項１３に記載の方法。
【請求項１５】
プログラマブルロジックデバイスは制御回路をさらに含み、制御回路は、セグメンテーションバッファおよびステッチバッファの構成を決定する、請求項１４に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の背景】
本発明は、プログラム可能論理集積デバイス（ＰＬＤ）に関し、より特定的には、冗長回路の使用と一致する態様で垂直ラインセグメンテーションを実現するための技術および回路構成（circuitry）に関する。
【０００２】
ＰＬＤは、この数年来で至る所で見られるようになっており、いくつか例を挙げると、電気通信、データ通信、コンピュータ周辺および産業を含むあらゆる主要なエレクトロニクス市場における機器に使用されている。それらは、バイオテクノロジー、ビデオ、自動車、パーソナルコンピュータ、ならびにネットワークスイッチおよびルータの分野における特化されたシステムの主要コンポーネントである。ＰＬＤの使用が増えると、市場における競争は厳しくなり、ＰＬＤが売れる価格は下がりつづけている。そのような環境における利益幅を向上しかつ維持するために、製造業者は、自らの製品のコストに寄与するあらゆる要素を低減するよう模索している。
【０００３】
ある主要な要素は、集積回路ダイのコストである。コスト変数は、ダイのサイズおよび歩留まりを含む。ダイが小さくなると、製造される各ウェハ上のダイの合計または総計は大きくなる。歩留まりが高くなるということは、廃棄される必要のあるダイの総計が減り、より多くのダイが売れるということを意味する。
【０００４】
ＰＬＤのダイ面積の比較的大きい部分が、プログラム可能な配線などの経路付け資源に割当てられる。ある論理素子が別の素子に接続されるならば、少なくとも１つの経路付けライン（line）、またはトレース（trace）が使用される。トレースが必要とされるよりも長くなれば、余分なトレース長さが無駄なダイ面積をもたらすことになる。これが起きる場合、ダイのコストは不必要に増大する。
これらのトレースを短くする方法の１つは、それらを別個のライン部にセグメント化することである。各セグメント化された部分は異なった論理素子を互いに接続することができるので、これにより１つのラインが２つ以上の信号を伝達することが可能になる。
【０００５】
冗長回路は、良好なダイの製造の歩留まりを向上するために集積回路において使用される。集積回路が適性に機能しない特定の回路を有する場合、集積回路は廃棄される。しかし、もし冗長回路構成がオンチップで含まれれば、それが機能しない回路構成と置換可能である。このようにして、集積回路は適切に機能するようにされ、販売可能になる。
【０００６】
したがって、歩留まりの向上を可能にしながらも、ダイのサイズが最小とされ得るように、冗長回路の使用と一致する態様でＰＬＤ上のラインセグメンテーションを見込むことが望ましい。
【０００７】
【発明の概要】
したがって、本発明のさまざまな実施例は、論理アレイブロックの冗長の行（row）とともに主バッファおよびステッチバッファを提供する。セグメンテーションバッファとも言われる主バッファは、長いラインを駆動する支援をし、トレースに沿ったいずれかの方向に信号を送ることのできるドライバとして構成可能である。主バッファは、ラインのセグメント化された部分が別個の異なった信号を伝達可能であるように、開回路としてさらに構成可能である。冗長の行は、ＰＬＤにおける欠陥のある行の代わりになる。置換は、各行の機能が欠陥のあるものに始まって、ある行から冗長の位置へと移動する際に起きる。
【０００８】
このシフトは、いくつかの場合において主バッファの構成の改変を必要とする。この改変は、主バッファの初期状態、欠陥のある行の場所、およびライン上の信号を駆動する回路構成の場所に依存する。ステッチバッファが、主バッファが開回路からドライバへ変わるような状況においてラインセグメンテーションを保つために、加えられる。
【０００９】
欠陥のある行の場所の存在を補償するためにＰＬＤのプログラミングを変える必要がないことが非常に望ましい。すなわち、各デバイスは、それが欠陥のある行を有するかどうかにかかわらず、ユーザには同じように見えるべきである。したがって、本発明の実施例は、垂直ラインを駆動する回路の場所に関してデータをオンチップで記憶し、かつ冗長の目的のためにシフトすべきかどうかを行に告げる命令を記憶することに備える。この記憶されたデータを用いて、ＰＬＤプログラミングをオンチップで修正し、主バッファおよびステッチバッファに与えられる命令へ改変をもたらす。
【００１０】
本発明のある例示的実施例は、第１の複数個の論理アレイブロックを含むプログラマブルロジックデバイスを提供する。第１の複数個の論理アレイブロックは、第１の論理アレイブロックおよび第２の論理アレイブロックと、セグメンテーションバッファに結合されかつ第１の論理アレイブロックにプログラム可能に結合される第１のプログラム可能な配線ライン（interconnect line）と、セグメンテーションバッファに結合されかつ第２の論理アレイブロックにプログラム可能に結合される第２のプログラム可能な配線ラインとを含む。セグメンテーションバッファは、第１のプログラム可能な配線ラインと第２のプログラム可能な配線ラインとの間に選択的に開回路を与えることができ、バッファは、第１のプログラム可能な配線ラインから第２のプログラム可能な配線ラインに信号を駆動し、またはバッファは、第２のプログラム可能な配線ラインから第１のプログラム可能な配線ラインに信号を駆動する。
【００１１】
実施例は、第２の複数個の論理アレイブロックをさらに含み得り、第２の複数個の論理アレイブロックは冗長であり、第１の複数個の論理アレイブロックの１つに欠陥があるとき第１の複数個の論理アレイブロックの少なくともいくつかと置換するために使用される。
【００１２】
本発明のさらなる例示的実施例は、プログラマブルロジックデバイスであって、第１の複数個の論理アレイブロックの側に沿って連続的に配置される複数個のセグメンテーションバッファと連続的に配置される第１の複数個の論理アレイブロックと、第１の複数個の論理アレイブロックから離れる複数個のセグメンテーションバッファの側に沿って連続的に配置される第２の複数個の論理アレイブロックと、複数個のセグメンテーションバッファから離れる第２の複数個の論理アレイブロックの側に沿って連続的に配置される複数個のステッチバッファとを含むプログラマブルロジックデバイスを提供する。デバイスはまた、第２の複数個の論理アレイブロックから離れる複数個のステッチバッファの側に沿って連続的に配置される第３の複数個の論理アレイブロックと、複数個のステッチバッファから離れる第３の複数個の論理ゲートの側に沿って連続的に配置される第４の複数個の論理アレイブロックとを含む。
【００１３】
配線、具体的には、第１の複数個の論理アレイブロックにプログラム可能に結合されかつ複数個のセグメンテーションバッファに結合される第１の複数個の配線ラインと、第２の複数個の論理アレイブロックにプログラム可能に結合されかつ複数個のセグメンテーションバッファおよび複数個のステッチバッファに結合される第２の複数個の配線ラインと、第３の複数個の論理アレイブロックおよび第４の複数個の論理アレイブロックにプログラム可能に結合されかつ複数個のステッチバッファに結合される第３の複数個の配線ラインとが提供される。複数個のセグメンテーションバッファは、第１の複数個の配線ラインから第２の複数個の配線ラインに信号を駆動し、または第２の複数個の配線ラインから第１の複数個の配線ラインに信号を駆動し、または第１の複数個の配線ラインと第２の複数個の配線ラインとの間に開回路を与えるよう構成可能である。
【００１４】
本発明のさらなる例示的実施例は、プログラマブルロジックデバイスにおけるプログラム可能な配線ラインをセグメント化する方法を提供する。デバイスは、複数個の論理アレイブロックの行と、セグメンテーションバッファと、論理アレイブロックの冗長の行とを含む。前記方法は、欠陥のある論理アレイブロックが存在するかどうかを決定するステップを含み、欠陥のある論理アレイブロックが存在しなければ、セグメンテーションバッファを変更せず、さもなくば欠陥のある論理アレイブロックの場所が決定される。欠陥のある論理アレイブロックの場所がセグメンテーションバッファと論理アレイブロックの冗長の行との間にあるのであれば、セグメンテーションバッファに変更はなされず、さもなくば活性のラインドライバの場所が、セグメンテーションバッファに結合されるラインのために決定される。活性のラインドライバの場所が、セグメンテーションバッファと論理ブロックの冗長の行との間でないセグメンテーションバッファの隣の論理ブロックの行にあれば、セグメンテーションバッファは、セグメンテーションバッファと冗長の行との間の論理アレイブロックから、セグメンテーションバッファと冗長の行との間でない論理アレイブロックに信号を駆動するように設定され、さもなくばセグメンテーションバッファは、セグメンテーションバッファと冗長の行との間でない論理アレイブロックから、セグメンテーションバッファと冗長の行との間の論理アレイブロックに信号を駆動するように設定される。
【００１５】
本発明の性質および利点は、以下のより詳細な説明および添付の図面を参照してよりよく理解されるであろう。
【００１６】
【詳細な説明】
図１は、本発明が実施され得るデジタルシステムのブロック図を示す。システムは、単一のボード上、複数のボード上、または複数のエンクロージャ内にも設けられ得る。図１は、プログラマブルロジックデバイス１２１が利用され得るシステム１０１を例示する。プログラマブルロジックデバイスは、時に、ＰＡＬ、ＰＬＡ、ＦＰＬＡ、ＰＬＤ、ＣＰＬＤ、ＥＰＬＤ、ＥＥＰＬＤ、ＬＣＡ、またはＦＰＧＡと言われ、カスタム集積回路の柔軟性とともに固定集積回路の利点を提供する周知の集積回路である。そのようなデバイスは、ユーザが、ユーザの特定のニーズに合うように標準の既製の論理素子を電気的にプログラムすることを可能にする。たとえば、汎用のために引用により援用される米国特許番号第４，６１７，４７９号を参照されたい。プログラマブルロジックデバイスは、現在、たとえば、AlteraのＭＡＸ（Ｒ）、ＦＬＥＸ（Ｒ）、およびＰＬＤのＡＰＥＸTMシリーズに代表される。これらは、たとえば、米国特許番号第４，８７１，９３０号、第５，２４１，２２４号、第５，２５８，６６８号、第５，２６０，６１０号、第５，２６０，６１１号、第５，４３６，５７５号、およびAltera Data Book (1999)に記載され、そのすべては、この出願において引用される他の文献とともに、汎用のために完全に引用により援用される。プログラム可能論理集積回路およびその動作は、当業者にはよく知られている。
【００１７】
図１の特定の実施例において、処理装置１０１は、メモリ１０５およびＩ／Ｏ１１１に結合され、プログラマブルロジックデバイス（ＰＬＤ）１２１を組込む。ＰＬＤ１２１は、具体的には、接続１３１を介してメモリ１０５および接続１３５を介してＩ／Ｏ１１１に結合され得る。システムは、プログラムされたデジタルコンピュータシステム、デジタル信号処理システム、特殊デジタルスイッチングネットワーク、または他の処理システムであってもよい。さらに、そのようなシステムは、単に例として、電気通信システム、自動車システム、制御システム、消費者電子部品、パーソナルコンピュータなどの広範な用途のために設計され得る。
【００１８】
処理装置１０１は、処理または記憶のために適切なシステムコンポーネントにデータを向け、メモリ１０５に記憶されたもしくはＩ／Ｏ１１１を用いて入力されたプログラム、または他の同様の機能を実行する。処理装置１０１は、中央処理装置（ＣＰＵ）、マイクロプロセッサ、浮動小数点コプロセッサ、グラフィックスコプロセッサ、ハードウェアコントローラ、マイクロコントローラ、コントローラとしての使用のためにプログラムされたプログラマブルロジックデバイス、または他の処理装置であってもよい。さらに、多くの実施例において、しばしばＣＰＵは必要とされない。たとえば、ＣＰＵの代わりに、１つ以上のＰＬＤ１２１がシステムの論理演算を制御してもよい。いくつかの実施例において、処理装置１０１は、コンピュータシステムであってもよい。メモリ１０５は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、固定もしくはフレキシブルディスク媒体、ＰＣカードフラッシュディスクメモリ、テープ、またはいかなる他の記憶取出手段、またはこれらの記憶取出手段のいかなる組合せであってもよい。ＰＬＤ１２１は、図１のシステム内で多くの異なった目的を果たし得る。ＰＬＤ１２１は、処理装置１０１の論理的ビルディングブロックであってもよく、その内部動作および外部動作をサポートする。ＰＬＤ１２１は、システム動作におけるその特定の役割を実行するのに必要な論理機能を実現するようにプログラムされる。
【００１９】
図２は、図１のＰＬＤ１２１の全体的な内部アーキテクチャおよび編成の簡素化されたブロック図である。ＰＬＤのアーキテクチャ、編成および回路設計の多くの詳細は、本発明の理解のために不要であり、そのような詳細は図２に示されない。
【００２０】
図２は、３６個の論理アレイブロック（ＬＡＢ）２００の、６×６の２次元のアレイを示す。ＬＡＢ２００は、論理的機能を行なうよう構成またはプログラムされる論理的資源の物理的にグループ化された組である。ＬＡＢの内部アーキテクチャは、図３と関連して以下により詳細に記載される。ＰＬＤは、任意の数のＬＡＢを含んでもよく、図２のＰＬＤ１２１に示すより多くても少なくてもよい。一般的には、将来的に、技術が進歩し向上すると、論理アレイブロックの数がより大きいプログラマブルロジックデバイスが間違いなく作られるであろう。さらに、ＬＡＢ２００は、正方形のマトリックスまたはアレイに編成される必要はなく、たとえば、アレイは、５×７または２０×７０の、ＬＡＢのマトリックスに編成されてもよい。
【００２１】
ＬＡＢ２００は、グローバル配線構造にプログラム可能に接続されてもされなくてもよい入力および出力（図示せず）を有し、グローバル水平配線（ＧＨ）２１０とグローバル垂直配線（ＧＶ）２２０のアレイを含む。図２には単一の線として示されているが、各ＧＨ２１０およびＧＶ２２０ラインは、複数個の信号導体を表わし得る。ＬＡＢ２００の入力および出力は、隣接するＧＨ２１０および隣接するＧＶ２２０にプログラム可能に接続可能である。ＧＨ２１０およびＧＨ２２０配線を利用して、複数のＬＡＢ２００は、単一のＬＡＢ２００を使用して実現可能であるよりもより大きくより複雑な論理的機能を実現するよう接続および組合せ可能である。
【００２２】
ある実施例では、ＧＨ２１０導体およびＧＶ２２０導体は、これらの導体の交差点２２５でプログラム可能に接続可能とされてもよいしされなくてもよい。さらに、ＧＨ２１０導体およびＧＶ２２０導体は、他のＧＨ２１０導体およびＧＶ２２０導体への複数の接続をなしてもよい。さまざまなＧＨ２１０導体およびＧＶ２２０導体がプログラム可能に互いに接続されて、ＰＬＤ１２１上のある場所のＬＡＢ２００からＰＬＤ１２１上の別の場所の別のＬＡＢ２００への信号経路を生成してもよい。信号は、複数個の交差点２２５を通過し得る。さらに、あるＬＡＢ２００からの出力信号を１つ以上のＬＡＢ２００の入力に向けることができる。また、グローバル配線を用いて、ＬＡＢ２００からの信号を同じＬＡＢ２００へ戻すことができる。本発明の具体的実施例において、選択されたＧＨ２１０導体のみが、ＧＶ２２０導体の選択されたものにプログラム可能に接続可能である。さらに、さらなる実施例において、ＧＨ２１０導体およびＧＶ２２０導体は、特に、両方ではないが入力または出力などの、特定の方向に信号を送るために使用されてもよい。
【００２３】
他の実施例において、プログラム可能論理集積回路は、特定の数のＬＡＢに接続され、必ずしもＬＡＢの行または列全体ではない、特別のまたはセグメント化された配線を含み得る。たとえば、セグメント化された配線は、２つ、３つ、４つ、５つ、またはそれ以上のＬＡＢをプログラム可能に接続し得る。
【００２４】
図２のＰＬＤアーキテクチャは、チップの周辺において入力出力ドライバ２３０をさらに示す。入力出力ドライバ２３０は、外部のオフチップ回路構成にＰＬＤをインターフェイスさせるためのものである。図２は、３２個の入力出力ドライバ２３０を示すが、ＰＬＤは、任意の数の入力出力ドライバを含んでもよく、図示される数より多くても少なくてもよい。各入力出力ドライバ２３０は、入力ドライバ、出力ドライバ、または双方向ドライバとして使用されるよう構成可能である。プログラマブル論理集積回路の他の実施例において、入力出力ドライバには集積回路コア自体が埋込まれてもよい。入力出力ドライバのこの埋込まれる配置はフリップチップパッケジングで使用され得、入力出力ドライバへの信号の経路付けの寄生を最小にする。
【００２５】
図３は、図２のＬＡＢ２００の簡素化されたブロック図を示す。ＬＡＢ２００は、時に「論理セル」と呼ばれる可変数の論理素子（ＬＥ）３００と、ローカル（または内部）配線構造３１０とから構成される。ＬＡＢ２００は、８個のＬＥ３００を有するが、ＬＡＢ２００は任意の数のＬＥを有してもよく、８個より多くても少なくてもよい。本発明のさらなる実施例において、ＬＡＢ２００は、合計で１６個のＬＥになる、８個のＬＥの２つの「バンク」を有し、各バンクは、別個の入力、出力、制御信号およびキャリーチェーン（carry chain）を有する。
【００２６】
ＬＥ３００の一般的な概略を、本発明の基本的理解に十分なほどにここに示す。ＬＥ３００は、ＰＬＤの最小の論理的ビルディングブロックである。ＧＨ２１０およびＧＶ２２０からなどの、ＬＡＢの外部の信号は、ローカル配線構造３１０を介してＬＥ３００にプログラム可能に接続される。ある実施例では、本発明のＬＥ３００は、４変数ブール演算などの多数の変数の論理的関数を与えるよう構成可能である関数生成器を組込む。組合せ関数だけでなく、ＬＥ３００は、たとえばＤフリップフロップを用いて、順次関数およびレジスタ関数をサポートする。
【００２７】
ＬＥ３００は、ＬＡＢ２００の外に、ＧＨ２１０およびＧＶ２２０に接続可能である組合せおよびレジスタ出力を与える。さらに、ＬＥ３００からの出力は、ローカル配線構造３１０に内部で戻されてもよく、ローカル配線構造３１０を介して、あるＬＥ３００からの出力は、グローバル配線構造のＧＨ２１０およびＧＶ２２０を使用することなしに、他のＬＥ３００の入力にプログラム可能に接続されてもよい。ローカル配線構造３１０は、限られたグローバル資源ＧＨ２１０およびＧＶ２２０を利用することなしに、ＬＥの短距離の配線を可能にする。ローカル配線構造３１０およびローカルフィードバックを介して、ＬＥ３００は、単一のＬＥ３００を使用して実現可能であるよりもより大きくより複雑な論理機能を形成するようプログラム可能に接続可能である。さらに、その低減されたサイズおよびより短い長さのために、ローカル配線構造３１０は、グローバル配線構造と比べて低減された寄生を有する。したがって、ローカル配線構造３１０により、一般的には、信号は、グローバル配線構造を介してよりもより高速に伝搬することが可能である。
【００２８】
図４は、図２のものと同様のＰＬＤアーキテクチャを示す。図４のアーキテクチャは、埋込アレイブロック（ＥＡＢ）をさらに含む。ＥＡＢは、ユーザメモリ、ＲＡＭのフレキシブルブロックを含む。このアーキテクチャの詳細は、ＦＬＥＸ（Ｒ）１０Ｋプロダクトファミリーの記載においてAltera Data Book（1999）に見出され、米国特許番号第５，５５０，７８２号にも見出され得、それらは引用により援用される。
【００２９】
入力／出力素子４４０、列相互接続バス（column interconnect bus）４７０、行相互接続バス（row interconnect bus）４６０および論理アレイ４５０も含まれる。論理アレイ４５０は、ＬＡＢ２００を含み、ＬＡＢ２００はＬＥ３００およびローカル配線３１０を含む。２つの行、具体的にはＲｏｗ０  ４１０およびＲｏｗ１  ４２０が示される。この発明に従うさまざまなＰＬＤはより多くの行を有してもよい。たとえば、ＰＬＤが６０個以上の行を有してもよい。この柔軟な配線構造は、ＰＬＤにわたる論理素子が互いに接続することを可能にする。たとえば、Ｒｏｗ０  ４１０における論理素子３００は、行相互接続バス４６０における行配線ラインによって、Ｒｏｗ０  ４１０における他の論理素子３００に接続し得る。Ｒｏｗ０  ４１０における論理素子３００は、列相互接続バス４７０における１つ以上のラインによって、または行相互接続バス４６０の１以上のラインと組合さって列相互接続バス４７０における１以上のラインによって、Ｒｏｗ１  ４２０における論理素子３００に接続し得る。
【００３０】
図５は、プログラマブル論理集積回路アーキテクチャのさらなる実施例を示す。図５は、アーキテクチャの一部のみを示す。図５に示す特徴は、任意の所望のサイズのＰＬＤを生成するために必要に応じて水平および垂直に繰返される。このアーキテクチャにおいて、多数のＬＡＢが合わさってメガＬＡＢにグループ化される。特定の実施例において、メガＬＡＢは１６個のＬＡＢを有し、その各々が１０個のＬＥを有する。ＰＬＤあたり任意の数のメガＬＡＢがあり得る。メガＬＡＢは、メガＬＡＢ配線を用いてプログラム可能に接続される。このメガＬＡＢ配線は、グローバル配線層とローカル配線層との間にある別の配線層と考えられ得る。メガＬＡＢ配線は、ＧＶ、ＧＨおよびメガＬＡＢの各ＬＡＢのローカル配線にプログラム可能に接続可能である。図２のアーキテクチャと比べて、このアーキテクチャは、配線のさらなる層、メガＬＡＢ配線を有する。そのようなアーキテクチャは、引用により援用される、APEX 20K Programmable Logic Device Family Data Sheet（1999年８月）に詳細に記載されるＡｌｔｅｒａのＡＰＥＸTMファミリーのプロダクトに見出される。特定の実現化例において、メガＬＡＢは、ＣＡＭ機能、ＲＡＭ機能、デュアルポートＲＡＭ機能、ＲＯＭ機能、およびＦＩＦＯ機能などのさまざまなメモリ機能を実現するために埋込システムブロック（ＥＳＢ）をも含む。
【００３１】
図５は、ＬＡＢ２００におけるＬＥ３００およびプログラム可能な配線ラインへのそれらの可能性ある接続のより詳細な図である。論理素子３００、垂直または列相互接続バス４７０、水平または行相互接続バス４６０、およびローカル相互接続バス３１０が含まれる。各ＬＥ３００は、図示のように、２つのローカル相互接続バス３１０に接続し得る。各ＬＥ３００は、２つの垂直または列相互接続バス４７０、ならびに少なくとも１つの行相互接続バス４６０およびメガＬＡＢ相互接続バス４８０にも接続し得る。この高度に柔軟な経路付け方式は、別個のＬＥが近傍のＬＥに、同じ行のＬＥに、または異なった行のＬＥに結合することを可能にする。
【００３２】
図６は、ＰＬＤの簡素化された部分６００の図である。垂直（または列）相互接続バス４７０の１つのラインまたはＧＶ（またはトレース）６１０が含まれる。さまざまなドライバ、受取回路、水平配線ラインＧＨ、メガＬＡＢ配線などが、垂直ライン６１０にプログラム可能に結合され得る。簡素化するためにここにはドライバのみが示される。たとえば、Ｒｏｗ０  ６８５におけるドライバＤ０６２０は、素子Ｍ０  ６３０を介して垂直トレース６１０に結合し得る。Ｍ１１  ６７０が導通すれば、信号はＲｏｗ５  ６９０における受取回路Ｒ５  ６８０によって受取られる。同様の態様で、図示の６個の行のいずれかにおけるＬＥからの信号は、Ｒｏｗ５  ６９０を介してＲｏｗ０  ６８５の１つ以上の受取回路によって受取られ得る。
【００３３】
図７は、本発明のある実施例に従うＰＬＤの簡素化された部分７００の図である。垂直相互接続バス４７０のＧＶまたはある１つのライン７１０が含まれる。この例示の例では、駆動回路Ｄ２  ７４０は、Ｍ４  ７５０を介して、それぞれ素子Ｍ１  ７２０および素子Ｍ１１  ７７０を介してＲｏｗ０  ７０１における受取回路Ｒ０  ７３０およびＲｏｗ５  ７０８における受取回路Ｒ５  ７８０に信号を与える。やはり垂直ラインが示されるが、ラインは代わりに水平であってもよく、またはラインは非直交であってもよい。また垂直のライン、水平のラインおよび非直交のラインの組合せが使用されてもよい。行も論じられる、代わりに、冗長の列が、本発明のさまざまな実施例によって使用され得る。
【００３４】
これらの垂直ラインの長さは、比較的長いものであり得る。行の数は、ここに示す代表の５つの行よりも大きくてもよく、垂直ライン７１０は、それらのすべてを通り得る。たとえば、６０個の行があってもよい。代わりに、６０より多い行または６０より少ない行があってもよい。いくつかの実施例においては、１２０以上の行があってもよい。この長いライン長さは、Ｄ２  ７４０などのドライバによって駆動されるべき大量のキャパシタンスに変換する。これにより信号の遅延が増大してしまう。さらに、いくつかの場合においては、ラインの全長が必要でない。たとえば、Ｒｏｗ２  ７０３におけるドライバは、Ｒｏｗ０  ７０１におけるレシーバに接続されるだけでよい。その場合には、Ｒｏｗ２  ７０３より下の残りのラインは無駄になり、ドライバＤ２  ７４０に不要な負荷をもたらしてしまう。
【００３５】
これらの問題を軽減するために、本発明のある実施例は、７１０および７１１としてここに示される、２つの部分に垂直ラインを分割する。これらの２つのライン部は、主バッファ７６０によって互いに結合される。主バッファ７６０は、３つの異なったモードに構成可能である。主バッファ７６０は、ドライバＤ２  ７４０が垂直トレース部７１１を駆動する支援をするように、下方向に駆動するよう構成されてもよい。主バッファ７６０は、代わりに、より下の行（主バッファ７６０より下）におけるドライバが垂直トレース部７１０を駆動し得、信号がレシーバＲ０  ７３０に送られ得るように、上方向に駆動するよう構成されてもよい。主バッファ７６０は、開回路として構成されてもよい。この場合には、２つの別個のライン部を有する１つの垂直ラインを用いて２つの信号を２つの別個の宛先に運ぶことができる。ある例では、Ｒｏｗ２  ７０３におけるドライバＤ２  ７４０は、Ｒｏｗ０  ７０１におけるレシーバＲ０  ７３０を駆動し、一方でＲｏｗ３  ７０４におけるドライバが同時に、Ｒｏｗ５  ７０８におけるレシーバＲ５  ７８０を駆動する。
【００３６】
構成可能な主バッファ７６０を加えることにより、垂直ラインの全体を駆動する回路は、主バッファからの支援を受ける。これは、駆動回路への容量性負荷を低減し、それらのＡＣ性能を向上する。
【００３７】
図７の集積回路部７００は、冗長Ｒｏｗ７１２をも含む。普通には、行の回路構成を機能しないようにする欠陥がある場合、デバイス全体が廃棄される。しかし、余分の行が加えられれば、その行は欠陥のある行と置換することができ、完全に機能するデバイスになる。冗長の行は、機能しない行と直接置換し得る。代わりに、本発明の実施例によって用いられる方法は、欠陥のある行にあるまたはその下の各行と関連付けられる回路構成を、１行分下に移動することである。たとえば、製造欠陥が、Ｒｏｗ２  ７０３が使用不可能であるようなものである場合、Ｒｏｗ２  ７０３の機能は、Ｒｏｗ３  ７０４と表示される場所に移動する。すなわち、Ｒｏｗ３  ７０４は、Ｒｏｗ２  ７０３が欠陥について救済されてしまったかのように構成される。Ｒｏｗ３  ７０４は偏位されてしまうので、それはＲｏｗ４  ７０６に移動する。同様に、Ｒｏｗ４  ７０６の機能は、Ｒｏｗ５  ７０８に移動し、Ｒｏｗ５  ７０８は空きの冗長Ｒｏｗ７１２に移動する。
【００３８】
行、この例では具体的には、Ｒｏｗ２  ７０３が主バッファ７６０の片側から他方へ移動するとき複雑なことになる。Ｒｏｗ２  ７０３において欠陥がなければ、Ｒｏｗ２  ７０３におけるドライバＤ２  ７４０は、Ｒｏｗ０におけるレシーバＲ０  ７３０および主バッファ７６０を駆動し、主バッファ７６０がＲｏｗ５におけるレシーバＲ５  ７８０を駆動する。したがって、Ｒｏｗ２  ７０３における欠陥の不在下での主バッファ７６０のための適切な設定は、下方に駆動する構成である。
【００３９】
しかし、Ｒｏｗ２  ７０３に欠陥がある場合、Ｒｏｗ２  ７０３と関連付けられる回路構成は、Ｒｏｗ３  ７０４と表示される場所に移動する。これは、ドライバＤ２  ７４０が、ライン部７１１、主バッファ７６０によって駆動されるのと同じライン部を今駆動していることを意味する。２つのラインドライバの出力が同じラインに活性して結合されるということは非常に望ましくない。ライン上の信号レベルは、決定されておらず、ドライバＤ２  ７４０および主バッファ７６０の相対強度の関数である。そのうえ、主バッファは他方向に信号を駆動するよう構成されるので、ドライバＤ２  ７４０からの信号は、Ｒｏｗ０における受取回路Ｒ０  ７３０に達することができない。この例から、冗長回路が使用されれば、主バッファ７６０の構成が変更しなければならない可能性があるということがわかる。本発明のある実施例は、主バッファ７６０の極性を逆にすることによりこの問題を克服する。具体的には、この例では、主バッファ７６０は、ドライバＤ２  ７４０がＲｏｗ５  ７０８におけるレシーバＲ５  ７８０および主バッファ７６０を駆動し、主バッファ７６０がＲｏｗ０  ７０１におけるレシーバＲ０  ７３０を駆動するように、上方駆動構成に方向を逆転する。構成、および置換される不良の行の場所に依存して、ステッチバッファ７０５が必要とされる。このステッチバッファ７０５は、主バッファ７６０より下の行の下に位置する。ステッチバッファがなぜおよびいつ必要とされるかについての例は、以下の図面の説明に示される。
【００４０】
各行について、その機能がシフトされ得る１つのみの行があれば、１つのみのステッチバッファが必要である。行の機能が近傍の行にシフトするならば、ステッチバッファは１行分だけ主バッファから分離されるべきである。しかし、所与の行の機能が移動され得る２つ以上の行があるならば、２つ以上のステッチバッファが必要である。たとえば、行の機能がシフトされる可能性のある２つの行があるならば、２つのステッチバッファが必要である。この場合には、機能は近傍の行にシフトされ、一方のステッチバッファは１行分主バッファから分離され、他方は２行分分離されるべきであり、分離はシフトの方向であるべきである。
【００４１】
プログラマブルロジックのための冗長回路構成は、米国特許番号第４，８９９，０６７号、第５，３６９，３１４号、第５，４３４，５１４号、第５，５９２，１０２号、および第６，０３４，５３６号に記載され、これらは引用により援用される。
【００４２】
ＡｌｔｅａｒのＡＰＥＸデバイスファミリーのアーキテクチャにおいて、典型的には、セグメンテーションバッファが垂直ライン上に加えられるたびに、冗長回路構成が正しく働くために、さらなる冗長行が加えられる必要がある。これは、ダイのサイズを増大させ、これがコストを増大する。
【００４３】
本発明において、垂直ラインセグメンテーションは、さらなる冗長行を加える必要なしに実現される。この発明は、不良部品にさらなる冗長行を使用する必要なしに、正常な部品および不良な部品において信号を適切に向けるためのさらなる論理を使用する。
【００４４】
さらなる論理回路構成を用いて、この新しい冗長方式を実現する。それでも、この論理付加は、さらなる冗長行を付加するよりもはるかにより効率的である。
【００４５】
垂直ラインセグメンテーションのこの新しい冗長方式の多くの利点の中には、（１）現在の制御論理への簡単な変更、および（２）さらなる冗長行の必要がなく、より小さいダイサイズで済むということがある。垂直ラインセグメンテーションのこの新しい冗長方式は、（１）冗長制御論理のためのさらなる構成ラム（ram）ビット、および（２）セグメンテーションバッファの既存の制御論理の変更を必要としない。
【００４６】
図８は、集積回路上に形成され得るプログラマブルロジックデバイスの代表的部分８００である。Ｒｏｗ０  ８０１、Ｒｏｗ１  ８０２、Ｒｏｗ２  ８０３、Ｒｏｗ３  ８０４、Ｒｏｗ４  ８０５、Ｒｏｗ５  ８０６および冗長Ｒｏｗ８０７を含む、論理アレイブロックの行が含まれる。部分８１０および８２０を有する第１の垂直ラインと、部分８３０および８５０を有する第２の垂直ラインと、部分８６０および８８０を有する第３の垂直ラインと、部分８９０および８９５を有する第４の垂直ラインとを含む垂直ラインも含まれる。ＰＬＤは、多くの垂直ラインを含んでもよい。たとえば、ＰＬＤは、各行に多くのＬＡＢを有し得、ＬＡＢに１０個のＬＥがあり、各ＬＥが１つ以上の垂直ラインにプログラム可能に結合される。主バッファが、各垂直トレースに沿って、２つのライン部間に置かれる。主バッファ８１５、８４０、８７０および８９７は、開路として、下方向に駆動するバッファとして、または上方向に駆動するバッファとして構成され得る。
【００４７】
さまざまな駆動および拝受の接続が、図８および図９における矢印として示されている。矢印は、論理素子へのプログラム可能な接続、トライステートバッファを介する論理回路へのプログラム可能な接続、垂直もしくは行ラインもしくはトレースへのプログラム可能な接続、または他のプログラム可能な接続を示し得る。簡素化のために、このおよび同様の接続は論理素子へのものであるものとして記載されるが、それらはこれらの構造のいずれへのものであってもよい。たとえば、Ｒｏｗ２  ８０３における論理素子は、垂直ライン部８１０に信号を与え、これはＲｏｗ０  ８０１における受取回路によって受取られる。同様に、Ｒｏｗ３  ８０４における駆動回路は、垂直ライン部８２０に信号を与え、これはＲｏｗ５  ８０６における論理素子によって受取られる。さらに、Ｒｏｗ２  ８０３における論理素子は、垂直ライン部８３０に信号を与え、これはＲｏｗ０  ８０１における論理素子によって受けられ、主バッファ８４０によって垂直ライン部８５０に駆動され、ここでそれはＲｏｗ５  ８０６における論理素子によって受けられる。Ｒｏｗ１  ８０２における論理素子は、ライン部８６０に信号を与え、これはＲｏｗ２  ８０３における論理素子によって受けられる。Ｒｏｗ３  ８０４における論理素子は、垂直ライン部８８０に信号を与え、これはＲｏｗ５８０６における論理素子によって受けられる。主バッファ８７０は、開回路として構成される。これは、第３の垂直ラインが、異なった論理素子３００に配線される２つの部分にセグメント化されることを可能にする。また、Ｒｏｗ１における論理素子は、垂直ライン部８９０に信号を駆動し、これは主バッファ８９７によってバッファされ、垂直ライン部８９５へ下方向に駆動され、そこでこれはＲｏｗ５  ８０６における論理素子によって受けられる。
【００４８】
欠陥がＲｏｗ０  ８０１を動作不能にした場合、冗長Ｒｏｗ８０７が使用される。具体的には、本発明のある実施例は、Ｒｏｗ０  ８０１の論理構成を下方向へＲｏｗ１  ８０２位置に移動する。同様に、各行は、Ｒｏｗ５  ８０６の機能が冗長Ｒｏｗ８０７に存在するように、１つ分下に下がる。やはり、主バッファの構成は、このシフトを補償するために改変される必要があり得る。
【００４９】
行を動作不能にし得る可能性ある欠陥の例は、半導体材料の結晶構造におけるピンホール、開路、短絡、または配線金属トレース間の橋絡などを含む。欠陥は、あるＬＥが機能しないことなどであり得る。代わりに、欠陥は、いくつかのＬＥが機能しないようにすることかもしれないし、ＬＡＢ全体が機能しないようになることもあり、またはＬＡＢの行全体が機能しないようになることもある。
【００５０】
図９は、プログラマブルロジックデバイスの代表的な部分８００をやはり示す。この図において、集積回路の部分８００は、最上位の行における欠陥を補償するために再構成されてしまっている。欠陥のある行を有さないデバイスがプログラムされるならば、その結果は図８の構成となる。しかし、Ｒｏｗ０  ８０１に欠陥があるならば、同じプログラミングは、図９の構成を生じる。すなわち、一方が欠陥のあるＲｏｗ０を有し、他方が有さない以外は同一の２つの集積回路が、それぞれ図８および図９に示す２つの構成をもたらす同じプログラミングを受ける。以下からわかるように、これは、情報のビットがオンチップに記憶され、プログラミングデータを修正するように働くからである。
【００５１】
やはり、Ｒｏｗ２  ８０４における論理素子は、第１の垂直ラインを用いてＲｏｗ０  ８０２における論理素子を駆動する。主バッファ８１５は、図８に示す開回路から、図９に示す上方に駆動する構成へ再構成される。このように、Ｒｏｗ２  ８０４における論理素子は、行すべてが１つ分下にシフトされてしまったとしても、Ｒｏｗ０  ８０２における論理素子を駆動し続ける。
【００５２】
しかし、Ｒｏｗ３  ８０５における論理素子は、同じ垂直トレースを用いてＲｏｗ５  ８０７における論理素子を駆動する。したがって、さらになければ、Ｒｏｗ２  ８０４における論理素子およびＲｏｗ３  ８０５における論理素子はどちらも、第１の垂直ラインを駆動しようとするだろう。したがって、スイッチバッファ９０５を、主バッファの真下にある行の下に加える。具体的には、ステッチバッファは、Ｒｏｗ２  ８０４とＲｏｗ３  ８０５との間に加えられる。各ステッチバッファは、開回路または短絡回路のいずれかとして構成され得る。この具体的な例において、ステッチバッファは、開いており、Ｒｏｗ２  ８０４における論理素子がＲｏｗ０  ８０２における論理素子を駆動することを可能にしながら、同じ垂直ラインであるが異なったライン部が、Ｒｏｗ３  ８０５における論理素子によってＲｏｗ５  ８０７における論理素子を駆動するのに使用される。
【００５３】
ＰＬＤは、特定の機能を行なうよう構成されるように外部で生成される信号によってプログラムされる。この例では、主バッファ８１５は、開路であるようにプログラムされる。このプログラム可能性は、主バッファ８１５が上方向に駆動するよう命令されるようにオンチップで修正される。また、プログラムされないが、デフォルトでは短絡しているステッチバッファは、開路を形成するよう命令される。このように、ラインセグメンテーション命令は、オンチップで修正され、欠陥のある行の存在および場所と関係なく、プログラミングシステムが同じプログラムを使用することを可能にする。
【００５４】
同様に、Ｒｏｗ２  ８０４における論理素子は、第２の垂直ラインを用いてＲｏｗ０  ８０２における論理素子を駆動する。したがって、第２の垂直ラインと関連付けられる主バッファ８４０は、図８に示す下方向への駆動から、図９に示す上方向への駆動へと再構成される。また、Ｒｏｗ２  ８０４における論理素子は、Ｒｏｗ５  ８０７における論理素子を駆動しているので、ステッチバッファ９１０は閉じたままである。このように、Ｒｏｗ２  ８０４における論理素子は、機能していない最上位の行を補償するために１位置分、すべての行が下方にシフトされた後に、引続きＲｏｗ０  ８０２における論理素子およびＲｏｗ５  ８０７における論理素子を駆動する。
【００５５】
Ｒｏｗ１  ８０３における論理素子およびＲｏｗ３  ８０５における論理素子は第３の垂直ラインを用いて、それぞれ、Ｒｏｗ２  ８０４における論理素子およびＲｏｗ５  ８０７における論理素子を駆動する。したがって、主バッファ８７０は、図８に示す開いた状態から図９に示す下方向へ駆動する状態に再構成される。また、２つのドライバがこのラインを使用するので、ステッチバッファ９２０は開かれている。第４の垂直配線ラインは、Ｒｏｗ５  ８０７における論理素子を駆動するためにＲｏｗ１  ８０３における論理素子によって使用される。この場合には、主バッファ８９７またはステッチバッファ９３０への変更はない。
【００５６】
先行の段落によってわかるように、構成可能な主バッファおよびステッチバッファを使用することにより、実際の行が欠陥を補償するために移動してしまったとしても、ＰＬＤ部８００に示すような元々の配線構成が保たれる。このように、長い垂直ラインは、上述した冗長方式と一致する態様で、引続きバッファまたはセグメント化される。
【００５７】
図８および図９のＰＬＤ部８００に示す行のパターンは、いくつかの集積開路において繰返され鏡映されてもよい。また、さらなるバッファリングおよびラインセグメント化が、２つの鏡映された部分間に加えられてもよい。図１０は、そのような構成の一例である。Ｒｏｗ０〜５、冗長Ｒｏｗ１０２５、主バッファ行１０１５、およびステッチバッファ行１０２０が含まれる。このパターンは、Ｒｏｗ１１〜Ｒｏｗ６および冗長Ｒｏｗ１０３５をはじめとして、主バッファ行１０４５およびステッチバッファ行１０４０を含んで、鏡映される。セグメンテーションバッファ１０３０の別個の行が、冗長Ｒｏｗ１０２５と１０３５との間に加えられる。この構成は、ＧＶまたは垂直ラインの各々が４つの部分に分割されることを可能にする。具体的には、不良の行がなければ、各垂直ラインは、行０で始まり行２で終わる第１の部分と、行３で始まり冗長の行１０２５で終わる第２の部分と、冗長の行１０３５で始まり行８で終わる第３の部分と、行９で始まり行１１で終わる第４の部分とに分割可能である。どの２つの連続する部分も、上または下に駆動する構成に設定された主バッファによって互いに結合され得る。
【００５８】
図１１は、置換を必要とする不良の行の場所、および、主バッファの位置に対する垂直ライン上の活性駆動回路の場所に依存して、主バッファおよびステッチバッファの構成における変更を決定するための記号の真理値表である。活性駆動回路は、ＬＥ３００、水平またはＧＨライン、または他のプログラム可能な接続であってもよい。主バッファのための元々のプログラミングは決定されており、列１１１０に列挙されている。最初に、すべてのステッチバッファは、列１１２０に示されるように閉じている（それらはプログラムされていない）。欠陥のある行の場所は決定されており１１３０に列挙される。欠陥のある行の可能性ある場所は２つあり、すなわち欠陥のある行は、列１１３０のＵ１によって示されるように主バッファの上にあるか、Ｕ２によって示されるように主バッファの下にあるかのいずれかである。この値は、主バッファの上の行を検査し、その機能がそれより上の行からシフトされたかどうかを決定することによって発見可能である。次に、垂直ラインドライバが主バッファの真上の行において活性であるかどうかが決定される。この情報は、ＲＡＭ、ＰＲＯＭまたは他のメモリ回路においてなど、オンチップでプログラム可能に記憶可能である。主バッファの真上の行に活性の垂直ラインドライバがあれば、列１１４０に列挙するように、ドライバ場所は「近い」（near）という。そうでなければ、ドライバの場所は「遠い」（far）という。この情報から、主バッファおよびステッチバッファの更新された設定は、それぞれ列１１５０および１１６０に与えられる。更新された設定は、オンチップデータＵ１およびＮｅＦａによって修正された、列１１１０における元々の設定である。
【００５９】
Ｒｏｗ１１７０は、図８および図９の第１の垂直ラインとして与えられた例の代表例である。その場合には、主バッファは開かれているまたはセグメント化されていた。列１１３０におけるＵ１として表わされるように、不良の行は最上位の行であった。Ｒｏｗ２  ８０３における論理素子は、第１の垂直ラインを駆動しており、そのためドライバの場所は近いといわれる。したがって、更新された設定は、主バッファが上方向に駆動するように構成されるべきであり、ステッチバッファが開かれるかまたはセグメント化されるようにする。
【００６０】
図８および図９の第２の垂直トレースの例は、真理値表１１００の行１１８０に対応する。主バッファの元々の設定は、それを下方向に駆動させる。不良の行はやはり、１１３０におけるＵ１として示される部分８００の最上位であった。また、Ｒｏｗ２における論理素子は、第２の垂直トレースを駆動する。Ｒｏｗ２８０３は、図８に示すように主バッファの真上にあるので、ドライバの場所は、近いといわれる。したがって、主バッファの設定は、上方向に駆動するよう更新され、一方ステッチバッファはステッチされるかまたは閉じられたままである。
【００６１】
図８の例における第３の垂直ラインは、真理値表１１００の行１１９０によって表わされる。元々の設定は、セグメント化されるために主バッファを必要とする。不良の行は主バッファの上にあり、ドライバの場所は主バッファの真上の行にはなく、したがってそれは遠い。それにより、列１１５０および１１６０によって示されるように、主バッファが下方向に駆動し、ステッチバッファが開かれるかセグメント化されるように、構成は変更される。図８の第４の垂直ラインは、図１１の真理値表１１００に行１１９５によって表わされる。元々の構成は、下方向に駆動するために主バッファを、閉じられるためにステッチバッファを必要とする。置換されるべき不良の行は主バッファより上にあり、ドライバの場所は遠い。したがって主バッファ構成およびステッチバッファ構成は変わらない。
【００６２】
このように、セグメンテーションまたは主バッファのためのプログラムされたデータ、およびその対応するステッチバッファのためのデフォルト設定は、欠陥のある行の存在および場所、ならびに垂直ラインドライバの場所に従って修正される。次に、欠陥のある行の場所および存在と関係なしに、同じプログラミングデータが見えないような態様で同じ結果を生ずるように、修正されたデータを用いて主バッファおよびステッチバッファを制御する。これは、不良の行を有する集積回路、および欠陥なしのものが、あわせて区別なしに販売されプログラムされることを可能にする。
【００６３】
図１２は、本発明の実施例に従うＰＬＤにおける主バッファおよびステッチバッファのための制御論理回路構成を設計するのに使用され得る真理値表である。入力ＲＬＴＲＴ１２１２、ＲＲＴＬＴ１２１４、ＮｅＦａ１２１６およびＵ１  １２１８、ならびに出力ＲＬＴＬＴｘ１２２２、ＲＲＴＬＴｘ１２２４およびＳｕｂ＿Ｂｕｆ１２２６が含まれる。この図はまた、論理出力のためのブール等式１２７０を提供する。入力信号ＲＬＴＲＴ１２１２についてのハイまたは１は、主バッファを介して左から右へ信号が送られ、その後に不良の行を補償するための何らかがなされるということを示す。なお、左から右へ送られる信号は、信号がＧＶまたは垂直トレースの上方へ送られるということを意味し、右から左への信号は、垂直トレースを下方に送られるということを意味する。上記のように、上方、下方、左および右の方向は、例示の目的のためにのみ与えられる。信号は、上方もしくは下方または左もしくは右、または非直交の方向に伝わるであろう。入力信号ＲＲＴＬＴ１２１４についてのハイまたは１は、主バッファが信号を右から左へ送るということを示す。ＮｅＦａ１２１６信号についての１は、主バッファの真上にある行に位置する活性ドライバがあり、その後に欠陥のある行を補償するためのシフトが生じることを示す。やはり、活性ドライバは、ＬＥ３００、水平配線もしくはＧＨライン、または他のプログラム可能な接続であってもよい。入力信号Ｕ１  １２１８についてのハイまたは１は、不良の行が主バッファの上にあることを示す。
【００６４】
出力信号ＲＬＴＲＴｘ１２２２についてのハイは、いかなる行シフトが起こるよりも前に、主バッファが信号を左から右に送るべきであるということを示す。「Ｘ」は、特定の状態が生じ得ないことを示す。具体的には、上方向に駆動するバッファが主バッファの真上の行におけるドライバと競合しないであろうから、行１２３０は発生しない。回路構成は２つの競合するドライバで構成されるべきでないので、この状態は起こらない。主バッファは同時に左から右へかつ右から左へとデータを送ることはできないので、状態１２４０も起こらない。
【００６５】
出力信号ＲＲＴＬＴｘ１２２４のハイまたは１は、行シフトが行なわれた後に、主バッファが右から左へデータを送るべきことを示す。出力信号Ｓｕｂ＿Ｂｕｆ１２２６のハイまたは１は、ステッチバッファがステッチまたは閉じられた位置にあるということを意味し、ローまたは０は、ステッチバッファがセグメント化されているかまたは開かれているということを示す。等式１２７０は、入力信号１２１０の関数として出力信号１２２０を定義する。
【００６６】
ＮｅＦａ１２１６の値は、たとえばＲＡＭ、ＰＲＯＭ、フラッシュメモリ、フリップフロップまたは他の記憶回路においてなど、チップ上に記憶可能である。行の機能がそれがあるところに留まっているのか、または１行分シフトしているのかを示す、各行ごとの１ビットを記憶することもできる。この情報は、外部からの一般的なプログラミングデータが、チップ上で修正され、不良の行の存在を適切に補償することを可能にする。したがって、Ｕ１の値は、シフトすべきかどうか、セグメンテーションの真上の行に命令するビットを検査することによって決定可能である。
【００６７】
図１３は、図１２に示す真理値表１２００を実現するよう設計された論理ブロックの概略である。入力ライン１３１２、１３１４、１３１８および１３１６にそれぞれ与えられる入力信号ＲＬＴＲＴ１２１２、ＲＲＴＬＴ１２１４、Ｕ１  １２１８、およびＮｅＦａ１２１６が含まれる。各入力信号は、それぞれインバータ１３７０、１３６０、１３５０および１３４０によって反転される。入力信号およびそれらの反転されたバージョンは、入力として、論理ゲート組合せ１３１０、１３２０および１３３０に与えられる。これらの論理ゲート組合せは、結果として得られる出力信号ＲＬＴＲＴｘ１２２２、ＲＲＴＬＴｘ１２２４、およびＳｕｂ＿Ｂｕｆ１２２６を、それぞれライン１３２２、１３２４および１３２６に与える。図示の論理実現化例は、前述のインバータとともに、ＡＮＤゲートおよびＯＲゲートを使用する。他の論理構成を用いて同じまたは同様の論理機能を実現することができることは当業者には明らかである。たとえば、論理ゲート組合せ１３１０、１３２０および１３３０を実現するためにＮＡＮＤゲートおよびＮＯＲゲートが使用されてもよい。
【００６８】
図１４は、本発明の実施例に従う主バッファおよびステッチバッファを設定するための意思決定プロセスを示すフローチャートである。アクト１４１０において、主バッファの上に欠陥のある行があるかどうかが決定される。不良の行が主バッファより下にあるかまたは欠陥のある行が存在しないかのいずれかのために、その答えが否であれば、アクト１４３０において主バッファおよびステッチバッファに変更はなされない。不良の行があり、それが主バッファの上であれば、アクト１４２０において、主バッファの真上の行において活性垂直ドライバがあるかどうかが決定される。答えが否であれば、アクト１４５０において主バッファは下方向に駆動するように設定される。主バッファの真上の行に活性垂直ラインドライバがあれば、アクト１４４０において主バッファは上方に駆動するように設定される。アクト１４６０において、垂直ラインが問題の主バッファによってセグメント化されるかどうかを決定する。されていないならば、アクト１４８０においてステッチバッファは閉じられたままである。垂直ラインが主バッファによってセグメント化されるのであれば、アクト１４７０においてステッチバッファは、セグメント化タスクを担い、開かれる。
【００６９】
図１５は、本発明の実施例に従う主バッファの概略である。入力ＲＬＴＲＴｘ１２２２、ＲＲＴＬＴｘ１２２４、ライン１５０１上の垂直ライン接続ＬＬＩＮＥおよびライン１５０２上の垂直ライン接続ＲＬＩＮＥ、ならびにライン１５３５上のイネーブル信号ＮＦＲＸＤＲＶが含まれる。ライン１５３５上のイネーブル信号ＮＦＲＸＤＲＶがハイであれば、ライン１５２２の信号ＲＬＴＲＴｘ１２２２のハイが、ライン１５７７の信号ＬＴＲＴをハイに駆動する。これは、素子Ｍ３  １５８５を介してライン１５０１をライン１５４５に結合する。また、ライン１５６５は素子Ｍ２  １５５２を介してライン１５０２に結合される。したがって、ライン１５０１の信号ＬＬＩＮＥは、インバータ１５７０および１５６０を駆動し、ライン１５０２の信号ＲＬＩＮＥをもたらす。
【００７０】
反対に、ライン１５３５のイネーブル信号ＮＦＲＸＤＲＶがハイであれば、ライン１５２４の信号ＲＲＴＬＴｘ１２２４のハイが、ライン１５７５の信号ＲＴＬＴをハイに駆動する。これは、素子Ｍ４  １５９５を介してライン１５０２をライン１５４５に結合する。また、ライン１５６５は素子Ｍ１  １５５０を介してライン１５０１に結合される。したがって、ライン１５０２の信号ＲＬＩＮＥは、インバータ１５７０および１５６０を駆動し、ライン１５０１の信号ＬＬＩＮＥをもたらす。ライン１５３５のイネーブル信号ＮＦＲＸＤＲＶがローであるか、信号ＲＬＴＲＴｘ１２２２またはＲＲＴＬＴｘ１２２４のいずれもがハイでないかのいずれかであれば、素子Ｍ１  １５５０、Ｍ２  １５５０、Ｍ３  １５８５およびＭ４  １５９５はすべて開き非導通状態である。この条件において、ライン１５０１とライン１５０２との間に高インピーダンスが見られ、主バッファはセグメント化される。
【００７１】
図１６は、本発明のある実施例に従うステッチバッファ１６００の概略である。素子Ｍ１  １６２０が含まれる。素子Ｍ１  １６２０のドレイン領域およびソース領域は、それぞれ入力ノード１６４０および出力ノード１６３０を形成する。素子Ｍ１  １６２０のゲートまたは制御電極は、論理ブロック１３００または他の制御論理ブロックからライン１６１０のＳｕｂ＿Ｂｕｆ信号を受ける。ライン１６１０のＳｕｂ＿Ｂｕｆ信号がハイであれば、バッファはステッチまたは短絡の構成にされるが、これはステッチバッファのデフォルト状態である。ライン１６１０のＳｕｂ＿Ｂｕｆ信号がローであれば、バッファは開いているまたはセグメント化される。
【００７２】
この発明の特定の実施例の前の記載は、例示および説明のために提示された。
この発明を記載された正確な形に限定したりまたは余すところのないものではなく、多くの修正および変形が上記の教示に鑑みて可能である。実施例は、この発明の原理およびその実際の用途を最もよく説明するために選択され記載されたものであって、それにより当業者が企図される特定の使用に適するさまざまな実施例およびさまざまな変形でこの発明を最もよく利用することを可能にするものである。この発明の範囲は、前掲の特許請求の範囲によって定義されることが意図される。
【図面の簡単な説明】
【図１】  プログラム可能論理集積回路を備えるデジタルシステムの図である。
【図２】  プログラム可能論理集積回路のアーキテクチャの図である。
【図３】  論理アレイブロック（ＬＡＢ）の簡素化されたブロック図である。
【図４】  埋込アレイブロック（ＥＡＢ）を備えるプログラム可能論理集積回路のアーキテクチャの図である。
【図５】  メガＬＡＢを備えるプログラム可能論理集積回路のアーキテクチャの図である。
【図６】  垂直トレースを含むＰＬＤの一部の図である。
【図７】  主バッファおよびステッチバッファを備える冗長の行および垂直トレースを含むＰＬＤの一部の図である。
【図８】  主バッファおよびステッチバッファを備える冗長の行および４つの垂直トレースを含むＰＬＤの一部の図である。
【図９】  不良の行を補償するための回路変更が生じた後の図８に示すＰＬＤの一部の図である。
【図１０】  本発明の実施例に従う態様で設計および配置されるＰＬＤの一般化された配置の図である。
【図１１】  本発明のある実施例における主バッファおよびステッチバッファのための更新された制御設定を決定するための記号的真理値表の図である。
【図１２】  図１１の記号的真理値表を実現するブール真理値表の図である。
【図１３】  図１２の制御論理回路構成の実現化例の図である。
【図１４】  欠陥のある行およびラインドライバの場所の関数として主バッファおよびステッチバッファの制御論理の状態を変更するための流れ図である。
【図１５】  主バッファの概略図である。
【図１６】  ステッチバッファの概略図である。
【符号の説明】
２００  論理アレイブロック、３００  論理素子、３１０ローカル配線、４５０  論理アレイ、４６０  行配線、４７０  列配線
【図１】
0004558234.tif 000002
【図２】
0004558234.tif 000003
【図３】
0004558234.tif 000004
【図４】
0004558234.tif 000005
【図５】
0004558234.tif 000006
【図６】
0004558234.tif 000007
【図７】
0004558234.tif 000008
【図８】
0004558234.tif 000009
【図９】
0004558234.tif 000010
【図１０】
0004558234.tif 000011
【図１１】
0004558234.tif 000012
【図１２】
0004558234.tif 000013
【図１３】
0004558234.tif 000014
【図１４】
0004558234.tif 000015
【図１５】
0004558234.tif 000016
【図１６】
0004558234.tif 000017