JP4317013B2 - プログラマブルロジックデバイスのための特定用途向け検査方法 - Google Patents

プログラマブルロジックデバイスのための特定用途向け検査方法 Download PDF

Info

Publication number
JP4317013B2
JP4317013B2 JP2003519431A JP2003519431A JP4317013B2 JP 4317013 B2 JP4317013 B2 JP 4317013B2 JP 2003519431 A JP2003519431 A JP 2003519431A JP 2003519431 A JP2003519431 A JP 2003519431A JP 4317013 B2 JP4317013 B2 JP 4317013B2
Authority
JP
Japan
Prior art keywords
pld
design
test
lfsr
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003519431A
Other languages
English (en)
Other versions
JP2004538628A (ja
Inventor
ウェルズ,ロバート・ダブリュ
リン,ジー−ミン
パトリー,ロバート・ディ
トン,ビンセント・エル
チョー,ジェー
トートーンチ,シャーヒーン
ジョンソン,クレー・エス
デービス,シェリー・ジィ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/924,365 external-priority patent/US6664808B2/en
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2004538628A publication Critical patent/JP2004538628A/ja
Application granted granted Critical
Publication of JP4317013B2 publication Critical patent/JP4317013B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318516Test of programmable logic devices [PLDs]
    • G01R31/318519Test of field programmable gate arrays [FPGA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Description

発明の分野
本発明は、プログラマブルロジックデバイスに関し、より特定的には小欠陥を含むプログラマブルロジックデバイスを検査し、使用するための方法に関する。
発明の背景
フィールドプログラマブルゲートアレイ(FPGA)等のプログラマブルロジックデバイス(PLD)は、ユーザ定義論理回路を実行するようにプログラムすることのできるユーザプログラマブル集積回路である。典型的なアーキテクチャにおいて、FPGAは、プログラマブル入出力ブロック(IOB)によって囲まれた設定可能な論理ブロック(CLB)のアレイを含む。プログラマブルルーティング資源の階層は、CLBおよびIOBを相互接続する。構成ビットストリームを、FPGAの構成メモリセルへロードすることによって、これらのCLB,IOBおよびプログラマブルルーティング資源がカスタマイズされる。マルチプレクサ、メモリおよび特定用途向け回路等の追加の資源を含んでもよい。
供給メーカーが、さらにより複雑なタスクを行なうことのできるPLDの顧客からの要求に応えようとするにつれて、PLDはさらに大型になっている。あいにく、チップのサイズが増加すると、所与のチップで欠陥が見つかる可能性も高くなる。したがって、PLDが複雑になると歩留りが低下し、既に高価なPLDが一段と高価になる。
PLDは設計が特定的ではないが、代わりにユーザ(たとえば回路設計者)に、殆ど無限数の回路の変形のインスタンスを作成する能力を与える。所与のPLDが捧げられる目的を予め知らなければ、PLDの品質および信頼性に大きな負担をもたらすことになる、と言うのもPLDの供給メーカーは、使用され得るいかなる機構の機能性も検証しなければならないからである。顧客を失望させるのを避けるために、PLD製造業者は、比較的小さな欠陥を含むPLDさえも廃棄する。
PLDの欠陥は、2つの一般的な領域に分類することができる。すなわち、PLD全体を無用なものにするまたは信頼できないものにする大きな欠陥、およびPLDの比較的小さな割合に損害を与える局部的欠陥である。いくつかの大型チップにつき、所与のウェハ上のチップの3分の2近くが、局部的欠陥のために廃棄され得ることがわかった。大規模集積回路の製造に関連する費用を考えると、PLDチップの多くの割合を廃棄することは、PLD製造業者に対し非常に不利な経済的影響をもたらす。
概要
本発明により、PLD製造業者は、いくつかの欠陥にもかかわらず、選択された顧客設計を完全に実行することのできるPLDを識別することができるようになる。
製造の後で、所与の半導体ウェハ上のさまざまなチップは、PLDをいかなる顧客の目的にとっても不適当なものにする見込みの高い電力供給不足等の、「大きな(gross)」欠陥がないかどうかを検査される。SRAMベースのFPGAに適用可能な検査方法において、大きな欠陥の検査で生き残ったチップは、「リードバック検査(readback test)
」にかけられて、構成メモリセルの機能を検査する。欠陥のないチップは、完璧な性能を保証するためのさらなる検査にかけられ、一方で多数のまたは高密度のリードバックの欠陥を示すチップは拒否される。欠陥が比較的少ないチップは、「ASIC候補(ASIC candidates)」として取りのけられ、さらなる検査にかけられる。PLDの機能性を確認するために通常行なわれる一般的な検査とは異なり、一実施例において、ASIC候補は、特定用途向け検査にかけられ、この検査では、各々の候補が1つ以上の特定の顧客設計とともに機能する適合性が検査される。
本発明の実施例に従ったいくつかの検査方法は、ユーザ設計に基づいた検査回路を用いて、設計に必要とされるPLD資源を確認する。これらの方法では、設計を理解しなくても、所与の設計のためのFPGAの適合性が検査されるため、ユーザ設計のための設計が特定的な検査を開発する費用および複雑さが大幅に減じられる。また有利なことに、所与の設計に必要とされるこれらの資源に対する検査範囲を狭めることによって、検査に必要とされる時間が減じられ、販売に適したPLDの数が増加する。ユーザ設計以外の検査回路を用いて、ユーザ設計に必要とされる資源を検査することにより、ユーザ設計を理解しなくても、包括的な検査が容易になる。
先述の検査方法では、PLD供給メーカーは、完全に検査された欠陥のないPLDを販売するしかない。顧客は依然として、顧客特定の設計を開発しかつこれらの設計を迅速に市場に出すのに、欠陥のないPLDを必要とする。しかしながら、一旦顧客が特定の設計を有すると、先述の検査手順によって、より低額なPLDを与えることができ、このPLDは、顧客特定の設計を開発するのに最初に用いられた、完全に機能する1つのまたは複数のPLDと物理的にも機能的にも同一である。
本発明の一実施例に従うと、回復されたPLDに関連した潜在的な費用節約に関心のある顧客は、顧客特定の設計(たとえばデータファイル)の表現式をPLDの供給メーカーに送る。供給メーカーは次に、この表現式を用いて、先述した態様でASIC候補を検査する。これにより、顧客特定の設計のインスタンスを作成するのに最初に用いられた、欠陥のないPLDと物理的および機能的に同一のASIC候補は、より低額で顧客に販売することができる。
この概要は発明の範囲を制限するものではない、と言うのも本発明の範囲は特許請求の範囲によって規定されるためである。
詳細な説明
本発明は、プログラマブルロジックデバイスに関する。以下の説明において、本発明の実施例をより完全に理解するために、多数の特定の詳細が述べられている。しかしながら、本発明は、これらの特定の詳細がなくても実行され得ることが当業者にとって明らかである。他の例において、本発明をわかりにくくするのを避けるために、周知の特徴は詳細に説明されていない。
図1は、FPGAに適用される本発明の一実施例を示すフロー図100である。製造の後で、所与の半導体ウェハ上のさまざまなチップは、「大きな」欠陥がないかどうかを検査される(ステップ105)。この開示の目的において、「大きな」欠陥とは、PLDをいかなる顧客の目的にとっても不適当なものにする見込みの高い欠陥のことである。大きな欠陥の例は、電力供給の不足、開路、過度の漏れ、欠陥のあるクロック管理回路およびかなりの数の欠陥のあるプログラマブルメモリセルを含む。大きな欠陥を有するチップは廃棄される(判断107)。大きな欠陥のためのさまざまな検査が、マイケル・ジョン(Michael John)、セバスチャン・スミス(Sebastian Smith)による「特定用途向け集積
回路(“Application-Specific Integrated Circuits”)」(1997)の第14章に記載されている。
判断107をくぐり抜けたチップは、「リードバック検査」にかけられて、構成メモリセルの機能を検査する(判断109)。このステップにおいて、構成メモリは、さまざまなパターンの構成データを含み、かつ次にリードバックしてこれらのセルの正確なプログラム状態を確認するように、プログラムされる。一実施例において、チップに多数のまたは高密度の欠陥がある場合、そのチップは拒否される。「大きい」と考えられる数は、問題のPLDのサイズおよび欠陥の分布に依存する。なぜなら、これらのパラメータは、このような欠陥が、PLDを顧客設計(「ユーザ設計(user designs)」とも呼ばれる)のインスタンスを作成するのに無用なものにする可能性を決定するからである。
判断109で、欠陥の最大許容数よりも多い欠陥を有するチップが廃棄され、欠陥のないチップは、包括的な検査のためにステップ111へと送られ、最大許容数よりも少ない複数の欠陥を有する欠陥チップは、「ASIC候補」として識別される(ステップ113)。ASIC候補は、不完全ではあるが、いくつかのユーザ設計のインスタンスを作成するのに十分な資源を有し得るチップである。他の実施例では、ユーザ設計を実行するにあたっての成功の可能性に基づいて、ASIC候補を分類し得る。たとえば、1つのみの欠陥を有するデバイスは、5つの欠陥を有するデバイスよりもより価値あるものとみなされ得る。
判断109を通して欠陥が発見されなかったPLDは、完全に検査されて、厳しい性能基準に準拠しているかを確認される。回路供給メーカーは、各々のデバイスの速度性能および機能性の双方を検査しなければならない。十分に機能するチップは、良好なデバイスとして識別される(ステップ115)。これらのチップは次にパッケージ化されて(ステップ117)、結果として得られるPLDは、パッケージ化されていないチップと同じ一連の検査にかけられ、もう一度ステップ105から始められる。検査が再び行なわれて、パッケージ化のプロセスによって、またはパッケージ化のプロセスの間に、欠陥が持ち込まれなかったことを確認する。パッケージ化されたチップに欠陥がない場合、プロセスは最終的にステップ115に戻り、パッケージ化されたPLDはそれに応じて収容され、顧客に販売される(ステップ118)。示されていないが、PLDのための従来の検査プロセスはさらに、高速の収容を含む。
完全に機能するとまではいかないが、判断107および109をくぐり抜けたチップは、「ASIC候補」として識別される(ステップ113)。パッケージ化されていないASIC候補はパッケージ化され(ステップ117)、結果として得られるパッケージ化されたPLDは、パッケージ化されていないチップと同じ一連の検査にかけられ、再びステップ105から始められる。各々のパッケージ化されたチップは、判断107または109によって廃棄されるか、またはもう一度ASIC候補として識別され得る(ステップ113)。しかしながら、今回、パッケージ化されたデバイスは、欠陥があるにもかかわらずユーザ設計を確実に実行するかどうかを判定するのに検査されるべき、パッケージ化されたASIC候補として収容される(ステップ119)。
示した検査方法の次のステップに先立つ何らかの時点で、PLD製造業者は、適切なPLD設計ソフトウェアを用いて表現された1つ以上のユーザ設計を要求し、それを受取る(ステップ120)。これらの設計は、検査中のPLDのタイプ(たとえば同じサイズおよび同じピン構成のPLD)で使用するようにされる。次に、これらの顧客設計の1番手は分析されて、ステップ119のASIC候補のうちの1つにインスタンスが作成される、設計が特定的な検査回路を作成する。これらの検査回路を用いて、ASIC候補が顧客設計とともに機能するかどうかを判定する。このような機能性は見込みのないものではな
い、というのも顧客は、典型的に、プログラマブル資源のかなりの部分を未使用のままにしており、PLDにおける欠陥は、これらの未使用の部分に限定され得るためである。検査121、つまり設計が特定的な検査が以下で詳細に説明される。
判断123において、検査中のASIC候補が、対象の設計とともに十分に機能すれば、このデバイスは、特定の設計とともに使用するのに許容できるものとして識別される(ステップ125)。このデバイスは最終的に顧客に送られ(ステップ127)、顧客は次に、ステップ121で用いられたユーザ設計とともにASIC候補をプログラムする(ステップ129)。その代わりに、ステップ123で、対象の設計が、選択されたデバイスにおいて十分に機能しないことがわかったとしても、1つ以上の追加のユーザ設計を試し得る(判断131)。所与のASIC候補につき、顧客設計とともに使用するためのデバイスが割当てられるか、またはユーザ設計がなくなったときに、このプロセスは終了される。好適な設計が見つからない場合、ASIC候補は廃棄され得るか、または後で受取られるユーザ設計の検査のために保管され得る。ASIC候補は、たとえば異なるユーザ設計のインスタンスを作成する試みが10回失敗してから、廃棄され得る。
選択された顧客設計に割当てられたASIC候補は、それに応じてラベル表示されて、それらが欠陥のある資源を必要とし得る適用例において使用されないようにする。ASIC候補はまた、検証されたユーザ設計以外は拒否するようにされ得る。たとえば、検証された設計のためのビットストリームの巡回冗長検査(CRC)値等の一意のシグネチャが、PLD上の不揮発性メモリに記憶され、かつ設計を検証するのに使用され得る。
従来の検査において、多くのPLDが、少数のランダムな欠陥を有するとして拒否されてきた。そのような欠陥にもかかわらず特定のユーザ設計とともに完璧に機能し得るこれらのPLDのうちの1つを識別することにより、PLDの製造業者およびその顧客は、ともすれば廃棄されるPLDを使用することにより利益を得ることができる。PLD製造業者は、大幅に改善された歩留りからの利益を獲得し、PLDの顧客は、特定の目的のための好適なPLDがより低価格で入手可能になるため、恩恵を受ける。ユーザの立場からさらに有利なことに、回復されたPLDは、製品を市場に出すのに最初に用いられた、完全に機能するPLDと物理的にも機能的にも同一であるため、さもなければその製品を新しいASICに適合させるのに必要とされる技術資源が必要でない。製品を新しいASICに適合させるのに通常必要とされる時間も減じられ、顧客は、完全に機能するPLDの、それほど高価ではない代替物をより迅速に入手することができる。
フロー図100は、例示的なものであり、実際にはこのフロー図は、かなり異なるものとなるかもしれず、異なるステップが異なる順序および/または異なる時に達成され得る。たとえば、ステップ121は、「欠陥のない」PLDを検査するのに用いられたのとは異なる検査装置を用いて行なわれ得る。さらに、フロー図100は、各々のウェハがPLDおよびASICの候補を与え得る場合を示している。他の実施例において、ウェハは完全にPLD、または完全にASIC候補専用にされ得る。PLDの歩留りおよび顧客からのASIC候補の要求が、ASIC候補に割当てられるウェハまたはチップの割合を決定する際に考慮される。
図2は、従来のFPGA200のブロック図であり、例示的なユーザ設計のインスタンスが作成されている。FPGA200は、プログラマブルロジックの集まりを含み、これは複数の入出力ブロック(IOB)205、構成可能な論理ブロック(CLB)のアレイ210および複数のRAMブロック215を含み、これらのすべては、プログラマブルルーティング資源を介して選択的に相互接続され得る。CLB210は、主要なビルディングブロックであり、カスタマイズ可能なゲート、フリップフロップおよび配線を実行するための要素を含む。IOB205は、信号を外部のデバイスと通信させるための回路を与
え、RAMブロック215は、同期式または非同期式のデータの記憶を可能にするが、各々のCLBもまた、同期式または非同期式のRAMを実行することができる。1つのFPGAの詳細な扱いについては、ザイリンクス(Xilinx)の事前製品仕様書(advance product specification)である「バーテックス(Virtex)II 1.5v フィールドプログラマブルゲートアレイ(“Virtex-II 1.5V Field-Programmable Gate Arrays”)」、DS031−2(vl.9)、2001年11月29日、を参照されたい。
図3は、図1の設計が特定的な検査ステップ121の詳細を示すフロー図である。この検査は、ユーザ設計のための設計が特定的な検査を開発する費用および複雑さをもたらすことなく、包括的な検査を容易にするという点で有利である。
まず第1に、ソフトウェアはユーザ設計を分析して、設計に必要とされる資源を識別する(ステップ300)。このような資源は、図2の想像上の例において、斜線部分のIOB205、CLB22、RAMブロック215およびこれらを相互接続するのに用いられる相互接続資源220(残りの相互接続資源は、明瞭化のためにここでは省略される)として示される。さらに含まれるがここに示されていないのは、ユーザ構成を規定するのに必要とされるプログラマブルメモリセルである。ステップ303は、ユーザ設計に必要とされる構成ビットの機能性を検査するためのリードバック検査である。本発明の実施例に従った検査方法のステップを実行するソフトウェアは、何らかのコンピュータ読取可能媒体上に格納することができる。コンピュータ読取可能媒体の例は、磁気および光学記憶媒体ならびに半導体メモリを含む。
次に、ソフトウェアは、ユーザ設計において指定された相互接続を、ネットの組に分割し(ステップ305)、各々のネットは、ソースおよび宛先ノードの間で規定された相互接続の一部である。複数のサンプルネットが、図2に太線を用いて示されている。一般的に、各々のネットは、単一の信号源および1つ以上の信号宛先を含む。ネットの集まりはともに、ユーザ設計によって規定されたすべての信号パスを含み、検査のために用いられるネットは、オーバーラップを最小化する(すなわち、信号を中継するのに用いられているが、設計において実際には使用されていない電線の数を最小化する)ように選択される。ステップ310Aおよび310B(図3)の間で規定されたFORループは、各々のネットの保全性を検証するための検査を規定する。
相互接続をネットの集まりに分割することは、所与の設計と関連した相互接続資源を検査する一つの方法にすぎない。相互接続資源を検査する他の方法を用いることもできる。
ステップ315で始まって、所与のネットの資源要素は信号発生器として構成され、1つのまたは複数の宛先要素は信号オブザーバとして構成される。信号発生器は次に、ネット上で信号を宛先回路に与えて、ネットの機能性を確認する。
図4は、検査中の例示のネット400および関連の信号源405ならびに宛先回路410および415を示している。ソース405ならびに回路410および415は、この例においてCLBであるが、各々の要素はまた、たとえばIOBまたはRAMブロックであるかもしれない。この例において、ソース405は、検査クロックTCLKに応答して、1および0の列を生成する検査信号発生器として構成される。ソース405は、ルックアップテーブル(LUT)425を通してネット400に接続された、フリップフロップ420を含む。ソース405は、LUT425を含む必要はないが、この例では、ソース405のインスタンスを作成するのに用いられるCLB内のネット400の一部が、ユーザ設計の一部であるものとして仮定されている。ユーザ設計における相互接続が、代わりにフリップフロップ420から直接伸びていれば、好ましい、シミュレートされたネットは、同様にフリップフロップ420から直接伸びることになる。
宛先回路410および415は、検査信号オブザーバとして構成される。各々は、それぞれのLUT425およびフリップフロップ420を含む。フリップフロップ420は、ネット400上で宛先410および415に与えられた信号を記憶するようにされる。ネット400を検査するために(図3のステップ320)、ソース405からの信号は、共通の検査クロックTCLKを用いて、ネット400を渡って宛先回路410および415へ刻時される。宛先回路410および415における結果として得られるフリップフロップ420の内容が次にリードバックされて、ネット400が正確なデータを渡したことを確認する。宛先410および415内に伸びるネット400の一部は、好ましくはユーザ設計によって用いられるのと同じ部分である。この例において、ユーザ設計は、信号をそれぞれのLUT425に伝える宛先410内のローカルルーティングと、信号をそれぞれのフリップフロップ420に伝える宛先415内のローカルルーティングとを含む。
ネットが適切なデータをある速度で運ぶことができない場合、ASIC候補は対象の設計に失敗する(図3、判断345)。次にこのプロセスは、次の設計があればそれに進む(図1のステップ131)。先述のプロセスは、PLDが失敗するか、または全体のネットの集まりがその妥当性を検査されるまで、ユーザ設計の各々のネットのために継続される。
検査信号発生器およびオブザーバを含む、さまざまな検査回路を規定する構成データを生成するのに用いられるプログラミングプロセスは、典型的に、設計入力ソフトウェア(たとえば合成または概略ツール)、プレースアンドルートソフトウェア(place-and-route software)および、パーソナルコンピュータまたはワークステーション上で実行されるビットストリーム生成ソフトウェアを利用する。このソフトウェアは、予め規定された回路のライブラリ「マクロ(macros)」を含み、これは所与のPLDタイプのためのプログラマブルブロックの各々のタイプのための検査信号発生器およびオブザーバの論理関数を規定する。PLDプログラミングプロセスにおける「マクロ」の使用は周知である。
プログラマブルブロック(たとえばIOB,CLBおよびRAM)は典型的に、記憶素子およびローカルルーティングを含む(以下で説明される図21は、従来のCLBの1つのタイプを示している)。所与の顧客設計におけるプログラマブルブロック間のルーティングパスを検査する際に、ブロック内のローカルルーティングは、顧客設計で用いられるのと同じローカルルーティングであることが好ましい。結果として、検査信号発生器および受信器のインスタンスを作成するのに用いられるコアは、可能な場合には、顧客設計におけるその相対物と同一の内部ルーティングを含む。
一実施例において、ソフトウェアのライブラリ、マクロは、各々のタイプの論理ブロックにつき、信号発生器およびオブザーバの組を含み、これはローカルな相互接続資源のすべての考え得る構成を含む。顧客設計においてネットの検査回路を与えるステップは次に、ローカルな相互接続構成が、顧客設計において対応する論理ブロック構成と最もよく一致する検査信号発生器およびオブザーバのライブラリ要素を選択するステップを含む。
論理ブロックの何らかの機能性は、先述の信号発生器およびオブザーバのタイプを用いて検査することが難しいかもしれない。たとえば、いくつかのCLBにおいて利用可能なキャリーチェーン資源を含むトグルフリップフロップを生成することは困難であるかもしれない。このような場合において、信号発生器および/または信号オブザーバとして設計することのできない論理ブロックは、代わりに2つの他の論理ブロックの間でインスタンスを作成され、そのうちの1つは検査信号発生器として構成され、他方は検査信号オブザーバとして構成される。この例において、信号発生器またはオブザーバとして設計することのできない論理ブロックは、2つの他の論理ブロックを接続するネットの一部となる。
本発明のいくつかの実施例は、ネットの検査をさらに行なって、顧客設計に影響を与え得る相互接続資源の間の短絡を見つけ出す。一実施例において、たとえば、各々のネットは、ハイに(たとえば論理1に)保持された近隣の相互接続資源とともに検査される。この検査は、論理0に保持された近隣の資源とともに繰返すことができる。検査中のネットおよび近隣の相互接続線の間の短絡は、ネット上で送信されるデータを破損させる。
すべてのネットが合格したと仮定すると、図3の検査手順は、ユーザ設計において使用されるさまざまなIOB205およびCLB210(たとえば、図2の斜線部分のIOB205およびCLB210)の検査へと進む。プログラマブルブロックを検査するための多くの方法が、プログラマブルブロックデバイスの検査に精通した当業者に知られており、これらのすべてを使用し得る。IOB,CLBおよび他の資源を検査するための別の方法は、PLDを、プログラマブルロジックを実行する特別な検査回路を含むようにプログラムするステップを含む。一実施例において、検査される資源は、リニアフィードバックシフトレジスタ(LFSR)のアドレス端末に接続されたカウンタ回路を生成するように構成される。検査のためにシフトレジスタのインスタンスを作成するのに用いられる相互接続は、先述の検査順序の間に検査されたのと同じ相互接続であることが好ましい。
LFSRは、繰返し刻時されるときに、一定の順序の状態を経るという意味で、周期的である。結果として、既知のデータの組で始まるLFSRは、所与の数のクロック周期の後で、予測可能なデータの組を含む。LFSRの一定の状態は、擬似ランダムであり、繰返し率は、事実上いかなる長さであってもよい。LFSRの擬似ランダムな性質は、各々のLFSRがかなりの数のクロック周期でシフトすることができるならば、それらのインスタンスを作成するのに用いられる内部メモリおよびルーティング資源が、多数の置換えで処理されるようにすることを保証する。
一実施例に従うと、LFSRは、既知のカウント(たとえば0)にプリセットされ、既知の回数で刻時される。結果として生じるカウントは、次に参照と比較される。結果として生じるカウントが参照と一致すれば、LFSRを実行するのに用いられる、メモリおよびルーティング資源を含む、検査回路を実行するのに用いられる資源のすべては、選択されたクロック速度で完全に機能するものと考えられる。しかしながら、LFSRのカウントが参照と一致しなければ、検査は失敗する。検査を多くの異なる速度で行なって、検査中のデバイスの最小クロック速度を決定することができる。
図5はFPGA500を示しており、図2のユーザ設計のCLB,IOBおよびRAMブロックは斜線にされている。これらの資源のうちのいくつかは、先行の検査ステップにおいて良好であると確認されたルーティング資源(ネットまたはネットの一部)を主に用いて相互接続されて、LFSRの対を形成する。LFSRを次に実行して、その構成要素の論理資源を検査することができる。検査が失敗すれば(図3の判断333)、検査は現在のユーザ設計とともに使用されるASIC候補を拒否し、別のユーザ設計があればそれを試みる。検査に合格すれば、検査手順はステップ335に進み、いかなるRAMブロックも検査される。RAMブロックは、多くの検査手順を用いて検査することができる。LFSRを用いてFPGA資源を検査する特定の例を以下で詳細に説明する。
ステップ335のRAMブロック検査が不合格となった場合には、検査は現在のユーザ設計とともに使用するためのPLDを拒否し、別のユーザ設計があればそれを試みる。RAMブロックが合格した場合、PLDはパラメトリック検査にかけられ得、この検査は、対象のユーザ回路における、通過する信号およびクリティカルパスのための適切な速度性能を検証する(速度性能を検証するための1つの方法は以下で説明される)。PLDが速度検査に失敗すれば(判断345)、検査は現在のユーザ設計とともに使用するためのP
LDを拒否し、別のユーザ設計があればそれをを試みる。そうでない場合は、ASIC候補はユーザ設計とともに使用するのに適当であると考えられ、結果として適切な顧客への販売用として割当てられる(ステップ125)。
(先行技術の)図6Aから6Dは、FPGA上でインスタンスを作成して、RAMブロックの機能性を確認することのできる回路設計の一部を示している。多くの他の好適なエンベデッドメモリ検査が当業者にとって周知である。
図6Aは、デュアルポートRAMブロック(すなわちポートAおよびBを有するRAMブロック)を検査するために擬似ランダムな順序のアドレスおよびデータを生成するようにされたLFSR回路600を概略的に示している。NビットのLFSRカウンタについて、カウンタが、繰り返しの前に循環する状態の最大数は、2N-1である。ミッシング状態はすべてが0の状態である。LFSR600は、アドレス0を含むすべてのRAMアドレスを検査するため、LFSR600はN+1ビットのLFSRであり、NはRAMアドレスポートの幅である。
典型的なN+1のLFSRカウンタが、この態様でデュアルRAMを検査するのに用いられた場合、すべてのビットが1である(すなわち、双方のポートが同じメモリセルをアドレス指定している)ときに、ポートAおよびBの間でアドレス衝突が起こる。ANDゲート610および関連の回路は、このような衝突を回避するために、「すべて1(all ones)」の状態を排除する。LFSRは、図8〜22と関連して以下でより詳細に説明される。
LFSRカウンタ600の1つの特性は、記憶素子K+1におけるデータ(すなわちQ[K+1])が、各クロック後の、記憶素子Kにおけるデータ(すなわちQ[K])に等しい、ということである。この特性を用いて、かつポートAのRAMアドレスをQ[N:1]、およびポートBのRAMアドレスをQ[N+1:2]と割当てると、ポートAのアドレスは、次のクロックサイクルでポートBのアドレスとなる。この特性を以下の方式とともに活用することができる。
Figure 0004317013
ブロックRAMを実行するこの方式では、各々のRAMセルの内容は、双方のポートから読み込まれ、双方のポートへ書込まれ、このデータはその最初の状態に戻される。これにより、検査回路が機能した状態である限り、すべての検査が繰返され、ループされることが可能になる。RAMの内容の一部が破損すれば、検査回路は再構成される。
図6Bは、図6AのLFSR600からの13の出力LOUT[1:13]からRAM検査データを生成するためのデータジェネレータ615を示している。なお、括弧内の英数表示で終わる信号表示は、信号線がそこへまたはそこから延びる図を特定する。図6Bにおいて、たとえば、信号線LOUT[1](6A)は図6Aから来ている。
アドレスポートAのためのデータDATA_Aは、LFSR出力ビットLOUT[1:12]のXNORに基づいており、アドレスポートBのためのデータDATA_Bは、LFSR出力ビットLOUT[2:13]のORに基づいている。この方法により、期待されるデータが決定的となる。すなわち、DATA_AおよびDATA_Bはいかなる所与のアドレスに知られている。
データジェネレータ615は、DATA_AおよびDATA_Bの補数COMP_AおよびCOMP_Bをそれぞれ記憶するための1対のフリップフロップ617および619を含む。補数COMP_AおよびCOMP_Bを用いて、読取誤りおよび書込誤りを検出する。
図6Cは、エラー検出器625に接続されたRAMブロック620を示している。すべてのクロックサイクルで、エラー検出器625は、ブロックRAM620からの出力DOAおよびDOBを、図6Bのそれぞれの相補信号COMP_AおよびCOMP_Bと比較する。ブロックRAM620が使用可能でないときでもこの比較が行なわれるため、ブロックRAM620が使用可能であるかどうかが確認される。リードサイクルの間に、ブロックRAM620に与えられたデータおよび期待された出力信号は逆であり、これは書込周期がリードサイクルの間に生じないことを保証する。ラッチ630は、いかなるエラー状態も捕え、結果として生じる誤り信号ERR_OUTを出力線上に与える。RAMブロック620または対象のユーザ設計に関連したいかなる他のRAMブロックがエラー信号を生じた場合に、検査中のFPGAは拒否される。
図6Dは、ブロック620のようなRAMブロックを検査のために連続して使用可能にするために用いることのできるトークン回路640を示している。大型のデバイスでは、特にかなりの量のブロックRAMを有するデバイス(たとえば、ザイリンクス社から入手可能なバーテックスTMV3200EまたはV812EM)では、検査中に活動状態の回路の量を制限して、デバイス内のノイズおよび動的電流の量を減じるように、注意を払わなければならない。この目的のために、トークン回路640は、一度に1つのRAMブロックしか使用可能にしない。入力端子Token_Inのローからハイへの遷移によって、トークン回路640が起動される。Token_In信号が検出されたときに、トークン回路640は、ブロックLFSR600、データジェネレータ615およびRAM620を使用可能にする。トークン回路640はまた、図6Aおよび6Bのフリップフロップおよび図6CのRAM620をリセットするRESETパルスを生成する。リセットラインが示されていない図6A−6Dのフリップフロップは、検査が始まる前にすべてリセットされる。
LFSR600がそのカウントを完了したときに、ANDゲート610からのエンドカウント信号END_CNTは、LFSR600を使用不可能にし、トークン回路640に、線TOKEN_OUT上に“Token_Out”信号を生成させる。線TOKEN_OUTは、検査中の次のブロックRAMのTOKEN_IN線があればそれに接続される。したがって、トークンは、ユーザ設計におけるすべてのRAMブロックが検査されるまで、1つのRAMブロックから次のRAMブロックへ渡される。
図7は、仮定のユーザ設計のクリティカルパス705の速度性能を検証するようにされた検査回路700を概略的に示している。検査回路705は、トグルフリップフロップとして構成されてクリティカルパス705を通って送信するための検査信号を生成する、CLB710を含む。CLB710は従来、フリップフロップ715およびLUT720を含む。検査回路700はさらに、CLB710からのデータ信号を受信し記憶するようにされたCLB725を含む。CLB725は、フリップフロップ730およびLUT735を含む。
この例示において、クリティカルパス705は、比較的太い線を用いて示したように、
フリップフロップ715およびフリップフロップ730の間のパスである。この例は、検査中のユーザ設計におけるクリティカルパスが、LUT720および735、1対のCLB740および745、ならびに3つの相互接続サブネット750を含むことを仮定している。これらの要素は、検査回路705に含まれる。なぜならクリティカルパス705は、ユーザ設計におけるクリティカルパスと同様に実用的であることが好ましいからである。CLB740および745は、必ずしもユーザ設計としてプログラムされる必要はなく、代わりに単に検査信号(たとえばバッファ)を通過させるようにプログラムすることができる。
クリティカルパス705および他のクリティカルパスは、従来の静的タイミングアナライザによって識別され、対象のユーザ設計から抽出される。たとえば、50KHzで動作することになっているユーザ設計は、約20usの最大のレジスタ間遅延を有する。タイミングアナライザを用いて、20usに最も近い遅延を有するレジスタ間パスを識別して、次にこれらの「クリティカル」パスを検査して、これらが確実に20us未満で、立上がりエッジおよび立下りエッジの双方を通過するようにすることができる。実際に、各々のクリティカルパスは、必要とされるよりもいくぶん高速であるため、適切な保護帯域が最小伝播遅延から減じられる。
クリティカルパスを識別すると、検査回路700が、図4と関連して上述されたのと同じ態様で生成される。図4の検査が、各々のネットが機能しているかどうかを判定したのに対し、検査回路700に関連する検査は、クリティカルパス705がある速度で動作するかどうかを判定する。速度検査は多くの方法において行なわれ得る。たとえば、一実施例において、フリップフロップ715および730は既知の状態にプリセットされて、同じような名前を付けられた信号線上の検査クロックTCLKを用いて、複数の期間に、必要とされる周波数で刻時される。フリップフロップ730の状態は次にリードバックされて、フリップフロップ715からのデータが正確に受信され、記憶されたことを確認する。検査は、さまざまな数のクロックを使用し、異なるエッジでフリップフロップをトグルし、異なる記憶データで始めるなどによって、異なる方法で行なうことができ、さまざまな状況における適切な動作を保証する。
性能検査PLDの代替の方法の説明については、双方がキングズリー(Kingsley)等に付与された米国特許第6,075,418号および第6,232,845号、ならびに先述のスミスの参考文献を参照されたい。キングズリー等に付与された特許で概略が述べられた検査手順を用いて、構成可能な資源の集まりはループ状に構成されて、それらはともに自励リングオシレータを形成する。このオシレータは、振動検査信号を生成し、周期はループにおけるコンポーネントの速度に比例する。多くのこのようなオシレータは、所与のPLD上でインスタンスを作成して、速度性能を測ることができる。
いくつかの実施例において、ASIC候補は、キングズリー等の特許に記載された方法および回路を用いて検査することができる。顧客設計において使用される資源は、速度を検査することができる。代わりに、設計が特定的な検査の前または後に、より徹底的な速度検査を行なうことができる。一実施例において、キングズリー等によって説明されたタイプの複数のオシレータは、PLDにわたって分散配置されて、速度を検査する。オシレータのうちのいくつかは、ASIC候補において存在する欠陥のために、全く機能しないかもしれない。これらのオシレータは、いくつかの実施例において、単に無視される。上述の他の検査は、この欠陥が顧客設計に影響を与えないことを保証する。
上述の検査に加えて、ASIC候補は、等価の標準PLDと同じタイプの物理的なおよび信頼性の検査にかけることができる。特定の顧客設定のために欠陥部分を高い標準に保持することが、顧客が上記の方法を用いて識別されたタイプのASIC候補を使用するの
を奨励するのに重要であり得る。
一旦ASIC候補が特定の顧客設計のために検証されると、PLD製造業者は、顧客が他の設計のためのそのPLDを用いるのを防ぎたいと考えるかもしれない。一実施例では、PLDが、構成ビットストリームに対してハッシュ関数を行なうことによって構成されるたびに、顧客設計を認証することにより、このような使用を防ぐ。ハッシュ関数の結果は次に、PLD製造業者によって不揮発性メモリに与えられた、所有権を主張できるハッシュキーと比較される。ビットストリームが必要とされるハッシュ結果を生じない場合、PLDは機能しない。
図8〜22および関連する文言では、FPGA上のすべてのプログラマブルブロックを検査するのに用いることのできる方法および検査回路が説明される。これらの方法および回路は、ステップ111(図1)の包括的な検査を行なうのに有益である。しかしながら、このような包括的な検査は、ステップ121(図1および3)の設計が特定的な検査には好ましくない。したがって、この方法および検査回路は、ステップ300(図3)で特定されたユーザ設計の資源、およびできるだけ少ないオーバーヘッドを含むように制限される。検査回路オーバーヘッドを制限することにより、設計が特定的な用途のための欠陥のあるチップが、その特定の設計に影響を与えない欠陥のために、拒否される可能性を最小にする。
図8は、内部メモリおよびルーティング資源を含む、FPGA資源の高速の機能検査を行なうのに本発明に従って用いることのできる、検査回路800を示している。本発明の実施例に従うと、検査回路800は、ユーザ設計および最小量の追加の資源によって使用される資源を用いてインスタンスを作成される。検査回路800はカウンタ810を含み、このカウンタは、リニアフィードバックシフトレジスタ(LFSR)として構成されたRAMアレイ830のアドレス端子に接続された出力端子820を有する。検査回路800はさらに、クロックジェネレータ835を含み、このクロックジェネレータは、線CLK上のクロック信号と、コンパレータ850の入力端子に接続された出力端子を有する参照レジスタとを与えるように構成されている。LFSR830は、ルーティング資源860を介してコンパレータ850の別の入力端子に接続される。
LFSR830の擬似ランダムな性質は、LFSR830がかなりの数のクロック周期でシフトすることができれば、LFSR830内の記憶場所が、多数の置換えで処理されるようにすることを保証する。判断ブロック870を参照すると、ある数のクロック遷移の後で、コンパレータ850に与えられたカウントが、レジスタ840における正確な参照番号に一致すれば、検査回路800を実行するのに用いられる資源のすべてが、選択されたクロック速度で完全に機能するものと考えられる。しかしながら、LFSRのカウントがレジスタ840におけるカウントと一致しなければ、検査は失敗する。検査を多数の異なる速度で行なって、検査中のデバイスのための最大クロック速度を決定することができる。
図9は、本発明の別の実施例に従った検査回路900を示している。検査回路900は、同じ番号を付けられた要素が同じでものである図8の検査回路800と、いくつかの点で類似している。検査回路900はさらに、カウンタ810の出力端子820に同様に接続された第2のLFSR910を含む。LFSR910は、LFSR830と同じ出力パターンを生成するように構成されて、LFSR830およびLFSR910からの最終的な結果および各々の中間値が、各々のクロックサイクルの後で一致するようになっている。フロー図915に示したように、同期コンパレータ920の出力が、何らかのクロックサイクルの後で不一致を示した場合、検査回路900はエラーを示す。
LFSR830は、そのメモリの機能性を検査するオンチップメモリを用いて実現される。LFSR910、カウンタ810、クロックジェネレータ835およびコンパレータ850の間のさまざまな相互接続を含む残りのコンポーネントはまた、FPGA資源を用いて実現することができる。このようにして構成されて、検査回路800または900のいずれかでの検査の合格シーケンスは、すぐに、検査で用いられるFPGA資源のすべてについて正確な機能を示す。
図10は、カリフォルニア、サンノゼのザイリンクス社から入手可能なバーテックスTMファミリーにおけるFPGAを特に検査するようにされた検査回路1000を示している。検査回路1000は、1対のカウンタ1020Aおよび1020Bに接続されたクロックジェネレータ1010と、それぞれ対をなすRAM LFSR1030Aおよび1030Bとを含む。カウンタ1020Aおよび1020Bは、バス1035Aおよび1035Bを介して、それぞれのRAM LFSR1030Aおよび1030Bに接続される。検査回路1000はさらに、シグネチャアナライザ1040と最上位ビット(MSB)コンパレータ1050Aとを含む。これらの回路コンポーネントは、フラグ型の回路ノードとして示された、多数の入力ピンおよび出力ピンを介して外的にアクセス可能である。
クロックジェネレータ1010からのクロックラインCLKは、カウンタ1020Aおよび1020B、LFSR1030Aおよび1030B、ならびにMSBコンパレータ1050の各々に接続される。ロードカウントピン1060は、論理0(たとえば0ボルト)に外的に設定されて、データ線D_INのデータをLFSR1030Aおよび1030Bの各々に転送することができる。以下で説明するように、ピン1063上のフォースエラー/カウント信号 /FE−CNTによって、外部のテスタは、検査回路1000が正確にエラーにフラグを立てることを確認することができるようになる。
示した実施例において、線D_INは、論理0(たとえば0ボルト)に結合されているが、他の実施例において、線D_INは、外的にアクセス可能であり、外部のテスタが所望のデータパターンをLFSR 1030Aおよび1030Bにロードすることができるようにする。一旦LFSR1030Aおよび1030Bの各々がロードされると、ロード/カウントピン1060およびフォースエラーピン1063は論理1に設定され、それによりLFSR 1030Aおよび1030Bが、擬似ランダムシーケンスを通ってカウントすることができるようになる。
LFSR1030Aの最上位ビットは、線MSB_Aを介して、シグネチャアナライザ1040およびMSBコンパレータ1050Aの各々に接続される。LFSR1030Bの最上位ビットは、線MSB_Bを介して、MSBコンパレータ1050Aに接続される。双方のLFSRは同じように構成されるため、最上位ビットの同様の擬似ランダムシーケンスを生成することになる。MSBコンパレータ1050Aは、各クロック後の各LFSRの最上位ビットを比較して、双方のLFSRが、確実に同じシーケンスを通るようにする。MSBコンパレータ1050Aは、外部ピン1070上に論理0を与えることによって、MSB_AおよびMSB_Bの間のいかなる不一致にもフラグを立てる。このようなエラーは、検査回路1000のインスタンスを作成するのに用いられるFPGA資源が、選択されたクロック周波数で適切に機能していないことを示している。
シグネチャアナライザ1040は、一実施例において、線MSB_Aに接続されたクロック端子を有する17ビットのLFSRカウンタである。LFSR1030Aは決定論的なシーケンスを通るため、線MSB_Aは、クロックラインCLK上での所与の数の遷移の間に、一定回数だけ、1および0の間を遷移するはずである。したがって、シグネチャアナライザ1040は、シグネチャアナライザ1040に記憶されたカウントが信号遷移の正しい数を示していない場合に、エラーを示す(以下の図16の説明では、シグネチャアナライ
ザ1040の一実施例を詳細に説明する)。
フォースエラーピン1063によって、外部のテスタは、RAM LFSR1030Aの出力がRAM LFSR1030Bの出力とは異なる場合に、検査回路1000がエラーにフラグを立てるかどうかを決定することができるようになる。このような検査は、ピン1060がハイにされたときに、入力ピン1063をローのままにすることによって行なわれる。したがって、LFSR1030Bは、LFST1030Aが単に繰返して0をロードする間、増分する。それぞれの最上位ビットMSB_AおよびMSB_Bは、最終的には一致しなくなり、この状態はエラーフラグ(すなわちピン1070上の論理0)をもたらすことになる。さらに、LFSR1030Aによるカウントの失敗によって、シグネチャアナライザ1040が間違ったカウントを含むことになる。したがって、ピン1063を用いて、確実に検査回路1000がエラーを示すことができるようにすることができる。
図11は、図10のカウンタ1020A(カウンタ1020Bと同一である)を概略的に示している。カウンタ1020Aは、いかなるタイプの同期式カウンタとすることもできるが、示した実施例においてはLFSRとして構成されている、というのもLFSRは非常に高速であり、同等のサイズの他のカウンタと比較して少ない資源しか必要としないからである。カウンタ1020Aは、4つのDフリップフロップ1100−1103および16×1のRAM1105を含む。RAM1105の各々のアドレス線は、論理0に結合される。このようにして構成されて、RAM1105は、フリップフロップ1100−1103と類似した1ビットの記憶素子としての役割を果たす。この構成を用いて、確実にカウンタ1020Aが効率的にバーテックスTMFPGAに収まるようにする。
カウンタ1020Aは、フィードバック回路1110を含み、このフィードバック回路は、カウンタ1020Aをプリセットし、かつフリップフロップ1100にフィードバック信号を与えてカウント1020AがLFSRとして動作するようにする、必須の論理を有する。線/LD−CNTは、図10の同様の名前の線と同じか、またはそれとは異なる可能性がある。線/LD−CNTが論理0である間に刻時カウンタ1020Aは、カウンタ1020Aに0をロードする。線/LD−CNTが論理1である間に刻時カウンタ1020Aは、カウンタ1020Aが、5桁の2進数の、32個の考え得る組合せの各々を通ってカウントするようにする。バス1035Aはこれらの状態をLFSR1030Aに伝える。
LFSR、およびFPGAを用いてLFSRを実行する方法の詳細な説明については、ザイリンクスの出願通知書(application note)である「効率的なシフトレジスタ、LFSRカウンタおよび長擬似ランダムシーケンスジェネレータ(“Efficient Shift Registers, LFSR Counters, and Long Pseudo-Random Sequence Generators”)」、ピーター・アルフーク(Peter Alfke)著、XAPP 0521996年7月7日(バージョン1.1)を参照されたい。
図12は、図10のLFSR1030Aの実施例を概略的に示している(LFSR1030Bは、線/FE−CNTが、代わりに線/LD−CNTに接続されていることを除いて、LFSR1030Aと同一である)。LFSR1030Aは、3つのDフリップフロップ1200〜1202、および2つの16×1のRAMアレイ1205および1210を含む。RAMアレイ1205および1210の各々のアドレス線は、バス1035A上のカウンタ1020Aからのそれぞれの線に結合される(どのアドレス線がバス1035Aのどの線に接続されるかは重要ではない)。バス1035Aからの残りの線は、線CE−WEを介して、さまざまなフリップフロップおよびRAMアレイの、それぞれの書込可能端子およびクロックイネーブル端子に接続される。フリップフロップ1200〜1202ならびにRAMアレイ1205および1210の各々のクロック端子のセンスは反転さ
れて、バス1035Aからの信号に、LFSR1030Aが刻時される前に整定する時間を与える。
RAMアレイ1205および1210の各々は、16個の1ビット記憶素子としての役割を果たす。フリップフロップ1200〜1202もそれぞれ、1ビット記憶素子である。LFSR1030Aはしたがって、105ビットのLFSRである。35ビットのLFSRは、何十億もの状態を有することができるため、LFSR1030は、クロック周波数が比較的高くても、非常に長い時間繰返さない。結果として、LFSR1030Aの各々のビットは、検査期間に、1および0の非反復擬似ランダムシーケンスを与える。LFSR1030Aの最上位ビット(または何らかの他のビット)は、LFSR1030Bからの同じビットと比較するために、線MSB_A上のMSBコンパレータ1050(図6および10)に運ばれる。LFSR1030Aはフィードバック回路1215を含み、このフィードバック回路は、LFSR1030Aを、端子D_INからのデータ(たとえばすべてが0)でプリセットし、かつRAMアレイ1205にフィードバック信号を与えて、RAMアレイおよびフリップフロップがLFSRとして動作するようにする、必須の論理を有する。
図13は、図10のMSBコンパレータ1050Aの実施例を概略的に示している。コンパレータ1050Aは、XNORゲート1300およびDフリップフロップ1310を含む。フリップフロップ1310のQ出力は、論理1にプリセットされる。コンパレータ1050Aは、線MSB_AおよびMSB_Bの論理レベルを比較する。MSB_AおよびMSB_Bの間のいかなる不一致も論理0を生成し、この論理0は、フリップフロップ1310に記憶され、エラー線/ERRに与えられる。図に示された他のゲートと同様に、XNORゲート1300は、当業者によって理解されるように、FPGA論理資源を用いて実行され得る。
図14は、図10のクロックジェネレータ1010の例を示している。クロックジェネレータ1010は、ANDゲート1400、非反転遅延素子1410およびバッファ1420を含む。ANDゲート1400は、クロックイネーブル信号CEが論理1であるときに単一のインバータとしての役割を果たして、遅延素子1410およびANDゲート1400がリングオシレータを形成するようにする。遅延素子1410は、たとえば、所望の遅延を生じるいかなる資源、一連のルックアップテーブル(LUT)および相互接続資源をも含むことができる。クロックジェネレータ1010は、完全にオンチップで実行することができ、したがってフィールド診断に有益である。バーテックスTM FPGAで実行される一実施例において、遅延素子1410は、12のバッファの連鎖である。
図15は、本発明において使用されるクロックジェネレータ1500の別のタイプを示している。クロックジェネレータ1500は、クロックパルス発振器1510およびバッファ1520を含む。クロックパルス発振器1510は、ピンP1−P4上の4つの外部クロックを使用し、各々の外部クロックは互いに対して異なる量の遅延を有して、外部クロックよりも周波数の高い出力クロックを生成する。したがって、たとえば、50MHzのテスタからの4つのクロックを組み合わせて、線CLK上に単一の200MHzのクロックを生成することができる。従来のテスタは、典型的に外部クロック信号を与える。ザイリンクス社から入手可能なFPGAのバーテックスTMIIファミリーのPLDといったいくつかのPLDは、適切な検査クロック信号を開発するのに用いることのできるクロック管理資源を含む。
図16は、図10のシグネチャアナライザ1040の実施例を示している。シグネチャアナライザ1040は、たとえば、何らかの好適なシグネチャアナライザ、従来の巡回冗長検査(CRC)を行なうための回路とすることができるが、図16の実施例においてはLFSRである。シグネチャアナライザ1040は、17のDフリップフロップ1601
〜1617を含む(フリップフロップ1602〜1613は、簡単にするために図16から省略されている)。XORゲート1620は、シグネチャアナライザ1040をLFSRとして構成するための必須のフィードバックを与える。検査を行なう前に、シグネチャアナライザ1040は、各々のフリップフロップに接続されたセット/リセットラインSR(図14)を用いてリセットされる。その後の検査中は、シグネチャアナライザ1040は、LFSR1030Aからの線MSB_Aで、信号が0から1に遷移するごとに、刻時する。LFSR1030Aは、決定論的なシーケンスを通るため、線MSB_Aは、クロックラインCLK上での選択された数のトランザクションの間に、一定の回数だけで、1および0の間を遷移するはずである。シグネチャアナライザ1040はしたがって、シグネチャアナライザ1040に記憶されたカウントが、信号遷移の正しい回数と対応していない場合にエラーを示す。遷移の正しい回数は、選択された数のクロック周期の間に検査回路1000(図10)をシミュレートすることによって決定することができる。
17ビットのLFSRを使用すると、シグネチャアナライザ1040によって生成されたパターンがすぐに繰返されないことが保証される。また、上述のように、LFSRは、比較的高速であり、比較的低いオーバーヘッドしか要求しないため、有益なカウンタである。一実施例において、フリップフロップ1601〜1617は、検査中のFPGAのIOBにおける出力フリップフロップである。必要であれば、フリップフロップは結合されていない場所に置くことができるため、信号を切り換えても、外部のピンに影響を与えない。
図17は、図10の検査回路1000が、所与のFPGA上のその他の資源を検査するように基準化され得る方法を示している。この基準化は、図17において1700として示された、検査回路1000の一部を、必要な回数だけ複製することによって達成される。部分1700は、カウンタ1020Aおよび1020B、ならびにLFSR1030Aおよび1030Bを含む。部分1000の1つのインスタンスは、MSBコンパレータ1050Aに接続される。残りの1つ以上の部分1000は、僅かに異なるMSBコンパレータ1050Bを使用し、これは図11と関連して以下で説明される。
部分1700の各々のインスタンスは直列に配置されて、各々の下流のインスタンスと関連したMSBコンパレータが、そのインスタンスの各々の線MSB_AおよびMSB_Bを、先行するインスタンスのMSB_Bと比較するようにする。示した例において、MSBコンパレータ1050Bは、それぞれMSB_A'およびMSB_B'として示された、第2のインスタンスの線MSB_AおよびMSB_B上の信号を、互いにかつ第1のインスタンスのMSB_Bと比較する。インスタンス間のまたはインスタンス内のいかなる不一致も、エラーピン1070上でエラーフラグ(論理0)をもたらす。ところで、1つのシグネチャアナライザ1040しか必要ない。なぜなら、コンパレータ回路1050Aおよび1050Bは、各々のRAM LFSRの出力が一致することを保証するためである。
図18は、図10で最初に導入されたMSBコンパレータ1050Bの詳細を説明している。MSBコンパレータ1050Bは、ゲートの集まりと、論理1にプリセットされたフリップフロップ1800とを含む。MSBコンパレータ1050Bは、そのインスタンスの各々の線MSB_A'およびMSB_B'を、先行のインスタンスのMSB_Bと比較する。インスタンス間のまたはインスタンス内のいかなる不一致も、MSBコンパレータから伸びているエラー線/ERR'上でエラーフラグ(論理0)をもたらす。各々のMSBコンパレータ1050Bはまた、線/ERR上の先行のMSBコンパレータからエラー信号を受信する。したがって、上流のコンパレータによって報告されたエラーは、検査回路を伝播し、最終的に外部ピン上に報告される。
図19は、N個の小検査回路1905(1)〜1905(N)を含む検査回路1900
を概略的に示しており、各々の小検査回路は、回路部分1000と、関連するMSBコンパレータとからなる(図10を参照)。検査回路1900がバーテックスTM FPGAにおいてインスタンスを作成されるとき、各々の小検査回路1905(1〜N)は4つのCLBを占有する。バーテックスTMファミリーの各々のメンバーは、偶数の行Rと偶数のカラムCとを有するCLBのアレイを含む。一実施例において、検査回路1900は、R/2のインスタンスを用いて、拡張されてバーテックスTM FPGAの2つのカラムを満たす。小検査回路1905(1)〜1905(N)は、まとめて「カラム(column)」インスタンス1910と呼ばれる。
図20は、Mのカラムインスタンス1910(1)〜1910(M)を用いて、バーテックスTM FPGAのすべての行およびカラムを占める検査回路2000を概略的に示している。上述のように、バーテックスTMファミリーの各々のメンバーは、偶数Cのカラムを含み、各々のカラムインスタンス1910は、2つのカラムを占有する。したがって、C/2のカラムインスタンスを用いて、全体のバーテックスTM FPGAを占めることができる。
検査回路2000は、図10および19の検査回路1000および1900それぞれと共通の多数の回路要素を含み、同じ番号の要素は同じものである。検査回路2000はさらに、各々のカラムインスタンスを順番付け、かつ何らかのカラムインスタンスが、それぞれのエラー線/ERR(1)〜/ERR(M)上でエラー信号を生成した場合にエラーを示す、回路を含む。
その他の共通回路は、カウンタ2010、カラムシーケンサ2015、M個の入力ORゲート2020、前にM個の1のキャッチャの集まり2027が来るM個の入力ANDゲート2025、後に1のキャッチャ2032が来るM個の入力ANDゲート2030、ならびに出力ピン2035および2040を含む。集まり2027における各々の1のキャッチャは、1のキャッチャ2032と同一である。カラムシーケンサ2015は、線2045のそれぞれの1を介して、各々のカラムインスタンス1910(1)から1910(M)に接続された単一の記憶場所を有する、従来の1−ホットレジスタとすることができる。カウンタ2010は、カラムシーケンサ2015を刻時する前に、1つのカラムインスタンスを検査するのに十分なある数のクロックサイクルまでカウントする。シーケンサ2015は、1つのレジスタから次のレジスタへと単一の論理1を循環させることにより、各々のカラムインスタンスを順に使用可能にする。一旦各々のカラムインスタンスが検査されると、カラムシーケンサ2015はカウントを停止し、外部ピン2035に対し、線DONE上に論理1を発する。
バーテックスTMFPGA上でインスタンスを作成される一実施例において、共通の回路の各々の要素は、IOB資源を用いて実行される。これは、組をなす同一の回路を用いてCLBが有利に場所を占めることができるようにする。別の実施例において、共通の回路は、FPGAとは外部の資源を用いて実行される。さらに別の実施例では、代わりに外部の制御に依存して等価の機能性を与えることで、カウンタ2010およびカラムシーケンサ2015が不要になる。1のキャッチャ2032および同様の1のキャッチャ2027は、エラー信号を捕らえて、それらを外部ピン2040および1070上で保持する。
図21は、「スライス(slice)」2100、すなわちザイリンクス社から入手可能なバーテックスTMファミリーのデバイスにおける例示のCLBを構成する2つの同様のスライスのうちの1つの概略図である。スライス2100へのおよびスライスからの端子のすべては、水平または垂直の相互接続線(図示せず)に接続され、それを通ってこれらの端子をFPGA内のさまざまな他のコンポーネントにプログラマブルに接続することができる。
スライス2100は、2つの4入力LUT2105Aおよび2105Bを含む。LUT2105Aおよび2105Bは各々、最大4つの入力の、任意に規定されたブールの関数を実現することができる。さらに、LUT2105Aおよび2105Bの各々は、16×1ビットの同期RAMを与えることができる。さらに、2つのLUTを組合せて、16×2ビットまたは32×1ビットの同期RAM、または16×1ビットのデュアルポート同期RAMを生成することができる。
スライス2100はまた、1対の順次の記憶素子2110Aおよび2110Bを含み、これらはエッジトリガのDタイプのフリップフロップまたはレベル依存型ラッチのいずれかとして構成することができる。D入力は、LUT2105Aおよび2105Bによって、またはLUT2105Aおよび2105Bを経由せずに入力端子から直接、駆動することができる。各々の記憶素子は、初期化端末INIT、逆初期化端末R、イネーブルクロック端子EC、および従来シンボル“>”を用いて指定されたクロック端子を含む。INIT端子は、関連する記憶素子を、構成の際に指定された初期化の状態に強制し、逆初期化端末Rは、記憶素子をINIT端子とは逆の状態に強制する。端子INITおよびRは、同期式または非同期式に構成することができ、各々の制御入力のセンスは独立して反転させることができる。
構成メモリセルは、スライス2100のさまざまな構成可能な要素の機能を規定する。例示の2つの入力マルチプレクサ2125は、それぞれの構成メモリセル2130に接続されたゲート端子を有する1対のMOSトランジスタを含む。スライス2100の、残りのプログラマブル要素の機能を規定するのに用いられるメモリセルの他の構成は、簡潔にするために省略される。プログラマブルロジックデバイスの機能を規定するのに構成メモリセルを使用することは、当該技術においてよく理解されている。
スライス2100の詳細な説明は、本発明を理解するのに必要ではなく、したがって簡潔にするために省略される。スライス2100内の多くのコンポーネントの動作のより詳細な扱いについては、チャップマン(Chapman)等による「FPGAにおける効率的な乗算のためのANDゲートを有する構成可能な論理ブロック(“Configurable Logic Block
with AND Gate for Efficient Multiplication in FPGAs”)」と題された、同時係属中の米国特許出願連続番号08/786,818、バウアー(Bauer)による「シフトレジストを兼ねたルックアップテーブル(“Lookup Tables Which Double as Shift Registers”)」と題された米国特許第5,889,413号、およびスティーブンP.ヤング(Steven P. Young)による「階層相互接続線を有するFPGA反復可能相互接続構造(“FPGA Repeatable Interconnect Structure with Hierarchical Interconnect Lines”)」と題された米国特許第5,914,616号を参照されたい。
図22A−22Dは、例示のFPGA2200上で図20の検査回路2000のインスタンスを作成するための4つのFPGA構成を示している。簡潔にするために、FPGA2200は、8×12のCLB2110のアレイを含み、各々のCLBは2つのスライス2100を含む。バーテックスTMFPGAは、FPGA2200よりも大きいが、最小のバーテックスTMFPGAは、16×24のCLBのアレイを有する。
検査回路2000がバーテックスTMFPGA上でインスタンスを作成するときに、図19で詳細に説明された各々の小検査回路1905(1−N)は、4つのCLBを占有し、すべての4つのCLBのために単一の使用されていないLUTのみを残す。同様に図19で詳細に説明されたように、検査回路1905(1−N)のカラムはともに接続されて、カラムインスタンス1910(1−M)を形成する。例示の検査回路1905(1)および例示のカラムインスタンス1910(3)は、図22Aにおいて示されている。検査回
路からの使用されていないLUTは次に、望まれれば、クロックジェネレータ1010、クロックパルス発振器2210、XORゲート920、ORゲート2020、ANDゲート2025およびANDゲート2030等の他の回路を実現するように構成することができる。
図22A−22Dの4つの構成はともに、すべてのCLBフリップフロップおよびLUT RAMの、100%の検査の適用範囲を与える。しかしながら、FPGAをこれらの検査回路で占めると、従来「レジスタ転送パス」と呼ばれる、レジスタ間の無数の潜在的なルーティングパスが検査されない。図23(先行技術)は、例示のレジスタ転送パス2315を介して相互接続された1対の順次の記憶素子2305および2310を示している。転送パス2615は、ルーティング資源を含み、組合せ論理および/または順次論理を含む可能性がある。幸いにも、さまざまな記憶素子の正確な動作を確認することにより、これらの要素を相互接続するのに用いられるレジスタ転送パスの動作も確認される。したがって、本発明はルーティング資源の検査にも適用することができる。
本発明に従ったルーティング資源の検査は対話型処理である。上述の検査回路は、各々の場合に異なる組の相互接続資源を用いて、何度も行なうことができる。当業者は、これらの資源を検査する目的で、異なるルーティング資源を用いるための別のルーティング設計のプロセスに精通している。
バーテックスTMFPGAは、一般に「JTAG標準」または単に「JTAG」と呼ばれる、IEEE標準1149.1のテストアクセスポートおよびバウンダリスキャンアーキテクチャに完全に準拠している。JTAGを用いて、FPGA資源は、一連の刺激ベクトルをインポートして、FPGAをプログラムして上述の検査回路を含むことにより、実地検査を行なうことができる。次に、上述したように、検査回路をある速度で実行して、検査回路によって占有された資源が、ある速度で正確に機能しているかどうかを判定することができる。
本発明を特定の実施例と関連して説明してきたが、これらの実施の変形が当業者にとって明らかであろう。たとえば、先述の検査は、プログラマブル資源およびプログラマブル資源のインスタンスを作成された回路を検査するほんの数方法を示しており、多くの他の検査方法を使用してもよい。PLDの検査に熟達した当業者は、本発明とともに使用するための多くの標準の検査を適合させることができる。
したがって、別掲の特許請求の精神および範囲は、先述の説明に限定されるべきではない。
FPGAに適用される本発明の一実施例を示したフロー図100である。製造後、所与の半導体ウェハ上のさまざまなチップが、「大きな」欠陥がないかどうかを検査される(ステップ105)。 例示のユーザ設計のインスタンスが作成される、従来のFPGA200のブロック図である。 図1の設計が特定的な検査ステップ121の詳細を示すフロー図である。 検査中の例示のネット400および関連する信号源405ならびに宛先回路410および415を示す図である。 図2のユーザ設計のCLB,IOBおよびRAMブロックが斜線にされたFPGA500を示す図である。 図6A−図6Dは、FPGA上でインスタンスを作成して、RAMブロックの機能性を検査することのできる回路設計の一部を示す図である。 仮定のユーザ設計の、クリティカルパス705の速度性能を検査するようにされた検査回路700を概略的に示す図である。 本発明に従って使用して、内部メモリおよびルーティング資源を含む、FPGA資源のある速度での機能検査を行なうことのできる検査回路800を示す図である。 本発明の別の実施例に従った検査回路900を示す図である。 本発明のさらに別の実施例に従った検査回路1000を示す図である。 図10のカウンタ1020Aを概略的に示した図である(カウンタ1020Bは同一のものである)。 図10のLFSR1030Aの実施例を概略的に示す図である(LFSR1030Bは、線 /FE−CNTが、代わりに線 /LD−CNTに接続されることを除いて、LFSR1030Aと同一である)。 図10のMSBコンパレータ1050Aの実施例を概略的に示す図である。 図10のクロックジェネレータ1010の例を示す図である。 本発明で使用するための別のタイプのクロックジェネレータ1500を示す図である。 図10のシグネチャアナライザ1040の実施例を示す図である。 図10の検査回路1000が、所与のFPGA上のその他の資源を検査するように基準化され得る方法を示す図である。 図10に最初に導入されたMSBコンパレータ1050Bの詳細を示す図である。 N個の小検査回路1905(1)−1905(N)を含む検査回路1900を概略的に示す図であり、各々の小検査回路は回路部分1000と、関連のMSBコンパレータとからなる(図10を参照)。 M個のカラムインスタンス1910(1)−1910(N)を用いて、バーテックスTM FPGAのすべての行およびカラムを占める、検査回路2000を概略的に示す図である。 「スライス」2100、すなわちザイリンクス社から入手可能なバーテックスTMファミリーのデバイスにおける例示のCLBを構成する2つの同一のスライスのうちの1つの概略図である。 図22A−図22Dは、例示のFPGA2200上で図20の検査回路2000のインスタンスを作成するための4つのFPGA構成を示す図である。 レジスタ転送パスを介して相互接続された、一対の順次の記憶素子を示す図である。

Claims (13)

  1. あるタイプのPLDに、欠陥がないかを検査するための、構成メモリ検査(109)もしくは包括的な検査(111)、またはその両方を含む方法であって、前記方法は、
    a.構成メモリ検査(109)が、第1の予め定められた数よりも小さくかつ第2の予め定められた数よりも大きい数の欠陥が存在することを示すときに、または前記タイプのPLDのための包括的な検査(111)で不合格であったときに、前記タイプのPLDを候補として選択するステップ(113)と、
    b.PLD上でインスタンスを作成するための顧客特定の設計を生成するステップと、
    c.顧客特定の設計の表現式を受取るステップ(120)と、
    d.候補を検査して、それが顧客特定の設計とともに機能するかどうかを判定するステップ(121)と、
    e.候補がステップdにおける検査を合格したときに、候補を受け入れるステップ(125)とを特徴とする、方法。
  2. 顧客特定の設計は、その設計の表現式によって、候補上で規定されたネットの集合を必要とし(305)、候補を検査するステップは、ネットの集合を検査するステップを含む、請求項1に記載の方法。
  3. ネットは、PLD上で顧客特定の設計のインスタンスを作成することなく、検査される、請求項2に記載の方法。
  4. PLDは論理ブロックの集合を含み、顧客特定の設計は、論理ブロックの集合の部分集合を必要とし、候補を検査するステップは、論理ブロックの集合の部分集合を検査するステップ(330)を含む、請求項1に記載の方法。
  5. 論理ブロックの集合は、PLD上で顧客特定の設計のインスタンスを作成することなく、検査される、請求項4に記載の方法。
  6. 前記タイプは、外部ピンの構成を含む、請求項1に記載の方法。
  7. 候補は、プログラマブル論理ブロックおよびプログラマブル相互接続を含み、設計の論理要素は、論理ブロックの部分集合を用いてインスタンスを作成され、設計のルーティング部分は、相互接続において規定されたネットの集合として、インスタンスを作成される、請求項1に記載の方法。
  8. 候補を検査するステップは、設計のインスタンスを作成するのに用いられる論理ブロックの、複数の部分集合を構成して、検査信号発生器(405)を与えるステップを含む、請求項7に記載の方法。
  9. 候補を検査するステップは、設計のインスタンスを作成するのに用いられる論理ブロックの、複数の部分集合を構成して、検査信号オブザーバ(410,415)を与えるステップを含む、請求項7に記載の方法。
  10. 論理ブロックは、入出力ブロックを含む、請求項7に記載の方法。
  11. 候補を検査するステップは、論理ブロックの部分集合において設計の論理要素のインスタンスを作成することなく、ネットを検査するステップを含む、請求項7に記載の方法。
  12. 第2の顧客特定の設計の表現式を受取るステップ(131)と、候補を検査して、それが第2の顧客特定の設計とともに機能するかどうかを判定するステップ(121)とをさらに含む、請求項1に記載の方法。
  13. 候補を検査するステップは、PLD上で1つ以上の検査回路のインスタンスを作成するステップを含み、検査回路は、顧客特定の設計によって必要とされるPLD資源と、検査回路のオーバーヘッドとを使用し、検査回路のオーバーヘッドは、顧客特定の設計によって必要とされないプログラマブル資源を含む、請求項1に記載の方法。
JP2003519431A 2001-08-07 2002-07-26 プログラマブルロジックデバイスのための特定用途向け検査方法 Expired - Lifetime JP4317013B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/924,365 US6664808B2 (en) 2001-08-07 2001-08-07 Method of using partially defective programmable logic devices
US10/104,324 US6817006B1 (en) 2001-08-07 2002-03-22 Application-specific testing methods for programmable logic devices
PCT/US2002/023839 WO2003014750A2 (en) 2001-08-07 2002-07-26 Application-specific testing methods for programmable logic devices

Publications (2)

Publication Number Publication Date
JP2004538628A JP2004538628A (ja) 2004-12-24
JP4317013B2 true JP4317013B2 (ja) 2009-08-19

Family

ID=26801408

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003519431A Expired - Lifetime JP4317013B2 (ja) 2001-08-07 2002-07-26 プログラマブルロジックデバイスのための特定用途向け検査方法

Country Status (5)

Country Link
US (2) US7007250B1 (ja)
EP (1) EP1415168B1 (ja)
JP (1) JP4317013B2 (ja)
DE (1) DE60202152T2 (ja)
WO (1) WO2003014750A2 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127697B1 (en) * 2001-08-07 2006-10-24 Xilinx, Inc. Methods of utilizing programmable logic devices having localized defects in application-specific products
JP4856848B2 (ja) * 2001-10-11 2012-01-18 アルテラ コーポレイション プログラマブルロジックリソース上のエラー検出
DE60316068T8 (de) * 2002-05-13 2009-02-26 SICRONIC REMOTE KG, LLC, Wilmington Prüfverfahren und -gerät für Konfigurationsspeicherzellen in programmierbaren logischen Bauelementen (PLDS)
US7131097B1 (en) * 2002-09-24 2006-10-31 Altera Corporation Logic generation for multiple memory functions
TWI232308B (en) * 2003-01-24 2005-05-11 Benq Corp Test method and circuit for testing inter-device connections of field programmable gate arrays
US7170315B2 (en) 2003-07-31 2007-01-30 Actel Corporation Programmable system on a chip
US7521960B2 (en) * 2003-07-31 2009-04-21 Actel Corporation Integrated circuit including programmable logic and external-device chip-enable override control
DE102004037403B4 (de) * 2004-07-30 2008-11-20 Certess S.A. Verfahren zur Bewertung der Güte eines Computerprogrammes
US7284229B1 (en) 2004-10-01 2007-10-16 Xilinx, Inc. Multiple bitstreams enabling the use of partially defective programmable integrated circuits while avoiding localized defects therein
US7251804B1 (en) * 2004-10-01 2007-07-31 Xilinx, Inc. Structures and methods of overcoming localized defects in programmable integrated circuits by routing during the programming thereof
US7412635B1 (en) 2004-10-01 2008-08-12 Xilinx, Inc. Utilizing multiple bitstreams to avoid localized defects in partially defective programmable integrated circuits
US7424655B1 (en) 2004-10-01 2008-09-09 Xilinx, Inc. Utilizing multiple test bitstreams to avoid localized defects in partially defective programmable integrated circuits
US7234120B1 (en) * 2004-10-06 2007-06-19 Xilinx, Inc. Fault isolation in a programmable logic device
US7394708B1 (en) 2005-03-18 2008-07-01 Xilinx, Inc. Adjustable global tap voltage to improve memory cell yield
US7305598B1 (en) * 2005-03-25 2007-12-04 Amit Sanghani Test clock generation for higher-speed testing of a semiconductor device
US7337422B1 (en) * 2005-05-10 2008-02-26 Xilinx, Inc. Programmably configurable logic-based macro
US7603599B1 (en) * 2005-06-03 2009-10-13 Xilinx, Inc. Method to test routed networks
US7430697B1 (en) * 2005-07-21 2008-09-30 Xilinx, Inc. Method of testing circuit blocks of a programmable logic device
US7571395B1 (en) * 2005-08-03 2009-08-04 Xilinx, Inc. Generation of a circuit design from a command language specification of blocks in matrix form
US7310758B1 (en) 2005-08-22 2007-12-18 Xilinx, Inc. Circuit for and method of implementing programmable logic devices
US7539893B1 (en) * 2005-09-16 2009-05-26 Pmc-Sierra, Inc. Systems and methods for speed binning of integrated circuits
US7584442B2 (en) 2005-12-09 2009-09-01 Lsi Corporation Method and apparatus for generating memory models and timing database
US7353474B1 (en) * 2006-04-18 2008-04-01 Xilinx, Inc. System and method for accessing signals of a user design in a programmable logic device
US7469371B1 (en) 2006-08-08 2008-12-23 Xilinx, Inc. Methods of testing a user design in a programmable integrated circuit
US7757198B1 (en) 2007-04-10 2010-07-13 Lattice Semiconductor Corporation Scan chain systems and methods for programmable logic devices
US7810059B1 (en) 2007-10-11 2010-10-05 Xilinx, Inc. Methods of enabling the validation of an integrated circuit adapted to receive one of a plurality of configuration bitstreams
US7853916B1 (en) 2007-10-11 2010-12-14 Xilinx, Inc. Methods of using one of a plurality of configuration bitstreams for an integrated circuit
US7619438B1 (en) 2007-10-11 2009-11-17 Xilinx, Inc. Methods of enabling the use of a defective programmable device
US20090100304A1 (en) * 2007-10-12 2009-04-16 Ping Li Hardware and Software Co-test Method for FPGA
US7956639B2 (en) * 2008-07-23 2011-06-07 Ndsu Research Foundation Intelligent cellular electronic structures
US8095902B2 (en) * 2008-08-18 2012-01-10 International Business Machines Corporation Design structure for couple noise characterization using a single oscillator
US8583711B2 (en) * 2009-12-02 2013-11-12 Seagate Technology Llc Random number generation system with ring oscillators
US8311762B1 (en) 2010-09-17 2012-11-13 Xilinx, Inc. Manufacturing test for a programmable integrated circuit implementing a specific user design
US8555228B2 (en) * 2011-12-29 2013-10-08 Intel Corporation Tool for glitch removal
US8856705B2 (en) * 2012-05-08 2014-10-07 Freescale Semiconductor, Inc. Mismatch verification device and methods thereof
US9222981B2 (en) 2012-12-28 2015-12-29 Nvidia Corporation Global low power capture scheme for cores
US9395414B2 (en) 2012-12-28 2016-07-19 Nvidia Corporation System for reducing peak power during scan shift at the local level for scan based tests
US9377510B2 (en) 2012-12-28 2016-06-28 Nvidia Corporation System for reducing peak power during scan shift at the global level for scan based tests
US8856708B1 (en) * 2013-07-12 2014-10-07 Hamilton Sundstrand Corporation Multi-tier field-programmable gate array hardware requirements assessment and verification for airborne electronic systems
US9012245B1 (en) 2014-09-22 2015-04-21 Xilinx, Inc. Methods of making integrated circuit products
US9501604B1 (en) * 2014-09-23 2016-11-22 Xilinx, Inc. Testing critical paths of a circuit design
US10234505B1 (en) 2017-02-27 2019-03-19 Xilinx, Inc. Clock generation for integrated circuit testing
US10067189B1 (en) 2017-03-20 2018-09-04 Xilinx, Inc. Input/output path testing and characterization using scan chains
US10326651B1 (en) * 2017-04-18 2019-06-18 Amazon Technologies, Inc. Client configurable hardware logic and corresponding signature
US11086788B2 (en) 2017-05-18 2021-08-10 Intel Corporation Methods and apparatus for accessing configurable memory during hardware emulation
US10489609B1 (en) * 2017-06-06 2019-11-26 Xilinx, Inc. Restricting programmable integrated circuits to specific applications
US10970445B2 (en) 2017-06-28 2021-04-06 Intel Corporation Methods and apparatus for performing timing driven hardware emulation
US11688482B2 (en) * 2018-08-08 2023-06-27 Numascale As Digital circuit testing and analysis module, system and method thereof
FR3090917B1 (fr) * 2018-12-24 2021-12-10 Dolphin Design Dispositif synchrone muni d’un circuit de garde de marge
US11385287B1 (en) * 2019-11-14 2022-07-12 Xilinx, Inc. Method for adaptively utilizing programmable logic devices
CN113295990B (zh) * 2021-07-26 2021-10-01 中科亿海微电子科技(苏州)有限公司 一种生成fpga可行性测试路径的方法、系统、介质及设备

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3995261A (en) 1975-02-24 1976-11-30 Stanford Research Institute Reconfigurable memory
US4020469A (en) 1975-04-09 1977-04-26 Frank Manning Programmable arrays
US4700187A (en) 1985-12-02 1987-10-13 Concurrent Logic, Inc. Programmable, asynchronous logic cell and array
US5404359A (en) 1992-06-29 1995-04-04 Tandem Computers Incorporated Fail safe, fault tolerant circuit for manufacturing test logic on application specific integrated circuits
JP2909328B2 (ja) 1992-11-02 1999-06-23 株式会社東芝 フィールドプログラマブルゲートアレイ
GB9223226D0 (en) 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
US5498975A (en) 1992-11-19 1996-03-12 Altera Corporation Implementation of redundancy on a programmable logic device
US5539652A (en) 1995-02-07 1996-07-23 Hewlett-Packard Company Method for manufacturing test simulation in electronic circuit design
US5777887A (en) * 1995-05-12 1998-07-07 Crosspoint Solutions, Inc. FPGA redundancy
US5903578A (en) 1996-03-08 1999-05-11 Lsi Logic Corporation Test shells for protecting proprietary information in asic cores
US6233205B1 (en) 1996-09-17 2001-05-15 Xilinx, Inc. Built-in self test method for measuring clock to out delays
US6232845B1 (en) 1996-09-17 2001-05-15 Xilinx, Inc. Circuit for measuring signal delays in synchronous memory elements
US6075418A (en) 1996-09-17 2000-06-13 Xilinx, Inc. System with downstream set or clear for measuring signal propagation delays on integrated circuits
US5889413A (en) 1996-11-22 1999-03-30 Xilinx, Inc. Lookup tables which double as shift registers
US6427156B1 (en) 1997-01-21 2002-07-30 Xilinx, Inc. Configurable logic block with AND gate for efficient multiplication in FPGAS
US6091258A (en) 1997-02-05 2000-07-18 Altera Corporation Redundancy circuitry for logic circuits
US5914616A (en) 1997-02-26 1999-06-22 Xilinx, Inc. FPGA repeatable interconnect structure with hierarchical interconnect lines
US6651225B1 (en) * 1997-05-02 2003-11-18 Axis Systems, Inc. Dynamic evaluation logic system and method
US6167558A (en) * 1998-02-20 2000-12-26 Xilinx, Inc. Method for tolerating defective logic blocks in programmable logic devices
US5982683A (en) 1998-03-23 1999-11-09 Advanced Micro Devices, Inc. Enhanced method of testing semiconductor devices having nonvolatile elements
US6216258B1 (en) 1998-03-27 2001-04-10 Xilinx, Inc. FPGA modules parameterized by expressions
US6314019B1 (en) 1999-03-29 2001-11-06 Hewlett-Packard Company Molecular-wire crossbar interconnect (MWCI) for signal routing and communications
US6128214A (en) 1999-03-29 2000-10-03 Hewlett-Packard Molecular wire crossbar memory
US6256767B1 (en) 1999-03-29 2001-07-03 Hewlett-Packard Company Demultiplexer for a molecular wire crossbar network (MWCN DEMUX)
US6459095B1 (en) 1999-03-29 2002-10-01 Hewlett-Packard Company Chemically synthesized and assembled electronics devices
US6353915B1 (en) 1999-04-01 2002-03-05 Unisys Corporation Methods for evaluating systems of electronic components
US6215327B1 (en) 1999-09-01 2001-04-10 The United States Of America As Represented By The Secretary Of The Air Force Molecular field programmable gate array
US6651238B1 (en) 2001-04-17 2003-11-18 Xilinx, Inc. Providing fault coverage of interconnect in an FPGA
US6432740B1 (en) 2001-06-28 2002-08-13 Hewlett-Packard Company Fabrication of molecular electronic circuit by imprinting
US6331788B1 (en) 2001-07-03 2001-12-18 The United States Of America As Represented By The Secretary Of The Air Force Simplified cellular array structure for programmable Boolean networks

Also Published As

Publication number Publication date
DE60202152D1 (de) 2005-01-05
US6891395B2 (en) 2005-05-10
WO2003014750A2 (en) 2003-02-20
EP1415168A2 (en) 2004-05-06
EP1415168B1 (en) 2004-12-01
US7007250B1 (en) 2006-02-28
WO2003014750A3 (en) 2003-08-21
US20040216081A1 (en) 2004-10-28
DE60202152T2 (de) 2005-12-01
JP2004538628A (ja) 2004-12-24

Similar Documents

Publication Publication Date Title
JP4317013B2 (ja) プログラマブルロジックデバイスのための特定用途向け検査方法
US6817006B1 (en) Application-specific testing methods for programmable logic devices
US6539508B1 (en) Methods and circuits for testing programmable logic
Krstic et al. Delay fault testing for VLSI circuits
US7661050B2 (en) Method and system for formal verification of partial good self test fencing structures
US7412343B2 (en) Methods for delay-fault testing in field-programmable gate arrays
Serra et al. Testing
US7219314B1 (en) Application-specific methods for testing molectronic or nanoscale devices
Chen et al. Cost-efficient built-in redundancy analysis with optimal repair rate for RAMs
US7139948B2 (en) Method for determining the impact on test coverage of scan chain parallelization by analysis of a test set for independently accessible flip-flops
US20050235177A1 (en) Path delay test method
US20050172188A1 (en) Diagnostic method for detection of multiple defects in a Level Sensitive Scan Design (LSSD)
US9098486B1 (en) Methods and apparatus for testing multiple clock domain memories
US6269462B1 (en) Selectable sense amplifier delay circuit and method
US20060041806A1 (en) Testing method for semiconductor device and testing circuit for semiconductor device
US6920597B2 (en) Uniform testing of tristate nets in logic BIST
Sridhar et al. Built-in self-repair (BISR) technique widely Used to repair embedded random access memories (RAMs)
Hülle et al. SAT-ATPG for application-oriented FPGA testing
JP7427000B2 (ja) デジタル回路試験及び分析モジュール、システム及びそれの方法
US11408938B2 (en) Bidirectional scan cells for single-path reversible scan chains
Tahoori et al. Application-dependent delay testing of FPGAs
US7005875B1 (en) Built-in self-test circuitry for integrated circuits
Das Self-testing of cores-based embedded systems with built-in hardware
US9869718B1 (en) Scan test architecture and method for scan testing
Dailey et al. Built-in self-test of embedded memory cores in virtex-5 field programmable gate arrays

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050613

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090428

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090521

R150 Certificate of patent or registration of utility model

Ref document number: 4317013

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130529

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term