-
Die
vorliegende Erfindung bezieht sich auf das Gebiet nichtflüchtiger
Speicher und insbesondere auf ein sequentielles Programm-Verifizier-Verfahren
für die
Verwendung in einer nichtflüchtigen
Speichervorrichtung.
-
Nichtflüchtige Speichervorrichtungen
(wie z.B. E2PROM vom Flash-Typ) werden üblicherweise in
verschiedenen Anwendungen verwendet, wenn die in der Speichervorrichtung
gespeicherten Daten auch dann erhalten werden müssen, wenn eine Energieversorgung
ausgeschaltet ist. Typischerweise weist die Speichervorrichtung
eine Matrix von (zum Beispiel einer NAND-Architektur entsprechend
in Reihen und Spalten angeordneten) Speicherzellen auf; die Matrix
ist in Seiten unterteilt, von denen jede aus einem Block von Zellen
(wie z.B. 8) besteht, die zur gleichen Zeit gelesen oder geschrieben
werden.
-
Der
Herstellungsprozess der Speichervorrichtungen beinhaltet eine Reihe
von Testprozeduren, die verwendet werden, um deren Betriebseigenschaften
zu überprüfen. Zum
Beispiel wird in einer sequentiellen Programm-Verifizier-Prozedur
ein vordefiniertes Datenmuster in die gesamte Matrix geschrieben.
Die Seiten der Matrix werden dann nacheinander gelesen und mit den
erwarteten Werten verglichen. Immer dann, wenn eine Zelle nicht
korrekt geschrieben wurde, wird die entsprechende Spalte der Matrix
als fehlerhaft zurückgewiesen.
Die Matrix weist einen Satz von redundanten Spalten auf, die verwendet
werden, um die fehlerhaften Spalten zu ersetzen.
-
In
den in der Technik bekannten sequentiellen Programm-Verifizier-Prozeduren
muss der Hinweis auf jegliche defekte Spalte unmittelbar nach dem
Verifizieren der entsprechenden Seite ausgegeben werden. Tatsächlich ist
das Ergebnis der Verifizierung in einer Latch-Struktur (wie z.B.
einem Seitenpuffer) verfügbar,
die zum Lesen der in der Seite gespeicherten Werte verwendet wird;
deshalb würde, wenn
der Inhalt der Latch-Struktur nicht verworfen wurde, die Information
durch das Lesen der nächsten Seite
nichtig gemacht werden.
-
Ein
Nachteil der oben beschriebenen Lösung besteht darin, dass das
sequentielle Programm-Verifizier-Verfahren (zum Ausgeben des Hinweises
auf die defekten Spalten) jedes Mal unterbrochen werden muss, wenn
ein Fehlerzustand detektiert wird. Folglich wird das Programm-Verifizier-Verfahren stark
verlängert.
Dieser Nachteil hat eine schädliche Wirkung
auf die Leistungsfähigkeit
des Herstellungsprozesses der Speichervorrichtungen und somit auf deren
Gesamtkosten.
-
Eine
mit Erfassungsverstärkern
einer Speichervorrichtung verbundene Selbsttestarchitektur ist in
EP-A-1324348 offenbart;
in diesem Fall können herkömmliche
Register des Speichers zum Speichern und Signalisieren von Fehlersituationen
verwendet werden.
-
Außerdem schlägt
US-B-6687862 eine
Fehleranalysiereinrichtung für
einen DRAM vor; die Adresse jeder defekten Speicherstelle wird in
einen Speicher der Fehleranalysiereinrichtung geschrieben.
-
Ein
Testprozessor ist auch in
US-A-5123016 offenbart;
in diesem Fall werden die Adressen der fehlerhaften Speicherzellen
in den Registern des Testprozessors oder in dem gleichen getesteten Speicher
gespeichert.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren zum Testen
einer nichtflüchtigen Speichervorrichtung
bereitzustellen, das nicht immer unterbrochen werden muss, wenn
ein Fehlerzustand detektiert wird.
-
Es
ist eine andere Aufgabe der vorliegenden Erfindung, die Ergebnisse
der Verifizierungen (für
deren Ausgabe am Ende des Verfahrens) zu sammeln.
-
Es
ist noch eine andere Aufgabe der vorliegenden Erfindung, die Länge der
Prozedur zu reduzieren.
-
Insbesondere
ist es eine Aufgabe der vorliegenden Erfindung, die Leistungsfähigkeit
des Herstellungsprozesses der Speichervorrichtungen zu verbessern
und somit deren Gesamtkosten zu reduzieren.
-
Das
Erreichen dieser und anderer in Verbindung stehender Aufgaben wird
in der in den unabhängigen
Ansprüchen
dargelegten Lösung
erreicht. Kurz gesagt schafft ein Aspekt der vorliegenden Erfindung
ein sequentielles Programm-Verifizier-Verfahren für die Verwendung
in einer nichtflüchtigen Speichervorrichtung,
die eine Mehrzahl von Speicherzellen aufweist, jede für das Speichern
eines Logikwerts, wobei die Zellen in einer Mehrzahl von Anordnungen
angeordnet sind, wobei das Verfahren folgende Schritte aufweist:
das Schreiben eines Satzes von Zielwerten in eine Mehrzahl von Zellenblöcken, wobei
die entsprechenden Zellen jedes Blocks zu einer gemeinsamen Anordnung
gehören,
das Verifizieren jedes Zellenblocks nacheinander, um einen Fehlerwert
für jede
Anordnung als Antwort auf eine Nicht-Übereinstimmung des in der zu
der Anordnung gehörenden
Zelle des Blocks gespeicherten Werts mit dem entsprechen Zielwert
geltend zu machen, das Zwischenspeichern der Fehlerwerte, und als
Antwort auf die Verifizierung aller Zellenblöcke das Liefern eines den Fehlerwerten
entsprechenden Hinweises darauf, dass die Anordnungen fehlerhaft
sind.
-
Außerdem ist
eine entsprechende nichtflüchtige
Speichervorrichtung inbegriffen.
-
Weitere
Merkmale und Vorteile der Lösung gemäß der vorliegenden
Erfindung werden durch die folgende Beschreibung einer bevorzugten
Ausführungsform
davon, die einzig mittels eines nicht-einschränkenden Hinweises gegeben ist,
mit Bezug auf die beiliegenden Figuren klar gemacht. In denen zeigen:
-
1 die
Funktionsblöcke
einer nichtflüchtigen
Speichervorrichtung, in der das Verfahren der Erfindung anwendbar
ist;
-
2 ein
vereinfachtes Schaltungsschema eines Seitenpuffers, der für die Umsetzung
des Verfahrens verwendet werden kann; und
-
3 ein
Ablaufdiagramm, das einen Prozess des Testens der Speichervorrichtung
gemäß einer
Ausführungsform
der Erfindung beschreibt.
-
Mit
Bezug insbesondere auf 1 wird eine nichtflüchtige Speichervorrichtung 100 (die
aus einem E2PROM vom Flash-Typ besteht)
erläutert.
Der Flashspeicher 100 ist in einen Chip aus Halbleitermaterial
integriert und weist eine Matrix 105 von Speicherzellen 110 auf;
typischerweise besteht jede Zelle 110 aus einem Floating-Gate-NMOS-Transistor.
In einem gelöschten
Zustand hat die Zelle 110 einen niedrigen Schwellenwert
(der einem Logikwert 1 zugeordnet ist). Die Zelle 110 wird
durch das Injizieren elektrischer Ladungen in ihr Floating-Gate
programmiert; in diesem Zustand hat die Zelle 110 einen
hohen Schwellenwert (der einem Logikwert 0 zugeordnet ist). Deshalb
ist, wenn eine ausgewählte
Zelle 110 zum Lesen vorgespannt wird, die Zelle 110 leitfähig, wenn
sie gelöscht
wird, oder nicht-leitfähig,
wenn sie programmiert wird.
-
Die
Zellen 110 sind in einer Mehrzahl von Reihen (zum Beispiel
2048) und einer Mehrzahl von Spalten (zum Beispiel 4096) organisiert.
Der Flashspeicher 100 hat eine so genannte NAND-Architektur.
In dieser Konfiguration ist die Matrix 105 in mehrfache
Sektoren 115 unterteilt. Jeder Sektor 115 weist eine
Mehrzahl von parallel verbundenen Reihungen (zum Beispiel 16) auf;
jede Reihung ist wiederum aus einem Satz von Zellen 110 (zum
Beispiel 16) gebildet, die zwischen einen Source-Auswähl-NMOS-Transistor 120s und
einen Drain-Auswähl-NMOS Transistor 120d in
Reihe geschaltet sind.
-
Genauer
hat eine Zwischenzelle 110 jeder Reihung den Drain-Anschluss,
der mit dem Source-Anschluss einer benachbarten Zelle 110 verbunden
ist, und den Source-Anschluss, der mit dem Drain-Anschluss einer
anderen benachbarten Zelle 110 verbunden ist. Eine Endzelle 110 der
Reihung hat den Drain-Anschluss, der mit dem Source-Anschluss des
Drain-Auswähl-Transistors 120d verbunden
ist; der Drain-Anschluss des Drain-Auswähl-Transistors 120d ist
mit dem Drain-Anschluss des entsprechenden Drain-Auswähl-Transistors 120d eines
benachbarten Sektors verbunden. Ebenso hat die andere Endzelle 110 der
Reihung den Source-Anschluss, der mit dem Drain-Anschluss des Source-Auswähl-Transistors 120s verbunden
ist; der Source-Anschluss des Source-Auswähl-Transistors 120s ist
mit dem Source-Anschluss des entsprechenden Source-Auswähl-Transistors 125s eines
anderen benachbarten Sektors verbunden.
-
Die
Steuer-Gate-Anschlüsse
der Zellen 110 in jeder Reihe sind mit einer entsprechenden
Wortleitung WL verbunden. Die Gate-Anschlüsse des Drain-Auswähl-Transistors 120d,
die zu einer gemeinsamen Reihe gehören, sind mit einer entsprechenden
Drain-Auswähl-Leitung
DSL verbunden; auf der anderen Seite sind die Gate-Anschlüsse des Source-Auswähl-Transistors 120s,
die zu einer gemeinsamen Reihe gehören, mit einer entsprechenden
Source-Auswähl-Leitung SSL verbunden.
Die Drain-Anschlüsse
des Drain-Auswähl-Transistors 120d,
die zu einer gemeinsamen Spalte gehören, sind mit einer entsprechenden
Bit-Leitung BL verbunden. Umgekehrt sind die Source-Anschlüsse aller Source-Auswähl-Transistoren 120s in
der Matrix 105 mit einer gemeinsamen Source-Leitung SL
verbunden (die typischerweise auf einer Bezugspannung oder Masse
gehalten wird).
-
In
jedem Sektor 115 werden die Zellen 110, die zu
der gleichen Reihe gehören,
logisch in zwei Seiten unterteilt, die gleichzeitig verarbeitet
werden (jede besteht in dem betroffenen Beispiel aus 8 Zellen);
insbesondere besteht eine erste Seite aus den Zellen 110 in
einer geraden Position und besteht eine zweite Seite aus den Zellen 110 in
einer ungeraden Position.
-
Der
Flashspeicher 100 empfängt
eine Adresse ADR zum Auswählen
einer erwünschten
Seite. Ein Teil der Adresse ADR wird einem Reihendecoder 125r zugeführt, der
die erwünschte
Wortleitung WL und die Drain-Auswähl-Leitung DSL und die Source-Auswähl-Leitung
SSL des entsprechenden Sektors 115 auswählt. Ein anderer Teil der Adresse
ADR wird einem Spaltendecoder 125c zugeführt; der Spaltendecoder 125c verbindet
die erwünschten Bit-Leitungen
BL mit einem Seitenpuffer 130, der zum Schreiben/Lesen
der Zellen 110 der ausgewählten Seite verwendet wird.
-
Der
Betrieb des Flashspeichers 100 wird von einer Mikro-Steuereinrichtung 135 verwaltet.
Insbesondere weist die Mikro-Steuereinrichtung 135 eine Steuereinheit 140 auf,
die den Seitenpuffer 130 treibt. Die Steuereinheit 140 verwendet
einen RAM 145 als einen Arbeitsspeicher. Der Betrieb der
Einheit 140 wird von einem Low Level-Software-Programm
(oder Firmware) gesteuert, die in einem ROM 150 gespeichert
ist.
-
Alle
Zellen 110 der Matrix 105 werden zur gleichen
Zeit (auf den Logikwert 1) gelöscht.
Andererseits wird während
einer Leseoperation ein Wort (bestehend aus 8 Bits), das in der
ausgewählten
Seite gespeichert ist, in den Seitenpuffer 130 eingespeichert.
Umgekehrt wird ein Zielwort während
einer Schreibopera tion in den Seitenpuffer 130 geladen; die
Zellen 110 der ausgewählten
Seite, die auf den Logikwert 0 zu bringen sind, werden dann programmiert
(während
die anderen Zellen 110 unverändert bleiben). Typischerweise
werden die Zellen 110 unmittelbar nach ihrer Programmierung
gelesen, um den Erfolg der Operation (mit einer als Programmverifizierung
bekannten Prozedur) zu verifizieren. Die Speichervorrichtung 100 unterstützt auch
eine sequentielle Programmverifizierfunktion, die typischerweise
unter Programmierung aller Zellen 110 der Matrix 105 implementiert
ist.
-
Ähnliche Überlegungen
treffen zu, wenn die Matrix, die Sektoren und/oder die Seiten verschiedene
Größen haben
oder wenn die Speicherzellen mit anderen Komponenten (selbst vom
mehrstufigen Typ) implementiert sind. In jedem Fall sind die Konzepte
der vorliegenden Erfindung auch anwendbar, wenn der Flashspeicher
eine andere Struktur hat oder andere Einheiten aufweist (wenn z.B.
die Mikro-Steuereinrichtung durch eine äquivalente Logikeinrichtung
ersetzt wird); man beachte außerdem, dass
die Reihen und Spalten nur topologische Definitionen sind und mit
beliebigen anderen geometrischen Anordnungen implementiert sein
können.
-
Wie
in 2 gezeigt, weist der Seitenpuffer eine Schreib/Lese-Einheit 205 für jedes
Paar benachbarter Bit-Leitungen auf (entsprechend den Zellen mit
der gleichen Position in den zwei Seiten jedes Sektors). Insbesondere
sind eine Leitung für
gerade Bits und eine Leitung für
ungerade Bits (die mit BLe bzw. BLo bezeichnet sind) durch entsprechende NMOS-Transistoren 215 und 215o mit
einem Operationsknoten 210 verbunden. Die Drain-Anschlüsse der
Transistoren 215e, 215o sind mit den entsprechenden
Bit-Leitungn BLe, BLo verbunden und die Source-Anschlüsse sind
mit dem Knoten 210 verbunden; die Gate-Anschlüsse der
Transistoren 215e und 215o werden von Auswahlsignalen
BLSe bzw. BLSo gesteuert. Zwei NMOS-Transistoren 220e und 220o werden
verwendet, um die jeweiligen Bit-Leitungn BLe und BLo (vor jegleicher
Schreib/Lese-Operation) auf
eine vordefinierte Vorspannungsspannung VIRPWR zu entladen. Zu diesem
Zweck sind die die Source-Anschlüsse
der Transistoren 220e, 220o mit den entsprechenden
Bit-Leitungen BLe, BLo verbunden; die Drain-Anschlüsse der
Transistoren 220e, 220o sind zusammen mit einem
Anschluss verbunden, der die Vorspannungsspannung VIRPWR liefert.
Die Gate-Anschlüsse der
Transistoren 220e, 220o werden von zwei Entladungssignalen
DISCHe bzw. DISCHo gesteuert.
-
Ein
PMOS-Transistor 225 wird verwendet, um den Knoten 210 am
Anfang der Schreib/Lese-Operation vorzuladen. Zu diesem Zweck hat
der Transistor 225 den Drain-Anschluss, der mit dem Knoten 210 verbunden
ist, und den Source-Anschluss,
der mit einem Anschluss verbunden ist, der eine Energieversorgungsspannung
+Vdd (zum Beispiel 3 V mit Bezug zur Masse) liefert. Der Gate-Anschluss des Transistors 225 wird
von einem Vorladesignal PRECH gesteuert;
das Signal PRECH ist unterstrichen,
um zu zeigen, dass es bei dem Logikwert 0 (Masse) geltend gemacht
wird und bei dem Logikwert 1 (+Vdd) nicht geltend gemacht wird.
-
Die
Schreib/Lese-Einheit 205 weist einen Haupt-Latch 230m und
einen Cache-Latch 230c auf. Der
Cache-Latch 230c wird verwendet, um den Zielwert eines
in die entsprechende ausgewählte
Zelle zu schreibenden Bits einzugeben; der Haupt-Latch 230m wird
verwendet, um den von dem Cache-Latch 205m empfangenen
Zielwert in die Zelle zu schreiben oder den darin gespeicherten
Wert zu lesen.
-
Detaillierter
wird der Haupt-Latch 230m von zwei Invertern 235am und 235bm gebildet.
Der Eingangsanschluss des Inverteres 235am und der Ausgangsanschluss
des Inverters 235bm sind miteinander verbunden, um einen
Operationsknoten 237am des Latchs 230m zu definieren,
der ein Signal Qm liefert; ebenso sind der Ausgangsanschluss des
Inverters 235am und der Eingangsanschluss des Inverters 235bm miteinander
verbunden, um einen weiteren Operationsknoten 237bm zu
definieren, der ein negiertes Signal Qm liefert.
-
Ein
NMOS-Transistor 240m wird verwendet, um den Latch 230m rückzusetzen.
Zu diesem Zweck ist der Drain-Anschluss des Transistors 240m mit dem
Knoten 237am verbunden und ist sein Source-Anschluss mit
einem Masseanschluss verbunden; der Gate-Anschluss des Transistors 240m wird
von einem Rücksetzsignal
MRST gesteuert. Der Haupt-Latch 230m wird mittels zweier
NMOS-Transistoren 245m und 250m gesetzt, die in
Reihe geschaltet sind. Insbesondere ist der Drain-Anschluss des
Transistors 245m mit dem Knoten 237bm verbunden
und ist sein Source-Anschluss mit dem Drain-Anschluss des Transistors 250m verbunden; der
Source-Anschluss des Transistors 250m ist mit dem Masseanschluss
verbunden. Der Gate-Anschluss des Transistors 245m wird
von der Spannung an dem Knoten 210 gesteuert, während der Gate-Anschluss
des Transistors 250m von einem Einspeicher-Signal MLCH
gesteuert wird.
-
Der
Haupt-Latch 230m weist ferner einen Hochzieh-PMOS-Transistor 255 auf,
dessen Gate-Anschluss mit dem Knoten 237am verbunden ist
und dessen Source-Anschluss mit dem Energieversorgungsanschluss
verbunden ist. Der Drain-Anschluss des Transistors 255 ist
mit dem Drain-Anschluss eines Runterzieh-NMOS-Transistors 260 verbunden;
der Gate-Anschluss des Transistors 260 ist mit dem Energieversorgungsanschluss
verbunden und sein Source-Anschluss ist mit dem Masseanschluss verbunden.
Die Drain-Anschlüsse
der Transistoren 255 und 260 definieren einen
Knoten 263, der ein Fehlersignal WDO liefert.
-
Ein
NMOS-Transistor 265 wird verwendet, um den Haupt-Latch 230m mit
der ausgewählten Bit-Leitung
BLe oder BLo zu verbinden, um die entsprechende Zelle während der
Schreiboperation zu programmieren. Zu diesem Zweck hat der Transistor 265 den
Source-Anschluss, der mit dem Knoten 237am verbunden ist,
und den Drain-Anschluss, der mit dem Knoten 210 verbunden
ist; der Gate-Anschluss des Transistors 265 wird von einem
Programmiersignal PGM gesteuert. Auf der anderen Seite wird der
Wert, der während
der Leseoperation von dem Haupt-Latch 230m detektiert wird,
mittels eines NMOS-Transistors 270 und eines Inverters 275 ausgegeben,
die in Reihe geschaltet sind. Insbesondere hat der Transistor 270 den
Drain-Anschluss, der mit dem Knoten 237am verbunden ist,
während
sein Gate-Anschluss von einem Freigabesignal PBDO gesteuert wird;
der Source-Anschluss des Transistors 270 ist mit dem Eingangsanschluss
des Inverters 275 verbunden, dessen Ausgangsanschluss ein
Signal PADOUT liefert.
-
Auf
der anderen Seite wird der Cache-Latch 230c von zwei Invertern 235ac und 235bc gebildet. Der
Eingangsanschluss des Inverters 235ac und der Ausgangsanschluss
des Inverters 235bc sind miteinander verbunden, um einen
Operati onsknoten 237ac des Latchs 230c zu definieren,
der ein Signal Qc liefert; ebenso sind der Ausgangsanschluss des
Inverters 235ac und der Eingangsanschluss des Inverters 235bc miteinander
verbunden, um einen weiteren Operationsknoten 237bc zu
definieren, der ein negiertes Signal Qc liefert.
-
Ein
NMOS-Transistor 240c wird verwendet, um den Latch 230 zu
setzen. Zu diesem Zweck ist der Drain-Anschluss des Transistors 240c mit
dem Knoten 237bc verbunden und ist sein Source-Anschluss
mit dem Masseanschluss verbunden; der Gate-Anschluss des Transistors 240c wird
von einem Setzsignal CSET gesteuert. Der Latch 230c wird
mittels zweier NMOS-Transistoren 245c und 250c rückgesetzt,
die in Reihe geschaltet sind. Insbesondere ist der Drain-Anschluss des Transistors 245c mit
dem Knoten 237ac verbunden und ist sein Source-Anschluss
mit dem Drain-Anschluss des Transistors 250c verbunden;
der Source-Anschluss des Transistors 250c ist mit dem Masseanschluss
verbunden. Der Gate-Anschluss des Transistors 245c wird
von der Spannung an dem Knoten 210 gesteuert, während der
Gate-Anschluss des Transistors 250c von einem Einspeicher-Signal
CLCH gesteuert wird.
-
Drei
NMOS-Transistoren 280a, 280b und 285 werden
verwendet, um den Zielwert während
einer Eingabephase am Anfang der Schreiboperation einzugeben. Zu
diesem Zweck hat der Transistor 280a den Drain-Anschluss,
der mit dem Knoten 237ac verbunden ist, und hat der Transistor 280b den
Drain-Anschluss, der mit dem Knoten 237bc verbunden ist;
der Gate-Anschluss des Transistors 280b empfängt ein
Eingangssignal DI (das den Zielwert darstellt), während der
Gate-Anschluss des Transistors 280a ein negiertes Eingangssignal
DI empfängt. Die
Source-Anschlüsse
der Transistoren 280a und 280b sind mit dem Eingangsanschluss
des Inverters 275 verbunden. Der Transistor 285 wird
verwendet, um diesen Anschluss während
der Eingangsphase mit der Masse zu verbinden. Insbesondere hat der Transistor 285 den
Drain-Anschluss, der mit dem Eingangsanschluss des Inverters 275 verbunden
ist, und den Source-Anschluss,
der mit dem Masseanschluss verbunden ist; der Gate-Anschluss des
Transistors 285 wird von einem Freigabesignal IN gesteuert.
-
Der
Cache-Latch 230c weist ferner einen NMOS-Transistor 290 zum Übertragen
des Zielwerts an den Haupt-Latch 230m auf. Zu diesem Zweck
hat der Transis tor 290 den Drain-Anschluss, der mit dem Knoten 237ac verbunden
ist, und den Source-Anschluss, der mit dem Knoten 210 verbunden
ist; der Gate-Anschluss des Transistors 290 wird von einem Freigabesignal
PDUMP gesteuert. Außerdem
wird ein NMOS-Transistor 295 verwendet, um zu diagnostischen
Zwecken direkt auf die ausgewählte
Bit-Leitung BLe oder BLo zuzugreifen. Insbesondere hat der Transistor 295 den
Drain-Anschluss, der mit dem Knoten 210 verbunden ist,
und den Source-Anschluss, der mit dem Eingangsanschluss des Inverters 275 verbunden
ist; der Gate-Anschluss des Transistors 295 wird von einem
Freigabesignal CELLIV gesteuert.
-
In
einem Stand-by-Zustand sind alle der oben beschriebenen Steuersignale
nicht geltend gemacht, so dass die entsprechenden Transistoren ausgeschaltet
sind.
-
Vor
jeglicher Schreib/Lese-Operation auf einer ausgewählten Bit-Leitung,
wie z.B. der Bit-Leitung BLe (ähnliche Überlegungen
gelten für
die andere Bit-Leitung BLo) wird das entsprechende Signal DISCHe
geltend gemacht; folglich schaltet der Transistor 220e ein,
um die Vorspannungsspannung VIRPWR an die Bit-Leitung BLe anzulegen.
-
Am
Anfang der Schreiboperation wird der Zielwert in den Cache-Latch 230c eingegeben.
Detaillierter wird das Signal IN geltend gemacht; folglich schaltet
der Transistor 285 ein und verbindet die Source-Anschlüsse der
Transistoren 280a und 280b mit der Masse. Der
(von dem Signal DI dargestellte) Zielwert und sein (von dem Signal DI dargestellter) negierter
Wert werden dann an die Gate-Anschlüsse der Transistoren 280b bzw. 280a angelegt.
Deshalb schaltet, wenn der Zielwert 1 ist, der Transistor 280b ein
(während
der Transistor 280a ausgeschaltet bleibt), um den Knoten 237bc mit
der Masse zu verbinden; auf diese Weise wird das Signal Qc auf den Logikwert 0 gebracht und wird
das Signal Qc auf den Logikwert 1 gebracht. Umgekehrt schaltet,
wenn der Zielwert 0 ist, der Transistor 280a ein (während der Transistor 280b ausgeschaltet
bleibt), um den Knoten 237ac mit der Masse zu verbinden;
auf diese Weise nimmt das Signal Qc den Logikwert 0 an und nimmt
das Signal Qc den Logikwert
1 an.
-
Gleichzeitig
wird der Haupt-Latch 230m durch das geltend Machen des
Signals MRST rückgesetzt.
Folglich schaltet der Transistor 240m ein; auf diese Weise
wird das Signal Qm auf den Logikwert 0 gebracht und wird das Signal Qm auf den Logikwert 1 gebracht.
-
Der
Zielwert in dem Cache-Latch 230m wird dann durch das geltend
Machen des Signals PDUMP an den Haupt-Latch 230m übertragen;
deshalb wird der Gate-Anschluss des Transistors 245m auf
die Spannung an dem Knoten 237ac gebracht; auf diese Weise
schaltet, wenn das Signal Qc bei dem Logikwert 1 ist, der Transistor 245m ein,
während,
wenn das Signal Qc bei dem Logikwert 0 ist, der Transistor 245m ausgeschaltet
bleibt. Das Signal MLCH wird dann geltend gemacht, um den Transistor 250m einzuschalten.
Deshalb wird, wenn der Transistor 245m eingeschaltet ist
(Qc = 1), der Knoten 237bm mit der Masse verbunden (mit
dem Signal Qm, das den Logikwert
0 annimmt, und dem Signal Qm, das den Logikwert 1 annimmt); umgekehrt
wird, wenn der Transistor 245m ausgeschaltet ist (Qc =
0), der Logikwert in dem Haupt-Latch 230m nicht geändert (wobei
das Signal Qm auf dem Logikwert
1 ist und das Signal Qm auf dem Logikwert 0 ist).
-
Der
Knoten 237am kann jetzt durch das geltend Machen des Signals
PGM, das den entsprechenden Transistor 265 einschaltet,
mit der ausgewählten
Bit-Leitung BLe verbunden werden. Auf diese Weise wird, wenn die
ausgewählte
Zelle programmiert werden soll (Signal Qm auf dem Logikwert 0), die
Zelle vorgespannt, um die Injektion elektrischer Ladungen für ihr Floating-Gate
zu bewirken.
-
Die
ausgewählte
Zelle wird dann gelesen, um den Erfolg der Operation zu verifizieren.
Zuallererst wird der Haupt-Latch 230m wieder durch geltend Machen
des Signals MRST rückgesetzt.
Gleichzeitig wird der Knoten 210 durch das geltend Machen
des Signals PRECH vorgeladen; folglich schaltet der Transistor 225 ein
und verbindet den Knoten 210 mit der Energieversorgungsspannung
+Vdd. Das Signal MLCH wird dann geltend gemacht, um den Transistor 250m einzuschalten.
Deshalb bleibt, wenn die ausgewählte
Zelle programmiert wird und dann nicht-leitfähig ist, der Knoten 210 auf
der Energieversorgungsspannung +Vdd; der Transistor 245m schaltet dann
ein, um den Knoten 237bm mit der Masse zu verbinden (mit
dem Signal Qm, das den Logikwert
0 annimmt, und dem Signal Qm, das den Logikwert 1 annimmt). Umgekehrt
wird, wenn die ausgewählte Zelle
gelöscht
wird und dann leitfähig
ist, der Knoten 210 (durch die entsprechende Reihung) mit
der Masse verbunden; der Transistor 245m bleibt dann ausgeschaltet
und der Logikwert in dem Haupt-Latch 230m wird nicht geändert (wobei
das Signal Qm auf dem Logikwert
1 ist und das Signal Qm auf dem Logikwert 0 ist).
-
Wenn
die ausgewählte
Zelle erfolgreich programmiert wurde (Qm = 1), bleibt der Transistor 255 ausgeschaltet.
Deshalb wird der Knoten 263 von dem Transistor 260 (immer
eingeschaltet) mit der Masse verbunden und nimmt das Signal WDO den Logikwert 0 an. Umgekehrt
schaltet, wenn die Zelle nicht erfolgreich programmiert wurde (Qm
= 0), der Transistor 255 ein. Der Transistor 255 ist
so dimensioniert, dass er eine Stromkapazität hat, die viel höher ist
als die des Transistors 260; deshalb wird der Knoten 263 auf
die Energieversorgungsspannung +Vdd gebracht und nimmt das Signal WDO den Logikwert 1 an.
-
Die
Signale WDO, die von allen Haupt-Latchs 230m bereitgestellt
werden, und die Zielwerte in allen Cache-Latchs 230c werden
einer (in der Figur nicht gezeigten) Logikschaltung zugeführt. Die
Logikschaltung verifiziert eine Übereinstimmung
der gegenwärtig
in der Seite gespeicherten Werte mit den entsprechenden Zielwerten
(d.h. ob die erforderlichen Zellen erfolgreich programmiert wurden).
Immer dann, wenn ein Fehlerzustand detektiert wird, wird ein entsprechendes
für den
Fehler indikatives Signal geltend gemacht. Als Antwort darauf werden
die Werte in allen Haupt-Latchs 230m durch das geltend
Machen des Signals PBDO ausgegeben. Auf diese Weise werden die Signale
PADOUT für
die Zellen, die nicht erfolgreich programmiert wurden (Qm = 0) geltend
gemacht. Die entsprechenden Spalten können dann identifiziert und
gesperrt werden, um durch entsprechende redundante Spalten ersetzt
zu werden.
-
Während der
sequentiellen Programm-Verifizier-Prozedur werden für jede Seite
der Speichervorrichtung die gleichen oben beschriebenen Operationen
wiederholt. Jedoch wird das zu wiederholende Zielwort in der ganzen
Matrix in den Cache-Latchs 230c aufrechterhalten (um zu
vermeiden, dass es in jedem Programmverifizierschritt wieder eingegeben wird).
Wenn die sequentielle Programm-Verifizier-Prozedur unter Programmierung
aller Zellen ausgeführt
wird, kann die Eingangsphase (mit der entsprechenden Übertragung
der Zielwerte von den Cache-Latchs 230c an die Haup-Latches 230m)
vermieden werden. Nach jedem Programmverifizierschritt werden, wenn
eine oder mehrere der Zellen der aktuellen Seite nicht mit den erwünschten
Werten übereinstimmen
(d.h. wenn sie nicht erfolgreich programmiert wurden), die Signale
PADOUT ausgegeben. Dies ist notwendig, um das Verlieren der entsprechenden
Information wegen der Rücksetzung der
Haupt-Latchs 230m in dem nächsten Programmverifizierschritt
zu vermeiden.
-
Ähnliche Überlegungen
treffen zu, wenn die Schreib/Lese-Einheit eine andere Architektur
hat oder andere Komponenten aufweist; zum Beispiel kann die Schreib/Lese-Einheit
mit bipolaren Transistoren implementiert sein, können die Latchs eine andere
Struktur haben oder können äquivalente
Steuersignale verwendet werden.
-
Die
vorliegende Erfindung basiert auf der Erkenntnis, dass in dem oben
beschriebenen Szenario während
der sequentiellen Programm-Verifizier-Prozedur nur ein Latch jeder
Schreib/Lese-Einheit (d.h. der Haupt-Latch 230m) verwendet
wird. Deshalb wird in einer bevorzugten Ausführungsform der Erfindung einer
der Latchs (vorzugsweise der Cache-Latch 230c) zum Ausführen der
Programmverifizierschritte verwendet, während der andere Latch (d.h.
der Haupt-Latch 230m)
verwendet wird, um die Ergebnisse der Verifizierungen zwischenzuspeichern.
-
Jetzt
beginnt mit der gemeinsamen Betrachtung von 2 und 3 ein
entsprechendes Verfahren 300 an dem Startblock 303.
Fortfahrend mit Block 306 werden alle Zellen der Matrix
programmiert. Das Verfahren geht dann weiter zu Block 309, in
dem jeder Haupt-Latch 230m durch das geltend Machen des
Signals MRST (Qm = 0, und Qm =
1) rückgesetzt
wird. Eine Schleife wird dann für
jede der Seiten wiederholt, die einen gemeinsamen Spaltensatz teilen.
-
Die
Schleife beginnt an Block 312, wobei jeder Cache-Latch 230c durch
das geltend Machen des Signals CSET (Qc =
0, und Qc = 1) gesetzt wird. Fortfahrend mit Block 315 wird
der Knoten 210 durch das geltend Machen des Signals PRECH vorgeladen (um den Knoten 210 auf
die Energieversorgungsspannung +Vdd zu bringen). Das Signal CLCH
wird dann an dem Block 318 geltend gemacht, um den in der
ausgewählten
Zelle gespeicherten Wert in den Cache-Latch 230c einzuspeichern.
-
Als
Antwort darauf spaltet sich der Aktivitätsfluss entsprechend dem Zustand
der ausgewählten Zelle.
Insbesondere schaltet, wenn die ausgewählte Zelle programmiert wird,
der Cache-Latch 230c an dem Block 321. Tatsächlich ist
die Zelle nicht-leitfähig,
so dass der Knoten 210 auf der Energieversorgungsspannung
+Vdd bleibt; der Transistor 245c schaltet ein und verbindet
den Knoten 237ac mit der Masse (mit dem Signal Qc, das
den Logikwert 0 annimmt, und dem Signal Qc,
das den Logikwert 1 annimmt). Umgekehrt wird, wenn die ausgewählte Zelle gelöscht wird
und dann leitfähig
ist, der Knoten 210 mit der Masse verbunden; der Transistor 245c bleibt dann
ausgeschaltet und der Logikwert in dem Cache-Latch 230c wird
nicht geändert
(mit dem Signal Qc auf dem Logikwert 1 und dem Signal Qc auf dem Logikwert 0).
-
Das
Verfahren läuft
zusammen an dem Block 324, wobei das Signal PDUMP geltend
gemacht wird, um den Wert in dem Cache-Latch 230c an den Haupt-Latch 230m zu übertragen.
Als Antwort darauf teilt sich der Aktivitätsfluss entsprechend dem Wert
in dem Cache-Latch 230c wieder. Insbesondere schaltet,
wenn das Signal Qc auf dem Logikwert 1 ist, der Haupt-Latch 230m an
dem Block 327 (Qm =
0 und Qm = 1). Umgekehrt wird, wenn das Signal Qc auf dem Logikwert
0 ist, der Zustand des Haupt-Latchs 230m nicht geändert.
-
Das
Verfahren läuft
an dem Testblock 330 zusammen. Wenn die letzte Seite des
gegenwärtigen Satzes
noch nicht erreicht wurde, kehrt der Aktivitätsfluss zu Block 312 zurück, um eine
nächste
Seite des Satzes zu verarbeiten; man beachte, dass während der
Wiederholungen der Schleife der Inhalt des Haupt-Latchs 230m nur aktualisiert
wird, wenn ein Fehlerzustand detektiert wird, um das Verlieren der Ergebnisse
der vorangegangenen Schritte zu vermeiden. Im entgegengesetzten
Fall verlässt
das Verfahren die oben beschriebene Schleife und geht zu Block 333 über.
-
Das
Ergebnis der Verifizierung der Seiten des vorliegenden Satzes wird
dann ausgegeben. Insbesondere wird das Signal PBDO geltend gemacht. Deshalb wird,
wenn eine oder mehrere der Zellen, die zu jeder Spalte des Satzes
gehören,
fehlerhaft sind (Qm = 1), das Ausgabesignal PADOUT nicht geltend gemacht.
Auf diese Weise identifizieren die Ausgangssignale PADOUT auf dem
Logikwert 0 die Spalten des zurückzuweisenden
Satzes.
-
Fortfahrend
mit Block 336 wird ein Test gemacht, um zu bestimmen, ob
die letzte Seite der Matrix verifiziert wurde. Wenn nicht, kehrt
das Verfahren zu Block 309 zurück, um die oben beschriebenen Operationen
auf den Seiten zu wiederholen, die einen nächsten Satz von gemeinsamen
Spalten teilen. Sonst endet das Verfahren an dem letzten Block 339.
-
Ähnliche Überlegungen
treffen zu, wenn die die sequentielle Programm-Verifizier-Prozedur
ein äquivalentes
Verfahren (zum Beispiel einschließlich zusätzlicher Schritte) implementiert.
In jedem Fall sind die Konzepte der vorliegenden Erfindung auch anwendbar,
wenn die sequentielle Programm-Verifizier-Prozedur auf eine Untermenge
von Seiten der Matrix anwendet wird oder wenn die Speichervorrichtung
einer äquivalenten
Testprozedur unterzogen wird.
-
Allgemeiner
schlägt
ein Aspekt der vorliegenden Erfindung ein sequentielles Programm-Verifizier-Verfahren
für die
Verwendung in einer nichtflüchtigen
Speichervorrichtung vor. Die Speichervorrichtung weist eine Mehrzahl
von Speicherzellen auf, jede zum Speichern eines Logikwerts; die
Zellen sind in einer Mehrzahl von Anordnungen angeordnet. Das Verfahren
beginnt mit dem Schritt des Schreibens eines Satzes von Zielwerten
in eine Mehrzahl von Zellenblöcken
(mit den entsprechenden Zellen von jedem Block, die zu einer gemeinsamen
Anordnung gehören).
Jeder Zellenblock wird dann nacheinander verifiziert, um einen Fehlerwert
für jede
Anordnung (als Antwort auf eine Nicht-Übereinstimmung
des in der zu der Anordnung gehörenden
Zelle des Blocks gespeicherten Werts mit dem entsprechenden Zielwert)
geltend zu machen. In dem Verfahren der Erfindung werden die Fehlerwerte
zwischengespeichert. Als Antwort auf die Verifizierung aller Zellenblöcke wird
dann entsprechend den Fehlerwerten ein Hinweis darauf geliefert,
dass die Anordnungen fehlerhaft sind.
-
Die
Lösung
der Erfindung vermeidet das Unterbrechen der Prozedur jedes Mal, wenn
ein Fehlerzustand detektiert wird.
-
Tatsächlich werden
in dem vorgeschlagenen Verfahren die Ergebnisse der Verifizierungen
gesammelt, um am Ende des Verfahrens ausgegeben zu werden.
-
Folglich
wird die Länge
des Verfahrens wesentlich reduziert.
-
Insbesondere
erlaubt die Lösung
der Erfindung die Verbesserung der Leistungsfähigkeit des Herstellungsprozesses
der Speichervorrichtungen mit einer entsprechenden Reduzierung deren
Gesamtkosten.
-
Die
bevorzugte Ausführungsform
der oben beschriebenen Erfindung bietet weitere Vorteile.
-
Insbesondere
werden die Zellen aller zu verifizierenden Seiten programmiert.
-
Auf
diese Weise kann das Verfahren mit einem Standardseitenpuffer implementiert
werden.
-
Die
Lösung
der Erfindung ist speziell für
die Verwendung in einer Speichervorrichtung mit einem Seitenpuffer
mit zwei Latchs für
jede Schreib/Lese-Einheit ausgelegt.
-
Deshalb
kann ein Latch zum Lesen der zu verifizierenden Zelle verwendet
werden und kann der andere Latch zum Zwischenspeichern des Ergebnisses
der Verifizierung verwendet werden.
-
Das
Verfahren gemäß der vorliegenden
Erfindung führt
jedoch selber dazu, sogar mit einem anderen Datenmuster oder mit
einem Seitenpuffer mit einer anderen Struktur (die zum Beispiel
das Einspeichern des Datenmusters und das Zwischenspeichern des
Ergebnisses der Verifizierung zur gleichen Zeit erlaubt) ausgeführt zu werden.
-
Als
eine weitere Verbesserung wird der Latch, der das Ergebnis der Verifizierung
zwischenspeichert, entsprechend dem Inhalt des anderen Latchs gesetzt.
-
Diese
Lösung
erlaubt das Ausnutzen von Standardmerkmalen, die von dem Seitenpuffer
geliefert wird.
-
Eine
vorgeschlagene Wahl für
das Ausführen
des oben erwähnten
Schritts ist die des Rücksetzens
des Latchs, der für
das Zwischenspeichern des Ergebnisses der Verifizierung am Anfang
des Verfahrens verwendet wird; dieser Latch wird dann nach dem Verifizieren
jeder Seite mit dem anderen Latch gekoppelt (um nur zu schalten,
wenn der Inhalt des anderen Latchs anzeigt, dass die entsprechende
Zelle nicht erfolgreich programmiert wurde).
-
Das
vorgeschlagene Verfahren vermeidet automatisch jeglichen Informationsverlust,
der mit den Ergebnissen der vorhergehenden Verifizierungen in Verbindung
steht.
-
Die
Implementierung der Lösung
der Erfindung durch das Steuern des Latchs des Seitenpuffers auf
eine andere Weise wird nicht ausgeschlossen. Zum Beispiel wird in
einer anderen Ausführungsform
ein generisches Datenmuster in den Cache-Latch geladen und dann
auf den Haupt-Latch übertragen.
Jeder Schritt des Verfahrens beinhaltet die Rückführung der Zielwerte (in den
Haupt-Latchs) an
die Cache-Latchs. Jede Zelle der aktuellen Seite wird in den entsprechenden
Cache-Latch gelesen, um dessen Schalten zu bewirken, wenn sich der
gespeicherte Wert von dem Zielwert unterscheidet. Die Cache-Latchs
werden dann mit den Haupt-Latchs gekoppelt; auf diese Weise bewirkt
jeglicher Fehler das Schalten der entsprechenden Haupt-Latchs. Am Ende
der Prozedur werden die Werte in den Haupt-Latchs ausgegeben und
mit den Zielwerten verglichen; demzufolge weist jeder Unterschied
zwischen den Wertepaaren darauf hin, dass die entsprechende Spalte
fehlerhaft ist. Alternativ kann eine festgeschaltete Logikschaltung
zum Vergleichen des gelesenen Werts mit dem erwarteten verwendet
werden und den Fehlerwert dementsprechend setzen; immer dann, wenn
ein Fehlerzustand detektiert wird, wird die Logikschaltung gesperrt,
um ein nutzloses Verifizieren der nächsten Zellen einer fehlerhaften
Spalte zu vermeiden.
-
In
einer bevorzugten Ausführungsform
wird der Cache-Latch verwendet, um die Zelle zu verifizieren, und
wird der Haupt-Latch verwendet, um das Ergebnis der Verifizierung
zwischenzuspeichern.
-
Auf
diese Weise kann das Verfahren der Erfindung unter Nutzung von Merkmalen
implementiert werden, die für
die Standardschreib/Lese-Operationen bereits verfügbar sind.
Dennoch wird hervorgehoben, dass dieses Ergebnis überraschenderweise unter
Verwendung der zwei Latchs mit einer ihrem Standardbetriebsmodus
entgegengesetzten Funktion erreicht wird.
-
Ohne
seine allgemeine Anwendbarkeit zu beeinträchtigen, ist das Verfahren
der Erfindung speziell für
die Verwendung in einem NAND-Flashspeicher ausgelegt.
-
Tatsächlich ist
der in dieser Art von Speichervorrichtungen üblicherweise verfügbare Seitenpuffer gut
für die
Implementierung des dargelegten Verfahrens geeignet.
-
Vorteilhafterweise
ist die Lösung
gemäß der vorliegenden
Erfindung mit einem Software-Programm implementiert, das in einer
Speicherkomponente implementiert ist.
-
Jedoch
wird die Verwendung des Haupt- und des Cache-Latchs auf eine andere
Weise nicht ausgeschlossen. In jedem Fall wird die Anwendung des vorgeschlagenen
Verfahrens in einem NOR-Flashspeicher oder allgemeiner in jeder
beliebigen anderen nichtflüchtigen
Speichervorrichtung in Erwägung gezogen.
Außerdem
kann das Software-Programm in jeder beliebigen Form geliefert werden,
die direkt in einen Arbeitsspeicher der Mikro-Steuereinrichtung ladbar
ist, oder kann das Verfahren mit einer Hardware-Struktur oder einer
Kombination von Software und Hardware implementiert werden.
-
Natürlich kann,
um lokale und spezifische Anforderungen zu erfüllen, ein Fachmann viele Modifikationen
und Änderungen
der oben beschriebenen Lösung
anwenden, die jedoch alle im Umfang des Schutzes der Erfindung liegen,
wie er durch die folgenden Ansprüche
definiert wird.