-
HINTERGRUND
-
Was beschrieben wird, sind Verfahren
und Vorrichtung zum Analysieren und Reparieren von Speicher. Insbesondere
werden Verfahren und Vorrichtung zum Analysieren und Reparieren
von schadhaften Speicherzellen eines Speichers mit redundanter Speicherschaltungstechnik
vorgestellt.
-
In allgemeinsten Sinne kann ein Speicher
als zweidimensionale Felder von Speicherzellen mit einer Anzahl
von Zeilen (M) und einer Anzahl von Spalten (N) definiert werden.
Jeder Schnittpunkt einer Zeile und einer Spalte erzeugt ein Ausgabebit
von gespeicherter Information. Häufig
ist es wünschenswert,
mehr als ein Bit einer Informationsausgabe aus dem Speicher zu einem
beliebigen gegebenen Zeitpunkt zu haben. Zwei Verfahren, um dies
zu erreichen, sind entweder Duplizieren der gesamten Feldstruktur,
um das zusätzliche Ausgabebit
vorzusehen, oder Unterteilen einer Dimension des Feldes (z.B. entweder
in der M- oder N-Dimension) in verschiedene Unterteilungen, wobei
jede Unterteilung ein Ausgabebit zu jedem
Zeitpunkt vorsieht, wenn auf das Speicherfeld zugegriffen wird.
-
Es können drei Variablen R, C und
I/O verwendet werden, um das Unterteilte zu beschreiben (typischerweise
geschrieben als R × C × IO). R
und C können
die Anzahl von Zeilen bzw. die Anzahl von Spalten in dem Feld darstellen
und dienen als Eingaben zu dem Feld. Die I/O-Variable wird kann
die Anzahl von Bits darstellen, die von einem "Schnittpunkt" einer Zeile und einer Spalte in dem
Feld ausgegeben werden. In der Praxis werden die I/O-Bits nicht
an dem Schnittpunkt einer einzelnen Zeile und Spalte des Feldes
gebildet. Stattdessen werden die I/O-Bits durch entweder eine Sammlung
von Schnittpunkten einer einzelnen Zeile und mehrfacher Spalten
des Feldes, auf die gleichzeitig zugegriffen wird, oder durch eine
Sammlung von Schnittpunkten einer einzelnen Spalte und mehrfacher
Zeilen des Feldes, auf die gleichzeitig zugegriffen wird, gebildet.
Wie die I/O-Bits gebildet werden, hängt davon ab, Zeilen oder Spalten
unterteilt sind, um die mehrfachen I/Os für das Feld zu erstellen.
-
Konventionelle Speicherfelder enthalten
redundante Speicherzellen, die verwendet werden, um schadhafte Speicherzellen
zu ersetzen, zum großen
Teil um die Herstellungsausbeute an Speicher zu erhöhen. Da
Speicher allgemein als zweidimensionale Felder von Zeilen und Spalten
definiert werden kann, ist es passend, auch die redundanten Zellen
als zweidimensionale Gruppen von Ersatzzeilen und Ersatzspalten (oder
Ersatz-I/Os) zu definieren. Die Anzahl von Ersatzzeilen und Spalten
(oder I/Os) und ihre Konfigurationen können variieren, typischerweise
wird ein Speicherfeld aber angeordnet sein, entweder Gruppen von
Ersatzzeilen und Spalten oder Gruppen von Ersatzzeilen und I/Os
zu haben.
-
Eine Ersatzzeile ist zum gleichzeitigen
Ersetzen einer Anzahl von Spalten und I/Os, die mit einer einzelnen
Zeilenadresse eines Speichers verbunden sind, fähig. Ähnlich ist, wenn vorhanden,
eine Ersatzspalte zum Ersetzen einer Anzahl von Zeilen, die mit
einer einzelnen Spaltenadresse eines Speichers verbunden ist, fähig. Ersatz-I/Os,
wenn vorhanden, sind zum gleichzeitigen Ersetzen einer Anzahl von
Spalten, die mit einem bestimmten I/O-Bit eines Speichers verbunden
sind, fähig.
Typischerweise sind I/Os in der gleichen Richtung wie entweder die
Zeilen oder Spalten von dem Speicherfeld orien tiert und können so
gleich behandelt werden wie der Typ eines Ersatzes, der in der gleichen
Richtung orientiert ist, für
den Zweck eines Austauschs einer schadhaften Speicherzelle.
-
Konventionelles Testen von Speicher
bezieht sowohl eine Identifizierung aller schadhaften Speicheradressen
in einem Speicherfeld als auch eine Identifizierung dessen, welches
(welche) Bit (s) jener Speicheradressen schadhaft sind, ein. Ein
typischer Speichertest bezieht Schreiben verschiedener Datenmuster
in einen Speicher, dann Lesen und Vergleichen der Ausgabe aus dem
Speicher mit erwarteten Werten oder Mustern ein. Ungleichheiten
zwischen erwarteten und tatsächlichen
gelesenen Speicherwerten werden in einem externen Speicherabbild
gespeichert, das sich typischerweise in dem Speichertester selbst
befindet.
-
Nachdem alle Testmuster ausgeführt wurden
und die schadhaften Adressen (und Bits) identifiziert und gespeichert
wurden, kann der Tester dann eine Reparaturanalyse in den gespeicherten
Fehlerdaten durchführen,
um zu bestimmen, welche Bits (oder Zellen) von Zeilen und/oder Spalten
(oder I/Os) einer schadhaften Adresse durch verfügbare Ersatzspeicherzellen
ersetzt werden müssen,
um den Speicher voll betriebsfähig
zu machen. Die Information eines schadhaften Speichers wird typischerweise
am Ende des gesamten Speichertests analysiert. Dies ermöglicht einer
Reparaturroutine, die gesamte Information des schadhaften Speichers in
Betracht zu ziehen, um eine optimale Reparaturkonfiguration zu bestimmen,
die den Betrieb des Speichers maximiert und die die redundanten
Speicherzellen auf die effizienteste Art und Weise verwendet. Durch
Berücksichtigung
der gesamten Information über
schadhaften Speicher zu einer Zeit können bestimmte irreparable
Speicherbedingungen frühzeitig
identifiziert und der Speicher verworfen werden, bevor wertvolle
Test- und Reparaturzeit für
die irreparable Situation verschwendet wird.
-
Begrenzungen, die mit den meisten
konventionellen Testern verbunden sind, erfordern, dass die Reparaturinformation
dynamisch generiert und verwendet wird. Dies kann die gesamte Speicherausbeute
durch ineffizientes Verwenden der redundanten Speicherzellen reduzieren.
Diese Begrenzungen haben auch Speichertesten zu einem höchst aufwändigen und
zeitverbrauchenden Prozess bei der Entwicklung von schnellerem und
dichterem Speicher gemacht.
-
Zum Beispiel haben konventionelle
Speichertester typischerweise eine relativ langsamere Bearbeitungstaktgeschwindigkeit
als die Betriebsfrequenz der Speicherzelle, für deren Test sie verwendet
werden. Die relativ langsamere Taktgeschwindigkeit macht es unmöglich zu
bestimmen, ob der im Test befindliche Speicher bei normalen Betriebsgeschwindigkeiten
korrekt arbeiten wird. Auch ist bei Verwendung dieser langsameren
konventionellen Tester Sammeln von Fehlerinformation bei der normalen
Betriebsgeschwindigkeit nicht möglich.
Folglich muss der Tester zum Speichern großer Mengen von Fehlerdaten
und dann Analysieren dieser großen
Datenmenge in einer Reparaturroutine, die "off-line" ausgeführt wird, fähig sein. Bei konventionellen
Testern muss der Fehlerspeicher so groß wie die gesamte erwartete
Anzahl von schadhaften Bits sein. Da Speicherdichten fortsetzen
sich zu vergrößern, muss
auch der bereits begrenzte Testerspeicher erhöht werden und die Bearbeitungsleistung
des Testers muss erhöht
werden, um komplexere Reparaturroutinenlösungen bearbeiten zu können.
-
Eine andere Begrenzung, die mit konventionellen
Testern verbunden ist, ist ihre typische begrenzte I/O-Fähigkeit.
Da Speicher dichter wird, muss sich auch die Anzahl von I/Os, die
benötigt
werden, um den Speicher zu testen, erhöhen. Tester, die I/O-begrenzt
sind, werden nicht fähig
sein, den gesamten Speicher zu einem Zeitpunkt zu testen, was es
erfor derlich macht, das Testprogramm in mehrere kleinere Tests zu
partitionieren. Die Partitionierung des Speichertests führt zu einer
insgesamt erhöhten
Testzeit, was beträchtlich
zu den Kosten beiträgt,
die mit einer Speicherherstellung verbunden sind.
-
Speicherkonstrukteure haben Techniken
für einen
eingebauten Selbsttest (built-in-self-test, oder BIST) genutzt,
um einige dieser Probleme anzusprechen. Bei BIST wird ein Mustergenerator
zum Testen des Speichers auf dem gleichen Halbleiterchip (oder Wafer)
wie der Speicher selbst hergestellt. Dies ermöglicht es der BIST-Schaltungstechnik,
den Speicher "bei
Geschwindigkeit" zu
testen, was die Probleme eines Versagens, Fehler als ein Ergebnis
eines Speichertests bei Geschwindigkeiten unterhalb der des Betriebs
zu erfassen, beseitigt. Außerdem
spricht BIST-Schaltungstechnik die Probleme an, die mit heutigen
Testern verbunden sind, die I/O-begrenzt sind.
-
Dennoch sind mit konventionellen
BIST-Techniken Begrenzungen verbunden. Zum Beispiel müssen noch
große
Mengen von Fehlerspeicher in die BIST-Schaltungstechnik einbezogen
werden, um die Information über
schadhaften Speicher zu speichern. Auch müssen zusätzliche Speicher- und Prozessorressourcen
in den Speicher einbezogen werden, um die Reparaturroutinenbearbeitung
durchzuführen.
Wegen der Raum- und Prozessorbegrenzungen können nur begrenzte Mengen von
Fehlerspeicher und Reparaturcode in den BIST-Entwurf integriert
werden. Folglich fahren konventionelle BIST-Techniken fort, einen "Schnappschuss-Ansatz" ("snapshot-approach") zum Erfassen schadhafter
Speicherstellen zu verwenden. Dies erfordert, dass die Reparaturroutine
Information schadhaften Speichers "im Flug" ("on
the fly") bearbeitet,
was wie oben erörtert
zu einer ineffizientes Verwendung der redundanten Speicherzellen,
die auf dem Speicherchip enthalten sind, führt.
-
Es gibt somit ein Erfordernis für verbesserte
Techniken zum Analysieren und Reparieren von Speicher, die die Komplexität der Reparaturroutine
auf eine viel einfachere Aufgabe reduzieren und die Fehlerspeicheranforderungen,
die Speichertestern auferlegt werden, mildern.
-
ZUSAMMENFASSUNG
-
Entsprechend ist es ein Ziel, eine
Speicheranalyse reduzierter Komplexität und Reparaturtechnik, die verschiedene
kleinere Abschnitte von Speicher zur gleichen Zeit effizient reparieren
kann, vorzusehen. Ein anderes Ziel ist es, eine Speicheranalyse
und Reparaturtechnik vorzusehen, die die Speicherung auf einem Chip (on-chip
storage) einer gesamten Information schadhaften Speichers auf eine
effiziente Art und Weise ermöglicht.
Ein anderes Ziel ist es, eine Analyse bei Geschwindigkeit und eine
Generierung von Reparaturinformation für alle Information schadhaften
Speichers vorzusehen. Noch ein anderes Ziel ist es, das Testen von
Speicher mit einer großen
Anzahl von I/Os zu unterstützen.
Noch ein anderes Ziel ist es, bestimmte irreparable Speicherfehlerbedingungen
frühzeitig
bei einer Ausführung
der Reparaturroutine zu erfassen. Diese Ziele werden durch Verfahren
und Vorrichtung, die schadhaften Speicherzellen eines Speichers
zu analysieren und zu reparieren, angesprochen.
-
Gemäß einem Aspekt umfasst ein
Verfahren zum Analysieren und Reparieren von Speicher den Schritt
zum Bestimmen, ob schadhafte Speicherzellen, die in mindestens einem
Abschnitt eines Speichers erfasst werden, unter Verwendung nur eines
von einer Anzahl von Typen von Speicherersatzteilen repariert werden
müssen
oder unter Verwendung beliebiger der Anzahl von Typen von Speicherersatzteilen
repariert werden können.
Schadhafte Speicherzellen, die unter Verwendung nur eines von der
Anzahl von Typen von Speicherersatzteilen repariert wer den müssen, werden
wiederholt repariert, wobei beliebige schadhafte Speicherzellen,
die unter Verwendung beliebiger der Anzahl von Typen von Speicherersatzteilen
repariert werden können, übersprungen
werden, bis entweder keine neuen Fehler, die repariert werden müssen, repariert
werden und keine schadhaften Speicherzellen übersprungen werden oder der
Speicher bestimmt wird, irreparabel zu sein. Mindestens eine von
beliebigen schadhaften Speicherzellen, die übersprungen werden, wenn schadhafte Speicherzellen
repariert werden, die repariert werden müssen, wird repariert. Die Schritte
zum Bestimmen, ob schadhafte Speicherzellen repariert werden müssen und
wiederholten Reparieren schadhafter Speicherzellen, die repariert
werden müssen,
werden wiederholt, wann immer mindestens eine übersprungene schadhafte Speicherzelle
repariert wird.
-
Gemäß einem verwandten Aspekt ist
ein erster Typ aus der Vielzahl von Typen von Speicherersatzteilen
zum Reparieren eines von einem Zeilen- und Spaltenabschnitt eines
Speichers fähig
und ein zweiter komplementärer
Typ aus der Vielzahl von Typen von Speicherersatzteilen ist zum
Reparieren des anderen der Zeilen- und Spaltenabschnitte eines Speichers
fähig.
-
Gemäß einem anderen verwandten
Aspekt umfassen schadhafte Speicherzellen, die repariert werden müssen, schadhafte
Speicherzellen in einem jeweiligen Zeilen- oder Spaltenabschnitt
eines Speichers mit einer Gesamtanzahl von schadhaften Speicherzellen,
die eine Anzahl von verfügbaren
Speicherersatzteilen eines komplementären Typs überschreitet.
-
Gemäß noch einem anderen verwandten
Aspekt ist der mindestens eine Abschnitt eines Speichers durch logisches
Unterteilen des Speichers in eine Anzahl von Analyseblöcken ausgebildet,
wobei jeder Analyseblock vollständig
mindestens einen von je dem Typ aus der Vielzahl von Typen von Speicherersatzteilen umfasst.
-
Gemäß noch einem anderen verwandten
Aspekt ist der mindestens eine Abschnitt eines Speichers durch logisches
Unterteilen von jedem Analyseblock in eine Anzahl von Teilblöcken ausgebildet,
wobei jeder Teilblock, der sich über
ein Gebiet des jeweiligen Analyseblocks entsprechend einem Bereich
von Speicherzellen erstreckt, die zu reparieren jeder aus der Vielzahl
von Typen von Speicherersatzteilen fähig ist.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst das Verfahren ferner den Schritt zum Speichern von
Information einer schadhaften Speicherzelle für jeden Teilblock als einen
separaten adressierbaren Eintrag im Speicher.
-
Gemäß noch einem anderen verwandten
Aspekt wird die Information einer schadhaften Speicherzelle für jeden
Teilblock in einem Abschnitt des Speichers, der analysiert und repariert
wird, gespeichert.
-
Gemäß noch einem anderen verwandten
Aspekt entspricht jeder adressierbare Eintrag in einem Speicher
einer Fehlerspeichertabelle für
einen jeweiligen Teilblock, wobei jede Fehlerspeichertabelle Zeilen-
und Spalteneinträge
zum Speichern von Information in Bezug auf eine Anzahl von schadhaften
Speicherzellen hat, die in jeweiligen Zeilen- und Spaltenabschnitten
eines Speichers erfasst werden.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst das Verfahren ferner den Schritt zum Lesen der Information
in Bezug auf die Anzahl von schadhaften Speicherzellen, die in jeweiligen
Zeilen- und Spaltenabschnitten eines Speichers erfasst werden, aus
mindestens einer Fehlerspeichertabelle, die in einem Speicher gespeichert
ist. Die schadhaften Speicherzel- len,
die in dem mindestens einen Abschnitt eines Speichers erfasst werden,
befinden sich in Teilblöcken
entsprechend der mindestens einen Fehlerspeichertabelle, aus der
die Information in Bezug auf die Anzahl schadhafter Speicherzellen
gelesen wird.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst das Verfahren ferner den Schritt zum Durchführen von
jedem der Schritte des Verfahrens in separaten Abschnitten des Speichers,
bis entweder alle schadhaften Speicherzellen, die in dem Speicher
erfasst werden, repariert wurden oder der Speicher bestimmt wird,
irreparabel zu sein.
-
Gemäß noch einem anderen verwandten
Aspekt geschieht das Durchführen
von jedem der Schritte des Verfahrens in getrennten Abschnitten
des Speichers zur gleichen Zeit für jeden separaten Abschnitt.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst der Schritt zum wiederholten Reparieren schadhafter
Speicherzellen, die unter Verwendung von nur einem aus der Vielzahl
von Typen von Speicherersatzteilen repariert werden müssen, den
Schritt zum Bestimmen, ob ein Zeilen- oder Spalteneintrag in der
mindestens einen Fehlerspeichertabelle leer ist oder ob ein Fehler,
der durch den Zeilen- oder Spalteneintrag identifiziert wird, repariert
wurde. Wenn weder der Zeilen- oder Spalteneintrag leer ist noch
der identifizierte Fehler repariert wurde, wird dann bestimmt, ob
der identifizierte Fehler repariert werden muss. Anderenfalls wird
bestimmt, ob ein nächster
Zeilen- oder Spalteneintrag in der mindestens einen Fehlerspeichertabelle
leer ist oder ob ein Fehler, der durch den nächsten Zeilen- oder Spalteneintrag
identifiziert wird, repariert wurde. Wenn der identifizierte Fehler
repariert werden muss, wird dann bestimmt, ob ein Ersatzteil von
dem nur einen aus der Vielzahl von Typen von Speicherersatzteilen verfügbar ist.
Anderenfalls wird der Schritt zum Reparieren des identifizierten
Fehlers übersprungen
und es wird bestimmt, ob ein nächster
Zeilen- oder Spalteneintrag in der mindestens einen Fehlerspeichertabelle
leer ist oder ob ein Fehler, der durch den nächsten Zeilen- oder Spalteneintrag
identifiziert wird, repariert wurde. Wenn ein Ersatzteil des nur
einen aus der Vielzahl von Typen von Speicherersatzteilen verfügbar ist,
wird dann der identifizierte Fehler mit einem Ersatzteil von dem
nur einen aus der Vielzahl von Typen von Ersatzteilen repariert
und es wird bestimmt, ob ein nächster
Zeilen- oder Spalteneintrag in der mindestens einen Fehlerspeichertabelle
leer ist oder ob ein Fehler, der durch den nächsten Zeilen- oder Spalteneintrag
identifiziert wird, repariert wurde. Anderenfalls wird der Speicher
bestimmt, irreparabel zu sein. Der Schritt zum Bestimmen, ob ein
Zeilenoder Spalteneintrag in der mindestens einen Fehlerspeichertabelle
leer ist oder ob ein Fehler, der durch den Zeilenoder Spalteneintrag
identifiziert wird, repariert wurde, wird wiederholt, bis alle Zeilen-
und Spalteneinträge
in der mindestens einen Fehlerspeichertabelle bearbeitet wurden.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst der Schritt zum Reparieren mindestens einer von beliebigen
schadhaften Speicherzellen, die übersprungen
wird, wenn schadhafte Speicherzellen, die repariert werden müssen, repariert
werden, den Schritt zum Reparieren nur einer ersten erfassten schadhaften Speicherzelle
der mindestens einen von beliebigen übersprungenen schadhaften Speicherzellen.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst der Schritt zum Reparieren nur einer ersten erfassten
schadhaften Speicherzelle den Schritt zum Bestimmen, ob ein Zeilen-
oder Spalteneintrag in der mindestens einen Fehlerspeichertabelle
leer ist. Wenn der Zeilen- oder Spalteneintrag nicht leer ist, wird
dann bestimmt, ob ein Fehler, der durch den Zeilen oder Spalteneintrag
identifiziert wird, repariert wurde. Anderenfalls wird bestimmt,
ob ein nächster
Zeilen- oder Spalteneintrag in der mindestens einen Fehlerspeichertabelle leer
ist. Wenn der identifizierte Fehler nicht repariert wurde, wird
dann bestimmt, ob ein erster Typ aus der Vielzahl von Typen von
Speicherersatzteilen verfügbar
ist. Anderenfalls wird bestimmt, ob ein nächster Zeilen- oder Spalteneintrag
in der mindestens einen Fehlerspeichertabelle leer ist. Wenn ein
erster Typ aus der Vielzahl von Typen von Speicherersatzteilen verfügbar ist,
wird dann der identifizierte Fehler mit einem Ersatzteil des ersten
Typs repariert. Anderenfalls wird bestimmt, ob ein zweiter komplementärer Typ
aus der Vielzahl von Typen von Speicherersatzteilen verfügbar ist.
Wenn ein zweiter Typ aus der Vielzahl von Typen von Speicherersatzteilen
verfügbar
ist, wird dann der identifizierte Fehler mit einem Ersatzteil des
zweiten Typs repariert. Anderenfalls wird der Speicher bestimmt,
irreparabel zu sein. Der Schritt zum Bestimmen, ob ein Zeilen- oder Spalteneintrag
in der mindestens einen Fehlerspeichertabelle leer ist, wird wiederholt,
bis mindestens alle Zeileneinträge
oder alle Spalteneinträge
in der mindestens einen Fehlerspeichertabelle bearbeitet wurden.
-
Gemäß noch einem anderen verwandten
Aspekt müssen,
wenn bestimmt wird, dass ein beliebiger Zeilen- oder Spalteneintrag
in der mindestens einen Fehlerspeichertabelle leer ist, nächste Einträge des Typs, der
leer ist, nicht bearbeitet werden.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst der Zeilenabschnitt eines Speichers mindestens eine
Zeile eines Speichers und der Spaltenabschnitt eines Speichers umfasst
mindestens eine Spalte eines Speichers.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst der Spal-tenabschnitt
eines Speichers mindestens eine Eingabe-/Ausgabe-(I/O)-Vorrichtung,
wobei die mindestens eine I/O-Vorrichtung einen Eingabe- und Ausgabepfad
für mindestens
eine Spalte eines Speichers vorsieht.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst der Schritt zum Reparieren von mindestens einer von
beliebigen schadhaften Speicherzellen, die übersprungen werden, wenn schadhafte
Speicherzellen repariert werden, die repariert werden müssen, den
Schritt zum Bestimmen, welcher Typ der Vielzahl von Typen von Speicherersatzteilen
zum Reparieren einer größten Anzahl
von schadhaften Speicherzellen, die unter Verwendung beliebiger
aus der Vielzahl von Typen von Speicherersatzteilen repariert werden
können,
fähig ist.
Die größte Anzahl
von schadhaften Speicherzellen wird mit einem verfügbaren Ersatzteil
des bestimmten Typs ersetzt.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst das Verfahren ferner vor einem Bestimmen, ob schadhafte
Speicherzellen, die in mindestens einem Abschnitt eines Speichers
erfasst werden, repariert werden müssen, die Schritte zum Bestimmen,
ob ein beliebiger aus der Vielzahl von Typen von Speicherersatzteilen
in dem mindestens einen Abschnitt eines Speichers nicht funktionstüchtig ist.
Information bezüglich nichtfunktionstüchtiger
Speicherersatzteile wird zusammen basierend auf einer Anordnung
der Vielzahl von Typen von Speicherersatzteilen in dem mindestens
einen Abschnitt eines Speichers gruppiert.
-
Gemäß noch einem anderen verwandten
Aspekt umfasst der Schritt zum gemeinsamen Gruppieren von Information
bezüglich
nichtfunktionsfähiger
Speicherersatzteile den Schritt zum gemeinsamen logischen Oder-Verknüpfen der
Information bezüglich
nichtfunktionsfähiger
Speicherersatzteile für
eine Anzahl von Abschnitten von dem mindestens einen Abschnitt eines
Speichers, wenn die Abschnitte fähig
sind, durch mindestens einen von einem jeweiligen Typ aus der Vielzahl
von Typen von Speicherersatzteilen repariert werden.
-
Es sollte betont werden, dass die
Begriffe "umfasst" und "umfassend", wenn sie in dieser
Beschreibung ebenso wie in den Ansprüchen verwendet werden, genommen
werden, um das Vorhandensein angeführter Merkmale, Schritte oder
Komponenten zu spezifizieren; die Verwendung dieser Begriffe schließt aber das
Vorhandensein oder Hinzufügen
von einem oder mehr anderer Merkmale, Schritte, Komponente oder Gruppen
davon nicht aus.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die obigen Ziele, Merkmale und Vorteile
werden angesichts der folgenden detaillierten Beschreibung in Verbindung
mit den Zeichnungen, in denen gleiche Bezugszeichen ähnliche
oder identische Elemente identifizieren, offensichtlicher, und in
denen:
-
1 ein
beispielhaftes Speicherfeld mit redundanter Schaltungstechnik darstellt;
-
2 einen
Abschnitt des in 1 gezeigten
beispielhaften Speicherfelds darstellt und einen Abschnitt des Speichers,
der als ein Analyseblock bezeichnet wird, abbildet.
-
3 ein
Flussdiagramm einer beispielhaften Reparaturanalyseroutine darstellt;
und
-
4A und 4B ein Flussdiagramm einer
beispielhaften Reparaturroutine zum Bearbeiten der Information,
die durch die in 3 gezeigte
Reparaturanalyseroutine generiert wird, darstellen.
-
DETAILLIERTE
BESCHREIBUNG
-
Nachstehend werden bevorzugte Ausführungsformen
mit Bezug auf die begleitenden Zeichnungen beschrieben. In der folgenden
Beschreibung werden gut bekannte Funktionen und/oder Konstruktionen
nicht detailliert beschrieben, um zu vermeiden, dass die Beschreibung
mit unnötigen
Details verschleiert wird.
-
Beispielhafte
Speicherarchitektur
-
Vor einer detaillierten Beschreibung
der Analyse- und Reparaturtechnik ist es hilfreich, zuerst eine
beispielhafte Speicherarchitektur zu beschreiben, auf die die Technik
angewendet werden kann. Eine auf Ersatzteile ausgerichtete Sicht
eines Speicherfelds angenommen, können Ersatzzeilen und Spalten
(oder I/Os) bei regelmäßigen Intervallen überall in
dem Speicherfeld angeordnet werden. Die Aktivierung von Ersatzzeilen und
Spalten (oder I/Os) wird typischerweise durch eine Sicherung gesteuert,
es sind aber andere Mittel zur Aktivierung allgemein bekannt. Wenn
eine Sicherung "durchbrennt", wird die entsprechende
Ersatzzeile oder Spalte (oder I/O) aktiviert und die zu ersetzende
geeignete Speicheradresse wird programmiert. Eine Sicherung kann
auf einer Vielfalt von Wegen einschließlich, aber nicht darauf begrenzt,
von Laserschneiden und der Aktivierung von bestimmten elektrischen
Signalen "durchbrennen".
-
Typischerweise sind Sicherungen im
Vergleich zu den Ersatzspeicherzellen, die sie aktivieren, relativ groß, sodass
eine beliebige gegebene Sicherung häufig verwendet werden kann,
um mehrere Zeilen oder Spalten (oder I/Os) zu einem Zeitpunkt zu
aktivieren und zu ersetzen. Bei derartigen Anordnungen können die Gruppen
von Ersatzzeilen oder Spalten, die durch eine ge gebene Sicherung
aktiviert und programmiert werden, vom Standpunkt einer Analyse
und Reparatur als eine Signalentität betrachtet werden. Diese
Gruppierung von Ersatzzeilen und Spalten kann durch die Analyse-
und Reparaturroutine ausgenutzt werden, um einen Grad an Komprimierung
und Effizienz in der Identität
und dem Austausch von schadhaften Speicherzellen zu erreichen.
-
1 stellt
ein beispielhaftes Speicherfeld mit redundanter Schaltungstechnik
dar. Das beispielhafte Feld umfasst zwei Bänke von Speicherzellen, Bank 0 und
Bank 1. Jede Bank von Speicherzellen umfasst ein Feld von
zweiunddreißig
Spalten (Spalten 0–15
und 16–31)
und 4096 Zeilen (zwei Mengen von Zeilen von 2K-Zellen jede). Die
Speicherbänke
werden in Abschnitte jeder mit 128 I/Os (IO [0] – IO [127] und IO [128] – IO [255])
unterteilt. Ersatz-I/Os und Zeilen werden überall in dem Feld bei regelmäßigen Intervallen
angeordnet. Wie oben beschrieben könnte ebenso ein Speicherfeld,
das redundante Schaltungstechnik mit Ersatzspalten und Zeilen umfasst,
verwendet werden.
-
Das Speicherfeld ist logisch in mehrere
Abschnitte unterteilt, die als ein Analyseblock 102 bezeichnet werden.
Die Größe und Form
eines Analyseblocks 102 wird vorzugsweise derart gewählt, dass
er einen kleinsten Abschnitt des Speicherfeld definiert, der vollständig mindestens
eine Ersatz-I/O (oder Spalte) und mindestens eine Ersatzzeile enthält. Die
Analyse- und Reparaturroutine wird vorzugsweise definiert, auf Basis
eines Analyseblocks 102 zu arbeiten. In der gezeigten beispielhaften
Speicherarchitektur werden sechzehn Analyseblöcke gezeigt. Es wird verstanden,
dass das Speicherfeld logisch in eine beliebige Anzahl von Analyseblöcken partitioniert
werden kann.
-
Definieren eines Analyseblocks 102 derart,
dass die Ersatzspeicherzellen in dem Analyseblock unabhängig von
den Ersatzspeicherzellen in anderen Analyseblöcken sind, führt zu weiterer
Effizienz in der Reparatur- und Analyseroutine, obwohl eine derartige
Anordnung nicht strikt erforderlich ist. Durch Sicherstellen z.B.,
dass die Ersatz-I/Os und Zeilen in einem gegebenen Analyseblock
nicht eine Analyseblockgrenze kreuzen, ist die Analyse- und Reparaturroutine
fähig,
die verschiedenen Analyseblöcke
des Speicherfelds unabhängig
und parallel zu analysieren und zu reparieren.
-
2 zeigt
detaillierter den in 1 gezeigten
hervorgehobenen Analyseblock 102. Wie aus der Figur gesehen
werden kann, ist jeder Analyseblock in dem Beispiel definiert, vier
I/O-Ersatzteile und vier Zeilenersatzteile zu umfassen. Der Analyseblock 102 kann
weiter logisch in kleinere Abschnitte unterteilt werden, die als
Teilblöcke 202 bezeichnet
werden. Der in 2 gezeigte
Analyseblock hat acht derartiger Teilblöcke 202. Die Teilblockgrößen werden
vorzugsweise derart gewählt,
dass der Abstand, den sich der Teilblock in den Zeilen- und I/O-
(oder Spalten-)Abmessungen erstreckt, dem Bereich von Speicherzellen
entspricht, die zu ersetzen die Zeilen- und I/O- (oder Spalten-)Ersatzteile
fähig sind.
-
Gemäß dem gezeigten Beispiel umfasst
jeder Teilblock 202 ein I/O-Ersatzteil, das beliebige von
zweiunddreißig
I/Os in einer I/O-Sektion 206 ersetzen kann, und zwei Zeilenersatzteile,
die beliebige von 512 Zeilen in dem Block ersetzen können. Die
Teilblöcke
sind in zwei Zeilen von vier Teilblöcken jede angeordnet, wobei die
Zeilen als eine Menge 204 bezeichnet werden. Vorzugsweise
wird die Information einer schadhaften Speicherzelle für jeden
Teilblock als ein separater Zeileneintrag in einem Fehlerspeicher-(error
storage, ES)-SRAM (nicht gezeigt) gespeichert. Jeder Zeileneintrag
in dem ES-SRAM kann auch als eine Fehlerspeichertabelle bezeich net
werden. Es kann eine Anzahl von ES-SRAMs verwendet werden, um die
Information einer schadhaften Speicherzelle abhängig von der Größe des Speicherfelds
und der Konfiguration redundanter Schaltungstechnik eines Feldes
zu speichern.
-
Techniken zum Speichern der Information
für eine
schadhafte Speicherzelle und Reparatur werden in der gemeinsam anhängigen US-Patentanmeldung
Nr.
mit
dem Titel "Methods
and Apparatus for Storing Memory Test Information", eingereicht am
31. Mai 2002, und mit einem gemeinsamen Bevollmächtigten wie für diese
Anmeldung beschrieben.
-
Analyseroutine
-
Nach Beschreibung einer beispielhaften
Speicherarchitektur wird nun eine Routine zum Analysieren der schadhaften
Speicherzellen eines Speicherfelds vorgestellt. Es werden die folgenden
Begriffe, die in der Analyseroutine (und ebenso in der Reparaturroutine)
verwendet werden, definiert.
- Muss: Eine schadhafte Speicherzelle
(oder Fehler) oder Gruppe von Fehlern, die nur auf eine Art und
Weise repariert werden können – – entweder
durch Ersetzen des Fehlers oder Gruppe von Fehlern durch eine Ersatzzeile
oder durch eine Ersatz-I/O (oder Spalte).
- Fixed: Ein Flag, das verwendet wird, einen Fluss der Routine
zu steuern. Das Flag sollte auf "J" gesetzt werden,
wann immer ein Fehler repariert ist.
- Skip: Ein anderes Flag, das verwendet wird, um den Fluss der
Routine zu steuern. Dieses Flag sollte auf "J" gesetzt
werden, wann immer ein Fehler erfasst, aber durch die Routine nicht
unmittelbar repariert wird.
- NG: Ein Flag, das in der Routine verwendet wird, zeigt an, dass
das Speicherfeld nicht repariert werden kann.
- Fix_Any: Ein Flag, das in der Routine verwendet wird, um die
Typen eines Fehlers zu bestimmen, die unmittelbar auszubessern sind.
Wenn das Flag auf "J" gesetzt ist, wird
ein beliebiger angetroffener Fehler ausgebessert, wenn möglich. Wenn
auf "N" gesetzt, werden
durch die Routine nur "Muss"-Fehler repariert.
-
In 3 wird
ein Flussdiagramm für
den Analyseabschnitt der Routine dargestellt. Obwohl nicht strikt erforderlich,
beginnt die Routine bei Schritt 302 durch Bestimmen (oder
Aktualisieren) von Information in Bezug auf die Funktionalität der verschiedenen
Zeilen- und Spaltenersatzteile, die die redundante Schaltungstechnik für den gegenwärtig analysierten
Analyseblock bilden. Die Information über Ersatzteilfunktionalität kann in
einem Speicher, z.B. in dem ES-SRAM, auf einer Basis von Teilblock 202 gespeichert
werden. Wenn die Information über
Ersatzteilfunktionalität
auf diese Art und Weise gespeichert wird, dann sollte Schritt 302 ferner
den Schritt zum gemeinsamen Gruppieren verwandter Information über Ersatzteilfunktionalität umfassen,
die von unter den verschiedenen Teilblöcken 202 gesammelt
wird.
-
Das Gruppieren von verwandter Information über Ersatzteilfunktionalität kann unter
Verwendung logischer "ODER"-Funktionen bewerkstelligt
werden. Z.B. sollte für
den in 2 gezeigten Analyseblock
Funktionalitätsinformation
bezüglich
einer Ersatzzeile für
jede der I/O-Sektionen 206 einer gegebenen Menge 204 miteinander
logisch oder-verknüpft
werden, da die Ersatzzeile jede der vier gezeigten I/O-Sektionen 206 der Menge 204 kreuzt. Ähnlich sollte
Funktionalitätsinformation
bezüglich
einer Ersatz-I/O (oder Spalte) für
jede der Zeilen in einer I/O-Sektion 206 miteinander logisch
oder-verknüpft
werden, da die Ersatz-I/O jede der Zeilen in der I/O-Sektion 206 kreuzt.
-
Nachdem die Information über Ersatzteilfunktionalität für den gegenwärtigen Analyseblock
aktualisiert wurde, fährt
die Routine zu Schritt 304 fort, wo beliebige gespeicherte
Reparaturcode-(RC)-Information für
den gegenwärtigen
Analyseblock aus einem Speicher gelesen wird. Vorzugsweise wird
die RC-Information getrennt von der Fehlerspeicherinformation gespeichert,
z.B. in getrennten RC- bzw. ES-SRAMs, aber diese Speicheranordnung
ist nicht strikt erforderlich. Schritte 306 bis 330 stellen
den Hauptabschnitt der Analyseroutine dar. Es geschieht in diesen
Schritten, dass die Information einer schadhaften Speicherzelle
für einen
gegebenen Analyseblock 102 derart analysiert wird, dass
die geeigneten Reparaturcodes zum Reparieren des Analyseblocks generiert
werden können.
Nachdem jeder Analyseblock bearbeitet ist, wird bei Schritt 332 eine Bestimmung
vorgenommen, ob alle Analyseblöcke
in dem Speicherfeld bearbeitet wurden. Wenn ja, endet der Prozess;
anderenfalls wird bei Schritt 334 Information bezüglich des
nächsten
zu bearbeitenden Analyseblocks aktualisiert, und der Prozess bei
Schritt 302 wiederholt sich.
-
Der Hauptabschnitt der Analyseroutine
setzt einen Zwei-Schritt-Ansatz
ein. Zuerst versucht die Routine jene Zeilen und/oder I/Os des Analyseblocks
zu reparieren, die auf eine bestimmte Art und Weise ausgebessert
werden müssen – entweder
durch Zuweisen einer Ersatzzeile oder einer Ersatz-I/O, um die Fehler
zu reparieren. Als nächstes
versucht die Routine jene Zeilen und/oder I/Os zu reparieren, die
auf mehrfachen Wegen repariert werden können – durch Zuweisen eines Typs
von einem verfügbaren
Ersatzteil, um die Fehler zu reparieren.
-
Obwohl in dem Flussdiagramm nicht
ausdrücklich
gezeigt, werden die verschiedenen Flags, die durch die Routine verwendet
werden, auf die folgenden Werte initialisiert, bevor die Bearbeitung
eines neuen Analyseblocks beginnt:
Die Bearbeitung
eines Analyseblocks beginnt bei Schritt
306 mit dem Lesen
von ES-Daten für
den gegenwärtigen
Analyseblock, z.B. aus dem ES-SRAM. Da das Flag Fix_any auf "N" initialisiert wird, beginnt die Routine ihrer
Analyse von den ES-Daten zuerst durch Bearbeiten der so genannten "Muss"-Fehler. Es wird
daran erinnert, dass "Muss"-Fehler Speicherzellenfehler
darstellen, die nur mit einem bestimmten Typ eines Ersatzteils repariert
werden können,
d.h. in diesem Beispiel entweder eine Ersatzzeile oder Ersatz-I/O
(oder Spalte). Diese Phase der Analyseroutine stellt den ersten
des oben beschriebenen Zwei-Schritt-Ansatzes dar.
-
Es wird daran erinnert, dass der
in 2 gezeigte Analyseblock
acht Teilblöcke 202 umfasst,
die in zwei Mengen 204 mit vier Teilblöcken jede angeordnet sind.
Jede Menge umfasst zwei Ersatzzeilen, die verfügbar sind, um beliebige der
512 Zeilen zu ersetzen, die die vier Teilblöcke 202 der Menge 204 überspannen. Angesichts
dieser bestimmten Anordnung werden die ersten vier Fehlerspeichertabellen
bei Schritt 306 aus dem ES-SRAM gelesen. Diese Fehlerspeichertabellen
entsprechen den vier Teilblöcken 202,
die die erste Menge 204 des Analyseblocks 102 ausmachen.
Andere Anordnungen werden variierende Mengen von Daten erfordern,
die aus dem ES-SRAM zu lesen sind.
-
Als nächstes werden die bei Schritt 306 gelesenen
ES-Daten bei Schritt 308 unter Verwendung der Routine bearbeitet,
die in 4A und 4B dargestellt wird (nachstehend
detailliert beschrieben). Da das Flag Fix Any auf "N" initialisiert ist, beginnt die Reparaturroutine
erneut durch Versuchen, zuerst die sogenannten "Muss"-Fehler
zu reparieren. Die Flags Skip, Fixed und NG sollten, sobald sie
in der Reparaturroutine gesetzt sind, während dieser ganzen Phase der
Analyse beibehalten und zu dem Analyseabschnitt der in 3 dargestellten Routine
zurückgegeben
werden. Es wird erinnert, dass das Flag Skip auf "J" gesetzt werden sollte, wenn ein Fehler
angetroffen wird, der nicht repariert ist; das Flag Fixed sollte
auf "J" gesetzt werden,
wenn ein Fehler repariert ist; und das Flag NG sollte auf "J" gesetzt werden, wenn ein Fehler angetroffen
wird, der nicht repariert werden kann.
-
Bei Schritt 310 kehrt die
Steuerung zu dem Analyseabschnitt der Routine zurück, wo der
gegenwärtige Zustand
des NG-Flags getestet wird. Wenn das NG-Flag auf "J" gesetzt wurde, fährt die Routine zu Schritt 312 fort,
wo das Speicherfeld als irreparabel zu sein identifiziert wird.
Sobald diese Bestimmung vorgenommen ist, muss das Speicherfeld nicht
weiter ana1ysiert werden und die Analyse- und Reparaturroutine endet.
-
Wenn bei Schritt 310 das
NG-Flag auf "N" gesetzt ist, fährt die
Routine zu Schritt 314 fort, wo der gegenwärtige Zustand
des Flags Fix Any getestet wird. Wie oben angezeigt ist die ses Flag
während
der ersten Phase der Zwei-Schritt-Analyse auf "N" gesetzt,
um "Muss"-Fehler vor anderen
identifizierten Fehlern zu identifizieren und zu reparieren.
-
Während
der ersten Phase der Analyse fährt
die Routine entsprechend zu Schritt 316 fort, wo eine Bestimmung
vorgenommen wird, ob die gegenwärtige
Menge 204, die bearbeitet wird, die letzte Menge 204 in
dem zu analysierenden Analyseblock 102 ist. Wenn die gegenwärtige Menge 204,
die analysiert wird, nicht die letzte Menge ist, die in dem Analyseblock
zu bearbeiten ist, fährt
die Routine zu Schritt 318 fort, wo die ES-SRAM-Adresse aktualisiert
wird, um auf die nächsten
vier Fehlerspeichertabellen, die in dem SRAM gespeichert sind, entsprechend
der nächsten
durch die Routine zu analysierenden Menge 204 zuzugreifen. Schritte 306 bis 318 werden
wiederholt ausgeführt,
bis alle Mengen 204 in dem Analyseblock 102 für "Muss"-Fehler bearbeitet
wurden.
-
Wenn bei Schritt 316 bestimmt
wird, dass die gegenwärtige
Menge 204, die bearbeitet wird, die letzte Menge 204 in
dem gegenwärtigen
Analyseblock 102 ist, fährt
die Routine zu Schritt 320 fort, wo der gegenwärtige Zustand
des Flags Fixed getestet wird. Wenn das Flag Fixed auf "J" gesetzt ist, was anzeigt, dass durch
die Reparaturroutine bei Schritt 308 ein "Muss"-Fehler repariert
wurde, fährt
der Prozess zu Schritt 330 fort, wo die ES-SRAM-Adresse
aktualisiert wird, um erneut auf die ersten vier Fehlerspeichertabellen
zuzugreifen, die in dem ES-SRAM gespeichert sind. Diese Fehlerspeichertabellen
entsprechen der ersten Menge 204 des Analyseblocks 102,
der gegenwärtig
analysiert wird. Obwohl in der Figur nicht gezeigt, werden die Flags Skip
und Fixed bei Schritt 330 erneut auf "N" initialisiert.
-
Schritte 306 bis 318 werden
erneut wiederholt ausgeführt,
bis alle Mengen 204 in dem gegenwärtigen Analyseblock 102 für "Muss"-Fehler bearbeitet
wurden. Es wird verstanden, dass Ausbessern eines beliebigen Fehlers
in dem Analyseblock verursachen kann, dass ein zuvor übersprungener
Fehler (übersprungen,
da der identifizierte Fehler kein "Muss"-Fehler
war) nachfolgend ein "Muss"-Fehler wird. Deshalb
wird eine Bearbeitung des Analyseblocks für "Muss"-Fehler
wiederholt, bis durch die Reparaturroutine keine neuen Fehler ausgebessert
werden.
-
Wenn durch die Reparaturroutine keine
neuen "Muss"-Fehler ausgebessert
werden, wird das Flag Fixed, das durch die Reparaturroutine zurückgegeben
wird, auf seinem Anfangswert von "N" gesetzt
verbleiben. Wenn das Flag Fixed bei Schritt 320 getestet
wird, wird der Prozess folglich zu Schritt 322 fortfahren,
wo der gegenwärtige
Zustand des Flag Skip getestet wird. Dies bedeutet das Ende der
ersten Phase des Zwei-Schritt-Ansatzes,
in dem "Muss"-Fehler vor anderen
Typen von Fehlern repariert werden.
-
Wenn während der ersten Phase der
Analyse keine Fehler übersprungen
wurden, fährt
der Prozess zu Schritt 332 fort, wo eine Bestimmung vorgenommen
wird, ob der gegenwärtige
Analyseblock 102 der letzte in dem Speicherfeld zu bearbeitende
Analyseblock ist. Wenn der gegenwärtige Analyseblock der letzte
zu bearbeitende Analyseblock ist, endet die Routine; anderenfalls
fährt die
Routine zu Schritt 334 fort, wo die gesamte Routine über dem
nächsten
Analyseblock in dem Speicherfeld wiederholt wird. Obwohl in der
Figur nicht gezeigt, werden bei Schritt 334 die Flags Skip,
Fix Any und Fixed erneut auf "N" initialisiert.
-
Wenn während der ersten Phase der
Analyse Fehler übersprungen
wurden, wird der Wert des Flag Skip, das durch die Reparaturroutine
zurückgegeben
wird, auf "J" gesetzt. Wenn das
Flag bei Schritt 322 getestet wird, wird die Routine folglich
zu Schritt 324 fortfahren, wo das Flag Fix Any auf "J" gesetzt wird. Dies bedeutet den Beginn
der zweiten Phase des Zwei-Schritt-Ansatzes,
in der durch die Reparaturroutine Fehler bearbeitet werden, die
durch einen von beiden Typen eines verfügbaren Ersatzteils repariert
werden können.
-
Nach Setzen des Flag Fix Any auf "J" wird bei Schritt 330 die ES-SRAM-Adresse
aktualisiert, um erneut auf die ersten vier Fehlerspeichertabellen
zuzugreifen, die in dem ES-SRAM gespeichert sind. Diese Fehlerspeichertabellen
entsprechen der ersten Menge 204 des Analyseblocks 102,
der gegenwärtig
analysiert wird. Die Flags Skip und Fixed werden erneut auf "N" initialisiert.
-
Schritte 306 bis 312 werden
in der zweiten Phase der Analyse auf die gleiche Art und Weise wie
während
der ersten Phase der Analyse ausgeführt. Wenn das Flag Fix Any
bei Schritt 314 getestet wird, wird die Routine zu Schritt 326 fortfahren,
da das Flag während
der zweiten Phase der Analyse auf "J" gesetzt
ist.
-
Bei Schritt 326 wird das
Flag Fixed getestet um zu bestimmen, ob durch die Reparaturroutine
bei Schritt 308 irgendwelche Fehler ausgebessert wurden.
Wenn keine Fehler ausgebessert wurden, fährt die Routine zu Schritt 318 fort,
wo die ES-SRAM-Adresse
aktualisiert wird, um auf die nächsten
vier Fehlerspeichertabellen zuzugreifen, die in dem SRAM gespeichert
sind. Diese Speichertabellen entsprechen der nächsten Menge 204 des
Analyseblocks 102, der durch die Routine zu bearbeiten
ist. Mengen 204 des Analyseblocks 102 werden bearbeitet,
bis bei Schritt 326 eine Bestimmung vorgenommen wird, dass
ein Fehler in dem Analyseblock repariert wurde. Es ist zu erinnern,
dass zu diesem Punkt in der Routine in dem Analyseblock mindestens
ein Fehler existieren muss, da in die zweite Phase der Analyseroutine
nur eingetreten wurde, nachdem bei Schritt 322 bestimmt
wurde, dass während
der ersten Phase der Analyse ein Fehler übersprungen wurde.
-
Wenn bei Schritt 326 bestimmt
wird, dass in dem Analyseblock ein Fehler repariert wurde, fährt die Routine
zu Schritt 328 fort, wo das Flag Fix_Any auf "N" zurückgesetzt
wird. Dies veranlasst die Routine, erneut in die erste Phase der
Analyse einzutreten, wo die Routine nach "Muss"-Fehlern
sucht und versucht, sie zu reparieren – jene Fehler, die nur mit
einem bestimmten Typ eines Ersatzteils repariert werden können.
-
Es wird verstanden, dass Ausbessern
eines beliebigen Fehlers in dem Analyseblock während der zweiten Phase von
Analyse und Reparatur erneut neue "Muss"-Fehler
generieren kann. Welche der Fehler in der zweiten Phase der Analyse
auszuwählen
sind ist keine einfache Aufgabe. Entsprechend versuchen die beschriebenen
Techniken nicht den besten auszubessernden Fehler zu bestimmen,
sondern reparieren stattdessen den ersten nichtausgebesserten Fehler,
der in dem Analyseblock angetroffen werden, und kehren dann zu der
ersten Phase der Analyse zurück,
wo mögliche
neue "Muss"-Fehler erfasst und
repariert werden. Dieser Ansatz führt zu Einfachheit und Effizienz,
was einen vernachlässigbaren
Effekt auf das Gesamtleistungsverhalten der Analyse- und Reparaturroutine
hat.
-
Alternativ kann während der zweiten Phase der
Analyse ein Versuch unternommen werden, den Typ eines Speicherersatzteils
zu bestimmen, der die größte Anzahl
von verbleibenden Nicht"Muss"-Typ-Fehlern reparieren
kann. Ein Vornehmen dieser Bestimmung kann zu einer verbesserten
Herstellungsausbeute führen, fügt aber
der Routine Komplexität
hinzu und erhöht
die Analyse- und Reparaturzeit und Speicheranforderungen, die benötigt werden,
um Speicherreparaturen zu bewirken.
-
Die oben beschriebene Sequenz einer
Ausführung
der ersten und zweiten Phasen von Analyse und Reparatur setzt sich
fort bis: 1) die erste Phase abschließt, ohne einen "Muss"-Fehler auszubessern
und ohne einen nichtausgebesserten Fehler zu überspringen, oder 2) bestimmt
wird, dass der Speicherbereich irreparabel ist (d.h. das Flag NG
auf "J" gesetzt ist). Bei
Abschluss der Routine werden die Reparaturcodes, die benötigt werden,
um die schadhaften Speicherzellen des Speicherfelds, das analysiert
wird, zu ersetzen, in dem RC-SRAM gespeichert.
-
Reparaturroutine
-
4A und 4B stellen ein Flussdiagramm
einer beispielhaften Reparaturroutine zum Generieren der Reparaturcodes
dar, die benötigt
werden, um die schadhaften Speicherzellen des Speicherfelds durch
Ersatzzellen zu ersetzen. 4A stellt
die Schritte dar, die ausgeführt
werden, wenn in der ersten Phase von Analyse und Reparatur gearbeitet
wird – wo
erfasste "Muss"-Fehler repariert
werden. 4B stellt die
Schritte dar, die ausgeführt
werden, wenn in der zweiten Phase von Analyse und Reparatur gearbeitet
wird – wenn
Fehler mit Ausnahme von "Muss"-Typ-Fehlern repariert
werden. Die Entscheidung bezüglich
dessen, ob "Muss"-Fehler oder andere
Typen von Fehlern bearbeitet werden, findet bei Schritt 402 der
Routine statt, die in 4A gezeigt
wird.
-
Vor einer detaillierten Beschreibung
der Reparaturroutine wird es hilfreich sein, bestimmte Begriffe
zu definieren, die in der Routine verwendet werden, und einige allgemeine
Beobachtungen hinsichtlich der Operation der Routine vorzunehmen.
-
Zuerst kann, was einen "Muss"-Typ eines Fehlers
ausmacht, von einer beliebigen Anzahl von Variablen einschließlich, aber
nicht darauf begrenzt, abhängen:
die Größe des Speicherfelds, das
analysiert wird, die Anzahl von erfassten Fehlern, die gewünschte Testausbeute
und die Anzahl von verfügbaren
Ersatzzeilen und Spalten (oder I/Os). Gemäß einer bevorzugten Ausführungsform
wird ein "Muss"-Fehler definiert
als entweder: 1) ein Fehler, der in einer gegebenen Zeile des Analyseblocks
erfasst wird, wo die Anzahl von Fehlern in der gegebenen Zeile die
Anzahl von verfügbaren
Ersatzspalten (oder I/Os) überschreitet,
oder 2) ein Fehler, der in einer gegebenen Spalte (oder I/O) des
Analyseblocks erfasst wird, wo die Anzahl von Fehlern in der gegebenen
Spalte (oder I/O) die Anzahl von verfügbaren Ersatzzeilen überschreitet.
-
Zweitens zeigen die beispielhaften
Flussdiagramme, die in
4A und
4B dargestellt werden, an, dass
Zeilenfehler vor Spaltenfehlern bearbeitet und repariert werden,
aber dies muss nicht der Fall sein. Z.B. wird in dem Abschnitt der
Routine, die in
4A dargestellt
wird, in dem "Muss"-Typ-Fehler bearbeitet
werden, jeder Zeilen- und Spalteneintrag in einer Fehlerspeichertabelle
auf Fehler getestet, was die Entscheidung, ob mit Zeilen- oder Spalteneinträgen zu beginnen
ist, beliebig macht. Ob in dem Abschnitt der Routine, die in
4B dargestellt wird, in
der Nicht-"Muss"-Typ-Fehler bearbeitet
werden, zuerst Zeilen- oder Spalteneinträge bearbeitet werden, hängt von
den angewendeten Fehlerspeichertechniken ab. Z.B. stellen die Fehlerspeichertechniken,
die in der gemeinsam anhängigen
US-Patentanmeldung Nr.
beschrieben werden,
sicher, dass Nicht-"Muss"-Typ-Fehler in der
Fehlerspeichertabelle sowohl Zeilen- als auch Spalteneinträge haben.
-
Entsprechend zeigt 4B, die die Anwendung dieser Fehlerspeichertechniken
widerspiegelt, nur zwei Einträge
in der Tabelle, die auf Nicht-"Muss"-Typ-Fehler getestet
werden, aber dies muss nicht der Fall sein. Wenn das Speichern von
Informationen einer schadhaften Speicherzelle in dem ES-SRAM nicht garantiert,
dass Nicht-"Muss"-Typ-Fehler sowohl
Zeilen- als auch Spalteneinträge
haben werden, kann die Routine modifiziert werden, um nach dem mindestens
einen Nicht-"Muss"-Typ-Fehlern in sowohl den Zeilen- als
auch Spalteneinträgen
der Fehlerspeichertabelle zu suchen. Außerdem kann die Routine modifiziert
werden, nur nach Nicht-"Muss"-Typ-Fehlern in den
Spalteneinträgen
der Fehlerspeichertabelle zu suchen, wenn die Speicherung von Information
einer schadhaften Speicherzelle in dem ES-SRAM so garantiert.
-
Schließlich stellen
4A und/oder
4B vier
Zeilen und drei Spalten dar, die für jeden Teilblock
202 bearbeitet
werden, der eine Menge
204 eines Analyseblocks
102 bildet.
Es wird verstanden, dass die Anzahl von Zeilen und Spalten, die
in der Reparaturroutine bearbeitet werden, von dem Umfang an Information
einer schadhaften Speicherzelle abhängt, die in dem ES-SRAM gespeichert
wird. Es wird von dem obigen erinnert, dass jede Zeile des ES-SRAM
einer Fehlerspeichertabelle entsprechen kann. Wie in der gemeinsam
anhängigen
US-Patentanmeldung Nr.
beschrieben
wird, umfasst jede Fehlerspeichertabelle Zeilen- und Spalteneinträge zum Speichern
mindestens eines Teils der gesamten Information einer schadhaften Speicherzelle.
-
Die gemeinsam anhängige Anmeldung beschreibt
weiter, dass für
einen Teilblock 202 mit zwei Ersatzzeilen und einer Ersatzspalte
die Anzahl von Tabellenzeileneinträgen, die benötigt werden,
um Reparaturen zu bewirken, vier ist – zwei Einträge für jede verfügbare Ersatzzeile
plus zwei Einträge
für jeden
Schnittpunkt der beiden verfügbaren
Ersatzzeilen mit der einzelnen verfügbaren Ersatzspalte, während die
Anzahl von Tabellenspalteneinträgen,
die benötigt
werden, um Reparaturen zu bewirken, drei ist – ein Eintrag für die einzelne verfügbaren Ersatzspalte
plus zwei Einträge
für jeden
Schnittpunkt der einzelnen verfügbaren
Ersatzspalte mit den beiden verfüg baren
Ersatzzeilen. Somit ist die Anzahl von Zeilen und/oder Spalten,
die in 4A und 4B bearbeitet werden, lediglich
darstellend und könnte
eine beliebige Anzahl bis zur Gesamtanzahl von Zeilen und Spalten
in einem gegebenen Teilblock 202 sein. Je kleiner die Anzahl
von zu bearbeitenden Zeilen und Spalten ist, desto effizienter und
effektiver wird die Reparaturroutine.
-
Angesichts dieser Definitionen und
allgemeinen Beobachtungen wird nun der Abschnitt der Reparaturroutine,
die in 4A dargestellt
ist, detaillierter beschrieben. Wie in der Figur gesehen werden
kann, wird jeder der Teilblöcke 202,
die eine gegebene Menge 204 ausmachen, in der Routine sequenziell
bearbeitet. Jeder Zeilen- und Spalteneintrag in den Fehlertabellen
wird auf die gleiche Art und Weise bearbeitet, sodass nur die Bearbeitung
von Zeile #1 detailliert beschrieben wird.
-
Eine Bearbeitung des ersten ES-Tabellenzeilen-
(oder Spalten- oder
I/O-) Eintrags beginnt bei Schritt 404, wo bestimmt wird,
ob der in diesem Tabelleneintrag identifizierte Fehler bereits repariert
wurde (d.h. mit einer Ersatzzeile oder Spalte ausgebessert wurde),
oder ob die Anzahl von Fehlern in der entsprechenden Zeile null
ist und somit nicht repariert werden müssen. Wenn eine von beiden
dieser Bedingungen wahr ist, bewegt sich die Routine weiter, um
den nächsten
Zeilen- (und dann
Spalten-) Eintrag in der Fehlerspeichertabelle zu bearbeiten, bis
alle Zeilen- und Spalteneinträge
in der Tabelle bearbeitet wurden. Wenn keine der Bedingungen wahr
ist, fährt
die Routine zu Schritt 406 fort, wo der Fehler bestimmt
wird, entweder ein "Muss"-Typ oder ein anderer
Typ eines Fehlers zu sein. Es wird erinnert, dass gemäß einer
bevorzugten Ausführungsform,
wenn die Anzahl von in der Zeile erfassten Fehlern die Anzahl von
verfügbaren
Ersatzspalten überschreitet,
der Fehler als ein "Muss"-Fehler erachtet
wird.
-
Wenn der Fehler nicht ein "Muss"-Typ-Fehler ist,
wird der Fehler übersprungen
(da dieser Abschnitt der Routine nur "Muss"-Typ-Fehler
bearbeitet) und die Routine fährt
zu Schritt 408 fort, wo das Flag Skip auf wahr gesetzt
wird. Dies zeigt der in 3 gezeigten
Analyseroutine an, dass ein erfasster Fehler übersprungen wurde, sodass eine
weitere Bearbeitung in dieser Routine entsprechend fortfahren kann.
Die Routine bewegt sich dann weiter, um den nächsten Zeilen- (und dann Spalten-)
Eintrag in der Fehlerspeichertabelle zu bearbeiten, bis alle Zeilen-
und Fehlereinträge
bearbeitet wurden.
-
wenn der Fehler bestimmt wird, ein "Muss"-Typ-Fehler zu sein,
fährt die
Routine dann zu Schritt 410 fort, wo eine Bestimmung bezüglich dessen
vorgenommen wird, ob eine Ersatzzeile verfügbar ist, um den Fehler zu
reparieren. Wenn eine Ersatzzeile verfügbar ist, wird die verfügbare Ersatzzeile
zugewiesen, den Fehler zu reparieren und die Routine fährt zu Schritt 412 fort,
wo das Flag Fixed auf wahr gesetzt wird. Dies zeigt der Analyseroutine
an, dass ein erfasster Fehler ausgebessert wurde, sodass eine weitere
Bearbeitung in dieser Routine entsprechend fortfahren kann. Die
Routine bewegt sich dann weiter, um den nächsten Zeilen- (und dann Spalten-)
Eintrag in der Fehlerspeichertabelle zu bearbeiten, bis alle Zeilen-
und Spalteneinträge
bearbeitet wurden.
-
Wenn keine Ersatzzeilen verfügbar sind,
um den erfassten "Muss"-Typ-Fehler zu reparieren,
fährt die Routine
zu Schritt 414 fort, wo das Flag NG auf "J" gesetzt wird. Dieses Flag zeigt der
Analyseroutine an, dass das Speicherfeld, das analysiert wird, irreparabel
ist, und die gesamte Analyse und Reparatur vom Feld wird gestoppt.
Wenn jeder der Teilblöcke 202 in
der gegenwärtigen
Menge 204 des Analyseblocks 102 be arbeitet wurde,
gibt die Routine die Steuerung an den Analyseabschnitt der Routine
bei Schritt 308 zurück.
-
Nun wird der in 4B dargestellte Abschnitt der Reparaturroutine
detaillierter beschrieben. Es wird erinnert, dass dieser Abschnitt
der Routine einen der mindestens einen Fehler, die während einer
Bearbeitung von "Muss"-Fehlern in dem Abschnitt
der in 4A dargestellten
Routine übersprungen
werden, erfasst und versucht zu reparieren. Da jeder der Zeilen-
(oder vielleicht Spalten- oder I/O-) Einträge auf die gleiche Art und Weise
bearbeitet wird, wird nur die Bearbeitung von Zeile #1 detailliert
beschrieben. Dieser Abschnitt der Routine beginnt bei Schritt 416,
wo bestimmt wird, ob in Zeile eins ein Fehler erfasst wurde. Wenn
ein Fehler erfasst wurde, fährt
die Routine zu Schritt 418 fort, wo bestimmt wird, ob der
erfasste Fehler bereits repariert wurde. Wenn entweder in dem ersten
Zeileneintrag kein Fehler erfasst wird oder ein erfasster Fehler
in dem ersten Zeileneintrag bereits repariert wurde, bewegt sich
die Routine weiter, um die verbleibende Zeilen- (oder Spalten- oder
I/O-) Einträge
in einer Fehlerspeichertabelle zu bearbeiten, bis alle Einträge bearbeitet
wurden.
-
Wenn die angewendeten Fehlerspeichertechniken
sicherstellen können,
dass die Zeilen- (oder Spalten- oder I/O-) Einträge unterhalb eines ersten Zeilen-
(oder Spalten- oder I/O-) Eintrags in der Fehlerspeichertabelle
ohne Fehler auch keine Fehler enthält, dann kann alternativ die
Bearbeitung von weiteren Zeilen- (oder Spalten- oder I/O-) Einträgen übersprungen
werden. Die Routine kann dann direkt zu Schritten 420 und 422 fortfahren,
wo der nächsten
Teilblock 202 in der gegenwärtigen Menge 204 des
Analyseblocks 102 bearbeitet wird.
-
Wenn bei Schritt 418 bestimmt
wird, dass der erfasste Fehler noch nicht bereits repariert wurde,
dann fährt
die Routine zu Schritt 424 fort, wo bestimmt wird, ob ein
Zeilenersatz verfügbar
ist, um den erfassten Fehler zu reparieren. Wenn ein Zeilenersatz
verfügbar
ist, wird der Fehler mit dem verfügbaren Ersatzteil bei Schritt 426 repariert
und das Flag Fixed wird bei Schritt 434 gesetzt. Wenn keine
Zeilenersatzteile verfügbar sind,
fährt die
Routine zu Schritt 428 fort, wo bestimmt wird, ob ein Spaltenersatz
verfügbar
ist, um den erfassten Fehler zu reparieren. Wenn ein Spaltenersatz
verfügbar
ist, wird der Fehler bei Schritt 430 mit dem verfügbaren Ersatzteil
repariert und das Flag Fixed wird bei Schritt 436 erneut
gesetzt. Wenn weder ein Zeilen- noch ein Spaltenersatz verfügbar ist,
um den erfassten Fehler zu reparieren, wird das Flag NG bei Schritt 432 auf "J" gesetzt und die Steuerung kehrt zu
dem Analyseabschnitt der Routine zurück.
-
Zur Vereinfachung einer Beschreibung
der beispielhaften Ausführungsformen
wurden bestimmte Begriffe verwendet, sollten aber nicht verwendet
werden, um die hierin beschriebenen all-gemeinen Konzepte zu begrenzen. Z.B.
kann jeglicher spezieller Bezug auf "Zeilen"- oder "Spalten"-Abschnitte von einem Speicher oder
Typen von Speicherersatzteilen interpretiert werden, eines von beiden
von diesen Abschnitten eines Speichers oder Typen von Speicherersatzteilen
einzubeziehen. In dem Fall von Speicherersatzteilen stellen die
speziellen Begriffe komplementäre
Typen von Speicherersatzteilen insofern dar, wenn ein Typ eines
Speicherersatzteils nicht verwendet wird, um einen gegebenen Speicherzellenstandort
zu reparieren, der andere komplementäre Typ eines Speicherersatzteils
verwendet werden kann, um den Standort zu reparieren.
-
Des weiteren umfassen die Begriffe "reparieren" oder "Reparatur" nicht nur den Austausch
von schadhaften Speicherzellen durch Ersatzzellen, sondern umfassen
auch die Generierung von Reparaturinformation, die für eine spätere Verwendung
beim Ersetzen schadhafter Speicherzellen durch Ersatzzellen ge speichert werden
kann, z.B. in dem RC-SRAM. Außerdem
können
die Begriffe "Zelle" und "Speicherzelle" interpretiert werden,
eine oder mehrere Speicherzellen oder Standorte in dem Speicher
darzustellen. Schließlich
werden die Begriffe "J" und "wahr" und "N "und "falsch" austauschbar überall in
der Beschreibung und den Ansprüchen verwendet,
um den Zustand von verschiedenen Testbedingungen zu beschreiben,
die in beschriebenen Routinen auftreten.
-
In Verbindung mit einer Anzahl von
beispielhaften Ausführungsformen
wurden verschiedene Aspekte beschrieben. Um ein Verstehen dieser
Ausführungsformen
zu erleichtern, wurden viele Aspekte im Sinne von Sequenzen von
Handlungen beschrieben, die durch Elemente eines Computersystems
oder einer Mikrosteuervorrichtung durchgeführt werden können. Es
wird z.B. erkannt, dass in jeder der Ausführungsformen die verschiedenen
Handlungen durch spezialisierte Schaltungen (z.B. diskrete Logik-Gatter,
die miteinander verbunden sind, um eine spezialisierte Funktion
durchzuführen),
durch Programmbefehle, die durch einen oder mehr Prozessoren ausgeführt werden
oder durch eine Kombination von beiden durchgeführt werden könnten.
-
Außerdem können die beispielhaften Ausführungsformen
als Teil irgendeiner Form eines computerlesbaren Speichermediums
mit einer darin gespeicherten geeigneten Menge von Computerbefehlen
betrachtet werden, die einen Prozessor veranlassen würden, die
hierin beschriebenen Techniken auszuführen. Somit können die
verschiedenen Aspekte in vielen verschiedenen Formen verkörpert werden,
und alle derartigen Formen werden erachtet, innerhalb des Bereichs
dessen zu sein, was beschrieben wurde. Für jeden der verschiedenen Aspekte
kann eine beliebige derartige Form einer Ausführungsform hierin bezeichnet
werden als "Logik,
konfiguriert um" eine
beschriebene Handlung durchzuführen,
oder alternativ als "Logik,
die" eine beschriebene
Handlung durchführt.
-
Obwohl verschiedene beispielhafte
Ausführungsformen
beschrieben wurden, wird durch einen Durchschnittsfachmann verstanden,
dass diese Ausführungsformen
lediglich darstellend sind und dass viele andere Ausführungsformen
möglich
sind. Der beabsichtigte Bereich der Erfindung wird durch die folgenden
Ansprüche
anstatt der vorangehenden Beschreibung definiert, und alle Abweichungen,
die innerhalb des Bereichs der Ansprüche fallen, sind beabsichtigt,
darin einbezogen zu werden.
-
ZUSAMMENFASSUNG
-
Es werden Verfahren und Vorrichtung
zum Analysieren und Reparieren eines Speichers vorgestellt. Das
Verfahren umfasst den Schritt (302, 304, 306)
zum Bestimmen, ob schadhafte Speicherzellen, die in mindestens einem
Abschnitt eines Speichers erfasst werden, unter Verwendung von nur
einem aus einer Anzahl von Typen von Speicherersatzteilen repariert
werden müssen,
oder unter Verwendung beliebiger von den Typen von Speicherersatzteilen
repariert werden können.
Schadhafte Speicherzellen, die unter Verwendung von nur einem von
der Anzahl von Typen von Speicherersatzteilen repariert werden müssen, werden
wiederholt repariert (308), wobei beliebige schadhafte
Speicherzellen übersprungen
werden, die unter Verwendung beliebiger von der Anzahl von Typen
von Speicherersatzteilen repariert werden können, bis entweder keine neuen
Fehler, die repariert werden müssen,
repariert werden und keine schadhaften Speicherzellen übersprungen werden
oder ein Speicher bestimmt wird, irreparabel zu sein.