-
Technisches Gebiet
-
Die
vorliegende Erfindung bezieht sich auf das Verarbeiten von Automatiktestmustererzeugungsdaten
(ATPG-Daten; ATPG = automatic test Pattern generation) in Zuordnung
zu einer automatischen Testausrüstung
(ATE; automated test equipment).
-
Hintergrund
-
Die
automatische Testmustererzeugung (ATPG) bezieht sich auf den Prozess,
bei dem Logikmuster oder -Vektoren erzeugt werden. Die Testmuster
können
auf die Logik angewendet werden (wie z. B. einen Abschnitt einer
integrierten Schaltung), um die Funktionalität der Logik unter Verwendung
interner Abtastketten zu testen. Die ATPG tritt üblicherweise auf durch Untersuchen
der Netzliste einer Schaltung und Erzeugen einer Fehlerliste. Eine
Fehlerliste ist eine Beschreibung potentieller Fehler, die bei dem
Entwurf auftreten können,
und umfasst alle Knoten in der Schaltung. Unterschiedliche Fehlermodelle
können
verwendet werden, wie z. B. das Überbrückungsfehlermodell,
das Übergangsfehlermodell und
das Festsitzen-am-Fehler-Modell. Das Festsitzenam-Fehler-Modell
ist das am meisten verwendete Modell. „Festsitzen-bei-1" bedeutet, dass ein
bestimmter Knoten immer 1 ist. „Festsitzen-bei-0" bedeutet, dass ein
bestimmter Knoten immer 0 ist. In dem Fall z. B., dass ein Festsitzen-bei-0-Fehler
anvisiert wird, wird das Muster derart erzeugt, dass ein entsprechender
Knoten auf 1 getrieben wird (auch genannt sensibilisieren) und zu
einem beobachtbaren Ausgang weitergeleitet wird. Basierend auf dem beobachtbaren
Ausgang wird bestimmt, ob der Knoten tatsächlich auf 1 getrieben ist
oder nicht. Wenn nicht, ist ein Festsitzen-bei-0-Fehler vorhanden.
Um einem Knoten zu ermögli chen,
sensibilisiert und weitergeleitet zu werden, müssen nicht alle Bits eines Testmusters
spezifiziert werden. Die spezifizierten Bits werden als „bedeutsame" Bits bezeichnet
und die unspezifizierten Bits werden als „bedeutungslose" Bits bezeichnet.
-
Kürzlich wurde
die Datenmenge, die erforderlich ist, um die Testmuster in ATPG
darzustellen, aus einer Anzahl von Gründen wesentlich erhöht. Zum
Beispiel hat die wachsende Komplexität neuer Fehlermodelle und die
zunehmende Weiterentwicklung von Schaltungen, die getestet werden,
die Datenmenge erhöht,
die zum Darstellen von Testmustern erforderlich ist. Somit muss
der Speicherbetrag der automatischen Testausrüstung (ATE), die verwendet
wird, um Testmuster an Schaltungen anzuwenden, erhöht werden,
um die Zunahme der Testmusterdaten zu kompensieren.
-
Die
chipinterne Dekomprimierung von Testmustern und Komprimierung von
Testergebnissen (z. B. durch Entwurf-für-Test-Produkte (DFT-Produkte; DFT = Design-for-Test))
wurde implementiert, um die Zunahme der Testmusterdaten zu adressieren.
Die chipinterne Komprimierung und Dekomprimierung ist jedoch aus
einer Anzahl von Gründen
problematisch. Erstens erfordert die chipinterne Komprimierung und Dekomprimierung
einen Grad an Mehraufwand, wodurch die Größe des Chips gesteigert wird
und der Durchsatz reduziert wird. Ferner führt das Steigern der Chipgröße zu einer
schnellen Reduzierung des Ertrags (d. h. ein größerer Chip ist wahrscheinlicher defekt).
Zweitens muss die Funktionalität
der chipinternen Komprimierung und Dekomprimierung in den Chip entworfen
sein und geeignet verifiziert sein, auf dieselbe Weise wie jeder
anderer Funktionsabschnitt des Chips. Dementsprechend fügt die Funktionalität der chipinternen
Komprimierung und Dekomprimierung einen Grad an technischem Risiko
für die
Chipentwicklung hinzu, was nachteilhaft ist. Ferner beeinträchtigen
viele der vorgeschlagenen chipinternen Komprimierungstechniken Diagnosefähigkeiten
und können
nicht sehr gut mit unbekannten Testantworten umgehen.
-
Die
US 2002/093356 A1 offenbart
ein Verfahren und eine Schaltung zum Testen einer integrierten Schaltungsvorrichtung
unter Verwendung einer intelligenten Testvektorformatierung, die
den Speicher reduziert, der für
Testmuster erforderlich ist und ferner eine Verschlüsselung
der Testmuster liefert. Ein erster Speicher speichert eine Testvektormasse,
die eine Bitsequenz ist, um anzuzeigen, ob entsprechende Testvektordaten
deterministisch oder zufällig
sind. Die Testvektordaten enthalten einen Abschnitt, der deterministisch
durch die automatische Testmustererzeugungssoftware erzeugt wird,
und einen Abschnitt, der zufällig
ist. Ein zweiter Speicher enthält
eine Bitsequenz, die die deterministischen Testvektordaten darstellt.
Ein Zufallszahlengenerator (z. B. Linearrückkopplungsschieberegister,
LFSR; linear feed-back shift register) erzeugt eine reproduzierbare
Sequenz aus Pseudozufallsbits, die auf einen Keimwert basiert. Eine
Selektorschaltung wird verwendet, um Bits entweder aus dem zweiten
Speicher oder aus dem Zufallszahlengenerator auszuwählen, basierend
auf dem Wert des Maskenvektors. Die Ausgabe des Selektors liefert
einen vollständig spezifizierten
Testvektor zur Anwendung an die zu testende Vorrichtung (DUT; device
under test). Das LFSR kann auf der DUT hergestellt sein. Die Ausgabe
der DUT kann auf Stufen des LFSR rückgekoppelt sein. Die Bits
des Maskenvektors können
ohne weiteres komprimiert werden, wodurch Speicher gespart wird.
Weder der erste noch der zweite Speicher müssen die Zufallsbits speichern,
da diese Bits während des
Betriebs durch das LFSR reproduziert werden, das als Lager für komprimierte
Daten betrachtet wird. Das System liefert einen Verschlüsselungsschutz
für die
Testvektoren, da das LFSR den richtigen Keimwert benötigt, bevor
die richtige Sequenz aus Pseudozufallsbits erzeugt wird.
-
Die
US-A-5,499,248 offenbart
eine Vorrichtung zum Testen einer elektronischen Vorrichtung, insbesondere
einen Integrierte-Schaltung-Tester, der genauer gesagt zum Testen
von Speichereinrichtungen oder Logik/Speicher-Kombinationen entworfen ist,
und liefert eine Vielzahl von Stiftkanälen. Jeder Stiftkanal umfasst
eine Sequenzsteuerung, die mit einer Dekomprimierungssteuereinheit
kommuniziert. Diese Kombination ist extrem schnell und ermöglicht, die
entsprechenden Stiftkanäle
einer Adresse oder einem Datenstift eines Speichers oder einem Logikstift
einer zu testenden Vorrichtung zuzuordnen. Eine zentrale Steuerung
liefert die notwendigen Steueranweisungen zu Anweisungsspeichereinrichtungen
der Sequenzsteuerungen. Alle Sequenzsteuerungen, die einem Logikstift
zugeordnet sind, führen
im Grunde dasselbe Programm aus, wobei eine Stiftanpassung durch
einen Vektorspeicher ausgeführt
wird. Im Gegensatz dazu führen
Sequenzierer, die einen Adressstift zugewiesen sind, unterschiedliche,
stiftspezifische Anweisungen aus. Die Architektur kann einfach an
verschiedene Stiftdefinitionen angepasst werden und basiert auf
dem „Pro-Stift-Ressource"-Lösungsansatz.
Sie kann auch auf Platinentester und andere elektronische Testvorrichtungen
angewendet werden.
-
Die
US 6,684,358 B1 offenbart
einen Dekomprimierer/PRPG auf einem Mikrochip, der sowohl eine Pseudozufallstestmustererzeugung
als auch eine Dekomprimierung von deterministischen Testmustern
für eine
zu testende Schaltung auf dem Chip ausführt. Der Dekomprimierer/PRPG
weist zwei Operationsphasen auf. In einer Pseudozufallsphase erzeugt
der Dekomprimierer/PRPG Pseudozufallstestmuster, die auf Abtastketten
innerhalb der zu testenden Schaltung angewendet werden. In einer
deterministischen Phase werden komprimierte, deterministische Testmuster
aus einem externen Tester auf den Dekomprimierer/PRPG angewendet.
Die Muster werden dekomprimiert, wenn sie durch den Dekomprimierer/PRPG
in die Abtastketten getaktet werden. Der Dekomprimierer/PRPG liefert
somit eine viel bessere Fehlerabdeckung als ein einfacher PRPG,
aber ohne die Kosten eines kompletten Satzes aus voll spezifizierten,
deterministischen Testmustern.
-
Khoche
u. a.: „Test
Vector Compression Using EDA-ATE Synergies", 28. April 2002 (2002-04-28), Proceedings
20th IEEE VLSI Test Symposium (VTS 2002) IEEE COMPUT. SOC LOS ALAMITOS,
CA, USA; SEITE(N) 97–102,
beschreibt eine Testvektorkomprimierungstechnik, die Synergien zwischen
Tools zur automatischen Testmustererzeugung (ATPG-Tools; ATPG =
Automatic Test Pattern Generation), die durch Verkäufer einer
EDA (Electronic Design Automation; elektronische Entwurfsautomatisierung)
bereitgestellt werden, und einer automatischen Testausrüstung (ATE)
verwendet. Der Ansatz ist, eine wesentliche Komprimierung zu erreichen
durch eine Übereinkunft
zwischen der. ATE und ATPG darüber,
wie bedeutungslose Werte in den Testvektoren gefüllt werden, derart, dass diese
Bits nicht auf der ATE gespeichert und möglicherweise nicht zu der DUT
kommuniziert werden müssen, wenn
eine Dekomprimierung an dem Chip ausgeführt wird. Die Technik ermöglicht eine
feinkörnige
Mischung auf Teilvektorebene von pseudozufällig erzeugten Bits und ATPG-erzeugten
Bits.
-
Es
ist die Aufgabe der vorliegenden Erfindung, verbesserte Systeme
und Verfahren zum Komprimieren und/oder Dekomprimieren von ATPG-Mustern
zu schaffen, um das Testen von Schaltungen unter Verwendung einer
automatischen Testausrüstung (ATE)
zu ermöglichen.
-
Diese
Aufgabe wird durch eine automatisierte Testausrüstung gemäß Anspruch 1 und durch ein Verfahren
gemäß Anspruch
8 gelöst.
-
Zusammenfassung
-
Repräsentative
Ausführungsbeispiele
richten sich auf Systeme und Verfahren zum Komprimieren und/oder
Dekomprimieren von ATPG-Mustern, um ein Testen von Schaltungen unter
Verwendung einer automatischen Testausrüstung (ATE) zu ermöglichen.
Ferner verwenden repräsentative
Ausführungsbeispiele
Komprimierungs- und Dekomprimierungs-Algorithmen, die sich deutlich
von Komprimierungs- und Dekomprimierungs-Algorithmen unterscheiden, die durch
bekannte, chipinterne Techniken eingesetzt werden. Zum Beispiel
dekomprimieren chipinterne Techniken Testdaten, die einen relativ niedrigen
Verdichtungsgrad besitzen. Genauer gesagt ist die Dichte bedeutsamer
Bits relativ gesehen minimal und somit wird die Wahrscheinlichkeit,
dass eine lineare Abhängigkeit
beim Finden von Linearrückkopplungsschieberegister-Keimwerten (LFSR-Keimwerten)
auftritt auf einer relativ niedrigen Ebene gehalten. Zusätzlich dazu
verwenden chipinterne Komprimierungstechniken die Daten, die durch ein
ATPG-Tool erzeugt werden, d. h. die bedeutungslosen Bits sind unspezifiziert.
Dadurch, dass die bedeutungslosen Bits unspezifiziert gehalten werden, wird
die Anzahl von Mustern wesentlich erhöht (um zwei bis drei Mal wie üblicherweise
für handelsüblich erhältliche
Tools beobachtet wird). Jeder dieser Faktoren neigt dazu, die Testzeit
zu erhöhen.
Chipinterne Techniken basieren auf dem Ausfächern mehrerer Abtastketten,
um zu verhindern, dass eine Zunahme der Testzeit auftritt. Das Ausfächern mehrerer
Abtastketten ist jedoch nicht nützlich,
wenn eine Dekomprimierung auf der ATE auftritt. Somit würde das
Einsetzen bekannter Algorithmen zum Dekomprimieren von Testdaten
auf einer ATE den Betrag an Testzeit inakzeptabel erhöhen, die
für eine
zu testende Schaltung erforderlich ist.
-
Bei
einem darstellenden Ausführungsbeispiel
liefert eine ATE-Architektur ausreichende Komprimierungs-/Dekomprimierungs-Ressourcen,
um zu ermöglichen,
dass eine Testmusterverarbeitung auf einer Pro-Stift-Basis auftritt.
Genauer gesagt kann jeder zugehörige
Stift der zu testenden Schaltung, der Testmuster empfängt oder
Ergebnisdaten ausgibt, einer unabhängigen Komprimierungs-/Dekomprimierungs-Funktionalität zugeordnet
sein. Dementsprechend kann die Dekomprimierung und Komprimierung
in Echtzeit während
des Testens der entsprechenden Schaltung auftreten.
-
Im
Gegensatz zu chipinternen Komprimierungstechniken verwenden repräsentative
Ausführungsbeispiele
relativ gesehen größere LFSRs,
da das LFSR auf der ATE implementiert ist. Im Gegensatz zu chipinternen
Techniken verwenden repräsentative
Ausführungsbeispiele
eine Architektur für
ein „übertaktendes" Linearrückkopplungsschieberegister (LFSR),
das durch ein potentiell nichtprimitives Polynom gekennzeichnet
ist. Die resultierende Freiheit beim Auswählen von Abgriffen und der
Länge des LFSR
werden verwendet, um die Linearabhängigkeitswahrscheinlichkeit
wesentlich zu reduzieren. Dementsprechend ermöglichen repräsentative
Ausführungsbeispiele,
dass relativ hoch kompaktierte (verdichtete) Testdaten durch eine
ATE in Echtzeit während
der Operation der ATE dekomprimiert werden. Durch Ermöglichen,
dass kompaktierte Testdaten verwendet werden, wird die Testzeit
auf akzeptablen Pegeln gehalten. Zusätzlich dazu können hohe
Komprimierungsverhältnisse
erreicht werden, da das größere LFSR
ermöglicht,
dass der Mehraufwand, der den Zählbits
zugeordnet ist, vernachlässigbar
wird.
-
Bei
einem anderen repräsentativen
Ausführungsbeispiel
werden die bedeutungslosen Bits von Stimulusmustern wiederholungsgefüllt, z.
B. jedem aufeinanderfolgenden Bit in einem Lauf (eine Mehrzahl von
aufeinander folgenden Vorkommnissen) von bedeutungslosen Bits wird
der Wert des bedeutungsvollen Bits zugewiesen, das dem Lauf direkt
folgt. Nach dem Wiederholungsfüllen
werden die Stimulusmuster lauflängencodiert,
z. B. unter Verwendung von Codewörtern
variabler Länge,
wie z. B. Fibonacci-Codes, um eine Hochgeschwindigkeitsdekomprimierung
zu ermöglichen.
Genauer gesagt wird eine Dekomprimierungsarchitektur eingesetzt,
die eine Mehrzahl von Lauflängendecodierern
verwendet, um eine Dekomprimierung parallel auszuführen, um
die relativ anspruchsvollen Zeitgebungskriterien zu erfüllen, die
der ATE zugeordnet sind.
-
Beschreibung der Zeichnungen
-
1 zeigt
ein Flussdiagramm zum Verarbeiten von Testdaten gemäß einem
repräsentativen Ausführungsbeispiel.
-
2 zeigt
ein Linearrückkopplungsschieberegister.
-
3 zeigt
ein Flussdiagramm zum Codieren von Testdaten unter Verwendung von SEED-(Keim-)
und COUNT-(Zählwert-)
Parametern, gemäß einem
repräsentativen
Ausführungsbeispiel.
-
4 zeigt
ein anderes Flussdiagramm zum Codieren von Testdaten unter Verwendung
von Keim- und Zählwert-Parametern
gemäß einem
repräsentativen
Ausführungsbeispiel.
-
5 zeigt
ein Flussdiagramm zum Codieren von Testdaten unter Verwendung einer
Lauflängencodierung
gemäß einem
repräsentativen
Ausführungsbeispiel.
-
6 zeigt
wiederholungsgefüllte
Testdaten.
-
7 zeigt
eine Lauflängencodierung
der wiederholungsgefüllten
Testdaten, gezeigt in 6, gemäß einem repräsentativen
Ausführungsbeispiel.
-
8 zeigt
eine parallele Hardwarearchitektur zum Decodieren von lauflängencodierten
Testdaten gemäß einem
repräsentativen
Ausführungsbeispiel.
-
9 zeigt
ein anderes Flussdiagramm zum Verarbeiten von Testmustern gemäß einem
repräsentativen
Ausführungsbeispiel.
-
10 zeigt
ein LFSR.
-
11 zeigt
ein „Zweimal-" Übertaktungs-LFSR, hergeleitet
aus dem LFSR, das in 10 gezeigt ist.
-
12 zeit
eine Matrix, definiert durch das LFSR, das in 10 gezeigt
ist.
-
13 zeigt
eine Matrix, die das LFSR charakterisiert, das in 11 gezeigt
ist, die aus der Matrix hergeleitet ist, die in 12 gezeigt
ist.
-
14 zeigt
ein Verbindungsnetz für
ein LFSR, definiert durch die Matrix, die in 13 gezeigt
ist.
-
15 zeigt
ein automatisches Testausrüstungssystem
(ATE-System), das eine Echtzeitdekomprimierung von Testmusterdaten
einsetzt.
-
16 zeigt
eine ATE, die das Herunterladen von Daten aus dem ATE-Speicher unter
Verwendung einer „Drosselungs"-Fähigkeit
steuert.
-
17 zeigt
eine ATE, die Lauflängencodes auf
Adresse-auf-Chip-Testverzögerungen
anwendet.
-
18 zeigt
ein ATE-Teilsystem, das eine Pro-Gruppe-Verarbeitung ausführt.
-
19 zeigt
ein ATE-Teilsystem, das eine Pro-Stift-Verarbeitung ausführt, die gemäß einem
repräsentativen
Ausführungsbeispiel
auftreten soll.
-
Detaillierte Beschreibung
-
Ein
repräsentatives
Ausführungsbeispiel setzt
eine „Übertaktungs-Architektur" für ein LFSR ein,
die ermöglicht,
dass relativ gesehen kompaktierte Testmuster für eine nachfolgende Dekomprimierung
an einer ATE in Echtzeit während des
Testens einer zu testenden Schaltung komprimiert werden. Ein Beispiel
einer „Übertaktungs"-Architektur ist
in 12 gezeigt, die nachfolgend detaillierter erörtert wird.
Die Architektur unterscheidet sich von LFSR-Architekturen, die durch chipinterne
Techniken verwendet werden, durch Verwenden eines relativ großen LFSR,
das gekennzeichnet ist durch ein Polynom, das nicht notwendigerweise
primitiv ist. Ferner können
LFSRs gemäß einem
repräsentativen
Ausführungsbeispiel
Vorwärtskopplungs-
und Rückwärtskopplungsabgriffe
umfassen. Die resultierende Freiheit beim Auswählen der Abgriffe wird verwendet,
um die Linearabhängigkeitswahrscheinlichkeit
zwischen LFSR-Zyklen wesentlich zu reduzieren, die dazu neigt, den
erreichten Komprimierungsbetrag zu begrenzen. Durch Ermöglichen
eines größeren Verdichtungsbetrags
von Testmustern halten repräsentative
Ausführungsbeispiele
den Zeitbetrag innerhalb akzeptabler Pegel, der zum Testen einer
Schaltung durch eine ATE erforderlich ist.
-
Bei
einem anderen, repräsentativen
Ausführungsbeispiel
kann eine Komprimierung von Testdaten durch Wiederholungsfüllläufe von
bedeutungslosen Bits in Stimulusmustern auftreten. Nachdem das Wiederholungsfüllen ausgeführt ist,
wird das Lauflängencodieren
ausgeführt.
Ein repräsentatives
Ausführungsbeispiel
ersetzt Läufe
aus Binärsymbolen
durch modifizierte Fibonacci-Codes. Die modifizierten Fibonacci-Codes identifizieren
den Anfang und das Ende jedes Codes, ohne zu erfordern, dass die
individuellen Lauflängen
decodiert werden. Ein repräsentatives
Ausführungsbeispiel
verwendet die Fähigkeit,
jeden Code zu erfassen, um Testdaten parallel unter Verwendung einer
Mehrzahl von Lauflängendecodierern
zu dekomprimieren. Durch Serialisieren der Ausgangsbits aus jedem
Lauflängendecodierer
wird ein Datenstrom einer ausreichenden Bitrate erhalten, der eine
Echtzeitdekomprimierung von Testdaten zur Anwendung an eine zu testende
Schaltung durch eine ATE ermöglicht.
-
1 zeigt
ein Flussdiagramm, das die Integration einer LFSR-Komprimierung
und einer Lauflängenkomprimierung
in eine automatische Testmustererzeugung gemäß repräsentativen Ausführungsbeispielen
darstellt. Bei Schritt 101 wird aus einer logischen oder
einer anderen geeigneten Schaltungsbeschreibung (z. B. einer Schaltungsbeschreibung, die
unter Verwendung eines geeigneten Entwurfstools erzeugt wird) eine
Fehlerliste erzeugt. Aus Schritt 102 werden Testmuster
definiert. Jedes Symbol in den Mustern ist durch einen der drei
folgenden Zustände
dargestellt: „0", „1" und „X". Wenn das Symbol
den Zustand „0" reflektiert, muss
das entsprechende Bit auf Null gesetzt sein, um den Fehler zu testen,
der dem Stimulusmuster entspricht, aufgrund der Logik des Schaltungsentwurfs.
Auf ähnliche
Weise, wenn das Symbol den Zustand „1" reflektiert, muss das entsprechende
Bit auf Eins gesetzt sein, um den Fehler zu testen, der dem Stimulusmuster
entspricht. Bits, die den Zuständen „0" und „1" entsprechen, werden
als bedeutsame Bits bezeichnet. Wenn das Symbol den Zustand „X" reflektiert, kann das
entsprechende Bit entweder auf Null oder auf Eins gesetzt sein,
um den Fehler zu testen, der dem Stimulusmuster entspricht. Bits,
die dem Zustand „X" entsprechen, werden
als bedeutungslose Bits bezeichnet. Bei Schritt 103 werden
nicht in Konflikt stehende Stimulusmuster wiederholt kompaktiert.
Genauer gesagt können
Stimulusmuster, die keine bedeutsamen Bits besitzen, die in Konflikt
stehende Werte aufweisen, in ein einzelnes, kompaktiertes Muster
kombiniert werden. Die Schritte 101 bis 103 können unter
Verwendung bekannter Algorithmen ausgeführt werden, wie z. B. jener,
die durch bekannte ATPG-Softwaretools eingesetzt werden.
-
Bei
Schritt 104 werden die kompaktierten Stimulusmuster gemäß repräsentativen
Ausführungsbeispielen
komprimiert. Bei einem repräsentativen Ausführungsbeispiel
wird der Schritt 104 unter Verwendung eines LFSR-Algorithmus
ausgeführt.
Genauer gesagt definiert die Ausgabe eines LFSR für jeden
Operationszyklus eine lineare Gleichung. Ein Satz aus linearen Gleichungen
wird erzeugt, um entsprechenden Aus gangszyklen des LFSR zu entsprechen,
die bedeutsamen Bits von Stimulusmustern zugeordnet sind, die komprimiert
werden sollen. Der Satz aus linearen Gleichungen wird gegen die
logischen Werte der bedeutsamen Bits gelöst, um den Anfangszustand des
LFSR zu bestimmen, der verursacht, dass das LFSR die bedeutsamen
Bits reproduziert.
-
Wie
vorangehend erörtert
wurde, setzt ein repräsentatives
Ausführungsbeispiel
ein LFSR ein, das eine relativ große Länge und ein nichtprimitives Polynom
besitzt. Ferner kann das LFSR Vorwärtskopplungs- und Rückkopplungs-Abgriffe
besitzen. Durch Bereitstellen eines Freiheitsgrades für die Auswahl
der Abgriffe wird die Wahrscheinlichkeit des Auftretens mehrerer
linearer Gleichungen in dem Satz, die linear abhängig sind, angemessen reduziert.
Durch Reduzieren der Wahrscheinlichkeit kann eine größere Dichte
von bedeutsamen Bits codiert werden, wodurch ermöglicht wird, dass hoch kompaktierte
Testmuster komprimiert werden.
-
Die
Komprimierung kann durch Teilen der Stimulusmuster in Blöcke auftreten.
Für jeden
Block wird ein „Keim"-Parameter und ein „Zählwert"-Parameter aus einem
Satz von linearen Gleichungen hergeleitet, die durch das implementierte
LFSR definiert sind. Die bedeutsamen Bits eines entsprechenden Blocks
sind aus dem Keim-Parameter und dem Zählwert-Parameter reproduzierbar. Die bedeutungslosen
Bits des entsprechenden Blocks sind Werten auf einer Pseudozufallsbasis
zugewiesen, gemäß den Charakteristika
des LFSR. Nachdem ein Keim-Parameter und ein Zählwert-Parameter für jeden
Block bestimmt sind, werden die Stimulusmuster in Testmuster transformiert,
die ausschließlich
aus binären Symbolen
bestehen, anstelle von ternären
Symbolen (d. h. 0, 1 oder X). Die Details der Komprimierung und Dekomprimierung
von Musterdaten gemäß einem LFSR-Algorithmus
werden nachfolgend detaillierter erörtert. Ferner wird darauf hingewiesen,
dass, da ein größeres LFSR
auf der ATE implementiert sein kann, um die Dekomprimierung auszuführen, hohe
Komprimierungsverhältnisse
erreicht werden können,
da die Daten, die den Zählwert-Parametern
zugeordnet sind, vernachlässigbar
werden. Ferner kann ein Speicher-„Drosseln” (wie nachfolgend erörtert wird) auftreten,
um die Effektivität
des Komprimierungsschemas zu erhöhen.
-
Bei
einem anderen Ausführungsbeispiel
wird Schritt 104 unter Verwendung einer Lauflängencodierung
ausgeführt.
Bei diesem Ausführungsbeispiel wird
eine Wiederholungsfülloperation
auf Stimulusmuster angewendet, um den bedeutungslosen Bits Werte
zuzuweisen. Diese Zuweisung erzeugt Testmuster, die ausschließlich aus
binären
Symbolen bestehen. Bei einem Ausführungsbeispiel wird jedem bedeutungslosen
Bit der Wert des direkt nachfolgenden bedeutsamen Bits zugewiesen.
Nach dem Ausführen
der Wiederholungsfülloperation
werden die Muster unter Verwendung von Codewörtern variabler Länge lauflängencodiert,
die den Anfang und das Ende jedes Codeworts identifizieren. Durch
Identifizieren der Codewörter
auf diese Weise können
die komprimierten Daten parallel dekomprimiert werden, wie nachfolgend
detaillierter erörtert
wird. Zusätzlich dazu
können
Codes variabler Lauflänge
eingesetzt werden. Die Codes variabler Länge ermöglichen verbesserte Komprimierungsverhältnisse
im Vergleich zu Wiederhol-Zähl-Anweisungen.
Ferner verbessert die Lauflängencodierung
die Schnittstelle zwischen der ATE und der chipinternen DFT-Funktionalität weiter.
Genauer gesagt, wenn die DFT-Funktionalität einen Bitsatz aus der ATE
verarbeitet, werden üblicherweise
Leerlaufzyklen durch die ATE eingesetzt. Unter Verwendung einer
Lauflängencodierung
müssen
die Leerlaufzyklen nicht in dem ATE-Speicher gespeichert sein und
können
gleichzeitig zu der Verarbeitung durch die DFT-Funktionalität erzeugt
werden.
-
Bei
Schritt 105 wird eine Fehlersimulation unter Verwendung
der kompaktierten Muster ausgeführt,
die Werte aufweisen, die den bedeutungslosen Bits zugewiesen sind,
wie durch Schritt 104 ausgeführt wird. Fehler, die durch
die Muster adressiert werden, werden aus der Fehlerliste entfernt.
-
Nach
dem Ausführen
der Fehlersimulation werden erwartete Ergebnisse für jedes
Muster simuliert (Schritt 106). Wenn ein Testmuster auf
eine Schaltung angewendet wird, sind bestimmte resultierende Ausgaben
oder Zustände
von Logikelementen der Schaltung aufgrund von floatenden Bussen,
Buskonkurrenz und/oder ähnlichem
unbekannt. Zum Beispiel kann ein erwartetes Ergebnis die folgende
Sequenz umfassen „01001XXX101XX", wobei „0" ein Bit definiert,
das bei dem Ergebnis des Tests eine Null sein sollte, „1" ein Bit definiert,
das bei dem Ergebnisdes Tests eine Eins sein sollte und „X" ein Bit darstellt,
das in dem Ergebnis des Tests entweder auf eine Eins oder eine Null
gesetzt sein könnte.
Ein Maskendatenstrom kann definiert sein, um unbekannte Werte zu
adressieren. Genauer gesagt kann der Maskendatenstrom verwendet
werden, um zu verursachen, dass empfangene Testdaten, die den unbekannten
Zuständen
zugeordnet sind, auf einen bekannten Wert abgebildet werden (z.
B. „0").
-
Bei
Schritt
107 werden die erwarteten Ergebnisse und der Maskendatenstrom
z. B. unter Verwendung einer Lauflängencodierung komprimiert.
Ferner können
Ergebnissignaturen durch Ansammeln erwarteter Ergebnisse über mehrere
Zyklen eines festen Fensters aufgebaut werden. Dadurch können Ergebnissignaturen
erzeugt und gegen ähnlich
angesammelte (akkumulierte) Ergebnistestdaten nach der Anwendung
des Maskendatenstroms verglichen werden. Der Vergleich kann auf ähnliche
Weise zu zyklischen Redundanzcodes (CRC; cyclic redundancy code)
oder Prüfsummen
funktionieren, um zu bestimmen, ob ein bestimmtes Fenster besteht
oder fehlschlägt.
Zusätzliche
Details im Hinblick auf Maskendatenströme und Ergebnissignaturen finden
sich in dem
U.S.-Patent
2004/0107395 A1 mit dem Titel „SYSTEM AND METHOD FOR TESTING
CIRCUITRY USING AN EXTERNALLY GENERATED SIGNATURE", eingereicht am
3. Dezember 2002.
-
Bei
Schritt 108 werden die komprimierten Muster, die komprimierten
erwarteten Ergebnisse und die Ergebnissignaturen in einem geeigneten
Format gespeichert, um ein nachfolgen des Testen von Schaltungen
unter Verwendung der ATE zu ermöglichen.
-
Bekannte
LFSRs sind üblicherweise
in Hardware implementiert, unter Verwendung eines verbundenen Satzes 200 aus
Flip-Flops, wie in 2 gezeigt ist. Während einer
Operation des LFSR wird der Wert jedes Flip-Flops zu dem am nächsten benachbarten
Flip-Flop geliefert, und eine XOR-Operation wird für jeden Rückkopplungsabgriff ausgeführt. Andere
Implementierungen können
eingesetzt werden, wie z. B. interne und externe LFSRs. Der Ausgangswert
des LFSR ist üblicherweise
der Wert des letzten Flip-Flops. Im Allgemeinen ist ein LFSR gekennzeichnet
durch seine Länge „n" und durch den Polynomvektor
der Größe „n", der die Rückkopplungsabgriffe
und ihre Orte beschreibt. In Betrieb erzeugt ein LFSR einen Bitstrom,
der durch seine Länge
und sein kennzeichnendes Polynom definiert ist. Der Bitstrom ist
zyklisch, d. h. ein einzelnes eindeutiges Muster wird durch kontinuierliches
Betreiben des LFSR wiederholt. Die Länge des eindeutigen Musters
(bezeichnet als Pseudozufallsmuster) wird durch Auswählen eines
primitiven Polynoms (ein nicht faktorisierbares Polynom) als das
charakterisierende Polynom maximiert. Ferner können die Flip-Flops wenn ein
LFSR initialisiert wird auf entsprechende Logikzustände initiiert
werden. Das Bitmuster, das zum Initialisieren der Logikzustände verwendet
wird, wird als ein „Keim" bezeichnet.
-
Bekannte
chipinterne Dekomprimierungstechniken haben LFSRs verwendet, um
ein einzelnes Testmuster aus einem einzelnen Keim-Wert zur Anwendung
auf Abtastketten zur Schaltungstestung zu erzeugen. Genauer gesagt
ist es allgemein möglich, einen
Keim-Wert zu finden, der, wenn er in das LFSR geladen wird, verursacht,
dass das LFSR einen Bitstrom erzeugt, der die bedeutungsvollen Bits
eines gegebenen Stimulusmuster reproduziert. Die Werte der bedeutungslosen
Bits sind Werten gemäß dem pseudozufälligen Wesen
des LFSR zugewiesen. Bekannte Implementierungen von LFSRs sind beschränkt, um sicherzustellen,
dass alle Muster durch die LFSRs erzeugt werden können. Beispiele
der Einschränkungen
umfassen das Verwenden einer Anzahl von Mehraufwand-Bits, um lineare
Abhängigkeiten
zu verhindern und den Betrag einer Kompaktierung von Mustern einzuschränken, um
das Verhältnis
von bedeutsamen Bits zu bedeutungslosen Bits zu begrenzen. Aufgrund
der Einschränkungen, die
durch bekannte chipinterne Dekomprimierungs-LFSRs auferlegt sind,
kann sich die Testzeit potentiell erhöhen. Für eine chipinterne Komprimierung
wird diese potentielle Testzeiterhöhung durch Ausfächern an
mehrere Abtastketten verhindert. Dieser Ansatz funktioniert jedoch
nicht, wenn eine Komprimierung auf der ATE implementiert ist, wodurch ein
neuer Problempunkt verursacht wird, der vorangehend nicht adressiert
wurde.
-
Wie
vorangehend erörtert
wurde, reduziert die Verwendung einer Übertaktungsarchitektur für das LFSR
die Wahrscheinlichkeit von linearen Abhängigkeiten wesentlich und erhöht somit
den Komprimierungsbetrag. Ferner setzen repräsentative Ausführungsbeispiele
einen LFSR-Komprimierungsalgorithmus ein, der sich wesentlich von
bekannten LFSR-Algorithmen unterscheidet. Eine LFSR-Komprimierung
gemäß einem
repräsentativen
Ausführungsbeispiel
erzeugt Testdaten für
linear abhängige Testzyklen
ohne in Konflikt stehende Logikbitwerte und linear unabhängige Testzyklen,
wodurch das Komprimierungsverhältnis
erhöht
wird.
-
3 zeigt
ein Flussdiagramm zum Komprimieren von Musterdaten zur Dekomprimierung
durch ein LFSR gemäß repräsentativen
Ausführungsbeispielen.
Bei Schritt 301 wird eine Matrix erzeugt, durch Integrieren
linearer Gleichungen in die Matrix, definiert durch das LFSR. Die
Gleichungen, die in der Matrix verwendet werden, sind definiert
durch die Ausgangszyklen des LFSR, die Positionen der bedeutsamen
Bits der Musterdaten entsprechen. Bei Schritt 302 wird
ein Versuch gemacht, die Matrix gegen die Werte der entsprechenden
bedeutsamen Bits aufzulösen,
um einen Keim-Parameter zu bestimmen, der die anfänglichen
Werte der Flip-Flops des LFSR definiert, so dass die bedeutsamen
Bits durch das LFSR reproduziert werden. Der Versuch, die Matrix
aufzulösen,
kann eine Gaußsche
Eliminierung oder eine Gauß-Jordan-Eliminierung verwenden.
Basierend auf dem Versuch, die Matrix aufzulösen, wird eine logische Bestimmung
(Schritt 303) daran ausgeführt, ob die maximale Anzahl
von bedeutsamen Bits, die unter Verwendung eines einzelnen Keim-Parameters
codiert werden kann, bestimmt wurde. Die maximale Anzahl von bedeutsamen
Bits wird bestimmt durch das Auftreten einer linearen Abhängigkeit
in den linearen Gleichungen, die dem bedeutsamen Bit zugeordnet
sind, das einen in Konflikt stehenden (widersprüchlichen) Logikwert besitzt.
Wenn die maximale Anzahl von bedeutsamen Bits nicht bestimmt wurde,
kehrt der Prozessfluss zu Schritt 301 zurück, wo eine
Matrix unter Verwendung einer unterschiedlichen Anzahl von Gleichungen
erzeugt wird, entsprechend einer unterschiedlichen Anzahl von bedeutsamen
Bits. Wenn die maximale Anzahl von Bits identifiziert wurde, geht
der Prozessfluss von Schritt 303 zu Schritt 304 über. Bei
Schritt 304 wird ein Block aus Stimulusdaten, die der maximalen
Anzahl von bedeutsamen Bits zugeordnet sind, durch den Keim-Parameter,
der durch die Lösung
der Matrix bestimmt wird, und einen Zählwert-Parameter, der die Länge des
Blocks definiert, dargestellt. Zusätzlich dazu könnte der
Suchprozess, der in 3 gezeigt ist, unter Verwendung
einer binären
Suche beschleunigt werden.
-
4 zeigt
ein anderes Flussdiagramm zum Komprimieren von Musterdaten zur Dekomprimierung
durch ein LFSR, das keine Matrixinvertierung umfasst. Bei Schritt 401 wird
der Zählwert-Parameter inkrementiert.
Bei Schritt 402 wird das nächste Bit in einem Stimulusmuster
oder einem Satz aus Stimulusmustern ausgewählt. Bei Schritt 403 wird
eine logische Bestimmung ausgeführt,
um zu bestimmen, ob das ausgewählte
Bit ein bedeutsames Bit ist. Wenn nicht, kehrt der Prozess zu Schritt 401 zurück. Genauer
gesagt, wenn das ausgewählte
Bit ein bedeutungsloses Bit ist, kann das bedeutungslose Bit unter
Verwendung des aktuellen Keim- Parameters codiert
werden, einfach durch Erhöhen
des Zählwert-Parameters.
-
Wenn
das ausgewählte
Bit ein bedeutsames Bit ist, geht der Prozessfluss von Schritt 403 zu Schritt 404 über. Bei
Schritt 404 wird eine Gleichung für den entsprechenden LFSR-Zyklus
erzeugt, wie durch das charakterisierende Polynom des LFSR definiert
ist. Bei Schritt 405 wird eine logische Bestimmung ausgeführt, um
zu bestimmen, ob die erzeugte Gleichung linear von vorangehend erzeugten
Gleichungen abhängig
ist (eine lineare Abhängigkeit
bezieht sich auf das Auftreten einer erzeugten Gleichung, die von
einer oder mehreren vorangehend erzeugten Gleichungen linear abhängig ist).
Wenn die erzeugte Gleichung nicht von vorangehend erzeugten Gleichungen
linear abhängig
ist, geht der Prozessfluss von Schritt 405 und zu Schritt 406 über. Bei Schritt 406 wird
der Keim-Parameter basierend auf der neu erzeugten Gleichung verfeinert.
Genauer gesagt, wenn die erzeugte Gleichung linear unabhängig ist,
ist bekannt, dass ein Keim-Parameter bestimmt werden kann, um das
aktuell ausgewählte
bedeutsame Bit und vorangehende bedeutsamen Bits zu erzeugen. Von
Schritt 406 geht der Prozessfluss zu Schritt 401 zurück.
-
Wenn
bestimmt wird, dass die erzeugte Gleichung linear abhängig ist,
geht der Prozessfluss von Schritt 405 zu Schritt 407 über. Bei
Schritt 407 wird eine logische Bestimmung ausgeführt, um
zu bestimmen, ob das aktuelle bedeutsame Bit mit der Ausgabe des
LFSR für
den entsprechenden Zyklus in Konflikt steht, unter Verwendung des
aktuellen Keim-Parameters, durch Inkrementieren des Zählwert-Parameters. Wenn
das ausgewählte
bedeutsame Bit nicht in Konflikt steht, kehrt der Prozessfluss zu
Schritt 401 zurück.
Durch Codieren linear abhängiger
Testzyklen ohne in Konflikt stehende und unabhängige Testzyklen in ein einzelnes
Paar aus Keim- und Zählwert-Parametern
können
mehrere Testmuster zur Anwendung auf eine Schaltung über mehrere
Taktzyklen der Schaltung codiert werden. Wenn das ausge wählte bedeutsame
Bit in Konflikt steht, geht der Prozessfluss von Schritt 407 auf
Schritt 408 über.
Genauer gesagt, da die erzeugte Gleichung linear abhängig ist und
das entsprechende bedeutsame Bit in Konflikt steht, kann keine weitere
Komprimierung erreicht werden. Somit wird der Abschnitt der Stimulusdaten bis
zu dem aktuell ausgewählten
bedeutsamen Bit unter Verwendung des aktuellen Keim- und Zählwert-Parameters
codiert.
-
Der
Prozessfluss von 4 erscheint vielleicht effizienter
als der Prozessfluss aus 3. Genauer gesagt erfordern
die Gaußsche
Eliminierung und die Gauß-Jordan-Eliminierung das
Invertieren einer Matrix, jedes Mal, wenn ein zusätzliches
bedeutsames Bit angetroffen wird. Eine Matrix-Invertierung (Umkehrung)
ist eine relativ prozessorintensive Aufgabe. Der Prozessfluss aus 4 erfordert
jedoch das Bestimmen, ob die Gleichung für den aktuellen LFSR-Zyklus
linear abhängig
ist, was eine viel weniger prozessorintensive Aufgabe ist als eine
Matrixinvertierung. Dementsprechend kann ein Satz aus Stimulusmustern,
der mehrere Stunden zum Komprimieren unter Verwendung des Prozessflusses
aus 3 erfordert, nur Minuten zum Komprimieren unter
Verwendung des Prozessflusses aus 4 erfordern.
-
5 zeigt
ein Flussdiagramm zum Ausführen
einer Musterkomprimierung unter Verwendung einer Lauflängencodierung
gemäß repräsentativen Ausführungsbeispielen.
Bei Schritt 501 wird ein Stimulusmuster empfangen, das
eine Mehrzahl von bedeutsamen Bits und bedeutungslosen Bits umfasst. Da
Stimulusmuster üblicherweise
eine relativ niedrige Anzahl von bedeutsamen Bits relativ zu der
Anzahl von bedeutungslosen Bits besitzen, enthalten solche Stimulusmuster
häufig
Läufe aus
bedeutungslosen Bits. Ein Lauf ist die Sequenz aus aufeinander folgenden
Vorkommnissen desselben Werts. Bei Schritt 502 wird jedem
Bit in entsprechenden Läufen aus
bedeutungslosen Bits derselbe Wert zugewiesen. Bei repräsentativen
Ausführungsbeispielen
wird jeder Lauf aus bedeutungslosen Bits durch denselben Wert ersetzt,
wie z. B. den Wert des bedeutsamen Bits, der dem Lauf der bedeutungslosen
Bits direkt vorausgeht. Ferner wird isolierten bedeutungslosen Bits
(einzelne bedeutungslose Bits, denen entsprechende bedeutsame Bits
vorangehen und folgen) der Wert des direkt vorangehenden bedeutsamen
Bits zugewiesen. Zum Beispiel können
die Stimulusmuster, gegeben durch „01001XXX0X0X01101", verarbeitet werden,
um den binären
Bitstrom „01001111000001101" zu erzeugen. Das
Verarbeiten eines Stimulusmusters auf diese Weise wird als ein „Wiederholungsfüllen" bezeichnet und wird
ausgeführt
durch gegenwärtige
bekannte EDA/ATPG-Softwaretools. Bekannte Softwaretools führen ein
Wiederholungsfüllen
aus, um die Anzahl von binären Übergängen in
den Testmustern zu minimieren, zum Zweck des Minimierens der Leistungsabführung. Bei
diesem Ausführungsbeispiel
kann eine Komprimierung und Dekomprimierung von Testmustern auftreten,
ohne eine Modifikation von bekannten EDA/ATPG-Softwaretools zu erfordern.
-
Bei
Schritt 503 wird jeder Lauf aus Binärsymbolen in dem wiederholungsgefüllten, binären Strom lauflängencodiert,
z. B. unter Verwendung von Wechselphasen- und Variable-Länge-Codewörtern. Ein binäres Lauflängencodieren
bezieht sich auf das Codieren eines binären Stroms, wo Läufe aufeinander folgender
Vorkommnisse desselben binären
Werts durch ein Codewort ersetzt werden, das die Länge des
Laufs darstellt. Zum Beispiel könnte
ein Lauf von zwölf „Nullen" durch ein Codewort
ersetzt werden, das eine Lauflänge
von Zwölf
darstellt. Bei einem binären
Lauflängencodierungsschema
ist es nicht notwendig, den spezifischen binären Wert (entweder „Null" oder „Eins") zu definieren,
der in einem Lauf wiederholt wird. Genauer gesagt folgt jedem Lauf notwendigerweise
der entgegengesetzte Wert, d. h. einem Lauf aus „Nullen" folgt immer zumindest eine „Eins" und einem Lauf von „Einsen" folgt immer zumindest
eine „Null", wenn das Codierungsschema geeignet
definiert ist. Somit werden durch Definieren des ersten Vorkommens
eines binären
Symbols in dem lauflängencodierten
Testmuster alle Symbole der Lauflängencodes durch Wechseln zwischen „Null" und „Eins” in Bezug
auf das erste binäre
Symbol des Testmusters bestimmt. Bei repräsentativen Ausführungsbeispielen
werden Codewörter
variabler Länge
verwendet, um wiederholungsgefüllte
Testmuster einer Lauflängencodierung
zu unterziehen.
-
Bei
einem repräsentativen
Ausführungsbeispiel
werden Fibonacci-Codes eingesetzt, um eine Paralleldekomprimierungsarchitektur
zu implementieren. Fibonacci-Codes basieren auf der Fibonacci-Reihe,
wo jeder Wert die Summe der vorangehenden zwei Werte ist. Kein Fibonacci-Code
enthält
zwei aufeinander folgende binäre „Einsen". Ferner beginnt jeder
Fibonacci-Code mit dem Wert „Eins". Der Anfang eines
Bitstroms kann unter Verwendung von zwei „Einsen" initiiert werden. Ferner wird eine
zusätzliche „Eins" zu dem höchstwertigen
Bit (MSB; most significant bit) jedes Fibonacci-Codes in dem Bitstrom
addiert. Unter Verwendung dieser Eigenschaften können der Anfang und das Ende
jedes Fibonacci-Codes identifiziert werden, durch Erfassen des Vorkommens
von zwei aufeinander folgenden „Einsen" in dem Fibonacci-codierten Bitstrom
(d. h. ohne Decodieren des Codeworts). Ferner wird darauf hingewiesen,
dass die Erfassung eines individuellen Fibonacci-Codes die Extraktion
des dargestellten Werts nicht erfordert.
-
Um
die Wechselphasen-Lauflängencodierung
und Fibonacci-Codes
darzustellen, wird Bezug auf 6 und 7 genommen. 6 zeigt
einen Bitstrom 600, der eine Mehrzahl von Läufen aus
Binärwerten
enthält.
Genauer gesagt umfasst der Bitstrom 600 einen Lauf aus
zwei „Einsen", einen Lauf einer
einzelnen „Null", einen Lauf aus
vier „Nullen", einen Lauf aus
sieben „Einsen" und einen Lauf aus drei „Einsen", einen Lauf aus
15 „Einsen" und einen Lauf aus
sieben „Nullen". 7 zeigt
einen Fibonacci-codierten Bitstrom 700, bei dem jede Lauflänge (zwei,
eins, vier, sieben, drei, 15 und sieben) durch einen entsprechenden
Fibonacci-Code dargestellt ist, der eine zusätzliche „Eins" angehängt an das MSB-Bit des Codes
aufweist. Der Anfangs- und End-Punkt jedes Fibonacci-Codes kann
Bezug nehmend auf die Symbole 701, 702, 703, 704, 705, 706 und 707 bestimmt
werden, die jeweils dem Vorkommen von zwei aufeinander folgenden „Einsen" zugeordnet sind.
Der Endpunkt jedes Fibonacci-Codes > 1 wird direkt erfasst durch das Vorhandensein
von „011" (Symbole 701, 703, 704, 705, 706 und 707).
Jeder Endpunkt des Fibonacci-Codes = 1 ist gegeben durch „11". Der Endpunkt dieses
Fibonacci-Codes wird durch Verwenden des Endpunkts des direkt vorausgehenden
Fibonacci-Codes > 1
erfasst. Durch Darstellen der komprimierten Testmuster auf diese Weise
kann eine parallele Fibonacci-Decoder-Architektur 800 aus 8 eingesetzt
werden, um komprimierte Testmuster parallel einer Lauflängendecodierung
zu unterziehen, um die relativ anspruchsvollen Zeitgebungskriterien
der ATE zu unterstützen.
-
Bei
einem anderen darstellenden Ausführungsbeispiel
werden die Zählwert-Parameter,
erzeugt aus der LFSR-Komprimierung, unter Verwendung der Fibonacci-Codes
variabler Länge
codiert, wie oben Bezug nehmend auf 7 beschrieben
ist. Genauer gesagt wird ein Zählwert-Parameter
in einem normalen binären
Format durch einen Fibonacci-Code ersetzt, der denselben Wert darstellt.
Auf ähnliche
Weise können
die Ergebnismaskendaten parallel lauflängen-codiert und -decodiert
werden, durch eine ATE, unter Verwendung der Fibonacci-Codes, wie
oben Bezug nehmend auf 6 und 7 erörtert wurde.
Obwohl Fibonacci-Codes für ein
repräsentatives
Ausführungsbeispiel
beschrieben wurden, können
Dekomprimierungshardwareimplementierungen auf anderen Codewörtern variabler Länge basieren,
abhängig
von den Frequenzanforderungen, die einer bestimmten Anwendung zugeordnet
sind.
-
9 zeigt
ein Flussdiagramm zum Komprimieren von Testmusterdaten gemäß einem
darstellenden Ausführungsbeispiel.
Bei Schritt 901 wird eine gesetzte Anzahl von Mustern von
einem ATPG-Tool empfangen, ohne Zuweisung der Werte zu den bedeutungslosen
Bits. Bei Schritt 902 wird die gesetzte Anzahl von Mustern
unter Verwendung einer LFSR- Komprimierung
gemäß repräsentativen
Ausführungsbeispielen
komprimiert. Genauer gesagt werden ein Keim-Parameter und ein Zählwert-Parameter
für Folgen
aus Testdaten erzeugt, die keine linearen Abhängigkeiten mit widersprüchlichen
Werten für
bedeutsame Bits an dem Ort der linearen Abhängigkeiten besitzen. Bei Schritt 903 werden
dann die komprimierten Muster unter Verwendung des entsprechenden
LFSR dekomprimiert, um die Werte zu bestimmen, die den bedeutungslosen
Bit zugewiesen sind, durch das LFSR, unter Verwendung der entsprechenden
Keim- und Zählwert-Parameter.
Bei Schritt 904 werden die dekomprimierten Muster zu einem
Fehlersimulationstool geliefert. Bei Schritt 905 wird aus
dem Fehlersimulationstool die Peripherabdeckung der dekomprimierten
Muster bestimmt. Genauer gesagt werden Zustände, die durch die pseudozufällige Zuweisung
von Werten zu den bedeutungslosen Bits stimuliert werden, identifiziert.
Bei Schritt 906 kann die gesetzte Anzahl von Mustern nach
Bedarf erhöht
werden. Eine relativ niedrige Anzahl von Mustern (z. B. zehn Muster)
kann während der
Anfangsstufen komprimiert werden. Die gesetzte Anzahl von Mustern
kann periodisch während
des Prozessflusses erhöht
werden, bis eine viel größere Anzahl
von Mustern (z. B. 100) während
einer einzelnen Verarbeitungsstufe komprimiert wird. Bei Schritt 907 wird
eine logische Bestimmung ausgeführt,
um zu bestimmen, ob alle Fehler unter Verwendung der komprimierten
Muster stimuliert werden. Wenn nicht, kehrt der Prozessfluss zu
Schritt 901 zurück,
wo eine andere gesetzte Anzahl von Mustern von dem ATPG empfangen
wird, unter Verwendung der erhöhten
Anzahl von Mustern. Wenn alle Fehler stimuliert sind, geht der Prozessfluss
zu Schritt 908 über.
Bei Schritt 908 wird ein Versuch gemacht, Muster unter
Verwendung einer Rückwärtsfehlersimulation
und Musterneuordnung fallen zu lassen.
-
Durch
Erhöhen
der Anzahl von Mustern während
des Komprimierungsprozesses liefern repräsentative Ausführungsbeispiele
eine Anzahl von Vorteilen. Zum Beispiel können Fehler in „einfach
erfassbare" Fehler
und „schwierige" Fehler katego risiert werden.
Einfach erfassbare Fehler können
durch eine relativ große
Anzahl von Mustern stimuliert werden. Dementsprechend, wenn eine
Komprimierung von Testmustern gemäß repräsentativen Ausführungsbeispielen
auftritt, ist eine Peripherabdeckung der dekomprimierten Muster
für eine
relativ kleine Anzahl von Mustern höchstwahrscheinlich. Nachdem jedoch
eine Anzahl von Mustern verarbeitet wird, ist ein wesentlicher Abschnitt
der einfach erfassbaren Fehler bereits abgedeckt und somit verringert
sich der Betrag der Peripherabdeckung relativ zu der Anzahl von
verarbeiteten Mustern. Somit können
durch Erhöhen
der gesetzten Anzahl von Mustern prozessorintensive Aufgaben von
Komprimierung, Dekomprimierung und Fehlersimulation reduziert werden.
-
Wie
vorangehend erörtert
wurde, ist bei einem repräsentativen
Ausführungsbeispiel
die LFSR-Codierung unter Verwendung eines einzelnen Paares aus Keim-
und Zählwert-Parametern
durch das Vorkommen eines bedeutsamen Bits begrenzt, das einer LFSR-Gleichung
zugeordnet ist, die linear abhängig
ist von einer oder mehreren vorangehenden LFSR-Gleichung oder -Gleichungen,
wo der Wert des bedeutsamen Bits in Konflikt zu dem Wert des oder
der bedeutsamen Bits ist, das oder die der oder den vorangehenden
Gleichungen zugeordnet ist/sind. Ein repräsentatives Ausführungsbeispiel adressiert
diese Beschränkung
durch Reduzieren der Wahrscheinlichkeit des Vorkommens von linearen
Abhängigkeiten
für bedeutsame
Bits. Genauer gesagt wird eine Übertaktungsarchitektur
verwendet, um die Wahrscheinlichkeit linearer Abhängigkeiten zu
reduzieren.
-
10 zeigt
ein Vier-Bit-LFSR 1000 mit Rückkopplungsabgriffen und 11 zeigt
ein Vier-Bit-LFSR 1100 mit „2-maliger" Übertaktung,
das aus dem LFSR 1000 hergeleitet werden kann. Aufgrund
der Übertaktungseigenschaft
des LFSR 1100 umfasst das LFSR 1100 Vorwärtskopplungs-
und Rückkopplungs-Abgriffe.
Da das LFSR 1100 eine Übertaktung
einsetzt, wird die Wahrscheinlichkeit von linearen Abhängigkeiten,
die während
der Komprimierung von Testdaten unter Verwendung einer LFSR-Keimwertneueinstellung
auftreten, relativ zu dem LFSR 1000 reduziert.
-
Eine
Methode der formalen Synthese kann eingesetzt werden, um eine Übertaktungsarchitektur aus
einem beliebigen LFSR herzuleiten. Genauer gesagt wird das charakterisierende
Polynom des LFSR bestimmt. Das charakterisierende Polynom ist „1100" für das LFSR 1000,
wie in 10 ersichtlich ist. Eine Quadrat-Übergangs-Matrix
wird unter Verwendung des charakterisierenden Polynoms definiert.
Zum Beispiel ist die Quadrat-Übergangs-Matrix 1200 in 12 für das LFSR 1000 gezeigt.
Die untere Reihe (gezeigt als Reihe 1201) der Quadrat-Übergangs-Matrix
ist das charakterisierende Polynom des LFSR 1000. Die erste
Spalte mit Ausnahme des letzten Werts (gezeigt als 1202)
ist mit Nullen gefüllt.
Die verbleibenden Werte (gezeigt als 1203) werden unter Verwendung
einer Quadrat-Diagonal-Matrix gefüllt.
-
Die
Quadrat-Übergangs-Matrix
wird potenziert, wie durch den gewünschten Grad an Übertaktung
definiert ist. Zum Beispiel zeigt 13 eine
Matrix 1300, die durch Heben der Matrix 1200 in
die zweite Potenz hergeleitet wird. Die Matrix 1300 definiert
die Vorwärtskopplungs-
und Rückkopplungsverbindungen.
Genauer gesagt definiert jedes Element i, j der Matrix, ob eine
Verbindung zwischen i-ten Flip-Flop des LFSR und dem j-ten Flip-Flop
des LFSR eingesetzt wird. XOR-Gatter
werden für
Elemente eingesetzt, die mehrere Rückkopplungs- und/oder Vorwärtskopplungsverbindungen
besitzen. Die Matrix 1300 resultiert in den Verbindungen,
die in dem LFSR 1400 aus 14 gezeigt
sind. Die Topologie des LFSR 1400 kann vereinfacht werden
durch Neuordnen der Positionen der Flip-Flops, was zu dem LFSR 1100 führt, wie
in 11 gezeigt ist.
-
Die
Synthese-Methode zum Entwerfen von Übertaktungs-LFSR kann für LFSRs
jeglicher Länge und
für jeden
Grad einer erwünschten Übertaktung eingesetzt
werden, was Hardwarebeschränkungen unterliegt.
Bei einem darstellenden Ausfüh rungsbeispiel
werden LFSRs der Länge
von 64 Bits und 128 Bits mit einer 10-maligen Übertaktung eingesetzt, um die
Wahrscheinlichkeit zu reduzieren, dass lineare Abhängigkeiten
während
einer LFSR-basierten Komprimierung von Testmusterdaten auftreten.
-
15 zeigt
ein automatisches Testausrüstungssystem
(ATE-System) 1500 gemäß einem
repräsentativen
Ausführungsbeispiel.
Die ATE 1510 wendet Testmuster auf eine zu testende Schaltung 1507 in
Echtzeit an, um die Funktionalität
der Schaltung 1507 zu verifizieren. Die ATE 1510 kann
kommunikativ mit der Arbeitsstation 1501 oder einem anderen
geeigneten Computersystem verbunden sein. Die Arbeitsstation 1501 kann
geeignet ausführbare Anweisungen
oder Code umfassen, die eine automatische Testmusterverarbeitung
gemäß repräsentativen
Ausführungsbeispielen
definieren (gezeigt als ATPG-Verarbeitungslogik 1511).
Die Arbeitsstation 1501 kann komprimierte Testmusterdaten,
komprimierte Maskendaten und erwartete Ergebnissignaturen, die durch
die ATPG-Verarbeitungslogik 1511 erzeugt
werden, auf den Speicher 1503 der ATE 1510 herunterladen.
Die ATE 1510 kann Testergebnisdaten zu der Arbeitsstation 1601 kommunizieren,
um eine Nachverarbeitung der Testdaten nach Wunsch zu ermöglichen.
-
Während der
Operation der ATE 1510 kann die Steuerlogik 1502 geeignete,
komprimierte Muster aus dem Speicher 1503 wiedergewinnen
und die komprimierten Muster zu der Dekomprimierungs- und Zusammenfügungslogik 1505 liefern.
Die Dekomprimierungs- und Musterzusammenführungslogik 1505 kann
ein LFSR zum Dekomprimieren von Testmustern gemäß Keim- und Zählwert-Parametern umfassen.
Das LFSR kann unter Verwendung einer relativen großen Anzahl
von Flip-Flops implementiert sein, gekennzeichnet durch ein nichtprimitives
Polynom. Ferner kann das LFSR Vorwärtskopplungs- und Rückkopplungsabgriffe
umfassen. Durch derartiges Implementieren des LFSR können relativ
hoch kompaktierte Testmuster auf die zu testende Schaltung 1507 angewendet
werden.
-
Zusätzlich oder
alternativ kann die Dekomprimierungs- und Musterzusammenfügungslogik 1505 eine
Dekomprimierung gemäß einem
Lauflängencodierungsschema
ausführen.
Zum Beispiel können
Fibonacci-Codes segmentiert und dann parallel decodiert werden.
Durch paralleles Decodieren der Codewörter kann eine ausreichend
hohe Datenrate erreicht werden, um die Echtzeitanwendung von Testdaten
auf die zu testende Schaltung 1507 zu unterstützen. Zum
Beispiel kann die Serialisierung oder Zusammenfügung von Daten aus parallelen
Fibonacci-Decodern der ATE 1510 ermöglichen, Testdaten bei einer
Gigahertz- oder größeren Bitrate
zu liefern, um zu ermöglichen,
dass eine Schaltung in Echtzeit getestet wird.
-
Die
dekomprimierten Testdaten werden von der Dekomprimierungs- und Musterzusammenfügungslogik 1505 zu
der Musteranwendungslogik 1506 geliefert. Die Musteranwendungslogik 1506 liefert
die Testdaten zu entsprechenden Stiften oder anderen Verbindungen
der zu testenden Schaltung 1507. Die Musteranwendungslogik 1506 ruft
ferner Ergebnisdaten aus der zu testenden Schaltung 1507 ab.
Die Ergebnisdaten werden zu der Ergebnislogik 1504 geliefert.
Die Ergebnislogik 1504 wendet eine Datenmaske auf die Ergebnisdaten
an. Die Datenmaske kann dekomprimiert werden durch Ausführen einer
parallelen Decodierung von Fibonacci-Codes. Die Ergebnislogik 1504 sammelt
die maskierten Ergebnisdaten über
ein Fenster aus Zyklen, um Ergebnissignaturen zu bilden. Die berechneten
Ergebnissignaturen werden mit erwarteten Ergebnissignaturen verglichen.
Wenn die Ergebnissignaturen nicht übereinstimmen, werden alle
Ergebnisdaten für
das fehlerhafte Fenster in dem Speicher 1503 zur Nachverarbeitung
durch die Arbeitsstation 1501 gespeichert. Im Gegensatz
dazu sind chipinterne Komprimierungstechniken nicht in der Lage,
einen fehlerhaften Zyklus direkt zu identifizieren. Solche Techniken
betreiben einen fehlerhaften Test erneut ohne Komprimierung, so
dass alle Testantworten registriert werden können. Repräsentative Ausführungsbeispiele erfordern
kein solches zusätzliches
Testen und ermöglichen
da durch, dass ein Schaltungstesten auf effizientere Weise auftritt
als chipinterne Dekomprimierungstechniken. Chipinterne Ausgangskomprimierungstechniken
basierend auf Kompaktierer-Bäumen
zeigen diesen Punkt nicht.
-
16 zeigt
eine ATE 1600, die eine „Drosselungs"-Fähigkeit
verwendet, um die Wiedergewinnung von Testdaten aus dem ATE-Speicher 1603 zu steuern,
gemäß einem
repräsentativen
Ausführungsbeispiel.
Genauer gesagt erhält
der Testprozessor 1601 Testdaten 1604 aus dem
ATE-Speicher 1603 zur Ausweitung und Kommunikation zu dem
zu testenden Chip 1606. Die Drosselungslogik 1602 des Testprozessors 1601 verursacht,
dass die Kommunikation der Testdaten 1604 zu geeigneten
Zeiten temporär
unterbrochen wird. Genauer gesagt wird ein Drosselsignal 1605 zu
der ATE-Speichersteuerung kommuniziert,
um die Kommunikation der Testdaten 1604 anzuhalten. Die
Fähigkeit,
das Herunterladen von Daten aus dem ATE-Speicher während der
Operation der ATE 1600 einzustellen ist für eine Anzahl von
Situationen vorteilhaft.
-
Genauer
gesagt, wenn eine ATE in Kombination mit einer chipinternen Dekomprimierung
verwendet wird, ist ein wiederholtes Problem die Tatsache, dass
der Datenstrom aus der ATE während
der Dekomprimierung eines Bitsatzes auf dem Chip nicht gestoppt
wird. Daher, obwohl das theoretisch hohe Komprimierungsverhältnis auf
dem Chip erreicht werden könnte,
ist das Komprimierungsverhältnis
in der Praxis begrenzt, da die ATE nicht gestoppt werden kann. Leerlaufzyklen
könnten
in dem ATE-Speicher 1606 gespeichert sein, um die Unfähigkeit
zu adressieren, ATE-Operationen anzuhalten. Die Notwendigkeit, Leerlaufzyklen
zu speichern, reduziert die Effektivität des Komprimierungsschemas.
Zum Beispiel könnte
eine einzelne Kombination eines Keim-Parameters und eines Zählwert-Parameters
in 2048 Bits ausgedehnt werden (oder mehr, abhängig von der Implementierung
des LFSR). Bei der chipinternen Dekomprimierung würde die
Kombination dazu führen,
dass eine große
Anzahl von Leerlaufdatenbits aus dem Speicher wiedergewonnen wird.
Im Gegensatz dazu können
einige repräsentative
Ausführungsbeispiele
die „Drosselungs"-Fähigkeit
während
der LFSR-Expansion (-Erweiterung) einsetzen. Genauer gesagt stellen
repräsentative
Ausführungsbeispiele
während
Drosselungsoperationen das Wiedergewinnen von Testdaten aus dem
Speicher ein, während
andere Operationen auftreten. Dadurch wird die Datenmenge, die in
dem ATE-Speicher 1603 gespeichert ist, reduziert.
-
Ferner
kann die Drosselungsfähigkeit
für andere
Situationen verwendet werden. Zum Beispiel kann die eingebaute Selbsttest-(BIST-;
built-in self-test)Schaltungsanordnung 1607, die in dem
zu testenden Chip 1606 enthalten ist, Verzögerungen während einer
Anzahl von Operationen verursachen. Während solcher Zeiten werden
nützliche
Testdaten nicht zwischen der ATE und dem zu testenden Chip 1606 kommuniziert.
Wie vorangehend erwähnt
wurde, ist es aufgrund des Entwurfs der ATEs nicht möglich, die
Kommunikation von Bits zu dem zu testenden Chip 1606 zu
stoppen. Genauer gesagt werden Bits weiter durch die Schnittstelle
zu dem Chip kommuniziert, obwohl jene Bits nicht zu Testzwecken
verwendet werden. Leerlaufbits könnten
in dem ATE-Speicher gespeichert werden, um diese Situationen zu
adressieren. Dies ist ein wiederholt auftretendes Problem bei dem
Speichertest. Repräsentative
Ausführungsbeispiele
ermöglichen
das Weglassen der Speicherung solcher Leerlaufbits in dem ATE-Speicher 1603 unter
Verwendung der Drosselungsfähigkeit.
-
Es
wird darauf hingewiesen, dass herkömmliche Wiederholungszählanweisungen
(Anweisungen, die verursachen, dass ein Wert für mehrere Zyklen wiederholt
wird) verwendet werden könnten,
um die Anzahl von Leerlaufzyklen zu reduzieren, die in dem ATE-Speicher
gespeichert sind. Lauflängenkomprimierungstechniken
ermöglichen
jedoch eine feinere Körnung
von Lauflängen,
weniger Mehraufwand pro Lauflänge
und Erreichen daher höhere Komprimierungsverhältnisse.
-
17 zeigt
eine ATE 1700, die BIST-Verzögerungen und andere ähnliche
Situationen gemäß einem
repräsentativen
Ausführungsbeispiel
adressiert. Wie in 17 gezeigt ist, werden Testdaten 1701 von
dem ATE-Speicher 1603 zu dem Testprozessor 1601 kommuniziert.
Der Testprozessor 1601 expandiert die empfangenen Daten
und kommuniziert die expandierten Daten zu dem zu testenden Chip 1606. Zum
Zweck der Darstellung sei angenommen, dass der zu testende Chip 1606 eine
BIST-Schaltungsanordnung 1607 einsetzt, die an vordefinierten
Punkten eine Verzögerung
von N Sekunden auferlegt. Testdaten 1701 werden Lauflängencodiert,
um die Verzögerung
zu adressieren. Genauer gesagt können
ein oder mehrere Lauflängencodes
in Testdaten 1701 platziert sein, um eine ausreichende
Menge an dekomprimierten Daten zu erzeugen, die den N Sekunden Verzögerung entsprechen.
Die Verwendung von Lauflängencodes,
um solche Verzögerungen
zu adressieren, ermöglicht
ein besseres Komprimierungsverhalten als die Verwendung von Leerlaufzyklen.
-
18 zeigt
ein ATE-Teilsystem 1800, das eine wiederholte gruppenweise
Verarbeitung einsetzt. Genauer gesagt werden Testdaten, die auf
entsprechende Stifte angewendet werden sollen, durch eine Wiederholung-Pro-Gruppe-Logik 1801 empfangen.
Die Wiederholung-Pro-Gruppe-Logik 1801 ist eine gemeinschaftlich
verwendete Ressource, die verursacht, dass Testdaten über die
mehreren Kanäle
wiederholt werden. Zum Beispiel, wenn das Bitmuster „0001", das auf die Stifte
angewendet werden soll, die den Kanälen 1, 2, 3 und 4 zugeordnet
sind, mehrere Male wiederholt wird, könnte eine Zählwert-Wiederholen-Anweisung
durch die Wiederholen-Pro-Gruppe-Logik 1801 angewendet
werden, was verursacht, dass das erste Vorkommen des Bitmusters
für mehrere
Zyklen wiederholt wird. Die Schwierigkeit, die der gemeinschaftlich
verwendeten Ressourcenarchitektur zugeordnet ist, ist die Abhängigkeit
der Testdaten über
mehrere Kanäle.
Genauer gesagt, wenn ein Bitmuster von „1001" nach dem Bitmuster von „0001" auftritt, könnte aufgrund
der Änderung
bei einem einzelnen Bit die Zählwert-Wiederholen-Anweisung
nicht verwendet werden.
-
19 zeigt
ein ATE-Teilsystem 1900, das ermöglicht, dass eine Pro-Stift-Verarbeitung
gemäß einem
repräsentativen
Ausführungsbeispiel
auftritt. Bei der Pro-Stift-Verarbeitung
wird eine Dekomprimierungsfunktionalität für jeden relevanten Stift der zu
testenden Schaltung eingesetzt, die Testdaten empfängt. Wie
in 19 gezeigt ist, ist eine Mehrzahl von Dekomprimierungsmaschinen 1901-1 bis 1901-N bereitgestellt.
Jede Dekomprimierungsmaschine 1901 empfängt unabhängig komprimierte Testmusterdaten
und erzeugt dekomprimierte Testmusterdaten. Zum Beispiel kann jede
der Maschinen 1901 ein LFSR und eine verwandte Schaltungsanordnung
zum Erzeugen dekomprimierter Testdaten umfassen. Alternativ kann
jede der Maschinen 1901 Parallellauflängendecodierer umfassen, um
dekomprimierte Testdaten zu erzeugen. Die Testdaten können in
Vektorpuffern 1902-1 bis 1902-N zwischengespeichert
werden. Die Daten, die in den Vektorpuffer 1902-1 bis 1902-N gespeichert
sind, können
durch Kanäle 1903-1 bis 1903-N zu
entsprechenden Stiften der zu testenden Schaltung unter der Steuerung
einer geeigneten Testdatenanwendungslogik kommuniziert werden. Die
Fähigkeit,
eine Pro-Stift-Verarbeitung einzusetzen, ermöglicht einen größeren Grad an
Flexibilität
für die
Komprimierungscodierung und somit einen größeren Grad einer Komprimierungsleistung.
-
Einige
repräsentative
Ausführungsbeispiele können eine
Anzahl von Vorteilen liefern. Einige repräsentative Ausführungsbeispiele
sind vorteilhaft im Vergleich zu chipinternen Komprimierungstechniken, da
das Ausführen
einer Dekomprimierung mit der ATE keine Modifikation an dem Entwurf
einer zu testenden Schaltung erfordert. Dementsprechend erhöhen einige
repräsentative
Ausführungsbeispiele
das Risiko nicht, das der Fertigstellung des Entwurfs der Schaltung
zugeordnet ist. Ferner ermöglichen
einige repräsentative
Ausführungsbeispiele,
dass hoch kompaktierte Testmus ter komprimiert werden, wodurch Testzeiten
innerhalb angemessener Bereiche gehalten werden. Einige repräsentative
Ausführungsbeispiele
sind vorteilhaft, da das Codieren linear abhängiger Testdaten ohne in Konflikt
stehender Werte zusätzlich
zu linear unabhängigen
Testdaten den erreichten Komprimierungsbetrag erhöht. Der größere Betrag
an Komprimierung ermöglicht,
dass hoch kompaktierte Testsätze
codiert werden, wodurch der Betrag an Testzeit verringert wird.
Zusätzlich
dazu ermöglichen
einige repräsentative
Ausführungsbeispiele,
dass eine Dekomprimierung in Echtzeit auftritt, gleichzeitig zu
der Anwendung von Testdaten auf eine zu testende Schaltung durch
eine ATE durch Verwenden eines geeignet implementierten LFSR und/oder
paralleler Lauflängendecodierer.
Genauer gesagt kann eine Bitstromrate von 400 MHz oder mehr unter
Verwendung einiger repräsentativer Ausführungsbeispiele
erreicht werden.