DE60312729T2 - Intelligente verifikation von speichern mit mehreren zuständen - Google Patents

Intelligente verifikation von speichern mit mehreren zuständen Download PDF

Info

Publication number
DE60312729T2
DE60312729T2 DE60312729T DE60312729T DE60312729T2 DE 60312729 T2 DE60312729 T2 DE 60312729T2 DE 60312729 T DE60312729 T DE 60312729T DE 60312729 T DE60312729 T DE 60312729T DE 60312729 T2 DE60312729 T2 DE 60312729T2
Authority
DE
Germany
Prior art keywords
state
programming
test
memory
subset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60312729T
Other languages
English (en)
Other versions
DE60312729D1 (de
Inventor
Geoffrey S. Los Altos Gongwer
Daniel C. Fremont Guterman
Yupin Kawing Fremont FONG
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of DE60312729D1 publication Critical patent/DE60312729D1/de
Application granted granted Critical
Publication of DE60312729T2 publication Critical patent/DE60312729T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • G11C11/5635Erasing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Hardware Redundancy (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

  • Diese Erfindung gehört zum Bereich von Systemarchitekturen nichtflüchtiger Halbleiter-Datenspeicher sowie deren Arbeitsweise und bezieht sich insbesondere auf Programmier-Prüf-Verfahren.
  • Für nichtflüchtige Speicher werden eine Anzahl von Architekturen verwendet. Bei einem NOR-Array einer Bauart sind deren Speicherzellen zwischen benachbarten Bit-Leitungen (Spalten) verbunden und Control Gates sind mit Wort-Leitungen (Reihen) verbunden. Die einzelnen Zellen enthalten entweder einen Floating Gate Transistor mit oder ohne einen in Reihe ausgestalteten Select Transistor oder zwei Floating Gate Transistoren, die durch einen einzelnen Select Transistor voneinander getrennt sind. Beispiele derartiger Arrays und deren Verwendung in Speichersystemen werden in den folgenden US-Patenten von SanDisk Corporation aufgeführt: 5,095,344, 5,172,338, 5,602,987, 5,663,901, 5,430,859, 5,657,332, 5,712,180, 5,890,192, 6,103,575, 6,151,248, 6,426,893 und 6,512,263.
  • Ein NAND-Array einer Bauart enthält eine Anzahl von Speicherzellen, wie zum Beispiel 8, 16 oder sogar 32, die in Reihe zwischen einer Bitleitung und einem Referenzpotential durch Select Transistoren an beiden Enden verbunden sind. Wortleitungen sind mit entsprechenden Control Gates von Zellen über mehrere derartiger unterschiedlichen Reihenstränge verbunden. Relevante Beispiele für derartige Arrays und deren Betrieb werden in US-Patentveröffentlichung Nr. 2003-0002348-AI aufgeführt.
  • Wenn Mehrzustandsdaten pro Speicherelement in einen nichtflüchtigen Speicher, wie zum Beispiel elektrisch löschbare und programmierbare Nur-Lese-Flash-Speicher (EEPROMs) geschrieben werden, ist die Schreib- oder Programmieroperation üblicherweise dazu ausgelegt, eine Ziel-Population von Speicherelementen schrittweise durch eine Reihe von Datenzuständen zu bewegen bis jedes Element seinen gewünschten Zustand erreicht. Dies wird durch inkrementelles Verändern des Zustands der Speicherelemente durchgeführt, Abtasten eines Parameters, welcher auf diesen Zustand hinweist, in einem Prüfvorgang und ferner Ändern des Zustands von den Zellen, die noch nicht überprüft wurden, ob sich diese in ihrem gewünschten End- oder Zielzustand befinden. Bei einem EEPROM besteht dies üblicherweise aus Erhöhen von Schwellspannungspegeln (Vth) (beginnend vom gelöschten oder Zustand 0) unter Verwendung einer sequentiell ansteigenden Steuerspannungsschritt (z.B. Treppe) Implementierung für jeden nachfolgenden Programmierpuls. Während jedes Speicherelement seinen zu schreibenden Vth Ziel-Datenzustand überschreitet, wird es während der entsprechenden Zustandsprüfope ration gesperrt, was sämtliches nachfolgendes Schreiben der zugehörigen Speicherelemente für die Dauer dieser Schreibsession beendet.
  • Eine Prüfoperation ist eine Abtast- oder Leseoperation, wobei der Zustand der Speichereinheit mit seinem Daten-zugehörigen Zielwert verglichen wird. Für eine binäre Speichereinheit existiert neben dem Grundzustand nur ein Datenzustand, während der Mehrzustandsfall zusätzliche Zustände aufweisen wird. Zum Beispiel in dem Fall, bei dem jedes Speicherelement oder Zelle insgesamt 3 Bit oder acht Zustände speichert. In einer üblichen Zellen-Array-Architektur sind alle Zellen in einer Schreib- oder Abtastgruppe, die gleichzeitig beschreiben beziehungsweise gelesen werden, mit einem gemeinsamen Control oder Steering Gate verbunden. Um bei einer derartigen Implementierung Zellen über dem Bereich von möglichen Zuständen (z.B. Zustände {0, 1, 2, 3, 4, 5, 6, 7} für das 3-Bit Beispiel) auszulesen oder zu prüfen ist es notwendig, seriell (z.B. sequentiell) durch alle Steuerspannungsabtastbedingungen zu scannen. Bei dem Beispiel gibt es sieben derartige sequentielle Abtastvorgänge für die Leseoperationen. Diese werden bei den sieben Schwellspannungs-Unterscheidungspegeln durchgeführt, um gleichzeitig den gespeicherten Zustand der möglichen acht Zustände für jede Zelle innerhalb des gesamten Satzes von Zellen, die ausgelesen oder geprüft werden, zu ermitteln. Bei Verwendung dieser Art von Leseoperationen wie auf die Programmier/Prüf/Sperr-Sequenz angewendet, wobei jeder Programmierpuls von einer Reihe von Prüfschritten (zusammen mit der zugehörigen zustandbedingten Programmiersperre) begleitet wird, kann dieser Prüfsatz auch sequentiell durch den gesamten Satz von Steuerspannungszielpegeln Vth (z.B. ein Satz von sieben für acht Zustandsspeicherelemente) ablaufen, welcher mit dem entsprechenden Satz von programmierbaren Datenzuständen verbunden ist.
  • 1 veranschaulicht die grundsätzliche Mehrzustand Programmier/Prüf-Operation für den Fall von 8 Zuständen in einem Flash-Speichertyp. Programmierpulse, die eine zunehmende Erhöhung von Steering oder Control Gate Programmierspannungspegeln umfassen, sind mit einer 7-Schritt Prüfsequenz von zunehmenden Steering Gate Abtastspannungspegeln verknüpft.
  • 2 erweitert diese Prüfserie in Wellenform 103 (auch mit B gekennzeichnet), welche die 7 sequentiell ansteigenden Prüfpulse 1, 2, 3, 4, 5, 6 und 7 kennzeichnet. Dieses Beispiel zeigt die Ergebnisse einer derartigen Überprüfung für ein Speicherelement im (geladenen) Zustand (d.h. abgetastete Schwellspannung oder Pegel Vth) zwischen Prüfpegeln 3 und 4, wie durch punktierte Linie 101 dargestellt (auch mit A gekennzeichnet), die entweder Schwellenspannung direkt repräsentiert oder einen anderen Parameter (z.B. einen Strompegel), der auf diesen Zustand hinweist. Die Abtastmesswerte werden bei jedem der Prüfpegel in Wellenform für die Abtastparameter (wie zum Beispiel Steering Gate Spannung) durch einen Abtastpuls erfasst, wie durch Wellenform 105 dargestellt (auch mit C gekennzeichnet). Die Messwerte dieser Abtastüberprüfung sind in Wellenform 107 gezeigt (auch mit D gekennzeichnet). Wann immer der Prüfpegel niedriger als der gespeicherte Ladungspegel ist, führt dies zu einem „1" Logikpegelpuls, wie für die ersten drei Prüfabtastungen gezeigt ist, während wenn dieser höher ist, dies zu einem „0" Logikpegel führt, wie es für die letzten vier Prüfabtastungen gezeigt ist.
  • In der Praxis ist das Verwenden des gesamten Prüfsatzes für jeden Schritt beim Programmieren zuviel des Guten und vergeudet Zeit (wobei typischerweise jede Prüfabtastoperation die selbe Zeit wie ein Programmierpuls beansprucht), da bei jedem Punkt des Programmierverlaufs nur ein begrenzter Vth Bereich (oder Bereich von Datenzuständen) existiert, über den sich die Population von Zellenerstrecken kann. Vorhandene Bauarten nutzen diese Charakteristik durch Bereitstellen einer Implementierung eines begrenzten Prüfsatzes mit beweglichem Bereich aus, wie im folgenden beschrieben wird.
  • Bei Verwendung des schrittweisen Programmieransatzes existiert eine sich statistisch gut verhaltende Verteilung von Schwellenspannungen innerhalb einer Population von Zellen, wenn diese durch die aufsteigenden Zustände fortschreiten, beginnend mit Zustand 1, dann zu Zustand 2 und so weiter bis Zustand 7. Um zu Helfen, das begrenzte Prüfsatz-Konzept zu verstehen, hilft es zunächst die Datenzustandsbedingte Programmiersperre zu vernachlässigen, d.h. es wird keine Sperre angenommen. Angesichts dessen wird in der folgenden Momentaufnahme ein Beispiel für ein Vth Verteilungsszenario beschrieben. Beginnend vom gelöschten Zustand wurde die Population von Zellen sukzessiv bis zu einem Punkt programmiert, bei dem sich ein signifikanter Anteil der Population innerhalb des Vth Bereiches zwischen den Zuständen 4 und 5 befindet. In diesem Szenario sind relativwenige Nachzügler vorhanden, die zwischen den Zuständen 3 und 4 liegen, und keine mit Vths unterhalb von Zustand 3. Ebenso sind verhältnismäßig wenig vorauslaufende Zellen mit Vths zwischen den Zuständen 5 und 6 (d.h. Lesen als Zustand 5) und keine bei Zuständen 6 und darüber vorhanden. In einem derartigen Szenario ist es sinnlos, die Prüfoperation durchzuführen, um nach Zuständen 1, 2, 6 oder 7 zu suchen, da die Zellen an diesem Punkt nur in dem Vth Bereich vorhanden sind, der sich über den Zuständen 3, 4 oder 5 erstreckt. Infolgedessen reduziert der nun verwendete Ansatz den Bereich der Vth Prüfpegel, um sich nur über den Fensterbereich zu erstrecken, welcher dazu notwendig ist, den erwarteten Vth Bereich am gegebenen Punkt in der Programmiersequenz zu umhüllen (d.h. im obigen Beispiel werden an diesem Punkt in der Program miersequenz nur 3 Prüfungen durchgeführt, die sich über Zustände 3, 4 und 5 erstrecken, anstelle des gesamten Satzes von sieben Prüfungen.). Während Programmieren zu höheren Schwellspannungsbereichen verläuft, wird der Vth Prüffensterbereich entsprechend aufwärts bewegt. Auf diese Weise wird die Programmieroperation wesentlich beschleunigt. Zum Beispiel in dem Fall, bei dem die Zeitdauer für jeden Programmierpuls vergleichbar mit dem für jeden Prüfschritt ist, reduziert dieser Ansatz die gesamte Schreibzeit um die Hälfte vom Maximum von 8 Schritten (d.h. 1 Programmierpuls plus 7 Prüfungen) auf 4 Schritte (1 Programmierpuls plus 3 Prüfungen), was die ursprüngliche Schreibgeschwindigkeit verdoppelt.
  • Ein Beispiel für diesen Vorgang ist in 3 dargestellt. Dies ist eine schematische Darstellung der Zustände, die bei welchem Stadium in einem beispielhaften Programmiervorgang geprüft würden. Dies kann durch eine Look-Up Tabelle im Controller oder andere Vorrichtungen implementiert werden. In der Tabelle in 3 sind die geprüften Mehrzustände nach einem vorgegebenen Programmierpuls durch ein Häkchen bei einem entsprechenden Punkt im Raster angedeutet. Zum Beispiel ist nach den ersten zwei Programmierpulsen nur der niedrigste Zustand über Ground (z.B. der Zustand 1) überprüft, da voraussichtlich keines der Speicherelemente derart früh zum Zustand 2 aufgestiegen sein wird. Nach dem dritten Puls wird eine Prüfung des Zustand 2 hinzugefügt, da zu diesem Zeitpunkt Zellen den Zustand 2 erreicht können. Der Zustand 3 wird ebenso nach dem fünften Puls zur Prüfliste hinzugefügt und so weiter. Wenn eine Zelle zum Zustand 1 übergeht, wurde diese voraussichtlich durch den siebten Puls programmiert, so dass die Prüfung des Zustands 1 an diesem Zeitpunkt ausgelassen wird. Ebenso wird der Zustand 2 beim 11-ten Puls ausgelassen und so weiter.
  • Beispiele für Abläufe der oben beschriebenen Art sind in US-Patent 6,243,290 und der Europäischen Patentschrift 0,856,850 offenbart.
  • Obwohl dies die Anzahl der Lesevorgänge zwischen Programmierpulsen im Vergleich zum Prüfen aller Nicht-Ground-Zustände (zum Beispiel 7 Lesevorgänge im Falle des 3-Bit Beispiels) signifikant reduziert, existieren bei Verwendung eines derartigen Dead Reckoning Reduced Scan eine Anzahl von Problemen, Sliding Window Ansatz für höhere Schreibgeschwindigkeit, während ein ausreichendes Guard-Band beim Scan Fenster beizubehalten, um zuverlässige Schreiboperationen zu gewährleisten. Diese Probleme hängen hauptsächlich mit der Ermittlung eines ausreichenden Guard-Bands zusammen. Und zwar, wie früh sollte jeder neue Zustand eingeführt werden und wann ist es sicher, jeden Zustand auszulassen? Die Prüfoperation, wie in 3 beispielhaft erläutet, muss die O perationen des Speichers ungeachtet seiner Betriebsbedingungen sicher abdecken, wie zum Beispiel Temperatur oder Spannungsquelle, Alter des Bauelements oder der Herstellungsunterschiede, die mit der Verarbeitung und anderer Schwankungen verbunden sind. Obwohl die Performance durch Prüfen weniger Zustände während der Prüfoperation erhöht wird, muss eine ausreichende Prüfung vorhanden sein, um einen stabilen Betrieb zu gewährleisten. Obwohl der Vorteil der Performancesteigerung mit der steigenden Anzahl von Zuständen pro Speicherelement durch Verwendung des obigen reduzierten Scans steigt, steigt darüber hinaus die Möglichkeit von Fehlern, insbesondere unter Beachtung der Tendenz zu niedrigeren Betriebsspannungen.
  • Da die verbleibenden Vths nicht überprüft werden, ist keine Sperrung von deren zugehörigen Zuständen während dieses bestimmten Programmierschritts möglich. (Im obigen Beispiel haben z.B. nur Zellen mit Datenzuständen 3, 4 und 5 die Möglichkeit gesperrt zu werden, wohingegen Zellen mit Datenzuständen 1, 2, 6, 7 nicht derart während dieses spezifischen Programmier/Prüf-Schrittes gesperrt werden können.) Daher ist eine entscheidende Notwendigkeit für diesen Prüf-Beschleunigungs-Algorithmus, dass zu jedem Zeitpunkt in der Programmiersequenz ein ausreichend breiter und genau positionierter Prüffensterbereich aufgestellt ist, um die Streuung der erwarteten Verteilung von Vth zu erfassen (mit Ausnahme der bereits gesperrten Zellen).
  • Im Falle eines unzureichenden Prüfbereichfensters können Zellen an beiden Enden der Verteilung von Vth (d.h. beide, die zu langsam oder zu schnell programmieren) fehlen, wenn diese tatsächlich ihre korrekten Vth Pegel erreichen und die Programmiersperre benötigen. Dies wird unweigerlich zu entsprechenden Datenzustandsfehlern führen (d.h. Schreibfehler), weil diese Zellen immer noch zu höheren Vth Pegeln voranschreiten (im Falle der Nachzügler niemals gesperrt wurden oder zu spät gesperrt wurden, das wahrscheinliche Schicksal der zu schnellen Zellen). Infolgedessen muss der reduzierte Vth Scan Fenster Algorithmus (d.h. seine Fenstergröße und Programmierschritt-abhängige Anordnung) sorgfältig ausgelegt werden, um eine erhöhte Schreibgeschwindigkeit zu erreichen ohne die Schreibzuverlässigkeit zu verringern.
  • Ein alternativer vorhandener Ansatz zum Reduzieren der Anzahl von Prüfoperationen pro Programmierpuls wurde für eine 2-Bit-pro-Zelle-NAND-Architektur entwickelt (dessen vier Zustände für Referenzzwecke hier als 0, 1, 2, 3 mit absteigenden Pegeln Vth bezeichnet werden) wie zuvor in Bezug auf US-Patentoffenlegung 2003-0002348-A1 beschrieben. Eine optionale Betriebsart für diese NAND Logik Implementation behandelt jede Speichereinheit derart, als hätte diese mehrere Sektoradressen, wobei jede Adresse eher eins der zwei Bit der Speichereinheit speichert als eine einzelne Speichereinheit, die mehrere Bit innerhalb einer Sektoradresse speichert. Im Fall, bei dem die zwei höheren Vth Zustände (2, 3) ausgehend von den zwei niedrigeren Vth Zuständen (0, 1) programmiert werden sollen, verläuft der Vorgang wie folgt: Zellen mit beiden Zielzuständen 2, 3 werden zuerst programmiert und an das niedrigere Vth von den zwei höheren Zuständen (d.h. Zustand 2) gesperrt. Dies wird unter Verwendung eines einzigen Prüf-2 Operation im Anschluss an jeden Programmierpuls durchgeführt und Sperren weiterer Programmierung von beiden 2ern und 3ern, wenn diese den Prüf-2 Pegel überschreiten. Sobald alle 2er und 3er derart gesperrt worden sind, werden die 3er automatisch entsperrt und die Programmiersequenz startet wieder bei diesen 3ern, aber nun mit dem einzigen am Prüf-3 Pegel festgelegten Prüfoperationssatz. Eine Variation beginnt nur mit einer 2er Prüfung während des gleichzeitigen Programmierens der Zustände 2 und 3. Die Prüfung des Zustands 3 wird nach einer vorgegebenen Anzahl von Programmierpulsen hinzugefügt, wobei die 2er Prüfung eventuell ausgelassen wird, um von dort an bis zum Abschluss nur die 3er Überprüfung beizubehalten. Verschiedene Aspekte dieses Verfahrens werden weiter in US-Patent 5,920,507 erörtert.
  • Dieser Ansatz könnte zu höheren Pegeln von Mehrzustandsspeicherung (z.B. 8 Zustände pro Speicherelement) durch Sperren aller Zellen für ein Ziel Vth gleich oder größer als ein Zielpegel Vth (d.h. Zustand) unter Verwendung eines einzigen Zielpegels Vth erweitert werden. Sobald alle Zellen derart gesperrt sind, wird der Vorgang für die Zellen mit dem nächst höheren Zustand Vth oder darüber wiederholt, wobei diese Schleife wiederholt wird, bis diese auf den höchsten Datenzustand ausgerichtete Zellen deren entsprechendes Prüfziel überschreiten.
  • Durch Verwendung dieses Ansatzes ist nur ein einziger Prüfpuls mit jeder Programmierpulsoperation erforderlich, was ein deutlicher Gewinn in Systemen ist, deren Prüfzeiten die des Programmierens dominieren, und dadurch eine Lösung für eine optimale Schreibperformance bietet. Für Systeme, deren einzelne Programmierpulszeiten vergleichbar mit denen von einzelnen Prüfungen vergleichbar sind, was für vorhandene Massenspeicherungs-FLASH-Speicher typisch ist, reduziert der obige Ansatz jedoch die Schreibperformance aus zwei Gründen: (1) Der Programmierfortschritt von Zellen, die für Zustände über denen, die überprüft werden, ausgerichtet sind, werden frühzeitig und unnötigerweise angehalten, was zusätzliche Programmierzeit in nachfolgenden Vth Programmierphasen erfordert, um den durch diese frühzeitige Beendigung verlorenen Fortschritt auszugleichen. (2) Die anfänglichen Programmierbedingungen (z.B. Steering oder Control Gate Start-Spannungstreppe) bei Wiederaufnahme am nächst höheren Zustand muss auf kleinere Werte als diejenigen zurückfallen, die am Ende der vorherigen Programmiersequenz zurückgelassen wurden. Dieses Zurückfallen ist wesentlich, um sicherzustellen, dass Zellen nicht ihren Zielbereich überschreiten, da der spezifische, entsprechende Pegel, bei dem jede Zelle der Populationen zuvor gesperrt wurde (und von dem zugehörigen Pegel aus, von dem jede Zelle die Programmierung fortsetzen sollte) nicht länger auf die Zellen, als eine Population, bei einer einzigen Programmierstartbedingung angewendet werden kann. Im besten Falle muss die Startbedingung auf die verringert werden, die mit der schnellsten Programmierzelle in Zusammenhang steht (d.h. der Programmierspannungssatz für die erste Zelle in der Gruppe, bei der gesperrt werden soll), und dadurch die erforderliche Anzahl von Programmierpulsen für die verbleibenden Zellen zu erhöhen. Für einen Sicherheitsrand Zielte die Startspannung etwas unterhalb des optimalen Pegels reduziert werden, was die Anzahl von Programmierpulse noch weiter erhöht, was die Schreibperformance verringert. Dieser Ansatz führt auch wieder das Problem ein, mit einem festen (d.h. nicht-intelligenten adaptiven) Wert (in diesem Fall zum Programmier-Wiederanlauf) der die Performance mit zuverlässigem Schreiben ausbalanciert. Wenn dies zu aggressiv zugunsten erhöhter Schreibgeschwindigkeit vorangetrieben wird, riskiert dies Zustandsüberschreitung beim Programmieren, während die Schreibgeschwindigkeit leidet, wenn dies zu vorsichtig vorangetrieben wird.
  • Die vorliegende Erfindung richtet sich auf ein Verfahren zum Durchführen einer Programmieroperation an einer Vielzahl von Mehrzustand-Datenspeicherelementen, umfassend Durchführen einer Programmieroperation, um inkrementell die Speicherelemente von einem ersten Datenzustand sequentiell durch eine Vielzahl von zweiten Datenzuständen zu versetzen, Prüfen des Ergebnisses der vorangehenden Programmieroperation für eine Teilmenge von einem oder mehreren Zielwerten von einem Satz von Zielwerten, wobei jeder einem entsprechenden zweiten Datenzustand entspricht, und nachfolgend Wiederholen der Durchführung einer Programmieroperation sowie das Prüfen unter Verwendung der neu aufgestellten Teilmenge von Zielwerten. Gemäß der vorliegenden Erfindung und vor Wiederholen der Durchführung und Prüfoperationen in einem Verfahren, das die obigen Schritte umfasst, wird die Teilmenge von einem oder mehreren der Zielwerte für eine anschließende Prüfoperation basierend auf dem Ergebnis des vorherigen Prüfens in einem Schritt wiederhergestellt, welcher umfasst zu Ermitteln, ob ein Zielwert nicht in die Teilmenge der vorangehenden Prüfung aufzunehmen ist.
  • Die vorliegende Erfindung stellt ebenfalls einen Speicher zu Verfügung, welcher eine Vielzahl von Mehrzustand-Speicherelementen enthält, Programmierschaltungen, welche mit den Speichereinheiten verbindbar sind, um eine Programmieroperation durch zuführen, wobei der Zustand der Speicherelemente verändert werden kann, und Abtastschaltungen, welche mit den Speicherelementen verbindbar sind, um den Wert eines Parameters zu ermitteln, welcher auf den Zustand des Speicherelementes hinweist. Vergleichsschaltungen sind mit den Abtastschaltungen verbunden, um eine Programmierprüfoperation unter Verwendung von Zielwerten für die Parameter entsprechend einer Teilmenge der Mehrzustandpegel durchzuführen, und Logikschaltungen mit den Vergleichsschaltungen verbunden sind, wobei Hinzufügen eines oder mehrerer Mehrzustandpegel zur Teilmenge der Mehrzustandpegel, welche bei der Programmierprüfoperation verwendet werden, basierend auf den Ergebnissen der vorangehenden Programmierprüfoperation ermittelt werden.
  • Gemäß einer Anwendung der vorliegenden Erfindung werden Mehrzustandsspeicher unter Verwendung einer „Smart-Verify" Technik mit einem Prüfergebnis-basierenden dynamischen Anpassen des Mehrzustands-Prüfbereichs für sequentiell Zustand-basierte Prüfimplementierungen programmiert. Die "Smart-Verify" Technik kann die Mehrzustand-Schreibgeschwindigkeit erhöhen, während einen zuverlässigen Betrieb innerhalb sequentiell geprüfter Mehrzustand-Speicherimplementierungen aufrechtzuerhalten. Dieser führt dies durch Bereitstellen von "intelligenten" Mitteln zum Minimieren der Anzahl sequentieller Prüfoperationen für jeden Programmier/Prüf/Sperr-Schritt der Schreibsequenz durch. In einer beispielhaften Ausgestaltung durch Überwachen der Populationsbewegung, um beide, die schnellste Programmierzelle mittels Daten-unbedingter Prüfung am höchsten Datenzustandspegel, der im Prüf-Scanbereich enthalten ist, sowie die alle-Zellen-Sperrbedingung für den niedrigsten Datenzustand in diesem Scanbereich (dabei umfassend die langsamste Programmierzelle), können die niedrigsten und höchsten Enden der Schwellspannungspegelfenster mit minimalem Zeitverbrauch von zusätzlichen, unnötigen Prüfoperationen zuverlässig aufgestellt werden.
  • In einer beispielhaften Ausgestaltung der Schreibsequenz für den Mehrzustands-Speicher während einer Programmier/Prüf-Sequenz der ausgewählten Speicherelemente werden zu Beginn des Verlaufs nur die niedrigsten Zustände des Mehrzustandsbereichs, auf welche die ausgewählten Speicherelemente programmiert werden, während der Prüfphase überprüft. Zum Beispiel können die Speicherelemente die Speicherzellen eines Flash-EEPROM Speichers sein, die mit einer Programmierspannung gepulst werden und nachfolgend abgetastet werden, um deren Fortschritt zu überwachen. Wenn der erste Speicherzustand von einem oder mehreren der ausgewählten Elemente erreicht wird, wird der nächste Zustand in der Sequenz von Mehrzuständen zum Prüfvorgang hinzugefügt. Dieser Zustand kann entweder sofort hinzugefügt werden, nachdem die schnellsten Zellen diesen vorhergehenden Zustand in der Sequenz erreicht haben oder nach einer Verzögerung von mehreren Zyklen, da Speicher generell dazu ausgelegt sind, mehrere Programmierschritte zu enthalten um sich von Zustand zu Zustand zu bewegen. Der Verzögerungsbetrag kann entweder festgelegt sein oder vorzugsweise einen auf der Implementierung basierenden Parameter verwenden, was ermöglicht, den Verzögerungsbetrag entsprechend Charakteristika des Bauelementes festzulegen.
  • Das Hinzufügen von Zuständen zu dem Satz, der in der Prüfphase geprüft wird, dauert gemäß oben bis einschließlich dem Rest der Mehrzustände in Folge an, bis der höchste Zustand hinzugefügt wurde. Auf die gleiche Weise können niedrigere Zustände vom Prüfsatz entfernt werden, während alle der ausgewählten Speicherelemente, die für diese Pegel vorherbestimmt sind, an deren Zielwerten erfolgreich überprüft werden und von weiterem Programmieren gesperrt werden. Zusätzlich können zuvor erkannte fehlerhafte Zellen, die nicht richtig programmiert werden können, auch ausgeblendet werden (z.B. durch anfängliches Sperren), was deren Auswirkung auf die Programmier/intelligente Prüfoperation vermeidet.
  • Weitere Aspekte, Merkmale und Vorteile der vorliegenden Erfindung sind in der folgenden Beschreibung beispielhafter Ausgestaltungen enthalten, deren Beschreibung in Zusammenhang mit den beiliegenden Zeichnungen gelesen werden sollte.
  • 1 ist eine Programmier/Prüf-Wellenformsequenz, die eine vollständige 7-Prüfsequenz zeigt, die mit einer schrittweise höheren Steuer-Programmierspannung alterniert.
  • 2 zeigt eine vollständige sequentielle 7-Schritt Prüfsequenz.
  • 3 ist ein veranschaulichendes Beispiel für eine Look-Up Tabelle, deren Zustände nach einem vorgegebenen Programmierpuls geprüft werden sollen.
  • 4 ist ein Ablaufdiagramm für eine beispielhafte Ausgestaltung der vorliegenden Erfindung.
  • 5a und 5b zeigen die Anzahl von nachfolgenden Prüfpulsen nach jedem Programmierschritt in einer Simulation zweier Ausgestaltungen der vorliegenden Erfindung.
  • 6 zeigt die Häufigkeitsverteilung für den Bereich der Anzahl von Prüfpulsen, die in der in der Ausgestaltung von 5b verwendet werden.
  • 7 zeigt die resultierenden simulierten Schwellenverteilungen für die der Programmierzustände folgende Sperrung.
  • 8 zeigt die resultierenden simulierten Schwellenverteilungen der noch nicht gesperrten Zellenpopulationen bei Programmierschritten gerade vor dem Sperren jeder der Programmierzustände.
  • 9 zeigt die Anzahl der noch auf deren zugehörigen Prüf/Sperrbedingungen zu programmierenden Zellen als eine Funktion der Anzahl von steigenden Programmierpulsen.
  • 10 ist ein Schaltbild einer einem Programm zugehörigen Prüf/Sperr Implementierung.
  • 11 zeigt eine reduzierte sequentielle 7-Schritt Prüfsequenz, die eine Smart-Prüfoperation veranschaulicht.
  • 12 ein Schaltbild einer Peak-Prüfpegel-Detektion und Anwendung zum Aufstellen eines Endes mit hoher Spannung einer Smart Prüfoperation.
  • 13 ist ein Schaltbild einer minimalen Prüfpegel-Detektion und Anwendung zum Aufstellen eines Endes mit niedriger Spannung einer Smart Prüfoperation.
  • Die verschiedenen Aspekte der vorliegenden Erfindung sind im Allgemeinen auf nichtflüchtige Speichersysteme anwendbar. Obwohl die nachstehende und auch oben dargelegte Beschreibung hauptsichtlich im Hinblick auf eine spezielle Flash-EEPROM Speicherausgestaltung dargestellt ist, ist die im Speicherarray speziell verwendete Bauart keine Beschränkung der vorliegenden Erfindung. Die Einzelheiten wie die Speicherelemente ausgelesen werden, beschrieben werden und Daten gespeichert werden fließen nicht in die Hauptaspekte der vorliegenden Erfindung mit ein und können die von jedem verschiedenen nicht-flüchtigen und flüchtigen Systemen verwendete sein, die ebenfalls sequentielle Prüfung durch Zustandsbedingungen verwenden, um die Zelle-für-Zelle Prüf/Programmier beendende Operation durchzuführen.
  • Gemäß einem Hauptaspekt verwendet die Erfindung Prüfergebnis-basierende dynamische Anpassung des Mehrzustands-Prüfbereichs, um eine zuverlässige, minimal zeitverschwendende Mehrzustand-Schreiboperation in sequentieller Prüf-Implementierung aufzustellen. Dies stellt einen Prüfalgorithmus mit einer höheren Geschwindigkeit zur Verfügung, während eine einwandfreie Prüfzuverlässigkeit für sequentielle Abtastung/Prüfung der Mehrzustand-Speicherung beizubehalten. Wenn zum Beispiel Mehrzustand-Speicherelemente von Zustand 0 sequentiell durch Zustände 1, 2 und so weiter programmiert werden, wird in einem frühen Stadium nur der Zustand 1 geprüft. Wenn die schnelleren Programmierzellen beginnen, am Zustand 1 zu prüfen, wird Zustand 2 zum Prüfzustandsbereich vielleicht mit einer Verzögerung einer Anzahl von Programmier/Prüf-Zyklen, die Parameter-basiert basiert sein können, hinzugefügt. Die anderen Zustände können in gleicher Weise zum Prüfsatz hinzugefügt werden, wenn die Programmierung zu höheren Zustandspegeln fortschreitet. Niedriger liegende Prüfpegel können entfernt werden, wenn der vollständige Satz von Speicherelementen, die auf diese zu besetzenden niedrigeren Pegel ausgerichtet sind, derart bestätigt werden. Somit verbessert diese auf Prüfergebnissen basierende dynamische Anpassung auf dem Dead Recognition Reduced Scan, Guard Banded Sliding Window Ansatz, der im Theorieteil beschriebenen wurde, durch Zulassen einer minimalen Anzahl von Prüfungen während eine genügende Prüfbereichabdeckung gesichert wird: Im Allgemeinen, je größer die Anzahl von Zuständen, desto größer ist die durch die vorliegende Erfindung erzielte Verbesserung.
  • Die verschiedenen Aspekte der vorliegenden Erfindung können in verschiedenen nicht-flüchtigen Speichern wie zum Beispiel diejenigen, die durch Bezugnahme im Theorieteil aufgenommen wurden, implementiert werden. Weitere Details der Abtastvorgänge werden in US-Patenten 6,538,922 und 6,621,739 sowie in US-Patentveröffentlichung 2003-0137877-AI dargelegt. Obwohl die beispielhafte Ausgestaltung im Hinblick auf Prüfen von Spannungswerten beschrieben wird, da die Schwellenspannung die relevante physikalische Größe eines Floating Gate Speicherzellentyps ist, kann die Prüfung auf Verwendung anderer Parameter basiert sein, die auf den Zustand des Speicherelements hinweisen, wie zum Beispiel ein Strom oder eine Frequenz. Eine Anzahl von Variationen werden in diesen Referenzen beschrieben. Darüber hinaus können die verschiedenen Aspekte der vorliegenden Erfindung mit der Verwendung von Lese- und Prüf-Rändern wie ferner in US-Patent 5,532,962 beschrieben wird, verwendet werden.
  • Die Grundidee des Prüfergebnis-basierten Ansatzes besteht darin, Informationen bereitzustellen und zu verwenden, die mit dem Programmierfortschritt der Programmie rung der Zellpopulation in Zusammenhang stehen, um dadurch dynamisch den geeigneten und zuverlässigen Bereich für die Vth (oder andere Parameter) des Scan Fensters aufzustellen. Beginnend vom gelöschten oder Grundzustand (Zustand 0) ist der erste Teil nutzbarer Information zu wissen, wenn das schnellste Programmier-Speicherelement oder Zelle des Satzes von Zellen, der programmiert wird, den nächsten niedrigsten Datenzustand (z.B. Zustand 1) Vth, das Ziel dieses Satzes (d.h. dem Konzept eines Peak Vth Detektors folgen) durchschreitet. Bis ein derartiges Überschreiten detektiert wird braucht daher nur ein einzelner Prüfdurchgang für diesen niedrigsten Pegel jeden Programmierpuls begleiten. Bis zu diesem Zeitpunkt wird der Daten-bedingte Aspekt der Vth Detektion vorzugsweise überwunden, das heißt die gesamte Zellenpopulation ist bei der Peak-Schwellen-Spannungsdetektion beteiligt und ist von deren entsprechenden Zielzuständen unabhängig. Mit anderen Worten, diese Information muss unabhängig vom Zielzustand dieser schnellsten Zelle bekannt sein. Sobald dies detektiert wird, wird die Daten-bedingte Prüfung und Sperrung für einen begrenzten Bereich von Datenzuständen oberhalb dieses Wertes durchgeführt (bspw. aufwärts bis zu einem Vth Schritt über diesem niedrigsten Pegel).
  • Beim Fortfahren des Verlaufs besteht ein weiterer Teil nutzbarer Information darin, die Ermittlung, dass alle auf diesen niedrigsten Datenzustand ausgerichteten Zellen in der Tat die Prüfung/Sperrung abgeschlossen haben. Sobald dies bekannt ist, wird die Prüfoperation für diesen niedrigsten Zustand nicht länger benötigt und kann gefahrlos entfernt werden. Dies signalisiert eine Verschiebung des Bodens des Vth Scanfensters aufwärts zum nächst höheren Vth Datenzustand, zum Beispiel wenn Zustände 1, 2, 3 überprüft werden, würde dies dann zu Zuständen 2, 3 verschieben. Diese Strategie könnte dann fortgesetzt werden, während jede Zellenpopulation, die auf den niedrigsten existierenden Zustand gerichtet ist, deren zugehörige Prüfung/Sperrung beendet. Dies stellt sowohl einen Weg zum zuverlässigen Entfernen von Zeitverschwendung zum Prüfen des unteren Endes des Prüfbereichs zur Verfügung, als auch ein Maß zum dynamischen Positionieren des Vth Fensterscans.
  • Ein möglicher Ansatz könnte diese niedrigere Zustand-Entfernungs-Bedingung ausschließlich beim Durchführen der Ermittlung verwenden, wann der höhere Prüfzustand zu erhöhen ist. Bei einem derartigen Ansatz besteht allerdings noch immer das Risiko, dass überhöhte Programmierzellen über das oben ermittelte hohe Bereichende des Vth Scans laufen und dadurch nicht die Gelegenheit haben, Sperren zur Verfügung zu stellen. Um dieses Risiko zu verringern, besteht eine Option darin, ein Guard-Band zum hohen Bereich des Vth-Scans hinzuzufügen und dadurch die Wahrscheinlichkeit solch eines Er eignisses zu verringern. Der Preis solch eines Ansatzes besteht allerdings in reduzierter Schreib-Performance aufgrund häufig unnötiger Prüfungen am hohen Vth Ende.
  • Der Weg um dieses Problem vollständig zu umgehen besteht darin, Informationen die in Zusammenhang mit der höchsten Vth Zelle stehen, zu einem gegebenen Zeitpunkt zur Verfügung zu stellen. Dies ist das oben eingeführte Konzept, nämlich Mittel zum Ermitteln, wann die schnellsten Programmierzellen der gesamten Zellenpopulation einen vorgegebenen Vth Prüfpegel unabhängig von deren Ziel-Daten (der Vth Peak-Detektor) überschreiten. Mit diesen Mitteln, die zu jeder Zeit auf den höchsten Vth Bereich, der überprüft wird (der sich über einen höheren Zustand als der erwartete Zustand erstrecken sollte, um in der Vth Verteilung der Population vorhanden zu sein) angewendet werden, wird derartiges Überschreiten signalisiert und das hohe Vth Prüfende wird zum nächst höheren Zustand erhöht. Diese Mittel werden dann an diesem neuen Pegel, der dem nächsten Puls folgt, wiederholt. (Wie oben ist zu beachten, dass falls die Zieldaten für diese schnellste Zelle oder Zellen mit dem oben genannten höchsten Prüfpegel übereinstimmen, werden diese ebenso gesperrt.) Auf diese Art und Weise wird ebenso mit dem unteren Ende des Vth Scanbereichs das obere Ende dieses Scanbereichs basierend auf Informationen der schnellsten Programmierzelle zu jeder Zeit (d.h. Schritt) in der Programmiersequenz adaptiv angepasst. Noch allgemeiner ist das Hinzufügen von höheren Zuständen zum Prüfscanfenster ein unabhängiger Vorgang vom Entfernen niedriger Zustandsüberprüfungen wenn diese niedrigeren Zustände vollständig sperren.
  • Auf den ersten Blick erscheint dieser Vth Detektor-Ansatz die Schreibgeschwindigkeit durch Erzwingen eines zusätzlichen Prüfens am hohen Ende, das absichtlich sein zugehöriges Vth-Ziel in der Mehrheit der Zeitpunkte nicht erreicht, zu verringern. Es trägt sich am Ende jedoch selbst, da die Alternative vom Blind Guard-Banding sehr wahrscheinlich nach wie vor Wider Window Enveloping vorschreibt, um zuverlässige Schreiboperationen für den bestehenden Sliding Window Ansatz zu gewährleisten.
  • Um den Betrieb noch weiter zu verbessern, besteht eine Alternative darin, den nächsten Zustand zum Prüfsatz nicht umgehend nach dem schnellsten Programmier-Zustandsprüfen beim folgenden Schritt hinzuzufügen. Es besteht keine Notwendigkeit zu drängen, um den nächst höheren Prüfpegel einzufügen, da durch die Bauform (z.B. durch die Steering Gate Spannungstreppe reguliert) es sogar für die schnellsten Programmierzellen häufig eine Anzahl von Programmierpulsen erfordern wird, um diesen nächst höheren Zustand zu erreichen. Falls es beispielsweise durch die Bauform vier Programmierpulse erfordert, um von einem Speicherzustand zu einem andern fortzuschreiten, könnte man sicher auf einen oder zwei Programmierpulse über dem Peak Detektions Punkt warten, bevor der nächste Prüfpegel hinzugefügt wird. Der aktuelle Verzögerungsumfang kann entweder festgelegt sein oder in einer beispielhaften Ausgestaltung eine Parameter-basierte Implementierung verwenden. Die Parameter können dann entsprechend Betriebsbedingungen, Alter des Bauelementes und anderen Faktoren festgelegt werden, um die Performance erhöhen, während noch immer ein ausreichender Sicherheitsrand ermöglicht wird. Für das im Folgenden beschriebene Simulationsbeispiel kann diese Verzögerung etwa 10% bei der Schreibgeschwindigkeit hinzufügen ohne dabei inakzeptable Risiken aufzunehmen.
  • Die gesamte Sequenz für diesen Ansatz geht zur Fertigstellung wie in bestehenden Implementierungen vor, wobei diese früher abschließt: [1] alle Zellen wurden gesperrt oder [2] am Ende der (Treppen) Programmiersequenz, in der ein Flag gesetzt wird, das diesen Zustand signalisiert. Eine Simulations-basierte Fähigkeit dieses Ansatzes für eine besondere Ausgestaltung ist im Folgenden ausführlich beschrieben, welche die ursprüngliche Schreibgeschwindigkeit ohne die Risiken der Prüfpuls-verringernden Schemata (d.h. „nicht-intelligent") gemäß des oben erwähnten Standes der Technik verdoppelt.
  • 4 ist ein Flussdiagramm für eine beispielhafte Ausgestaltung der vorliegenden Erfindung und beginnt mit Schritt 201, wo der Anteil des zu programmierenden Speichers ausgewählt wird. Dies wird eine oder mehrere der Schreibeinheiten entsprechend der Speicherstruktur sein, wobei die Schreibeinheit hier als Seite bezeichnet ist. Sobald die zu beschreibenden Speicherelemente ausgewählt wurden, durchlaufen diese typischerweise eine Daten-unabhängige pre-write Angleichungsphase.
  • Die Phase 210 ist ein Löschprozess, der optional eine Soft-Programmierung, Vorprogrammierung, Löschen, Soft-Löschen und/oder anderen Aufbereitungsschritte enthält (wie es für den Typ der Speichereinheit geeignet ist), um ausgewählte Speicherelemente, die für ein Schreiben von Daten bereit sind, zu erhalten. Die hier gezeigte beispielhafte Ausgestaltung beinhaltet Schritte 211, 213, 215 und 217.
  • Schritt 211 ist ein Pre-Programmier-Vorgang, der manchmal verwendet wird, wobei vor einem Löschen der adressierten Speicherelemente datenunabhängige Programmierung durch Anheben aller entsprechenden Wort-Leitungen vorgenommen wird, zum Beispiel um eine Speicherelementbeanspruchung auszugleichen und einen einheitlicheren Startpunkt zum Löschen zur Verfügung zu stellen. Schritt 213 ist der Löschvorgang, wie zum Beispiel diejenigen, die in den oben zitierten aufgenommenen Referenzen enthalten sind, der für den Typ Speichereinheit geeignet ist. Ein besonderes Beispiel ist der in US-Patent 5,095,344 beschriebene Smart Erase Prozess, der für ein Flash-EEPROM geeignet ist. Schritt 215 ist ein Soft-Programmieren oder ähnliche Operationen, die dazu entwickelt sind, um die gelöschten Speichereinheiten in einen einheitlicheren Startbereich für die aktuelle Schreibphase zu versetzen. Wenn eine der Speichereinheiten die Prüfung während des Löschens nicht besteht (oder während Soft-Programmierung, falls diese eine Prüfung bietet), können diese aus dem logischen Adressraum bei Schritt 217 ausgeblendet und durch eine korrekt arbeitende Speichereinheit ersetzt werden. Wieder variieren die tatsächlichen Schritte und deren Ausführung für Phase 210 und werden entsprechend des bestimmten Speichers und seiner Erfordernisse variieren.
  • An diesem Punkt ist der Speicher für die Schreibphase bereit. Die Schreibphase 220 verursachet eine Reihe schrittweiser Veränderungen an den Pegeln der Parameter, welche die Datenzustände der Speicherelemente repräsentieren. Das Ergebnis hiervon wird dann geprüft und wenn die Speicherelemente deren Zielzustände bestätigen, werden diese aus dem Prozess entfernt. Dieser Prozess ist im Wesentlichen wie der des Standes der Technik, aber unterscheidet sich vom Stand der Technik in Schritt 221.
  • Im Anschluss an die Festlegung des anfänglichen Prüfbereiches von Schritt 221 für die beispielhafte Ausgestaltung eines Ladungsspeicherelements (z.B. EEPROM oder Flash), beginnt das eigentliche Schreiben in Schritt 223 mit einem Programmierpuls. Der Puls kann wie aus dem Stand der Technik bekannt in der Länge, Spannungspegel oder beidem mit jedem Iterationsschritt der Schleife 220 variieren. Vor der ersten Prüfung können auch anfängliche Pulse vorhanden sein, wobei die jeweilige Anzahl eine parameter-basierte Implementierung sein. Schritt 225 tastet den Zustand jedes Elements des vorhergehenden Puls in Bezug auf die Prüfpegel im Zielbereich von Pegeln für die zu prüfenden Zustände ab, wobei anfänglich nur der niedrigste Programmierzustand umfasst wird. Bei jedem Prüfpegel wird der gemessene Parameter jedes Elements gegenüber seinem zugehörigen Daten-Zielwert verglichen. Auf diese Art und Weise wird jedes Element derart über dem Bereich der Prüfzustände, der für diese Wiederholung der Schleife 220 aufgestellt wurde, verglichen: Im Stand der Technik kann dies alle der möglichen Zustände umfassen oder kann aus einer Teilmenge bestehen, basierend auf der Anzahl von Schleifenwiederholungen unter Verwendung einer Look-Up Tabelle oder ähnlichen Implementierungen, wie im Theorieteil beschrieben wurde. Gemäß einem Hauptaspekt der vorliegenden Erfindung wird der Satz der Prüfpegel, der verwendet wird, in Schritt 221 durch die Prüfergebnisse der vorhergehenden Iteration ermittelt. Der anfängliche Prüfsatz von Zuständen kann nur als der niedrigste Zustand übernommen werden oder möglicher weise sogar keine Prüfungen beinhalten und kann auf einem einstellbaren Parameter basieren) (Obwohl in der vorliegenden Erörterung der Prüfsatz als eine exakte Teilmenge des gesamten Satzes von Zielwerten interpretiert wird, können Fälle auftreten, in denen die Teilmenge mit dem gesamten Satz übereinstimmt, insbesondere wenn die Anzahl der Mehrzustände gering ist.)
  • In Schritt 227 werden alle Elemente, die die Prüfungsbedingung in Bezug auf deren Zielzustände durchlaufen, gesperrt. Schritt 229 ermittelt, ob alle der Elemente, die programmiert wurden, mit ihren Zieldatenwerten überprüft wurden. Wenn ja, endet der Ablauf bei Schritt 231. Wenn nein, kehrt der Ablauf zu Schritt 221 zurück. Generell können einige Elemente beim Programmieren scheitern, wie in Schritt 229 ermittelt wurde, was zu einem Schreibfehler führt, wobei in diesem Falle die fehlerhaften Elemente oder Blöcke ausgeblendet werden können.
  • Schritt 221 ermittelt, welche Zustände basierend sowohl auf dem Ergebnis von Schritt 225 in der nächsten Prüfoperation als auch Schritt 227 in den Wertebereich aufgenommen werden, so dass die Sperrbedingung für eine derartige Ermittlung verwendet wird. Dies ist, wie oben beschrieben wurde, ein Hauptaspekt der vorliegenden Erfindung. Obwohl der Typ der Look-Up Tabelle der Ausgestaltung, der im Theorieteil mit Bezug auf 3 beschrieben wurde, könnte auch in dieser Phase ermitteln, welche Zustände in der nächsten Prüfoperation aufzunehmen sind. In diesem Fall würde die Ermittlung ausschließlich auf der momentane Wiederholung der Schleife im Schreibprozess 220 basieren, wobei es hier auf dem Prüfergebnis von Schritt 225 (und eventuell Schritt 227) basiert. In Abhängigkeit vom Ergebnis in Schritt 225, fügt Schritt 221 höhere zu überprüfende Zustände, wie es erforderlich ist, ein. Ähnlich, in Verbindung mit Schritt 227, entfernt dies die Überprüfungen niedriger Zustände während die Elemente auf diese niedrigen Zustände programmiert und gesperrt werden (oder wurden als defekte Zellen ermittelt und wurden ausgeblendet). Sobald der Prüfsatz wieder bei Schritt 221 aufgestellt ist, verläuft der Ablauf wieder zu Schritt 223.
  • 59 zeigen Ergebnisse der Simulation des "Smart Verify" Prozesses für die beispielhafte Ausgestaltung, wobei die Speichereinheit eine Speicherzelle ist, die 8 Zustände speichert. Eine besondere Ausgestaltung eines nicht-flüchtigen Speichers, in dem dieses Verfahren implementiert werden kann, ist in US-Patenten 5,712,180, 6,103,573, 6,426,893 und 6,512,263 beschrieben, auf die oben Bezug genommen wurde. Weitere Details einer beispielhaften Ausgestaltung folgen der Erörterung der Simulation.
  • Der "Smart-Verify" Algorithmus wurde simuliert, um eine Population von 1500 Zellen mit 8 Zuständen vom Grundzustand oder gelöschten (0) Zustand zu Ziel-Programmier-Datenzuständen (1, 2, 3, 4, 5, 6, 7) zu bewegen. Um diese Simulation zu vereinfachen, werden alle Spannungen in beliebigen Einheiten mit Ziel-Schwellspannungspegeln " Vth" für Zustände 1, 2, 3, 4, 5, 6, 7 angegeben, beziehungsweise auf Werte 2, 3, 4, 5, 6, 7, 8 gesetzt. Die Startverteilung "Vth" für die gesamte Population wurde auf eine Normverteilung mit einem σ-Wert 0,22 gesetzt, der bei –0,5 zentriert ist, was zu einer anfänglichen " Vth" Spanne von –1 bis +1/2 führt. Die durchschnittliche Programmiergeschwindigkeit pro Programmierschritt wurde auf 0,25 gesetzt, woraus resultiert, dass sich Zellen von einem Zustand in einen anderen Zustand in etwa 4 Schritten bewegen (und dadurch eine vollständig gesperrte Verteilung für jeden Programmierzustand ermöglichen, der dazu vorgesehen ist, um auf diesen einen Schrittwert eingeschränkt zu sein). Wie auch immer, um einige geringe Zelle-zu-Zelle Variation wiederzugeben, war eine Geschwindigkeitsspanne enthalten, die einer Normalverteilung mit einem σ gleich 0,015 folgt, die im Durchschnittsgeschwindigkeitswert 0,25 zentriert ist, was auf Geschwindigkeiten im Bereich von 0,2 bis 0,3 ΔVth pro Schritt hinausläuft. Während der gesamten Simulation blieb der einer Zelle zugewiesene Geschwindigkeitswert unverändert. Es sollte beachtet werden, dass die Annahme eines konstanten Geschwindigkeitswertes für eine vorgegebene Zelle nicht für alle Speichertechnologien zutrifft, was aber auf jeden Fall für die vorliegende Erfindung nicht erforderlich ist.
  • Wenn in der Praxis eine einheitlich ansteigende abgestufte Spannung (zum Beispiel auf das Steering Gate in der beispielhaften Speicherstruktur angewendet) für jeden folgenden Schritt der Programmierwellenform verwendet wird, wird die durchschnittliche Programmiergeschwindigkeit aller Zellen mehr oder weniger identisch sein. Diese Geschwindigkeit wird genau mit dem obigen Treppenprogrammierspannungsschritt übereinstimmen, sobald eine stationärere Zustandsprogrammierbedingung erreicht wurde, typischerweise innerhalb der ersten 6 Programmierpulse. Folglich ist die Verwendung einer künstlichen Geschwindigkeitsstreuungsbreite sehr wahrscheinlich eine ungünstigste Bedingung als die, die in der Praxis auftreten könnte. Trotz dessen stellt es für die Smart Verify Methodik, wie gesehen wird, kein Problem dar.
  • Die Zuweisung eines Anfangs Vth-Zieldatenzustands und Geschwindigkeit für jede der 15000 Zellenpopulation wurde mit Zufallszahlen-basierter Einmischung mit unabhängiger Einmischung für Vth Verteilung, Datenzustand und Geschwindigkeitszuweisungen durchgeführt. Die Anzahl der jedem der acht Zustände zugewiesenen Zellen war ungefähr dieselbe (durchschnittlich 188 Zellen pro Zustand). Die gesamte Population der zu pro grammierenden Zellen (d.h. Zustände 1, 2, 3, 4, 5, 6, 7, wobei 0 gesperrt ist) wurden dann durch die Programmprüfsequenz unter Verwendung der "Smart Verify" Sequenz und Kriterien bewegt. Die Ergebnisse dieser Simulation sind in 37 gezeigt.
  • In 5a ist die Anzahl der Prüfpulse oder Schritte (303) dargestellt, die auf die Zellenpopulation nach jedem Programmierschritt mit dem Smart Verify Algorithmus angewendet wurde. Außerdem sind das Minimum (Vt_min, 304) und Maximum(Vt_max, 305) Vths der noch nicht gesperrten Zellenpopulation gezeigt sowie die niedrigen (Vfy_lo, 301) und hohen (Vfy_hi, 302) Prüfspannungspegel, die im Anschluss an jedem Programmierschritt angewendet wurden. Der Ablauf beginnt mit einer Anzahl von Pulsen, um die Zellen in einen stationären Zustand zu bringen bevor die Schwellspannungen beginnen weiterzugehen. Die ersten wenigen Programmierpulse benötigen nur die niedrigste Zustandsprüfung, während der die Vth Verteilung zu diesem Prüfpunkt nach oben programmiert wird. Danach steigt die Anzahl der Prüfungen an, verläuft bei etwa dem zweiten bis dritten Prüfpulspegel auf einem Plateau und fällt nach unten ab in Richtung der einen Prüfbedingung während die letzten wenigen Zustände auf deren zugehörige Ziele programmiert werden (mit allen geprüften und gesperrten Zuständen ungefähr bei Programmierpuls 37). Überall in der Sequenz werden die niedrigen und hohen Prüfgrenzen der sequentiellen Prüfscans adaptiv angepasst (basierend auf der alle-niedrigsten-Zustandszellen Prüf/Sperrbedingung beziehungsweise das Vth Peak-Detektions-Kriterium), um intelligent und zuverlässig den geeigneten, optimalen Datenzustands Vth Bereich durch das intelligente Prüflogikkriterium zu umfassen.
  • Der Nutzen einer derartigen intelligenten Prüfscan Methodik ist einleuchtend, wenn die Komplexität betrachtet wird, was stattfindet. Zum Beispiel, sogar obwohl zwei Prüfungen für die meiste Zeit ausreichend sind, besteht auch der Bedarf, manchmal drei Prüfungen und erfordert gelegentlich auch möglicherweise sogar vier Prüfpegel ohne ein Risiko eines Schreibfehlers. Darüber hinaus ist es unwahrscheinlich, dass eine eng kontrollierte nicht-adaptive Dead Reckoning Implementierung präzise dem optimalen Übergängen von Vfy_lo und Vfy_hi (d.h. Sliding Verify Window) folgt ohne in Schwierigkeiten zu geraten. Um folglich eine zuverlässige Schreiboperation zu sichern, würde der nicht-adaptive Prüffensterbereich, der mit Bezug auf 3 beschrieben wurde, müsste wahrscheinlich zu 4 und möglicherweise 5 Prüfpegeln pro Programmierpuls Guard-Banded werden, was im Wesentlichen seine Performancevorteile reduziert. Des Weitern ist die Fähigkeit, energisch mit den Fähigkeiten des adaptiven Ansatzes überein zustimmen, um weniger Prüfungen in den anfänglichen und letzen Anteilen der Programmiersequenz zu verwenden (fallen bis zum einen Prüfpegel) schwierig, um eine nicht-adaptive Implementierung vorzusehen.
  • Die Ausgestaltung von 5a umfasst eine Verzögerung von zwei Programmierschritten, die der schnellsten Programmierzellen-Prüfung am bestehenden überprüften maximalen Zustand folgt, bevor der nächste Zustand zum Prüfsatz hinzugefügt wird. Zum Beispiel beginnt beim Programmierschritt 5 die Vt_max Linie 305 sich zu bewegen und überschreitet die "Spannung" = 1 Linie von Zustand 1 bei Schritt 6. Allerdings wird nur der Zustand 1 für weitere zwei Schritte überprüft, wobei der Zustand 2 zum Prüfsatz bei Schritt 9 hinzugefügt wird, wie durch die Anzahl der Prüfungen (#Vfy Pulse, 303) gezeigt, die sich zu 2 an diesem Punkt aufwärts bewegt. Der gesamte Prozess ist nach Schritt 37 einschließlich der anfänglichen 5 Programmierschritte beendet.
  • 5b ist ähnlich zu 5a, aber für die Ausgestaltung ohne die Verzögerung vor Hinzufügen des Zustands zum Prüfsatz und ohne die anfänglichen 5 Programmierschritte. Zum Beispiel wird nachdem die Vt_max Line 305 die "Spannung" = 1 Linie von Zustand 1 bei Schritt 2 überschreitet, wird der Zustand 2 zum nächsten Prüfsatz ohne Verzögerung hinzugefügt. In diesem Fall sind für die meisten der Prozesse drei Prüfungen pro Schritt mit gelegentlichem Bedarf von vier Prüfungen vorhanden. Dieser Prozess ist nicht so schnell wie der von 5a, der eine Summe von 100 Prüfungen anstelle von 83 benötigt (falls die anfänglichen vier Pulse von 5a zum Vergleichen vernachlässigt werden). Die Ausgestaltung von 5b wird weiter mit Bezug auf 47 besprochen.
  • 6 zeigt die Häufigkeitsverteilung für den Bereich der Anzahl von Prüfpulsen, der in der Ausgestaltung von 5b verwendet wird. Während die Prüf-3 Bedingung überwiegt, d.h. während der Hälfte der Zeit, tritt die Möglichkeit, auf 2 Zustände abzufallen etwa in einem Viertel der Zeit auf, während die Notwendigkeit für 4 Prüfungen steigt. Im Mittel sind ungefähr 2,7 Prüfungen pro Programmierpuls notwendig, eine Zahl, die unter 2,5 für die Ausgestaltung von 5a sinkt. In der Annahme, dass die erforderliche Zeit zum Durchführen einer Programmieroperation (oder Schrittes) mit der für einen Prüfvorgang vergleichbar ist, dann ist im Beispiel von 5b der Smart Verify Algorithmus in der Lage, die Gesamtprogrammierzeit auf 46% der Zeit sicher zu reduzieren, die ein vollständiger 7-Schritt erfordern würde. Dadurch verdoppelt sich ungefähr die ursprüngliche Programmiergeschwindigkeit.
  • 7 zeigt sowohl eine Momentaufnahme der resultierenden simulierten Vth Verteilungen ("Vt") für jeden der sieben Programmierzustände im Anschluss an deren Sper rung als auch die gelöschte oder 0-Zustandsverteilung zu Beginn für die Ausgestaltung von 5b. Die Verteilungen sind halbwegs gut auf die erwartete willkürliche Einheit 0,25 des Vth-Bereichs, wie es vom Algorithmus vorgeschrieben ist, beschränkt.
  • 8 zeigt eine Momentaufnahme der resultierenden simulierten Vth-Verteilungen für die Zellpopulation, die bei Programmierschritten gerade vor Sperren aller der auf jeden der sieben Programmierzustände gerichteten Zellen noch nicht gesperrt sind (sowie die Anfangsverteilung, die dem ersten Programmierpuls folgt). Dies zeigt, wie gut sich der Programmiervorgang für die Zellenpopulation während der Programmiersequenz verhält. 601 stellt die anfängliche Verteilung dar. 603 entspricht der Verteilung von Zellen nach Programmierpuls acht, gerade bevor alle Zellen mit dem Zielzustand 1 gesperrt werden. Dies enthält sowohl Zellen mit Zuständen, deren endgültiger Zustand der Zustand 1 ist, aber noch nicht gesperrt sind, als auch die, die auf deren Weg zu höheren Zuständen gerade durchlaufen. Dies erklärt die Anzahl von Zellen mit Pegeln gerade über dem für den Zustand 1. Ähnlich korrespondiert 605 mit Programmierpuls 13 gerade bevor alle Zellen mit Zustand 2 sperren und so weiter für die nachfolgenden Zustände.
  • 9 zeigt die Anzahl von noch auf deren entsprechenden Prüf/Sperr Bedingungen zu programmierenden Zellen als eine Funktion der Anzahl kumulierter Programmierpulse. Horizontale Linien sind überlagert, die auf die Anzahl der Zellen hindeutet, die sich im bekannten Bereich von Datenzuständen befinden. Linie 701 entspricht der Anzahl von Zellen mit Daten 1, 2, 3, 4, 5, 6 oder 7, Linie 702 entspricht der Anzahl von Zellen mit Daten 2, 3, 4, 5, 6 oder 7 und so weiter bis Linie 707, welche die Anzahl von Zellen mit Datum 7 darstellt. Nach dem ersten Puls ist die Kurve flach bis die Zellen mit Datum 1 beginnen zu sperren, nachdem diese ziemlich linear abfällt bis diese abflacht, da die nachzügelnden Zellen im höchsten Zustand schließlich sperren. Wie erwartet sind im Mittel die nachfolgenden 4 Programmierschritte nötig, um Programmieren des nächst höheren Zustands zu beenden, von dem Punkt aus, an dem das Programmieren des letzten Zustands gerade beendet war. Wie auch immer ist zu beachten, dass die Schnittpunkte der Kurve mit diesen horizontalen Linien, obwohl sich diese nahe daran befinden, nicht identisch mit dem geradlinigen Verlauf der Linie übereinstimmen, das durch die Knicke in der ansonsten linearen Kurve gezeigt ist. Dies ist die Auswirkung der Programmiergeschwindigkeitsvariation von den schnellsten und langsamsten Programmierzellen im Gegensatz zum sich statistisch gut verhaltenden Verlauf der üblichen Population. Dies betont erneut die Wichtigkeit des adaptiven Smart Verify Ansatzes.
  • Wie die Simulation demonstriert ist der Smart Verify Ansatz effektiv und verbessert die Performance des Bauelementes, während ebenso eine zuverlässige Programmier/Prüf/Sperr Operation sicherzustellen. Dies wird durch Bereitstellen von "intelligenten" Mitteln zum Minimieren der Anzahl von sequentiellen Prüfoperationen für jeden Programmier/Prüf/Sperr-Schritt der Schreibsequenz durchgeführt. Durch Beobachtung der Bewegung der Population um beide zu detektieren, die schnellste Programmierzelle durch Daten-unabhängige Prüfung am höchsten Datenzustandspegel, die im Prüfscanbereich enthalten ist, als auch die alle-Zellen-Sperr-Bedingung für den niedrigsten enthaltenden Datenzustand in diesem Scanbereich (dabei die langsamsten Programmierzellen zu umschließen) können die niedrigen und hohen Vth Scan Enden des Vth Scanfensters mit minimaler Zeitverschwendung durch zusätzliche nicht benötigte Prüfoperationen zuverlässig aufgestellt werden.
  • In der Ausgestaltung von 5b ist die ursprüngliche Schreibperformance im Vergleich zum Full Seven Step Verify Anzatz verdoppelt, sogar mit einer weiteren Verbesserung für die Ausgestaltung von 5a, welche die Verzögerung vor Einführen des nächsten Prüfzustands in der Programmiersequenz zum Prüfsatz enthält. Diese Verbesserungen können in Speichersystemen realisiert werden, deren Programmierung auf einem iterativen Prozess von schrittweisem Verschieben der Zustände von einem Satz von Speicherelementen, die sich parallel in Betrieb befinden, gefolgt von Prüfen der Ergebnisse dieser Verschiebung (oder versuchte Verschiebung falls ein Element defekt ist) durch paralleles Abtasten eines Parameters, der auf jeden Zustand von jedem Element hinweist, basieren.
  • Eine beispielhafte Ausgestaltung einer Implementation der Smart Verify Technik wird unter Bezugnahme auf 1013 beschrieben. Diese illustrative Ausgestaltung beschreibt eine schematische Implementierung der Smart Verify Operation einer 3-Bit-Speicherelement Technik (d.h. 8 Zustände mit 7-Prüf Sequenzen). Für diese Ausgestaltung ist das Speicherelement oder die Speicherzelle von dem Typ, für die kontrollierte, inkrementell ansteigende Speicherpegel, die zum kontrollierten Mehrzustand-Schreiben benötigt werden, durch inkrementelles Ansteigen der Steering Gate Spannung mit jedem aufeinander folgendem Programmierpuls erzielt werden. Darüber hinaus wird Lesen von Mehrzustand-Speicherzellen durch sequentielles Scannen dieses Steering Gates durch eine ansteigende Progression von 7 Steering Gate Spannungspegeln erzielt (entsprechend den für Mehrzustands-Daten-Programmierung verwendeten 7 Prüfspannungspegeln).
  • 10 illustriert schematisch eine Ausgestaltung der Programmier-Prüf- und Sperr-Schaltung für ein einzelnes Speicherelement 1001 (sperrender Abschluss der Programmierung dieses Elementes für den Rest dieser Programmiersession) Die Struktur von 10 ist ähnlich zu der im Stand der Technik gefundenen zur Verwendung mit einer wie im Theorieteil vorkommenden Ausgestaltung mit Bezug auf 1 sowie 2 und wird hier als Referenz erörtert, wenn der Smart Verify Fall erörtert wird. Obwohl das Speicherelement 1001 in diesem Beispiel ein Floating Gate Transistor ist, können andere Formen von Speicherelementen wie in Folgenden erörtert wird verwendet werden. Im Fall von n derartiger Speicherelemente, die parallel programmiert werden (wobei n typischerweise von Hunderte bis Tausende reichen kann), existieren entsprechend n derartiger Programmier-Prüf-Schaltungen, die alle gleichzeitig arbeiten. Aus diesen aus n Schaltungen hervorgehende Informationen bilden die Grundlage für die Smart Verify Operation.
  • Bei detaillierter Betrachtung der Prüf/Sperr-Schaltung von 10 enthält die Schaltung sowohl Komponenten, die bei allen n Schaltungen gemeinsam sind, die durch die doppelt linierte Rahmen (z.B. ZÄHLER 1009, RESET 1021 und die Referenzspannung Ref) hervorgehoben sind, als auch Komponenten, die in jeder Schaltung nachgebildet sind (z.B. KOMPARATOR 1011, ZU SCHREIBENDER DATENZUSTAND Register 1019 und verschiedene Logikelemente). Während eines Programmier-Prüfens ist jedes Speicherelement 1001 mit einem zugehörigen Leseverstärker KOMPARATOR 1011 verbunden, der den Leitungspegel der Zelle mit einer Referenzquelle Ref. vergleicht. In dieser Ausgestaltung besteht die Aktion dieses KOMPARATOR 1011 darin, einen logischen Pegel "1" auszugeben wann immer die Ausgabe von ABTAST PARAMETER TREIBER 1003 (z.B. Bereitstellen der Steering Gate Spannungsstärke B, 103 von 2) mit dem Steering Gate des Speicherelements verbunden ist, kleiner als der im Speicher gespeicherten Speicherzustandsparameter ist (z.B. Zelle Vth wie durch 101 in 2 beispielhaft erläutert). (In 10 entsprechen die Wellenformen an Knoten A, B, C beziehungsweise D beiden Ausgaben der Elemente 1001, 1003, 1005 und 1007 und die als 101, 103, 105 beziehungsweise in 2 als 107 bezeichneten Elemente) Andernfalls, wann immer die Ausgabe B von ABTAST PARAMETER TREIBER 1003 größer als der gespeicherte Speicherzustandsparameter des Elements ist, gibt der KOMPARATOR einen logischen Pegel "0" aus.
  • Die Steigerung der Wellenform vom ABTAST PARAMETER TREIBER 1003 wird durch den ZÄHLER 1009 kontrolliert, der von 1 bis 7 zählt, um die sequentiellen 7 Prüfpulse an Knoten B zu generieren wie durch Wellenform 103 in 2 erläutert. Jede Zelle kann einen von acht möglichen Datenzuständen speichern {0, 1, 2, 3, 4, 5, 6, 7}, wobei der für jede Zelle spezifische in ein zugehöriges ZU SCHREIBENDER DATENZUSTAND Register 1019 geladen wird. Zustand 0 wird durch eine Daten-unabhängige Standard-Operation (z.B. Sektorlöschen) auf alle zu beschreibenden Zellen, die Phase 210 in 4 entsprechen, aufgestellt. Wenn das Ziel-Datum für den zugehörigen Zustand 0 verbleiben soll, wird SPERREN für dieses Speicherelement sofort gesetzt (Details sind nicht gezeigt) und es findet keine Programmierung dieses Elementes statt. Datenzustände 1, 2, 3, 4, 5, 6 und 7 bezeichnen die sieben programmierbaren Zustände und entsprechen den zum ZÄHLER 1009 zugehörigen Prüfpegeln 1, 2, 3, 4, 5, 6 beziehungsweise 7, die während der Programmierprüfung verwendet werden, um diese Zustände aufzustellen. Während die Programmierung fortschreitet, werden die Speicherelementparameter (z.B. Speicherzelle Vth) sequentiell und kontrollierbar durch Zustände 1, 2, 3 bewegt, bis diese durch die Prüf/Sperr-Operation beendet wird.
  • Die Funktion der drei XNOR Gates 101 5a–c (entsprechend dem 3-Bit Äquivalent der acht Datenzustände), die in die 4-Input NAND Gate 1017 Daten eingeben, werden alle zwischen den ZÄHLER 1009 und das ZU SCHREIBENDER DATENZUSTAND Register 1019 eingeschoben, ist die Bedingung abzufangen, wenn eine Übereinstimmung zwischen dem Ziel ZU SCHREIBENDER DATENZUSTAND und dem momentan Pegel, der überprüft wird (durch den ABTAST PARAMETER TREIBER 1003), auftritt während der durch den Wert des ZÄHLER 1009 verwaltet wird. Der vierte Leg des NAND stammt von der Ausgabe des KOMPARATOR 1011, der durch eine positiv pulsende PRÜFABTAST Schaltung 1005 gesperrt wird, die einen zeitsynchronisierten Puls der Ausgabe D von KOMPARATOR vom AND Gate 1007 zur Verfügung stellt, wie durch 107 in 2 beispielhaft erläutert. Die Ausgabe des 4-input NAND Gate 1017 wird in ein Leg (das SET LEG genannt) des SPERREN SR Latch 1013 eingespeist (hier in ein Cross-Coupled NAND Gate basiertes Latch). Zu Beginn einer Datenprogrammiersession in den adressierten Satz von Speichereinheiten werden alle SPERREN SR Latches 1013 auf ein logisches "0" gesetzt. Dies wird durch Anwenden eines RESET Pulses 1021 (in dieser Implementierung zum logischem Pegel "0" abwärts pulsen, andernfalls beim logischen Pegel "1" verbleiben) an das andere Leg (RESET LEG genannt) aller dieser SR Latches erreicht, wobei alle den Speicherelementen zugehörigen SPERREN auf eine logische "0" initialisiert werden. Nach Empfangen des negativ verlaufenden "0" Puls vom 4-Input NAND Gate 1417 durch die oben beschriebenen Bedingungen kippt das zugehörige SR Latch SPERREN zu einer logischen "1". Diese Bedingung beendet dann alles weitere Programmieren des zugehörigen Speicherelementes für die Dauer dieser Datenprogrammiersession.
  • Als Beispiel beschreibt das Folgende den Verlauf des Programmieren/Prüfens, was zu einem Sperren für eine Speicherzelle führt, dessen Ziel-Datenzustand Zustand 3 ist, wie in 2 gezeigt. Anfangs ist die Zelle auf Datenzustand 0 (z.B. gelöscht) gesetzt und ihr zugehöriges SPERREN Latch 1013 ist durch das RESET Signal 1021 auf ein logisches "0" gesetzt. Beginnend mit einem anfänglichen Programmierpegelpuls (z.B. Steering oder Controg Gate Spannung), empfängt diese eine Reihe von schrittweise ansteigenden Pegeln von Programmierpulsen, wobei jeder Puls vom Pegel-7 Prüfpulssequenz gefolgt ist, wie in 1 dargestellt. Für die ersten wenigen Programmierpulse sind die abgetasteten Ergebnisse dieser Prüfsequenz (wie zum Beispiel 107 in 2 gezeigt) alle 0 (d.h. kein positiver Puls). Mit zusätzlichen Programmierpulsen, wenn der Zustand der Zelle über den Prüfpegel 1 vorangetrieben wird (d.h. in Datenzustand 1) ist das abgetastete Ergebnis während des Abtast-Prüfpegels 1 ein einzelner „1" Puls. Dies triggert nicht die Sperrbedingung, da während dieser Zeit die Prüfbedingung (d.h. Wert von ZÄHLER 1009 gleich 1) nicht mit dem Ziel-Datenzustand übereinstimmt (d.h. ZU SCHREIBENDER DATENZUSTAND 1019 gleich 3). Wenn die Übereinstimmung bei Prüfpuls 3 auftritt, ist das abgetastete Ergebnis an diesem Punkt in der Sequenz "0", was Setzen der Bedingung SPERREN verhindert.
  • Weitere Programmierpulse treiben den Zustand der Zelle über den Prüfpegel 2 hinaus (d.h. Programmieren in Datenzustand 2), was zu einem abgetasteten Ergebnis von zwei sequentiellen logischen „1" Pulsen führt, die auf Abtastpunkte Prüf 1 und Prüf 2 synchronisiert sind. Erneut triggert dies nicht Sperren, da die erforderliche Übereinstimmungsbedingungen nicht erfüllt werden. Dies trifft nur nach der Anwendung von weiteren Programmierpulsen zu, die den Zellenzustand gerade über den Prüfpegel 3 treiben (d.h. Programmieren in Datenzustand 3), so dass die SPERREN Bedingung auf den logischen Pegel „1" gesetzt ist, was die die Anwendung weiterer Programmierpulse auf diese Zelle beendet. Dies geschieht wie folgt: Die abgetastete Prüf-Ausgabesequenz enthält nun die sequentiellen logischen "1" Pulse, die mit den Prüf 1, Prüf 2 und Prüf 3 Abtastpunkten synchronisiert ist. Während dieses dritten Prüf-Abtasten werden die Bedingungen von Prüfzustand (d.h. ZÄHLER 1009 Wert) und Zieldatenzustand erfüllt, was es ermöglicht, diesen logischen Puls „1" durch die 4-Input NAND 1017 und in das Set Leg des SR SPERREN Latch 1013 zu übertragen.
  • Es ist zu beachten, dass im Ereignis eines abweichenden/überhöhten Zellenprogrammierereignisses, das zu einem Zustandsüberschwingen führt (z.B. im obigen Beispiel anstelle schrittweise auf Zustand 3 zu programmieren diesen plötzlich übersteigt und auf Zustand 4 springt) wird das obige Sperren noch erfolgen. Dies liegt daran, dass die erfor derliche KOMPARATOR 1011 Bedingung von Zelle Vth, die den Prüfpegel überschreitet, weiterhin während der Prüfabtastung 3 erfüllt wird und dadurch die Sperrung triggert. Infolgedessen findet keine weitere Programmierung statt, was das Ausmaß von Schreibfehlern begrenzt. Falls Sperren in einer derartigen Situation nicht stattfindet, würde die Zelle bis zum Ende der Programmiersession weiterhin Programmierpulse empfangen, was diese potentiell auf Vth Pegel bringt, die weit über dem für den höchsten Datenzustand 7 erlaubten liegen, was zu einem potentiell schwerwiegenden Fehlerausmaß führt.
  • Nicht gezeigt ist hier das Ende-der-Programmiersession-Implementierung. Dies ist durch Ausgestaltungen implementiert, die das Frühere von folgendem signalisieren: [1] alle Adressen des Speicherelementes haben SPERREN empfangen oder [2] eine vorgegebene maximale Programmierzahl wurde erreicht. Weitere Details des Prüf/Sperr-Verlaufs können in US-Patent 5,172,338 und in anderen oben zitierten Referenzen gefunden werden.
  • Das Ziel des Smart Verify ist es, dynamisch die Anzahl verwendeter Prüfungen an jedem Punkt im Programmierverlauf zu reduzieren, von der vollständigen 7-Satz Sequenz bis zur minimal erforderlichen für zuverlässige Schreiboperationen. 11 veranschaulicht einen derartigen minimalen Satz in einer Peak Prüfpegel Ausgestaltung des Smart Verify Konzeptes, wobei nur Prüfpulse 3, 4 und 5 ausgegeben werden. Dies wäre beispielsweise die Situation bei Programmierschritt 15 der in 5b gezeigten Simulation. Dies bestimmt dynamisch einen zuverlässigen maximalen und minimalen Prüfpegel aufzustellen, die für jeden wesentlichen Punkt im Programmierverlauf benötigt werden (z.B. 5 beziehungsweise 3 im Falle von 11). Wellenformen 1101, 1103, 1105 und 1107 entsprechen Signalen 101, 103, 105 und 107 von 2 und 2, beziehungsweise repräsentieren erneut die Signale zu den Zellenparametern von Speicherelement 1001 (Knoten A), die Ausgabe von ABTAST PARAMETER TREIBER 1003 (Knoten B), die Ausgabe der Prüfabtastung 1005 (Knoten C) und die Ausgabe von AND Gate 1007 (Knoten D von 10).
  • 12 stellt eine bevorzugte Ausgestaltung zum Implementieren des maximalen oder Peak Prüfpegel schematisch dar, wenn n Speicherelemente parallel programmiert werden. Sie enthält ein n-Input OR Gate 1211 mit Eingängen 1207, die von den zugehörigen D Knoten von jeder der n Prüf/Sperr-Schaltungen, wie in 10 dargestellt, als Ausgabe von AND Gate 1007 kommen. Wie oben beschrieben wird jeder D Knoten vorübergehend auf den logischen Pegel "1" pulsen (von der PRÜFABTASTUNG abgetastet, 1005 10) wann immer der Zustand des Speicherelements (z.B. Zellen Vth Parameter) den verwendeten Prüfpegel überschreitet (d.h. ABTASTPARAMETER, der Wert an Knoten B von 10 und in 11 als 1103 dargestellt). Das n-Input OR Gate 1211 wird ebenfalls auf den logischen Pegel "1" pulsen wann immer eine oder mehrere der adressierten Speicherzellen diese Programmierpegelanforderung (z.B. Zelle Vth) erfüllt. Diese Pulsbedingung wird aufgestellt, wenn der durch ZÄHLER 1249 verwaltete momentane Prüfpegel dem bestehenden Wert von MAX PRÜFPEGEL "ZÄHLER" REGISTER 1223 entspricht, wie durch eine exklusive OR Schaltfunktion in den drei XNORs 1251a–c aufgestellt, und dadurch ermöglicht, dass der Puls AND Gate 1253 durchläuft. Dieser Puls wird dann dem funktionalen Block NEUER MAX PRÜFPEGEL "ZÄHLER" 1235 zugeführt, um den neuen Peak Prüfpegel zu seinem nächsten verfügbaren Wert vorzubringen.
  • Der Gedanke dieser Implementierung besteht darin, dass sobald ein oder mehrere Speicherelemente den bestehenden Peak Prüfpegel überschreiten, mit dem diese gescannt werden (wie im MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 gespeichert) wird die Prüfsequenz, die sofort dem nächsten Programmierpuls folgt, von nun an zu seinem nächsten verfügbaren Prüfpegel scannen. Dieser Vorgang ist durch den Ablauf der gestrichelten Linie direkt in den LADE NEUE MAX PRÜF ZAHL Schaltblock 1231 dargestellt, der sofort den NEUER MAX PRÜFPEGEL "ZÄHLER" in das MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 lädt. Von diesem Punkt an, unter der kontrollierten Pulsprogrammieroperation, wird es eine Anzahl von nachfolgenden Programmierpulsen erfordern, bevor ein oder mehrere der Speicherelemente ausreichend programmieren, um erneut diesen neuen Peak Prüfpegel zu überschreiten. Bis letzteres Ereignis auftritt wird das n-Input OR Gate 1211 eine logische "0" aufrechterhalten und dadurch diesen derzeitigen maximalen Prüfpegel fixieren. Wenn dieses letztere Ereignis schließlich auftritt (z.B. nach zusätzlichen vier bis fünf Programmierpulsen) wird das n-Input OR Gate 1211 erneut einen logischen "1" Puls ausgeben und dadurch den maximalen Prüfpegel zum nächst höheren Pegel erhöhen.
  • Es ist zu beachten, dass, wenn zu irgendeiner Zeit der maximale Prüfpegel versucht, das obere Ende des Prüfbereichs (d.h. MAXIMAL ERLAUBT in Schaltungsblock 1235) zu überschreiten, ist kein weiteres Erhöhen zulässig. Der maximale Prüfpegel bleibt dann am oberen Ende des Prüfbereichs (d.h. Prüfpegel 7 in dieser beispielhaften 3-Bit Ausgestaltung) festgehalten.
  • Eine alternative Implementierung zum momentanen Inkrementierungs-Ansatz ist in 12 im alternativen Zweig dargestellt, der direkt unter dem NEUER MAX PRÜFPEGEL "ZÄHLER" Schaltungsblock 1235 hervorgeht und aus Elementen 1241, 1243, 1245 und 1247 besteht. Sobald diese Zählung eine vorgeschriebenen "Verzögerungszahl" (z.B. Verzögerungszahl 3) erreicht hat, wird eine weitere derartige Zählung von Programmierpulsen über funktionale Blöcke 1245 und 1247 gestoppt und der NEUER MAX PRÜFPEGEL "ZÄHLER" wird in das MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 von funktionalem Block 1231 geladen. Der Gedanke dieser alternativen Implementierung besteht darin, die Verwendung des nächst höheren Prüfpegels für wenige Programmierpulse zu verzögern, da es mehr als diese wenigen Pulse für die Speicherelemente beansprucht und diesen nächst höheren Prüfpegel zu überschreiten und dadurch zusätzliche Zeit einspart und weiter die Schreiboperation beschleunigt. Der in diesen Blöcken (1235, 1241, 1243, 1245 und 1247) dargestellt Prozess kann alternativ durch Software oder Firmware implementiert sein, obwohl eine Hardwareimplementierung im Speicherelement eher bevorzugt wird als eine von externen Off-Chip Controls abhängige.
  • Der "Verzögerungszahl" Wert wird vorzugsweise eher durch einen einstellbaren Parameter implementiert, wie zuvor erläutert, als einen fixierten Wert zu haben. In einer Variation könnte der "Verzögerungszahl" Wert durch einen Kontroller überwacht und dynamisch auf Bauelementverhalten basierend verändert werden, zum Beispiel als Antort auf Programmier- oder Lesefehler oder Betriebsbedingungen wie zum Beispiel Temperatur- oder Änderungen der Spannungsversorgung.
  • Zu Beginn einer vollständigen Datenprogrammieroperation wird der Peak Prüfpegel auf den mit dem ersten Zustand in Zusammenhang stehende eingestellt (d.h. MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 wird auf 1 gesetzt). Dies ist zulässig, da der eingestellte Zustand für das adressierte Speicherelement vor dieser Programmieroperation Zustand 0 ist (z.B. mit einer Löschoperation) und es wird eine Anzahl von Programmierpulsen erfordern, bevor eine dieser Zellen den mit dem ersten Zustand in Zusammenhang stehenden Prüfpegel erreicht.
  • 13 stellt schematisch eine bevorzugte Ausgestaltung zur Implementierung des minimalen Prüfpegels dar, wenn n Speicherelemente parallel programmiert werden. Es sind n Speicherblöcke (1301-1 bis 1301-n) dargestellt, die parallel arbeiten; ein Block für jedes der n gleichzeitig adressierten Speicherelemente. Jeder dieser Schaltungsblöcke enthält vorhandene Schaltungsteile der in 10 beschriebenen zugehörigen n Prüf/Sperr-Schaltungen. Wie in 10 sind die Schaltungsblöcke, die mit allen n Schaltungen gemeinsam sind, durch die doppelt linierten Rahmen hervorgehoben (z.B. das MIN PRÜFPEGEL "ZÄHLER" REGISTER 1305). Jeder dieser Schaltungsblöcke 1301-i (i KLEINERGLEICH < i KLEINERGLEICH n) enthält eine vergleichende Schaltung (verglei che ZU SCHREIBENDER DATENZUSTAND 1019 mit MIN PRÜFPEGEL), die aus einer exklusiv- oder Schaltungsfunktion besteht, die für die beispielhafte 3-Bit Implementierung aus drei XNOR 1331a–c Gates bebildet ist, die in ein 3-Input NAND Gate 1333 einspeisen.
  • Der Zweck dieser Vergleichsschaltung besteht darin, den Zustand alle Speicherelemente zu ignorieren, deren Ziel-Daten nicht mit dem derzeitig in Zusammenhang stehenden minimalen Prüfpegel übereinstimmen. Diese führt das durch Ausgeben eines logischen Pegels "1" am niedrigeren Eingabe-Leg des 2-Input OR Gate 1339 aus. Dies wird dann zum n + 1 Input AND Gate 1313 übertragen und hat dadurch keine Auswirkung auf den Entscheidungsprozess.
  • Im Falle einer Übereinstimmung (d.h. Ziel-Daten des Speicherelementes stimmen mit diesem zugehörigen minimalen Prüfpegel überein) bleibt das Ausgabeergebnis des 2-Input OR Gate 1339 mit dem logischen Pegel, der an seinem oberen Eingabe-Leg eingereicht wird, das vom funktionalen Schaltungsblock SPERREN 1303 eingespeist wird. Bei einer Übereinstimmung, falls der zugehörige Ziel-Zustand des Speicherelements in der Tat erreicht wurde, wie durch das SPERREN 1303 gekennzeichnet auf eine logische "1" gesetzt, wird das übertragene Ergebnis des 2-Input OR Gate 1339 eine logische "1". Andernfalls bleibt das übertragene Ergebnis von diesem OR Gate logisch "0". Was diese Schaltung ausführt, besteht darin, dass jedes Speicherelement, dessen Ziel-Daten mit dem momentanen minimalen Prüfpegel übereinstimmen und noch nicht gesperrt wurden zu isolieren und dabei eine logische "0" zum n + 1 Input Gate 1313 zu übertragen. Falls ein derartiges Speicherelement sogar existiert, führt dies zu einem abgetasteten logischen "0" am Output des n + 1 Input AND Gate 1313. Nur wenn alle derartigen Zellen gesperrt wurden, wird ein logischer "1" Abtastpuls vom n + 1 Input AND Gate 1313 ausgegeben. Abtasten ist durch den funktionalen Block PRÜFABTASTUNG 1005 implementiert, der ebenso in AND Gate 1313 einspeist.
  • Das Output von diesem n + 1 Input AND Gate 1313 wird in eine Reihe von zweifunktionalen Schaltungsblöcken eingespeist. Der erste Schaltungsblock 1313, als NEUER MIN PRÜFPEGEL "ZÄHLER" bezeichnet, wird nach Empfang eines logischen "1" Pulses den bestehenden minimalen Prüfpegel um eins erhöhen. Der folgende Block 1317 lädt dann diesen neuen minimalen Wert zur Verwendung in nachfolgenden Programmier/Prüf-Serien in das MIN PRÜFPEGEL "ZÄHL" REGISTER 2305. Es ist zu beachten, dass falls zu irgendeinem Zeitpunkt keine Speicherelemente vorhanden sind, der auf den Datenzustand gerichtet sind, der mit dem momentanen minimalen Prüfpegel im Zusammenhang stehlen, die Ausgestaltung aus 13 diesen minimalen Prüfpegel gleichermaßen auf den des nächst höheren Datenzustand für die folgenden Programmier/Prüf-Operationen erhöhen.
  • Es ist zu beachten, dass falls zu irgendeinem Zeitpunkt der Prüfpegel versucht, das obere Ende des Prüfbereichs (d.h. MAXIMAL ZULÄSSIG) zu überschreiten, ist keine derartige Erhöhung zulässig. Der minimale Prüfpegel bleibt dann am oberen Ende des Prüfbereichs fixiert (d.h. Prüfpegel 7 in dieser Ausgestaltung).
  • Die hier zu Grunde liegende Idee besteht darin, dass bevor alle Speicherelemente, die darauf gerichtet sind, auf den dem Datenzustand entsprechenden niedrigsten Prüfpegel beschrieben zu werden, der momentan verwendet wird, tatsächlich diesen Datenzustand erreichen (wie durch deren entsprechenden SPERREN Status angezeigt), muss dieser gleiche niedrigste Prüfpegel in den nachfolgenden Programmier/Prüf-Operationen weiter verwendet werden. Sobald alle derartigen Zellen tatsächlich derart programmiert wurden (wie durch alle SPERREN bestätigt, die zum logischen Zustand "1" gekippt sind), besteht von nun an kein Zweck, weiter an diesem gleichen niedrigen Endprüfpunkt fortzufahren und der minimale Prüfpegel für die folgenden Programmier/Prüf-Operationen kann am nächst höheren Pegel beginnen.
  • Am Anfang einer vollständigen Datenprogrammier-Operation wird der minimale Prüfpegel auf den Zustand gesetzt, der mit dem ersten Zustand verbunden ist, (d.h. MIN PRÜFPEGEL „ZÄHL" REGISTER 1305 wird auf 1 gesetzt) als Vorbereitung für Zellen, die bis zu diesem Pegel programmiert werden.
  • Während der Verwendung der obigen Peak Prüf- und Minimum Prüf-Ausgestaltung in Kombination, wird die Anzahl von Prüfpulsen, die jedem Programmierpuls folgen, dynamisch auf dem Minimum beibehalten, das an jedem Punkt in der Programmiersequenz erforderlich ist. Typischerweise werden sich die MAX und MIN Prüfpegel zu Beginn einer Programmiersession beide am Zustand 1 befinden. Nach einer Anzahl von Pulsen wird MAX ansteigen, um oberhalb der schnellsten Programmierzelle zu bleiben. Unabhängig wird zu einem späteren Zeitpunkt MIN ebenso ansteigen, wenn alle Zellen, die auf den vorherigen minimalen Zustand gerichtet sind, derart programmiert (und gesperrt) worden sind. Für diese 8-Zustand Ausgestaltung, in der ein sequentieller Prüfbereich umfasst wird, ermöglicht diese kontinuierliche dynamische Neuanpassung von min und max, dass die erforderliche Anzahl von Prüfungen weniger als der halbe Wert ist (z.B. durchschnittlich 3 Prüfungen pro Programmierschritt). Wenn Zellen aufwärts zum höchsten Zustand programmiert werden, wird der maximale Prüfpegel zum oberen Ende der Grenze, 7, fixiert und zu einem späteren Zeitpunkt wird der minimale Prüfpegel ebenso an dieser Grenze fixiert. Beispiele von derartigem Betriebsverhalten sind in 5a und 5b der Offenbarung gezeigt.
  • Obwohl die Bestimmung des Scan Fensters hauptsächlich in Bezug auf die Zeitersparnis beschrieben wurde, wenn diese Zustände sequentiell geprüft werden, könnte die vorliegende Erfindung in Ausgestaltungen implementiert werden, in denen die Mehrzustände parallel geprüft werden, wie zum Beispiel in US-Patent 6,538,922 beschrieben. Obwohl dies im parallelen Fall nicht zum gleichen Vorteil führen könnte, was die erhöhte Geschwindigkeit betrifft, könnte diese andere Vorteile haben, wie zum Beispiel eine Verringerung der Leistungsaufnahme.
  • Obwohl die Erörterung bislang hauptsächlich für Mehrzustands-Ausgestaltungen unter Verwendung eines ladungsspeichernden Bauelements wie zum Beispiel EEPROM oder FLASH Zellen für das Speicherelement geführt wurde, könnte diese ebenso auf andere Mehrzustands-Ausgestaltungen angewendet werden, einschließlich magnetische und optische Medien und auch Spannungsspeichermedien wie zum Beispiel Mehrzustands DRAM. Obwohl die Angaben, wie die Speicherelemente lesen, schreiben und Daten speichern nicht in den Hauptaspekt der vorliegenden Erfindung treten, können die verschiedenen Aspekte der vorliegenden Erfindung auf andere Speichertypen, umfassend, aber nicht beschränkend 0,1 μm Transistoren, Einzelelektronentransistoren, organisch/Kohlenstoff-basierte Nano-Transistoren und molekulare Transistoren angewendet werden. Zum Beispiel NROM und MNOS Zellen wie beispielsweise die in US-Patent 5,768,192 von Eitan und US-Patent 4,630,086 von Sato et al oder magnetische RAM and FRAM Zellen wie zum Beispiel die in US-Patent 5,991,193 von Gallagher et al. beziehungsweise US-Patent 5,892,706 von Shimizu et al. beschriebenen, die alle in diese Anmeldung durch Bezugnahme ausdrücklich eingebunden werden, könnten verwendet werden.

Claims (18)

  1. Verfahren zum Durchführen einer Programmieroperation an einer Vielzahl von Mehrzustand-Datenspeicherelementen, umfassend: Durchführen einer Programmieroperation (223) um inkrementell die Speicherelemente von einem ersten Datenzustand sequentiell durch eine Vielzahl von zweiten Datenzuständen zu versetzen, Prüfen (225) des Ergebnisses der vorangehenden Programmieroperation für eine Teilmenge von einem oder mehreren Zielwerten von einem Satz von Zielwerten, wobei jeder einem entsprechenden zweiten Datenzustand entspricht, und danach Wiederholen der Durchführung einer Programmieroperation (223) sowie das Prüfen (225) unter Verwendung der wiederhergestellten Teilmenge von Zielwerten, DADURCH GEKENNZEICHNET, DASS vor dem Wiederholen der Durchführung und Prüfoperationen diese Teilmenge von einem oder mehreren dieser Zielwerte (221) für eine anschließende Prüfoperation basierend auf dem Ergebnis des vorherigen Prüfens in einem Schritt wiederhergestellt wird, welcher umfasst zu Ermitteln, ob ein Zielwert nicht in die Teilmenge der vorangehenden Prüfung aufzunehmen ist.
  2. Verfahren gemäß Anspruch 1, umfassend den Schritt, weitere Programmierung dieser aus der Vielzahl von Speicherelementen zu beenden, welche bei der Prüfoperation ihren zugehörigen Zielwert als Ergebnis der vorangehenden Programmieroperation bestätigen.
  3. Verfahren gemäß Anspruch 1 oder Anspruch 2, wobei bei der Prüfoperation das Ergebnis sequentielles Vergleichen des Ergebnisses der vorangehenden Programmieroperation mit der Teilmenge von Zielwerten umfasst.
  4. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei die anschließend wiederhergestellte Teilmenge von Zielwerten die selbe wie die vorangehende Teilmenge von Zielwerten ist.
  5. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der Schritt des anschließenden Wiederherstellens dieser Teilmenge von Zielwerten beinhaltet zu Ermitteln, ob ein Zielwert in der Teilmenge der vorangehenden Prüfoperation gelöscht wird.
  6. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der Schritt der Durchführung einer Programmieroperation Pulsen der Speicherelemente mit einer Programmierspannung umfasst.
  7. Verfahren gemäß Anspruch 6, wobei die Speicherelemente EEPROM Speicherzellen sind und die Prüfoperation Vergleichen eines Parameters, welcher auf die Schwellenwerte der Speicherzellen hinweist, mit der Teilmenge der Zielwerte umfasst, wobei die Zielwerte Werte dieses Parameters sind.
  8. Verfahren gemäß Anspruch 1, beinhaltend im Anschluss an den Wiederholungsschritt Wiederherstellen dieser Teilmenge von einem oder mehreren auf dem Ergebnis der vorangehenden Prüfung basierenden Zielwerte für eine anschließende Prüfoperation, welcher umfasst zu Ermitteln, ob ein Zielwert nicht in die Teilmenge der vorangehenden Prüfung aufzunehmen ist, und anschließendes Wiederholen der Durchführung einer Programmieroperation.
  9. Verfahren gemäß Anspruch 8, beinhaltend den Schritt, diese Elemente aus der Vielzahl von Mehrzustand-Datenspeicherelementen der Speicherelemente zu Entfernen, welche nicht korrekt programmiert werden.
  10. Verfahren gemäß Anspruch 8 oder Anspruch 9, wobei Ermitteln, ob ein bestimmter Zielwert nicht in die Teilmenge von Zielwerten der vorangehenden Prüfoperation aufzunehmen ist, auf einer oder mehrerer der Speicherelementprüfungen an einem aus dieser Teilmenge von Zielwerten bei der vorangehenden Prüfoperation basiert.
  11. Verfahren gemäß Anspruch 10, wobei der bestimmte Zielwert in der Folge der zweiten Datenzustände in der Teilmenge von Zielwerten als Antwort auf eine oder mehrere der Speicherelementprüfungen am vorangehenden Zielwert in der Folge der zweiten Datenzustände enthalten ist.
  12. Verfahren gemäß Anspruch 11, wobei der bestimmte Zielwert in der Teilmenge von Prüfungen einer ersten Anzahl von Programmieroperationen nach einer oder mehrerer dieser Speicherelementprüfungen am vorangehenden Zielwert in der Sequenz der zweiten Datenzustände in der vorangehenden Prüfung enthalten ist.
  13. Verfahren gemäß Anspruch 12, wobei die erste Anzahl ein einstellbarer Parameter ist.
  14. Ein Speicher umfassend: eine Vielzahl von Mehrzustand-Speicherelementen (1001), Programmierschaltungen, welche mit den Speichereinheiten verbindbar sind, um eine Programmoperation durchzuführen, wobei der Zustand der Speicherelemente verändert werden kann, und Abtastschaltungen (1011), welche mit den Speicherelementen verbindbar sind, um den Wert eines Parameters zu ermitteln, welcher auf den Zustand des Speicherelementes hinweist, DADURCH GEKENNZEICHNET, DASS Vergleichsschaltungen (1017) mit den Abtastschaltungen verbunden sind, um eine Programmprüfoperation unter Verwendung von Zielwerten für die Parameter entsprechend einer Teilmenge der Mehrzustandpegel durchzuführen, und Logikschaltungen (1015a–c, 1009, 1019, 1003), welche mit den Vergleichsschaltungen (1017) verbunden sind, wobei Hinzufügen eines oder mehrerer Mehrzustandpegel zur Teilmenge der Mehrzustandpegel, welche bei der Programmprüfoperation verwendet werden, basierend auf den Ergebnissen der vorangehenden Programmprüfoperation ermittelt werden.
  15. Speicher gemäß Anspruch 14, wobei bei einer Programmprüfoperation die Vergleichsschaltungen (1017) den Zustand dieser Speicherelemente (1001) mit den Zielwerten sequentiell vergleicht.
  16. Speicherzelle gemäß Anspruch 14 oder 15, wobei Löschen eines oder mehrerer Mehrzustandpegel vom Satz der Mehrzustandpegel, welche bei der Programmprüfoperation verwendet werden, basierend auf den Ergebnissen der vorangehenden Programmprüfoperation ermittelt werden.
  17. Speicherzelle gemäß einem der Ansprüche 14 bis 16, wobei die Logikschaltungen Speicherelemente vom weiteren Programmieren ausschließen, welche entsprechend derer Zielwerte bei der Programmprüfoperation als korrekt bestätigt werden.
  18. Speicherzelle gemäß einem der Ansprüche 14 bis 17, wobei die Speicherelemente (1001) Floating Gate Speicherzellen sind.
DE60312729T 2002-12-05 2003-12-01 Intelligente verifikation von speichern mit mehreren zuständen Expired - Lifetime DE60312729T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US314055 2002-12-05
US10/314,055 US7073103B2 (en) 2002-12-05 2002-12-05 Smart verify for multi-state memories
PCT/US2003/038076 WO2004053882A1 (en) 2002-12-05 2003-12-01 Smart verify for multi-state memories

Publications (2)

Publication Number Publication Date
DE60312729D1 DE60312729D1 (de) 2007-05-03
DE60312729T2 true DE60312729T2 (de) 2007-12-06

Family

ID=32468407

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60312729T Expired - Lifetime DE60312729T2 (de) 2002-12-05 2003-12-01 Intelligente verifikation von speichern mit mehreren zuständen

Country Status (10)

Country Link
US (3) US7073103B2 (de)
EP (1) EP1568041B1 (de)
JP (1) JP4382675B2 (de)
KR (1) KR101017321B1 (de)
CN (1) CN1720586B (de)
AT (1) ATE357727T1 (de)
AU (1) AU2003296003A1 (de)
DE (1) DE60312729T2 (de)
TW (1) TWI314325B (de)
WO (1) WO2004053882A1 (de)

Families Citing this family (221)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7630237B2 (en) 2003-02-06 2009-12-08 Sandisk Corporation System and method for programming cells in non-volatile integrated memory devices
US7574341B1 (en) * 2003-11-12 2009-08-11 Hewlett-Packard Development Company, L.P. Speculative expectation based event verification
US7418678B1 (en) * 2003-12-01 2008-08-26 Jasper Design Automation, Inc. Managing formal verification complexity of designs with counters
US7355237B2 (en) * 2004-02-13 2008-04-08 Sandisk Corporation Shield plate for limiting cross coupling between floating gates
US7023733B2 (en) * 2004-05-05 2006-04-04 Sandisk Corporation Boosting to control programming of non-volatile memory
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US7535771B2 (en) * 2004-11-04 2009-05-19 Macronix International Co., Ltd. Devices and methods to improve erase uniformity and to screen for marginal cells for NROM memories
US7158421B2 (en) * 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US7420847B2 (en) * 2004-12-14 2008-09-02 Sandisk Corporation Multi-state memory having data recovery after program fail
US7120051B2 (en) * 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7408804B2 (en) * 2005-03-31 2008-08-05 Sandisk Corporation Systems for soft programming non-volatile memory utilizing individual verification and additional soft programming of subsets of memory cells
US7206230B2 (en) 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US7463521B2 (en) 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
US7447078B2 (en) * 2005-04-01 2008-11-04 Sandisk Corporation Method for non-volatile memory with background data latch caching during read operations
US7339834B2 (en) * 2005-06-03 2008-03-04 Sandisk Corporation Starting program voltage shift with cycling of non-volatile memory
EP1748446A1 (de) * 2005-07-28 2007-01-31 STMicroelectronics S.r.l. Zweiseitenprogrammierung
US7366014B2 (en) * 2005-07-28 2008-04-29 Stmicroelectronics S.R.L. Double page programming system and method
US7230854B2 (en) * 2005-08-01 2007-06-12 Sandisk Corporation Method for programming non-volatile memory with self-adjusting maximum program loop
US7023737B1 (en) 2005-08-01 2006-04-04 Sandisk Corporation System for programming non-volatile memory with self-adjusting maximum program loop
ATE521972T1 (de) * 2005-08-01 2011-09-15 Sandisk Corp Programmierung eines nicht-flüchtigen speichers mit selbst-regulierender maximaler programmschleife
US7366022B2 (en) * 2005-10-27 2008-04-29 Sandisk Corporation Apparatus for programming of multi-state non-volatile memory using smart verify
JP4855474B2 (ja) * 2005-10-27 2012-01-18 サンディスク コーポレイション スマート検証を利用してマルチステート不揮発性メモリをプログラミングする方法
US7301817B2 (en) * 2005-10-27 2007-11-27 Sandisk Corporation Method for programming of multi-state non-volatile memory using smart verify
US7349264B2 (en) 2005-12-28 2008-03-25 Sandisk Corporation Alternate sensing techniques for non-volatile memories
US7616481B2 (en) 2005-12-28 2009-11-10 Sandisk Corporation Memories with alternate sensing techniques
US7310255B2 (en) * 2005-12-29 2007-12-18 Sandisk Corporation Non-volatile memory with improved program-verify operations
US7224614B1 (en) 2005-12-29 2007-05-29 Sandisk Corporation Methods for improved program-verify operations in non-volatile memories
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US7489549B2 (en) * 2006-06-22 2009-02-10 Sandisk Corporation System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7486561B2 (en) 2006-06-22 2009-02-03 Sandisk Corporation Method for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7304893B1 (en) 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7602650B2 (en) * 2006-08-30 2009-10-13 Samsung Electronics Co., Ltd. Flash memory device and method for programming multi-level cells in the same
US7525838B2 (en) * 2006-08-30 2009-04-28 Samsung Electronics Co., Ltd. Flash memory device and method for programming multi-level cells in the same
US7734861B2 (en) * 2006-09-08 2010-06-08 Sandisk Corporation Pseudo random and command driven bit compensation for the cycling effects in flash memory
US7885112B2 (en) * 2007-09-07 2011-02-08 Sandisk Corporation Nonvolatile memory and method for on-chip pseudo-randomization of data within a page and between pages
US7606966B2 (en) * 2006-09-08 2009-10-20 Sandisk Corporation Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory
KR101062032B1 (ko) 2006-10-13 2011-09-05 샌디스크 코포레이션 비휘발성 메모리에서의 분할된 소거 및 소거 검증
JP4990979B2 (ja) 2006-10-13 2012-08-01 サンディスク コーポレイション 不揮発性記憶素子における区分化されたソフトプログラミング
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
WO2008053473A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Memory cell readout using successive approximation
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US7551482B2 (en) * 2006-12-27 2009-06-23 Sandisk Corporation Method for programming with initial programming voltage based on trial
US7570520B2 (en) * 2006-12-27 2009-08-04 Sandisk Corporation Non-volatile storage system with initial programming voltage based on trial
WO2008086237A2 (en) * 2007-01-05 2008-07-17 California Institute Of Technology Codes for limited magnitude asymmetric errors in flash memories
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
EP2458592B1 (de) 2007-02-20 2014-03-26 SanDisk Technologies, Inc. Mehrlagige Schreibsequenz für nichtflüchtigen Speicher
US7564711B2 (en) * 2007-02-20 2009-07-21 Sandisk Corporation Multiple pass write sequence for non-volatile storage
KR101371522B1 (ko) * 2007-02-27 2014-03-12 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 구동 방법
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
KR100816220B1 (ko) * 2007-03-14 2008-03-21 주식회사 하이닉스반도체 불휘발성 메모리 장치의 언더 프로그램 셀 검출 방법 및그를 이용한 프로그램 방법
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US7898885B2 (en) * 2007-07-19 2011-03-01 Micron Technology, Inc. Analog sensing of memory cells in a solid state memory device
US7649782B2 (en) * 2007-07-31 2010-01-19 Freescale Semiconductor, Inc. Non-volatile memory having a dynamically adjustable soft program verify voltage level and method therefor
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US7869273B2 (en) * 2007-09-04 2011-01-11 Sandisk Corporation Reducing the impact of interference during programming
US7813188B2 (en) * 2007-09-10 2010-10-12 Hynix Semiconductor Inc. Non-volatile memory device and a method of programming a multi level cell in the same
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
KR100891405B1 (ko) * 2007-09-27 2009-04-02 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 그 동작 방법
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
KR101509836B1 (ko) 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
JP2009129480A (ja) * 2007-11-20 2009-06-11 Toshiba Corp 不揮発性半導体記憶装置の閾値制御方法
DE102007055479B4 (de) * 2007-11-21 2015-09-10 Audi Ag Knotenelement für eine Fachwerkskonstruktion
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
JP5151439B2 (ja) * 2007-12-12 2013-02-27 ソニー株式会社 記憶装置および情報再記録方法
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US7916544B2 (en) * 2008-01-25 2011-03-29 Micron Technology, Inc. Random telegraph signal noise reduction scheme for semiconductor memories
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US20090199058A1 (en) * 2008-02-06 2009-08-06 Christoph Seidl Programmable memory with reliability testing of the stored data
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
ITRM20080114A1 (it) * 2008-02-29 2009-09-01 Micron Technology Inc Compensazione della perdita di carica durante la programmazione di un dispositivo di memoria.
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
KR100954949B1 (ko) * 2008-05-14 2010-04-27 주식회사 하이닉스반도체 불휘발성 메모리 장치의 멀티 레벨 셀 프로그램 방법
US8433980B2 (en) * 2008-06-23 2013-04-30 Sandisk Il Ltd. Fast, low-power reading of data in a flash memory
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
JP5172555B2 (ja) 2008-09-08 2013-03-27 株式会社東芝 半導体記憶装置
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
KR101532754B1 (ko) 2008-09-22 2015-07-02 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
US7768836B2 (en) * 2008-10-10 2010-08-03 Sandisk Corporation Nonvolatile memory and method with reduced program verify by ignoring fastest and/or slowest programming bits
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8045375B2 (en) 2008-10-24 2011-10-25 Sandisk Technologies Inc. Programming non-volatile memory with high resolution variable initial programming pulse
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8111544B2 (en) * 2009-02-23 2012-02-07 Taiwan Semiconductor Manufacturing Company, Ltd. Programming MRAM cells using probability write
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
KR101005145B1 (ko) * 2009-03-06 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
KR101015644B1 (ko) * 2009-05-29 2011-02-22 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 이를 프로그램하는 방법
US8054691B2 (en) 2009-06-26 2011-11-08 Sandisk Technologies Inc. Detecting the completion of programming for non-volatile storage
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8243520B2 (en) * 2009-11-02 2012-08-14 Infineon Technologies Ag Non-volatile memory with predictive programming
US8223556B2 (en) * 2009-11-25 2012-07-17 Sandisk Technologies Inc. Programming non-volatile memory with a reduced number of verify operations
US8174895B2 (en) * 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
KR101676816B1 (ko) 2010-02-11 2016-11-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US8233324B2 (en) 2010-03-25 2012-07-31 Sandisk Il Ltd. Simultaneous multi-state read or verify in non-volatile storage
US8218366B2 (en) 2010-04-18 2012-07-10 Sandisk Technologies Inc. Programming non-volatile storage including reducing impact from other memory cells
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8416624B2 (en) 2010-05-21 2013-04-09 SanDisk Technologies, Inc. Erase and programming techniques to reduce the widening of state distributions in non-volatile memories
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8514630B2 (en) 2010-07-09 2013-08-20 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays: current based approach
US8305807B2 (en) 2010-07-09 2012-11-06 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US8432732B2 (en) 2010-07-09 2013-04-30 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8310870B2 (en) 2010-08-03 2012-11-13 Sandisk Technologies Inc. Natural threshold voltage distribution compaction in non-volatile memory
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US8374031B2 (en) 2010-09-29 2013-02-12 SanDisk Technologies, Inc. Techniques for the fast settling of word lines in NAND flash memory
US8345482B2 (en) * 2010-12-15 2013-01-01 Micron Technology, Inc. Methods for segmented programming and memory devices
US8472280B2 (en) 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
KR101211840B1 (ko) * 2010-12-30 2012-12-12 에스케이하이닉스 주식회사 반도체 메모리 장치의 프로그램 방법
US8379454B2 (en) 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US8843693B2 (en) 2011-05-17 2014-09-23 SanDisk Technologies, Inc. Non-volatile memory and method with improved data scrambling
US8456911B2 (en) 2011-06-07 2013-06-04 Sandisk Technologies Inc. Intelligent shifting of read pass voltages for non-volatile storage
US8432740B2 (en) 2011-07-21 2013-04-30 Sandisk Technologies Inc. Program algorithm with staircase waveform decomposed into multiple passes
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8726104B2 (en) 2011-07-28 2014-05-13 Sandisk Technologies Inc. Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
KR20130019082A (ko) * 2011-08-16 2013-02-26 삼성전자주식회사 비휘발성 메모리 장치의 설계 방법
US9361986B2 (en) 2011-09-19 2016-06-07 Sandisk Technologies Inc. High endurance non-volatile storage
EP2780912B1 (de) 2011-11-18 2016-10-26 SanDisk Technologies LLC Nichtflüchtiger speicher mit datenwiederherstellung
US9036415B2 (en) 2011-12-21 2015-05-19 Sandisk Technologies Inc. Mitigating variations arising from simultaneous multi-state sensing
US8737132B2 (en) 2012-01-06 2014-05-27 Sandisk Technologies Inc. Charge cycling by equalizing the source and bit line levels between pulses during no-verify write operations for NAND flash memory
US8582381B2 (en) 2012-02-23 2013-11-12 SanDisk Technologies, Inc. Temperature based compensation during verify operations for non-volatile storage
US8730722B2 (en) 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
US8937835B2 (en) 2012-03-13 2015-01-20 Sandisk Technologies Inc. Non-volatile storage with read process that reduces disturb
JP5398872B2 (ja) * 2012-04-27 2014-01-29 株式会社東芝 半導体記憶装置
US8937837B2 (en) 2012-05-08 2015-01-20 Sandisk Technologies Inc. Bit line BL isolation scheme during erase operation for non-volatile storage
US9142305B2 (en) 2012-06-28 2015-09-22 Sandisk Technologies Inc. System to reduce stress on word line select transistor during erase operation
US9053819B2 (en) 2012-07-11 2015-06-09 Sandisk Technologies Inc. Programming method to tighten threshold voltage width with avoiding program disturb
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
JP2014053060A (ja) 2012-09-07 2014-03-20 Toshiba Corp 半導体記憶装置及びその制御方法
US20140071761A1 (en) 2012-09-10 2014-03-13 Sandisk Technologies Inc. Non-volatile storage with joint hard bit and soft bit reading
JP2014063551A (ja) 2012-09-21 2014-04-10 Toshiba Corp 半導体記憶装置
US9810723B2 (en) 2012-09-27 2017-11-07 Sandisk Technologies Llc Charge pump based over-sampling ADC for current detection
US9164526B2 (en) 2012-09-27 2015-10-20 Sandisk Technologies Inc. Sigma delta over-sampling charge pump analog-to-digital converter
US20140108705A1 (en) 2012-10-12 2014-04-17 Sandisk Technologies Inc. Use of High Endurance Non-Volatile Memory for Read Acceleration
US8885416B2 (en) 2013-01-30 2014-11-11 Sandisk Technologies Inc. Bit line current trip point modulation for reading nonvolatile storage elements
US8929142B2 (en) * 2013-02-05 2015-01-06 Sandisk Technologies Inc. Programming select gate transistors and memory cells using dynamic verify level
US9311999B2 (en) * 2013-09-06 2016-04-12 Micron Technology, Inc. Memory sense amplifiers and memory verification methods
US9165683B2 (en) 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
GB2518632A (en) * 2013-09-26 2015-04-01 Ibm Estimation of level-thresholds for memory cells
US9620238B2 (en) 2014-01-20 2017-04-11 Sandisk Technologies Llc Methods and systems that selectively inhibit and enable programming of non-volatile storage elements
JP2015204126A (ja) 2014-04-16 2015-11-16 株式会社東芝 半導体記憶装置
US9484086B2 (en) 2014-07-10 2016-11-01 Sandisk Technologies Llc Determination of word line to local source line shorts
US9460809B2 (en) 2014-07-10 2016-10-04 Sandisk Technologies Llc AC stress mode to screen out word line to word line shorts
US9443612B2 (en) 2014-07-10 2016-09-13 Sandisk Technologies Llc Determination of bit line to low voltage signal shorts
US9514835B2 (en) 2014-07-10 2016-12-06 Sandisk Technologies Llc Determination of word line to word line shorts between adjacent blocks
US9218874B1 (en) 2014-08-11 2015-12-22 Sandisk Technologies Inc. Multi-pulse programming cycle of non-volatile memory for enhanced de-trapping
US9202593B1 (en) 2014-09-02 2015-12-01 Sandisk Technologies Inc. Techniques for detecting broken word lines in non-volatile memories
US9240249B1 (en) 2014-09-02 2016-01-19 Sandisk Technologies Inc. AC stress methods to screen out bit line defects
US9449694B2 (en) 2014-09-04 2016-09-20 Sandisk Technologies Llc Non-volatile memory with multi-word line select for defect detection operations
US9443606B2 (en) 2014-10-28 2016-09-13 Sandisk Technologies Llc Word line dependent two strobe sensing mode for nonvolatile storage elements
US9875805B2 (en) 2015-01-23 2018-01-23 Sandisk Technologies Llc Double lockout in non-volatile memory
US9564213B2 (en) 2015-02-26 2017-02-07 Sandisk Technologies Llc Program verify for non-volatile storage
KR20160108770A (ko) 2015-03-06 2016-09-20 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
US9548130B2 (en) 2015-04-08 2017-01-17 Sandisk Technologies Llc Non-volatile memory with prior state sensing
US9570179B2 (en) 2015-04-22 2017-02-14 Sandisk Technologies Llc Non-volatile memory with two phased programming
US9659666B2 (en) 2015-08-31 2017-05-23 Sandisk Technologies Llc Dynamic memory recovery at the sub-block level
US9711211B2 (en) 2015-10-29 2017-07-18 Sandisk Technologies Llc Dynamic threshold voltage compaction for non-volatile memory
US9564226B1 (en) 2015-10-30 2017-02-07 Sandisk Technologies Llc Smart verify for programming non-volatile memory
US10014063B2 (en) 2015-10-30 2018-07-03 Sandisk Technologies Llc Smart skip verify mode for programming a memory device
US9842655B2 (en) * 2015-12-08 2017-12-12 Intel Corporation Reducing verification checks when programming a memory device
US9698676B1 (en) 2016-03-11 2017-07-04 Sandisk Technologies Llc Charge pump based over-sampling with uniform step size for current detection
US10452480B2 (en) 2017-05-25 2019-10-22 Micron Technology, Inc. Memory device with dynamic processing level calibration
US10140040B1 (en) * 2017-05-25 2018-11-27 Micron Technology, Inc. Memory device with dynamic program-verify voltage calibration
US10373696B2 (en) * 2017-08-18 2019-08-06 Western Digital Technologies, Inc. Methods and operations using XNOR functions with flash devices and solid state drives
TWI646550B (zh) * 2017-12-08 2019-01-01 旺宏電子股份有限公司 非揮發性記憶體及其寫入方法
US10664194B2 (en) 2018-05-16 2020-05-26 Micron Technology, Inc. Memory system with dynamic calibration using a variable adjustment mechanism
US10566063B2 (en) 2018-05-16 2020-02-18 Micron Technology, Inc. Memory system with dynamic calibration using a trim management mechanism
US10990466B2 (en) 2018-06-20 2021-04-27 Micron Technology, Inc. Memory sub-system with dynamic calibration using component-based function(s)
CN109524047B (zh) * 2018-10-15 2021-04-16 上海华虹宏力半导体制造有限公司 快闪存储器的字节编程重试方法
US12075618B2 (en) 2018-10-16 2024-08-27 Silicon Storage Technology, Inc. Input and digital output mechanisms for analog neural memory in a deep learning artificial neural network
US10741568B2 (en) * 2018-10-16 2020-08-11 Silicon Storage Technology, Inc. Precision tuning for the programming of analog neural memory in a deep learning artificial neural network
KR102528274B1 (ko) 2018-11-06 2023-05-02 삼성전자주식회사 비휘발성 메모리 장치 및 그 구동 방법
US10910075B2 (en) 2018-11-13 2021-02-02 Sandisk Technologies Llc Programming process combining adaptive verify with normal and slow programming speeds in a memory device
KR102641097B1 (ko) * 2018-12-31 2024-02-27 삼성전자주식회사 저항성 메모리 장치 및 저항성 메모리 장치의 프로그램 방법
US10748622B2 (en) 2019-01-21 2020-08-18 Sandisk Technologies Llc State adaptive predictive programming
CN111863087B (zh) * 2019-04-29 2022-08-30 北京兆易创新科技股份有限公司 一种控制编程性能的方法和装置
US10839928B1 (en) 2019-05-16 2020-11-17 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
US11081198B2 (en) 2019-05-16 2021-08-03 Sandisk Technologies Llc Non-volatile memory with countermeasure for over programming
CN112945355A (zh) * 2021-01-27 2021-06-11 武汉正维电子技术有限公司 双脉冲数据采集方法
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
CN115512747A (zh) 2021-06-23 2022-12-23 桑迪士克科技有限责任公司 用于具有相邻平面干扰检测的智能验证的设备和方法
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
JP2023093187A (ja) * 2021-12-22 2023-07-04 キオクシア株式会社 半導体記憶装置
US12046267B2 (en) * 2022-08-25 2024-07-23 Sandisk Technologies Llc Advanced window program-verify

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218569A (en) * 1991-02-08 1993-06-08 Banks Gerald J Electrically alterable non-volatile memory with n-bits per memory cell
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
KR100253868B1 (ko) 1995-11-13 2000-05-01 니시무로 타이죠 불휘발성 반도체기억장치
JP3409986B2 (ja) * 1997-01-31 2003-05-26 株式会社東芝 多値メモリ
KR100327421B1 (ko) * 1997-12-31 2002-07-27 주식회사 하이닉스반도체 비휘발성 메모리 소자의 프로그램 시스템 및 그의 프로그램 방법
JP2000040382A (ja) 1998-07-23 2000-02-08 Sony Corp 不揮発性半導体記憶装置およびそのデータ書き込み方法
JP2001067884A (ja) 1999-08-31 2001-03-16 Hitachi Ltd 不揮発性半導体記憶装置
KR100319559B1 (ko) 1999-11-01 2002-01-05 윤종용 문턱 전압 분포들 사이의 마진을 일정하게 유지할 수 있는멀티-스테이트 불휘발성 반도체 메모리 장치
US6538922B1 (en) * 2000-09-27 2003-03-25 Sandisk Corporation Writable tracking cells
US20020174295A1 (en) * 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6621739B2 (en) * 2002-01-18 2003-09-16 Sandisk Corporation Reducing the effects of noise in non-volatile memories through multiple reads

Also Published As

Publication number Publication date
TWI314325B (en) 2009-09-01
US7584391B2 (en) 2009-09-01
DE60312729D1 (de) 2007-05-03
US7243275B2 (en) 2007-07-10
EP1568041B1 (de) 2007-03-21
US20060107136A1 (en) 2006-05-18
KR20050101159A (ko) 2005-10-20
US20040109362A1 (en) 2004-06-10
JP4382675B2 (ja) 2009-12-16
EP1568041A1 (de) 2005-08-31
TW200418043A (en) 2004-09-16
ATE357727T1 (de) 2007-04-15
KR101017321B1 (ko) 2011-02-28
WO2004053882A1 (en) 2004-06-24
JP2006509326A (ja) 2006-03-16
CN1720586B (zh) 2011-05-18
AU2003296003A1 (en) 2004-06-30
CN1720586A (zh) 2006-01-11
US7073103B2 (en) 2006-07-04
US20070234144A1 (en) 2007-10-04

Similar Documents

Publication Publication Date Title
DE60312729T2 (de) Intelligente verifikation von speichern mit mehreren zuständen
DE102006030758B4 (de) Nicht-flüchtiges Speicherelement, Flash-Speicher und Verfahren zum Programmieren eines Flash-Speicherelements
DE69719968T2 (de) Stabilisierkreise für mehrere digitale bits
DE102005030661B4 (de) Nichtflüchtiges Halbleiterspeicherbauelement und Verfahren zum Betreiben und Herstellen eines nichtflüchtigen Halbleiterspeicherbauelementes
DE10052326B4 (de) Nichtflüchtiges Halbleiterspeicherbauelement und Programmierverfahren hierfür
DE102006020180B3 (de) Verfahren zum Programmieren eines Blocks von Speicherzellen, nicht-flüchtiger Speicher und Speicherkarte
DE102007031027B4 (de) Leseverfahren einer Speichervorrichtung
DE102007034184B4 (de) Verfahren zum Einstellen einer Programmierstartvorspannung für eine Flash-Speichervorrichtung und Programmierverfahren unter Verwendung desselben
DE68929389T2 (de) Speichersystem und Verfahren zu seinem Gebrauch
DE102005026663B4 (de) Nichtflüchtiges Speicherbauelement mit ISPP
DE69623977T2 (de) Speichersystem mit programmierbaren steuerparametern
DE19859494C2 (de) Nichtflüchtiger Mehrebenen-Halbleiterspeicherbaustein mit einer Schaltung zum Einstellen der Datenlesezeit
DE102004038417B4 (de) Programmierschaltung und -verfahren und nichtflüchtiger Halbleiterspeicherbaustein
DE60317768T2 (de) Verfahren zum Auslesen einer nichtflüchtigen Speichervorrichtung und zugehörige Vorrichtung
DE19724221B4 (de) Nichtflüchtiger Speicher
DE602005004253T2 (de) Speicher, bei dem zum Lesen an die Wortleitung eine Spannungs-Rampe angelegt wird, die mit einem Stromgenerator erzeugt wird
DE4309814A1 (de) Nichtflüchtige Halbleiterspeichervorrichtung
DE102005045031A1 (de) Programmierverfahren und Programmierwiederaufnahmeverfahren für ein nichtflüchtiges Speicherbauelement
DE102005020797A1 (de) Nichtflüchtiges Speicherbauelement und Programmierverfahren
DE102004033443A1 (de) Flashspeicherbauelement mit Mehrpegelzelle sowie Lese- und Programmierverfahren
DE4213731A1 (de) Nichtfluechtiges halbleiterspeicherbauelement und programmierverfahren hierfuer
DE102008009847A1 (de) Verfahren zum Treiben eines nichtflüchtigen Speicherelements und nichtflüchtiges Speicherelement
DE102007041845A1 (de) Verfahren zum Betreiben eines integrierten Schaltkreises mit mindestens einer Speicherzelle
DE69317937T2 (de) Nichtflüchtige Halbleiterspeicheranordnung
DE102007039908A1 (de) Programmierverfahren einer Flash-Speichervorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1568041

Country of ref document: EP

Representative=s name: PATENTANWAELTE MAXTON LANGMAACK & PARTNER, DE