DE19926663A1 - Verfahren zum Testen eines FPGA - Google Patents

Verfahren zum Testen eines FPGA

Info

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
Application number
DE19926663A
Other languages
English (en)
Inventor
Volker Hecht
Timothy Saxe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsemi SoC Corp
Original Assignee
GateField Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GateField Corp filed Critical GateField Corp
Publication of DE19926663A1 publication Critical patent/DE19926663A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318516Test of programmable logic devices [PLDs]
    • G01R31/318519Test of field programmable gate arrays [FPGA]

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.
DE19926663A 1998-06-11 1999-06-11 Verfahren zum Testen eines FPGA Withdrawn DE19926663A1 (de)

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)

* Cited by examiner, † Cited by third party
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
EP2057568A2 (de) 2006-08-18 2009-05-13 Advanced Micro Devices, Inc. Integrierter schaltungschip mit verstärker-flops und verfahren zu dessen automatischer konstruktion
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)

* Cited by examiner, † Cited by third party
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 김광호 불량 메모리 소자를 이용한 압축된 오디오 신호의 기록/재생 장치 및 그 방법
EP0777236B1 (de) * 1995-11-29 2002-03-20 Texas Instruments Incorporated 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 富士通株式会社 プログラマブルロジックデバイス及びその試験方法並びに試験用データ作成方法

Also Published As

Publication number Publication date
US20010039634A1 (en) 2001-11-08
US6272655B1 (en) 2001-08-07
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
DE2313917C3 (de) Speicher mit redundanten Speicherstellen
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.
DE69908340T2 (de) Seitenmoduslöschverfahren in flash-speichermatrize
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

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