DE19926663A1 - Verfahren zum Testen eines FPGA - Google Patents
Verfahren zum Testen eines FPGAInfo
- Publication number
- DE19926663A1 DE19926663A1 DE19926663A DE19926663A DE19926663A1 DE 19926663 A1 DE19926663 A1 DE 19926663A1 DE 19926663 A DE19926663 A DE 19926663A DE 19926663 A DE19926663 A DE 19926663A DE 19926663 A1 DE19926663 A1 DE 19926663A1
- Authority
- DE
- Germany
- Prior art keywords
- programmed
- memory
- rows
- macro
- memory matrix
- 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.)
- Withdrawn
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 49
- 230000015654 memory Effects 0.000 claims abstract description 102
- 239000011159 matrix material Substances 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims description 12
- 230000008672 reprogramming Effects 0.000 claims description 2
- 238000010998 test method Methods 0.000 abstract 1
- 230000000694 effects Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318516—Test of programmable logic devices [PLDs]
- G01R31/318519—Test of field programmable gate arrays [FPGA]
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Tests Of Electronic Circuits (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
Verfahren zum Testen eines FPGA mit einer Vielzahl programmierbarer Zwischenverbindungen, die jeweils eine als Teil einer aus Zeilen und Spalten bestehenden Speichermatrix angeordnete nicht flüchtige Speicherzelle (10) umfassen, die mit einem Schalttransistor (30) verbunden ist, der mit einem oder mehreren Anschlüssen einer Vielzahl von in Makrozellen (A, B), die eine Matrix aus Zeilen und Spalten bilden, angeordneten Logikelementen (33, 34) und Zwischenverbindungen verbunden ist, wobei Testkonfigurationen ausgewählt, in den FPGA einprogrammiert, getestet und gelöscht werden, wobei Testkonfigurationen ausgewählt werden, die eine größtmögliche identische Programmierung der Makrozellen (A, B) ermöglichen und daß eine Vielzahl der Zeilen der Speichermatrix, die den Makrozellen (A, B) einer Testkonfiguration entsprechen, gleichzeitig programmiert und gleichzeitig gelöscht wird.
Description
Die vorliegende Erfindung betrifft Verfahren zum Testen eines FPGA nach
den Oberbegriffen der Ansprüche 1 und 7.
Ein FPGA (Field Progammable Gate Array) ist eine Matrix aus Logik
elementen und Verbindungsleitungen mit vielen tausenden oder hundert
tausenden programmierbarer Zwischenverbindungen, beispielsweise in Form von
Schaltern, die eine Konfiguration des FPGA in einen integrierten Schaltkreis mit
definierten Funktionen ermöglichen. Jede programmierbare Zwischenverbindung
kann zwei Knotenpunkte in dem integrierten Schaltkreis miteinander verbinden
oder voneinander trennen, um so interne Verbindungsleitungen oder eine oder
mehrere Funktionen eines Logikelements zu konfigurieren.
Aus der US 5 633 518 ist ein reprogrammierbarer FPGA bekannt, bei
welchem jede programmierbare Zwischenverbindung durch eine
reprogrammierbare Speicherzelle gebildet wird, die mit einem Schalttransistor
verbunden ist, dessen Source- und Drain-Anschlüsse mit den beiden Knoten
punkten, die Teil des benutzerseitig im FPGA konfigurierbaren integrierten
Schaltkreises sind, verbunden sind. Der konfigurierbare integrierte Schaltkreis
umfaßt eine Matrix von Logikelementen und Zwischenverbindungen, die
entsprechend dem Zustand korrespondierender Speicherzellen und somit
entsprechend den mit diesen verbundenen Schalttransistoren geschaltet sind.
Flash-Speicher gehören zur Gruppe der nicht flüchtigen Speicher. In einem
auf Flash-Speicher basierenden FPGA ist die Speicherzelle jeder programmier
baren Zwischenverbindung Teil einer homogenen 2-dimensionalen Speicher
matrix, mittels welcher elektrische Ladung auf Floating Gates in den
Speicherzellen programmiert oder gelöscht wird. Das Floating Gate einer
Speicherzelle wird hierbei von einem zugeordneten Schalttransistor mitbenutzt, so
daß dieser ein- oder ausgeschaltet ist. Somit sind die Source- und Drain-
Anschlüsse jedes Schalttransistors angeschlossen und jeder Schalttransistor ist
programmiert, um eine interne Verbindung entweder herzustellen oder zu
unterbrechen oder um eine oder mehrere Funktionen eines Logikelements zu
konfigurieren.
Auf nicht flüchtigen und insbesondere auf Flash-Speichern basierende
FPGAs umfassen zwei sich überlagernde Matrizen. Die erste Matrix ist die 2-
dimensionale homogene Speichermatrix aus reprogrammierbaren Speicherzellen.
Die zweite Matrix ist eine 2-dimensionale heterogene Makrozellenmatrix aus
Logikelementen und Zwischenverbindungen, welche in "Makrozellen" genannten
Gruppen organisiert sind, und dient der Implementation des
anwenderkonfigurierten integrierten Schaltkreises mit definierten Funktionen. Im
FPGA gelangen zweckmäßigerweise Makrozellen verschiedener Typen mit jeweils
unterschiedlichen festverdrahteten Schaltkreisen zum Einsatz. Jeder Makrozellen
typ umfaßt eine Anzahl programmierbarer Zwischenverbindungen und ist mit einer
bestimmten Anzahl von Zeilen und Spalten der Speichermatrix verbunden. Der
Zustand, der einer Makrozelle zugeordneten Speicherzellen schaltet den Zustand
der Schalttransistoren der Makrozelle, um die Funktion der Makrozelle zu steuern.
Eine Makrozelle kann logische Funktionen und/oder programmierbare Verbin
dungen, die Teil des Verbindungsnetzwerks des FPGA darstellen, enthalten.
Solche Makrozellen sind beispielsweise aus US 5 594 363 bekannt.
Die Makrozellen der Makrozellenmatrix sind in Makrozellenspalten und
Makrozellenzeilen angeordnet. Üblicherweise besteht eine Makrozellenzeile
ausschließlich aus Makrozellen mit der gleichen Anzahl von Zeilen der
zugeordneten Speichermatrix. Jede Makrozellenspalte besteht üblicherweise aus
Makrozellen mit der gleichen Anzahl von Spalten der zugeordneten
Speichermatrix.
Eine auf Flash-Speicher basierende Speichermatrix wird üblicherweise
programmiert, indem zu Beginn alle Speicherzellen auf einmal gelöscht werden,
woran sich eine Reihe von Programmierschritten anschließt, die ein Datenwort
gleichzeitig an alle Spalten und an eine ausgewählte Zeile der Speichermatrix
anlegen. Die gesamte Speichermatrix wird üblicherweise mit einem Program
mierschritt pro Zeile programmiert.
Der FPGA muß, wie bei integrierten Schaltkreisen üblich, nach seiner Her
stellung überprüft werden, um seine Funktionsfähigkeit festzustellen. Das Testen
von FPGAs, die auf nicht flüchtigen Speicherzellen (inklusive Flash-Speicher
zellen) basieren, ist jedoch mit Problemen behaftet. Der FPGA muß mehrmals mit
verschiedenen Testkonfigurationen programmiert werden, da in jeder
Testkonfiguration jeweils nur ein kleiner Prozentsatz der Schalttransistoren im
FPGA aktiviert wird. Nahezu jede Zwischenverbindung im konfigurierbaren
Abschnitt des FPGA muß jedoch mindestens einmal in einem der
Testkonfigurationen verwendet werden, um eine gute Fehlererkennungsrate zu
gewährleisten. Jede Testkonfiguration ist nach Programmieren zu überprüfen. Die
gesamte Testzeit für einen auf nichtflüchtigen Speicherzellen basierenden FPGA
ergibt sich aus der Zeit, die zum mehrfachen Löschen und Reprogrammieren des
FPGA benötigt wird, bis jeder Schalter einmal benutzt worden ist. Selbst in einem
auf Flash-Speicher basierenden FPGA, in welchem ein globales Löschen lediglich
einmal erfolgt, kann das vollständige Überprüfen eines Abschnitts mit den
bekannten Programmierverfahren mehrere Stunden dauern, da ein Lösch- und
Programmierzyklus üblicherweise einige Minuten in Anspruch nimmt. Die übliche
Testzeit für andere Arten integrierter Schaltkreise liegt im Gegensatz dazu bei
wenigen Sekunden.
Die lange Überprüfungszeit für einen einzigen FPGA stellt somit ein
ernsthaftes Problem dar. Der Hersteller steht vor der Wahl, einerseits ungetestete
oder allenfalls rudimentär getestete FPGAs mit fragwürdiger Zuverlässigkeit oder
andererseits vollständig getestete FPGAs zu entsprechend hohen Preisen zu
verkaufen. Beide Alternativen sind unakzeptabel.
Der Erfindung liegt die Aufgabe zugrunde, Verfahren zum Testen eines
FPGA nach den Oberbegriffen der Ansprüche 1 und 7 zu schaffen, mit deren Hilfe
die zum vollständigen Testen eines FPGA benötigte Zeit vermindert wird.
Diese Aufgabe wird entsprechend den kennzeichnenden Teilen der
Ansprüche 1 und 7 gelöst.
Weitere Ausgestaltungen der Erfindung sind der nachfolgenden Be
schreibung und den Unteransprüchen zu entnehmen.
Die Erfindung wird nachstehend anhand der in den beigefügten Figuren
dargestellten Ausführungsbeispiele näher erläutert.
Fig. 1 zeigt einen einer Makrozelle zugeordneten Abschnitt einer
Speichermatrix in einem auf Flash-Speicher basierenden FPGA.
Fig. 2 zeigt einen Speichertransistor in einer programmierbaren Zwischen
verbindung des FPGA aus Fig. 1.
Fig. 3 zeigt einen Schalttransistor in einer programmierbaren Zwischen
verbindung des FPGA aus Fig. 1.
Fig. 4 zeigt Logikelemente und Zwischenverbindungen der Makrozelle auf
Fig. 1.
Fig. 5 zeigt einen weiteren, einer anders ausgestalteten Makrozelle
zugeordneten Abschnitt der Speichermatrix des FPGA aus Fig. 1.
Fig. 6 zeigt die Zwischenverbindungen der Makrozelle, die dem Abschnitt
der Speichermatrix aus Fig. 5 entspricht.
Fig. 7 zeigt einen mit den Makrozellen aus Fig. 4 und Fig. 6 programmierten
FPGA.
Fig. 8 zeigt den den in Fig. 7 gezeigten Makrozellen entsprechenden
Abschnitt der Speichermatrix des FPGA.
Der Speichermatrixteil einer Makrozelle A, die in Fig. 1 durch eine
gestrichelte Linie dargestellt ist, umfaßt 6 Zeilen 0, 1, 2, 3, 4, 5 und 2 Spalten 0, von
Speicherzellen 10, die jeweils an den Kreuzungspunkten zwischen Zeilenleitungen
11 und Spaltenleitungen 12 angeordnet sind.
Wie in Fig. 2 gezeigt, wird die Speicherzelle 10 durch einen nichtflüchtigen
Speichertransistor 20 gebildet, der einen Source-Anschluß 21 und einen Drain-
Anschluß 22 umfaßt, die mit einer Spaltenleitung 12A bzw. 12B verbunden sind,
wobei die Spaltenleitungen 12A und 12B in Fig. 1 als eine Spaltenleitung 12
dargestellt ist. Der Speichertransistor 20 umfaßt ferner ein Floating Gate 23 und
einen Steueranschluß 24. Der Steueranschluß 24 ist mit einer der Zeilenleitungen
11 verbunden. Das Floating Gate 23 speichert Informationen in Form von
Ladungen, um zu bestimmen, ob der entsprechende, in Fig. 3 gezeigte
Schalttransistor 30, mit welchem der Speichertransistor 20 verbunden ist, ein-
oder ausgeschaltet ist.
Der Schalttransistor 30, der ein mit dem Floating Gate 23 des Speichertran
sistors 20 verbundenes Floating Gate 27 umfaßt, weist ferner einen Source-
Anschluß 26 und einen Drain-Anschluß 25 auf, die mit Vernetzungsleitungen 32
bzw. 31 verbunden sind. Der Schalttransistor 30 umfaßt zudem einen Steueran
schluß 28, der mit dem Steueranschluß 24 des Speichertransistors 20 verbunden
ist.
Die Vernetzungsleitungen 32 und 31 sind Teil der heterogenen benutzer
konfigurierbaren Matrix von in Makrozellen organisierten Logikelementen und Zwi
schenverbindungen. In Fig. 4 sind die Logikelemente der Makrozelle A gezeigt, die
ein D-Flip-Flop 33 und einen in CMOS-Logik implementierten Puffer 34 umfaßt.
Durch die Vernetzungsleitungen 31 und 32 werden horizontale bzw. vertikale
Verbindungen zur Verfügung gestellt. In den Figuren symbolisiert ein Punkt eine
Verbindung zu Vernetzungsleitungen, vgl. beispielsweise den Rücksetz-Anschluß
R des D-Flip-Flops 33, der mit einer der Vernetzungsleitungen 32 verbunden ist.
Jede der programmierbaren Zwischenverbindungen, die an den Schnittpunkten
zweier Vernetzungsleitungen 31 und 32 als Kreise dargestellt sind, ist zweck
mäßigerweise ein Schalttransistor 30 gemäß Fig. 3. Die beiden Ziffern neben den
Kreisen legen den Platz der dem Schalttransistor 30 zugeordneten Speicherzelle
10 (d. h. dem Speichertransistor 20) in der Speichermatrix fest. Hierbei entspricht
die erste Ziffer der Zeile und die zweite Ziffer der Spalte der Speicherzelle 10 in
der Speichermatrix der entsprechenden Makrozelle, vgl. Fig. 1.
Der in Fig. 5 dargestellte, einer Makrozelle B zugeordnete Abschnitt der
Speichermatrix umfaßt zwei Paare sich kreuzender Zeilenleitungen 11 und
Spaltenleitungen 12, wobei an den Schnittpunkten durch Kreise symbolisierte
angeschlossene Speicherzellen 10 angeordnet sind, vgl. Fig. 2.
Die Logikelemente und Verbindungen, die benutzerseitig für den in Fig. 5
gezeigten Abschnitt der Speichermatrix konfiguriert sind, sind Teil der in Fig. 6
gezeigten Makrozelle B, die 4 horizontale Vernetzungsleitungen 31 und zwei
vertikale Vernetzungsleitungen 32 aufweist. Die Makrozelle B umfaßt ferner 4
programmierbare Zwischenverbindungen, welche als Kreise 35 an Schnittpunkten
der Vernetzungsleitungen 31 und 32 dargestellt sind. Wie auch in Fig. 4 legen die
beiden Ziffern neben den Kreisen 35 die Position der dem Schalttransistor 30
zugeordneten Speicherzelle 10 in der Speichermatrix fest. Die erste Ziffer ist die
Zeilennummer und die zweite Ziffer die Spaltennummer in der Speichermatrix aus
Fig. 5.
Die in Fig. 7 gezeigte Matrix aus Logikelementen und Zwischenverbin
dungen umfaßt drei Spalten, die jeweils aus einer Reihe von Makrozellen B und
drei Reihen Makrozellen A bestehen. Die Matrix aus Makrozellen A, B wird mit
einer Testkonfiguration programmiert. Hierbei sind die ausgeschalteten
programmierbaren Zwischenverbindungen als Kreise 35 und die einschalteten
programmierbaren Zwischenverbindungen als angekreuzte Kreise 35A dargestellt.
Die entstehenden Testverbindungswege sind durch dicke schwarze Linien 36
dargestellt. Die Testkonfiguration benutzt die D-Flip-Flops 33 aller Makrozellen A
und verbindet sie diagonal zu einem Schieberegister, wobei die beiden aktivierten
Zwischenverbindungen in jeder der Makrozellen B eine von zwei Taktleitungen
und eine von zwei Rücksetz-Leitungen für die D-Flip-Flops 33 in den Makrozellen
A auswählen. Testsignale können durch die verschiedenen programmierten
Logikelemente, d. h. durch die D-Flip-Flops 33 und die Puffer 34, sowie durch die
Zwischenverbindungen, die die Testverbindungswege erzeugen, gesendet
werden.
Zum Konfigurieren der Makrozellen A und B gemäß Fig. 7 sind die
entsprechenden Speichertransistoren 20 der Schalttransistoren 30 in geeigneter
Weise zu programmieren.
Fig. 8 zeigt den Teil der Speichermatrix, der den konfigurierten Makrozellen
A, B der Fig. 7 entspricht. Hierbei werden diejenigen Speichertransistoren 20, die
so programmiert sind, daß die denen zugeordneten Schalttransistoren 30
eingeschaltet sind, als angekreuzte Kreise 10A dargestellt.
Im Gegensatz zu eine Testkonfiguration werden benutzerseitig konfigurierte
Schaltkreise in der Regel an fast jeder Makrozellenposition unterschiedlich
programmiert sein. Aus diesem Grund muß fast jede Zeile eines benutzerseitig
konfigurierten Schaltkreises unterschiedlich programmiert werden. Im Ergebnis
müssen alle Zeilen unabhängig voneinander programmiert werden.
Erfindungsgemäß werden Testkonfigurationen so ausgewählt, daß gleiche
Makrozellen soweit wie möglich identisch programmiert werden, wie es beispiels
weise durch die Testkonfigurationen der Fig. 7 und 8 illustriert ist. Jede Makrozelle
A und jede Makrozelle B wird identisch programmiert. Zum Testen wird der FPGA
mit den folgenden zeitsparenden Programmierschritten programmiert (und
gelöscht):
- a) gleichzeitiges Programmieren mehrerer Zeilen der Speichermatrix innerhalb einer Makrozellenzeile,
- b) Überspringen der Programmierung von Zeilen der Speichermatrix, die keine programmierten Speicherzellen umfassen,
- c) gleichzeitiges Programmieren von identischen oder fast identischen Makrozellenzeilen,
- d) gleichzeitiges Programmieren von vollständig verschiedenen Makrozellenzeilen, und
- e) wiederholtes Löschen und Reprogrammieren von Zeilen der Speichermatrix einer Testkonfiguration, um eine Variation der Testkonfiguration zu erhalten.
Diese Programmierschritte werden nachfolgend ausführlich beschrieben.
- a) Wenn der FPGA feinkörnig aufgebaut ist, d. h., wenn die in einer Makro
zelle enthaltenen Logikelemente elementar sind, wenn ferner die Anzahl verschie
dener Makrozellen innerhalb einer Makrozellenzeile gering ist und gleich aufge
baute Makrozellen identisch programmiert werden, dann sollten in jeder Makro
zellenzeile mehrere identisch programmierte Zeilen der Speichermatrix vorhanden
sein. Da jede Zeile der Speichermatrix innerhalb einer Makrozellenzeile wahr
scheinlich einer anderen Funktion des programmierten Schaltkreises entspricht,
sind die identisch programmierten Zeilen der Speichermatrix unregelmäßig
innerhalb der Makrozellenzeile angeordnet.
Erfindungsgemäß werden die identisch zu programmierenden Teile der Speichermatrix innerhalb einer Makrozellenzeile gleichzeitig programmiert. Beispielsweise werden die Zeilen 1 und 2 der Zeilenleitungen 11 jeder Makrozelle A in Fig. 8 identisch programmiert. Somit ist nur ein Programmierschritt notwendig, um beide Zeilen 1, 2 zu programmieren. Zu diesem Zweck ist eine Zeilenwählschaltung für die Speichermatrix vorgesehen, die zum Auswählen jeder Kombination von Zeilen der Speichermatrix innerhalb einer Makrozellenzeile geeignet ist. Solche Zeilenwählschaltungen sind bekannt. - b) Da der Prozentsatz programmierter Zwischenverbindungen in einem
FPGA gering ist, sollten in jeder Makrozelle stets Zeilen der Speichermatrix
ungenutzt bleiben. In solchen Zeilen ist keine der programmierbaren
Zwischenverbindungen programmiert. Erfindungsgemäß wird die Programmierung
aller ungenutzten Zeilen der Speichermatrix übersprungen. Beispielsweise haben
die drei Zeilen 0, 4 und 5 in den Makrozellen A der Fig. 8 keine eingeschalteten
Speicherzellen. Innerhalb einer Zeile aus Makrozellen A können deshalb drei
Programmierschritte übersprungen werden. Ferner muß auch Zeile 0 der
Speichermatrix in der Zeile von Makrozellen B nicht programmiert werden, da in
dieser Zeile keine programmierten Speicherzellen vorgesehen sind.
Erfindungsgemäß ist die Programmierabfolge, gemäß welcher Zeilen der Speichermatrix des FPGA programmiert werden, flexibel, um ein Überspringen von Zeilen zu ermöglichen. - c) In den meisten Testkonfigurationen werden identische und fast
identische Makrozellen in der Regel identisch programmiert. Erfindungsgemäß
werden nunmehr alle identisch zu programmierenden Makrozellenzeilen
gleichzeitig programmiert. Beispielsweise werden die drei Makrozellenzeilen aus
Makrozellen A in Fig. 8 identisch programmiert. Statt nun alle drei
Makrozellenzeilen nacheinander zu programmieren, werden sie gleichzeitig
programmiert.
Zweckmäßigerweise wird eine Zeilenwählschaltung von mehreren oder allen identischen Makrozellenzeilen gemeinsam genutzt. Dadurch wird die Anzahl der benötigten Zeilenwählschaltungen im FPGA und folglich der durch diese belegte Platz verringert. - d) Wenn der FPGA Makrozellenzeilen mit vollständig verschiedenen
Makrozellen umfaßt, dann werden diese Makrozellen in der Regel unterschiedlich
programmiert. Wenn jedoch sowohl die ausgewählte Testkonfiguration als auch
eine Makrozellenzeile mit verschiedenen Makrozellen ausreichend regelmäßig
sind, können für eine Makrozelle Zeilen der Speichermatrix vorgesehen sein, die
identisch mit anderen Zeilen der Speichermatrix für anders ausgestaltete
Makrozellen programmiert werden. Zwar sind in den verschieden ausgestalteten
Makrozellen weder die entsprechenden Schalttransistoren 30 notwendigerweise
an gleichen Positionen angeordnet, noch sind die entstehenden konfigurierten
Funktionen oder Zwischenverbindungen notwendigerweise gleich. Lediglich die
Zeilen der Speichermatrix werden zufällig identisch programmiert. So werden
beispielsweise Zeile 1 der Makrozellenzeile aus Makrozellen B und Zeile 3 der
Makrozellenzeile aus Makrozellen A in Fig. 8 identisch programmiert, obwohl die
Funktionen der Schalttransistoren 30, die den Zeilen der Speichermatrix der
beiden Makrozellen A, B entsprechen, verschieden sind.
Diese identisch programmierten Zeilen der Speichermatrix werden für die verschiedenen Makrozellen A, B gleichzeitig programmiert. In obigem Beispiel kann Zeile 1 der Makrozellenzeile aus Makrozellen B gleichzeitig mit Zeile 3 der Makrozellenzeile aus Makrozellen A programmiert werden. Für diesen Programmierschritt weist jede vollständig verschiedene Makrozellenzeile eine eigene Zeilenwählschaltung auf.
Im Ergebnis wird die Anzahl der Programmierschritte reduziert. Beispiels weise wurden bisher zur Programmierung der in Fig. 8 gezeigten Konfiguration zwanzig Programmierschritte benötigt, während hier lediglich zwei Programmier schritte erforderlich sind. Die Programmierschritte für beide Verfahren sind in der nachfolgenden Tabelle aufgeführt.
Die Adresse ist hierbei in der Form "Markozellenzeile"/"Zeile der Speichermatrix innerhalb der Makrozelle" angegeben, wobei die Werte binär sind. - e) Um die Testzeit weiter zu reduzieren, werden lediglich wenige Zeilen der Speichermatrix gelöscht und reprogrammiert. Für einige Tests ist es zweckmäßig, nur einen Teil der Testkonfiguration wiederholt (inkrementell) zu verändern. Durch Löschen und Reprogrammieren einer oder weniger Zeilen der Speichermatrix kann eine Variation der bisherigen Testkonfiguration erzeugt werden. Ein einziger Lösch- und Programmierschritt kann ausreichen, um eine zusätzliche Zwischenverbindung in jeder Makrozelle zu prüfen.
In den Fig. 7 und 8 müssen die beiden nicht aktivierten Zwischenver
bindungen 10 der Makrozellen B mit einer anderen Testkonfiguration getestet
werden. Statt nun den gesamten FPGA zu löschen und eine neue
Testkonfiguration zu programmieren (wozu, wie oben beschrieben, zwei
Programmierschritte erforderlich sind), wird erfindungsgemäß Zeile 0 der
Speichermatrix in den Makrozellen B gelöscht und gleichzeitig, d. h. im selben
Programmierschritt, werden die beiden Zwischenverbindungen 10 in Zeile 1 der
Speichermatrix der Makrozellen B programmiert. Die Testkonfiguration in den
Makrozellen A bleibt hierbei unverändert, wobei jedoch andere Taktleitungen und
andere Rücksetz-Leitungen für die die D-Flip-Flops 33 in den Makrozellen A
aktiviert werden.
- 1.
Weitere Zeiteinsparungen beim Testen eines FPGA sind erfindungsgemäß
durch Variation der Programmier- und Lösch-Spannungen und gegebenenfalls
-Zeiten erreichbar. Integrierte Schaltkreise einschließlich auf nicht flüchtigen
Speichern basierende FPGA arbeiten mit einem bestimmten
Versorgungsspannungsbereich. Üblicherweise erstreckt sich dieser Bereich über 5
Volt und zweckmäßigerweise zwischen Masse (0 Volt) und +5 Volt. Bei auf Flash
speichern basierenden FPGA benötigen die ausgeschalteten Schalttransistoren
30 eine negative Spannung am Floating Gate 27 (wobei von NMOS
Schalttransistoren 30 ausgegangen wird). Um zu gewährleisten, daß die
Schalttransistoren 30 eingeschaltet werden, ist am Floating Gate 27 eine
Spannung notwendig, die über der Versorgungsspannung liegt.
Um eine fehlerfreie Funktion jeder programmierbaren Zwischenverbindung
eines FPGA während der zu erwartenden Lebensdauer seines programmierten
Zustands zu gewährleisten, gibt der letztliche Programmierbereich die minimale
Spannung am Floating Gate 27 eines eingeschalteten Schalttransistors 30 und die
minimale negative Spannung am Floating Gate 27 eines ausgeschalteten
Schalttransistors 30 vor. Zu Beginn müssen die Floating Gates 27 der
Schalttransistoren 30 mittels der zugeordneten Speichertransistoren 20 auf einen
höheren anfänglichen Programmierbereich programmiert werden, um den
letztlichen Programmierbereich unter Berücksichtigung von Ladungs- und
Speicher-Störeffekten zu gewährleisten.
Ein Spielraum für den Speicher-Störeffekt ist notwendig, um einen durch
Leckströme bedingten Spannungsverlust an den Floating Gates 27 während der
zu erwartenden Lebensdauer des programmierten Zustands zu kompensieren.
Beispielsweise könnte bei in 5-Volt-Technik arbeitenden FPGA zum Einschalten
der Schalttransistoren 30 eine Floating Gate Spannung notwendig sein, die etwa
1,5 Volt über der Versorgungsspannung in Höhe von +5 Volt liegt, um eine
fehlerfreie Funktion des FPGA zu gewährleisten. Dann könnte die anfänglich
programmierte Spannung am Floating Gate 27 etwa +7 Volt betragen, wenn die
Summe der Spielräume für den Speicher-Störeffekt und für den Ladungs-
Störeffekt 0,5 Volt beträgt.
Ein Spielraum für den Ladungs-Störeffekt ist notwendig, um einen durch
beim Programmieren auftretende Leckströme bedingten Spannungsverlust am
Floating Gate 27 zu kompensieren. Gelöschte Schalttransistoren 30 und die
denen zugeordneten Speichertransistoren 20, die nicht programmiert werden
sollen und innerhalb einer Zeile der Speichermatrix nicht ausgewählt werden, sind
während der Programmierung der Zeile der Speichermatrix Zeilenstöreffekten
ausgesetzt. Programmierte und gelöschte Schalttransistoren 30 sind gleichfalls
Spaltenstöreffekten, die bei jeder Programmierung anderer Zeilen der
Speichermatrix auftreten, ausgesetzt. Das Maß der Zeilenstöreffekte hängt von
den Programmierimpulsen ab, d. h. von der Programmierzeit und der
Programmierspannung. Das Maß der Spaltenstöreffekte hängt sowohl von der
Anzahl der Programmierschritte als auch von den Zeilenprogrammierimpulsen ab.
Die notwendige Dauer der Lösch- und Programmierimpulse hängt stark von dem
erforderlichen anfänglichen Programmierbereich ab.
Das Testen eines FPGA wird mit einer verminderten Versorgungsspannung
durchgeführt. Hierdurch wird der letztendliche Programierspannungsbereich
reduziert. Die Spannungen und Zeiten der Programmier- und Löschimpulse
werden herabgesetzt, da die Spielräume für die Speicher- und Ladungs-
Störeffekte beim Testen im wesentlichen ignoriert werden können. Da eine
Testkonfiguration im Gegensatz zu einem benutzerseitig in den FPGA
programmierten Schaltkreis nicht für mehrere Jahre, sondern nur für wenige
Sekunden benötigt wird, kann der Spielraum für Speicher-Störeffekte beim
Programmieren der Testkonfigurationen ignoriert werden. Zudem werden die
Zeilen- und Spaltenstöreffekte durch die Verminderung der Anzahl der
Programmierschritte für eine Testkonfiguration erheblich reduziert. Femer werden
die Zeilen- und Spaltenstöreffekte auch dadurch reduziert, daß die verminderte
Versorgungsspannung während des Testens die erforderliche Höhe der
Programmierspannung absenkt. Deshalb kann der zur Vermeidung der Störeffekte
notwendige Spielraum fast vollständig eliminiert werden.
In oben genanntem Beispiel mit einem 5-Volt-FPGA ist ein Testbetrieb mit 3
Volt möglich. Die anfängliche Floating Gate Spannung muß lediglich 4,5 Volt
betragen, womit 2,5 Volt eingespart werden. Kleinere und kürzere
Programmierimpulse können diese +4,5 Volt an den Floating Gates 27 der
Schalttransistoren 30 problemlos erreichen. Auf diesem Wege wird die zum
Programmieren und Löschen von Zeilen der Speichermatrix benötigte Zeile re
duziert.
Claims (8)
1. Verfahren zum Testen eines FPGA mit einer Vielzahl
programmierbarer Zwischenverbindungen, die jeweils eine als Teil einer aus
Zeilen und Spalten bestehenden Speichermatrix angeordnete nicht flüchtige
Speicherzelle (10) umfassen, die mit einem Schalttransistor (30) verbunden ist,
der mit einem oder mehreren Anschlüssen einer Vielzahl von in Makrozellen (A,
B), die eine Matrix aus Zeilen und Spalten bilden, angeordneten Logikelementen
(33, 34) und Zwischenverbindungen verbunden ist, wobei Testkonfigurationen
ausgewählt, in den FPGA einprogrammiert, getestet und gelöscht werden,
dadurch gekennzeichnet, daß Testkonfigurationen ausgewählt werden, die eine
größtmögliche identische Programmierung der Makrozellen (A, B) ermöglichen
und daß eine Vielzahl der Zeilen der Speichermatrix, die den Makrozellen (A, B)
einer Testkonfiguration entsprechen, gleichzeitig programmiert und gleichzeitig
gelöscht wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß eine
Vielzahl der Zeilen der Speichermatrix innerhalb einer Makrozellenzeile
gleichzeitig programmiert wird.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß
beim Programmieren Zeilen der Speichermatrix, die keine zu programmierenden
Speicherzellen (10) enthalten, übersprungen werden.
4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeich
net, daß Zeilen der Speichermatrix, die Makrozellenzeilen aus identischen oder
fast identischen Makrozellen (A, B) entsprechen, gleichzeitig programmiert wer
den.
5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekenn
zeichnet, daß Zeilen der Speichermatrix, die Makrozellenzeilen aus verschiedenen
Makrozellen (A, B) entsprechen, gleichzeitig programmiert werden.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeich
net, daß durch wiederholtes Löschen und Reprogrammieren der Zeilen der
Speichermatrix einer Testkonfiguration die Testkonfiguration variiert wird.
7. Verfahren zum Testen eines FPGA mit nicht flüchtigen Speicher
zellen, insbesondere nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet,
daß Testkonfigurationen mit einer Versorgungsspannung getestet werden, die
geringer als die normale Betriebsspannung ist.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß Pro
grammier- und Löschimpuls-Spannungen und/oder -Zeiten um Ladungs- und/oder
Störeffekt-Spielräume verringert werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/096,142 US6272655B1 (en) | 1998-06-11 | 1998-06-11 | Method of reducing test time for NVM cell-based FPGA |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19926663A1 true DE19926663A1 (de) | 1999-12-16 |
Family
ID=22255737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19926663A Withdrawn DE19926663A1 (de) | 1998-06-11 | 1999-06-11 | Verfahren zum Testen eines FPGA |
Country Status (3)
Country | Link |
---|---|
US (2) | US6272655B1 (de) |
JP (1) | JP2000067596A (de) |
DE (1) | DE19926663A1 (de) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6429681B1 (en) * | 2000-08-23 | 2002-08-06 | Altera Corporation | Programmable logic device routing architecture to facilitate register re-timing |
US6531887B2 (en) | 2001-06-01 | 2003-03-11 | Macronix International Co., Ltd. | One cell programmable switch using non-volatile cell |
US6545504B2 (en) | 2001-06-01 | 2003-04-08 | Macronix International Co., Ltd. | Four state programmable interconnect device for bus line and I/O pad |
US6577161B2 (en) * | 2001-06-01 | 2003-06-10 | Macronix International Co., Ltd. | One cell programmable switch using non-volatile cell with unidirectional and bidirectional states |
US7127550B1 (en) | 2001-10-31 | 2006-10-24 | Sandisk Corporation | Multi-module simultaneous program, erase test, and performance method for flash memory |
US6977520B1 (en) | 2002-08-13 | 2005-12-20 | Altera Corporation | Time-multiplexed routing in a programmable logic device architecture |
US8352724B2 (en) * | 2003-07-23 | 2013-01-08 | Semiconductor Energy Laboratory Co., Ltd. | Microprocessor and grid computing system |
US7170315B2 (en) | 2003-07-31 | 2007-01-30 | Actel Corporation | Programmable system on a chip |
US20050097499A1 (en) * | 2003-11-03 | 2005-05-05 | Macronix International Co., Ltd. | In-circuit configuration architecture with non-volatile configuration store for embedded configurable logic array |
US20050102573A1 (en) * | 2003-11-03 | 2005-05-12 | Macronix International Co., Ltd. | In-circuit configuration architecture for embedded configurable logic array |
WO2006072142A1 (en) * | 2005-01-06 | 2006-07-13 | Justin Martin Spangaro | A reprogrammable integrated circuit |
WO2008021489A2 (en) | 2006-08-18 | 2008-02-21 | Advanced Micro Devices, Inc. | Integrated circuit chip with repeater flops and method for automated design of same |
US7827433B1 (en) | 2007-05-16 | 2010-11-02 | Altera Corporation | Time-multiplexed routing for reducing pipelining registers |
JP5318597B2 (ja) * | 2009-01-29 | 2013-10-16 | フリースケール セミコンダクター インコーポレイテッド | 半導体デバイス及び半導体デバイスの製造方法 |
CN102116840B (zh) * | 2009-12-30 | 2012-12-05 | 中国科学院沈阳自动化研究所 | 一种基于贪心策略的fpga局部互联测试方法 |
CN103000230B (zh) * | 2011-09-09 | 2016-04-13 | 上海华虹宏力半导体制造有限公司 | 一种非易失性存储器ip核的测试和验证开发系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03252998A (ja) * | 1990-02-28 | 1991-11-12 | Sharp Corp | 半導体記憶装置 |
JPH0469700A (ja) * | 1990-07-11 | 1992-03-04 | Hitachi Ltd | 情報記憶再生装置及び記憶再生方法 |
JPH0492298A (ja) * | 1990-08-08 | 1992-03-25 | Hitachi Ltd | 半導体記憶装置 |
JPH0449400U (de) * | 1990-08-24 | 1992-04-27 | ||
JPH04368018A (ja) * | 1991-06-14 | 1992-12-21 | Kawasaki Steel Corp | フィールドプログラマブルゲートアレイとその製造方法 |
JPH0587879A (ja) * | 1991-09-25 | 1993-04-06 | Fujitsu Ltd | 電気試験装置及び故障救済方法 |
JPH06318864A (ja) * | 1993-05-07 | 1994-11-15 | Toshiba Corp | フィールドプログラマブルゲートアレイ |
JP3410811B2 (ja) * | 1993-05-10 | 2003-05-26 | 株式会社東芝 | フィールドプログラマブルゲートアレイ及び半導体集積回路 |
US5469396A (en) * | 1994-06-07 | 1995-11-21 | Actel Corporation | Apparatus and method determining the resistance of antifuses in an array |
US5594363A (en) * | 1995-04-07 | 1997-01-14 | Zycad Corporation | Logic cell and routing architecture in a field programmable gate array |
US5633518A (en) * | 1995-07-28 | 1997-05-27 | Zycad Corporation | Nonvolatile reprogrammable interconnect cell with FN tunneling and programming method thereof |
JP2888512B2 (ja) * | 1995-09-22 | 1999-05-10 | 三菱電機マイコン機器ソフトウエア株式会社 | エミュレーション装置 |
KR970029333A (ko) * | 1995-11-24 | 1997-06-26 | 김광호 | 불량 메모리 소자를 이용한 압축된 오디오 신호의 기록/재생 장치 및 그 방법 |
DE69619939T2 (de) * | 1995-11-29 | 2002-11-21 | Texas Instruments Inc., Dallas | Verfahren und Vorrichtung zur Prüfung von Halbleiterspeichervorrichtungen |
US5867507A (en) * | 1995-12-12 | 1999-02-02 | International Business Machines Corporation | Testable programmable gate array and associated LSSD/deterministic test methodology |
US5717340A (en) * | 1996-01-17 | 1998-02-10 | Xilink, Inc. | Circuit for testing pumped voltage gates in a programmable gate array |
JP3828222B2 (ja) * | 1996-02-08 | 2006-10-04 | 株式会社日立製作所 | 半導体記憶装置 |
US5744980A (en) * | 1996-02-16 | 1998-04-28 | Actel Corporation | Flexible, high-performance static RAM architecture for field-programmable gate arrays |
JP3597972B2 (ja) * | 1997-07-25 | 2004-12-08 | 富士通株式会社 | プログラマブルロジックデバイス及びその試験方法並びに試験用データ作成方法 |
-
1998
- 1998-06-11 US US09/096,142 patent/US6272655B1/en not_active Expired - Fee Related
-
1999
- 1999-06-11 JP JP16547799A patent/JP2000067596A/ja active Pending
- 1999-06-11 DE DE19926663A patent/DE19926663A1/de not_active Withdrawn
-
2001
- 2001-06-12 US US09/880,628 patent/US20010039634A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US6272655B1 (en) | 2001-08-07 |
US20010039634A1 (en) | 2001-11-08 |
JP2000067596A (ja) | 2000-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4207934C2 (de) | Nichtflüchtige Halbleiterspeichervorrichtung und Programmierverfahren für eine nichtflüchtige Halbleiterspeichervorrichtung | |
DE3123611C2 (de) | ||
DE3688472T2 (de) | Programmierbare logische Schaltung. | |
DE69520665T2 (de) | Anordnung von nichtflüchtigen EEPROM,insbesondere Flash-EEPROM | |
EP0038947B1 (de) | Programmierbare logische Anordnung | |
DE3900798C2 (de) | Verfahren zum Programmieren eines elektrisch löschbaren und programmierbaren Nur-Lese-Speichers | |
DE2434704C2 (de) | Programmierbare Verknüpfungsmatrix | |
DE19926663A1 (de) | Verfahren zum Testen eines FPGA | |
DE3852833T2 (de) | Nichtflüchtiger Speicher. | |
DE3751084T2 (de) | Im system programmierbare logische vorrichtung. | |
EP0005847B1 (de) | Speicherschaltung und deren Verwendung in einer elektrisch programmierbaren logischen Anordnung | |
DE3305056A1 (de) | Halbleiterspeicher | |
DE4213741C2 (de) | Speichermatrix mit in Zeilen und Spalten angeordneten Speicherzellen | |
DE2128790A1 (de) | Einrichtung zum Verwenden mehrerer betriebsfähiger Schaltungen in einem in tegrierten Schaltungsplättchen | |
DE68901738T2 (de) | Verfahren zum testen eines einmalig programmierbaren speichers und dazugehoeriger speicher. | |
DE2606958A1 (de) | Bausteinschaltung mit speichertransistoren | |
EP0067364A2 (de) | Verfahren und Anordnung zum nichtflüchtigen Speichern des Zählerstandes einer elektronischen Zählschaltung | |
DE60222891T2 (de) | Nichtflüchtige Speichervorrichtung und Selbstreparatur-Verfahren | |
DE69321245T2 (de) | Integrierte Programmierschaltung für eine elektrisch programmierbare Halbleiterspeicheranordnung mit Redundanz | |
DE69029634T2 (de) | Prüflatchschaltung | |
DE2735976A1 (de) | Elektronisch veraenderbare diodenlogikschaltung | |
EP0100772B1 (de) | Elektrisch programmierbare Speichermatrix | |
DE2514582B1 (de) | Schaltung zur erzeugung von leseimpulsen | |
DE69500023T2 (de) | Elektrisch veränderlicher Festspeicher mit Prüffunktionen | |
DE3900979C2 (de) | Elektrisch lösch- und programmierbares Nur-Lese-Speicherbauelement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8127 | New person/name/address of the applicant |
Owner name: ACTEL CORP., MOUNTAIN VIEW, CALIF., US |
|
8139 | Disposal/non-payment of the annual fee |