-
Im
täglichen
Leben sind elektronische Geräte
und deren Leistungsfähigkeiten
mittlerweile weit verbreitet. Außer dem Personalcomputer zu
Hause tragen viele Menschen mehr als ein Produktivitätsgerät für die verschiedensten
Zwecke mit sich. Die meisten persönlichen elektronischen Produktivitätsgeräte umfassen
eine Form von nicht-flüchtigem Speicher.
Mobiltelephone verwenden nicht-flüchtige Speicher, um benutzerprogrammierte
Telephonnummern und Konfigurationen zu speichern und zu erhalten,
wenn die Leistung abgeschaltet ist. PCMCIA-Karten verwenden nicht-flüchtigen
Speicher, um Informationen zu speichern und zu erhalten, selbst wenn
die Karte von ihrem Schlitz in dem Computer entfernt ist. Viele
andere weit verbreitete elektronische Geräte profitieren ebenfalls von
der Langzeitspeicherfähigkeit
von nicht-flüchtigem
Speicher in nicht-betriebenen Anordnungen.
-
Die
Hersteller von nicht-flüchtigen
Speichern, die an die Hersteller von elektronischer Ausrüstung verkaufen,
erfordern Tester, um den richtigen Betrieb der Speicher, die sie
herstellen, auszuführen und
zu verifizieren. Aufgrund der Menge an nicht-flüchtigen Speichern, die hergestellt
werden und bei fortlaufend niedrigen Preisen verkauft werden, ist
es sehr wichtig, die Zeit zu minimieren, die benötigt wird, um ein einzelnes
Teil zu testen. Aufgrund der Kosteneinsparungen im Zusammenhang mit
der Praxis des Einbauens der Speicherelemente in teurere Anordnungen
mit minimalem oder ohne Testen fordern die Käufer von nicht-flüchtigen
Speichern von den Speicherherstellern, daß dieselben hohe Versanderträge erzielen.
Dementsprechend muß der
Speichertestprozeß ausreichend
effizient sein, um einen großen
Prozentsatz von fehlerhaften Teilen und vorzugsweise alle fehlerhaften
Teile in einem einzigen Testprozeß zu identifizieren.
-
Während nicht-flüchtige Speicher
größer, dichter
und komplexer werden, müssen
die Tester in der Lage sein, die erhöhte Größe und Komplexität zu bearbeiten,
ohne die Zeit wesentlich zu erhöhen,
die benötigt
wird, um dieselben zu testen. Speichertester laufen häufig kontinuierlich,
und die Testzeit wird als ein Hauptfaktor in bezug auf die Kosten
des fertigen Teils angesehen. Während
sich Speicher entwickeln und verbessern, muß der Tester in der Lage sein, sich
leicht an die Änderungen
anzupassen, die an dem Element durchgeführt wurden. Ein weiteres spezifisches
Thema beim Testen nicht-flüchtiger
Speicher ist, daß wiederholte
Schreibvorgänge
auf Zellen der Speicher die Gesamtlebensdauerleistungsfähigkeit
des Teils verschlechtern können.
Die Hersteller von nicht-flüchtigen
Speichern haben auf viele der Testaufgaben durch Einbauen spezieller
Testmodi in die Speicherelemente reagiert. Diese Testmodi werden
von dem Käufer
des Speichers überhaupt
nicht verwendet, aber der Hersteller kann auf dieselben zugreifen,
um alle oder wesentliche Abschnitte der Speicher in so kurzer Zeit
wie möglich
und so effizient wie möglich
zu testen. Einige nicht-flüchtige
Speicher können
auch während
dem Testprozeß repariert
werden. Der Tester sollte daher in der Lage sein, folgendes zu identifizieren:
eine benötigte
Reparatur, eine Position der Reparatur, den Typ der benötigten Reparatur,
und muß dann
in der Lage sein, die geeignete Reparatur durchzuführen. Ein
solcher Reparaturprozeß erfordert,
daß ein
Tester in der Lage ist, einen spezifischen fehlerhaften Abschnitt
des Speichers zu erfassen und abzutrennen. Um die gesamten Vorteile der
speziellen Testmodi als auch der Reparaturfunktionen zu erhalten,
ist es für
einen Tester von Vorteil, in der Lage zu sein, ein Testprogramm
auszuführen, das
eine bedingte Verzweigung auf der Basis einer erwarteten Ansprache
von dem Element unterstützt.
-
Von
einer konzeptionellen Perspektive aus ist der Prozeß des Testens
von Speichern ein algorithmischer Prozeß. Als Beispiel umfassen typische Tests
das sequentielle Inkrementieren oder Dekrementieren von Speicheradressen,
während
Nullen und Einsen in die Speicherzellen geschrieben werden. Es ist
gebräuchlich,
eine Ansammlung von Einsen und Nullen, die während einem Speicherzyklus geschrieben
oder gelesen werden, als einen „Vektor" zu bezeichnen, während sich der Begriff "Struktur" auf eine Sequenz
von Vektoren bezieht. Es ist bei Tests gebräuchlich, Schreibstrukturen,
wie z. B. Schachbretter, laufende Einsen und Schmetterlingsstrukturen
in den Speicherplatz aufzunehmen. Ein Testentwickler kann mit der
Hilfe von algorithmischen Elementen ein solches Programm zum Erzeugen dieser
Strukturen leichter und effizienter erzeugen. Eine Teststruktur,
die algorithmisch kohärent
ist, ist ausserdem bei der Fehlersuche einfacher, und logische Verfahren
sind zum Isolieren von Abschnitten der Struktur, die nicht wie erwartet
funktionieren, leichter zu verwenden. Eine Teststruktur, die unter Verwendung
von Anweisungen und Befehlen, die in Programmierschleifen wiederholt
werden, algorithmisch erzeugt wurde, verbraucht in dem Testerspeicher
weniger Platz. Dementsprechend ist es wünschenswert, in einem Speichertester
eine algorithmische Teststrukturerzeugungsfähigkeit zu haben.
-
Die
genaue Signalflankenplazierung und -erfassung ist ebenfalls eine
Erwägung
bei der Effektivität
eines Testers für
nicht-flüchtigen
Speicher. Um Teile zu erfassen, die im allgemeinen einem Medianwert
entsprechen, während
sie nicht innerhalb der spezifizierten Spanne entsprechen, muss
ein nicht-flüchtiger
Speichertester in der Lage sein, jede Signalflanke bezüglich der
Zeit zu einer anderen Signalflanke präzise zu plazieren. Es ist ausserdem wichtig,
dass derselbe in der Lage ist, genau zu messen, zu welchem Zeitpunkt
eine Signalflanke empfangen wird. Dementsprechend sollte ein nicht-flüchtiger
Speichertester ausreichend Flexibilität aufweisen und Steuerung der
Zeitgebung und Plazierung von Stimuli und Antworten bzw. Ansprechen
von dem zu testenden Gerät
(Speicher).
-
Die
Speichertester sollen Sendevektoren erzeugen, die an das DUT (device
under test = zu testendes Gerät)
angelegt werden (Stimulus), und Vektoren empfangen, die als Reaktion
erwartet werden (Antwort). Die algorithmische Logik, die diese Vektoren
erzeugt, kann dies im allgemeinen durchführen, ohne sich damit zu befassen,
wie ein spezielles Bit in einem Vektor von oder zu einer speziellen
Signalanschlußstelle
in dem DUT gelangt, da der Speichertester Abbildungsanordnungen
zum Routen von Signalen zu und von den Pins, die mit dem DUT in
Kontakt treten, enthält.
Die Sammlung der algorithmischen Erzeugung von Mustern, eines Einstellens
von Schwellen, einer Signalkonditionierung und von Vergleichsmechanismen,
und der Sonden, die dieses mit dem DUT verbinden, wird als ein Testort
bezeichnet. Im einfachen Fall liegt ein DUT pro Testort vor.
-
Speichertester
weisen einen inneren Testspeicher auf, der verwendet wird, um den
Testvorgang zu erleichtern. Dieser innere Testspeicher kann für mehrere
Zwecke verwendet werden, u.a. zum Speichern von Sendevektoren vor
der Zeit, im Gegensatz dazu, sie in Echtzeit zu erzeugen, zum Speichern
erwarteter Empfangsvektoren, und zum Speichern einer Vielzahl von
Fehlerhinweisen und anderer Informationen in bezug auf ein DUT-Verhalten,
die während
des Testens erhalten werden. (Es gibt auch Systemverwaltungszwecke,
die dem Betrieb des Speichertesters innewohnen, die RAM verwenden und
die in den Anwendungsbereich des Begriffes „innerer Speicher" zu fallen scheinen.
Diese sind eigens für
den internen Betrieb des Testers reserviert, sind in der Regel auf
der algorithmischen Ebene nicht sichtbar und sind mit Speichern
für ausführbare Anweisungen
und mit inneren Steuerungsregistern vergleichbar. Dieser Speicher
wird als „innerer
Steuerungsspeicher" beschrieben
und ist von dem, was hierin unter dem Begriff „innerer Testspeicher" verstanden wird,
ausgeschlossen. Wir verwenden den Begriff „innerer Testspeicher", um einen Speicher
zu beschreiben, der verwendet wird, um Bitmuster zu speichern, die
direkt mit dem Stimulus des und der Antwort von dem DUT in Beziehung
stehen.) Es ist leicht zu erkennen, daß dieser innere Testspeicher mindestens
so schnell arbeiten muß,
wie die Tests durchgeführt
werden; ein sehr übliches
Paradigma besteht darin, daß der
innere Testspeicher (oder ein Teil desselben) durch dieselbe Adresse
(oder eine Ableitung derselben), die auf das DUT angewandt wird,
adressiert wird. Das, was daraufhin bei dieser adressierten Stelle
in dem inneren Testspeicher gespeichert wird, zeigt ein DUT-Verhalten
während
eines Testbetriebs, der an dem DUT an dieser Adresse durchgeführt wird,
an. Algorithmische Überlegungen in
dem Testprogramm können
bedeuten, daß die
Sequenz von Adressen, die aufeinanderfolgenden Sendevektoren zugeordnet
sind, willkürlich
sein kann. Somit muß der
innere Speicher die zweifachen Attribute einer hohen Geschwindigkeit
und einer Zufallsadressierbarkeit aufweisen. Man denkt sofort an SRAM,
der schnell, leicht zu steuern und bezüglich eines völlig zufälligen Adressierens
tolerant ist. In der Tat verwendeten und verwenden herkömmliche
Speichertester SRAM als ihren inneren Testspeicher.
-
Ungünstigerweise
ist SRAM ziemlich teuer, und dies schränkt den Grad an innerem Testspeicher ein,
mit dem Speichertester bisher arbeiten mußten. Das Ergebnis sind Einschränkungen
der Speichertesterfunktionalität,
die durch einen Mangel an Speicher verursacht werden. DRAM ist bedeutend
kostengünstiger,
kann jedoch nicht ein zufälliges
Adressieren tolerieren und trotzdem bei hoher Geschwindigkeit arbeiten.
-
DRAM
kann SRAM als innerer Testspeicher in einem Speichertester ersetzen.
Wie unten kurz beschrieben ist, kann das Problem des Erhöhens der Geschwindigkeit
eines DRAM-Betriebs
zur Verwendung als innerer Testspeicher gelöst werden, indem man den Grad
an verwendetem DRAM erhöht,
anstatt dessen Geschwindigkeit zu erhöhen. Anzahlen identischer DRAM-Banken
werden als Gruppen behandelt. Eine Kombination aus Verschachtelungssignalen
für unterschiedliche
Speicherbanken in einer Gruppe derselben, und ein Multiplexieren
zwischen diesen Gruppen von Banken verlangsamt den Speicherverkehr
für eine
jegliche Bank bis zu einer Rate, die die Bank bewerkstelligen kann.
-
Auf
der höchsten
Ebene der Organisation eines inneren Testspeichers gibt es vier
Speichersätze, von
denen jeder sei nen eigenen und unabhängigen Adreßraum aufweist und angeforderte
Speichertransaktionen durchführt.
Zwei sind vom SDRAM-Typ, wie oben beschrieben, und zwei sind vom
SRAM-Typ. Jeder
Speichersatz weist seine eigene Steuerung auf, zu der Speichertransaktionen geleitet
werden. Was extern sichtbare betriebsbezogene Fähigkeiten als Speicher angeht,
sind alle vier Speichersätze
im wesentlichen identisch. Sie unterscheiden sich lediglich in der
Größe ihres
Speicherraums und darin, wie sie intern implementiert sind: Die
SRAM-Speichersätze
verwenden kein Multiplexieren und Verschachteln, da sie von Anfang
an schnell genug sind. Trotz ihrer Unabhängigkeit können Speichersätze von
demselben Typ (SRAM oder DRAM) „gestapelt" sein, das heißt als ein größerer Adreßraum behandelt
werden.
-
Somit
ist der innere Testspeicher des Testers in vier Speichersätze unterteilt,
von denen zwei „interne" SRAMs sind und von
denen zwei „externe" DRAMs sind. Sicherlich
ist dieser gesamte Speicher physisch in dem Speichertester angeordnet;
die Begriffe „intern" und „extern" haben mehr mit einer
Integrationsebene zu tun. Die SRAMs sind integrale Bestandteile
einer VLSI-Schaltung (VLSI = Integration in sehr großem Umfang),
die der zentralen funktionalen Schaltungsanordnung des Testers zugeordnet
ist, während
die DRAMs einzeln verpackte Teile sind, die benachbart zu dem VLSI-Material
angebracht sind. Das Maß an
SRAM ist relativ gering (sagen wir ungefähr ein Megabit pro Speichersatz),
während
das Maß an
DRAM beträchtlich
und auswählbar
ist (sagen wir im Bereich von 128 bis 1024 Megabits pro Speichersatz).
Die SRAM-Speichersätze
liegen immer vor und können
für jeglichen
geeigneten Zweck verwendet werden, beispielsweise zum Speichern des
erwarteten Inhalts eines DUT, das ein ROM (Festwertspeicher) ist.
Obwohl sie tatsächlich
optional sind, werden die DRAM-Speichersätze in der Regel zum Erzeugen
einer Spur für
eine nachfolgende Analyse, die zu einer Reparatur führt, verwendet;
es gibt aber auch andere Verwendungen. Im Prinzip muß der Tester
keine Unterscheidungen zwischen den SRAM- und DRAM-Speichersätzen in bezug
auf unterschiedliche Zwecke, für
die sie verwendet werden können,
durchsetzen. Es gibt einige praktische Unterscheidungen, die sich
hauptsächlich
in puncto Größe ergeben;
die SRAM-Speichersätze
sind klein, während
die DRAM-Speichersätze potentiell
riesig sind. Die Person(en), die das Testprogrammieren erzeugt bzw.
erzeugen, trifft bzw. treffen im allgemeinen die Entscheidungen
in bezug darauf, wie die diversen Speichersätze zu verwenden sind. Es gibt
jedoch einige wenige Unterscheidungen, bei denen ein bestimmtes
Betriebsmerkmal des Speichertesters die Verwendung eines spezifischen
Speichersatzes erfordert. Diese Fälle ergeben sich üblicherweise
aus wirtschaftlichen oder leistungsbezogenen Überlegungen, die einen zweckgebundenen
Hardwarepfad zu einem Speichersatz erfordern. Während diese Mechanismen auf
eine allgemeine Formel gebracht werden könnten, ist es zweckmäßig, einfach
einen in Frage kommenden zu wählen
und es dabei zu belassen.
-
Das
Aufkommen beträchtlicher
Ausmaße
an innerem Testspeicher (in Form der DRAM-Speichersätze) wirft
die Frage auf, wie dieses zusätzliche
Maß an
Speicher verwendet werden kann, um den Betrieb wünschenswerter Merkmale in dem
Speichertester zu ermöglichen.
Bei betrachteten Tester ist das Untersystem des inneren Testspeichers
insofern extrem flexibel, als es zwar eine systemspezifische Wortbreite
von zweiunddreißig
Bits aufweist, die effektive Wortbreite jedoch eine beliebige Potenz
von zwei sein kann (bis zu 25 = 32), mit
einem entsprechenden Anstieg an Adreßraum für schmälere Wörter. Es liegt eine umfassende
Adraßabbildungsfähigkeit
vor, sowohl für
ein Adressieren von DUTs als auch für ein Adressieren eines inneren
Testspeichers, beträchtliche
Datenklassifikations- und Adreßklassifikationsmechanismen,
die mehrere Tag-RAMs und andere Fehleranalysetools ermöglichen,
die alle praktischer ausgeführt
werden, indem man über
viel inneren Testspeicher verfügt. Überdies
existieren diese Verbesserungen, die durch mehr Speicher möglich gemacht
werden, nicht in einem Vakuum; sie sind sehr wertvoll beim Testen
bestimmter Typen von Speicherteilen.
-
Trotz
der Tatsache, dass jüngste
Fortschritte Speicherteile von wahrhaft enormer Kapazität (512 MB)
und breite Datenwege (32 Bits) hervorgebracht haben, sind die Teile
mit 4, 8 und 16 Bits von gestern immer noch sehr gebräuchlich.
Es ist sogar der Fall, dass manche Teile mit einer hohen Kapazität für Adressen
und Daten zu einem schmalen Weg "gedrosselt" wurden, sogar auf
Kosten einer Seriellumsetzung oder einer Unterstützung einer Mehrfach-Zyklus-Segmentierung,
um ganze Daten einer breiteren systemspezifischen Wortbreite zu
transportieren. Es gibt verschiedene Gründe für diese Situation: Entweder
werden lediglich kleine Teile benötigt, oder die Anwendung ist
derart, dass grosse Teile schmale Wege aufweisen können (Videoanwendungen,
die immer sequentiell adressiert werden). Es genüge zu sagen, dass gute wirtschaftliche
Gründe
vorliegen, warum Speicherteile mit schmalen Wegen auf dem Markt
guten Anklang finden. Und das bedeutet, dass sie getestet werden
müssen.
-
Von
Zeit zu Zeit kann es wünschenswert sein,
8-Bit-Teile an einem Speichertester zu testen, der 64 Kanäle pro Testkopf
aufweist. Was Spannungsversorgungen und Masse, I/O-Bus, Takte und verschiedene
Steuerleitungen betrifft, werden vielleicht von 12 bis 16 Kanäle benötigt. Angenommen, es
sind 14. Dies bedeutet nicht, dass 50 Kanäle nicht benutzt werden, wenn
sich das zu testende Teil unter dem Testkopf befindet.
-
Es
sei darauf hingewiesen, dass 64 Kanäle genug sind, um ganze 16
Kanäle
viermal durchzuführen.
Eine Kombination aus vier unvereinzelten DUTs auf einem Wafer oder
vier verpackten Teilen kann als ein einzelnes grosses Teil ausgelegt
werden, das zufällig
genauso aussieht wie die Vereinigung aus vier kleinen Teilen. In
der Theorie können
diese vier kleinen Teile zur gleichen Zeit unter demselben Testkopf getestet
werden. Das Problem ist, dass dies umständlich und unzweckmässig ist.
Das Testprogramm muss neu geschrieben werden, so dass ein Testprogramm
mit einer ein zigen Steuerlinie („Thread") ein Testprogramm mit 4 Steuerlinien
emuliert, bei dem jede dieser vier Linien (was für ein individuelles DUT erfolgt)
eine bedingte Verzweigung und ein anderes ergebnisabhängiges Verhalten
aufweist. Dies wäre eine
sehr unangenehme Angelegenheit, die augenscheinlich durch vier unabhängige Ausführungsmechanismen
mit vier einfachen Programmen, deren interne Ausführungswege
je nach Bedarf unabhängig voneinander
divergieren könnten,
besser gelöst
wäre. Aber
wie kehrt man dann zu dem anderen Extrem zurück, bei dem alle 64 Kanäle durch
ein Programm, das ein tatsächliches
einzelnes großes
Teil testet, gesteuert werden müssen?
Vier kleine Prozessoren ergeben eben nicht einen großen Prozessor!
-
Die
innere Architektur eines Speichertesters kann verbessert werden,
um das Testen mehrerer DUTs desselben Typs an einem Testort zu unterstützen, während lediglich
geringe Modifizierungen an einem Testprogramm erforderlich sind,
das gewöhnlich zum
Testen eines einzigen DUTs verwendet wird. Die mehreren DUTs sind
elektrisch voneinander getrennt, ihnen wird aber, zumindest am Anfang,
derselbe Stimulus gegeben, von dem dieselbe Antwort erwartet wird.
Dazu sind die DUTs jeweils Sammlungen von Kanälen zugeordnet, die verwendet
werden sollen, um ihre jeweiligen DUTs zu testen. Der Tester kann
angewiesen sein, die Segmente der Testvektoren, die benötigt werden,
um ein DUT zu testen, auf den Kanälen für die anderen DUTs zu reproduzieren. Dies
erzeugt Strukturen von (Sequenzen von) Sende-(Stimulus-) und Empfangs-(Antwort-)vektoren,
die sozusagen „n-viele
DUTs breit" sind.
Eine bedingte Verzweigung in dem Testprogramm als Antwort auf Bedingungen
in den Empfangsvektoren (DUT-Versagen) wird durch ein Erkennen mehrerer
Typen von Fehlerhinweisen und eine Fähigkeit unterstützt, das Testen
eines oder mehrerer DUTs selektiv zu deaktivieren, während man
fortfährt,
das eine oder die mehreren, die nicht deaktiviert sind, zu testen.
Die Fehlerhinweise umfassen funktionale Fehlerflags pro Kanal und
funktionale Fehlerflags pro DUT, sowie parametrische Fehlerflags
pro DUT. Die funk tionalen Fehlerflags pro DUT werden daraus gewonnen,
daß man
die funktionalen Fehlerflags pro Kanal einer ODER-Operation unterzieht,
die gemäß der Zuordnung
des DUT zu einem Kanal erfolgt. Diese Flags werden dem Testprogramm
zurückgemeldet,
das daraufhin diverse geeignete Maßnahmen ergreifen kann, die
den Programmfluß ändern, um
ein spezielles Testen oder andere Aktionen für das verdächtige DUT aufzurufen. Die
Fehlerbedingungen werden auch durch vorprogrammierte Mechanismen
in der Schaltungsanordnung erfaßt,
die Sendevektoren anlegt und Empfangsvektoren auswertet. Diese letzteren
vorprogrammierten Mechanismen erzeugen Aktionen, die, auf einer
Pro-Kanal-Basis, die Fähigkeit, die
Treiber- und Empfangsformate für
das DUT-Signal dieses Kanals zu ändern,
und die Fähigkeit,
einen Datenwert, der dem DUT-Signal dieses Kanals zugeordnet ist,
zu ändern,
umfassen. Ebenfalls enthalten sind Möglichkeiten, einen Stimulus
bestimmter DUTs zu beseitigen oder zu begrenzen, sowie Möglichkeiten,
alle Vergleiche für
ein bestimmtes DUT ungeachtet der tatsächlichen Fakten als „gut" erscheinen zu lassen.
Diese letzteren Mechanismen beseitigen das Erfordernis mehrerer
Ausführungslinien
bei dem Testprogramm.
-
Das
Testprogramm ist somit ermächtigt,
eine Mehrzahl von DUTs (bei einem bevorzugten Ausführungsbeispiel
bis zu vier) „parallel" gleichzeitig zu
testen, solange keine Fehler gemeldet werden. Bei einem Fehler kann
das Testprogramm eine Verzweigung zu einer Fehleruntersuchungsroutine
durchführen,
die lediglich das verdächtige
DUT austestet, indem sie vorübergehend
die guten DUTs deaktiviert, während
sie das schlechte DUT weiterhin austestet. Wenn das schlechte DUT
so defekt ist, daß es
nicht mehr repariert werden kann, oder wenn es unsicher ist, es
eingeschaltet zu lassen, kann es deaktiviert werden, die anderen
DUTs können
reaktiviert werden, und ein reguläres Testen kann wieder aufgenommen
werden. Auf diese Weise kann eine einzige Ausführungslinie (die für ein Testen
eines einzelnen DUT im wesentlichen in dieser selben Form vorliegen würde) je
nach Bedarf selektiv zwischen die verschiedenen DUTs geschaltet
werden (im Auf trag der verschiedenen DUTs durchgeführt werden),
wobei sie dadurch getrieben wird, welche(s) versagen (versagt).
Während
dieser selektiv geschalteten Intervalle wird ein gleichzeitiges
Testen aller DUTs zugunsten einer Abschweifung, die ein bestimmtes
relevantes DUT testet, aufgeschoben. Sicherlich wird dieses Schalten
und Springen zum Ausführen
von Abschweifungen auch programmatisch definiert, um als Antwort
auf mögliche
Ereignisse, die während
des Testens entdeckt werden, aufzutreten. Teil dieser programmatischen
Definition sind leicht durchführbare
Modifizierungen an dem Einzellinientestprogramm (das weiterhin eine
einzige Linie aufweist), und ein Teil derselben ist eine Vorkonfiguration
diverser Hardwareunterstützungsmechanismen.
-
Bestimmte
Typen von Speichertechnologie, beispielsweise ein Flash-Speicher,
weisen bestimmte Eigenschaften auf, die die Art und Weise, wie sie verwendet
werden, und auch die Art und Weise, wie sie getestet werden können, beeinflussen.
Bei einem Flash-Speicher ist es beispielsweise üblicherweise der Fall, daß eine Löschfunktion
verwendet wird, um die Vorrichtung (oder einen Abschnitt derselben,
als Block bezeichnet) dazu zu bringen, alle 1en zu speichern; und
um eine 0 zu schreiben, wird sie durch eine wiederholte Schreiboperation „programmiert", die an der Adresse,
die die 0 speichern soll, durchgeführt wird. Während eine Löschung eine
Massenoperation ist, die eine große Anzahl von Adressen (entweder
die gesamte Vorrichtung oder den Block, der eine gelieferte Adresse
enthält)
betrifft, beinhaltet ein Programmieren einer 0 an einer adressierten
Stelle ein Wiederholen einer Schreiboperation, bis eine ausreichende
Ladungsübertragung
in der adressierten Speicherzelle stattgefunden hat. Bei einem modernen
Flash-Speicher liest die Vorrichtung selbst während automatisierter interner
Schreibvorgänge, die
wiederholt durchgeführt
werden, bis das Programmieren eingetreten ist, die Zelleninhalte
zurück. Beispielsweise
prüft eine
8-Bit-Vorrichtung intern die 8 Bits an dieser Adresse, und ein Programmieren wird intern
fortgesetzt, bis jede der 0en, wie viele auch immer vorliegen, in
diesen 8 Bits erfolgreich programmiert wurde. Manche Zellen in dem
Speicher lassen sich eventuell leichter programmieren als andere,
und es können
mehrere Hundert Schreibzyklen erforderlich sein, um eine 0 zu programmieren.
-
Eine
moderne Flash-Vorrichtung akzeptiert solche Operationen in Form
von Befehlen und meldet den letztlichen Erfolg oder das letztliche
Versagen ihres Resultats an Ausgangsleitungen, die durch ein Statusregister
getrieben werden. So können
zum Beispiel eine Adresse und manche Daten der Vorrichtung zugeführt werden,
und eine Programmleitung oder ein Befehl kann ausgeführt werden.
Das Statusregister geht beispielsweise zu allen 0en, um anzuzeigen „ich bin
im Betrieb", und
wechselt nach geraumer Zeit zu allen 1en, um anzuzeigen „ich bin fertig,
und es hat funktioniert".
Alle anderen Bitmuster in dieser Sequenz von Operationen wären ein
Fehlercode, der ein gewisses Problem beschreibt.
-
Ein
Neuprogrammieren einer Adresse, um eine 1 aufzuweisen, nachdem sie
zuvor programmiert wurde, eine 0 zu enthalten, ist ein zulässiger Vorgang,
aber es ist einer, der nicht durchgeführt werden kann, aufgrund der
Art und Weise, wie Flash-Vorrichtungen aufgebaut sind. Wenn es erforderlich
ist, dies zu tun, muß die
gesamte Vorrichtung (oder der Block, der diese Adresse enthält) gelöscht werden,
und das Programmieren muß von
neuem begonnen werden. Trotzdem ist es mittlerweile bei Flash-Vorrichtungen
ein standardmäßiger Betriebsmodus,
Befehle, 1en zu programmieren, zu akzeptieren, und sie zu ignorieren,
während
ein unmittelbarer Erfolg gemeldet wird.
-
Deshalb
sieht das Testparadigma für
ein Flash-Teil von der Ferne aus wie eine dreiteilige Prozedur.
Als erstes wird das Teil gelöscht.
Als zweites wird das Teil programmiert, und daraufhin (drittens) wird
es ausgetestet. Natürlich
ist ein erfolgreiches Programmieren des Teils ein Bestandteil dessen, was
ordnungsgemäß als Testen
der Vorrichtung betrachtet wird. Wenn es erst einmal programmiert
ist, möchte
der Testtechniker es jedoch austesten, indem er Versorgungsspannungen
variiert, Zeitgebungsbeziehungen prüft und gewährleistet, daß Adressierungssequenzen
und -strukturen in den gespeicherten Daten den Betrieb nicht nachteilig
beeinflussen. Die vollständige
Palette an Tests für
ein Flash-Teil kann mehrere solcher dreiteiliger Prozeduren umfassen,
wobei jede eine unterschiedliche Sammlung programmierter Daten und
vielleicht unterschiedliche Austestungsaktivitäten aufweist. Allgemein gesagt wird
die Testzeit nicht vorwiegend auf ein Austesten des Teils verwendet;
sie wird auf das Löschen
und Programmieren des Teils verwendet.
-
Die
innere Organisation mancher Speicher, einschließlich Flash-Teile, beinhaltet
das Konzept von Spalten. Einer Spalte sind viele Adressen zugeordnet,
und sollte ein Versagen bei der Spaltendecodierung auftreten, werden
viele Adressen betroffen sein. Auch in dem Fall, in dem einfach
eine schlechte Zelle in einer Spalte vorliegt (d. h. ein Einzelbit-Versagen
bei einer einzelnen Adresse), müßten wir
trotzdem davon sprechen, daß die
Spalte defekt ist. Jedenfalls wird an irgendeinem Punkt in einer
Programmierphase eine Adresse auftreten, die sich nicht erfolgreich
programmieren läßt. An diesem
Punkt würden
wir sagen, daß die
Spalte, die diese Adresse enthält,
schlecht ist.
-
Die
Entdeckung, daß eine
Spalte in einem Flash-Teil defekt ist, kann während eines Programmierens
auftreten, oder sie kann während
eines Austestens auftreten. Der letztere Fall ist schwer im voraus
zu charakterisieren, und da er wahrscheinlich nicht durch die Vorrichtung
selbst als Statusinformation gemeldet wird, muß er durch geeignete algorithmische
Mechanismen in dem Testprogramm erfaßt werden.
-
Ob
eine schlechte Spalte repariert werden kann oder nicht, ist eine
andere Frage, die wahrscheinlich zu einem anderen Zeitpunkt entschieden werden
muß. (Eine
Entscheidung, eine Reparatur zu versuchen, wird eventuell am besten
verschoben, bis ein vorläufiges
Testen den Umfang etwaiger reparierbarer Versagensfälle zeigt:
Bei jeglichem DUT liegt lediglich eine feststehende Anzahl von Ersatzschaltungen
vor, die durch "Löschen" von Schmelzverbindungen
in der Vorrichtung hineingeschaltet werden können). Vorläufig könnten wir ein bisschen Zeit
an dem Tester einsparen, wenn wir, für das Gleichgewicht des Testens
für dieses
Teil, es so einrichten könnten,
keine Zeit mehr darauf zu verwenden, zu versuchen, andere Adressen
in dieser Spalte zu programmieren.
-
Ob
die schlechte Spalte entdeckt wird, während ein Testen mehrerer DUTs
pro Testkopf durchgeführt
wird oder während
Testoperationen eines einzelnen DUT pro Testkopf durchgeführt werden – es wäre somit
wünschenswert
(und besonders in dem Fall der mehreren DUTs), diese Tatsache zur
Kenntnis zu nehmen, mit der Absicht, sie später (wahrscheinlich durch eine
versuchte Reparatur) zu berücksichtigen.
In der Zwischenzeit ist es jedoch wünschenswert, das Testen (zum
Vorteil der anderen Spalten) fortzusetzen, und gleichzeitig Versuche,
ein etwaiges weiteres Programmieren an der schlechten Spalte durchzuführen, zu
unterbinden. Wenn ein solcher Mechanismus nicht vorhanden ist, wird
man zusätzliche
Zeit damit verschwenden, zu versuchen, Adressen zu programmieren,
die sich in der schlechten Spalte befinden. Während es vernünftig ist,
zu fordern, dass ein Testprogramm während des Prüfens entscheidet,
ob eine Spalte defekt ist (in gewisser Hinsicht ist dieser Test
hierfür
ausgelegt), ist es nicht wünschenswert,
dieses Testprogramm (ob während
des Programmierens oder während
des Austestens) mit der weiteren Aufgabe zu belasten, den weiteren
Programmfluss zu verändern,
um ein weiteres Programmieren anderer Adressen innerhalb einer Spalte,
von der man weiss, dass sie schlecht ist, zu vermeiden. Dies gilt
besonders für
eine Situation mit mehreren DUTs. Was ist zu tun?
-
Aus
der
US 5896398 ist ein
Verfahren zum Testen von Flash-Speichern
bekannt, bei dem ein Fehlerspeicher vorgesehen ist. Der Fehlerspeicher speichert
die Ergebnisse eines Daten schreibtests, die dann in einer Fehleranalysephase
verwendet werden.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zu schaffen,
bei dem es vermieden wird, Zeit darauf zu verwenden, schlechte Spalten
in einem an einem Speichertester zu testenden Flash-Speicher zu
programmieren, wobei dieses Verfahren günstige Charakteristika aufweist.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 gelöst.
-
Ein
Testprogramm erzeugt Sendevektoren (Stimuli) und Empfangsvektoren
(erwartete Antworten). Die Sendevektoren werden an das DUT angelegt,
während
die Empfangsvektoren als Vergleichswerte behandelt werden, die verwendet
werden, um zu entscheiden, ob eine Antwort von dem DUT wie erwartet
ausfällt.
Während
eines Programmierens eines Flash-Teils verwendet das Testprogramm TAG-RAM-Techniken,
um eine BAD-COLUMN-Tabelle
(Schlechte-Spalte-Tabelle) in einem der Speichersätze aufrechtzuerhalten.
Diese BAD-COLUMN-Tabelle wird durch dieselbe Adresse adressiert,
die an das DUT angelegt wird. Wenn ein OMIT-BAD-COLUMN-Mode (Schlechte-Spalte-Weglassen-Mode)
wirksam ist, werden Einträge
in dieser Tabelle durch eine automatische Wirkung der Speichertesterhardware
erhalten und verwendet, um einen Ersatzprogrammierungsdatenwert
aller 1en (oder ein anderes Muster) zu liefern, der einen unmittelbaren
und automatischen Hinweis auf ein erfolgreiches Programmieren von
dem DUT erzeugt. Dadurch wird verhindert, daß zusätzliche Zeit auf ein Programmieren
einer Spalte verwendet wird, die als schlecht eingestuft wurde,
ohne daß eine Änderung in
dem internen Mechanismus des Testprogramms erforderlich ist. Die
Entdeckung schlechter Spalten und ihre Aufzeichnung in der BAD-COLUMN-Tabelle kann
während
einer Anfangsprogrammierungsphase des Testprogramms durchgeführt werden,
oder sie kann während
des Verlaufs eines Austestens eines programmierten Flash-DUT auf
einer „wie-entdeckt"-Basis durchgeführt werden.
-
Diese
Merkmale können
mit einem automatischen Lesen einer speziellen BAD-BLOCK-Tabelle (Schlechter-Block-Tabelle)
kombiniert sein, die in einem inneren Testspeicher erzeugt wird,
um das Testen von Speicherteilen, die eine interne Blockstruktur aufweisen,
zu erleichtern, indem Aktionen, die auf einen schlechten Block bezogen
sind, automatisch deaktiviert und einem weiteren Einfluß auf das
Testprogramm entzogen werden. Dieser schlechte Block kann sich in
einem DUT, das auf eine Mehrfach-DUT-Weise getestet wird, befinden,
oder auch nicht.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
vereinfachtes Blockdiagramm eines weitgehend rekonfigurierbaren
nicht-flüchtigen Speichertesters,
der gemäß der Erfindung
aufgebaut ist;
-
2 ein
ausgedehntes vereinfachtes Blockdiagramm des DUT-Testers 6 der 1;
-
3 ein
vereinfachtes Funktionsblockdiagramm des Mechanismus des inneren
Testspeichers, der in dem Blockdiagramm der 2 erscheint;
-
4 ein
ausgedehntes vereinfachtes Blockdiagramm des Daten-MUX 35 der 2;
-
5 das
tatsächliche
Blockdiagramm der in 4 gezeigten Ausdehnung; und
-
6 ein
Funktionsdiagramm einer Schlechte-Spalte-Tabelle, die in einem Speichersatz aufrechterhalten
wird, der in dem inneren Testspeicher der 2 angeordnet
ist.
-
Mit
Bezugnahme auf 1 ist ein vereinfachtes Blockdiagramm 1 eines
nicht-flüchtigen
Speichertestsystems gezeigt, das gemäß den Prinzipien der Erfindung
aufgebaut ist. Insbesondere kann das gezeigte System gleichzeitig
bis zu 36 einzelne DUTs (Devices Under Test = zu testende Geräte) mit
jeweils bis zu 64 Testpunkten zu einem Zeitpunkt testen, mit Vorkehrungen
für eine
Rekonfiguration, um es Elementen einer Sammlung von Testressourcen zu
ermöglichen,
zusammengebunden zu werden, um DUTs mit mehr als 64 Testpunkten
zu testen. Diese Testpunkte können
Positionen auf einem Abschnitt eines integrierten Schaltungswafers
sein, der noch nicht vereinzelt und verpackt wurde, oder sie können die
Stifte des verpackten Teils sein. Der Begriff „Testpunkt" bezieht sich auf eine elektrische Position,
an der ein Signal angelegt werden kann (z. B. Leistungsversorgung,
Uhren, Dateneingänge),
oder an der ein Signal gemessen werden kann (z. B. ein Datenausgang).
In dieser Beschreibung werden die Gebräuche der Industrie befolgt,
die Testpunkte als „Kanäle" zu bezeichnen. Die „Sammlung
von Testressourcen, die zusammengebunden werden sollen" auf die oben Bezug
genommen wurde, können
als bis zu 36 Testorte angesehen werden, wobei jeder Testort eine Testortsteuerung
(4), einen (64 Kanal-)DUT-Tester (6)
und eine (64 Kanal-)Sammlung von Pinelektronik (9),
die die tatsächliche
elektrische Verbindung zu einem DUT (14) herstellt, umfaßt. In dem
Fall, in dem das Testen des DUT 64 oder weniger Kanäle erfordert,
reicht ein einzelner Testort aus, um Tests an diesem DUT durchzuführen, und
hier wird beispielsweise angenommen, daß der Testort Nr. 1 (wie er
in 1 erscheint) eine „Einzelortteststation" bildet oder als
eine solche wirkt. Wenn dagegen eine Form der vorher erwähnten Rekonfiguration
wirksam ist, werden zwei (oder mehr) Testorte „verbunden", um als ein größerer äquivalenter Testort mit 128
Kanälen zu
wirken. Dementsprechend und unter erneuter Bezugnahme auf ein in 1 gezeigtes
Beispiel wird angenommen, daß die
Testorte Nr. 35 und Nr. 36 eine „Zwei-Ort-Teststation" bilden.
-
Um
kurz den entgegengesetzten Fall zu bedenken, sollte nicht angenommen
werden, daß ein gesamter
Testort benötigt
wird, um ein einziges DUT zu testen, oder daß ein einziger Testort nur
ein einziges DUT testen kann. Angenommen, ein Wafer würde zwei,
drei oder vier (möglicherweise
aber nicht notwendigerweise benachbarte) Chips aufweisen, wobei
die Summe der Testkanalanforderungen desselben 64 Kanäle oder
weniger wäre.
Solche DUTs (15a–d)
können
durch einen einzigen Testort (z. B. Testort Nr. 2, wie in 2 gezeigt)
gleichzeitig getestet werden. Dies wird durch die Universalprogrammierbarkeit
jedes Testorts ermöglicht,
wie sie durch bestimmte Hardwaremerkmale, die bald an geeigneter
Stelle beschrieben werden, verbessert wird. Im Prinzip kann ein
Testprogramm, das durch den Testort ausgeführt wird, derart geschrieben
werden, daß ein
Teil der Ressourcen des Testorts verwendet wird, um eines der DUTs
zu testen, während
ein Teil verwendet wird, um das andere DUT zu testen. Wenn man schließlich annimmt,
daß, falls
ein drittes DUT vorliegt, dieses die logische Einheit der ersten
beiden wäre,
wäre man
in der Lage, dieses dritte DUT mit einem einzigen Testort zu testen,
daher sollte man in der Lage sein, gleichermaßen die „Komponenten-DUTs" desselben zu testen.
Ein großer
Unterschied ist natürlich,
individuell zu verfolgen, welches der beiden „Komponenten-DUTs" besteht oder versagt,
im Gegensatz zu einer einfachen, einheitlichen Antwort für das „dritte" DUT. Das heißt, es gibt
ein Problem bezüglich
der Frage, welcher Abschnitt des „dritten" DUT versagt hat. Es gibt auch andere
Anliegen, einschließlich
eines Entfernens oder Begrenzens der Treibersignale auf ein schlechtes
DUT, eines Verzweigens innerhalb des Testprogramms auf der Basis
dessen, welches DUT ein Versagen anzeigt, während gleichzeitig verhindert
wird, daß das
Testprogramm hoffnungslos mehrfach-verkettet wird. Bestimmte einfache
Aspekte dieser „Mehrfach-DUT-Teststation"-Fähigkeit
bei einem einzigen Testort sind ziemlich einfach, während andere
komplex sind. Ein Mehrfach-DUT-Testen sollte nicht mit der Idee
des Verbindens von zwei oder mehreren Testorten verwechselt werden.
-
Abgesehen
von diesem Gedanken der Testort-Rekonfiguration gäbe es keinen
Unterschied zwischen einem Testort und einer Teststation, und einer
dieser Begriffe könnte
weggelassen werden. So wie es ist, wird jedoch offensichtlich, daß die Anzahl von
Teststationen nicht gleich der Anzahl von Testorten sein muß. In der
Vergangenheit konnten die Anzahlen unterschiedlich sein, weil die
Testorte manchmal unterteilt wurden, um mehr Teststationen für einfaches
Mehrfach-DUT-Testen
zu erzeugen (DUTs, die nicht komplex genug sind, um einen gesamten Testort
zu verbrauchen). Nun kann der Unterschied jedoch auch daran liegen,
daß die
Testorte zusammen verbunden wurden, um Mehrfachort-Teststationen
zu bilden (DUTs, die zu komplex für einen einzigen Testort sind).
-
Nachfolgend
wird dann eine Testsystemsteuerung 2 durch einen Systembus 3 mit
bis zu 36 Testortsteuerungen verbunden, deren Namen mit dem Zusatz
Nr. 1 bis 36 (4a bis 4z) enden. (Es stimmt, daß die Indexe
a bis z nur von 1 bis 26 gehen, und nicht bis 36. Aber diese kleine
Abweichung ist im Vergleich zu numerischen Indexen hinter numerischen
Bezugszeichen vorzuziehen, die wahrscheinlich sehr verwirrend wären.) Die
Testsystemsteuerung 2 ist ein Computer (z. B. ein PC, auf
dem NT läuft),
der ein geeignetes Testsystemsteuerprogramm ausführt, das sich auf die Aufgabe
des Testens nichtflüchtiger
Speicher bezieht. Das Testsystemsteuerprogramm stellt die höchste Abstraktionsebene
in einer hierarchischen Arbeitsteilung (und Komplexität) zum Ausführen des
gewünschten
Testens dar. Die Testsystemsteuerung bestimmt, welche Programme
durch die unterschiedlichen Testorte ausgeführt werden, und überwacht
auch ein Robotersystem (nicht gezeigt), das die Testsonden und DUTs wie
benötigt
bewegt. Die Testsystemsteuerung 2 kann auf bestimmte Weisen
wirken, die den Gedanken unterstützen,
daß einige
Testorte programmiert sind, um als Einzelort-Teststationen zu arbeiten, manche
als Mehrfach-DUT-Teststationen, während andere verbunden sind,
um Mehrfachort-Teststationen zu bilden. Selbstverständlich werden
unter solchen Umständen
unterschiedliche Teile getestet, und es ist sehr wünschenswert,
daß für die unterschiedlichen
Teile unterschiedliche Tests verwendet werden. Gleichartig dazu
gibt es weder die Anforderung, daß alle Einzelort-Teststationen
die gleiche Art von Teilen testen, noch gibt es eine solche Anforderung
für Mehrfachort-Teststationen.
Dementsprechend ist die Testsystemsteuerung 2 programmiert,
um die Befehle auszugeben, um das benötigte Testort-Verbinden auszuführen und
dann die geeignete Testprogramme für die verschiedenen verwendeten
Teststationen aufzurufen. Die Testsystemsteuerung 2 empfängt außerdem Informationen über Ergebnisse,
die von den Tests erhalten werden, so daß dieselbe die geeigneten Aktionen
zum Entsorgen des schlechten Teils durchführen kann und daß dieselbe
Protokolle für
die verschiedenen Analysen erhalten kann, die verwendet werden können, um
beispielsweise Produktionsprozesse in einer Fabrikumgebung zu steuern.
-
Das
Testsystem selbst ist ein relativ großes und komplexes System, und
es ist gebräuchlich,
daß dasselbe
ein Roboterteilsystem verwendet, um Wafer auf eine Stufe zu laden,
die dann nacheinanderfolgend eine oder mehrere zukünftige Chips
unter Sonden positioniert, die mit der Pinelektronik 9 verbunden
sind, woraufhin diese zukünftigen
Chips (der Wafer wurde noch nicht vereinzelt) getestet werden. Das
Testsystem kann ebenfalls verwendet werden, um verpackte Teile zu
testen, die auf einem geeigneten Träger geladen wurden. Jeder Teststation,
die in Betrieb ist, wird zumindest eine Testortsteuerung zugeordnet
sein (wie es nachfolgend erklärt
wird), unabhängig
davon, wie viele Testorte verwendet werden, um diese Teststation
zu bilden, oder wie viele Teststationen sich an einem Testort befinden.
Eine Testortsteuerung ist ein eingebettetes System, das ein i960-Prozessor von Intel
mit 36 bis 64 MB von kombiniertem Programm- und Datenspeicher sein kann,
der auf einem eigenen Betriebssystem namens VOS (VersaTest-Betriebssystem)
läuft,
das auch bei früheren
Produkten zum Testen nicht-flüchtiger
Speicher (z. B. Agilent V1300 oder V3300) verwendet wurde. Für den Moment
wird nur die Situation für
Einzelort-Teststationen
betrachtet. Für
den Zweck eines bestimmten Beispiels wird angenommen, daß der Testort
Nr. 1 als Teststation Nr. 1 wirkt, und daß derselbe das WHIZCO-Teil
Nr. 0013 testen soll. Die Testbestimmungen umfassen etwa 100 unterschiedliche Typen
von Tests (Variieren und überwachen
der Spannungspegel, Pulsbreiten, Flankenpositionen, Verzögerungen,
als auch eine große
Menge an einfachem Speichern und anschließendem Wiedergewinnen von ausgewählten Informationsstrukturen),
und jeder Typ von Test umfaßt
viele Millionen einzelner Speicherzyklen für das DUT. Auf der höchsten Ebene weisen
die Betreiber des Testsystems die Testsystemsteuerung 2 an,
die Teststation Nr. 1 zu verwenden, um damit zu beginnen, die WHIZCO
0013 zu testen. Zu gegebener Zeit teilt die Testsystemsteuerung 2 der
Testortsteuerung Nr. 1 (4a) (die ein eingebettetes [Computer]-System
ist) mit, das zugeordnete Testprogramm, etwa TEST_WHIZ_13, ablaufen
zu lassen. Falls das Programm innerhalb der Umgebung der Testortsteuerung
Nr. 1 bereits verfügbar
ist, wird es einfach ausgeführt.
Falls nicht, wird es durch die Testsystemsteuerung 2 geliefert.
-
Im
Prinzip könnte
nun das Programm TEST_WHIZ_13 vollständig unabhängig sein. Aber wenn es dies
wäre, wäre es mit
ziemlicher Sicherheit sehr groß und
es kann für
den Prozessor des eingebetteten Systems innerhalb der Testortsteuerung 4a schwierig
sein, schnell genug zu laufen, um die Tests mit der gewünschten
Geschwindigkeit zu erzeugen, oder selbst mit einer Rate, die von
einem DUT-Speicherzyklus zu dem nächsten einheitlich ist. Dementsprechend
werden Unterroutinetyp-Aktivitäten
auf niedriger Ebene erzeugt, die Sequenzen von Adressen und zugeordneten
Daten, die geschrieben werden sollen oder von einer Leseoperation
erwartet werden, nach Bedarf von einem programmierbaren algorithmischen
Mechanismus erzeugt, der in dem DUT-Tester 6 positioniert
ist, der aber synchron mit dem Programm wirkt, das durch das eingebettete System
in der Testortsteuerung 4 ausgeführt wird. Dies kann als Exportieren
bestimmter Unterroutineartiger Aktivitäten auf niedriger Ebene und
der Aufgabe des Auslösens
von DUT-Speicherzyklen zu einem Mechanismus (dem DUT-Tester), der
näher bei
der Hardwareumgebung des DUT 14 liegt, angesehen werden.
Allgemein gesagt, jedesmal, wenn die Testsystemsteuerung 2 eine
Testortsteuerung mit einem Testprogramm ausstattet, versorgt dieselbe
dann außerdem
den zugeordneten DUT-Tester mit geeigneten Implementierungsroutinen
auf niedriger Ebene (vielleicht spezifisch für den getesteten Speicher),
die benötigt
werden, um die Gesamtaktivität
auszuführen,
die von dem Programmieren für
die Testortsteuerung beschrieben oder benötigt wird. Die Implementierungsroutinen
auf niedriger Ebene werden als „Strukturen" bezeichnet, und
dieselben sind im allgemeinen mit einem Namen versehen (genauso
wie Funktionen und Variablen in Programmsprachen hoher Ebene Namen
aufweisen).
-
Jede
Testortsteuerung Nr. n(4) ist durch einen Orttestbus Nr.
n(5) mit ihrem zugeordneten DUT-Tester Nr. n(6)
gekoppelt. Die Testortsteuerung verwendet den Orttestbus 5,
sowohl um den Betrieb des DUT-Testers zu steuern, als auch um Informationen
von demselben über
Testergebnisse zu empfangen. Der DUT-Tester 6 ist in der
Lage, die verschiedenen DUT-Speicherzyklen, die in den Testvorschriften
enthalten sind, mit hoher Geschwindigkeit zu erzeugen, und derselbe
entscheidet, ob die Ergebnisse eines Lesespeicherzyklus so sind
wie erwartet. Im wesentlichen spricht derselbe auf Befehle oder
Operationscodes („mit
Namen versehene Strukturen") an,
die von der Testortsteuerung gesendet werden, durch Auslösen entsprechender
nützlicher
Sequenzen von Lese- und Schreib-DUT-Speicherzyklen (d. h. derselbe
führt die
entsprechenden Strukturen aus). Konzeptionell ist das Ausgangssignal
des DUT-Testers 6 eine Stimulusinformation, die an das DUT
angelegt werden soll, und dasselbe akzeptiert auch Ansprechinformationen
von demselben. Diese Stimulus/Ansprechinformation 7a verläuft zwischen dem
DUT-Tester 6a und
einer Pinelektronik Nr. 1 Anordnung 9a. Die Pinelektronikanordnung 9a unterstützt bis
zu 64 Sonden, die an das DUT 14 angelegt werden können.
-
Die
oben erwähnte
Stimulusinformation ist lediglich eine Sequenz von parallelen Bitstrukturen (d.
h. eine Sequenz von „Sendevektoren" und erwarteten „Empfangsvektoren"), die gemäß den Spannungspegeln
einer Familie von Logikelementen, die in dem DUT-Tester verwendet
werden, ausgedrückt wird.
Es gibt ein konfigurierbares Abbilden zwischen Bitpositionen in
einem Stimulus/Antwort und den Sonden, die zu dem Chip gehen, wobei
dieses Abbilden durch den DUT-Tester 6 verstanden wird.
Die einzelnen Bits sind bezüglich
ihrer Zeitgebung und Flankenplazierung korrekt, aber zusätzlich zu
dem Abbilden können
sie ebenfalls Spannungspegelumschalten benötigen, bevor sie an das DUT
angelegt werden können.
Gleichartig dazu kann eine Antwort, die nachfolgend zu einem Stimulus
in dem DUT auftritt, Puffern und „umgekehrtes" Pegelumschalten
benötigen,
bevor dieselbe als geeignet angesehen werden kann, um zurück zu dem
DUT-Tester geführt
zu werden. Diese Pegelumschaltaufgabe sind das Gebiet der Pinelektronik 9a.
Die Pinelektronikkonfiguration, die zum Testen eines WHIZCO 0013
benötigt wird,
wird wahrscheinlich beim Testen eines Teils von der ACME Co. nicht
funktionieren, und vielleicht nicht einmal bei einem anderen WHIZCO-Teil. Daher ist offensichtlich,
daß die
Pinelektronikanordnung ebenfalls konfigurierbar sein muß, eine
solche Konfigurierbarkeit ist die Funktion der PE-Konfigurationsleitungen 8a.
-
Die
obigen Ausführungen
beenden einen kurzen architektonischen Überblick darüber, wie
ein einzelner Testort zum Testen eines DUT strukturiert ist. Es
folgen nun Themen, die sich ergeben, wenn es viele Testorte gibt,
die betrieben werden müssen.
Als Einleitung wird ein bevorzugtes Ausführungsbeispiel zum Aufbauen
eines Testsystems mit mehreren Testorten beschrieben. In vielerlei
Hinsicht sind einige der Informationen, die beschrieben werden,
ein Frage von Vorlieben auf der Basis von Marktstudien über Kundenvorlieben
und Kosten-Nutzen-Analysen. Wie dem auch sei, um eines dieser Dinge
zu erstellen, muß man
eine bestimmte Wahl treffen, und sobald dies getan ist, ergeben
sich bestimmte Konsequenzen, die durch das gesamte System sichtbar sind.
Es wird davon ausgegangen, daß es
nützlich ist,
zumindest auf allgemeine Weise die größeren Umrisse der Hardwareeigenschaften
des Testsystems zu beschreiben. Selbst wenn einige dieser Eigenschaften
zufällig
sind, wird die Kenntnis derselben trotzdem eine Anerkennung der
verschiedenen Beispiele unterstützen,
die verwendet werden, um die Erfindung darzustellen.
-
Man
betrachte zu Beginn vier eher große Kartenkäfige. Außer Leistungszufuhren und Wasserkühlung (Ventilatoren
können
in einer sauberen Raumumgebung eine Verschmutzungsquelle darstellen,
und gekühltes
Wasser ist billiger als eine Luftklimatisierung, um die mehreren
zehn KW an abgeführter
Wärme für ein voll
belastetes System zu beseitigen) umfaßt jeder Kartenkäfig eine
Hauptplatine, eine Vorderfläche
und eine Rückfläche. In
jeden Kartenkäfig
können
bis zu 9 Anordnungen plaziert werden. Jede Anordnung umfaßt eine
Testortsteuerung, eine DUT-Tester und eine Pinelektronik. Nachfolgend wird
in groben Zügen
dargestellt, wie Testortsteuerungen verbunden werden, was einige
Busse umfassen wird, die verwendet werden, um Verkettungen (Daisy-Chains)
zu erzeugen.
-
Ein
kurzer Exkurs bezüglich
des Begriffs „Verkettung" ist an dieser Stelle
vielleicht angebracht. Man betrachte die Systemelemente A, B, C
und D. Angenommen, dieselben sollen in dieser Reihenfolge verkettet
werden. Man könnte
sagen, daß es
einen Informations- oder Steuerweg gibt, der A verläßt und in
D geht, daß B
selektiv Verkehr weiterleiten kann, der dann B verläßt und in
C geht, und daß C
selektiv Verkehr weiterleiten kann, der dann in D geht. Diese gleiche
Art von Anordnungen können
auch für Verkehr
in der anderen Richtung existieren. Verkettungen werden oft verwendet,
um Prioritätsschemata zu
erzeugen, dieselben werden hier verwendet, um Master/Slave-Beziehungen
zwischen verschiedenen Testortsteuerungen zu erzeugen. Diese verketteten Kommunikationsanordnungen
werden mit dem Zusatzwort „DSY" statt „BUS" bezeichnet. Somit
kann statt auf einen Befehl/Datenbus auf einen Befehl/Daten-DSY
Bezug genommen werden. Nun kann der Gedanke, daß Informationen „in B eindringen
und selektiv weitergeleitet werden", darauf hindeuten, daß der Verkehr
auf einen getrennten Satz von Leitern reproduziert wird, bevor er
weitergeleitet wird. Es könnte
so sein, aber aus Leistungsgründen
ist es eher ein regulärer
Bus mit adressierbaren Einheiten. Durch eine programmierbare Adreßabbildungsanordnung und
die Fähigkeit,
stromabwärtige
Testortsteuerungen „stillzulegen" kann erreicht werden,
daß der
einzelne Bus so logisch als eine Mehrzahl von Verkettungen erscheint
(d. h. so funktioniert). Schließlich
ist offensichtlich, daß die
Verkettungen Hochleistungswege für
Befehl und Steuerinformationen sind, und daß, wenn sie dies nicht wären, man
nicht erwarten könnte,
daß eine
Master/Slave-Kombination (Mehrfachort-Teststation) so schnell arbeitet
wie ein einzelner Testort. Zugunsten der Verkettungsleistungsfähigkeit
muß gesagt
werden, daß die
verschiedenen DSY ihre jeweiligen Kartenkäfige nicht verlassen. Der Effekt
dieser Entscheidung ist, daß einige
Beschränkungen
auferlegt werden, welche Testorte (und somit auch wie viele) verbunden
werden können.
Im Prinzip gibt es keinen grundlegenden Bedarf für diese Beschränkung, noch
gibt es einen allgemeinen Mangel an technischer Praktikabilität (es könnte durchgeführt werden),
es wird lediglich davon ausgegangen, daß das Erweitern der DSYs wesentliche Kosten
für einen
relativ geringen zusätzlichen
Vorteil bewirken würde,
da bereits 9 Testorte in einem Kartenkäfig bestehen.
-
Um
die Erörterung
von 1 wieder aufzunehmen, werden die verschiedenen
Testortsteuerungen 4a–4z betrachtet,
die die 4 Kartenkäfige
besetzen können,
jede mit 9 Testortsteuerungen. Dieselben werden mit 4a–4f, 4g–4m, 4n–4t und 4u–4z bezeichnet.
(Es macht nichts, daß dies
nominal nur 26 Zusätze
sind, wie vorher erklärt – der Leser
ist eingeladen, sich vorzustellen, daß es irgendwo dort draußen weitere
10 Zusatzsymbole gibt.) Eine CMD/DAT DSY 17a (Befehls-
und Daten-Daisy-Chain = Befehls- und Datenverkettung) verbindet
die Testortsteuerungen 4a–4f, die sich in einem
Kartenkäfig befinden,
während
eine andere CMD/DAT DSY 17b die Testortsteuerungen 4g–4m in
einem anderen Kartenkäfig
verbindet. Die gleiche Anordnung besteht für die verbleibenden Kartenkäfige und
die Testortsteuerungen 4n–4t bzw. 4u–4z.
Es wurde vorher angemerkt, daß die
DSY die Kartenkäfige
nicht verlassen, da das „Schwanzende" eines Busses, das
tatsächlich die
DSY bildet, einen Kartenkäfig
nicht verläßt und der
Kopf des nächsten
Segments in einem anderen Kartenkäfig wird. Statt dessen geht
der Systembus 3 von der Testsystemsteuerung 2 zu
allen Testortsteuerungen, und jeder ist in der Lage, an dem Kopf
eines DSY-Segments, das den Kartenkäfig nicht verläßt, ein
Master zu werden.
-
Die
CMD/DAT DSY 17a–d,
die erörtert
wurden, existieren zwischen den verschiedenen Testortsteuerungen 4a–4z.
Es gibt eine ähnliche
Anordnung für
die SYNC/ERR DSY 18a–18d und
die DUT-Tester 6a–6z.
Die Synchronisations- und Fehlerinformationen, die durch die SYNC/ERR
DSY 18 übertragen werden,
ermöglichen
es den DUT-Testern, in Übereinstimmung
zu funktionieren. Diese beiden Verkettungen (17 und 18)
tragen leicht unterschiedliche Typen von Informationen, aber jede
existiert als Teil des gleichen allgemeinen Mechanismus zum Verbinden eines
oder mehrerer Testorte in eine Teststation.
-
Nun
folgt eine Erörterung
von 2, die eine vereinfachte Blockdiagrammerweiterung
des DUT-Testers 6 von 1 ist, von
dem bis zu 36 vorliegen können.
Es ist hier ausreichend, nur ein Beispiel derselben zu beschreiben.
Ein Blick auf 2 zeigt, daß dieselbe ziemlich vollgestopft
ist, insbesondere für
ein „vereinfachtes" Blockdiagramm. Einiges,
was sich in dem DUT-Tester 6 befindet und in dem Blockdiagramm
dargestellt ist, ist funktionell ziemlich kompliziert und nicht
in dieser Form direkt erhältlich.
Es ist hier angebracht, zwei Punkte darzulegen. Zunächst ist
es der Hauptzweck der Aufnahme von 2, die Basiseigenschaften
einer wichtigen Betriebsumgebung innerhalb des gesamten nicht-flüchtigen
Speichertestsystems 1 zu beschreiben. Die Erfindung(en)
die vollständig
in Verbindung mit
-
3 und
nachfolgenden Figuren beschrieben ist, sind entweder Erweiterungen
der Mechanismen, die in der folgenden Beschreibung von 2 dargelegt
sind, oder sie sind neue Mechanismen, deren Motivationsvoraussetzung
in 2 zu finden ist. Jedenfalls ist, während dies
geschrieben wird, nicht genau bekannt, was davon dem Leser vorliegt.
Das derzeitige Ziel ist es, einen vereinfachten und doch informativen
Ausgangspunkt für
zahlreiche unterschiedliche detaillierte Beschreibungen von unterschiedlichen
bevorzugten Ausführungsbeispielen
zu liefern, so daß jede
derselben so genau wie angemessen sein kann (im Gegensatz zu einer „Riesen"-Spezifikation, die
alles über
jede unterschiedliche Erfindung offenbart). Der zweite Punkt ist,
daß das
ausgedehnte oder erweiterte Material, obwohl es im allgemeinen in
Gesamtübereinstimmung
mit 2 ist, Informationen enthalten kann, die nicht
genau mit der vereinfachten Version übereinstimmen. Dies bedeutet
nicht, daß ein
Fehler vorliegt oder daß die
Dinge entscheidend widersprüchlich
sind, sondern dies tritt auf, weil es manchmal schwierig oder unmöglich ist,
etwas so zu vereinfachen, daß es
das exakte Abbild in Miniatur ist. Die Situation ist eher so wie
bei Landkarten. Eine Standardgrößenstraßenkarte
von Colorado zeigt, daß man,
wenn man auf der I-70 nach Osten fährt, auf der I-25 bei Denver nach
Norden fahren kann. Dies sieht aus wie eine Linkskurve. Und obwohl
es tatsächlich
eine Linkskurve war, ist es jetzt keine, und eine detaillierte Karte dieser
Kreuzung wird eine Sequenz von Teilkurven und dazwischenliegenden
Straßenabschnitten
zeigen. Aber niemand würde
sagen, daß die
Standardgrößenstraßenkarte
falsch ist, sie ist für
ihre Abstraktionsebene korrekt. Gleichartig dazu und trotz der ziemlich überfüllten Erscheinung
ist 2 tatsächlich eine
Vereinfachung, die mit einer mittleren Abstraktionsebene funktioniert,
aber einige anscheinende Linkskurven sind in Wirklichkeit einfach
keine Linkskurven.
-
Wie
es in 1 gezeigt ist, ist das Haupteingangssignal an
dem DUT-Tester 6 ein Beispiel des Testortbusses 5,
dessen Ursprung in der Testortsteuerung 4 liegt, die dem
Bei spiel des betreffenden DUT-Testers 6 zugeordnet ist.
Der Testortbus 5 ist mit einer Mehrfachbus-Steuerung 88 gekoppelt,
die einen Verkehr auf dem Testortbus in einen Verkehr auf einem
Ringbus 85 oder einem VT-Bus 89 umwandelt. Der
Ringbusverkehr kann auch in einen VT-Busverkehr umgewandelt werden,
und umgekehrt. Fast alles in 2 ist Teil
einer integrierten Schaltung eines großen Maßstabes; die (unten beschriebene)
Zeitgebungs-/Formatierungs- & Vergleichsschaltung 52 ist in
der Tat acht solche ICs, obwohl wir sie der Kürze halber als eine Entität zeigen.
Bis auf die diversen Ext. DRAMs (von denen manche ebenfalls Teil
des inneren Testspeichers 87 sind – siehe 3) ist der Großteil des
Restes des Materials in 2 Teil einer weiteren großen IC,
die als APG (automatischer Mustergenerator) bezeichnet wird. Der
Ringbus 85 ist ein Mehrzweck-Zwischenmechanismus-Kommunikationspfad
zum Konfigurieren der Hauptelemente in dem APG-Abschnitt des DUT-Testers 6,
und zum Einstellen von Betriebsmodi usw. Zwischen diversen Elementen
des APG liegen ferner diverse zweckgebundene, sehr breite Hochgeschwindigkeitspfade vor.
Der VT-Bus 89 ist ein IC-Zu-IC-Bus zur Verwendung in dem
DUT-Tester selbst.
-
Der
Ringbus 85 ist der Mechanismus, durch den die Testortsteuerung
mit dem APG-Abschnitt des DUT-Testers 6 kommuniziert. Der
Ringbus 85 ist mit einem Mikrocontroller-Sequenzer 19 gekoppelt,
der mit einem Spezialmikroprozessor verglichen werden kann. Unter
Verwendung einer Adresse, die durch eine Nächste-Adresse-Berechnungseinrichtung 102 erzeugt
wird, ruft dieselbe Anweisungen von einem Programm ab, das in einem
Programmspeicher gespeichert ist, der entweder in dem Mikrocontroller-Sequenzer 6 (PGM
SRAM 20) enthalten sein kann oder außerhalb desselben sein kann (EXT.DRAM 21).
Obwohl es so scheint, daß diese beiden
Speicher von einer im wesentlichen logischen gemeinsamen Adresse 63 adressiert
werden, die als ein Programmzähler
(oder eine Anweisungsabrufadresse) dient und beides kann eine Programmierquelle
sein, die ausgeführt
werden muß,
ist fol gendes zu beachten: (1) nur einer der Speicher führt Anweisungsabrufspeicherzyklen
während
jeder Zeitperiode durch, und (2) in der Tat werden sie durch elektrisch unterschiedliche
Signale adressiert. Der SRAM ist schnell und ermöglicht einen wirklichen Direktzugriff, aber
verbraucht innerhalb des Mikrocontroller-Sequenzers 19 (der
ein Teil der großen
APG-IC ist) wertvollen Platz, daher ist seine Größe beschränkt. Der externe DRAM kann
in einstellbaren Ausmaßen von
beachtlicher Menge geliefert werden, ist jedoch nur schnell, wenn
in aufeinanderfolgenden Blöcken auf
denselben zugegriffen wird, die lineare Ausführung und keine Verzweigung
umfassen. Das Programmieren in dem SRAM 20 ist meistens
am intensivsten algorithmisch, während
der EXT.DRAM 21 am besten für Material geeignet ist, das
nicht leicht durch algorithmische Prozesse erzeugt werden kann, wie
z. B. Initialisierungsroutinen und zufällige oder unregelmäßige Daten.
-
Die
Nächste-Adresse-Berechnungseinrichtung 102 kann
ein Abzweigen in dem Testprogramm, das gerade ausgeführt wird,
implementieren, als Antwort auf entweder unbedingte Sprunganweisungen oder
bedingte Sprung- oder bedingte Unterroutine-Anweisungen, die durch
diverse Programmsteuerflags (25), andere Flags (55),
und bestimmte andere Signale bedingt sind, die der Deutlichkeit
halber separat gezeigt sind (DFE 0:3 103 und DPE 0:3 104) und
die für
einen Mehrfach-DUT-Betrieb
bereitgestellt werden.
-
Das
Anweisungswort, das durch den Mikrocontroller-Sequenzer 19 ausgeführt wird,
ist relativ breit: 208 Bits. Es besteht aus 13 16-Bit-Feldern. Diese
Felder stellen oft abgerufene Anweisungsinformationen für Mechanismen
dar, die außerhalb
des ordnungsgemäßen Mikrocontroller-Sequenzers
liegen. Solche Felder sind für
ihre zugeordneten Mechanismen reserviert. Ein Satz von ALU-Befehlen 22 ist
an eine Sammlung von 8 16-Bit-ALUs 24 angelegt, während andere
an verschiedene andere Mechanismen verteilt werden, die durch den
DUT-Tester verteilt sind.
Diese letztere Situation ist durch die Linien und die Bezeichnung „Verschiedene
Steuerungswerte & Anweisungen" 42 dargestellt.
-
Die
8 16-Bit-ALUs (24) weisen jeweils ein herkömmliches
Repertoire an arithmetischen Anweisungen auf, die um zugeordnete
16-Bit-Ergebnisregister aufgebaut sind (jede ALU umfaßt außerdem mehrere
andere Register). Drei dieser Ergebnisregister und deren zugeordnete
ALUs sind zum Erzeugen von X, Y und Z Adreßkomponenten 27, die
verschieden zu einer vollständigen
Adresse kombiniert werden, die an das DUT geliefert wird. Zwei weitere
der 8 ALU/Register (DH und DL) sind vorgesehen, um zu der algorithmischen
Erzeugung von 32 Bit-Datenstrukturen 28 beizutragen, die
zwischen einem höchstwertigen
Abschnitt (DH) und einem niedrigstwertigen Abschnitt (DL) aufgeteilt
sind. Die letzten drei ALU/Register (A, B, C) werden als Zähler verwendet
und tragen zu der Herstellung von verschiedenen Programmsteuerungsflags 25 bei,
die zur Programmsteuerung und Verzweigung bei der Vervollständigung
einer programmatisch spezifizierten Anzahl von Iterationen oder
anderen numerischen Bedingungen beitragen. Diese Programmsteuerungsflags 25 werden
zu dem Microcontroller-Sequenzer 19 zurückgesendet, wo sie den Wert
der Anweisungsabrufadresse (die durch die Nächste-Adresse-Berechnungseinrichtung 102 erzeugt
wurde) auf Arten und Weisen beeinflussen, die denjenigen vertraut
sind, die etwas von mikroprogrammierten Ausführungsmechanismen verstehen.
Es gibt außerdem verschiedene
andere Flags 55, die ebenfalls verwendet werden können, um
eine Programmverzweigung zu beeinflussen. Diese haben ihren Ursprung
zusammen mit verschiedenen anderen Mechanismen in dem DUT-Tester 6,
die durch die unterschiedlichen Felder des abgerufenen Anweisungsworts
gesteuert werden. Ein spezifisches zusätzliches Flag ist ausdrücklich als
ein getrenntes Element gezeigt: VEC_FIFO_FULL 26. Bei einer
anderen, weniger detaillierten Zeichnung kann dasselbe mit den anderen Flags 55 zusammengefaßt werden.
Hier wurde es getrennt, um dazu beizutragen, einen Aspekt des Betriebs
des Microcontroller-Sequenzers 19 zu erklären.
-
Das
VEC_FIFO_FULL hält
(temporär)
die weitere Programmausführung
durch den Mikrocontroller-Sequenzer 19 an. Es liegen viele
Pipelinestufen zwischen den Anweisungen, die durch den Mikrocontroller-Sequenzer 19 abgerufen
werden, und dem Mechanismus, der schließlich Testvektoren ausgibt, die
an das DUT angelegt werden sollen. Außerdem sind ein Teil des Gepäcks, das
einen Vektor begleitet, während
derselbe sich in die Richtung bewegt, um das DUT angelegt zu werden,
Informationen, die die Rate des eventuellen Anlegens des Vektors
betreffen, oder die Dauer jedes Vektors. Somit muß die Rate
des Anlegens des Vektors an das DUT nicht konstant sein und insbesondere
kann eine Gruppe von Vektoren länger
zum Anlegen benötigen
als zum Erzeugen. Der Microcontroller-Sequenzer führt das Programmieren
einfach mit seiner maximalen Rate aus. Aber selbstverständlich muß die Rate
des „Vektorverbrauchs" im Durchschnitt
gleich sein wie die Rate der „Vektorherstellung", sonst müßte die
Pipeline unbegrenzt elastisch sein. Es gibt einen Vektor FIFO 45 an
dem Ausgang des Adreßabbilders 29, der
nachfolgend erörtert
wird, und derselbe dient als eine elastische Kapazität in der
Pipeline. Das Signal VEC_FIFO_FULL wird verwendet, um zu verhindern, daß die begrenzte
Anzahl von Stufen in der Pipeline überschritten wird, durch Bewirken
eines temporären Stillstands
bei der Herstellung von neuen Vektoren an dem Kopfende der Pipeline.
-
Nachfolgend
werden die (3 × 16
= 48 Bits von) X, Y und Z Adreßkomponenten 27 an
einen Adreßabbilder 29 angelegt,
dessen Ausgangssignal eine im voraus ausgewählte beinahe beliebige Neuanordnung
der Adreßwerte
in dem sortierten 48-Bit-Adreßplatz ist.
Als Ausgangspunkt zum Anerkennen desselben nehme man an, daß der Adreßabbilder 29 ein
Speicher ist, der einen 48-Bit-Adreßplatz vollständig besetzt,
und daß derselbe
an jeder Adresse einen 48-Bit-Wert hält. (Vorübergehend ist nicht zu beachten,
daß ein
solcher Speicher – zumindest heutzutage – die Größe eines
großen
Kühlschranks hätte.) Wenn
man von einem solchen Speicher aus geht, könnte eine Nachschlagtabelle
implementiert werden, die jede angelegte Adresse in einen anderen,
beliebig ausgewählten
48-Bit-Wert abbilden könnte,
der dann als eine Austauschadresse verwendet werden könne. Der
Grund dafür,
daß ein
solches Adreßabbilden
wünschenswert
ist, ist, daß die
X-, Y- und Z-Adreßkomponenten
im allgemeinen eine nützliche
Bedeutung im Zusammenhang der internen Architektur eines speziellen
DUT aufweisen, die höchstwahrscheinlich
nicht mit einem großen
linearen Decodierer implementiert ist. Die Gedanken von Zeilen,
Spalten und Schichten, Blökken
oder Seiten können
für den
Testingenieur sehr nützlich
sein, und Fehler, die in Positionen auftreten, die physikalisch nahe
beieinander liegen, können
eine entsprechende Nähe
ihrer X-, Y- und Z-Adressen aufweisen. Solche Strukturen in den
Testergebnissen können
wertvoll sein beim Erkennen dessen, was falsch ist, und bei dem
Versuch, dies zu reparieren, egal ob es auf der Entwicklungsebene
oder einer Herstellungsebene zum Neuprogrammieren eines Teils ist,
um den Betrieb eines defekten Abschnitts mit dem eines zusätzlichen
Abschnitts zu überbrücken. Aus
diesem Denken ergeben sich zwei Punkte. Der erste ist das Einschränken der
48 Bits zu der tatsächlichen
Anzahl von Bits (etwa 32 oder vielleicht 16), die an das DUT angelegt
werden sollen. Nachfolgend wird kurz erwähnt, wie das Einschränken durchgeführt wird,
und es wird im großen
und ganzen durch Wegnehmen von soundsovielen Bits von X, soundsovielen
von Y und den Rest von Z durchgeführt. Aber nicht ausschließlich, und
dies ist der zweite Punkt, weil bestimmte Adressen innerhalb einer
Schaltungsanordnung liegen können,
die ein Links-für-Rechts
(oder Links-für-Rechts
und Oben-für-Unten)
Spiegelbild eines weiteren Abschnitts der Schaltungsanordnung ist.
Dies hat den Effekt der Neuanordnung dessen, was die Bits bedeuten,
abhängig
davon, welche aufeinanderfolgenden Adreßwerte innerhalb dieser Schaltungsanordnung
in physikalischer Reihenfolge sind. Diese Chiplayouteigenschaft
kann oft auftreten, und es kann gut der Fall sein, daß die Tatsache,
wie eine Gruppe von Bits, beispielsweise y, interpretiert wird,
von dem begleitenden Wert von ande ren, beispielsweise Z-Bits, abhängen kann.
Der Adreßabbilder 29 ist
vorgesehen, um es den rohen X-, Y- und Z-Adressen zu ermöglichen, „neu gepackt" zu werden, um dies
zum Vorteil derer zu reflektieren, die Speicher mit solchen internen
architektonischen Anordnungen testen würden. So wie es tatsächlich durchgeführt wird,
ist der Adreßabbilder 29 aus
einer relativ großen
Anzahl von miteinander verbundenen Multiplexern aufgebaut. Derselbe
kann das vollständig
beliebige Nachschlagetabelle-Verhalten eines voll besetzten Speicherdecodierschemas
implementieren, wie es oben zu Erklärungszwecken temporär angenommen
wurde. Derselbe kann jedoch Teilfelder der X-, Y- und Z-Adreßkomponenten
wie benötigt neu
anordnen, insbesondere, da es jetzt einen weiteren Mechanismus gibt,
der das Einschränken
von 48 Bits zu der tatsächlich
benötigten
Anzahl durchführt. Der
Adreßabbilder 29 enthält außerdem drei 16-Bit(Adreß-)Nachschlagetabellen,
die es demselben ermöglichen,
beliebiges beschränktes
Abbilden innerhalb lokaler Bereiche durchzuführen.
-
Das
abgebildete Adreßausgangssignal 30 des
Adreßabbilders 29 wird
als eine Adresse an diverse Pufferspeicher und/oder Tag-RAMs 31A–C und an
einen Fehlererfassungs-RAM 32 angelegt, welche, obwohl
sie getrennte Funktionen aufweisen, trotzdem als auswählbare Teile
in den vier Speichersätzen,
die kollektiv den inneren Testspeicher 37 bilden, implementiert
sein können.
Das abgebildete Adreßausgangssignal 30 wird
ebenfalls als ein Eingangssignal an eine Adreßbitauswahlschaltung 37 angelegt,
deren Multiplexierungsfunktion nachfolgend beschrieben wird. Der
innere Testspeicher kann konfiguriert sein, um viele Instanzen diverser RAM-basierter Speicherstrukturen,
die für
verschiedene Funktionen verwendet werden, zu enthalten. Dies wird
bewerkstelligt, indem erklärt
wird, daß bestimmte
Abschnitte der verschiedenen Speichersätze für die zugeordneten Zwecke verwendet
werden sollen. In 2 ist eine solche Anordnung
gezeigt; die Anordnungen können
mit dem Fortschreiten des Testens geändert werden, und diese ganze
Angelegenheit der Verwendung von Speichersätzen sollte als sehr dynamisch
angesehen werden. Keiner der Bestandteile des inneren Testspeichers
(z. B. der Fehlerfassungs-RAM 32) sind dauerhafte, feste Hardwareeinrichtungen.
Dauerhaft sind die vier Speichersätze. Welcher Teil welches Speichersatzes
zu einem bestimmten Zeitpunkt ein Fehlererfassungs-RAM ist (wenn überhaupt
einer definiert ist), hängt
davon ab, welche Konfiguration eingerichtet wurde.
-
Nachfolgend
werden die Pufferspeicher 31A und 31C betrachtet.
Ihre Funktionen bestehen darin, Datenstrukturen 33 und
Adressen 34 beizubehalten, die an das DUT angelegt werden
können.
Diese sind tatsächliche
getrennte Ausgangssignale von ihren zugeordneten Pufferspeichern,
obwohl diese Pufferspeicher nicht „Dual-Port-Speicher" sind, sondern vorzugsweise
aus Teilen zweier unterschiedlicher Speichersätze bestehen. Um dem zu entsprechen, ist
es bevorzugt, daß gespeicherte
Daten 33 in einem Speichersatz gespeichert werden, während gespeicherte
Adressen 34 in einem anderen gespeichert werden. Außerdem wurde
kein expliziter Mechanismus zum Schreiben auf einen Pufferspeicher
gezeigt. Eine Art und Weise, wie dies bewerkstelligt werden kann,
besteht aus einer adressierten Busoperation, die durch eine Testortsteuerung 4 auf
Befehl des Programms, die dieselbe ausführt, ausgelöst wird. Es gibt einen darunterliegenden „Versorgungsdienstleistungs"-Bus, der als Ringbus 85 bezeichnet wird,
der zu fast allem in 2 führt (bei dem die meisten Visitationen
nicht gezeigt sind – da
dies immense Unordnung in die Zeichnung bringen würde). Eine
andere und schneller Art und Weise, Informationen in die Speichersätze zu schreiben,
ist im Zusammenhang mit 3 beschrieben.
-
Der
Fehlererfassungs-RAM 32 wird durch die gleiche Adresse
adressiert, die an die Pufferspeicher angelegt wird, und er speichert
Informationen über
Fehler oder ruft diese ab, wobei diese Operationen in Verbindung
mit einer Nachdecodierschaltung durchgeführt werden, die nachfolgend
erörtert wird. Wie
bei den Wegen 33 und 34 von den Pufferspeichern 31A und 31C sind
die Wege 62A–D
von dem Fehlererfassungs-RAM
vorzugsweise multiplexierte Ausgänge
von einem Teil eines Speichersatzes (der deklariert ist, der derzeitige
Fehlererfassungs-RAM 32 zu sein), gemäß Konfigurationsinformationen,
die durch den Ringbus (nicht gezeigt) verteilt werden.
-
Es
ist anzumerken, daß der
Daten-MUX 35 als Eingangssignale die gespeicherten Datenausgangssignale 33 von
dem Pufferspeicher 31A umfaßt, und auch Daten 28 von
den Registers DH und DL in der Sammlung 24 von ALUs. Der
Daten-MUX 35 führt
gemäß den Werten 36,
die in dem PGM-SRAM 20 gespeichert sind, eine anfängliche Auswahlwähl durch,
welches dieser Eingangssignale (28, 32) als sein
Ausgangssignal 38 dargestellt wird, das, wenn es nicht
modifiziert wird, wie als nächstes beschrieben
wird, dann als eine der beiden Vektorkomponenten an eine Sendevektorabbilder/Seriellumsetzer/Empfangsvektorvergleichsdatenschaltung 40 angelegt
wird (die andere Komponente ist das Ausgangssignal 39 der
Adreßbitauswahlschaltung 37.)
Der Daten-MUX 35 führt
ferner eine Ersetzung der ursprünglichen
Auswahl durch einen Ersetzungswert durch, der zum „Spaltenstauen" verwendet wird,
das später
beschrieben wird, gemäß einem Spaltenstaumodesignal
(noch nicht gezeigt), und durch Werte, die von einem Tag-RAM erhalten
werden, der als eine Schlechte-Spalte-Tabelle 31B betrieben
wird. Dieser gesamte Mechanismus wird beizeiten ausführlich beschrieben.
-
Die
Schaltung 40 kann drei vektorbezogene Funktionen durchführen: Zusammensetzen
von Vektorkomponenten (38, 39) in eine sortierte
logische Darstellung eines gesamten Vektors, der an das DUT angelegt
(übertragen)
werden soll, Anlegen einer beliebigen dynamischen Korrespondenz
(Abbilden) zwischen den sortierten Bits der logischen Darstellung
des Sendevektors und der tatsächlichen
physikalischen Kanalanzahl der Pinelektronik (d. h. welche Sondenspitze)
das DUT für
dieses Signal (d. h. das Bit in dem Vektor) kontaktie ren wird, und
Kooperieren mit dem Compilierer bei der Unterteilung eines gesamten
logischen Vektors in Stücke,
die getrennt und in Reihenfolge (Seriellumsetzung) für DUTs angelegt werden
sollen, die so etwas zulassen. Welche dieser Funktionen durchgeführt wird,
wird durch Steuersignale von einem SRAM 41 bestimmt, der
außerdem gemäß einem
Feld in der 208-Bit-Anweisung, die durch den Mikrocontroller-Sequenzen 19 abgerufen wird,
adressiert wird.
-
Ebenfalls
in der Schaltung 40 enthalten ist ein Abschnitt einer DUT-Deaktivierungslogik 90.
Ihr Zweck besteht darin, auf diverse Bedingungen zu reagieren, von
denen manche statisch, manche von Testergebnissen abhängig sind,
die jedoch alle programmatisch definiert sind, die anzeigen, welches DUT
bzw. welche DUTs, von insgesamt vier Stück derselben, zu deaktivieren
sind. Diese Angaben werden durch vier Signale DD 0:3 44b getragen (DUT-Deaktivierung
für DUT
Null für
DUT Eins, usw.). Dies geschieht als Unterstützung eines Mehrfach-DUT-Testens
an einem Testort und wird in der zugeordneten, hierin aufgenommenen
Anmeldung näher
erläutert.
Das Ausgangssignal der Schaltung 40 ist ein bis zu 64-Bit-Vektor 44a,
der zusammen mit den DUT-Deaktivierungssignalen 44b an
einen Vektor FIFO 45 angelegt wird, der, wenn er voll ist,
das Signal VEC_FIFO_FULL 26 erzeugt, dessen Bedeutung und
Verwendung oben erörtert
wurde. Der Vektor an der Spitze des Vektors FIFO 45 wird
beim Empfang eines Signals VEC_FIFO_UNLOAD 47, das an einem
Periodengenerator 49 (der nachfolgend erörtert wird)
entsteht, von demselben entfernt. Solche entfernten Vektoren (46)
werden an eine Zeitgebungs/Formatierungs- und Vergleichsschaltung 52 angelegt,
die über
das zugeordnete Beispiel der Pinelektronik 9 mit dem DUT
verbunden ist. Das heißt,
jedes Beispiel (der diversen Testorte) der Pinelektronik 9 empfängt gesendete
und empfangene Vektoren 7 und Pinelektronikkonfigurationsinformationen 8 von
ihrer zugeordneten Zeitgebungs/Formatierungs- und Vergleichsschaltung 52.
-
Die
Zeitgebungs/Formatierungs- und Vergleichsschaltung 52 ist
mit dem VT-Bus 89 gekoppelt, um Konfigurations- und Steuerinformationen
zu empfangen. Man erinnere sich, daß die Zeitgebungs/Formatierungs-
und Vergleichsschaltung 52 tatsächlich acht ICs ist, die wir
für unsere
Zwecke als eine einzige Entität
behandeln.
-
Die
Zeitgebungs/Formatierungs- und Vergleichsschaltung 52 umfaßt einen
internen SRAM 54, der durch die gleiche Anweisungsadresse
(„A" in dem kleinen Kreis)
adressiert wird wie der Programm-RAM 20 des Mikrocontroller-Sequenzers 19. (Statt
dem internen SRAM 54 kann ein externer DRAM 53 verwendet
werden, wird jedoch lokal durch einen inkrementierten Zähler, der
nicht gezeigt ist, adressiert.) Der interne SRAM 54 (oder
externe DRAM 53) unterstützt die Herstellung von Treiber- und
Vergleichszyklen, die zugeordnete Formate aufweisen. Die Treiberzyklen
legen unter Verwendung eines vorgewählten Formats, das durch den
RAM 54 oder 53 geliefert wird, einen Sendevektor
an das DUT an. Die Vergleichszyklen empfangen einen Vektor, der
von dem DUT dargestellt wird und untersuchen denselben, ebenfalls
gemäß einem
vorgewählten,
von einem RAM gelieferten Format, um zu bestimmen, ob er mit vorher
gesendeten Vergleichdaten übereinstimmt.
Sowohl die Treiber- als auch die Vergleichszyklen sind bezüglich ihrer
Dauer einstellbar, und bezüglich
dessen, ob eine Belastung angelegt ist oder nicht, wann diese angelegt
ist und wann Daten zwischengespeichert oder abgetastet werden, ob
ein Signal eine Rückkehr-Zu-Null
darstellt oder nicht, ob ein getriebenes Signal mit seinem Komplement
zu umgeben ist, usw., entsprechend einstellbar. (Diese Optionen
sind die diversen oben genannten Formate.)
-
Der
durch die Zeitgebungs/Formatierungs- und Vergleichsschaltung 52 erzeugte
Vergleich umfaßt
Informationen darüber,
auf der Basis eines jeweiligen Kanals, ob ein Kanal versagte, weil
ein logischer Wert falsch war (ein funktionaler Fehler) und/oder
weil seine elektrischen Eigenschaften außerhalb annehmbarer Grenzen
liegen (ein parametri scher Fehler). Wie in einer integrierten Anmeldung erläutert wird,
ist zudem bekannt, wenn ein Mehrfach-DUT-Testen durchgeführt wird,
welche Kanäle welchen
DUTs zugeordnet sind. Dies ermöglicht
die Erzeugung der vier Signale DFE 0:3 (DUT Nr. Funktionsfehler) 103 und
der vier Signale DPE 0:3 (DUT Nr. Parameterfehler) 104.
-
Der
durch die Zeitgebungs/Formatierungs- und Vergleichsschaltung 52 durchgeführte Vergleich erzeugt
ferner einen 64-Bit-Wert 56, der an einen Empfangsvektorumkehrabbilder/Serien-Parallelumsetzer 57,
dessen Funktion als die logische Umkehrung der Schaltung 40 betrachtet
werden kann. (Der Betrieb der Schaltung 57 wird durch einen
SRAM 58 gesteuert, der der Steuerung der Schaltung 40 durch den
SRAM 41 entspricht.) Danach wird das Ausgangssignal 59 der
Schaltung 57 an die Nachdecodierschaltung 60 angelegt.
Derzeit reicht es aus, zu sagen, daß die Nachdecodierschaltung 60 über programmatische
Kriterien sowohl ankommende Fehlerinformationen 59 und
Fehlerinformationen, die zuvor in dem Fehlererfassungs-RAM gespeichert
wurden, untersuchen kann, um komprimierte und leichter interpretierbare
Fehlerinformationen zu erzeugen, die dann über den Weg 61 zurück in (einen
anderen Teil des) Fehlererfassungs-RAM 32 gespeichert werden können. Ein
Beispiel wäre
es, eine Zahl zu erzeugen, wie oft ein Fehler in einem speziellen
Bereich von Adressen auftrat, wobei diese Informationen nützlich wären für die Entscheidung,
wann durch Aktivieren von Ersatzschaltungen eine Reparatur auf dem
Chip versucht werden soll.
-
Nachfolgend
wird der Periodengenerator 49 und sein zugeordneter Zeitgebungs-SRAM 51 beschrieben.
Diese sprechen auf ein 8-Bit-Signal T_SEL 43 an, das für jede 208-Bit-Anweisung, die durch
den Mikrocontroller-Sequenzer 19 abgerufen wird, eine Dauer
für den
zugeordneten Betrieb der Zeitgebungs/Formatierungs- und Vergleichsschaltung 52 bestimmt.
T_SEL 43 ist ein Element der verschiedenen Steuerungswerte
und Anweisungen 42, die durch die unterschiedli chen Felder
in der abgerufenen Anweisung dargestellt sind. Als ein 8-Bit-Wert kann
dieselbe 265 unterschiedliche Dinge darstellen oder codieren. In
diesem Fall sind diese „Dinge" 28-Bit-Werte, die
in dem Zeitgebungs-SRAM 51 gespeichert sind und durch T_SEL
adressiert werden. Jeder adressierte 28-Bit-Wert (23) spezifiziert
eine gewünschte
Dauer mit einer 19,5 Pikosekunden-Auflösung. Die Sequenz von darauf
zugegriffenen 28-Bit-Dauerwerten (23) ist in einer Periode
FIFO 50 gespeichert, so daß die einzelnen Elemente dieser Sequenz
bei der Wiedergewinnung des beabsichtigten entsprechenden Vektors,
der in dem Vektor FIFO 45 gespeichert ist, wiedergewonnen
und synchron angelegt werden.
-
Ein
grobes Zeitgebungswertfeld in dem ältesten Eintrag in dem FIFO 50 überträgt Dauerinformationen
mit einer Auflösung
von 5 Nanosekunden und erzeugt davon ein Signal VEC_FIFO_UNLOAD 47,
das den nächsten
Sendevektor von dem Vektor FIFO 45 zu der Zeitgebungs/Formatierungs-
und Vergleichsschaltung 52 überträgt. Ein Begleitsignal Zeitgebungsrest 48 wird
ebenfalls an die Schaltung 52 angelegt. Dort wird die endgültige Auflösung auf
19,5 Pikosekunden durchgeführt.
-
Wir
nehmen nun Bezug auf 3, die ein vereinfachtes Blockdiagramm 64 des
inneren Testspeichers 87 in dem Blockdiagramm der 2 ist.
Es empfängt
eine 48-Bit-abgebildete
Adresse 30 von dem Adreßabbilder 29, die
an diverse Adreßklassifizierer 77, 78 und 79 angelegt
wird. Die Adreßklassifizierer
sind Speichersätzen 73–76 zugeordnet,
die jeweils vollständige
Speichermechanismen sind, die diverse Funktionen individuell durchführen können, beispielsweise
die, ein ECR 32 zu sein. Zwei dieser Speichersätze (73, 74)
sind vom Typ eines externen DRAM, während zwei von Typ eines internen
SRAM sind. Die zwei Speichersätze
vom Typ eines externen DRAM weisen tatsächlich immer dieselbe Adreßklassifiziererfunktion
auf und benutzen somit einen gemeinsamen Adreßklassifizierer 77.
Die Speichersätze
vom Typ eines internen SRAM 75 und 76 weisen ihre
eigenen zuge ordneten Adreßklassifizierer 78 bzw. 79 auf.
Diese Adreßklassifizierer
können
entweder eine Adresse unverändert
hindurchleiten oder sie auf Arten und Weisen modifizieren, die in
einer der integrierten Anmeldungen einigermaßen ausführlich beschrieben sind.
-
Jeder
Speichersatz umfaßt
eine Speichersatzsteuerung; die Speichersätze vom Typ eines externen
DRAMs 73 und 74 weisen DRAM-Speichersatzsteuerungen 65 bzw. 66 auf,
während
die Speichersätze
vom Typ eines internen SRAMs 75 und 76 jeweils
SRAM-Speichersatzsteuerungen 67 bzw. 68 aufweisen.
Während
des Testens eines DUT kommt die Adresse für Speichertransaktionen, die
auf einen beliebigen dieser Speichersätze gerichtet ist, an der zugeordneten
Speichersatzsteuerung von dem jeweils zugeordneten Adreßklassifizierer
an. Während des
Testens eines DUT werden zunächst
Fehlerdaten 61, die von der Nachdecodierungsschaltung 60 ankommen
und in einen ECR geschrieben werden sollen, an Datenklassifizierer 80–83 angelegt,
von denen je einer jedem Speichersatz zugeordnet ist. Die Datenklassifizierer
können
die an sie angelegten Daten ändern
oder auch nicht, je nachdem, wie sie konfiguriert sind und welche
Funktion sie erfüllen
sollen. Die Adreß-
und Datenklassifizierer stellen Hochgeschwindigkeitswege für Adressen
bzw. Daten dar, bei denen beabsichtigt ist, daß sie bei den erforderlichen
höchsten
Geschwindigkeiten arbeiten. In Kürze werden
wir sehen, daß der
(noch nicht gezeigte) Ringbus eine weitere Art und Weise liefert,
Adressen und Daten zu den Speichersätzen zu befördern.
-
An
diesem Punkt verfügen
wir über
vier Speichersatzsteuerungen (65–68), die jeweils
ankommende (klassifizierte) Adressen und (klassifizierte) Daten
aufweisen. Jede dieser Speichersatzsteuerungen ist mit einem zugeordneten
Speicher gekoppelt: DRAM-Speichersatzsteuerungen 73 bzw. 74 sind
mit externen DRAMs 69 bzw. 70 gekoppelt, während SRAM-Speichersatzsteuerungen 75 und 76 mit
internen SRAMs 71 bzw. 72 gekoppelt sind. Diese
Anordnungen stellen die vier Speichersätze 73–76 dar,
von denen zwei (75, 76) ein bescheidenes Maß an Hochgeschwindigkeits-SRAM
aufweisen, und zwei (73, 74) ein großes Maß an langsamerem
DRAM aufweisen. Uns interessiert derzeit, wie die DRAM-Speichersätze so schnell
wie die SRAM-Speichersätze ausgeführt werden
können,
und wie bestimmte Alternativen in bezug auf die Konfiguration des
DRAM je nach der Vorliebe des Benutzers und der Testprogrammstrategie
integriert werden können.
Es wird sich also herausstellen, daß die DRAM-Speichersatzsteuerungen 65 und 66 konfigurierbar
sind, unterschiedliche Arten von Speichertransaktionen durchführen und
insgesamt nicht dieselben sind wie die einfacheren SRAM-Speichersatzsteuerungen 67 und 68.
Der Kürze
halber zeigt 3 nicht die Struktur, die diese
Flexibilität
liefert; sagen wir vorläufig einfach,
daß jede
Speichersatzsteuerung mit dem (noch nicht gezeigten) Ringbus verbunden
ist, von dem sie in dem bestimmten Betriebsmodus und der Konfiguration,
die gewünscht
sind, angewiesen wird. Manche dieser Modi beinhalten die Art und
Weise, auf die Daten gespeichert werden, und manche haben damit
zu tun, wie sie wieder herausgeschafft werden. Abschließend ist
also anzumerken, daß jeder
Speichersatz eine zugeordnete Datenausgabe (62A–D) aufweist,
die zur weiteren Verarbeitung an den Nachdecodierungsmechanismus 60 gesendet wird.
Es ist auch anzumerken, daß die
Datenausgaben von den Speichersätzen
Null und Zwei an einen MUX 84 angelegt werden, dessen Ausgabe
zu gespeicherten Daten 33 wird, die an den Daten-MUX 35 gesandt
werden. Desgleichen werden die Datenausgaben von den Speichersätzen Eins
und Drei an einen MUX 127 angelegt, dessen Ausgabe gespeicherte
Adressen wird, die an den Adreßbitauswahl-MUX 37 gesendet
werden. Der Grund dafür, warum
man über
MUXs 84 und 86 verfügt, und die Einzelheiten darüber, wie
sie gesteuert werden, sind hier nicht von besonderem Interesse;
sie werden in den integrierten Anmeldungen erörtert.
-
Speichersatz
drei 76 empfängt
ein Schlechte-Spalte-Modus-Signal
(COL_JAM_MODE 107), das von keinem anderen Speicher satz
empfangen wird. Die Steuerung 68 für den Speichersatz drei verwendet
dieses Signal, um einen speziellen Betriebsmodus, der beizeiten
beschrieben werden soll, zu unterstützen. An diesem Punkt sollte
man sich darüber im
klaren sein, daß,
wenn COL_JAM_MODE 107 WAHR ist, und es nicht der Fall ist,
daß ein
Schreibspeicherzyklus eingeleitet wird, die Präsentation einer neuen Adresse
bewirkt, daß ein
automatischer Lesezyklus an dieser Adresse auftritt. Die vier mindestwertigen
Bits der sich ergebenden Lesedaten werden an den unteren Abschnitt
des Daten-MUX 35 gesandt. (Eine spezielle Schlechte-Spalte-Tabelle wird
gelesen, und wie die Daten abgefangen und verwendet werden, ist
ein Thema für
eine spätere
Erörterung.)
-
Man
betrachte nun 4, die ein ausgedehntes Blockdiagramm 120 des
Daten-MUX 35 der 2 ist. Der
Hauptzweck der Figur besteht darin, die Trennung des MUX 35 in
zwei Teile, 35' und 35'', die durch den Datenweg 38' gekoppelt sind,
zu ermöglichen.
Der Abschnitt 35' wirkt
als ein herkömmlicher
MUX, indem er eine (vorläufige
oder anfängliche)
Auswahl aus Eingaben 28 und 33, die die Ausgabe 38' sein soll,
gemäß dem Eingabesteuerungssignal 36 durchführt. Im
Moment interessieren wir uns vor allem für den Abschnitt 35'', der 38' als eine Dateneingabe und BAD_COL
[3:0] als Steuereingaben empfängt
(sie sind die vier mindestwertigen Bits von 62D aus dem
Speichersatz drei 76).
-
Entsprechend
wird nun auf 5 Bezug genommen, die ein Blockdiagramm 90 des
in 4 gezeigten Abschnitts 35'' ist.
Sie weist als eine Dateneingabe die 32-Bit-Daten 38' auf, die in
vier 8-Bit-Gruppen 112–115 von
verwandter (benachbarter) Wertigkeit unterteilt sind. Diese Unterteilung
in vier 8-Bit-Einheiten arbeitet gut mit einem Mehrfach-DUT-Betriebsmodus
zusammen, sollte derselbe auch wirksam sein. Als nächstes wird
jede dieser Gruppen von 8 Bits (112–115) jeweils als
eine Eingabe an einen zugeordneten achtpoligen Doppel-MUX 93–96 angelegt.
Die anderen Eingaben in diese MUXs sind jeweils die 8-Bit-Gruppen 108–111,
die aus einem 32-Bit-Spaltenstauregister 91 stammen, das über den
Ringbus 85 eingestellt werden kann.
-
Der
Grundgedanke ist der, daß unter
den richtigen Bedingungen alle oder ein Teil der Daten 38' auf ihrem bzw.
seinem Weg zu der Schaltung 40 durch Daten ersetzt werden
können
bzw. kann, die im voraus in das Spaltenstauregister 91 plaziert
worden sind. Der Plan lautet, einen solchen Wert zu verwenden, daß, wenn
er als Programmierungswert für
ein Flash-DUT verwendet wird, dieses DUT unmittelbar anspricht,
als ob der angeforderte Wert erfolgreich programmiert wäre, auch
wenn er in Wirklichkeit nicht erfolgreich programmiert wurde. Man
erinnere sich, daß das
Hauptaugenmerk hier darauf liegt, zu vermeiden, daß Zeit darauf
verwendet wird, eine Spalte zu programmieren, von der man weiß oder vermutet, daß sie defekt
ist. (Ein Anweisen eines modernen Flash-Teils, eine 1 zu programmieren,
ist ein solcher Wert.)
-
Diese
Ersetzung kann bei dem vorliegenden Ausführungsbeispiel mit einer 8-Bit-Auflösung durchgeführt werden,
um auf die üblicheren
Mehrfach-DUT-Szenarien abgestimmt zu sein. Die Passung ist eine
gute für
8-, 16-, 24- und 32-Bit-Teile.
Für 4-Bit-Teile,
12-Bit-Teile usw. liegen einige verschwendete Bits vor. Dies kann
vermieden werden, indem man die Granularität auf unter 8 Bits, vielleicht
sogar bis auf 2 Bits oder sogar nur ein Bit verringert. Im Fall der
2 Bits würden
die vier MUXs 93–96 durch
16 zweipolige Doppel-MUXs,
und in dem Fall des einen Bit durch 32 doppelpolige Einzel-MUXs
ersetzt.
-
Wenn
also beispielsweise zwei 16-Bit-Teile getestet würden, wobei das eine Bits [31:16]
von 38'/38 und
das andere Bits [15:0] verwendet, dann möchte man, wenn das Teil an
den Bits [15:0] an irgendeiner angelegten Adresse eine schlechte
Spalte aufweist, erfassen, daß die
Adresse gerade angelegt wird, daß der Spaltenstaumodus wirksam
ist (so nennen wir ein überlisten
des Testprogramms/DUT, um zu vermeiden, daß Zeit darauf vergeudet wird,
zu versuchen, eine bekanntlich schlechte Spalte zu programmieren),
und dann die Bits [15:0] der Daten 38' durch beispielsweise lauter 1en
zu ersetzen, von den mindestwertigen Bits des Spaltenstauregisters 91.
-
Wenn
man nun wüßte, daß das Bit 3 das Schuldige
wäre, wäre es möglich, lediglich
dieses Bit zu stauen und die anderen normal zu belassen. Dieses
könnte
entweder dadurch erfolgen, daß man
eine 1-Bit-Auflösung
aufweist, oder daß man
die tatsächlichen
realen Daten (die gewöhnlicherweise
an 38' vorliegen
würden)
in den Bits [15:4] und [2:0] des Spaltenstauregisters aufweist,
wobei das Bit 3 eine restliche gestaute 1 ist. Dies über den
Ringbus einzurichten, könnte
langsam sein, ist aber trotzdem eine Möglichkeit. Die Ersparnis wäre der Unterschied
zwischen dem, was nötig
wäre, um
die guten 15 Bits zu programmieren, und der mit dem Programmieren
des schlechten Bits 3 verbundenen Auszeit.
-
Einige
Absätze
früher
sprachen wir davon, dies alles „unter den richtigen Bedingungen" zu tun. Die „richtigen
Bedingungen" lauten,
daß der
Spaltenstaumodus ausgewählt
wurde, indem der Spaltenstaumodus-Latch 92 mit einer geeigneten
Operation über
den Ringbus 85 eingestellt wurde. Ein Einstellen dieses
Latch 92 stellt eine Eingabe in eine Sammlung von UND-Gattern 97, 98, 105 und 106 ein.
Die anderen Eingaben in diese Gatter sind Indikatoren, die von einer
Schlechte-Spalte-Tabelle (126 in 6) erhalten
wurden, die die 4 mindestwertigen Bits von 62D (die Daten
von dem Speichersatz drei 76) sind. Diese Daten werden
von einem automatischen Ablesen an der angelegten Adresse jedesmal
dann erhalten, wenn das Signal COL_JAM_MODE 107 wahr ist. Dazu
wird dieses Signal (107) auch der Speichersatzsteuerung 68 des
Speichersatzes drei zugeführt, wie
zuvor im Zusammenhang mit 3 beschrieben wurde.
Die sich ergebenden Indikatorsignale (vier LSB von 62D)
werden als BAD_COL [3:0] bezeichnet.
-
Der
gewöhnliche
Fall bei dem Speichertester ist der, daß Vorrichtungsversagensfälle durch
Nullen dargestellt werden, so daß die Signale BAD_COL [3:0]
jeweils invertiert werden, wenn sie an ihre jeweils zugeordneten
UND-Gatter angelegt werden. Das Ergebnis ist, daß die MUXs 93–96 gesteuert werden,
um als ihre Ausgaben die Bits von dem Spaltenstauregister immer
dann auszuwählen,
wenn COL_JAM_MODE WAHR ist und ein zugeordnetes der BAD_COL-Bits
Null ist (was bedeutet, daß die
zugeordnete Spalte für
einen dieser MUXs schlecht ist). Steigerungen bei der Ersetzungsauflösung erfordern auch
eine entsprechende Steigerung der Anzahl von Bits in BAD_COL und
der Breite in der Tabelle 126, von der sie gelesen wird.
-
Auf
alle Fälle
werden die Ausgaben 116–119 der MUXs 93–96 als
Daten 38 in einen 32-Bit-Strom zurückgesammelt und an die Schaltung 40 gesandt, wie
zuvor im Zusammenhang mit 2 beschrieben wurde.
-
Es
sei nun auf 6 Bezug genommen, welche eine
Darstellung der Schlechte-Spalte-Tabelle 126 ist, die durch
das Testprogramm in dem Speichersatz drei aufrechterhalten werden
kann. Der Speichersatz drei ist bei dem vorliegenden Ausführungsbeispiel
notwendig, da eine Mehrfach-DUT-Operation
einen ähnlichen
automatischen Tabelle-Lese-Mechanismus
in dem Speichersatz zwei für
eine Mehrfach-DUT-Operation
verwendet, und die verbleibenden Speichersätze nicht für diese Klasse von Service
verfügbar
sind. Diese Beschränkung
ist abhängig
von wahrgenommenen wirtschaftlichen Kompromissen und könnte aus
technischer Sicht beseitigt werden.
-
Des
weiteren schreibt das Testprogramm einen Eintrag von Null in eine
Zelle der Tabelle 126, wenn es bestimmt hat, daß eine Spalte
schlecht ist, entweder während
einer Programmierungsphase oder später, während einer Austestungsphase.
Jede Reihe der Tabelle 126 weist vier Zellen auf, von denen
jede die vier Gruppen von 8 Bits, die die Auflösung des derzeitigen Mechanismus
darstellen, repräsentiert.
Ob eine Gruppe von 8 Bits ein DUT in einem Mehrfach-DUT-Test oder einem Segment
eines einzelnen DUT darstellt, bleibt der Wahl des Testtechnikers überlassen.
Ein einzelnes 32-Bit-DUT würde
bei einer Ganzwortbreitenauflösung
alle 4 Bits in einer Reihe der Tabelle 126 übereinstimmend
einstellen oder löschen.
Auf dieselbe Weise wäre
das Register 91 der 5 eine vereinheitlichte
Sammlung aller 1en. Wenn die Ersetzungsauflösung ein einzelnes Bit wäre, dann
wäre eine
Reihe in der Tabelle 126 32 Bits in Querrichtung, um BAD_COL
[31:0] zu erzeugen. (In 5 wären dann auch 32 MUXs
und 32 UND-Gatter vorhanden, usw.)
-
Wenn
man auf die hierin aufgenommene Anmeldung Bezug nimmt, die sich
auf eine Mehrfach-DUT-Operation bezieht, entdeckt man, daß eine Schlechter-Block-(DUT)-Tabelle
vorliegt, die ähnlich der
oben beschriebenen Schlechte-Spalte-Tabelle 126 ist. In
dem Fall des schlechten DUT wird die Schlechter-Block-Tabelle in alten und neuen Versionen
beibehalten, um entsprechende inkrementelle Hinzufügungen zu
der Tabelle vorzunehmen. Dies könnte
auch hier geschehen, aber angesichts dessen, daß der Großteil der Schlechte-Spalte-Informationen wahrscheinlich
während
einer Spalte-Zu-Spalte-Visitation
während
einer vorläufigen
Programmierungsphase entdeckt und gespeichert würde, ist man der Ansicht, daß durch
eine solche Verdopplung von Tabellen hier kaum etwas oder nichts
gewonnen wäre.
-
Bei
dem vorliegenden Beispiel enthält
die Zelle 122 (und die meisten der anderen) eine „1", um anzuzeigen,
daß kein
Versagen vorliegt. Andererseits enthalten die Zellen 123 und 124 0en,
um anzuzeigen, daß die
Spalte 1 in dem DUT 2 schlecht ist, ebenso wie die Spalte 3 in dem
DUT 0.