DE10153753B4 - Speichertester unterläßt ein Programmieren von Adressen in erfaßten schlechten Spalten - Google Patents

Speichertester unterläßt ein Programmieren von Adressen in erfaßten schlechten Spalten Download PDF

Info

Publication number
DE10153753B4
DE10153753B4 DE10153753A DE10153753A DE10153753B4 DE 10153753 B4 DE10153753 B4 DE 10153753B4 DE 10153753 A DE10153753 A DE 10153753A DE 10153753 A DE10153753 A DE 10153753A DE 10153753 B4 DE10153753 B4 DE 10153753B4
Authority
DE
Germany
Prior art keywords
test
memory
dut
address
bad
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10153753A
Other languages
English (en)
Other versions
DE10153753A1 (de
Inventor
Alan S. Fort Collins Krech Jr.
John M. Fort Collins Freeseman
Ken Hanh Duc San Jose Lai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Verigy Singapore Pte Ltd
Original Assignee
Verigy Singapore Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Verigy Singapore Pte Ltd filed Critical Verigy Singapore Pte Ltd
Publication of DE10153753A1 publication Critical patent/DE10153753A1/de
Application granted granted Critical
Publication of DE10153753B4 publication Critical patent/DE10153753B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Verfahren zum Vermeiden, daß Zeit auf ein Programmieren von schlechten Spalten in einem zu testenden Flash-Speicher (14, 15a–d) verwendet wird, an einem Speichertester (1), wobei das Verfahren folgende Schritte aufweist:
(a) Einrichten eines TAG-RAM (31B, 126), der durch dieselbe Adresse (30) adressiert wird, die an den zu testenden Speicher angelegt ist;
(b) Bestimmen, daß eine angelegte Adresse einer schlechten Spalte zugeordnet ist;
(c) Speichern einer Anzeige (123, 124), daß die Spalte schlecht ist, in dem TAG-RAM an der angelegten Adresse;
(d) nach den Schritten (a) bis (c), Aktivieren (107) eines automatischen Datenersetzungsmechanismus (35'') während einer nachfolgenden Phase eines Testens des zu testenden Speichers, und daraufhin:
(e1) Anlegen einer Testadresse an den TAG-RAM, während versucht wird, den zu testenden Speicher an dieser Testadresse zu programmieren; und
(e2) wenn der TAG-RAM eine Anzeige enthält, daß die Testadresse einer schlechten Spalte zugeordnet ist, Ersetzen, durch eine automatische...

Description

  • 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 4a4z betrachtet, die die 4 Kartenkäfige besetzen können, jede mit 9 Testortsteuerungen. Dieselben werden mit 4a4f, 4g4m, 4n4t und 4u4z 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 4a4f, die sich in einem Kartenkäfig befinden, während eine andere CMD/DAT DSY 17b die Testortsteuerungen 4g4m in einem anderen Kartenkäfig verbindet. Die gleiche Anordnung besteht für die verbleibenden Kartenkäfige und die Testortsteuerungen 4n4t bzw. 4u4z. 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 4a4z. Es gibt eine ähnliche Anordnung für die SYNC/ERR DSY 18a18d und die DUT-Tester 6a6z. 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 7376 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 8083 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 (6568), 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 7376 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 112115 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 (112115) jeweils als eine Eingabe an einen zugeordneten achtpoligen Doppel-MUX 9396 angelegt. Die anderen Eingaben in diese MUXs sind jeweils die 8-Bit-Gruppen 108111, 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 9396 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 9396 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 116119 der MUXs 9396 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.

Claims (2)

  1. Verfahren zum Vermeiden, daß Zeit auf ein Programmieren von schlechten Spalten in einem zu testenden Flash-Speicher (14, 15a–d) verwendet wird, an einem Speichertester (1), wobei das Verfahren folgende Schritte aufweist: (a) Einrichten eines TAG-RAM (31B, 126), der durch dieselbe Adresse (30) adressiert wird, die an den zu testenden Speicher angelegt ist; (b) Bestimmen, daß eine angelegte Adresse einer schlechten Spalte zugeordnet ist; (c) Speichern einer Anzeige (123, 124), daß die Spalte schlecht ist, in dem TAG-RAM an der angelegten Adresse; (d) nach den Schritten (a) bis (c), Aktivieren (107) eines automatischen Datenersetzungsmechanismus (35'') während einer nachfolgenden Phase eines Testens des zu testenden Speichers, und daraufhin: (e1) Anlegen einer Testadresse an den TAG-RAM, während versucht wird, den zu testenden Speicher an dieser Testadresse zu programmieren; und (e2) wenn der TAG-RAM eine Anzeige enthält, daß die Testadresse einer schlechten Spalte zugeordnet ist, Ersetzen, durch eine automatische Wirkung des Speichertesters, des zu programmierenden Datenwerts durch einen Wert (108111), der den im Test befindlichen Speicher veranlaßt, einen unmittelbaren Erfolg zu melden.
  2. Verfahren gemäß Anspruch 1, bei dem der in dem Schritt (e2) zu programmierende Ersetzungsdatenwert lauter Einsen umfaßt.
DE10153753A 2000-10-31 2001-10-31 Speichertester unterläßt ein Programmieren von Adressen in erfaßten schlechten Spalten Expired - Fee Related DE10153753B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/702,578 US6748562B1 (en) 2000-10-31 2000-10-31 Memory tester omits programming of addresses in detected bad columns
US09/702,578 2000-10-31

Publications (2)

Publication Number Publication Date
DE10153753A1 DE10153753A1 (de) 2002-05-16
DE10153753B4 true DE10153753B4 (de) 2007-09-27

Family

ID=24821799

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10153753A Expired - Fee Related DE10153753B4 (de) 2000-10-31 2001-10-31 Speichertester unterläßt ein Programmieren von Adressen in erfaßten schlechten Spalten

Country Status (4)

Country Link
US (1) US6748562B1 (de)
JP (2) JP2002203398A (de)
KR (1) KR20020033560A (de)
DE (1) DE10153753B4 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7609561B2 (en) * 2006-01-18 2009-10-27 Apple Inc. Disabling faulty flash memory dies
US7793059B2 (en) * 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
US7702935B2 (en) * 2006-01-25 2010-04-20 Apple Inc. Reporting flash memory operating voltages
US7861122B2 (en) * 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US7529969B1 (en) * 2006-08-24 2009-05-05 Micron Technology, Inc. Memory device internal parameter reliability
US7913032B1 (en) 2007-04-25 2011-03-22 Apple Inc. Initiating memory wear leveling
US20080288712A1 (en) 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
KR100955010B1 (ko) * 2007-11-20 2010-04-27 모바일 어플라이언스 주식회사 실행 코드를 포함하는 낸드 플래시 메모리 복사 방법
JP2010134979A (ja) * 2008-12-03 2010-06-17 Fujitsu Ltd 演算処理装置および記憶装置用試験装置の制御方法
JP2011054244A (ja) * 2009-09-02 2011-03-17 Toshiba Corp 半導体試験方法及び半導体試験装置
US8225030B2 (en) * 2009-09-30 2012-07-17 Dell Products L.P. Systems and methods for using a page table in an information handling system comprising a semiconductor storage device
CN103093829A (zh) * 2011-10-27 2013-05-08 迈实电子(上海)有限公司 存储器测试系统及存储器测试方法
TWI601148B (zh) 2016-05-05 2017-10-01 慧榮科技股份有限公司 損壞資料行的篩選方法與具有損壞資料行總表的資料儲存裝置
CN106158047A (zh) * 2016-07-06 2016-11-23 深圳佰维存储科技股份有限公司 一种nand flash测试方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896398A (en) * 1996-10-22 1999-04-20 Advantest Corp. Flash memory test system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5617365A (en) * 1988-10-07 1997-04-01 Hitachi, Ltd. Semiconductor device having redundancy circuit
JP3055553B2 (ja) * 1988-10-07 2000-06-26 株式会社日立製作所 半導体装置
WO1993015462A1 (en) * 1992-02-03 1993-08-05 Advantest Corporation Memory tester
JP3116827B2 (ja) * 1996-07-16 2000-12-11 日本電気株式会社 キャッシュメモリ制御装置
JP3483724B2 (ja) * 1997-03-19 2004-01-06 シャープ株式会社 不揮発性半導体記憶装置
US6260156B1 (en) * 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6484271B1 (en) * 1999-09-16 2002-11-19 Koninklijke Philips Electronics N.V. Memory redundancy techniques

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896398A (en) * 1996-10-22 1999-04-20 Advantest Corp. Flash memory test system

Also Published As

Publication number Publication date
JP2008310955A (ja) 2008-12-25
DE10153753A1 (de) 2002-05-16
JP2002203398A (ja) 2002-07-19
US6748562B1 (en) 2004-06-08
KR20020033560A (ko) 2002-05-07

Similar Documents

Publication Publication Date Title
DE60111324T2 (de) Fehlerdiagnose-RAM eines Speichertesters mit nach Grösse und Geschwindigkeit konfigurierbaren SDRAM Speichereinheiten
DE60219990T2 (de) Speichertest-Schaltung
DE10153753B4 (de) Speichertester unterläßt ein Programmieren von Adressen in erfaßten schlechten Spalten
DE69133450T2 (de) Redundanz-Aufstellung zur Beseitigung von Defekten in einer Speicheranordnung
DE69421572T2 (de) Überprüfung von Redundanzelementen eines IC-Speichers ohne Programmierung redundanter Ersatzelemente
DE10147910A1 (de) Speichertester weist Speichersätze auf, die für die Verwendung als Fehlererfassungs-RAM, Etiketten-RAM, Pufferspeicher und Stimulus-LOG-RAM konfigurierbar sind
DE69130693T2 (de) Eingebaute Selbstprüfung für integrierte Schaltungen
DE69808956T2 (de) Teilweise abschaltbare spannungsversorgung für integrierte schaltkreise
DE69127036T2 (de) Halbleiter mit verbessertem Prüfmodus
DE3630835C2 (de) Integrierte Halbleiterkreisanordnungen und Systeme
DE69330974T2 (de) Unterbrechungsfreies wahlfreies Zugriffspeichersystem
DE3751002T2 (de) Halbleiterspeicher.
DE60017927T2 (de) Eingebautes system zur analyse des austausches von freien zeilen und spalten für integrierte speicher
DE69714472T2 (de) Verfahren zum überprüfen eines integrierten speichers mit hilfe einer integrierten dma-schaltung
DE60220511T2 (de) Verfahren und system zur optimierung der testkosten und deaktivierungsdefekte für scan- und bist-speicher
DE4328605C2 (de) Halbleiterspeichereinrichtung
DE60001291T2 (de) Halbleiterspeicherschaltung mit eingebauter Selbstprüfung und Selbstreparatur
DE69834011T2 (de) Statische Direktzugriffspeicherschaltungen
DE10217303A1 (de) Algorithmisch programmierbarer Speichertester mit Unterbrechungspunktauslöser, Fehlerblockierung und Oszilloskop-Modus, der Zielsequenzen speichert
DE112019007371T5 (de) Eine mit einem system-on-chip gekoppelte speichergerätearchitektur
DE69412230T2 (de) Verfahren zur Programmierung von Redundanzregistern in einer Spaltenredundanzschaltung für einen Halbleiterspeicherbaustein
DE19639972B4 (de) Hochgeschwindigkeitstestschaltkreis für eine Halbleiterspeichervorrichtung
DE10005618A1 (de) Integrierter Halbleiterspeicher mit redundanter Einheit von Speicherzellen
DE4213574C2 (de) Halbleiterspeichereinrichtung und Betriebsverfahren dafür
DE69321245T2 (de) Integrierte Programmierschaltung für eine elektrisch programmierbare Halbleiterspeicheranordnung mit Redundanz

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: VERIGY (SINGAPORE) PTE. LTD., SINGAPORE, SG

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110502