(57)【要約】少なくとも１つの局部的欠陥を含むプログラマブルロジックデバイスを利用するための方法が開示される。このようなデバイスは検査されて、欠陥によって影響を受けた資源を必要としないかもしれない選択された設計を実現するための適合性を判定される。ＦＰＧＡが１つの設計にとって不適当であるとわかった場合、その他の設計を検査し得る。いくつかの実施例における検査方法は、ユーザの設計に基づく検査回路を用いて、設計に必要とされるＰＬＤ資源を検査する。この検査回路によって、ＰＬＤの供給メーカーは、ユーザ設計を理解しなくても、ＰＬＤの所与のユーザ設計への適合性を検査することができる。
2004538628.tif 000002
【特許請求の範囲】
【請求項１】
ａ．あるタイプのＰＬＤを検査するステップと、
ｂ．顧客特定の設計のインスタンスを作成するために、ＰＬＤを顧客に販売するステップと、
ｃ．顧客特定の設計の表現式を受取るステップと、
ｄ．前記タイプの欠陥のあるＰＬＤを選択するステップと、
ｅ．欠陥のあるＰＬＤを検査して、それが顧客特定の設計とともに機能するかどうかを判定するステップとを含む、方法。
【請求項２】
顧客特定の設計は、その設計の表現式によって、欠陥のあるＰＬＤ上で規定されたネットの集合を必要とし、欠陥のあるＰＬＤを検査するステップは、ネットの集合を検査するステップを含む、請求項１に記載の方法。
【請求項３】
ネットは、ＰＬＤ上で顧客特定の設計のインスタンスを作成することなく、検査される、請求項２に記載の方法。
【請求項４】
ＰＬＤは論理ブロックの集合を含み、顧客特定の設計は、論理ブロックの集合の部分集合を必要とし、欠陥のあるＰＬＤを検査するステップは、論理ブロックの集合の部分集合を検査するステップを含む、請求項１に記載の方法。
【請求項５】
論理ブロックの集合は、ＰＬＤ上で顧客特定の設計のインスタンスを作成することなく、検査される、請求項４に記載の方法。
【請求項６】
欠陥のあるＰＬＤを顧客に販売するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記タイプは、外部ピンの構成を含む、請求項１に記載の方法。
【請求項８】
欠陥のあるＰＬＤは、プログラマブル論理ブロックおよびプログラマブル相互接続を含み、設計の論理要素は、論理ブロックの部分集合を用いてインスタンスを作成され、設計のルーティング部分は、相互接続において規定されたネットの集合として、インスタンスを作成される、請求項１に記載の方法。
【請求項９】
欠陥のあるＰＬＤを検査するステップは、設計のインスタンスを作成するのに用いられる論理ブロックの、複数の部分集合を構成して検査信号発生器を与えるステップを含む、請求項８に記載の方法。
【請求項１０】
欠陥のあるＰＬＤを検査するステップは、設計のインスタンスを作成するのに用いられる論理ブロックの、複数の部分集合を構成して検査信号オブザーバを与えるステップを含む、請求項８に記載の方法。
【請求項１１】
論理ブロックは、入出力ブロックを含む、請求項８に記載の方法。
【請求項１２】
欠陥のあるＰＬＤを検査するステップは、論理ブロックの部分集合において設計の論理要素のインスタンスを作成することなく、ネットを検査するステップを含む、請求項８に記載の方法。
【請求項１３】
第２の顧客特定の設計の表現式を受取るステップと、欠陥のあるＰＬＤを検査して、それが第２の顧客特定の設計とともに機能するかどうかを判定するステップとをさらに含む、請求項１に記載の方法。
【請求項１４】
欠陥のあるＰＬＤを検査するステップは、ＰＬＤ上で１つ以上の検査回路のインスタンスを作成するステップを含み、検査回路は、顧客特定の設計によって必要とされるＰＬＤ資源と、検査回路のオーバーヘッドとを使用し、検査回路のオーバーヘッドは、顧客特定の設計によって必要とされないプログラマブル資源を含む、請求項１に記載の方法。
【請求項１５】
プログラマブルロジックデバイスを検査して、それが、所与の設計とともにインスタンスを作成されるときに、機能するかどうかを判定する方法であって、プログラマブルロジックデバイスは、複数のプログラマブル論理ブロックおよびプログラマブル相互接続を含み、前記方法は、
ａ．設計の論理要素のインスタンスを作成するのに用いられる、構成可能な論理ブロックの部分集合を識別するステップと、
ｂ．設計によって使用され、かつ構成可能な相互接続においてインスタンスを作成された、ネットの集合を識別するステップと、
ｃ．ネットの集合を用いて、構成可能な論理ブロックの部分集合を相互接続するステップと、
ｄ．構成可能な論理ブロックの複数の部分集合を、検査信号発生器として構成するステップとを含む、プログラマブルロジックデバイスを検査する方法。
【請求項１６】
構成可能な論理ブロックの部分集合を再構成して、設計の論理要素のインスタンスを作成するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
ネットの集合を用いて、構成可能な論理ブロックの部分集合を相互接続するステップは、
ａ．ネットの集合の第１の部分集合を用いて、構成可能な論理ブロックの第１の部分集合を相互接続するステップと、
ｂ．ネットの集合の第２の部分集合を用いて、構成可能な論理ブロックの第２の部分集合を相互接続するステップとを含む、請求項１５に記載の方法。
【請求項１８】
ネットの集合の第２の部分集合を用いて、構成可能な論理ブロックの第２の部分集合を相互接続する前に、ネットの集合の第１の部分集合を検査するステップをさらに含む、請求項１７に記載の方法。
【請求項１９】
ネットの集合の第１の部分集合を検査した後で、ネットの集合の第２の部分集合を検査するステップをさらに含む、請求項１８に記載の方法。
【請求項２０】
構成可能な論理ブロックの第２の複数の部分集合を、検査信号オブザーバとして構成するステップをさらに含む、請求項１５に記載の方法。
【請求項２１】
ネットの集合上で信号が遷移する間に、プログラマブル相互接続の一部を論理レベルに保持するステップをさらに含む、請求項１５に記載の方法。
【請求項２２】
プログラマブルロジックデバイス上でインスタンスを作成するために指定された設計の機能性を検証する方法であって、プログラマブルロジックデバイスは、プログラマブル相互接続資源の集合によって選択的に相互接続が可能なプログラマブルブロックを含み、前記方法は、
ａ．設計のために必要とされる、複数のプログラマブルブロックを識別するステップと、
ｂ．複数のプログラマブルブロックを相互接続するために、設計に必要とされる複数の相互接続資源を識別するステップと、
ｃ．複数のプログラマブルブロックのうちの、少なくとも選択された１つを構成して、信号生成機能を与えるステップとを含み、
設計は、複数のプログラマブルブロックのうちの選択された１つのために、信号生成機能とは異なる第２の機能を指定する、設計の機能性を検証する方法。
【請求項２３】
ａ．複数のプログラマブルブロックのうちの、第２の選択された１つを構成して、検査信号オブザーバを与えるステップと、
ｂ．複数のプログラマブルブロックのうちの、前記第１の選択された１つを、相互接続資源の一部を介して、複数のプログラマブルブロックのうちの、第２の選択された１つに接続するステップとを含む、請求項２２に記載の方法。
【請求項２４】
第１の選択されたプログラマブルブロックから、第２の選択されたプログラマブルブロックに検査信号を送信して相互接続資源の一部を検査するステップをさらに含む、請求項２３に記載の方法。
【請求項２５】
第２の選択されたプログラマブルブロックの状態を読み取るステップをさらに含む、請求項２４に記載の方法。
【請求項２６】
プログラマブルブロックは、論理ブロック、入出力ブロックおよびメモリブロックのうちの、少なくとも１つを含む、請求項２２に記載の方法。
【請求項２７】
少なくとも１つの局部的欠陥を含むＦＰＧＡを使用するための方法であって、
設計をＦＰＧＡにロードするステップと、
ＦＰＧＡを検査して、それが予め定められた仕様を満たしているかどうかを判定するステップと、
それが予め定められた仕様を満たしていれば、ＦＰＧＡを設計にとって好適なものとして受入れるステップとを含む、少なくとも１つの局部的欠陥を含むＦＰＧＡを使用するための方法。
【請求項２８】
ＦＰＧＡの性能を検査するステップと、
それが最小性能仕様を満たしていない場合に、ＦＰＧＡを拒否するステップとをさらに含む、請求項２７に記載の方法。
【請求項２９】
少なくとも１つの局部的欠陥を含むＦＰＧＡを使用するための方法であって、
第１の設計をＦＰＧＡにロードするステップと、
ＦＰＧＡを検査して、それが第１の設計と関連した予め定められた仕様を満たしているかどうかを判定するステップと、
ＦＰＧＡが第１の設計と関連した予め定められた仕様を満たしている場合、ＦＰＧＡを第１の設計にとって好適なものとして受入れるステップと、
ＦＰＧＡが第１の設計と関連した予め定められた仕様を満たしていない場合、以下のステップを行なうステップとを含み、以下のステップとは、
第２の設計をＦＰＧＡにロードするステップと、
ＦＰＧＡを検査して、それが第２の設計と関連した予め定められた仕様を満たしているかどうかを判定するステップと、
ＦＰＧＡが第２の設計と関連した予め定められた仕様を満たしている場合に、ＦＰＧＡを第２の設計にとって好適であるとして受入れるステップとを含む、少なくとも１つの局部的欠陥を含むＦＰＧＡを使用するための方法。
【請求項３０】
ＦＰＧＡの性能を検査するステップと、
それが最小性能仕様を満たしていない場合に、ＦＰＧＡを拒否するステップとをさらに含む、請求項２９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、プログラマブルロジックデバイスに関し、より特定的には小欠陥を含むプログラマブルロジックデバイスを検査し、使用するための方法に関する。
【背景技術】
【０００２】
発明の背景
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のプログラマブルロジックデバイス（ＰＬＤ）は、ユーザ定義論理回路を実行するようにプログラムすることのできるユーザプログラマブル集積回路である。典型的なアーキテクチャにおいて、ＦＰＧＡは、プログラマブル入出力ブロック（ＩＯＢ）によって囲まれた設定可能な論理ブロック（ＣＬＢ）のアレイを含む。プログラマブルルーティング資源の階層は、ＣＬＢおよびＩＯＢを相互接続する。構成ビットストリームを、ＦＰＧＡの構成メモリセルへロードすることによって、これらのＣＬＢ，ＩＯＢおよびプログラマブルルーティング資源がカスタマイズされる。マルチプレクサ、メモリおよび特定用途向け回路等の追加の資源を含んでもよい。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
供給メーカーが、さらにより複雑なタスクを行なうことのできるＰＬＤの顧客からの要求に応えようとするにつれて、ＰＬＤはさらに大型になっている。あいにく、チップのサイズが増加すると、所与のチップで欠陥が見つかる可能性も高くなる。したがって、ＰＬＤが複雑になると歩留りが低下し、既に高価なＰＬＤが一段と高価になる。
【０００４】
ＰＬＤは設計が特定的ではないが、代わりにユーザ（たとえば回路設計者）に、殆ど無限数の回路の変形のインスタンスを作成する能力を与える。所与のＰＬＤが捧げられる目的を予め知らなければ、ＰＬＤの品質および信頼性に大きな負担をもたらすことになる、と言うのもＰＬＤの供給メーカーは、使用され得るいかなる機構の機能性も検証しなければならないからである。顧客を失望させるのを避けるために、ＰＬＤ製造業者は、比較的小さな欠陥を含むＰＬＤさえも廃棄する。
【０００５】
ＰＬＤの欠陥は、２つの一般的な領域に分類することができる。すなわち、ＰＬＤ全体を無用なものにするまたは信頼できないものにする大きな欠陥、およびＰＬＤの比較的小さな割合に損害を与える局部的欠陥である。いくつかの大型チップにつき、所与のウェハ上のチップの３分の２近くが、局部的欠陥のために廃棄され得ることがわかった。大規模集積回路の製造に関連する費用を考えると、ＰＬＤチップの多くの割合を廃棄することは、ＰＬＤ製造業者に対し非常に不利な経済的影響をもたらす。
【課題を解決するための手段】
【０００６】
概要
本発明により、ＰＬＤ製造業者は、いくつかの欠陥にもかかわらず、選択された顧客設計を完全に実行することのできるＰＬＤを識別することができるようになる。
【０００７】
製造の後で、所与の半導体ウェハ上のさまざまなチップは、ＰＬＤをいかなる顧客の目的にとっても不適当なものにする見込みの高い電力供給不足等の、「大きな（gross）」欠陥がないかどうかを検査される。ＳＲＡＭベースのＦＰＧＡに適用可能な検査方法において、大きな欠陥の検査で生き残ったチップは、「リードバック検査（readback test）
」にかけられて、構成メモリセルの機能を検査する。欠陥のないチップは、完璧な性能を保証するためのさらなる検査にかけられ、一方で多数のまたは高密度のリードバックの欠陥を示すチップは拒否される。欠陥が比較的少ないチップは、「ＡＳＩＣ候補（ASIC candidates）」として取りのけられ、さらなる検査にかけられる。ＰＬＤの機能性を確認するために通常行なわれる一般的な検査とは異なり、一実施例において、ＡＳＩＣ候補は、特定用途向け検査にかけられ、この検査では、各々の候補が１つ以上の特定の顧客設計とともに機能する適合性が検査される。
【０００８】
本発明の実施例に従ったいくつかの検査方法は、ユーザ設計に基づいた検査回路を用いて、設計に必要とされるＰＬＤ資源を確認する。これらの方法では、設計を理解しなくても、所与の設計のためのＦＰＧＡの適合性が検査されるため、ユーザ設計のための設計が特定的な検査を開発する費用および複雑さが大幅に減じられる。また有利なことに、所与の設計に必要とされるこれらの資源に対する検査範囲を狭めることによって、検査に必要とされる時間が減じられ、販売に適したＰＬＤの数が増加する。ユーザ設計以外の検査回路を用いて、ユーザ設計に必要とされる資源を検査することにより、ユーザ設計を理解しなくても、包括的な検査が容易になる。
【０００９】
先述の検査方法では、ＰＬＤ供給メーカーは、完全に検査された欠陥のないＰＬＤを販売するしかない。顧客は依然として、顧客特定の設計を開発しかつこれらの設計を迅速に市場に出すのに、欠陥のないＰＬＤを必要とする。しかしながら、一旦顧客が特定の設計を有すると、先述の検査手順によって、より低額なＰＬＤを与えることができ、このＰＬＤは、顧客特定の設計を開発するのに最初に用いられた、完全に機能する１つのまたは複数のＰＬＤと物理的にも機能的にも同一である。
【００１０】
本発明の一実施例に従うと、回復されたＰＬＤに関連した潜在的な費用節約に関心のある顧客は、顧客特定の設計（たとえばデータファイル）の表現式をＰＬＤの供給メーカーに送る。供給メーカーは次に、この表現式を用いて、先述した態様でＡＳＩＣ候補を検査する。これにより、顧客特定の設計のインスタンスを作成するのに最初に用いられた、欠陥のないＰＬＤと物理的および機能的に同一のＡＳＩＣ候補は、より低額で顧客に販売することができる。
【００１１】
この概要は発明の範囲を制限するものではない、と言うのも本発明の範囲は特許請求の範囲によって規定されるためである。
【発明を実施するための最良の形態】
【００１２】
詳細な説明
本発明は、プログラマブルロジックデバイスに関する。以下の説明において、本発明の実施例をより完全に理解するために、多数の特定の詳細が述べられている。しかしながら、本発明は、これらの特定の詳細がなくても実行され得ることが当業者にとって明らかである。他の例において、本発明をわかりにくくするのを避けるために、周知の特徴は詳細に説明されていない。
【００１３】
図１は、ＦＰＧＡに適用される本発明の一実施例を示すフロー図１００である。製造の後で、所与の半導体ウェハ上のさまざまなチップは、「大きな」欠陥がないかどうかを検査される（ステップ１０５）。この開示の目的において、「大きな」欠陥とは、ＰＬＤをいかなる顧客の目的にとっても不適当なものにする見込みの高い欠陥のことである。大きな欠陥の例は、電力供給の不足、開路、過度の漏れ、欠陥のあるクロック管理回路およびかなりの数の欠陥のあるプログラマブルメモリセルを含む。大きな欠陥を有するチップは廃棄される（判断１０７）。大きな欠陥のためのさまざまな検査が、マイケル・ジョン（Michael John）、セバスチャン・スミス（Sebastian Smith）による「特定用途向け集積回路（“Application-Specific Integrated Circuits”）」（１９９７）の第１４章に記載されている。
【００１４】
判断１０７をくぐり抜けたチップは、「リードバック検査」にかけられて、構成メモリセルの機能を検査する（判断１０９）。このステップにおいて、構成メモリは、さまざまなパターンの構成データを含み、かつ次にリードバックしてこれらのセルの正確なプログラム状態を確認するように、プログラムされる。一実施例において、チップに多数のまたは高密度の欠陥がある場合、そのチップは拒否される。「大きい」と考えられる数は、問題のＰＬＤのサイズおよび欠陥の分布に依存する。なぜなら、これらのパラメータは、このような欠陥が、ＰＬＤを顧客設計（「ユーザ設計（user designs）」とも呼ばれる）のインスタンスを作成するのに無用なものにする可能性を決定するからである。
【００１５】
判断１０９で、欠陥の最大許容数よりも多い欠陥を有するチップが廃棄され、欠陥のないチップは、包括的な検査のためにステップ１１１へと送られ、最大許容数よりも少ない複数の欠陥を有する欠陥チップは、「ＡＳＩＣ候補」として識別される（ステップ１１３）。ＡＳＩＣ候補は、不完全ではあるが、いくつかのユーザ設計のインスタンスを作成するのに十分な資源を有し得るチップである。他の実施例では、ユーザ設計を実行するにあたっての成功の可能性に基づいて、ＡＳＩＣ候補を分類し得る。たとえば、１つのみの欠陥を有するデバイスは、５つの欠陥を有するデバイスよりもより価値あるものとみなされ得る。
【００１６】
判断１０９を通して欠陥が発見されなかったＰＬＤは、完全に検査されて、厳しい性能基準に準拠しているかを確認される。回路供給メーカーは、各々のデバイスの速度性能および機能性の双方を検査しなければならない。十分に機能するチップは、良好なデバイスとして識別される（ステップ１１５）。これらのチップは次にパッケージ化されて（ステップ１１７）、結果として得られるＰＬＤは、パッケージ化されていないチップと同じ一連の検査にかけられ、もう一度ステップ１０５から始められる。検査が再び行なわれて、パッケージ化のプロセスによって、またはパッケージ化のプロセスの間に、欠陥が持ち込まれなかったことを確認する。パッケージ化されたチップに欠陥がない場合、プロセスは最終的にステップ１１５に戻り、パッケージ化されたＰＬＤはそれに応じて収容され、顧客に販売される（ステップ１１８）。示されていないが、ＰＬＤのための従来の検査プロセスはさらに、高速の収容を含む。
【００１７】
完全に機能するとまではいかないが、判断１０７および１０９をくぐり抜けたチップは、「ＡＳＩＣ候補」として識別される（ステップ１１３）。パッケージ化されていないＡＳＩＣ候補はパッケージ化され（ステップ１１７）、結果として得られるパッケージ化されたＰＬＤは、パッケージ化されていないチップと同じ一連の検査にかけられ、再びステップ１０５から始められる。各々のパッケージ化されたチップは、判断１０７または１０９によって廃棄されるか、またはもう一度ＡＳＩＣ候補として識別され得る（ステップ１１３）。しかしながら、今回、パッケージ化されたデバイスは、欠陥があるにもかかわらずユーザ設計を確実に実行するかどうかを判定するのに検査されるべき、パッケージ化されたＡＳＩＣ候補として収容される（ステップ１１９）。
【００１８】
示した検査方法の次のステップに先立つ何らかの時点で、ＰＬＤ製造業者は、適切なＰＬＤ設計ソフトウェアを用いて表現された１つ以上のユーザ設計を要求し、それを受取る（ステップ１２０）。これらの設計は、検査中のＰＬＤのタイプ（たとえば同じサイズおよび同じピン構成のＰＬＤ）で使用するようにされる。次に、これらの顧客設計の１番手は分析されて、ステップ１１９のＡＳＩＣ候補のうちの１つにインスタンスが作成される、設計が特定的な検査回路を作成する。これらの検査回路を用いて、ＡＳＩＣ候補が顧客設計とともに機能するかどうかを判定する。このような機能性は見込みのないものではない、というのも顧客は、典型的に、プログラマブル資源のかなりの部分を未使用のままにしており、ＰＬＤにおける欠陥は、これらの未使用の部分に限定され得るためである。検査１２１、つまり設計が特定的な検査が以下で詳細に説明される。
【００１９】
判断１２３において、検査中のＡＳＩＣ候補が、対象の設計とともに十分に機能すれば、このデバイスは、特定の設計とともに使用するのに許容できるものとして識別される（ステップ１２５）。このデバイスは最終的に顧客に送られ（ステップ１２７）、顧客は次に、ステップ１２１で用いられたユーザ設計とともにＡＳＩＣ候補をプログラムする（ステップ１２９）。その代わりに、ステップ１２３で、対象の設計が、選択されたデバイスにおいて十分に機能しないことがわかったとしても、１つ以上の追加のユーザ設計を試し得る（判断１３１）。所与のＡＳＩＣ候補につき、顧客設計とともに使用するためのデバイスが割当てられるか、またはユーザ設計がなくなったときに、このプロセスは終了される。好適な設計が見つからない場合、ＡＳＩＣ候補は廃棄され得るか、または後で受取られるユーザ設計の検査のために保管され得る。ＡＳＩＣ候補は、たとえば異なるユーザ設計のインスタンスを作成する試みが１０回失敗してから、廃棄され得る。
【００２０】
選択された顧客設計に割当てられたＡＳＩＣ候補は、それに応じてラベル表示されて、それらが欠陥のある資源を必要とし得る適用例において使用されないようにする。ＡＳＩＣ候補はまた、検証されたユーザ設計以外は拒否するようにされ得る。たとえば、検証された設計のためのビットストリームの巡回冗長検査（ＣＲＣ）値等の一意のシグネチャが、ＰＬＤ上の不揮発性メモリに記憶され、かつ設計を検証するのに使用され得る。
【００２１】
従来の検査において、多くのＰＬＤが、少数のランダムな欠陥を有するとして拒否されてきた。そのような欠陥にもかかわらず特定のユーザ設計とともに完璧に機能し得るこれらのＰＬＤのうちの１つを識別することにより、ＰＬＤの製造業者およびその顧客は、ともすれば廃棄されるＰＬＤを使用することにより利益を得ることができる。ＰＬＤ製造業者は、大幅に改善された歩留りからの利益を獲得し、ＰＬＤの顧客は、特定の目的のための好適なＰＬＤがより低価格で入手可能になるため、恩恵を受ける。ユーザの立場からさらに有利なことに、回復されたＰＬＤは、製品を市場に出すのに最初に用いられた、完全に機能するＰＬＤと物理的にも機能的にも同一であるため、さもなければその製品を新しいＡＳＩＣに適合させるのに必要とされる技術資源が必要でない。製品を新しいＡＳＩＣに適合させるのに通常必要とされる時間も減じられ、顧客は、完全に機能するＰＬＤの、それほど高価ではない代替物をより迅速に入手することができる。
【００２２】
フロー図１００は、例示的なものであり、実際にはこのフロー図は、かなり異なるものとなるかもしれず、異なるステップが異なる順序および／または異なる時に達成され得る。たとえば、ステップ１２１は、「欠陥のない」ＰＬＤを検査するのに用いられたのとは異なる検査装置を用いて行なわれ得る。さらに、フロー図１００は、各々のウェハがＰＬＤおよびＡＳＩＣの候補を与え得る場合を示している。他の実施例において、ウェハは完全にＰＬＤ、または完全にＡＳＩＣ候補専用にされ得る。ＰＬＤの歩留りおよび顧客からのＡＳＩＣ候補の要求が、ＡＳＩＣ候補に割当てられるウェハまたはチップの割合を決定する際に考慮される。
【００２３】
図２は、従来のＦＰＧＡ２００のブロック図であり、例示的なユーザ設計のインスタンスが作成されている。ＦＰＧＡ２００は、プログラマブルロジックの集まりを含み、これは複数の入出力ブロック（ＩＯＢ）２０５、構成可能な論理ブロック（ＣＬＢ）のアレイ２１０および複数のＲＡＭブロック２１５を含み、これらのすべては、プログラマブルルーティング資源を介して選択的に相互接続され得る。ＣＬＢ２１０は、主要なビルディングブロックであり、カスタマイズ可能なゲート、フリップフロップおよび配線を実行するための要素を含む。ＩＯＢ２０５は、信号を外部のデバイスと通信させるための回路を与え、ＲＡＭブロック２１５は、同期式または非同期式のデータの記憶を可能にするが、各々のＣＬＢもまた、同期式または非同期式のＲＡＭを実行することができる。１つのＦＰＧＡの詳細な扱いについては、ザイリンクス（Xilinx）の事前製品仕様書（advance product specification）である「バーテックス（Virtex）ＩＩ  １．５ｖ  フィールドプログラマブルゲートアレイ（“Virtex-II 1.5V Field-Programmable Gate Arrays”）」、ＤＳ０３１−２（ｖｌ．９）、２００１年１１月２９日、を参照されたい。
【００２４】
図３は、図１の設計が特定的な検査ステップ１２１の詳細を示すフロー図である。この検査は、ユーザ設計のための設計が特定的な検査を開発する費用および複雑さをもたらすことなく、包括的な検査を容易にするという点で有利である。
【００２５】
まず第１に、ソフトウェアはユーザ設計を分析して、設計に必要とされる資源を識別する（ステップ３００）。このような資源は、図２の想像上の例において、斜線部分のＩＯＢ２０５、ＣＬＢ２２、ＲＡＭブロック２１５およびこれらを相互接続するのに用いられる相互接続資源２２０（残りの相互接続資源は、明瞭化のためにここでは省略される）として示される。さらに含まれるがここに示されていないのは、ユーザ構成を規定するのに必要とされるプログラマブルメモリセルである。ステップ３０３は、ユーザ設計に必要とされる構成ビットの機能性を検査するためのリードバック検査である。本発明の実施例に従った検査方法のステップを実行するソフトウェアは、何らかのコンピュータ読取可能媒体上に格納することができる。コンピュータ読取可能媒体の例は、磁気および光学記憶媒体ならびに半導体メモリを含む。
【００２６】
次に、ソフトウェアは、ユーザ設計において指定された相互接続を、ネットの組に分割し（ステップ３０５）、各々のネットは、ソースおよび宛先ノードの間で規定された相互接続の一部である。複数のサンプルネットが、図２に太線を用いて示されている。一般的に、各々のネットは、単一の信号源および１つ以上の信号宛先を含む。ネットの集まりはともに、ユーザ設計によって規定されたすべての信号パスを含み、検査のために用いられるネットは、オーバーラップを最小化する（すなわち、信号を中継するのに用いられているが、設計において実際には使用されていない電線の数を最小化する）ように選択される。ステップ３１０Ａおよび３１０Ｂ（図３）の間で規定されたＦＯＲループは、各々のネットの保全性を検証するための検査を規定する。
【００２７】
相互接続をネットの集まりに分割することは、所与の設計と関連した相互接続資源を検査する一つの方法にすぎない。相互接続資源を検査する他の方法を用いることもできる。
【００２８】
ステップ３１５で始まって、所与のネットの資源要素は信号発生器として構成され、１つのまたは複数の宛先要素は信号オブザーバとして構成される。信号発生器は次に、ネット上で信号を宛先回路に与えて、ネットの機能性を確認する。
【００２９】
図４は、検査中の例示のネット４００および関連の信号源４０５ならびに宛先回路４１０および４１５を示している。ソース４０５ならびに回路４１０および４１５は、この例においてＣＬＢであるが、各々の要素はまた、たとえばＩＯＢまたはＲＡＭブロックであるかもしれない。この例において、ソース４０５は、検査クロックＴＣＬＫに応答して、１および０の列を生成する検査信号発生器として構成される。ソース４０５は、ルックアップテーブル（ＬＵＴ）４２５を通してネット４００に接続された、フリップフロップ４２０を含む。ソース４０５は、ＬＵＴ４２５を含む必要はないが、この例では、ソース４０５のインスタンスを作成するのに用いられるＣＬＢ内のネット４００の一部が、ユーザ設計の一部であるものとして仮定されている。ユーザ設計における相互接続が、代わりにフリップフロップ４２０から直接伸びていれば、好ましい、シミュレートされたネットは、同様にフリップフロップ４２０から直接伸びることになる。
【００３０】
宛先回路４１０および４１５は、検査信号オブザーバとして構成される。各々は、それぞれのＬＵＴ４２５およびフリップフロップ４２０を含む。フリップフロップ４２０は、ネット４００上で宛先４１０および４１５に与えられた信号を記憶するようにされる。ネット４００を検査するために（図３のステップ３２０）、ソース４０５からの信号は、共通の検査クロックＴＣＬＫを用いて、ネット４００を渡って宛先回路４１０および４１５へ刻時される。宛先回路４１０および４１５における結果として得られるフリップフロップ４２０の内容が次にリードバックされて、ネット４００が正確なデータを渡したことを確認する。宛先４１０および４１５内に伸びるネット４００の一部は、好ましくはユーザ設計によって用いられるのと同じ部分である。この例において、ユーザ設計は、信号をそれぞれのＬＵＴ４２５に伝える宛先４１０内のローカルルーティングと、信号をそれぞれのフリップフロップ４２０に伝える宛先４１５内のローカルルーティングとを含む。
【００３１】
ネットが適切なデータをある速度で運ぶことができない場合、ＡＳＩＣ候補は対象の設計に失敗する（図３、判断３４５）。次にこのプロセスは、次の設計があればそれに進む（図１のステップ１３１）。先述のプロセスは、ＰＬＤが失敗するか、または全体のネットの集まりがその妥当性を検査されるまで、ユーザ設計の各々のネットのために継続される。
【００３２】
検査信号発生器およびオブザーバを含む、さまざまな検査回路を規定する構成データを生成するのに用いられるプログラミングプロセスは、典型的に、設計入力ソフトウェア（たとえば合成または概略ツール）、プレースアンドルートソフトウェア（place-and-route software）および、パーソナルコンピュータまたはワークステーション上で実行されるビットストリーム生成ソフトウェアを利用する。このソフトウェアは、予め規定された回路のライブラリ「マクロ（macros）」を含み、これは所与のＰＬＤタイプのためのプログラマブルブロックの各々のタイプのための検査信号発生器およびオブザーバの論理関数を規定する。ＰＬＤプログラミングプロセスにおける「マクロ」の使用は周知である。
【００３３】
プログラマブルブロック（たとえばＩＯＢ，ＣＬＢおよびＲＡＭ）は典型的に、記憶素子およびローカルルーティングを含む（以下で説明される図２１は、従来のＣＬＢの１つのタイプを示している）。所与の顧客設計におけるプログラマブルブロック間のルーティングパスを検査する際に、ブロック内のローカルルーティングは、顧客設計で用いられるのと同じローカルルーティングであることが好ましい。結果として、検査信号発生器および受信器のインスタンスを作成するのに用いられるコアは、可能な場合には、顧客設計におけるその相対物と同一の内部ルーティングを含む。
【００３４】
一実施例において、ソフトウェアのライブラリ、マクロは、各々のタイプの論理ブロックにつき、信号発生器およびオブザーバの組を含み、これはローカルな相互接続資源のすべての考え得る構成を含む。顧客設計においてネットの検査回路を与えるステップは次に、ローカルな相互接続構成が、顧客設計において対応する論理ブロック構成と最もよく一致する検査信号発生器およびオブザーバのライブラリ要素を選択するステップを含む。
【００３５】
論理ブロックの何らかの機能性は、先述の信号発生器およびオブザーバのタイプを用いて検査することが難しいかもしれない。たとえば、いくつかのＣＬＢにおいて利用可能なキャリーチェーン資源を含むトグルフリップフロップを生成することは困難であるかもしれない。このような場合において、信号発生器および／または信号オブザーバとして設計することのできない論理ブロックは、代わりに２つの他の論理ブロックの間でインスタンスを作成され、そのうちの１つは検査信号発生器として構成され、他方は検査信号オブザーバとして構成される。この例において、信号発生器またはオブザーバとして設計することのできない論理ブロックは、２つの他の論理ブロックを接続するネットの一部となる。
【００３６】
本発明のいくつかの実施例は、ネットの検査をさらに行なって、顧客設計に影響を与え得る相互接続資源の間の短絡を見つけ出す。一実施例において、たとえば、各々のネットは、ハイに（たとえば論理１に）保持された近隣の相互接続資源とともに検査される。この検査は、論理０に保持された近隣の資源とともに繰返すことができる。検査中のネットおよび近隣の相互接続線の間の短絡は、ネット上で送信されるデータを破損させる。
【００３７】
すべてのネットが合格したと仮定すると、図３の検査手順は、ユーザ設計において使用されるさまざまなＩＯＢ２０５およびＣＬＢ２１０（たとえば、図２の斜線部分のＩＯＢ２０５およびＣＬＢ２１０）の検査へと進む。プログラマブルブロックを検査するための多くの方法が、プログラマブルブロックデバイスの検査に精通した当業者に知られており、これらのすべてを使用し得る。ＩＯＢ，ＣＬＢおよび他の資源を検査するための別の方法は、ＰＬＤを、プログラマブルロジックを実行する特別な検査回路を含むようにプログラムするステップを含む。一実施例において、検査される資源は、リニアフィードバックシフトレジスタ（ＬＦＳＲ）のアドレス端末に接続されたカウンタ回路を生成するように構成される。検査のためにシフトレジスタのインスタンスを作成するのに用いられる相互接続は、先述の検査順序の間に検査されたのと同じ相互接続であることが好ましい。
【００３８】
ＬＦＳＲは、繰返し刻時されるときに、一定の順序の状態を経るという意味で、周期的である。結果として、既知のデータの組で始まるＬＦＳＲは、所与の数のクロック周期の後で、予測可能なデータの組を含む。ＬＦＳＲの一定の状態は、擬似ランダムであり、繰返し率は、事実上いかなる長さであってもよい。ＬＦＳＲの擬似ランダムな性質は、各々のＬＦＳＲがかなりの数のクロック周期でシフトすることができるならば、それらのインスタンスを作成するのに用いられる内部メモリおよびルーティング資源が、多数の置換えで処理されるようにすることを保証する。
【００３９】
一実施例に従うと、ＬＦＳＲは、既知のカウント（たとえば０）にプリセットされ、既知の回数で刻時される。結果として生じるカウントは、次に参照と比較される。結果として生じるカウントが参照と一致すれば、ＬＦＳＲを実行するのに用いられる、メモリおよびルーティング資源を含む、検査回路を実行するのに用いられる資源のすべては、選択されたクロック速度で完全に機能するものと考えられる。しかしながら、ＬＦＳＲのカウントが参照と一致しなければ、検査は失敗する。検査を多くの異なる速度で行なって、検査中のデバイスの最小クロック速度を決定することができる。
【００４０】
図５はＦＰＧＡ５００を示しており、図２のユーザ設計のＣＬＢ，ＩＯＢおよびＲＡＭブロックは斜線にされている。これらの資源のうちのいくつかは、先行の検査ステップにおいて良好であると確認されたルーティング資源（ネットまたはネットの一部）を主に用いて相互接続されて、ＬＦＳＲの対を形成する。ＬＦＳＲを次に実行して、その構成要素の論理資源を検査することができる。検査が失敗すれば（図３の判断３３３）、検査は現在のユーザ設計とともに使用されるＡＳＩＣ候補を拒否し、別のユーザ設計があればそれを試みる。検査に合格すれば、検査手順はステップ３３５に進み、いかなるＲＡＭブロックも検査される。ＲＡＭブロックは、多くの検査手順を用いて検査することができる。ＬＦＳＲを用いてＦＰＧＡ資源を検査する特定の例を以下で詳細に説明する。
【００４１】
ステップ３３５のＲＡＭブロック検査が不合格となった場合には、検査は現在のユーザ設計とともに使用するためのＰＬＤを拒否し、別のユーザ設計があればそれを試みる。ＲＡＭブロックが合格した場合、ＰＬＤはパラメトリック検査にかけられ得、この検査は、対象のユーザ回路における、通過する信号およびクリティカルパスのための適切な速度性能を検証する（速度性能を検証するための１つの方法は以下で説明される）。ＰＬＤが速度検査に失敗すれば（判断３４５）、検査は現在のユーザ設計とともに使用するためのＰＬＤを拒否し、別のユーザ設計があればそれをを試みる。そうでない場合は、ＡＳＩＣ候補はユーザ設計とともに使用するのに適当であると考えられ、結果として適切な顧客への販売用として割当てられる（ステップ１２５）。
【００４２】
（先行技術の）図６Ａから６Ｄは、ＦＰＧＡ上でインスタンスを作成して、ＲＡＭブロックの機能性を確認することのできる回路設計の一部を示している。多くの他の好適なエンベデッドメモリ検査が当業者にとって周知である。
【００４３】
図６Ａは、デュアルポートＲＡＭブロック（すなわちポートＡおよびＢを有するＲＡＭブロック）を検査するために擬似ランダムな順序のアドレスおよびデータを生成するようにされたＬＦＳＲ回路６００を概略的に示している。ＮビットのＬＦＳＲカウンタについて、カウンタが、繰り返しの前に循環する状態の最大数は、２N-1である。ミッシング状態はすべてが０の状態である。ＬＦＳＲ６００は、アドレス０を含むすべてのＲＡＭアドレスを検査するため、ＬＦＳＲ６００はＮ＋１ビットのＬＦＳＲであり、ＮはＲＡＭアドレスポートの幅である。
【００４４】
典型的なＮ＋１のＬＦＳＲカウンタが、この態様でデュアルＲＡＭを検査するのに用いられた場合、すべてのビットが１である（すなわち、双方のポートが同じメモリセルをアドレス指定している）ときに、ポートＡおよびＢの間でアドレス衝突が起こる。ＡＮＤゲート６１０および関連の回路は、このような衝突を回避するために、「すべて１（all ones）」の状態を排除する。ＬＦＳＲは、図８〜２２と関連して以下でより詳細に説明される。
【００４５】
ＬＦＳＲカウンタ６００の１つの特性は、記憶素子Ｋ＋１におけるデータ（すなわちＱ[K+1]）が、各クロック後の、記憶素子Ｋにおけるデータ（すなわちＱ[K]）に等しい、ということである。この特性を用いて、かつポートＡのＲＡＭアドレスをＱ[N:1]、およびポートＢのＲＡＭアドレスをＱ[N+1:2]と割当てると、ポートＡのアドレスは、次のクロックサイクルでポートＢのアドレスとなる。この特性を以下の方式とともに活用することができる。
【００４６】
【表１】
2004538628.tif 000003
【００４７】
ブロックＲＡＭを実行するこの方式では、各々のＲＡＭセルの内容は、双方のポートから読み込まれ、双方のポートへ書込まれ、このデータはその最初の状態に戻される。これにより、検査回路が機能した状態である限り、すべての検査が繰返され、ループされることが可能になる。ＲＡＭの内容の一部が破損すれば、検査回路は再構成される。
【００４８】
図６Ｂは、図６ＡのＬＦＳＲ６００からの１３の出力ＬＯＵＴ［１：１３］からＲＡＭ検査データを生成するためのデータジェネレータ６１５を示している。なお、括弧内の英数表示で終わる信号表示は、信号線がそこへまたはそこから延びる図を特定する。図６Ｂにおいて、たとえば、信号線ＬＯＵＴ［１］（６Ａ）は図６Ａから来ている。
【００４９】
アドレスポートＡのためのデータDATA_Aは、ＬＦＳＲ出力ビットＬＯＵＴ［１：１２］のＸＮＯＲに基づいており、アドレスポートＢのためのデータDATA_Bは、ＬＦＳＲ出力ビットＬＯＵＴ［２：１３］のＯＲに基づいている。この方法により、期待されるデータが決定的となる。すなわち、DATA_AおよびDATA_Bはいかなる所与のアドレスに知られている。
【００５０】
データジェネレータ６１５は、DATA_AおよびDATA_Bの補数COMP_AおよびCOMP_Bをそれぞれ記憶するための１対のフリップフロップ６１７および６１９を含む。補数COMP_AおよびCOMP_Bを用いて、読取誤りおよび書込誤りを検出する。
【００５１】
図６Ｃは、エラー検出器６２５に接続されたＲＡＭブロック６２０を示している。すべてのクロックサイクルで、エラー検出器６２５は、ブロックＲＡＭ６２０からの出力ＤＯＡおよびＤＯＢを、図６Ｂのそれぞれの相補信号COMP_AおよびCOMP_Bと比較する。ブロックＲＡＭ６２０が使用可能でないときでもこの比較が行なわれるため、ブロックＲＡＭ６２０が使用可能であるかどうかが確認される。リードサイクルの間に、ブロックＲＡＭ６２０に与えられたデータおよび期待された出力信号は逆であり、これは書込周期がリードサイクルの間に生じないことを保証する。ラッチ６３０は、いかなるエラー状態も捕え、結果として生じる誤り信号ERR_OUTを出力線上に与える。ＲＡＭブロック６２０または対象のユーザ設計に関連したいかなる他のＲＡＭブロックがエラー信号を生じた場合に、検査中のＦＰＧＡは拒否される。
【００５２】
図６Ｄは、ブロック６２０のようなＲＡＭブロックを検査のために連続して使用可能にするために用いることのできるトークン回路６４０を示している。大型のデバイスでは、特にかなりの量のブロックＲＡＭを有するデバイス（たとえば、ザイリンクス社から入手可能なバーテックスTMＶ３２００ＥまたはＶ８１２ＥＭ）では、検査中に活動状態の回路の量を制限して、デバイス内のノイズおよび動的電流の量を減じるように、注意を払わなければならない。この目的のために、トークン回路６４０は、一度に１つのＲＡＭブロックしか使用可能にしない。入力端子Token_Inのローからハイへの遷移によって、トークン回路６４０が起動される。Token_In信号が検出されたときに、トークン回路６４０は、ブロックＬＦＳＲ６００、データジェネレータ６１５およびＲＡＭ６２０を使用可能にする。トークン回路６４０はまた、図６Ａおよび６Ｂのフリップフロップおよび図６ＣのＲＡＭ６２０をリセットするＲＥＳＥＴパルスを生成する。リセットラインが示されていない図６Ａ−６Ｄのフリップフロップは、検査が始まる前にすべてリセットされる。
【００５３】
ＬＦＳＲ６００がそのカウントを完了したときに、ＡＮＤゲート６１０からのエンドカウント信号END_CNTは、ＬＦＳＲ６００を使用不可能にし、トークン回路６４０に、線TOKEN_OUT上に“Token_Out”信号を生成させる。線TOKEN_OUTは、検査中の次のブロックＲＡＭのTOKEN_IN線があればそれに接続される。したがって、トークンは、ユーザ設計におけるすべてのＲＡＭブロックが検査されるまで、１つのＲＡＭブロックから次のＲＡＭブロックへ渡される。
【００５４】
図７は、仮定のユーザ設計のクリティカルパス７０５の速度性能を検証するようにされた検査回路７００を概略的に示している。検査回路７０５は、トグルフリップフロップとして構成されてクリティカルパス７０５を通って送信するための検査信号を生成する、ＣＬＢ７１０を含む。ＣＬＢ７１０は従来、フリップフロップ７１５およびＬＵＴ７２０を含む。検査回路７００はさらに、ＣＬＢ７１０からのデータ信号を受信し記憶するようにされたＣＬＢ７２５を含む。ＣＬＢ７２５は、フリップフロップ７３０およびＬＵＴ７３５を含む。
【００５５】
この例示において、クリティカルパス７０５は、比較的太い線を用いて示したように、
フリップフロップ７１５およびフリップフロップ７３０の間のパスである。この例は、検査中のユーザ設計におけるクリティカルパスが、ＬＵＴ７２０および７３５、１対のＣＬＢ７４０および７４５、ならびに３つの相互接続サブネット７５０を含むことを仮定している。これらの要素は、検査回路７０５に含まれる。なぜならクリティカルパス７０５は、ユーザ設計におけるクリティカルパスと同様に実用的であることが好ましいからである。ＣＬＢ７４０および７４５は、必ずしもユーザ設計としてプログラムされる必要はなく、代わりに単に検査信号（たとえばバッファ）を通過させるようにプログラムすることができる。
【００５６】
クリティカルパス７０５および他のクリティカルパスは、従来の静的タイミングアナライザによって識別され、対象のユーザ設計から抽出される。たとえば、５０ＫＨｚで動作することになっているユーザ設計は、約２０ｕｓの最大のレジスタ間遅延を有する。タイミングアナライザを用いて、２０ｕｓに最も近い遅延を有するレジスタ間パスを識別して、次にこれらの「クリティカル」パスを検査して、これらが確実に２０ｕｓ未満で、立上がりエッジおよび立下りエッジの双方を通過するようにすることができる。実際に、各々のクリティカルパスは、必要とされるよりもいくぶん高速であるため、適切な保護帯域が最小伝播遅延から減じられる。
【００５７】
クリティカルパスを識別すると、検査回路７００が、図４と関連して上述されたのと同じ態様で生成される。図４の検査が、各々のネットが機能しているかどうかを判定したのに対し、検査回路７００に関連する検査は、クリティカルパス７０５がある速度で動作するかどうかを判定する。速度検査は多くの方法において行なわれ得る。たとえば、一実施例において、フリップフロップ７１５および７３０は既知の状態にプリセットされて、同じような名前を付けられた信号線上の検査クロックＴＣＬＫを用いて、複数の期間に、必要とされる周波数で刻時される。フリップフロップ７３０の状態は次にリードバックされて、フリップフロップ７１５からのデータが正確に受信され、記憶されたことを確認する。検査は、さまざまな数のクロックを使用し、異なるエッジでフリップフロップをトグルし、異なる記憶データで始めるなどによって、異なる方法で行なうことができ、さまざまな状況における適切な動作を保証する。
【００５８】
性能検査ＰＬＤの代替の方法の説明については、双方がキングズリー（Kingsley）等に付与された米国特許第６，０７５，４１８号および第６，２３２，８４５号、ならびに先述のスミスの参考文献を参照されたい。キングズリー等に付与された特許で概略が述べられた検査手順を用いて、構成可能な資源の集まりはループ状に構成されて、それらはともに自励リングオシレータを形成する。このオシレータは、振動検査信号を生成し、周期はループにおけるコンポーネントの速度に比例する。多くのこのようなオシレータは、所与のＰＬＤ上でインスタンスを作成して、速度性能を測ることができる。
【００５９】
いくつかの実施例において、ＡＳＩＣ候補は、キングズリー等の特許に記載された方法および回路を用いて検査することができる。顧客設計において使用される資源は、速度を検査することができる。代わりに、設計が特定的な検査の前または後に、より徹底的な速度検査を行なうことができる。一実施例において、キングズリー等によって説明されたタイプの複数のオシレータは、ＰＬＤにわたって分散配置されて、速度を検査する。オシレータのうちのいくつかは、ＡＳＩＣ候補において存在する欠陥のために、全く機能しないかもしれない。これらのオシレータは、いくつかの実施例において、単に無視される。上述の他の検査は、この欠陥が顧客設計に影響を与えないことを保証する。
【００６０】
上述の検査に加えて、ＡＳＩＣ候補は、等価の標準ＰＬＤと同じタイプの物理的なおよび信頼性の検査にかけることができる。特定の顧客設定のために欠陥部分を高い標準に保持することが、顧客が上記の方法を用いて識別されたタイプのＡＳＩＣ候補を使用するの
を奨励するのに重要であり得る。
【００６１】
一旦ＡＳＩＣ候補が特定の顧客設計のために検証されると、ＰＬＤ製造業者は、顧客が他の設計のためのそのＰＬＤを用いるのを防ぎたいと考えるかもしれない。一実施例では、ＰＬＤが、構成ビットストリームに対してハッシュ関数を行なうことによって構成されるたびに、顧客設計を認証することにより、このような使用を防ぐ。ハッシュ関数の結果は次に、ＰＬＤ製造業者によって不揮発性メモリに与えられた、所有権を主張できるハッシュキーと比較される。ビットストリームが必要とされるハッシュ結果を生じない場合、ＰＬＤは機能しない。
【００６２】
図８〜２２および関連する文言では、ＦＰＧＡ上のすべてのプログラマブルブロックを検査するのに用いることのできる方法および検査回路が説明される。これらの方法および回路は、ステップ１１１（図１）の包括的な検査を行なうのに有益である。しかしながら、このような包括的な検査は、ステップ１２１（図１および３）の設計が特定的な検査には好ましくない。したがって、この方法および検査回路は、ステップ３００（図３）で特定されたユーザ設計の資源、およびできるだけ少ないオーバーヘッドを含むように制限される。検査回路オーバーヘッドを制限することにより、設計が特定的な用途のための欠陥のあるチップが、その特定の設計に影響を与えない欠陥のために、拒否される可能性を最小にする。
【００６３】
図８は、内部メモリおよびルーティング資源を含む、ＦＰＧＡ資源の高速の機能検査を行なうのに本発明に従って用いることのできる、検査回路８００を示している。本発明の実施例に従うと、検査回路８００は、ユーザ設計および最小量の追加の資源によって使用される資源を用いてインスタンスを作成される。検査回路８００はカウンタ８１０を含み、このカウンタは、リニアフィードバックシフトレジスタ（ＬＦＳＲ）として構成されたＲＡＭアレイ８３０のアドレス端子に接続された出力端子８２０を有する。検査回路８００はさらに、クロックジェネレータ８３５を含み、このクロックジェネレータは、線ＣＬＫ上のクロック信号と、コンパレータ８５０の入力端子に接続された出力端子を有する参照レジスタとを与えるように構成されている。ＬＦＳＲ８３０は、ルーティング資源８６０を介してコンパレータ８５０の別の入力端子に接続される。
【００６４】
ＬＦＳＲ８３０の擬似ランダムな性質は、ＬＦＳＲ８３０がかなりの数のクロック周期でシフトすることができれば、ＬＦＳＲ８３０内の記憶場所が、多数の置換えで処理されるようにすることを保証する。判断ブロック８７０を参照すると、ある数のクロック遷移の後で、コンパレータ８５０に与えられたカウントが、レジスタ８４０における正確な参照番号に一致すれば、検査回路８００を実行するのに用いられる資源のすべてが、選択されたクロック速度で完全に機能するものと考えられる。しかしながら、ＬＦＳＲのカウントがレジスタ８４０におけるカウントと一致しなければ、検査は失敗する。検査を多数の異なる速度で行なって、検査中のデバイスのための最大クロック速度を決定することができる。
【００６５】
図９は、本発明の別の実施例に従った検査回路９００を示している。検査回路９００は、同じ番号を付けられた要素が同じでものである図８の検査回路８００と、いくつかの点で類似している。検査回路９００はさらに、カウンタ８１０の出力端子８２０に同様に接続された第２のＬＦＳＲ９１０を含む。ＬＦＳＲ９１０は、ＬＦＳＲ８３０と同じ出力パターンを生成するように構成されて、ＬＦＳＲ８３０およびＬＦＳＲ９１０からの最終的な結果および各々の中間値が、各々のクロックサイクルの後で一致するようになっている。フロー図９１５に示したように、同期コンパレータ９２０の出力が、何らかのクロックサイクルの後で不一致を示した場合、検査回路９００はエラーを示す。
【００６６】
ＬＦＳＲ８３０は、そのメモリの機能性を検査するオンチップメモリを用いて実現される。ＬＦＳＲ９１０、カウンタ８１０、クロックジェネレータ８３５およびコンパレータ８５０の間のさまざまな相互接続を含む残りのコンポーネントはまた、ＦＰＧＡ資源を用いて実現することができる。このようにして構成されて、検査回路８００または９００のいずれかでの検査の合格シーケンスは、すぐに、検査で用いられるＦＰＧＡ資源のすべてについて正確な機能を示す。
【００６７】
図１０は、カリフォルニア、サンノゼのザイリンクス社から入手可能なバーテックスTMファミリーにおけるＦＰＧＡを特に検査するようにされた検査回路１０００を示している。検査回路１０００は、１対のカウンタ１０２０Ａおよび１０２０Ｂに接続されたクロックジェネレータ１０１０と、それぞれ対をなすＲＡＭ  ＬＦＳＲ１０３０Ａおよび１０３０Ｂとを含む。カウンタ１０２０Ａおよび１０２０Ｂは、バス１０３５Ａおよび１０３５Ｂを介して、それぞれのＲＡＭ  ＬＦＳＲ１０３０Ａおよび１０３０Ｂに接続される。検査回路１０００はさらに、シグネチャアナライザ１０４０と最上位ビット（ＭＳＢ）コンパレータ１０５０Ａとを含む。これらの回路コンポーネントは、フラグ型の回路ノードとして示された、多数の入力ピンおよび出力ピンを介して外的にアクセス可能である。
【００６８】
クロックジェネレータ１０１０からのクロックラインＣＬＫは、カウンタ１０２０Ａおよび１０２０Ｂ、ＬＦＳＲ１０３０Ａおよび１０３０Ｂ、ならびにＭＳＢコンパレータ１０５０の各々に接続される。ロードカウントピン１０６０は、論理０（たとえば０ボルト）に外的に設定されて、データ線D_INのデータをＬＦＳＲ１０３０Ａおよび１０３０Ｂの各々に転送することができる。以下で説明するように、ピン１０６３上のフォースエラー／カウント信号  ／ＦＥ−ＣＮＴによって、外部のテスタは、検査回路１０００が正確にエラーにフラグを立てることを確認することができるようになる。
【００６９】
示した実施例において、線D_INは、論理０（たとえば０ボルト）に結合されているが、他の実施例において、線D_INは、外的にアクセス可能であり、外部のテスタが所望のデータパターンをＬＦＳＲ  １０３０Ａおよび１０３０Ｂにロードすることができるようにする。一旦ＬＦＳＲ１０３０Ａおよび１０３０Ｂの各々がロードされると、ロード／カウントピン１０６０およびフォースエラーピン１０６３は論理１に設定され、それによりＬＦＳＲ  １０３０Ａおよび１０３０Ｂが、擬似ランダムシーケンスを通ってカウントすることができるようになる。
【００７０】
ＬＦＳＲ１０３０Ａの最上位ビットは、線MSB_Aを介して、シグネチャアナライザ１０４０およびＭＳＢコンパレータ１０５０Ａの各々に接続される。ＬＦＳＲ１０３０Ｂの最上位ビットは、線MSB_Bを介して、ＭＳＢコンパレータ１０５０Ａに接続される。双方のＬＦＳＲは同じように構成されるため、最上位ビットの同様の擬似ランダムシーケンスを生成することになる。ＭＳＢコンパレータ１０５０Ａは、各クロック後の各ＬＦＳＲの最上位ビットを比較して、双方のＬＦＳＲが、確実に同じシーケンスを通るようにする。ＭＳＢコンパレータ１０５０Ａは、外部ピン１０７０上に論理０を与えることによって、MSB_AおよびMSB_Bの間のいかなる不一致にもフラグを立てる。このようなエラーは、検査回路１０００のインスタンスを作成するのに用いられるＦＰＧＡ資源が、選択されたクロック周波数で適切に機能していないことを示している。
【００７１】
シグネチャアナライザ１０４０は、一実施例において、線MSB_Aに接続されたクロック端子を有する１７ビットのＬＦＳＲカウンタである。ＬＦＳＲ１０３０Ａは決定論的なシーケンスを通るため、線MSB_Aは、クロックラインＣＬＫ上での所与の数の遷移の間に、一定回数だけ、１および０の間を遷移するはずである。したがって、シグネチャアナライザ１０４０は、シグネチャアナライザ１０４０に記憶されたカウントが信号遷移の正しい数を示していない場合に、エラーを示す（以下の図１６の説明では、シグネチャアナライザ１０４０の一実施例を詳細に説明する）。
【００７２】
フォースエラーピン１０６３によって、外部のテスタは、ＲＡＭ  ＬＦＳＲ１０３０Ａの出力がＲＡＭ  ＬＦＳＲ１０３０Ｂの出力とは異なる場合に、検査回路１０００がエラーにフラグを立てるかどうかを決定することができるようになる。このような検査は、ピン１０６０がハイにされたときに、入力ピン１０６３をローのままにすることによって行なわれる。したがって、ＬＦＳＲ１０３０Ｂは、ＬＦＳＴ１０３０Ａが単に繰返して０をロードする間、増分する。それぞれの最上位ビットMSB_AおよびMSB_Bは、最終的には一致しなくなり、この状態はエラーフラグ（すなわちピン１０７０上の論理０）をもたらすことになる。さらに、ＬＦＳＲ１０３０Ａによるカウントの失敗によって、シグネチャアナライザ１０４０が間違ったカウントを含むことになる。したがって、ピン１０６３を用いて、確実に検査回路１０００がエラーを示すことができるようにすることができる。
【００７３】
図１１は、図１０のカウンタ１０２０Ａ（カウンタ１０２０Ｂと同一である）を概略的に示している。カウンタ１０２０Ａは、いかなるタイプの同期式カウンタとすることもできるが、示した実施例においてはＬＦＳＲとして構成されている、というのもＬＦＳＲは非常に高速であり、同等のサイズの他のカウンタと比較して少ない資源しか必要としないからである。カウンタ１０２０Ａは、４つのＤフリップフロップ１１００−１１０３および１６×１のＲＡＭ１１０５を含む。ＲＡＭ１１０５の各々のアドレス線は、論理０に結合される。このようにして構成されて、ＲＡＭ１１０５は、フリップフロップ１１００−１１０３と類似した１ビットの記憶素子としての役割を果たす。この構成を用いて、確実にカウンタ１０２０Ａが効率的にバーテックスTMＦＰＧＡに収まるようにする。
【００７４】
カウンタ１０２０Ａは、フィードバック回路１１１０を含み、このフィードバック回路は、カウンタ１０２０Ａをプリセットし、かつフリップフロップ１１００にフィードバック信号を与えてカウント１０２０ＡがＬＦＳＲとして動作するようにする、必須の論理を有する。線／ＬＤ−ＣＮＴは、図１０の同様の名前の線と同じか、またはそれとは異なる可能性がある。線／ＬＤ−ＣＮＴが論理０である間に刻時カウンタ１０２０Ａは、カウンタ１０２０Ａに０をロードする。線／ＬＤ−ＣＮＴが論理１である間に刻時カウンタ１０２０Ａは、カウンタ１０２０Ａが、５桁の２進数の、３２個の考え得る組合せの各々を通ってカウントするようにする。バス１０３５Ａはこれらの状態をＬＦＳＲ１０３０Ａに伝える。
【００７５】
ＬＦＳＲ、およびＦＰＧＡを用いてＬＦＳＲを実行する方法の詳細な説明については、ザイリンクスの出願通知書（application note）である「効率的なシフトレジスタ、ＬＦＳＲカウンタおよび長擬似ランダムシーケンスジェネレータ（“Efficient Shift Registers, LFSR Counters, and Long Pseudo-Random Sequence Generators”）」、ピーター・アルフーク（Peter Alfke）著、ＸＡＰＰ  ０５２１９９６年７月７日（バージョン１．１）を参照されたい。
【００７６】
図１２は、図１０のＬＦＳＲ１０３０Ａの実施例を概略的に示している（ＬＦＳＲ１０３０Ｂは、線／ＦＥ−ＣＮＴが、代わりに線／ＬＤ−ＣＮＴに接続されていることを除いて、ＬＦＳＲ１０３０Ａと同一である）。ＬＦＳＲ１０３０Ａは、３つのＤフリップフロップ１２００〜１２０２、および２つの１６×１のＲＡＭアレイ１２０５および１２１０を含む。ＲＡＭアレイ１２０５および１２１０の各々のアドレス線は、バス１０３５Ａ上のカウンタ１０２０Ａからのそれぞれの線に結合される（どのアドレス線がバス１０３５Ａのどの線に接続されるかは重要ではない）。バス１０３５Ａからの残りの線は、線ＣＥ−ＷＥを介して、さまざまなフリップフロップおよびＲＡＭアレイの、それぞれの書込可能端子およびクロックイネーブル端子に接続される。フリップフロップ１２００〜１２０２ならびにＲＡＭアレイ１２０５および１２１０の各々のクロック端子のセンスは反転されて、バス１０３５Ａからの信号に、ＬＦＳＲ１０３０Ａが刻時される前に整定する時間を与える。
【００７７】
ＲＡＭアレイ１２０５および１２１０の各々は、１６個の１ビット記憶素子としての役割を果たす。フリップフロップ１２００〜１２０２もそれぞれ、１ビット記憶素子である。ＬＦＳＲ１０３０Ａはしたがって、１０５ビットのＬＦＳＲである。３５ビットのＬＦＳＲは、何十億もの状態を有することができるため、ＬＦＳＲ１０３０は、クロック周波数が比較的高くても、非常に長い時間繰返さない。結果として、ＬＦＳＲ１０３０Ａの各々のビットは、検査期間に、１および０の非反復擬似ランダムシーケンスを与える。ＬＦＳＲ１０３０Ａの最上位ビット（または何らかの他のビット）は、ＬＦＳＲ１０３０Ｂからの同じビットと比較するために、線MSB_A上のＭＳＢコンパレータ１０５０（図６および１０）に運ばれる。ＬＦＳＲ１０３０Ａはフィードバック回路１２１５を含み、このフィードバック回路は、ＬＦＳＲ１０３０Ａを、端子D_INからのデータ（たとえばすべてが０）でプリセットし、かつＲＡＭアレイ１２０５にフィードバック信号を与えて、ＲＡＭアレイおよびフリップフロップがＬＦＳＲとして動作するようにする、必須の論理を有する。
【００７８】
図１３は、図１０のＭＳＢコンパレータ１０５０Ａの実施例を概略的に示している。コンパレータ１０５０Ａは、ＸＮＯＲゲート１３００およびＤフリップフロップ１３１０を含む。フリップフロップ１３１０のＱ出力は、論理１にプリセットされる。コンパレータ１０５０Ａは、線MSB_AおよびMSB_Bの論理レベルを比較する。MSB_AおよびMSB_Bの間のいかなる不一致も論理０を生成し、この論理０は、フリップフロップ１３１０に記憶され、エラー線/ERRに与えられる。図に示された他のゲートと同様に、ＸＮＯＲゲート１３００は、当業者によって理解されるように、ＦＰＧＡ論理資源を用いて実行され得る。
【００７９】
図１４は、図１０のクロックジェネレータ１０１０の例を示している。クロックジェネレータ１０１０は、ＡＮＤゲート１４００、非反転遅延素子１４１０およびバッファ１４２０を含む。ＡＮＤゲート１４００は、クロックイネーブル信号ＣＥが論理１であるときに単一のインバータとしての役割を果たして、遅延素子１４１０およびＡＮＤゲート１４００がリングオシレータを形成するようにする。遅延素子１４１０は、たとえば、所望の遅延を生じるいかなる資源、一連のルックアップテーブル（ＬＵＴ）および相互接続資源をも含むことができる。クロックジェネレータ１０１０は、完全にオンチップで実行することができ、したがってフィールド診断に有益である。バーテックスTM  ＦＰＧＡで実行される一実施例において、遅延素子１４１０は、１２のバッファの連鎖である。
【００８０】
図１５は、本発明において使用されるクロックジェネレータ１５００の別のタイプを示している。クロックジェネレータ１５００は、クロックパルス発振器１５１０およびバッファ１５２０を含む。クロックパルス発振器１５１０は、ピンＰ１−Ｐ４上の４つの外部クロックを使用し、各々の外部クロックは互いに対して異なる量の遅延を有して、外部クロックよりも周波数の高い出力クロックを生成する。したがって、たとえば、５０ＭＨｚのテスタからの４つのクロックを組み合わせて、線ＣＬＫ上に単一の２００ＭＨｚのクロックを生成することができる。従来のテスタは、典型的に外部クロック信号を与える。ザイリンクス社から入手可能なＦＰＧＡのバーテックスTMIIファミリーのＰＬＤといったいくつかのＰＬＤは、適切な検査クロック信号を開発するのに用いることのできるクロック管理資源を含む。
【００８１】
図１６は、図１０のシグネチャアナライザ１０４０の実施例を示している。シグネチャアナライザ１０４０は、たとえば、何らかの好適なシグネチャアナライザ、従来の巡回冗長検査（ＣＲＣ）を行なうための回路とすることができるが、図１６の実施例においてはＬＦＳＲである。シグネチャアナライザ１０４０は、１７のＤフリップフロップ１６０１〜１６１７を含む（フリップフロップ１６０２〜１６１３は、簡単にするために図１６から省略されている）。ＸＯＲゲート１６２０は、シグネチャアナライザ１０４０をＬＦＳＲとして構成するための必須のフィードバックを与える。検査を行なう前に、シグネチャアナライザ１０４０は、各々のフリップフロップに接続されたセット／リセットラインＳＲ（図１４）を用いてリセットされる。その後の検査中は、シグネチャアナライザ１０４０は、ＬＦＳＲ１０３０Ａからの線MSB_Aで、信号が０から１に遷移するごとに、刻時する。ＬＦＳＲ１０３０Ａは、決定論的なシーケンスを通るため、線MSB_Aは、クロックラインＣＬＫ上での選択された数のトランザクションの間に、一定の回数だけで、１および０の間を遷移するはずである。シグネチャアナライザ１０４０はしたがって、シグネチャアナライザ１０４０に記憶されたカウントが、信号遷移の正しい回数と対応していない場合にエラーを示す。遷移の正しい回数は、選択された数のクロック周期の間に検査回路１０００（図１０）をシミュレートすることによって決定することができる。
【００８２】
１７ビットのＬＦＳＲを使用すると、シグネチャアナライザ１０４０によって生成されたパターンがすぐに繰返されないことが保証される。また、上述のように、ＬＦＳＲは、比較的高速であり、比較的低いオーバーヘッドしか要求しないため、有益なカウンタである。一実施例において、フリップフロップ１６０１〜１６１７は、検査中のＦＰＧＡのＩＯＢにおける出力フリップフロップである。必要であれば、フリップフロップは結合されていない場所に置くことができるため、信号を切り換えても、外部のピンに影響を与えない。
【００８３】
図１７は、図１０の検査回路１０００が、所与のＦＰＧＡ上のその他の資源を検査するように基準化され得る方法を示している。この基準化は、図１７において１７００として示された、検査回路１０００の一部を、必要な回数だけ複製することによって達成される。部分１７００は、カウンタ１０２０Ａおよび１０２０Ｂ、ならびにＬＦＳＲ１０３０Ａおよび１０３０Ｂを含む。部分１０００の１つのインスタンスは、ＭＳＢコンパレータ１０５０Ａに接続される。残りの１つ以上の部分１０００は、僅かに異なるＭＳＢコンパレータ１０５０Ｂを使用し、これは図１１と関連して以下で説明される。
【００８４】
部分１７００の各々のインスタンスは直列に配置されて、各々の下流のインスタンスと関連したＭＳＢコンパレータが、そのインスタンスの各々の線MSB_AおよびMSB_Bを、先行するインスタンスのMSB_Bと比較するようにする。示した例において、ＭＳＢコンパレータ１０５０Ｂは、それぞれMSB_A'およびMSB_B'として示された、第２のインスタンスの線MSB_AおよびMSB_B上の信号を、互いにかつ第１のインスタンスのMSB_Bと比較する。インスタンス間のまたはインスタンス内のいかなる不一致も、エラーピン１０７０上でエラーフラグ（論理０）をもたらす。ところで、１つのシグネチャアナライザ１０４０しか必要ない。なぜなら、コンパレータ回路１０５０Ａおよび１０５０Ｂは、各々のＲＡＭ  ＬＦＳＲの出力が一致することを保証するためである。
【００８５】
図１８は、図１０で最初に導入されたＭＳＢコンパレータ１０５０Ｂの詳細を説明している。ＭＳＢコンパレータ１０５０Ｂは、ゲートの集まりと、論理１にプリセットされたフリップフロップ１８００とを含む。ＭＳＢコンパレータ１０５０Ｂは、そのインスタンスの各々の線MSB_A'およびMSB_B'を、先行のインスタンスのMSB_Bと比較する。インスタンス間のまたはインスタンス内のいかなる不一致も、ＭＳＢコンパレータから伸びているエラー線/ERR'上でエラーフラグ（論理０）をもたらす。各々のＭＳＢコンパレータ１０５０Ｂはまた、線/ERR上の先行のＭＳＢコンパレータからエラー信号を受信する。したがって、上流のコンパレータによって報告されたエラーは、検査回路を伝播し、最終的に外部ピン上に報告される。
【００８６】
図１９は、Ｎ個の小検査回路１９０５（１）〜１９０５（Ｎ）を含む検査回路１９００を概略的に示しており、各々の小検査回路は、回路部分１０００と、関連するＭＳＢコンパレータとからなる（図１０を参照）。検査回路１９００がバーテックスTM  ＦＰＧＡにおいてインスタンスを作成されるとき、各々の小検査回路１９０５（１〜Ｎ）は４つのＣＬＢを占有する。バーテックスTMファミリーの各々のメンバーは、偶数の行Ｒと偶数のカラムＣとを有するＣＬＢのアレイを含む。一実施例において、検査回路１９００は、Ｒ／２のインスタンスを用いて、拡張されてバーテックスTM  ＦＰＧＡの２つのカラムを満たす。小検査回路１９０５（１）〜１９０５（Ｎ）は、まとめて「カラム（column）」インスタンス１９１０と呼ばれる。
【００８７】
図２０は、Ｍのカラムインスタンス１９１０（１）〜１９１０（Ｍ）を用いて、バーテックスTM  ＦＰＧＡのすべての行およびカラムを占める検査回路２０００を概略的に示している。上述のように、バーテックスTMファミリーの各々のメンバーは、偶数Ｃのカラムを含み、各々のカラムインスタンス１９１０は、２つのカラムを占有する。したがって、Ｃ／２のカラムインスタンスを用いて、全体のバーテックスTM  ＦＰＧＡを占めることができる。
【００８８】
検査回路２０００は、図１０および１９の検査回路１０００および１９００それぞれと共通の多数の回路要素を含み、同じ番号の要素は同じものである。検査回路２０００はさらに、各々のカラムインスタンスを順番付け、かつ何らかのカラムインスタンスが、それぞれのエラー線/ERR(1)〜/ERR(M)上でエラー信号を生成した場合にエラーを示す、回路を含む。
【００８９】
その他の共通回路は、カウンタ２０１０、カラムシーケンサ２０１５、Ｍ個の入力ＯＲゲート２０２０、前にＭ個の１のキャッチャの集まり２０２７が来るＭ個の入力ＡＮＤゲート２０２５、後に１のキャッチャ２０３２が来るＭ個の入力ＡＮＤゲート２０３０、ならびに出力ピン２０３５および２０４０を含む。集まり２０２７における各々の１のキャッチャは、１のキャッチャ２０３２と同一である。カラムシーケンサ２０１５は、線２０４５のそれぞれの１を介して、各々のカラムインスタンス１９１０（１）から１９１０（Ｍ）に接続された単一の記憶場所を有する、従来の１−ホットレジスタとすることができる。カウンタ２０１０は、カラムシーケンサ２０１５を刻時する前に、１つのカラムインスタンスを検査するのに十分なある数のクロックサイクルまでカウントする。シーケンサ２０１５は、１つのレジスタから次のレジスタへと単一の論理１を循環させることにより、各々のカラムインスタンスを順に使用可能にする。一旦各々のカラムインスタンスが検査されると、カラムシーケンサ２０１５はカウントを停止し、外部ピン２０３５に対し、線ＤＯＮＥ上に論理１を発する。
【００９０】
バーテックスTMＦＰＧＡ上でインスタンスを作成される一実施例において、共通の回路の各々の要素は、ＩＯＢ資源を用いて実行される。これは、組をなす同一の回路を用いてＣＬＢが有利に場所を占めることができるようにする。別の実施例において、共通の回路は、ＦＰＧＡとは外部の資源を用いて実行される。さらに別の実施例では、代わりに外部の制御に依存して等価の機能性を与えることで、カウンタ２０１０およびカラムシーケンサ２０１５が不要になる。１のキャッチャ２０３２および同様の１のキャッチャ２０２７は、エラー信号を捕らえて、それらを外部ピン２０４０および１０７０上で保持する。
【００９１】
図２１は、「スライス（slice）」２１００、すなわちザイリンクス社から入手可能なバーテックスTMファミリーのデバイスにおける例示のＣＬＢを構成する２つの同様のスライスのうちの１つの概略図である。スライス２１００へのおよびスライスからの端子のすべては、水平または垂直の相互接続線（図示せず）に接続され、それを通ってこれらの端子をＦＰＧＡ内のさまざまな他のコンポーネントにプログラマブルに接続することができる。
【００９２】
スライス２１００は、２つの４入力ＬＵＴ２１０５Ａおよび２１０５Ｂを含む。ＬＵＴ２１０５Ａおよび２１０５Ｂは各々、最大４つの入力の、任意に規定されたブールの関数を実現することができる。さらに、ＬＵＴ２１０５Ａおよび２１０５Ｂの各々は、１６×１ビットの同期ＲＡＭを与えることができる。さらに、２つのＬＵＴを組合せて、１６×２ビットまたは３２×１ビットの同期ＲＡＭ、または１６×１ビットのデュアルポート同期ＲＡＭを生成することができる。
【００９３】
スライス２１００はまた、１対の順次の記憶素子２１１０Ａおよび２１１０Ｂを含み、これらはエッジトリガのＤタイプのフリップフロップまたはレベル依存型ラッチのいずれかとして構成することができる。Ｄ入力は、ＬＵＴ２１０５Ａおよび２１０５Ｂによって、またはＬＵＴ２１０５Ａおよび２１０５Ｂを経由せずに入力端子から直接、駆動することができる。各々の記憶素子は、初期化端末ＩＮＩＴ、逆初期化端末Ｒ、イネーブルクロック端子ＥＣ、および従来シンボル“＞”を用いて指定されたクロック端子を含む。ＩＮＩＴ端子は、関連する記憶素子を、構成の際に指定された初期化の状態に強制し、逆初期化端末Ｒは、記憶素子をＩＮＩＴ端子とは逆の状態に強制する。端子ＩＮＩＴおよびＲは、同期式または非同期式に構成することができ、各々の制御入力のセンスは独立して反転させることができる。
【００９４】
構成メモリセルは、スライス２１００のさまざまな構成可能な要素の機能を規定する。例示の２つの入力マルチプレクサ２１２５は、それぞれの構成メモリセル２１３０に接続されたゲート端子を有する１対のＭＯＳトランジスタを含む。スライス２１００の、残りのプログラマブル要素の機能を規定するのに用いられるメモリセルの他の構成は、簡潔にするために省略される。プログラマブルロジックデバイスの機能を規定するのに構成メモリセルを使用することは、当該技術においてよく理解されている。
【００９５】
スライス２１００の詳細な説明は、本発明を理解するのに必要ではなく、したがって簡潔にするために省略される。スライス２１００内の多くのコンポーネントの動作のより詳細な扱いについては、チャップマン（Chapman）等による「ＦＰＧＡにおける効率的な乗算のためのＡＮＤゲートを有する構成可能な論理ブロック（“Configurable Logic Block with AND Gate for Efficient Multiplication in FPGAs”）」と題された、同時係属中の米国特許出願連続番号０８／７８６，８１８、バウアー（Bauer）による「シフトレジストを兼ねたルックアップテーブル（“Lookup Tables Which Double as Shift Registers”）」と題された米国特許第５，８８９，４１３号、およびスティーブンＰ．ヤング（Steven P. Young）による「階層相互接続線を有するＦＰＧＡ反復可能相互接続構造（“FPGA Repeatable Interconnect Structure with Hierarchical Interconnect Lines”）」と題された米国特許第５，９１４，６１６号を参照されたい。
【００９６】
図２２Ａ−２２Ｄは、例示のＦＰＧＡ２２００上で図２０の検査回路２０００のインスタンスを作成するための４つのＦＰＧＡ構成を示している。簡潔にするために、ＦＰＧＡ２２００は、８×１２のＣＬＢ２１１０のアレイを含み、各々のＣＬＢは２つのスライス２１００を含む。バーテックスTMＦＰＧＡは、ＦＰＧＡ２２００よりも大きいが、最小のバーテックスTMＦＰＧＡは、１６×２４のＣＬＢのアレイを有する。
【００９７】
検査回路２０００がバーテックスTMＦＰＧＡ上でインスタンスを作成するときに、図１９で詳細に説明された各々の小検査回路１９０５（１−Ｎ）は、４つのＣＬＢを占有し、すべての４つのＣＬＢのために単一の使用されていないＬＵＴのみを残す。同様に図１９で詳細に説明されたように、検査回路１９０５（１−Ｎ）のカラムはともに接続されて、カラムインスタンス１９１０（１−Ｍ）を形成する。例示の検査回路１９０５（１）および例示のカラムインスタンス１９１０（３）は、図２２Ａにおいて示されている。検査回路からの使用されていないＬＵＴは次に、望まれれば、クロックジェネレータ１０１０、クロックパルス発振器２２１０、ＸＯＲゲート９２０、ＯＲゲート２０２０、ＡＮＤゲート２０２５およびＡＮＤゲート２０３０等の他の回路を実現するように構成することができる。
【００９８】
図２２Ａ−２２Ｄの４つの構成はともに、すべてのＣＬＢフリップフロップおよびＬＵＴ  ＲＡＭの、１００％の検査の適用範囲を与える。しかしながら、ＦＰＧＡをこれらの検査回路で占めると、従来「レジスタ転送パス」と呼ばれる、レジスタ間の無数の潜在的なルーティングパスが検査されない。図２３（先行技術）は、例示のレジスタ転送パス２３１５を介して相互接続された１対の順次の記憶素子２３０５および２３１０を示している。転送パス２６１５は、ルーティング資源を含み、組合せ論理および／または順次論理を含む可能性がある。幸いにも、さまざまな記憶素子の正確な動作を確認することにより、これらの要素を相互接続するのに用いられるレジスタ転送パスの動作も確認される。したがって、本発明はルーティング資源の検査にも適用することができる。
【００９９】
本発明に従ったルーティング資源の検査は対話型処理である。上述の検査回路は、各々の場合に異なる組の相互接続資源を用いて、何度も行なうことができる。当業者は、これらの資源を検査する目的で、異なるルーティング資源を用いるための別のルーティング設計のプロセスに精通している。
【０１００】
バーテックスTMＦＰＧＡは、一般に「ＪＴＡＧ標準」または単に「ＪＴＡＧ」と呼ばれる、ＩＥＥＥ標準１１４９．１のテストアクセスポートおよびバウンダリスキャンアーキテクチャに完全に準拠している。ＪＴＡＧを用いて、ＦＰＧＡ資源は、一連の刺激ベクトルをインポートして、ＦＰＧＡをプログラムして上述の検査回路を含むことにより、実地検査を行なうことができる。次に、上述したように、検査回路をある速度で実行して、検査回路によって占有された資源が、ある速度で正確に機能しているかどうかを判定することができる。
【０１０１】
本発明を特定の実施例と関連して説明してきたが、これらの実施の変形が当業者にとって明らかであろう。たとえば、先述の検査は、プログラマブル資源およびプログラマブル資源のインスタンスを作成された回路を検査するほんの数方法を示しており、多くの他の検査方法を使用してもよい。ＰＬＤの検査に熟達した当業者は、本発明とともに使用するための多くの標準の検査を適合させることができる。
【０１０２】
したがって、別掲の特許請求の精神および範囲は、先述の説明に限定されるべきではない。
【図面の簡単な説明】
【０１０３】
【図１】ＦＰＧＡに適用される本発明の一実施例を示したフロー図１００である。製造後、所与の半導体ウェハ上のさまざまなチップが、「大きな」欠陥がないかどうかを検査される（ステップ１０５）。
【図２】例示のユーザ設計のインスタンスが作成される、従来のＦＰＧＡ２００のブロック図である。
【図３】図１の設計が特定的な検査ステップ１２１の詳細を示すフロー図である。
【図４】検査中の例示のネット４００および関連する信号源４０５ならびに宛先回路４１０および４１５を示す図である。
【図５】図２のユーザ設計のＣＬＢ，ＩＯＢおよびＲＡＭブロックが斜線にされたＦＰＧＡ５００を示す図である。
【図６】図６Ａ−図６Ｄは、ＦＰＧＡ上でインスタンスを作成して、ＲＡＭブロックの機能性を検査することのできる回路設計の一部を示す図である。
【図７】仮定のユーザ設計の、クリティカルパス７０５の速度性能を検査するようにされた検査回路７００を概略的に示す図である。
【図８】本発明に従って使用して、内部メモリおよびルーティング資源を含む、ＦＰＧＡ資源のある速度での機能検査を行なうことのできる検査回路８００を示す図である。
【図９】本発明の別の実施例に従った検査回路９００を示す図である。
【図１０】本発明のさらに別の実施例に従った検査回路１０００を示す図である。
【図１１】図１０のカウンタ１０２０Ａを概略的に示した図である（カウンタ１０２０Ｂは同一のものである）。
【図１２】図１０のＬＦＳＲ１０３０Ａの実施例を概略的に示す図である（ＬＦＳＲ１０３０Ｂは、線  ／ＦＥ−ＣＮＴが、代わりに線  ／ＬＤ−ＣＮＴに接続されることを除いて、ＬＦＳＲ１０３０Ａと同一である）。
【図１３】図１０のＭＳＢコンパレータ１０５０Ａの実施例を概略的に示す図である。
【図１４】図１０のクロックジェネレータ１０１０の例を示す図である。
【図１５】本発明で使用するための別のタイプのクロックジェネレータ１５００を示す図である。
【図１６】図１０のシグネチャアナライザ１０４０の実施例を示す図である。
【図１７】図１０の検査回路１０００が、所与のＦＰＧＡ上のその他の資源を検査するように基準化され得る方法を示す図である。
【図１８】図１０に最初に導入されたＭＳＢコンパレータ１０５０Ｂの詳細を示す図である。
【図１９】Ｎ個の小検査回路１９０５（１）−１９０５（Ｎ）を含む検査回路１９００を概略的に示す図であり、各々の小検査回路は回路部分１０００と、関連のＭＳＢコンパレータとからなる（図１０を参照）。
【図２０】Ｍ個のカラムインスタンス１９１０（１）−１９１０（Ｎ）を用いて、バーテックスTM  ＦＰＧＡのすべての行およびカラムを占める、検査回路２０００を概略的に示す図である。
【図２１】「スライス」２１００、すなわちザイリンクス社から入手可能なバーテックスTMファミリーのデバイスにおける例示のＣＬＢを構成する２つの同一のスライスのうちの１つの概略図である。
【図２２】図２２Ａ−図２２Ｄは、例示のＦＰＧＡ２２００上で図２０の検査回路２０００のインスタンスを作成するための４つのＦＰＧＡ構成を示す図である。
【図２３】レジスタ転送パスを介して相互接続された、一対の順次の記憶素子を示す図である。
【図１】
2004538628.tif 000004
【図３】
2004538628.tif 000005
【図８】
2004538628.tif 000006
【図９】
2004538628.tif 000007
【図１０】
2004538628.tif 000008
【図１４】
2004538628.tif 000009
【図１７】
2004538628.tif 000010
【図１９】
2004538628.tif 000011
【図２０】
2004538628.tif 000012
【図２２】
2004538628.tif 000013
【図２３】
2004538628.tif 000014
【国際公開パンフレット】
2004538628.tif 000015
2004538628.tif 000016
2004538628.tif 000017
2004538628.tif 000018
2004538628.tif 000019
2004538628.tif 000020
2004538628.tif 000021
2004538628.tif 000022
2004538628.tif 000023
2004538628.tif 000024
2004538628.tif 000025
2004538628.tif 000026
2004538628.tif 000027
2004538628.tif 000028
2004538628.tif 000029
2004538628.tif 000030
2004538628.tif 000031
2004538628.tif 000032
2004538628.tif 000033
2004538628.tif 000034
2004538628.tif 000035
2004538628.tif 000036
2004538628.tif 000037
2004538628.tif 000038
2004538628.tif 000039
2004538628.tif 000040
2004538628.tif 000041
2004538628.tif 000042
2004538628.tif 000043
2004538628.tif 000044
2004538628.tif 000045
2004538628.tif 000046
2004538628.tif 000047
2004538628.tif 000048
2004538628.tif 000049
2004538628.tif 000050
2004538628.tif 000051
2004538628.tif 000052
2004538628.tif 000053
2004538628.tif 000054
2004538628.tif 000055
2004538628.tif 000056
2004538628.tif 000057
2004538628.tif 000058
2004538628.tif 000059
2004538628.tif 000060
2004538628.tif 000061
2004538628.tif 000062
2004538628.tif 000063
2004538628.tif 000064
2004538628.tif 000065
2004538628.tif 000066
2004538628.tif 000067
2004538628.tif 000068
2004538628.tif 000069
2004538628.tif 000070
【国際公開パンフレット（コレクトバージョン）】
2004538628.tif 000071
2004538628.tif 000072
【手続補正書】
【提出日】平成15年7月7日(2003.7.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
あるタイプのＰＬＤに、欠陥がないかを検査するための、構成メモリ検査（１０９）もしくは包括的な検査（１１１）、またはその両方を含む方法であって、前記方法は、
ａ．構成メモリ検査（１０９）が、第１の予め定められた数よりも小さくかつ第２の予め定められた数よりも大きい数の欠陥が存在することを示すときに、または前記タイプのＰＬＤのための包括的な検査（１１１）で不合格であったときに、前記タイプのＰＬＤを候補として選択するステップ（１１３）と、
ｂ．ＰＬＤ上でインスタンスを作成するための顧客特定の設計を生成するステップと、
ｃ．顧客特定の設計の表現式を受取るステップ（１２０）と、
ｄ．候補を検査して、それが顧客特定の設計とともに機能するかどうかを判定するステップ（１２１）と、
ｅ．候補がステップｄにおける検査を合格したときに、候補を受け入れるステップ（１２５）とを特徴とする、方法。
【請求項２】
顧客特定の設計は、その設計の表現式によって、候補上で規定されたネットの集合を必要とし（３０５）、候補を検査するステップは、ネットの集合を検査するステップを含む、請求項１に記載の方法。
【請求項３】
ネットは、ＰＬＤ上で顧客特定の設計のインスタンスを作成することなく、検査される、請求項２に記載の方法。
【請求項４】
ＰＬＤは論理ブロックの集合を含み、顧客特定の設計は、論理ブロックの集合の部分集合を必要とし、候補を検査するステップは、論理ブロックの集合の部分集合を検査するステップ（３３０）を含む、請求項１に記載の方法。
【請求項５】
論理ブロックの集合は、ＰＬＤ上で顧客特定の設計のインスタンスを作成することなく、検査される、請求項４に記載の方法。
【請求項６】
前記タイプは、外部ピンの構成を含む、請求項１に記載の方法。
【請求項７】
候補は、プログラマブル論理ブロックおよびプログラマブル相互接続を含み、設計の論理要素は、論理ブロックの部分集合を用いてインスタンスを作成され、設計のルーティング部分は、相互接続において規定されたネットの集合として、インスタンスを作成される、請求項１に記載の方法。
【請求項８】
候補を検査するステップは、設計のインスタンスを作成するのに用いられる論理ブロックの、複数の部分集合を構成して、検査信号発生器（４０５）を与えるステップを含む、請求項７に記載の方法。
【請求項９】
候補を検査するステップは、設計のインスタンスを作成するのに用いられる論理ブロックの、複数の部分集合を構成して、検査信号オブザーバ（４１０，４１５）を与えるステップを含む、請求項７に記載の方法。
【請求項１０】
論理ブロックは、入出力ブロックを含む、請求項７に記載の方法。
【請求項１１】
候補を検査するステップは、論理ブロックの部分集合において設計の論理要素のインスタンスを作成することなく、ネットを検査するステップを含む、請求項７に記載の方法。
【請求項１２】
第２の顧客特定の設計の表現式を受取るステップ（１３１）と、候補を検査して、それが第２の顧客特定の設計とともに機能するかどうかを判定するステップ（１２１）とをさらに含む、請求項１に記載の方法。
【請求項１３】
候補を検査するステップは、ＰＬＤ上で１つ以上の検査回路のインスタンスを作成するステップを含み、検査回路は、顧客特定の設計によって必要とされるＰＬＤ資源と、検査回路のオーバーヘッドとを使用し、検査回路のオーバーヘッドは、顧客特定の設計によって必要とされないプログラマブル資源を含む、請求項１に記載の方法。
【国際調査報告】
2004538628.tif 000073
2004538628.tif 000074
2004538628.tif 000075