-
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 8–22 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:
-
-
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 1100–1103 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 1100–1103,
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 1200–1202 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 1200–1202 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 1200–1202 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 1601–1617 (Flip-Flops 1602–1613 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 1601–1617 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.
-
22A–22D 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 22A–22D 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.