[go: up one dir, main page]

DE60202152T2 - Anwendungsspezifische Testmethoden für programmierbare Logikbauelemente - Google Patents

Anwendungsspezifische Testmethoden für programmierbare Logikbauelemente Download PDF

Info

Publication number
DE60202152T2
DE60202152T2 DE60202152T DE60202152T DE60202152T2 DE 60202152 T2 DE60202152 T2 DE 60202152T2 DE 60202152 T DE60202152 T DE 60202152T DE 60202152 T DE60202152 T DE 60202152T DE 60202152 T2 DE60202152 T2 DE 60202152T2
Authority
DE
Germany
Prior art keywords
test
design
candidate
pld
testing
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
DE60202152T
Other languages
English (en)
Other versions
DE60202152D1 (de
Inventor
W. Robert WELLS
Zhi-Min Ling
D. Robert PATRIE
L. Vincent TONG
Jae Cho
Shahin Toutounchi
S. Clay JOHNSON
G. Shelly DAVIS
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
Application granted granted Critical
Publication of DE60202152D1 publication Critical patent/DE60202152D1/de
Publication of DE60202152T2 publication Critical patent/DE60202152T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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 OR CALCULATING; 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft programmierbare Logikbauelemente und insbesondere Verfahren zum Testen und Verwenden von programmierbaren Logikbauelementen, die kleine Defekte enthalten.
  • Hintergrund der Erfindung
  • Programmierbare Logikbauelemente (PLDs), wie zum Beispiel feldprogrammierbare Gatteranordnungen (FPGAs), sind benutzerprogrammierbare integrierte Schaltkreise, die programmiert werden können, um benutzerdefinierte logische Schaltkreise zu implementieren. In einer typischen Architektur beinhaltet ein FPGA ein Feld von konfigurierbaren Logikblöcken (CLBs), die von programmierbaren Eingabe-/Ausgabeblöcken (IOBs) umgeben sind. Eine Hierarchie von programmierbaren Leitweglenkungsbetriebsmitteln verbindet die CLBs und IOBs. Ein Laden eines Konfigurationsbitstroms in Konfigurationsspeicherzellen des FPGAs passt diese CLBs, IOBs und programmierbare Leitweglenkungsbetriebsmittel an. Zusätzliche Betriebsmittel, wie zum Beispiel Multiplizierer, Speicher sowie anwendungsspezifische Schaltkreise können auch enthalten sein.
  • PLDs werden immer größer, weil Anbieter versuchen, Kundenanforderungen für PLDs, die in der Lage sind, immer komplexere Aufgaben durchzuführen, zu erfüllen. Unglücklicherweise wächst mit einer Chipgröße ebenfalls die Wahrscheinlichkeit, einen Defekt auf einem gegebenen Chip zu finden. Die Fertigungsausbeute nimmt daher mit einer PLD-Komplexität ab, was bereits teure PLDs noch teurer werden lässt.
  • PLDs sind nicht entwurfsspezifisch, sondern gewähren stattdessen Benutzern (beispielsweise Schaltkreisdesignern) die Fähigkeit, eine beinahe unbegrenzte Anzahl von Schaltkreisvariationen zu instanziieren. Nicht im vornherein den Zweck zu kennen, welchem ein gegebener PLD zugeordnet wird, legt eine schwere Last auf die Qualität und Zuverlässigkeit des PLDs, weil PLD-Anbieter die Funktionalität von jedem Leistungsmerkmal, das verwendet werden könnte, verifizieren müssen. Um es zu vermeiden, Kunden zu enttäuschen, verwerfen PLD-Hersteller PLDs, die auch nur relativ kleine Defekte beinhalten.
  • PLD-Defekte können in zwei allgemeine Gebiete kategorisiert werden: Grobe Defekte, die den gesamten PLD nutzlos oder unzuverlässig machen, sowie lokalisierte Defekte, die einen relativ kleinen Prozentsatz auf dem PLD beschädigen. Es wurde herausgefunden, dass für einige große Chips, nahezu zwei Drittel von den Chips auf einem gegebenen Wafer aufgrund lokalisierter Defekte verworfen werden können. Bei Betrachtung der mit einer Herstellung großer integrierter Schaltkreise verbundenen Kosten hat ein Verwerfen eines großen Prozentsatzes von PLD-Chips eine sehr schwerwiegende nachteilige wirtschaftliche Auswirkung auf PLD-Hersteller.
  • Zusammenfassung
  • Die vorliegende Erfindung ermöglicht es PLD-Herstellern, PLDs zu identifizieren, die trotz einiger Defekte fehlerlos ausgewählte Kundenentwürfe implementieren können.
  • Im Anschluss an eine Herstellung werden die verschiedenen Chips auf einem gegebenen Halbleiter-Wafer auf "grobe" Defekte getestet, wie beispielsweise Kurzschlüsse in der Stromversorgung, die eine hohe Wahrscheinlichkeit aufweisen, einen PLD ungeeignet für jeglichen Kundenzweck werden zu lassen. In einer auf SRAM-basierte FPGAs anwendbaren Testmethode werden Chips, die ein Grobtesten überleben, einem "Zurücklesetest" ausgesetzt, um die Funktion der Konfigurationsspeicherzellen zu verifizieren. Defektfreie Chips werden einem weiteren Testen ausgesetzt, um fehlerlose Leistung sicherzustellen, während Chips, die eine große Anzahl oder dichte Konzentration von Zurücklese-Defekten aufweisen, zurückgewiesen werden. Chips mit relativ wenig Defekten werden als "ASIC-Kandidaten" beiseite gelegt und werden einem weiteren Testen ausgesetzt. Anders als in den normalerweise ausgeführten allgemeinen Tests, um eine PLD-Funktionalität zu verifizieren, werden die ASIC-Kandidaten in einer Ausführungsform applikationsspezifischen Tests ausgesetzt, die die Eignung von jedem Kandidaten, mit einem oder mehreren spezifischen Kundenentwürfen zu funktionieren, verifizieren.
  • Einige erfindungsgemäße Testverfahren verwenden von einem Benutzerentwurf abgeleitete Testschaltungstechnik, um für den Entwurf erforderliche PLD-Betriebsmittel zu verifizieren. Diese Verfahren verifizieren die Eignung eines FPGAs für einen gegebenen Entwurf, ohne ein Verständnis des Entwurfs zu fordern, und reduzieren daher wesentlich die Kosten und Komplexität eines Entwickelns entwurfsspezifischer Tests für einen Benutzerentwurf. Ebenso vorteilhaft reduziert Einengen eines Testbereiches auf die für einen gegebenen Entwurf erforderlichen Betriebsmittel die für ein Testen erforderte Zeit und erhöht die Anzahl an verkaufbaren PLDs. Verwenden von Testschaltkreisen, die andere sind als der Benutzerentwurf, um die für den Benutzerentwurf erforderten Betriebsmittel zu testen, ermöglicht Umfassendtesten, ohne ein Verständnis des Benutzerentwurfs zu erfordern.
  • Die vorangehenden Testverfahren werden PLD-Anbieter nicht davon entbinden, vollständig getestete, defektfreie PLDs zu verkaufen. Kunden werden weiterhin defektfreie PLDs fordern, um kundenspezifische Entwürfe zu entwickeln und diese Entwürfe schnell auf den Markt zu bringen. Jedoch können, sobald ein Kunde einen spezifischen Entwurf hat, die zuvor erwähnten Testprozeduren kostenreduzierte PLDs bereitstellen, die physikalisch und funktionell identisch zu den vollständig funktionalen PLDs oder den PLDs zuerst zur Entwicklung des kundenspezifischen Entwurfs verwendeten sind.
  • Entsprechend einer erfindungsgemäßen Ausführungsform wird ein an den mit geretteten PLDs verbundenen potenziellen Kosteneinsparungen interessierter Kunde eine Ausformung des kundenspezifischen Entwurfs (beispielsweise eine Datendatei) an den PLD-Anbieter senden. Der Anbieter wird dann die Ausformung verwenden, um ASIC-Kandidaten in der oben beschriebenen Weise zu testen. ASIC-Kandidaten, die physikalisch und funktionell identisch zu dem defektfreien PLD sind, der zuerst verwendet wurde, um den kundenspezifischen Entwurf zu instanziieren, können dann dem Kunden zu reduzierten Kosten verkauft werden.
  • Diese Zusammenfassung schränkt den Bereich der Erfindung nicht ein, wie der Bereich der Erfindung durch die Ansprüche definiert ist.
  • Kurze Beschreibung der Figuren
  • 1 ist ein Flussdiagramm 100, das eine wie auf FPGAs angewandte erfindungsgemäße Ausführungsform zeigt. Im Anschluss an eine Herstellung werden die verschiedenen Chips auf einem gegebenen Halbleiter-Wafer auf "grobe" Defekte getestet (Schritt 105).
  • 2 ist ein Blockdiagramm eines herkömmlichen FPGAs 200, worin ein beispielhafter Benutzerentwurf instanziiert ist.
  • 3 ist ein Flussdiagramm, dass den entwurfspezifischen Testschritt 121 von 1 detailliert.
  • 4 stellt ein beispielhaftes Netz unter Test 400 und eine verbundene Signalquelle 405 sowie Zielschaltkreise 410 und 415 dar.
  • 5 stellt ein FPGA 500 dar, in welchem die CLBs, IOBS und der RAM-Block des Benutzerentwurfs von 2 schattiert sind.
  • 6A bis 6D stellen Bereiche von Schaltkreisentwürfen dar, welche auf einem FPGA instanziiert werden können, um eine RAM-Block Funktionalität zu verifizieren.
  • 7 stellt schematisch einen Testschaltkreis 700 dar, der dazu ausgebildet ist, den Geschwindigkeitsdurchsatz eines kritischen Pfades 705 eines hypothetischen Benutzerentwurfs zu verifizieren.
  • 8 stellt einen Testschaltkreis 800 dar, der gemäß der Erfindung verwendet werden kann, um funktionale Tests von FPGA-Betriebsmitteln bei gegebener Geschwindigkeit (at-speed) auszuführen, wobei ein interner Speicher sowie Leitweglenkungsbetriebsmittel eingeschlossen sind.
  • 9 stellt einen Testschaltkreis 900 in Übereinstimmung mit einer anderen erfindungsgemäßen Ausführungsform dar.
  • 10 stellt einen Testschaltkreis 1000 in Übereinstimmung mit einer noch weiteren erfindungsgemäßen Ausführungsform dar.
  • 11 stellt schematisch einen Zähler 1020A von 10 dar (Zähler 1020B ist identisch).
  • 12 stellt schematisch eine Ausführungsform von LFSR 1030A von 10 dar (LFSR 1030B ist identisch zu LFSR 1030A, außer dass Leitung /FE-CNT stattdessen zu Leitung /LD-CNT verbindet).
  • 13 stellt eine Ausführungsform eines MSB-Vergleichers 1050A von 10 dar.
  • 14 stellt ein Beispiel eines Taktgebers 1010 von 10 dar.
  • 15 stellt einen anderen Typ eines Taktgebers 1500 für eine Verwendung in der vorliegenden Erfindung dar.
  • 16 stellt eine Ausführungsform eines Signaturanalysator 1040 von 10 dar.
  • 17 zeigt, wie Testschaltkreis 1000 von 10 skaliert werden kann, um zusätzliche Betriebsmittel auf einen gegebenen FPGA zu testen.
  • 18 beschreibt ausführlich den zuerst in 10 eingeführten MSB-Vergleicher 1050B.
  • 19 stellt schematisch einen Testschaltkreis 1900 dar, der N kleine Testschaltkreise 1905(1)1905(N) beinhaltet, von denen jeder einen Schaltkreisbereich 1000 sowie einen zugeordneten MSB-Vergleicher beinhaltet (siehe 10).
  • 20 stellt schematisch einen Testschaltkreis 2000 dar, der M Spalteninstanzen 1910(1)1910(M) verwendet, um jede Reihe und Spalte eines Virtex(TM)-FPGA zu bevölkern.
  • 21 ist ein schematisches Diagramm einer "Scheibe" ("slice") 2100, von einer von zwei identischen Scheiben, die einen beispielhaften CLB, aus der Virtex(TM)-Familie von Bauelementen, die von Xilinx, Inc. erhältlich sind, bilden.
  • 22A bis 22D stellen vier FPGA-Konfigurationen zum Instanziieren eines Testschaltkreises 2000 von 20 auf einem beispielhaften FPGA 2200 dar.
  • 23 stellt ein Paar von über einen Registerübertragungspfad verbundenen sequenziellen Speicherelementen dar.
  • Detaillierte Beschreibung
  • Die vorliegende Erfindung betrifft programmierbare Logikbauelemente. In der folgenden Beschreibung werden mehrere spezifische Details dargelegt, um ein besseres Verständnis von Ausführungsformen der vorliegenden Erfindung bereitzustellen. Jedoch wird dem Fachmann klar sein, dass die vorliegende Erfindung ohne diese spezifischen Details umgesetzt werden kann. In anderen Beispielen wurden bekannte Leistungsmerkmale nicht im Detail beschrieben, um ein Verschleiern der vorliegenden Erfindung zu vermeiden.
  • 1 ist ein Flussdiagramm 100, das eine wie auf FPGAs angewandte erfindungsgemäße Ausführungsform zeigt. Im Anschluss an eine Herstellung werden die verschiedenen Chips auf einen gegebenen Halbleiter-Wafer auf "grobe" Defekte getestet (Schritt 105). Für Zwecke der vorliegenden Offenbarung sind "grobe" Defekte Defekte, die eine hohe Wahrscheinlichkeit haben, einen PLD ungeeignet für jeden Kundenzweck werden zu lassen. Beispiele von groben Defekten beinhalten Kurzschlüsse einer Stromversorgung, Verbindungsunterbrechungen, schwerwiegende Lecks, defekter Taktorganisations-Schaltkreis sowie große Zahlen von defekten programmierbaren Speicherzellen. Chips mit groben Defekten werden verworfen (Entscheidung 107). Verschiedene Tests nach groben Defekten sind in Kapitel 14 von "Application-Specific Integrated Circuits" von Michael John Sebastian Smith (1997) beschrieben.
  • Chips, die die Entscheidung 107 überleben, werden einem "Rücklesetest" ausgesetzt, um die Funktion der Konfigurationsspeicherzellen zu verifizieren (Entscheidung 109). In diesem Schritt wird ein Konfigurationsspeicher programmiert, um verschiedene Muster von Konfigurationsdaten zu beinhalten und dann zurückgelesen, um die korrekten Programmzustände dieser Zellen zu verifizieren. In einer Ausführungsform werden Chips zurückgewiesen, falls sie eine große Zahl oder Konzentration von Defekten aufweisen. Die als "groß" angesehene Zahl wird von der Größe des betrachteten PLDs und von der Verteilung der Defekte abhängen, weil diese Parameter die Wahrscheinlichkeit bestimmen, dass solche Defekte einen PLD ungeeignet für eine Instanziierung von Kundenentwürfen (auch als "Benutzerentwürfe" bezeichnet) werden lassen.
  • Bei Entscheidung 109 werden defekte Chips mit mehr als der maximal erlaubten Anzahl an Defekten verworfen, werden Chips mit keinen Defekten zu Schritt 111 für ein Umfassendtesten gesendet und werden defekte Chips mit einer Anzahl von Defekten, die kleiner ist als die maximal erlaubte Anzahl, als "ASIC-Kandidaten" identifiziert (Schritt 113). ASIC-Kandidaten sind die Chips, die, obwohl nicht perfekt, angemessene Betriebsmittel aufweisen können, um einige Benutzerentwürfe zu instanziieren. Andere Ausführungsformen können ASIC-Kandidaten auf der Grundlage ihrer Wahrscheinlichkeit, einen Benutzerentwurf erfolgreich zu implementieren, separieren. Beispielsweise kann ein Bauelement mit lediglich einem Defekt als wertvoller als ein Bauelement mit fünf Defekten angesehen werden.
  • Die PLDs ohne identifizierte Defekte gemäß Entscheidung 109 werden sorgfältig getestet, um die Einhaltung strenger Leistungskriterien sicherzustellen. Schaltkreisanbieter müssen sowohl Geschwindigkeitsleistung als auch Funktionalität von jedem Bauelement verifizieren. Vollständig funktionale Chips werden als gute Bauelemente identifiziert (Schritt 115). Diese Chips werden dann gepackt (Schritt 117) und die sich ergebenden PLDs werden den selben Testreihen ausgesetzt wie es die ungepackten Chips waren, wieder beginnend bei Schritt 105. Die Tests werden wieder durchgelaufen, um sicherzustellen, dass keine Defekte durch oder während des Packprozesses eingeführt wurden. Falls ein gepackter Chip defektfrei ist, wird der Prozess schließlich zu Schritt 115 zurückkehren und der gepackte PLD wird entsprechend eingeteilt (binned) und einem Kunden verkauft (Schritt 118). Obwohl nicht gezeigt, beinhaltet der herkömmliche Testprozess für PLDs zusätzlich Geschwindigkeitseinteilen.
  • Chips, die weniger als vollständig funktional sind, nichtsdestoweniger aber Entscheidungen 107 und 109 überlebt haben, werden als "ASIC-Kandidaten" identifiziert (Schritt 113). Ungepackte ASIC-Kandidaten werden gepackt (Schritt 117) und die sich ergebenden gepackten PLDs werden denselben Testreihen wie die ungepackten Chips ausgesetzt, wieder beginnend bei Schritt 105. Jeder gepackte Chip kann durch Entscheidung 107 oder 109 verworfen werden, oder kann noch einmal als ein ASIC-Kandidat identifiziert werden (Schritt 113). Dieses mal jedoch, wird dass gepackte Bauelement als ein gepackter ASIC-Kandidat eingeteilt (Schritt 119), um getestet zu werden, um zu bestimmen, ob es trotz Mängeln einen Benutzerentwurf zuverlässig implementieren wird.
  • Zu einer in dem beschriebenen Testverfahren vor dem nächsten Schritt liegenden Zeit fragt der PLD-Hersteller nach einem oder mehreren Benutzerentwürfen nach und erhält einen oder mehrere Benutzerentwürfe, welche unter Verwendung der angemessenen PLD-Entwurfs-Software ausgeformt sind (Schritt 120). Diese Entwürfe sind für den Gebrauch in dem zu testenden PLD-Typ ausgebildet (beispielsweise eines PLDs derselben Größe und PIN-Konfiguration). Ein erster von diesen Kundenentwürfen wird dann analysiert, um entwurfsspezifische Testschaltkreise zu erzeugen, welche auf einem der ASIC-Kandidaten von Schritt 119 instanziiert werden sollen. Diese Testschaltkreise werden zum Ermitteln verwendet, ob der ASIC-Kandidat mit dem Kundenentwurf funktioniert. Solche Funktionalität ist nicht unwahrscheinlich, weil Kundenentwürfe typischerweise einen beträchtlichen Bereich ihrer programmierbaren Betriebsmittel ungenutzt lassen und die Defekte in dem PLD auf diese ungenutzen Bereiche eingeschränkt sein können. Test 121, ein entwurfsspezifischer Test, ist unten detailliert beschrieben. In Entscheidung 123 wird das Bauelement, falls der zu testende ASIC-Kandidat vollständig funktional mit dem geforderten Entwurf ist, als akzeptabel für einen Gebrauch mit dem speziellen Entwurf identifiziert (Schritt 125). Das Bauelement wird schließlich zu dem Kunden gesendet (Schritt 127), welcher dann den ASIC-Kandidaten mit dem in Schritt 121 verwendeten Benutzerentwurf programmiert (Schritt 129). Alternativ können, falls Schritt 123 zeigt, dass der geforderte Entwurf in dem ausgewählten Bauelement nicht vollständig funktional ist, ein oder mehrere zusätzliche Benutzerentwürfe ausprobiert werden (Entscheidung 131). Der Prozess ist beendet, sobald das Bauelement für einen gegebenen ASIC-Kandidaten einem Gebrauch mit einem Kundenentwurf zugeordnet ist oder die Kundenentwürfe erschöpft sind. Falls kein passender Entwurf gefunden ist, kann der ASIC-Kandidat verworfen oder für ein Testen von später empfangenen Benutzerentwürfen aufbewahrt werden. Ein ASIC-Kandidat kann verworfen werden, nachdem, beispielsweise, zehn Versuche, verschiedene Benutzerentwürfe zu instanziieren, fehlgeschlagen sind.
  • Einem ausgewähltem Kundenentwurf zugeordnete ASIC-Kandidaten werden entsprechend gekennzeichnet, um sicher zu stellen, dass sie nicht in Anwendungen verwendet werden, die defekte Betriebsmittel erfordern können. ASIC-Kandidaten können auch dazu ausgebildet sein, jeden außer dem verifizierten Benutzerentwurf zurückzuweisen. Beispielsweise kann eine eindeutige Signatur, wie zum Beispiel ein zyklischer Redundanzprüf-(CRC)-Wert des Bitstroms für den verifizierten Entwurf in einem nicht-flüchtigem Speicher auf dem PLD gespeichert und zum verifizieren des Entwurfs verwendet werden.
  • In einem herkömmlichen Testen werden viele PLDs zurückgewiesen, weil sie eine kleine Anzahl von zufälligen Defekten aufweisen. Ein Identifizieren von einigen von diesen, die nichtsdestsotrotz perfekt mit spezifischen Benutzerentwürfen funktionieren können, gestattet es PLD-Herstellern und ihren Kunden, von der Verwendung von ansonsten verschwendeten PLDs zu profitieren. PLD-Hersteller profitieren von signifikant verbesserter Ausbeute und PLD-Kunden profitieren, weil für ihren speziellen Zweck passende PLDs zu einem geringeren Preis erhältlich sind. Ebenso vorteilhaft aus der Kundenperspektive ist, dass die wiederhergestellten PLDs physikalisch und funktionell identisch zu den vollständig funkionalen PLDs sind, die zuerst verwendet wurden, um ihre Produkte auf den Markt zu bringen, so dass keine sonstigen Ingenieurresourcen zur Anpassung ihres Produktes an einen neuen ASIC erfordert sind. Die normalerweise zum Anpassen eines Produktes auf einen neuen ASIC erforderte Zeit ist ebenfalls reduziert, was es Kunden gestattet, schneller auf eine weniger teure Alternative zu vollständig funktionalen PLDs auszuweichen.
  • Flussdiagramm 100 ist veranschaulichend; in einer Praxis kann der Ablauf verschieden sein, mit in verschiedenen Reihenfolgen und/oder zu verschiedenen Zeiten ausgeführten verschiedenen Schritten. Beispielsweise kann Schritt 121 unter Verwendung einer unterschiedlichen Testausrüstung als dem zum Verifizieren "defektfreier" PLDs verwendeten ausgeführt werden. Weiterhin veranschaulicht Flussdiagramm 100 den Fall, worin jeder Wafer PLDs und ASIC-Kandidaten bereitstellen kann. In anderen Ausführungsformen können Wafer vollständig PLDs oder vollständig ASIC-Kandidaten zugeordnet sein. PLD-Ausbeute und die Kundenanforderung nach ASIC-Kandidaten wird in Ermittlung des Verhältnisses von ASIC-Kandidaten zugeordneten Wafern oder Chips betrachtet.
  • 2 ist ein Blockdiagramm eines herkömmlichen FPGA 200, worin ein beispielhafter Benutzerentwurf instanziiert ist. FPGA 200 beinhaltet eine Sammlung an programmierbarer Logik, beinhaltend eine Mehrzahl von Eingabe-/Ausgabeblöcken (IOBs) 205, ein Feld von konfigurierbaren Logikblöcken (CLBs) 210 sowie eine Mehrzahl von RAM-Blöcken 215, von denen alle selektiv über programmierbare Leitweglenkungsbetriebsmittel verbunden sein können. CLBs 210 sind die primären Baublöcke und enthalten Elemente zum implementieren anpassbarer Gatter, Flip-Flops sowie Verdrahtung; IOBs 205 stellen Schaltkreise für Kommunikationssignale mit externen Bauelementen bereit; und RAM-Blöche 215 gestatten synchrone oder asynchrone Datenspeicherung, obwohl jedes CLB auch synchrone oder asynchrone RAMs implementieren kann. Für eine detaillierte Behandlung eines FPGAs siehe die Xilinx Advance Product Specification (Xilinx Fortgeschrittene Produktbeschreibung) mit dem Titel "Virtex-II 1.5 V Field-Programmable Gate Arrays" ("Virtex-II 1.5 V Feldprogrammierbare Gatteranordnungen"), DS031-2 (v1.9), November 29, 2001.
  • 3 ist ein Flussdiagramm, dass den entwurfsspezifischen Testschritt 121 von 1 ausführlich beschreibt. Dieser Test ermöglicht vorteilhaft ein Umfassendtesten ohne die Kosten und Komplexität für ein Entwickeln entwurfsspezifischer Tests einen Benutzerentwurf.
  • Zunächst analysiert Software den Benutzerentwurf, um die für den Entwurf erforderten Betriebsmittel zu identifizieren (Schritt 300). Solche Betriebsmittel sind in dem angenommenen Beispiel von 2 gezeigt, wie die schattierten IOBs 205, CLBs 22, RAM-Blöcke 215 sowie die zur Verbindung dieser verwendeten Verbindungsbetriebsmittel 220 (die verbleibenden Verbindungsbetriebsmittel sind zur Klarheit hier weggelassen). Ebenso beinhaltet aber nicht gezeigt sind die zur Definition zur Benutzerkonfiguration erforderten programmierbaren Speicherzellen. Schritt 303 ist ein Rücklesetest, um die für den Benutzerentwurf geforderte Funktionalität der Konfigurationsbits zu verifizieren. Eine Software, die Schritte von Testverfahren in Übereinstimmung einer erfindungsgemäßen Ausführungsform ausführt, kann auf jedem computerlesbaren Medium gespeichert werden. Beispiele von computerlesbaren Medien beinhalten magnetische und optische Speichermedien sowie Halbleiterspeicher.
  • Als nächstes unterteilt die Software die in dem Benutzerentwurf spezifizierten Verbindungen in eine Sammlung von Netzen (Schritt 305), wobei jedes Netz ein Bereich der zwischen Quell- und Zielknoten definierten Verbindung ist. Eine Anzahl von Beispielnetzen sind in 2 mit dicken Linien gezeichnet. Im allgemeinen enthält jedes Netz eine einzelne Signalquelle und eine oder mehrere Signalziele. Die Sammlung von Netzen zusammen beinhaltet alle durch den Benutzerentwurf definierten Signalpfade, und die für ein Testen verwendeten Netze werden so ausgewählt dass sie minimal überlappen (das heißt Minimieren der Anzahl von Drähten, die für ein Weiterleiten von Signalen verwendet werden, aber in dem Entwurf aktuell nicht verwendet werden). Eine zwischen den Schritten 310A und 310B definierte FOR-Schleife (3) definiert einen Test, um die Unversehrtheit von jedem Netz zu verifizieren.
  • Unterteilen der Verbindungen in eine Sammlung von Netzen ist nur ein Weg, um die mit einem gegebenen Entwurf verbundenen Verbindungsbetriebsmittel zu testen. Andere Verfahren zum Testen von Verbindungsbetriebsmittel können auch verwendet werden.
  • Beginnend bei Schritt 315 ist das Quellenelement eines gegebenen Netzes als ein Signalgenerator konfiguriert, und das Zielelement oder die Zielelemente sind als Signalbeobachter konfiguriert. Der Signalgenerator stellt dann Signale über das Netz an die Zielschaltkreise bereit, um die Funktionalität des Netzes zu bestätigen.
  • 4 stellt ein beispielhaftes Netz unter Test 400 dar und eine zugeordnete Signalquelle 405 sowie Zielschaltkreise 410 und 415. Die Quelle 405 sowie Schaltkreise 410 und 415 sind in dem Beispiel CLBs, aber jedes Element kann auch beispielsweise ein IOB oder ein RAM-Block sein. In dem Beispiel ist die Quelle 405 als ein Testsignalgenerator konfiguriert, der eine Folge von Einsen und Nullen in Antwort auf einen Testtakt TCLK produziert. Die Quelle 405 beinhaltet einen durch eine Nachschlagetabelle (LUT) 425 mit dem Netz 400 verbundenen Flip-Flop 420. Die Quelle 405 muss nicht LUT 425 beinhalten, aber dieses Beispiel nimmt an, dass der zum Instanziieren der Quelle 405 verwendete Bereich des Netzes 400 innerhalb des CLB ein Bereich des Kundenentwurfes ist. Falls die Verbindungen in dem Benutzerentwurf sich stattdessen direkt von dem Flip-Flop 420 zu erstrecken, dann würde sich das bevorzugte simulierte Netz in ähnlicher Weise direkt von dem Flip-Flop 420 erstrecken.
  • Die Zielschaltkreise 410 und 415 sind als Testsignalbeobachter konfiguriert. Jeder beinhaltet jeweils eine LUT 425 sowie ein Flip-Flop 420. Die Flip-Flops 420 sind dazu ausgebildet, den Zielen 410 und 415 über das Netz 400 dargestellte Signale zu speichern. Um das Netz 400 zu testen (Schritt 320 von 3), werden Signale von der Quelle 405 über das Netz 400 unter Verwendung eines gemeinsamen Testtaktes TCLK in die Zielschaltkreise 410 und 415 getaktet. Die resultierenden Inhalte des Flip-Flops 420 in den Zielschaltkreisen 410 und 415 werden dann zurückgelesen, um sicherzustellen, dass das Netz 400 die richtigen Daten übertragen hat. Die Bereiche des Netzes 400, die sich in den Zielen 410 und 415 erstrecken, sind vorzugsweise die selben Bereiche, die von dem Benutzerentwurf verwendet werden. In dem Beispiel beinhaltet der Benuterentwurf eine lokale Leitweglenkung innerhalb des Ziels 410, welches ein Signal an die entsprechende LUT 425 überträgt sowie eine lokale Leitweglenkung in dem Ziel 415, welche ein Signal an den entsprechenden Flip-Flop 420 überträgt.
  • Wenn es einem Netz mißlingt die angemessenen Daten bei Geschwindigkeit zu übertragen, besteht der ASIC-Kandidat für den betrachteten Entwurf nicht (3, Entscheidung 345). Der Prozess schreitet dann zu dem nächsten Entwurf, falls vorhanden, voran (Schritt 131 von 1). Der vorangehende Prozess wird für jedes Netz des Benutzerentwurfes fortgesetzt, bis der PLD nicht besteht oder die gesamte Sammung von Netzen validiert ist.
  • Der Programmierprozess, der verwendet wird, die die verschiedenen Testschaltkreise definierenden Konfigurationsdaten zu erzeugen, und der die Testsignal-Generatoren und -Beobachter beinhaltet, verwendet typischerweise auf einem Personal Computer oder einer Workstation ausgeführte Entwurfssoftware (design entry software) (beispielsweise Synthese- oder Schemawerkzeuge), Place-and-Route-Software oder Bitstrom-Erzeugungs-Software. Die Software beinhaltet eine Bibliothek von vordefinierten Schaltkreis-"Makros", die die Testsignalgenerator- und die Beobachterlogikfunktionen für jeden Typ von programmierbarem Logikblock für einen gegebenen PLD-Typ definieren. Die Verwendung von "Makros" in PLD-Programmierprozessen ist bekannt.
  • Programmierbare Blöcke (beispielsweise IOBs, CLBs sowie RAM) beinhalten typischerweise Speicherelemente sowie lokale Leitweglenkung (21, unten erörtert, beschreibt einen Typ von herkömmlichem CLB). Bei einem Verifizieren des Leitweglenkungspfades zwischen programmierbaren Blöcken in einem gegebenen Kundenentwurf ist es bevorzugt, dass die lokale Leitweglenkung innerhalb der Blöcke dieselbe wie die in dem Kundenentwurf verwendete lokale Leitweglenkung sei. Als Konsequenz beinhalten die für das Instanziieren von Testsignalgeneratoren und -Empfängern verwendeten Kerne, wo möglich, interne Leitweglenkung, die identisch zu ihren Gegenstücken in dem Kundenentwurf sind.
  • In einer Ausführungsform beinhaltet eine Bibliothek von Softwaremakros, für jeden Typ von Logikblock, eine Sammlung von Signalgeneratoren und -Beobachtern, die jede mögliche Konfiguration von lokalen Verbindungsbetriebsmitteln enthalten. Ein Bereitstellen eines Testschaltkreises für eine Netz in einem Kundenentwurf beinhaltet dann ein Auswählen von Testsignal-Generator- und -Beobachterbibliothekselementen, deren lokale Verbindungskonfigurationen am besten zu den entsprechenden Logikblockkonfigurationen in dem Kundenentwurf passen.
  • Einige Logikblockfunktionalitäten können unter Verwendung der oben beschriebenen Typen von Signalgeneratoren und -Beobachtern schwierig zu testen sein. Es kann beispielsweise schwierig sein, ein Umschalt-Flip-Flop zu erzeugen, das die in einigen CLBs verfügbaren Übertragungsketten-Betriebsmittel beinhaltet. In solchen Fällen werden die Logikblöcke die nicht als ein Signalgenerator und/oder Signalbeobachter modelliert werden können, stattdessen zwischen zwei anderen Logikblöcken instanziiert, von denen einer als ein Testsignalgenerator konfiguriert ist und der andere hiervon als ein Testsignalbeobachter konfiguriert ist. In diesem Fall werden die Logikblöcke, die nicht als ein Signalgenerator oder Beobachter modelliert werden können, ein Bereich des zwei andere Logikblöcke verbindenden Netzes werden. Einige erfindungsgemäße Ausführungsformen führen weiteres Testen des Netzes durch, um Kurzschlüsse zwischen Verbindungsbetriebsmitteln zu lokalisieren, welche einen Kundenentwurf beeinträchtigen könnten. In einer Ausführungsform beispielsweise, wird jedes Netz mit benachbarten Verbindungsbetriebsmitteln welche hoch (beispielsweise zu einer logischen Eins) gehalten werden, getestet. Der Test kann mit benachbarten Betriebsmitteln, die auf eine logische Null gehalten sind, wiederholt werden. Ein Kurzschluss zwischen dem zu testenden Netz und einer benachbarten Verbindungsleitung wird die über das Netz übertragenen Daten verstümmeln.
  • Unter der Annahme, dass alle Netze bestehen, schreitet die Testprozedur von 3 weiter, um die verschiedenen in dem Benutzerentwurf verwendeten IOBs 205 und CLBs 210 zu testen (beispielsweise die schattierten IOBs 205 und CLBs 210 von 2). Viele Verfahren zum Testen programmierbarer Blöcke sind dem Fachmann des Testens programmierbarer Logikbauelemente bekannt und alle von diesen können verwendet werden. Ein anderes Verfahren zum Testen von IOBs, CLBs und anderen Betriebsmitteln verwendet ein Programmieren des PLDs, um spezielle Testschaltkreise zu beinhalten, die programmierbare Logik ausführen. In einer Ausführungsform sind die zu testenden Betriebsmittel so konfiguriert, dass sie einen mit den Adressanschlüssen eines linearen Rückkopplungsschieberegister (LFSR) verbundenen Zählerschaltkreises erzeugen. Die zum Instanziieren der Schieberegister für den Test verwendeten Verbindungen sind vorzugsweise dieselben Verbindungen, die während der zuvor gegangenen Testsequenz verifiziert waren.
  • LFSRs sind in dem Sinne zyklisch, dass sie, wenn sie wiederholt getaktet sind, durch eine feste Folge von Zuständen gehen. Folglich wird ein LFSR, das mit einem bekannten Satz von Daten beginnt, einen vorhersagbaren Satz von Daten nach einer gegebenen Zahl von Taktperioden enthalten. Die festen Zustände eines LFSRs sind pseudozufällig, mit Wiederholungsraten, die im Prinzip von jeder Länge sein können. Die pseudozufalls-Natur von LFSRs stellt sicher, dass die internen Speicher- und Leitweglenkungsbetriebsmittel, die verwendet werden, diese zu instanziieren, einer großen Anzahl von Permutationen ausgesetzt werden, vorausgesetzt, dass jedes LFSR für eine signifikante Anzahl von Taktperioden schieben darf.
  • In Übereinstimmung mit einer Ausführungsform wird ein LFSR auf einen bekannten Zählwert (beispielsweise Null) voreingestellt und eine bekannte Anzahl von Malen getaktet. Die sich ergebende Zählung wird dann mit einer Referenz verglichen. Falls die resultierende Zählung der Referenz entspricht, werden alle von den für ein Implementieren des Testschaltkreises verwendeten Betriebsmittel, beinhaltend die zum Implementieren des LFSR verwendeten Speicher und Leitweglenkungsbetriebsmittel, als vollständig funktional bei der ausgewählten Taktgeschwindigkeit beurteilt. Wenn jedoch die LFSR-Zählung nicht mit der Referenz übereinstimmt, wird der Test nicht bestanden. Der Test kann bei einer Anzahl von verschiedenen Geschwindigkeiten durchlaufen werden, um die maximale Taktgeschwindigkeit für das zu testende Bauelement zu ermitteln.
  • 5 beschreibt einen FPGA 500, in welchem die CLBs, IOBs und RAM-Blöcke des Benutzerentwurfes von 2 schattiert sind. Einige dieser Betriebsmittel sind verbunden um ein Paar von LFSRs zu bilden, welches zu einem großen Teil Leitweglenkungsbetriebsmittel (Netze oder Bereiche von Netzen), die in vorangegangen Testschritten als gut verifiziert wurden, verwendet. Die LFSRs können dann betrieben werden, um ihre aufbauenden Logikbetriebsmittel zu testen. Falls der Test nicht bestanden wird (Entscheidung 333 von 3), weist der Test den ASIC-Kandidaten für einen Gebrauch mit dem vorliegenden Benutzerentwurf zurück und versucht einen anderen Benutzerentwurf, falls vorhanden. Falls der Test bestanden wird, geht die Testprozedur zu Schritt 335 voran, in welchem RAM-Blöcke getestet werden. RAM-Blöcke können unter Verwendung vieler Testprozeduren getestet werden. Spezifische Beispiele, die LFSRs zum Testen von FPGA-Betriebsmittel verwenden, werden unten im Detail beschrieben.
  • Sollte der RAM-Block-Test von Schritt 335 nicht bestanden werden, weist der Test das PLD für einen Gebrauch mit dem gegenwärtigen Benutzerentwurf zurück und versucht einen anderen Benutzerentwurf, falls vorhanden. Falls der RAM-Block besteht, kann das PLD einem parametrischen Test unterzogen werden, der eine angemessene Geschwindigkeitsleistung für durchlaufende Signale und kritische Pfade in dem betrachteten Benutzerschaltkreis verifiziert. (Ein Verfahren zum Verifizieren einer Geschwindigkeitsleistung wird unten erörtert.) Falls der PLD den Geschwindigkeitstest nicht besteht (Entscheidung 345), weist der Test den PLD für einen Gebrauch mit dem gegenwärtigen Benutzerentwurf zurück und versucht einen anderen Benutzerentwurf falls vorhanden. Ansonsten wird der ASIC-Kandidat als geeignet für einen Gebrauch mit dem Entwurf des Benutzers beurteilt und wird demzufolge für einen Verkauf an den angemessenen Kunden zugeordnet (Schritt 125).
  • 6A bis 6D (Stand der Technik) beschreiben Bereiche von Schaltkreisentwürfen, die auf einem FPGA für ein Verifizieren von RAM-Block Funktionalität instanziiert werden können. Viele andere passende Eingebettet-Speicher-Tests sind dem Fachmann bekannt.
  • 6A stellt schematisch einen LFSR-Schaltkreis 600 dar, der ausgebildet ist, eine Pseudozufallssequenz von Adressen und Daten für ein Testen eines Dual-Port-Ram-Blocks zu erzeugen (das heißt, ein RAM-Block mit Ports A und B). Für einen N-Bit LFSR-Zähler ist die maximale Anzahl von Zuständen, durch die der Zähler zyklisch vor einem Wiederholen zählt, 2N – 1. Der fehlende Zustand ist der Alles-Nullen-Zustand. Weil das LFSR 600 alle RAM-Adressen, inclusive Adresse Null testen soll, ist das LFSR 600 ein N + 1 Bit-LFSR, wobei N die Breite des RAM-Adressen-Port ist.
  • Falls ein typischer N + 1 LFSR-Zähler zum Testen eines Dual-Port-RAMs auf diese Weise verwendet wäre, würde eine Adressenkollision zwischen Ports A und B auftreten, wenn alle die Bits Eins sind (das heißt, beide Ports adressieren dieselbe Speicherzelle). Ein UND-Gatter 610 und zugeordnete Schaltungstechnik eliminiert den "Alles-Einsen"-Zustand, um solch eine Kollision zu vermeiden. LFSRs werden im Detail unten in Verbindung mit 822 erörtert.
  • Eine Eigenschaft des LFSRs-Zähler 600 ist, dass die Daten in dem Speicherelement K + 1 (das heißt, Q[K+1]) gleich den Daten in dem Speicherelement K (das heißt, Q[K]) nach jedem Takt sind. Unter Verwendung dieser Eigenschaft und Zuweisen der RAM-Adresse von Port A als Q[N:1] sowie RAM-Adresse von Port B als Q[N+1:2], wird die Adresse von Port A bei dem nächsten Taktzyklus die Adresse von Port B sein. Wir können die Eigenschaft mit dem folgenden Schema erläutern:
  • Figure 00200001
    Tabelle 1
  • Mit diesem Schema, das Block-RAM durchzuprüfen, wird der Inhalt von jeder RAM-Zelle von beiden Ports gelesen und zu beiden Ports geschrieben und die Daten werden in Ihren Anfangszustand zurückgebracht. Dies gestattet es, den gesamten Test zu wiederholen und Schleifen durchlaufen zu lassen, solange wie der Testschaltkreis seine Funktion beibehält. Falls einer der Inhalte des RAMs zerstümmelt wird, wird der Testschaltkreis rekonfiguriert.
  • 6B beschreibt einen Datengenerator 615 zum Generieren von RAM Testdaten von den dreizehn Ausgaben LOUT [1:13] von LFSR 600 von 6A. Übrigens identifizieren Signalbezeichnungen, die in einer alphanummerischen Bezeichnung in Klammern enden, die Figur an die oder von der sich die Signalleitung erstreckt. In 6B zum Beispiel kommt Signalleitung LOUT[1](6A) von 6A.
  • Die Daten DATA_A für Adressport A basieren auf dem XNOR von LFSR Ausgabebits LOUT[1:12], wobei die Daten DATA_B für Adressport B auf dem ODER von LFSR Ausgabebits LOUT [2:13] basiert. Dieses Verfahren gestattet es, dass die erwarteten Daten deterministisch sind: DATA_A und DATA_B sind für jede gegebene Adresse bekannt.
  • Der Datengenerator 615 beinhaltet ein Paar von Flip-Flops 617 und 619 zum Speichern der Komplemente COMP_A und COMP_B von jeweils DATA_A und DATA_B. Die Komplemente COMP_A und COMP_B werden verwendet, um Lese- und Schreibfehler zu erfassen.
  • 6C stellt einen mit einem Fehlerdetektor 625 verbundenen RAM-Block 620 dar. Bei jedem Taktzyklus vergleicht Fehlerdetektor 625 Ausgaben DOA und DOB von dem Block-RAM 620 mit entsprechenden komplementären Signalen COMP_A und COMP_B von 6B. Dieser Vergleich tritt sogar auf, falls Block-RAM 620 nicht freigeschaltet ist und verifiziert daher, ob Block-RAM 620 freigeschaltet ist. Während eines Lesezyklus sind die dem Block-RAM 620 zugeführten Daten und die erwarteten Ausgabesignale entgegengesetetzt, was sicherstellt, dass ein Schreibzyklus nicht während eines Lesezyklus auftrat. Ein Signalspeicher 630 erfasst jede Fehlerbedingung und stellt das resultierende Fehlersignal auf einer Ausgabeleitung ERR_OUT bereit. Das zu testende FPGA wird zurückgewiesen, falls RAM-Block 620 oder irgend ein anderer mit dem betrachteten Benutzerentwurf verbundener RAM-Block ein Fehlersignal produzieren.
  • 6D stellt eine Token-Schaltungstechnik 640 dar, der verwendet werden kann, RAM-Blöcke sequenziell freizuschalten, wie Block 620 zum Testen. Bei großen Bausteinen, insbesondere denen mit großen Mengen von Block-RAM (beispielsweise dem Virtex(TM) V3200E oder dem V812EM, beide erhältlich bei Xilinx, Inc.) sollte darauf geachtet werden, die Menge an während des Tests aktiven Schaltungstechnik zu begrenzen und auf diese Weise die Menge an Rauschen und dynamischen Strom in dem Bauelement zu reduzieren. Hierzu schaltet die Token-Schaltungstechnik 640 nur einen RAM-Block zur Zeit frei. Ein niedrig-zu-hoch-Übergang auf einem Eingangsanschluss Token_In aktiviert die Token-Schaltungstechnik 640. Wenn das Token_In Signal erfasst ist, schaltet die Token-Schaltungstechnik 640 Block-LFSR 600, Datengenerator 615 und RAM 620 frei. Die Token-Schaltungstechnik 640 generiert auch einen RÜCKSETZ(RESET)-Impuls, der die Flip-Flops von 6A und 6B und RAM 620 von 6C zurücksetzt. Die Flip-Flops von 6A bis 6D, für die keine Rücksetzleitung gezeigt ist, werden alle zurückgesetzt bevor der Test beginnt.
  • Wenn LFSR 600 seine Zählung vervollständigt, sperrt ein Ende-Zähl-Signal END_CNT von dem UND-Gatter 610 LFSR 600 und bewirkt, dass der Token-Schaltkreis 640 ein "Token_Out" Signal auf einer Leitung TOKEN_OUT erzeugt. Die Leitung TOKEN_OUT verbindet mit der TOKEN_IN-Leitung des nächsten Block-RAM unter Test, falls vorhanden. Das Token wird auf diese Weise von einem RAM-Block zu dem nächsten weitergereicht, bis alle die RAM-Blöcke in dem Benutzerentwurf getestet sind.
  • 7 stellt schematisch einen Testschaltkreis 700 dar, der ausgebildet ist, die Geschwindigkeitsleistung eines kritischen Pfades 705 eines hypothetischen Benutzerentwurfes zu verifizieren. Der Testschaltkreis 705 beinhaltet einen als ein Umschalt-Flip-Flop konfigurierten CLB 710, um ein Testsignal für eine Übertragung durch den kritischen Pfad 705 zu erzeugen. Der CLB 710 beinhaltet herkömmlich einen Flip-Flop 715 sowie eine LUT 720. Der Testschaltkreis 700 beinhaltet zusätzlich ein CLB 725, das dazu ausgebildet ist, Datensignale von dem CLB 710 zu empfangen und zu speichern. Der CLB 725 beinhaltet einen Flip-Flop 730 sowie eine LUT 735.
  • In diesem erläuternden Beispiel ist der kritische Pfad 705 der Pfad zwischen Flip-Flop 715 und Flip-Flop 730, wie durch Verwendung relativ dicker Linien angezeigt ist. Das Beispiel nimmt an, dass der kritische Pfad in dem zu testenden Benutzerentwurf LUTs 720 und 735, ein Paar von CLBs 740 und 745 sowie drei Verbindungs-Subnetze 750 beinhaltet. Diese Elemente sind in dem Testschaltkreis 705 beinhaltet, weil der kritische Pfad 705 vorzugsweise ähnlich der Praxis des kritischen Pfades in dem Benutzerentwurf ist. CLBs 740 und 745 sind nicht notwendigerweise im Benutzerentwurf programmiert, können aber stattdessen so programmiert sein, dass sie die Testsignale eher durchlassen (wie zum Beispiel Puffer).
  • Der kritische Pfad 705 und andere kritische Pfade sind durch einen herkömmlichen statischen Zeitanalysator identifiziert und von dem betrachteten Kundenentwurf extrahiert. Beispielsweise wird ein Benutzerentwurf, der bei 50 KHz betrieben werden soll, eine maximale Register-zu-Register-Verzögerung von etwa 20 μs (us) haben. Der Zeitanalysator kann verwendet werden, um Register-zu-Registerpfade mit Verzögerungen dichtest an 20 μs (us) zu identifizieren und dann diese "kritischen" Pfade testen, um sicherzustellen, dass sie sowohl steigende als auch fallende Flanken in unterhalb 20 μs (us) passieren lassen. In der Praxis sollte jeder kritische Pfad etwas schneller sein als erfordert, so das ein angemessenes Überwachungsband von der minimalen Fortschreitungsverzögerung subtrahiert wird.
  • Nachdem die kritischen Pfade identifiziert sind, wird Testschaltkreis 700 in derselben Weise wie oben in Verbindung mit 4 erzeugt. Während der Test von 4 ermittelt, ob jedes Netz funktionierte, ermittelt der mit Testschaltkreis 700 verbundene Test, ob der kritische Pfad 705 mit Geschwindigkeit arbeitet. Der Geschwindigkeitstest kann auf eine Mehrzahl von Wegen durchgeführt werden. In einer Ausführungsform zum Beispiel werden die Flip-Flops 715 und 730 auf bekannte Zustände voreingestellt und dann für eine Anzahl von Perioden unter Verwendung eines Testtaktes TCLK auf einer gleichbenannten Signalleitung bei der geforderten Frequenz getaktet. Der Zustand des Flip-Flops 730 wird dann zurückgelesen, um zu verifizieren, dass die Daten von dem Flip-Flop 715 angemessen empfangen und gespeichert sind. Der Test kann auf verschiedene Weise durchgeführt werden, unter Verwendung verschiedener Anzahlen von Takten, Umschalten der Flip-Flops an verschiedenen Flanken, beginnend mit verschiedenen gespeicherten Daten, etc., um einen korrekten Betrieb in einer Mehrzahl von Umständen sicherzustellen.
  • Für eine Diskussion von alternativen Verfahren von Leistungs-Testen von PLDs siehe U.S. Patentnummern 6,075,418 sowie 6,232,845, beide von Kingsley, et al., sowie die oben erwähnte Smith-Referenz. Bei dem Verwenden der in den Kingsley et al.-Patenten erläuterten Testprozeduren werden Sammlungen von konfigurierbaren Betriebsmitteln in einer Schleife so konfiguriert, dass sie zusammen einen frei-laufenden Ringoszillator bilden. Der Oszillator erzeugt ein oszillierendes Testsignal, worin die Periode proportional zu der Geschwindigkeit der Komponenten in der Schleife ist. Viele solcher Oszillatoren können auf einem gegebenen PLD instanziiert werden, um eine Geschwindigkeitsleistung zu messen.
  • In einigen Ausführungsformen können ASIC-Kandidaten unter Verwendung der in Kingsley et al. beschriebenen Verfahren und Schaltkreise getestet werden. Die in dem Kundenentwurf verwendeten Betriebsmittel können auf Geschwindigkeit getestet werden. Alternativ kann gründlicheres Geschwindigkeitstesten vor oder nach dem entwurfsspezifischen Testen durchgeführt werden. In einer Ausführungsform sind Oszillatoren des durch Kingsley et al. beschriebenen Typs über den PLD verteilt, um auf Geschwindigkeit zu testen. Einige Oszillatoren funktionieren möglicherweise gar nicht aufgrund der in ASIC-Kandidaten vorhandenen Defekte. Diese Oszillatoren werden in einigen Ausführungsformen einfach nicht beachtet: Die anderen oben erklärten Tests stellen sicher, dass die Defekte Kundenentwürfe nicht beeinträchtigen.
  • Zusätzlich zu dem oben beschriebenen Test können ASIC-Kandidaten den selben Typen von physikalischen und Zuverlässigkeits-Tests ausgesetzt werden wie die äquivalenten Standard-PLDs. Defekte Teile auf hohen Standards für spezifische Kundenentwürfe zu halten kann wichtig sein, Kunden zu ermutigen, den Typ von ASIC-Kandidaten zu verwenden, der unter Verwendung obiger Methoden identifiziert ist.
  • Sobald ein ASIC-Kandidat für einen speziellen Kundenentwurf verifiziert ist, möchte der PLD-Hersteller möglicherweise Kunden davon abhalten, die PLDs für andere Entwürfe zu verwenden. Eine Ausführungsform verhindert solch eine Verwendung durch Authentifizierung des Kundenentwurfs, jedesmal, wenn der PLD konfiguriert wird, indem eine Hash-Funktion auf den Konfigurations-Bitstrom angewandt wird. Das Ergebnis der Hash-Funktion wird dann mit einem proprietären, durch den PLD-Hersteller in dem nicht-flüchtigem Speicher bereitgestellten Hash-Schlüssel verglichen. Der PLD wird nicht funktionieren, falls der Bitstrom nicht das erforderte Hash-Resultat liefert.
  • 8 bis 22 und der zugeordnete Text beschreiben Verfahren und Testschaltkreise, die zum Testen von jedem programmierbaren Block auf einem FPGA verwendet werden können. Diese Verfahren und Schaltkreise sind für ein Durchführen des Umfassend-Testens von Schritt 111 (1) nützlich; jedoch ist solch ein Umfassend-Testen für das entwurfsspezifische Testen von Schritt 121 (1 und 3) nicht bevorzugt. Die Verfahren und die Testschaltkreise sind daher darauf begrenzt, die Betriebsmittel des in Schritt 300 (3) identifizierten Benutzerentwurfes zu beinhalten und sowenig Overhead wie möglich. Begrenzung des Testschaltkreis-Overheads minimiert die Wahrscheinlichkeit, einen defekten Chip für einen entwurfsspezifischen Gebrauch auf Grund von Defekten, die keinen Einfluss auf den spezifischen Entwurf haben, zurückzuweisen.
  • 8 stellt einen Testschaltkreis 800 dar, der entsprechend der Erfindung zum Durchführen von funktionalen Tests bei gegebenen Geschwindigkeiten (at-speed functional tests) von FPGA-Betriebsmittel, beinhaltend internen Speicher und Leitweglenkungsbetriebsmittel, verwendet werden kann. In Übereinstimmung mit einer erfindungsgemäßen Ausführungsform ist der Testschaltkreis 800 unter Verwendung von Betriebsmitteln, welche von einem Benutzerentwurf verwendet werden, sowie einer minimalen Menge von zusätzlichen Betriebsmitteln, instanziiert. Der Testschaltkreis 800 beinhaltet einen Zähler 810, dessen Ausgabeanschlüsse 820 mit den Adressanschlüssen eines RAM-Feldes 830 verbunden sind, das als ein lineares Rückkopplungsschieberegister (LFSR) ausgeführt ist. Der Testschaltkreis 800 beinhaltet zusätzlich einen Taktgenerator 835, der dazu konfiguriert ist, ein Taktsignal auf der Leitung CLK bereitzustellen, sowie ein Referenzregister 840, dessen Ausgabeanschluss mit einem Eingabeanschluss eines Vergleichers 850 verbunden ist. Das LFSR 830 verbindet über Leitweglenkungsbetriebsmittel 860 zu einem anderen Eingabeanschluss des Vergleichers 850.
  • Die Pseudozufalls-Natur von LFSR 830 stellt sicher, dass die Speicherlokationen in dem LFSR 830 einer großen Zahl von Permutationen unterworfen werden, falls es LFSR 830 gestattet ist, für eine signifikante Anzahl an Taktperioden zu schieben. Bezugnehmend auf Entscheidungsblock 870, falls, nach einer Anzahl von Taktübergängen der dem Vergleicher 850 bereitgestellte Zählerstand der korrekten Referenzzahl in Register 840 entspricht, dann werden alle von den zum Implementieren von dem Testschaltkreis 800 verwendeten Betriebsmittel als vollständig funktionsfähig bei der gewählten Taktgeschwindigkeit beurteilt. Falls jedoch der LFSR-Zählerstand nicht dem Zählerstand in Register 840 entspricht, wird der Test nicht bestanden. Der Test kann bei einer Anzahl von verschiedenen Geschwindigkeiten durchlaufen werden, um die maximale Taktgeschwindigkeit für einen Baustein unter Test zu ermitteln.
  • 9 beschreibt einen Testschaltkreis 900 in Übereinstimmung mit einer anderen erfindungsgemäßen Ausführungsform. Der Testschaltkreis 900 ist in einiger Hinsicht ähnlich zu dem Testschaltkreis 800 von 8, wobei gleichnumerierte Elemente dieselben sind. Der Testschaltkreis 900 beinhaltet zusätzlich ein zweites, ebenfalls mit den Ausgabeanschlüssen 820 von dem Zähler 810 verbundenes LFSR 910. Das LFSR 910 ist so konfiguriert, dass es dasselbe Ausgabemuster wie LFSR 830 produziert, so dass die Endergebnisse und jeder Zwischenwert von LFSR 830 und LFSR 910 nach jedem Taktzyklus einander entsprechen sollten. Wie in Flussdiagramm 915 angezeigt, zeigt der Testschaltkreis 900 einen Fehler an, falls die Ausgabe eines synchronen Vergleichers 920 eine Fehlanpassung nach einem Taktzyklus anzeigt.
  • Das LFSR 830 ist unter Verwendung eines integrierten Speichers implementiert, um die Funktionalität des Speichers zu testen. Die verbleibenden Komponenten, die die verschiedenen Verbindungen zwischen LFSR 910, Zähler 810, Taktgenerator 835 sowie Vergleicher 850 beinhalten, können ebenso unter Verwendung von FPGA-Betriebsmittel implementiert werden. Auf diese Weise konfiguriert, zeigt eine Durchlauf-Testsequenz auf einen von Testschaltkreisen 800 oder 900, bei Geschwindigkeit für alle von den in dem Test verwendeten FPGA-Betriebsmitteln eine korrekte Funktion an.
  • 10 stellt einen Testschaltkreis 1000 dar, der spezifisch für ein Testen von FPGAs aus der Virtex(TM)-Familie, erhältlich von Xilinx, Inc., von San Jose, Kalifornien, ausgebildet ist. Der Testschaltkreis 1000 beinhaltet einen mit einem Paar von Zählern 1020A und 1020B verbundenen Taktgenerator 1010 sowie ein entsprechendes Paar von RAM-LFSRs 1030A und 1030B. Die Zähler 1020A und 1020B sind über Busse 1035A und 1035B mit den entsprechenden RAM-LFSRS 1030A und 1030B verbunden. Der Testschaltkreis 1000 beinhaltet zusätzlich einen Signaturanalysator 1040 und einen Höchstwertiges-Bit-(MSB)-Vergleicher 1050A. Diese Schaltkreiskomponenten sind über eine Anzahl von als flaggengeformte Schaltkreisknoten dargestellte Eingabe- und Ausgabe-Pins von außen zugänglich.
  • Eine Taktleitung CLK von dem Taktgenerator 1010 ist mit jedem der Zähler 1020A und 1020B, LFSRs 1030A und 1030B sowie MSB-Vergleicher 1050A verbunden. Ein Lade-/Zähl-Pin 1060 kann von außen auf eine logische Null (beispielsweise Null Volt) gesetzt werden, um Daten auf einer Datenleitung D_IN in jedes der LFSRs 1030A und 1030B zu übertragen. Wie unten erörtert, gestattet das Erzwinge-Fehler-/Zähler-Signal /FE-CNT auf dem Pin 1063 einem externen Tester zu verifizieren, dass der Testschaltkreis 1000 korrekt Fehler anzeigt.
  • In der dargestellten Ausführungsform ist die Leitung D_IN mit einer logischen Null verbunden (beispielsweise Null Volt); in anderen Ausführungsformen ist die Leitung D_IN von außen zugänglich, was es einem externen Tester gestattet, gewünschte Datenmuster in die LFSRs 1030A und 1030B zu laden. Sobald jeder der LFSRs 1030A und 1030B geladen sind, werden Lade-/Zähler-Pin sowie Erzwinge-Fehler-Pin 1063 auf logische Einsen gesetzt, was es LFSRs 1030A und 1030B gestattet, durch eine Pseudozufallssequenz zu zählen.
  • Das höchstwertige Bit von LFSR 1030A verbindet über eine Leitung MSB_A mit jedem von dem Signaturanalysator 1040 und MSB-Vergleicher 1050A; das höchstwertige Bit von LFSR 1030B verbindet über eine Leitung MSB_B mit dem MSB-Vergleicher 1050A. Beide LFSRs sind auf dieselbe Weise konfiguriert und sollten daher dieselbe Pseudozufallssequenz an höchstwertigen Bits erzeugen. Der MSB-Vergleicher 1050A vergleicht nach jedem Takt das höchstwertige Bit von jedem LFSR, um sicherzustellen, dass beide LFSRs durch dieselbe Sequenz schreiten. Der MSB-Vergleicher 1050A zeigt jede Fehlübereinstimmung zwischen MSB_A und MSB_B durch Bereitstellen einer logischen Null auf einem externen PIN 1070 an. Solch ein Fehler zeigt an, dass die zum Instanziieren des Testkreises 1000 verwendeten FPGA-Betriebsmittel bei der gewählten Taktfrequenz nicht korrekt funktionieren.
  • Der Signaturanalysator 1040 ist, in einer Ausführungsform, ein Siebzehn-Bit-LFSR-Zähler mit einem an die Leitung MSB_A angeschlossenen Taktanschluss. Weil das LFSR 1030A durch eine deterministische Sequenz läuft, sollte Leitung MSB_A für eine bestimmte Anzahl von Malen für eine vorgebenene Anzahl von Übergängen zwischen Eins und Null Übergänge auf der Taktleitung CLK durchführen. Der Signaturanalysator 1040 zeigt daher einen Fehler an, falls der in dem Signaturanalysator 1040 gespeicherte Zählwert nicht die richtige Anzahl an Signalübergängen anzeigt. (Die Erörterung von 16 unten beschreibt ausführlich eine Ausführungsform eines Signaturanalysators 1040.)
  • Der Erzwinge-Fehler-Pin 1063 ermöglicht es einem externen Tester, zu ermitteln, ob der Testkreis 1000 einen Fehler anzeigen wird, falls die Ausgabe von dem RAM-LFSR 1030A von der von dem RAM-LFSR 1030B differiert. Solch ein Test wird durchgeführt, indem der Eingabepin 1063 auf LOW (low) gelassen wird, während Pin 1060 auf HIGH (high) gebracht wird. Das LFSR 1030B wird daher inkrementieren, während LFSR 1030A eher wiederholt Nullen lädt. Die entsprechenden höchstwertigen Bits MSB_A und MSB_B werden schließlich fehlschlagen, übereinzustimmen, eine Bedingung, die in eine Fehleranzeige (error flag) resultieren sollte (das heißt eine logische Null auf Pin 1070). Weiterhin sollte das Fehlschlagen des LFSRs 1030A, zu zählen, bewirken, dass der Signaturanalysator 1040 den falschen Zählwert enthält. Der Pin 1063 kann daher verwendet werden, um sicherzustellen, dass der Testschaltkreis 1000 in der Lage ist, Fehler zu bemerken.
  • 11 stellt schematisch Zähler 1020A von 10 dar (Zähler 1020B ist identisch). Der Zähler 1020A kann jeder Typ von synchronem Zähler sein, aber ist in der dargestellten Ausführungsform als ein LFSR konfiguriert, weil LFSRs sehr schnell sind und weniger Betriebsmittel erfordern als andere Zähler von vergleichbarer Größe. Der Zähler 1020A beinhaltet vier D-Flip-Flops 11001103 sowie ein 16 × 1 RAM 1105. Jede Adressleitung des RAM 1105 ist mit einer logischen Null verbunden. Auf diese Weise konfiguriert, wirkt RAM 1105, ähnlich zu Flip-Flops 11001103, als ein Ein-Bit-Speicherlement. Diese Konfiguration wird verwendet, um sicher zu stellen, dass der Zähler 1020 effizient in Virtex(TM)-FPGAs packt.
  • Der Zähler 1020A beinhaltet einen Rückkopplungsschaltkreis 1110 mit der Zusatzlogik, den Zähler 1020A voreinzustellen und Rückkopplungsignale dem Flip-Flop 1100 bereitzustellen, so dass der Zähler 1020A als ein LFSR arbeitet. Die Leitung /LD-CNT kann die gleiche oder eine andere von der gleichbenannten Leitung von 10 sein. Ein Takten des Zählers 1020A, während die Leitung /LD-CNT eine logische Null ist, lädt den Zähler 1020A mit Nullen; ein Takten des Zählers 1020A, während die Leitung /LD-CNT eine logische Eins ist, bewirkt, dass der Zähler 1020A durch jede der 32 möglichen Kombinationen von 5 Binärziffern zählt. Der Bus 1035A übermittelt diese Zustände an LFSR 1030A.
  • Für eine detaillierte Beschreibung von LFSRs und wie diese unter Verwendung von FPGAs zu implementieren sind, siehe die mit "Efficient Shift registers, LFSR Counters, and Long Pseudo-Random Sequence Generators" ("Effiziente Schieberegister, LFSR-Zähler und Generatoren langer Pseudozufallssequenzen") betitelte Xilinx Anwendernotiz von Peter Alfke, XAPP 052 July 7, 1996 (Version 1.1).
  • 12 stellt schematisch eine Ausführungsform von LFSR 1030A von 10 dar (LFSR 1030B ist identisch zu LFSR 1030A, außer, dass die Leitung /FE_CNT stattdessen zu Leitung /LD-CNT verbindet). LFSR 1030A beinhaltet drei D-Flip-Flops 12001202 sowie zwei 16 × 1 RAM-Felder 1205 und 1210. Jede Adressleitung der RAM-Felder 1205 und 1210 ist auf dem Bus 1035A mit einer entsprechenden Leitung des Zählers 1020A verbunden (es hat keinen Einfluss, welche Adressleitung mit welcher Leitung des Bus 1035A verbunden ist). Die verbleibende Leitung von Bus 1035A verbindet über eine Leitung CE-WE zu entsprechenden Schreib-Freigabe- sowie Takt-Freigabe-Anschlüssen der verschiedenen Flip-Flops und RAM-Felder. Der Sinn von jedem Taktanschluss der Flip-Flops 12001202 und RAM-Felder 1205 und 1210 ist invertiert, um den Signalen von dem Bus 1035A Zeit zu geben, sich zu stabilisieren, bevor LFSR 1030A getaktet wird.
  • Die RAM-Felder 1205 und 1210 wirken jedes als sechzehn Ein-Bit-Speicherelemente. Die Flip-Flops 12001202 sind ebenfalls Ein-Bit-Speicherlemente. Das LFSR 1030A ist daher ein 105-Bit LFSR. 35-Bit LFSRs können Milliarden von Zuständen aufweisen, so dass das LFSR 1030A sich sogar bei relativ hohen Taktfrequenzen für eine sehr lange Zeit nicht wiederholen wird. Folglich stellt jedes Bit des LFSR 1030A während einer Testperiode eine nicht-wiederholende Pseudozufallssequenz von Einsen und Nullen bereit. Das höchstwertige Bit des LFSR 1030A (oder jedes andere Bit) wird auf Leitung MSB_A an den MSB-Vergleicher 1050 übertragen (6 und 10), um mit dem selben Bit von LFSR 1030B verglichen zu werden. Das LFSR 1030A beinhaltet einen Rückkopplungsschaltkreis 1215 mit der Zusatzlogik zum Voreinstellen des LFSR 1030A mit Daten von dem Anschluss D_IN (beipielsweise alles Nullen) und zum Bereitstellen von Rückkopplungssignalen an das RAM-Feld 1205, so dass die RAM-Felder und Flip-Flops als ein LFSR arbeiten.
  • 13 stellt schematisch eine Ausführungsform des MSB-Vergleichers 1050A von 10 dar. Der Vergleicher 1050A beinhaltet ein XNOR-Gatter 1300 sowie einen D-Flip-Flop 1310. Die Q-Ausgabe von Flip-Flop 1310 wird auf eine logische Eins voreingestellt. Der Vergleicher 1050A vergleicht die Logiklevel auf den Leitungen MSB_A und MSB_B. Jede Fehlübereinstimmung zwischen MSB_A und MSB_M erzeugt eine logische Null, die in Flip-Flop 1310 gespeichert ist und auf der Fehlerleitung /ERR dargestellt ist. Wie mit anderen in den Figuren dargestellten Gattern kann XNOR-Gatter 1300 unter Verwendung von FPGA-Logikbetriebsmitteln implementiert werden, wie dem Fachmann klar sein wird.
  • 14 stellt ein Beispiel des Taktgenerators 1010 von 10 dar. Der Taktgenerator 1010 beinhaltet ein UND-Gatter 1400, ein nicht-invertierendes Verzögerungselement 1410 sowie einen Puffer 1420. Das UND-Gatter 1400 arbeitet als ein einfacher Invertierer, wenn das Taktfreigabesignal CE eine logische Eins ist, so dass das Verzögerungselement 1410 und das UND-Gatter 1400 einen Ring-Oszillator bilden. Das Verzögerungselement 1410 kann jedes Betriebsmittel das eine gewünschte Verzögerung erzeugt, beinhalten, beipielsweise eine Kette von Nachschlagetabellen (LUTs) und Verbindungsbetriebsmittel. Der Taktgenerator 1010 kann vollständig integriert implementiert sein und ist daher für Felddiagnose nützlich. In einer auf einem Virtex(TM)-FPGA implementierten Ausführungsform ist das Verzögerungselement 1410 eine Kette von zwölf Puffern.
  • 15 stellt einen anderen Typ von Taktgenerator 1500 für einen Gebrauch in der vorliegenden Erfindung dar. Der Taktgenerator 1500 beinhaltet einen Takt-Impuls-Generator 1510 sowie einen Puffer 1520. Der Takt-Impuls-Generator 1510 verwendet vier externe Takte auf den Pins P1–P4, von denen jeder einen unterschiedlichen Betrag an Verzögerung mit Bezug aufeinander aufweist, so dass ein Ausgabetakt von höherer Frequenz als die externen Takte erzeugt wird. Auf diese Weise können beispielsweise vier Takte von einem 50 MHz-Tester kombiniert werden, so dass sie einen einzelnen 200 MHZ-Takt auf der Leitung CLK erzeugen. Ein herkömmlicher Tester stellt typischerweise die externen Taktsignale bereit. Einige PLDs, wie beispielsweise die von der Virtex(TM)-II-Familie von bei Xilinc, Inc. erhältlichen FPGAs, beinhalten Takt-Organisations-Betriebsmittel, die verwendet werden können, um angemessene Testtaktsignale zu entwickeln.
  • 16 stellt eine Ausführungsform des Signaturanalysators 1040 von 10 dar. Der Signaturanalysator 1040 kann jeder passende Signaturanalysator sein, beispielsweise ein Schaltkreis zur Durchführung einer herkömmlichen zyklischen Redundanzprüfung (CRC), ist aber ein LFSR in der Ausführungsform von 16. Der Signaturanalysator 1040 beinhaltet siebzehn D-Flip-Flops 16011617 (Flip-Flops 16021613 sind von 16 zur Vereinfachung weggelassen). Ein XOR-Gatter 1620 stellt die Zusatzrückkopplung bereit, um den Signaturanalysator 1040 als ein LFSR zu konfigurieren. Bevor ein Test durchlaufen wird, wird der Signaturanalysator 1040 unter Verwendung einer mit jedem Flip-Flop verbundenen Setz-Rücksetz-Leitung SR (14) zurückgesetzt. Dann taktet der Signaturanalysator 1040 während eines nachfolgenden Tests einmal für jeden Null-zu-Eins-Signalübergang auf Leitung MSB_A von LFSR 1030A. Weil LFSR 1030A durch eine deterministische Sequenz läuft, sollte Leitung MSB_A für eine bestimmte Zahl an Malen für eine ausgewählte Anzahl von Übergängen auf der Taktleitung CLK Übergänge zwischen Eins und Null durchführen. Der Signaturanalysator 1040 zeigt daher einen Fehler an, falls der in dem Signaturanalysator 1040 gespeicherte Zählerstand nicht der richtigen Anzahl an Signalübergängen entspricht. Die richtige Zahl an Übergängen kann ermittelt werden, indem der Testschaltkreis 1000 (10) für die ausgewählte Anzahl an Taktperioden simuliert wird.
  • Verwendung eines siebzehn-Bit-LFSRs stellt sicher, dass sich das von dem Signalgenerator 1040 erzeugte Muster nicht bald wiederholen wird. Ebenso sind LFSRs, wie oben erwähnt, nützliche Zähler, weil sie relativ schnell sind und relativ geringen Overhead erfordern. In einer Ausführungsform sind die Flip-Flops 16011617 Ausgabe-Flip-Flops in den IOBs eines zu testenden FPGAs. Falls notwendig, können die Flip-Flops an nicht-gebondeten Orten angebracht werden, so dass Schaltsignale nicht externe Pins beeinträchtigen.
  • 17 zeigt, wie der Testschaltkreis 1000 von 10 skaliert werden kann, um zusätzliche Betriebsmittel auf einem gegebenen FPGA zu testen. Diese Skalierung wird erreicht, indem ein Bereich des Testschaltkreises 1000 – mit 1700 in 17 bezeichnet – so viele Male wie erforderlich dupliziert wird. Der Bereich 1700 beinhaltet die Zähler 1020A und 1020B sowie LFSRs 1030A und 1030B. Eine Instanz des Bereiches 1000 beschaltet den MSB-Vergleicher 1050A; die verbleibenden ein oder mehreren Bereiche 1000 verwenden einen geringfügig unterschiedlichen MSB-Vergleicher 1050B, welcher unten in Verbindung mit 11 beschrieben ist.
  • Jede Instanz von Bereich 1700 ist in Reihe angeordnet, so dass der mit jeder nachgeordneten Instanz verbundene MSB-Vergleicher jede Leitung MSB_A und MSB_B dieser Instanz mit MSB_B von der vorangegangenen Instanz verlgleicht. In dem dargestellten Beispiel vergleicht MSB-Vergleicher 1050B die Signale der Leitungen MSB_A und MSB_B der zweiten Instanz – jeweils mit MSB_A' und MSB_B' bezeichnet – miteinander und mit MSB_B von der ersten Instanz. Jede Mißübereinstimmung zwischen oder innerhalb der Instanzen resultiert in eine Fehleranzeige (eine logische Null) auf Fehlerpin 1070. Übrigens ist lediglich ein Signaturanalysator 1040 erforderlich, weil Vergleicherschaltkreise 1050A und 1050B sicherstellen, dass die Ausgaben von jedem RAM-LFSR einander entsprechen.
  • 18 beschreibt ausführlich den MSB-Vergleicher 1050B, der zuerst in 10 eingeführt wurde. Der MSB-Vergleicher 1050B beinhaltet eine Sammlung von Gattern und ein Flip-Flop 1800, das auf eine logische Eins voreingestellt ist. Der MSB-Vergleicher 1050B vergleicht jede Leitung MSB_A' und MSB_B' dieser Instanz mit MSB_B der vorangegangenen Instanz. Jede Fehlübereinstimmung zwischen oder innerhalb von Instanzen resultiert in einer Fehleranzeige (logische Null) auf der Fehlerleitung /ERR', die sich von dem MSB-Vergleicher erstreckt. Jeder MSB Vergleicher 1050B erhält auch das Fehlersignal von einem vorangehenden MSB-Vergleicher auf der Leitung /ERR. Auf diese Weise schreiten von vorgeordneten Vergleichern gemeldete Fehler durch den Testschaltkreis voran, um schließlich an einem externem Pin gemeldet zu werden.
  • 19 stellt schematisch einen Testschaltkreis 1900 dar, der N kleinere Testschaltkreise 1905(1) bis 1905(N) beinhaltet, welcher jeder einen Schaltkreisbereich 1000 sowie einen zugeordneten MSB-Vergleicher umfasst (siehe 10). Wenn der Testschaltkreis 1900 in Virtex(TM)-FPGAs instanziiert ist, besetzt jeder kleinere Testschaltkreis 1905(1–N) vier CLBs. Jedes Mitglied der Virtex(TM)-Familie beinhaltet ein Feld von CLBs mit einer geraden Anzahl von Reihen R und einer geraden Anzahl von Spalten C. In einer Ausführungsform erstreckt sich der Testschaltkreis 1900, so dass er zwei Spalten von einem Virtex(TM)-FPGA unter Verwendung von R/2 Instanzen füllt. Die kleineren Testschaltkreise 1905(1)1905(N) werden gesamtheitlich als "Spalten"-Instanz 1910 bezeichnet.
  • 20 stellt schematisch einen Testschaltkreis 2000 dar, der M Spalteninstanzen 1910(1)1910(M) verwendet, um jede Reihe und Spalte eines Virtex(TM)-FPGA zu befüllen. Wie oben diskutiert, beinhaltet jedes Mitglied der Virtex(TM)- Familie eine gerade Anzahl C von Spalten und jede Spalteninstanz 1910 belegt zwei Spalten. Auf diese Weise können C/2 Spalteninstanzen verwendet werden, um einen kompletten Virtex(TM)-FPGA zu befüllen.
  • Der Testschaltkreis 2000 beinhaltet eine Anzahl von Schaltkreiselementen, die gemeinsam mit Testschaltkreisen 1000 und 1900 von jeweils 10 und 19 sind, wobei gleichnumerierte Elemente gleich sind. Der Testschaltkreis 2000 beinhaltet zusätzlich eine Schaltungstechnik, die durch jede Spalteninstanz sequenziell voranschreitet und einen Fehler anzeigt, falls eine Spalteninstanz ein Fehlersignal auf jeweiligen Fehlerleitungen /ERR(1)–/ERR(M) erzeugt.
  • Die zusätzliche gemeinsame Schaltungstechnik beinhaltet einen Zähler 2010, eine Spalten-Ablaufsteuerung 2015, ein M-Eingangs-ODER-Gatter 2020, ein M-Eingangs-UND-Gatter 2025, dem eine Sammlung von M Einsenfängern (ones catchers) 2027 vorangeht, ein M-Eingangs-UND-Gatter 2030, das von einem Einsen-Fänger 2032 gefolgt ist sowie Ausgabe-Pins 2035 und 2040. Jeder Einsen-Fänger in der Sammlung 2027 ist identisch zu dem Einsen-Fänger 2032. Die Spaltenablaufsteuerung 2015 kann ein herkömmliches Eins-Heiss (one-hot)-Register sein, das einen einzelnen mit jeder Spalteninstanz 1910(1) bis 1910(M) über entsprechende Einsen von Leitungen 2045 verbundenen Speicherort aufweist. Der Zähler 2010 zählt bis zu einer Zahl von Taktzyklen hoch die ausreichend ist, eine Spalteninstanz zu testen, bevor die Spaltenablaufsteuerung 2015 getaktet wird. Die Ablaufsteuerung 2015 überträgt eine einzelne logische Eins von einem Register zu dem nächsten, und schaltet auf diese Weise abwechselnd jede Spalteninstanz frei. Sobald jede Spalteninstanz getestet wurde, beendet die Spaltenablaufsteuerung 2015 das Zählen und sendet eine logische Eins auf der Leitung DONE an einen externen PIN 2035.
  • In einer auf einem Virtex(TM)-FPGA instanziierten Ausführungsform ist jedes Element der gemeinsamen Schaltungstechnik unter Verwendung von IOB-Betriebsmitteln implementiert. Dies gestattet es den CLBs vorteilhaft befüllt zu werden, wobei Sammlungen von identischen Schaltkreisen verwendet werden. In einer anderen Ausführungsform ist die gemeinsame Schaltungstechnik unter Verwendung von Betriebsmitteln außerhalb des FPGAs implementiert. Eine weitere Ausführungsform verzichtet auf den Zähler 2010 und die Spaltenablaufsteuerung 2015 und vertraut statt dessen auf eine externe Steuerung, um die äquivalente Funktionalität bereitzustellen. Einsen-Fänger 2032 und identische Einsen-Fänger 2027 fangen Fehlersignale und halten sie auf die externen Pins 2040 und 1070.
  • 21 ist ein schematisches Diagramm von einer "Scheibe" ("slice") 2100, welches eine von zwei identischen Scheiben darstellt, die einen beispielhaften CLB aus der Virtex(TM)-Familie von von Xilinx, Inc. erhältlichen Bauelementen bildet. Alle Anschlüsse zu und von der Scheibe 2100 sind mit horizontalen oder vertikalen Verbindungsleitungen (nicht gezeigt) verbunden, durch welche sie programmierbar mit verschiedenen anderen Komponenten in dem FPGA verbunden werden können.
  • Die Scheibe 2100 beinhaltet zwei 4-Eingangs-LUTs 2105A und 2105B. Die LUTs 2105A und 2105B sind beide in der Lage, jede beliebig definierte Bool'sche Funktion von bis zu vier Eingängen zu implementieren. Zusätzlich kann jedes der LUTs 2105A und 2105B ein 16 × 1-Bit-synchrones RAM bereitstellen. Weiterhin können die zwei LUTs kombiniert werden, so dass sie ein 16 × 2-Bit oder 32 × 1-Bit synchrones RAM erzeugen, oder ein 16 × 1-Bit-Dual-Portsynchrones RAM.
  • Die Scheibe 2100 beinhaltet auch ein Paar von sequenziellen Speicherelementen 2110A und 2110B, die entweder als Kantengetriggerte D-Typ-Flip-Flops oder als Niveau-empfindliche Signalspeicher konfiguriert sein können. Die D-Eingaben können entweder durch LUTs 2105A oder 2105B oder direkt von den Eingangs-Anschlüssen unter Umgehung der LUTs 2105A und 2105B getrieben werden. Jedes Speicherelement beinhaltet einen Initialisierungsanschluss INIT, einen Umkehr-Initialisierungsanschluss R, einen Freigabe-Takt-Anschluss EC sowie einen Taktanschluss, der herkömmlich unter Verwendung des Symbols ">" bezeichnet wird. Der INIT-Anschluss zwingt das zugeordnete Speicherlement in einen während der Konfiguration spezifizierten Initialisations-Zustand; der Umkehr-Initialisierungsanschluss R zwingt das Speicherlement in den entgegengesetzten Zustand wie der INIT-Anschluss. Die Anschlüsse INIT und R können so konfiguriert sein, dass sie synchron oder asynchron sind und der Sinn von jedem Steuereingang kann unabhängig umgekehrt werden.
  • Die Konfigurationsspeicherzellen definieren die Funktionen der verschiedenen konfigurierbaren Elemente der Scheibe 2100. Ein beispielhafter zwei-Eingangs-Multiplexer 2125 beinhaltet ein Paar von MOS-Transistoren, deren Gate-Anschlüsse mit den entsprechenden Konfigurationsspeicherzellen 2130 verbunden sind.
  • Andere Konfigurationsspeicherzellen, die verwendet werden, um die Funktionen der verbliebenen programmierbaren Elemente von Scheibe 2100 zu definieren, sind zur Kürze weggelassen. Die Verwendung der Konfigurationsspeicherzellen, um die Funktion von programmierbaren Logikbauelementen zu definieren, ist bekannt.
  • Eine detaillierte Diskussion der Scheibe 2100 ist nicht notwendig für ein Verständnis der vorliegenden Erfindung und ist daher zur Kürze weggelassen. Für eine ausführlichere Behandlung der Funktionsweise von vielen Komponenten innerhalb der Scheibe 2100 siehe die mitanhängige U.S.-Patentanmeldung Nr. 08/786,818 mit dem Titel "Configurable Logic Block with AND Gate for Efficient Multiplication in FPGAs" ("Konfigurierbare Logikblöcke mit UND-Gatter für effiziente Multiplikation in FPGAs") von Chapmann et al., U.S.-Patent Nr. 5,889,413 mit dem Titel "Lookup Tables Which Double as Shift Registers" ("Nachschlagetabellen, welche wie Schieberegister verdoppeln") von Bauer sowie U.S. Patent Nr. 5,914,616 mit dem Titel "FPGA Repeatable Interconnect Structure with Hierarchical Interconnect Lines" ("FPGA-Wiederholbare Verbindungsstrukturen mit hierarchischen Verbindungslinien") von Steven P. Young et al.
  • 22A22D stellen vier FPGA-Konfigurationen zum Instanziieren von Testschaltkreisen 2000 von 20 auf einen beispielhaften FPGA 2200 dar. Zur Einfachheit beinhaltet FPGA 2200 ein acht mal zwölf Feld von CLBs 2110 von denen jedes CLB zwei Scheiben 2100 enthält. Virtex(TM) FPGAs sind größer als FPGAs 2200, wobei das kleinste Virtex(TM)-FPGA ein sechzehn mal vierundzwanzig Feld von CLBs aufweist.
  • Wenn der Testschaltkreis 2000 auf einem Virtex(TM)-FPGA instanziiert ist, belegt jeder kleinere Testschaltkreis 1905(1–N) – ausführlich beschrieben in 19 – vier CLBs, wobei er lediglich eine einzelne LUT für alle vier CLBs unbenutzt läßt. Spalten von Testschaltkreisen 1905(1–N) sind miteiander verbunden, so dass sie Spalteninstanzen 1910(1–M) bilden, ebenso in 19 ausführlich dargestellt. Ein beispielhafter Testschaltkreis 1905(1) und eine beispielhafte Spalteninstanz 1910(3) sind in 22A gekennzeichnet. Die unbenutzten LUTs von den Testschaltkreisen können dann so konfiguriert werden, dass sie andere Schaltkreise implementieren, falls gewünscht, wie zum Beispiel Taktgenerator 1010, Taktpulsgenerator 2210, XOR-Gatter 920, ODER-Gatter 2020, UND-Gatter 2025 sowie UND-Gatter 2030.
  • Die vier Konfigurationen von 22A22D stellen zusammen eine 100-Testabdeckung von allen CLB-Flip-Flops und LUT-RAM bereit. Jedoch wird eine Befüllung eines FPGAs mit diesen Testschaltkreisen nicht die Myriaden potentieller Leitweglenkungspfade zwischen Registern testen, welche herkömmlich als "Registerübertragungspfade" bezeichnet werden. 23 (Stand der Technik) stellt ein Paar von sequentiellen Speicherelementen 2305 und 2310 dar, die über einen beispielhaften Registerübertragungspfad 2315 verbunden sind. Der Übertragungspfad 2615 beinhaltet Leiweglenkungsbetriebsmittel und vielleicht kombinatorische und/oder sequentielle Logik. Glücklicherweise verifiziert ein Verifizieren der korrekten Funktion der verschiedenen Speicherelemente auch die Funktion der zum Verbinden dieser Elemente verwendeten Registerübertragungspfade. Die vorliegende Erfindung kann daher erweitert werden, um Leitweglenkungsbetriebsmittel zu testen.
  • Testen von Leitweglenkungsbetriebsmitteln in Übereinstimmung mit der vorliegenden Erfindung ist ein iterativer Prozess. Die oben beschriebenen Testschaltkreise können eine Anzahl von Malen durchlaufen werden, wobei bei jedem Mal eine andere Sammlung von Verbindungsbetriebsmitteln verwendet wird. Dem Fachmann ist der Prozess, Entwürfe einer Verkehrsumlenkung zu unterziehen, um verschiedene Leitweglenkungsbetriebsmittel in einem Aufwand für ein Testen dieser Betriebsmittel zu nutzen, bekannt.
  • Virtex(TM)-FPGAs sind vollständig konform mit IEEE Standard 1149.1 Test Access Port and Boundary-Scan Architecture, gewöhnlich als "JTAG standard" oder einfach als "JTAG" zitiert. Unter Verwendung von JTAG können FPGA-Betriebsmittel feldgetestet werden, indem ein serieller Stimulusvektor zum Programmieren des FPGAs importiert wird, um die oben beschriebene Testschaltungstechnik zu beinhalten. Dann kann, wie oben beschrieben, die Testschaltungstechnik bei Geschindigkeit betrieben werden, um zu ermitteln, ob die durch den Testschaltkreis belegten Betriebsmittel korrekt bei Geschwindigkeit funktionieren.
  • Während die vorliegende Erfindung in Verbindung mit spezifischen Ausführungsformen beschrieben wurden, werden Variationen von diesen Ausführungsformen dem durchschnittlichen Fachmann offensichtlich sein. Beispielsweise beschreibt der vorangegangene Test nur einige wenige Wege, um prgrammierbare Betriebsmittel und in programmierbaren Betriebsmitteln instanziierte Schaltungen zu testen; viele andere Testverfahren können ebenfalls verwendet werden. Der Fachmann in dem Testen von PLDs kann viele Standardtests für einen Gebrauch mit der Erfindung anpassen. Daher sollte der Bereich der angefügten Ansprüche nicht auf die vorangegangene Beschreibung begrenzt sein.

Claims (13)

  1. Verfahren, umfassend Konfigurationsspeichertesten (109) oder Umfassendtesten (111) oder beides eines PLD eines Typs auf Defekte, wobei das Verfahren charakterisiert ist durch: a. Auswählen des PLD des Typs als Kandidat (113), wenn das Konfigurationsspeichertesten (109) anzeigt, dass weniger als eine erste vorbestimmte Zahl und mehr als eine zweite vorbestimmte Zahl an Defekten vorliegt, oder wenn der Umfassendtest (111) für das PLD des Typs fehlschlägt; b. Erzeugen eines kundenspezifischen Designs für Instanziierung auf einem PLD; c. Empfangen einer Ausformung des kundenspezifischen Designs (120); d. Testen des Kandidaten, um zu ermitteln, ob der Kandidat mit dem kundenspezifischen Design funktioniert (121); und e. Akzeptieren des Kandidaten (125), wenn der Kandidat das Testen in Schritt d besteht.
  2. Verfahren nach Anspruch 1, wobei das kundenspezifische Design eine Sammlung von Netzen, die auf dem Kandidaten durch die Ausformung des kundenspezifischen Designs (305) definiert sind, erfordert, und worin das Testen des Kandidaten ein Validieren der Sammlung von Netzen umfasst.
  3. Verfahren nach Anspruch 2, wobei die Netze ohne Instanziierung des kundenspezifischen Designs auf dem PLD validiert werden.
  4. Verfahren nach Anspruch 1, wobei der PLD eine Sammlung von Logikblöcken umfasst, wobei das kundenspezifische Design eine Untermenge der Sammlung von Logikblöcken erfordert und wobei das Testen des Kandidaten ein Testen der Untermenge der Sammlung von Logikblöcken umfasst (330).
  5. Verfahren nach Anspruch 4, wobei die Sammlung von Logikblöcken ohne Instanziierung des kundenspezifischen Designs auf dem PLD getestet wird.
  6. Verfahren nach Anspruch 1, wobei der Typ eine externe Anschlusskonfiguration umfasst.
  7. Verfahren nach Anspruch 1, worin der Kandidat programmierbare Logikblöcke und programmierbare Beschaltungen umfasst, und wobei Logikelemente des Designs durch Verwendung einer Untermenge der Logikblöcke instanziiert werden und Leitweglenkungsbereiche des Designs als eine Sammlung von in der Beschaltung definierten Sammlung von Netzen instanziiert werden.
  8. Verfahren nach Anspruch 7, wobei das Testen des Kandidaten eine Konfigurierung einer Mehrzahl der Untermenge von Logikblöcken umfasst, welche zur Instanziierung des Designs verwendet werden, um Testsignal-Generatoren bereitzustellen (405).
  9. Verfahren nach Anspruch 7, wobei das Testen des Kandidaten die Konfigurierung einer Mehrzahl der Untermenge von Logikblöcken umfasst, welche zur Instanziierung des Designs verwendet werden, um Testsignal-Beobachter bereitzustellen (410, 415).
  10. Verfahren nach Anspruch 7, wobei die Logikblöcke Eingabe-/Ausgabe-Blöcke umfassen.
  11. Verfahren nach Anspruch 7, wobei das Testen des Kandidaten Testen der Netze ohne Instanziierung der Logikelemente des Designs in der Untermenge von Logikblöcken umfasst.
  12. Verfahren nach Anspruch 1, weiterhin umfassend Empfangen einer Ausformung eines zweiten kundenspezifischen Designs (131) und Testen des Kandidaten, um zu bestimmen, ob der Kandidat mit dem zweiten kundenspezifischen Design funktioniert (121).
  13. Verfahren nach Anspruch 1, wobei Testen des Kandidaten Instanziierung von einem oder mehr Testkreisen auf dem PLD umfasst, wobei die Testkreise von dem kundenspezifischen Design geforderte PLD-Betriebsmittel und etwas Testkreis-Verwaltung verwenden, wobei die Testkreis-Verwaltung programmierbare Betriebsmittel, welche nicht von dem kundenspezifischen Design gefordert sind, umfasst.
DE60202152T 2001-08-07 2002-07-26 Anwendungsspezifische Testmethoden für programmierbare Logikbauelemente Expired - Lifetime DE60202152T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US924365 2001-08-07
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
US104324 2002-03-22
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
DE60202152D1 DE60202152D1 (de) 2005-01-05
DE60202152T2 true DE60202152T2 (de) 2005-12-01

Family

ID=26801408

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60202152T Expired - Lifetime DE60202152T2 (de) 2001-08-07 2002-07-26 Anwendungsspezifische Testmethoden für programmierbare Logikbauelemente

Country Status (5)

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

Families Citing this family (52)

* 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
US7310757B2 (en) * 2001-10-11 2007-12-18 Altera Corporation Error detection on programmable logic resources
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
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
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
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
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
US7853916B1 (en) 2007-10-11 2010-12-14 Xilinx, Inc. Methods of using one of a plurality of configuration bitstreams for an integrated circuit
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
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
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
US9222981B2 (en) 2012-12-28 2015-12-29 Nvidia Corporation Global low power capture scheme for cores
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
US10963001B1 (en) * 2017-04-18 2021-03-30 Amazon Technologies, Inc. Client configurable hardware logic and corresponding hardware clock metadata
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
EP3837689A1 (de) * 2018-08-08 2021-06-23 Numascale AS Modul zur prüfung und analyse einer digitalen schaltung, system und verfahren dafür
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可行性测试路径的方法、系统、介质及设备
US20250007710A1 (en) * 2023-06-30 2025-01-02 University Of Florida Research Foundation, Incorporated System and method for secure cloud fpga deployment

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
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
US6233205B1 (en) 1996-09-17 2001-05-15 Xilinx, Inc. Built-in self test method for measuring clock to out delays
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
US6459095B1 (en) 1999-03-29 2002-10-01 Hewlett-Packard Company Chemically synthesized and assembled electronics devices
US6256767B1 (en) 1999-03-29 2001-07-03 Hewlett-Packard Company Demultiplexer for a molecular wire crossbar network (MWCN DEMUX)
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
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
US20040216081A1 (en) 2004-10-28
EP1415168B1 (de) 2004-12-01
WO2003014750A3 (en) 2003-08-21
JP2004538628A (ja) 2004-12-24
US6891395B2 (en) 2005-05-10
WO2003014750A2 (en) 2003-02-20
US7007250B1 (en) 2006-02-28
JP4317013B2 (ja) 2009-08-19
DE60202152D1 (de) 2005-01-05
EP1415168A2 (de) 2004-05-06

Similar Documents

Publication Publication Date Title
DE60202152T2 (de) Anwendungsspezifische Testmethoden für programmierbare Logikbauelemente
US6817006B1 (en) Application-specific testing methods for programmable logic devices
US5991907A (en) Method for testing field programmable gate arrays
US6539508B1 (en) Methods and circuits for testing programmable logic
US6470485B1 (en) Scalable and parallel processing methods and structures for testing configurable interconnect network in FPGA device
DE60104854T2 (de) System und Verfahren zum Testen integrierter Schaltungen
DE69332391T2 (de) Struktur und Methode zur Versorgung einer wieder konfigurierbaren Emulation-Schaltung
DE3689228T2 (de) Verfahren zur Modellierung und zur Fehlersimulation von komplementären Metalloxidhalbleiterschaltungen.
US5369648A (en) Built-in self-test circuit
US7412343B2 (en) Methods for delay-fault testing in field-programmable gate arrays
DE69031362T2 (de) Verzögerungsfehler-Testvorrichtung
US7475317B2 (en) Automatic test pattern generation
DE60205118T2 (de) Integriertes prüfen eines serialisierers/deserialisierers in fpga
DE60215933T2 (de) Verfahren und vorrichtung für fehlertolerante und flexible test-vektoren-erzeugung
DE60309931T2 (de) Verbindung mehrerer testzugriffsportsteuerungsvorrichtungen durch ein einzeltestzugriffsport
DE69018563T2 (de) Speicherselbsttest.
US7219314B1 (en) Application-specific methods for testing molectronic or nanoscale devices
EP2135104B1 (de) Prüfbare integrierte schaltung und verfahren zur generierung von testdaten
US7111214B1 (en) Circuits and methods for testing programmable logic devices using lookup tables and carry chains
US6615392B1 (en) Hierarchical design and test method and system, program product embodying the method and integrated circuit produced thereby
DE69433542T2 (de) Prüfung, sequenziellogischer Schaltung auf grund einer kombinatorischen Logikschaltungsveränderung
DE69526162T2 (de) Integrierte Halbleiterschaltung mit prüfbaren Blöcken
Wu PEST: A Tool for Implementing Pseudo‐Exhaustive Self‐Test
Huang et al. A XOR-tree based technique for constant testability of configurable FPGAs
US6920597B2 (en) Uniform testing of tristate nets in logic BIST

Legal Events

Date Code Title Description
8364 No opposition during term of opposition