DE112019000148T5 - Dynamische Bitabtastungstechniken für die Programmierung von Speichervorrichtungen - Google Patents

Dynamische Bitabtastungstechniken für die Programmierung von Speichervorrichtungen Download PDF

Info

Publication number
DE112019000148T5
DE112019000148T5 DE112019000148.5T DE112019000148T DE112019000148T5 DE 112019000148 T5 DE112019000148 T5 DE 112019000148T5 DE 112019000148 T DE112019000148 T DE 112019000148T DE 112019000148 T5 DE112019000148 T5 DE 112019000148T5
Authority
DE
Germany
Prior art keywords
state
memory
bit
programming
states
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.)
Pending
Application number
DE112019000148.5T
Other languages
English (en)
Inventor
Lei Lin
Zhoujie Li
Henry Chin
Cynthia Hsu
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 Technologies LLC
Original Assignee
SanDisk Technologies LLC
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 Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE112019000148T5 publication Critical patent/DE112019000148T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • 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/5671Digital 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 trapping in an insulator
    • 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/08Address circuits; Decoders; Word-line control 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/10Programming or 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/26Sensing or reading circuits; Data output 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
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1202Word line control
    • 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
    • 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/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Non-Volatile Memory (AREA)
  • Semiconductor Memories (AREA)

Abstract

Eine Vorrichtung wird bereitgestellt, die eine Vielzahl von Speicherzellen, eine Programmierschaltung zum Anlegen einer Vielzahl von Programmierimpulsen an die Speicherzellen und eine Abtastungsschaltung zum wiederholten Umschalten zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem Programmierimpuls, bis erste vorbestimmte Kriterien erfüllt sind, und dem Durchführen einer m-Zustands-Bitabtastung nach jedem Programmierimpuls, bis zweite vorbestimmte Kriterien erfüllt sind, einschließt, wobei m > n und n > 0 ist.

Description

  • HINTERGRUND
  • Die vorliegende Technologie bezieht sich auf Speichervorrichtungen.
  • Halbleiterspeichervorrichtungen sind in verschiedenen elektronischen Vorrichtungen beliebter geworden. Zum Beispiel wird ein nichtflüchtiger Halbleiterspeicher in Mobiltelefonen, Digitalkameras, persönlichen digitalen Assistenten, mobilen Rechenvorrichtungen, nichtmobilen Rechenvorrichtungen und anderen Vorrichtungen verwendet.
  • Ein Ladungsspeichermaterial wie ein schwebendes Gate oder ein Ladungsfängermaterial kann in solchen Speichervorrichtungen verwendet werden, um eine Ladung zu speichern, die einen Speicherzustand darstellt. Ein Ladungsfängermaterial kann vertikal in einer dreidimensionalen gestapelten Speicherstruktur oder horizontal in einer zweidimensionalen Speicherstruktur angeordnet sein. Ein Beispiel für eine dreidimensionale Speicherstruktur ist die Bit-Cost-Scalable-Architektur (BiCS-Architektur), die einen Stapel abwechselnder leitfähiger und dielektrischer Schichten einschließt.
  • Eine Speichervorrichtung schließt Speicherzellen ein, die beispielsweise in Ketten angeordnet sein können, wobei Auswahlgatetransistoren an den Enden der Kette bereitgestellt werden, um einen Kanal der Kette wahlweise mit einer Sourceleitung oder einer Bitleitung zu verbinden. Beim Betrieb solcher Speichervorrichtungen ergeben sich jedoch verschiedene Herausforderungen.
  • Figurenliste
    • 1A ist ein Blockdiagramm einer beispielhaften Speichervorrichtung.
    • 1B ist ein Blockdiagramm einer beispielhaften Bitabtastungsvorgangsschaltung.
    • 1C ist ein Blockdiagramm einer beispielhaften Abtastungsschaltung von 1B.
    • 1D ist ein Blockdiagramm einer beispielhaften Bitabtastungsauswahlschaltung von 1B.
    • 2 zeigt Blöcke von Speicherzellen in einer beispielhaften zweidimensionalen Konfiguration des Speicherarrays von 1.
    • Die 3A bis 3B zeigen Querschnittsansichten von beispielhaften Floating-Gate-Speicherzellen in NAND-Ketten.
    • Die 4A bis 4B zeigen Querschnittsansichten von beispielhaften Ladungsfänger-Speicherzellen in NAND-Ketten.
    • 5 zeigt ein beispielhaftes Blockdiagramm eines Erfassungsblocks SB1 von 1.
    • 6A ist eine perspektivische Ansicht eines Satzes von Blöcken in einer beispielhaften dreidimensionalen Konfiguration des Speicherarrays von 1.
    • 6B zeigt eine beispielhafte Querschnittsansicht eines Abschnitts von einem der Blöcke von 6A.
    • 6C zeigt eine Detailansicht der Region 618 des Stapels von 6B.
    • 7A zeigt eine Draufsicht auf eine beispielhafte Wortleitungsschicht WLL0 des Stapels von 6B.
    • 7B zeigt eine Draufsicht auf eine beispielhafte obere dielektrische Schicht DL19 des Stapels von 6B.
    • 8A zeigt ein Beispiel von NAND-Ketten in den Teilblöcken SBa-SBd von 7A.
    • 8B zeigt eine weitere beispielhafte Ansicht von NAND-Ketten in Teilblöcken.
    • 9A zeigt eine Ausführungsform von Schwellenspannungsverteilungen für eine Vier-Zustands-Speichervorrichtung, in der jede Speicherzelle zwei Datenbits speichert.
    • 9B zeigt eine Ausführungsform von Schwellenspannungsverteilungen für eine Acht-Zustands-Speichervorrichtung, in der jede Speicherzelle drei Datenbits speichert.
    • 9C zeigt eine Ausführungsform von Schwellenspannungsverteilungen für eine Sechzehn-Zustands-Speichervorrichtung, in der jede Speicherzelle vier Datenbits speichert.
    • 10 zeigt eine Wellenform eines beispielhaften Speicherzellenprogrammiervorgangs.
    • 11A ist ein Flussdiagramm eines beispielhaften Programmierprozesses in einer Speichervorrichtung.
    • 11B ist ein Blockdiagramm auf hoher Ebene einer Ausführungsform einer Bitabtastungsschaltung.
    • 11C ist ein Diagramm einer Ausführungsform der Zustand-S1-S7-Logikschaltungen von 11 B.
    • 11D ist ein Blockdiagramm auf hoher Ebene einer weiteren Ausführungsform einer Bitabtastungsschaltung.
    • 12A ist ein Flussdiagramm eines beispielhaften Programmierprozesses in einer Speichervorrichtung.
    • 12B zeigt Ergebnisse eines beispielhaften Vorgangs des Prozesses von 12A.
    • 12C ist ein Flussdiagramm eines weiteren beispielhaften Programmierprozesses in einer Speichervorrichtung.
    • 12D zeigt Ergebnisse eines beispielhaften Vorgangs des Prozesses von 12C.
    • 12E ist ein Flussdiagramm eines weiteren beispielhaften Programmierprozesses in einer Speichervorrichtung.
    • 12F ist ein Flussdiagramm eines weiteren beispielhaften Programmierprozesses in einer Speichervorrichtung.
    • 12G zeigt Ergebnisse eines beispielhaften Vorgangs des Prozesses von 12E.
    • 13A zeigt beispielhafte Programmimpulse, Schwellenspannungsverteilungen und Verifizierungsspannungen für die in den 12B und 12D gezeigten beispielhaften Vorgangsergebnisse.
    • 13B zeigt beispielhafte Programmimpulse, Schwellenspannungsverteilungen und Verifizierungsspannungen für die in 12G gezeigten beispielhaften Vorgangsergebnisse.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Techniken zum Programmieren einer Speichervorrichtung bereitgestellt. Eine entsprechende Speichervorrichtung wird ebenfalls bereitgestellt.
  • Ein Programmiervorgang für eine Gruppe von Speicherzellen beinhaltet typischerweise das Bereitstellen der Speicherzellen in einem gelöschten Zustand und dann das Anlegen einer Reihe von Programmierimpulsen an die Speicherzellen. Jeder Programmierimpuls wird in einer Programmierschleife bereitgestellt, die auch als Programmieren-Verifizieren-Iteration bezeichnet wird. Zum Beispiel kann der Programmierimpuls an eine Wortleitung angelegt werden, die mit den Steuer-Gates der Speicherzellen verbunden ist. Bei einem Ansatz wird Impulsprogrammierung in inkrementellen Schritten durchgeführt, bei der die Amplitude des Programmierimpulses in jeder Programmierschleife um eine Schrittgröße vergrößert wird. Verifizierungsvorgänge können nach jedem Programmierimpuls durchgeführt werden, um zu bestimmen, ob die Speicherzellen ein Programmieren abgeschlossen haben. Wenn ein Programmieren für eine Speicherzelle abgeschlossen ist, kann die Speicherzelle von einem weiteren Programmieren ausgeschlossen werden, während ein Programmieren für andere Speicherzellen in nachfolgenden Programmierschleifen fortgeführt wird.
  • Jede Speicherzelle kann einem Speicherzustand gemäß Schreibdaten in einem Programmierbefehl zugeordnet sein. Wie hierin verwendet, ist ein „Speicherzustand“ eine detektierbare Eigenschaft einer Speicherzelle (z. B. eine Schwellenspannung einer NAND-Speicherzelle, ein Widerstand einer ReRAM-Speicherzelle, ein Magnetisierungszustand eines magnetoresistiven Speichers mit wahlfreiem Zugriff), die dazu verwendet werden kann, einen Datenwert darzustellen, beispielsweise einen binären Datenwert. Wie hierin verwendet, wird die detektierbare Eigenschaft einer Speicherzelle, die zur Darstellung eines Datenwerts verwendet wird, als eine „Programmiereigenschaft“ bezeichnet. Basierend auf Schreibdaten in einem Programmbefehl wird eine Speicherzelle entweder in dem gelöschten Zustand bleiben oder auf einen Speicherzustand (einen programmierten Speicherzustand) programmiert werden, der sich von dem gelöschten Zustand unterscheidet.
  • Zum Beispiel gibt es in einer Speichervorrichtung mit zwei Bits pro Zelle vier Speicherzustände, die den gelöschten Zustand und drei programmierte Speicherzustände einschließen. In einer Speichervorrichtung mit drei Bits pro Zelle gibt es acht Speicherzustände, die den gelöschten Zustand und sieben programmierte Speicherzustände einschließen. In einer Speichervorrichtung mit vier Bits pro Zelle gibt es sechzehn Speicherzustände, die den gelöschten Zustand und fünfzehn programmierte Speicherzustände einschließen.
  • Wenn ein Programmbefehl ausgegeben wird, werden die Schreibdaten in zu den Speicherzellen gehörigen Datenzwischenspeichern gespeichert. Zum Beispiel ist in einer Speichervorrichtung mit zwei Bits pro Zelle jede Speicherzelle zwei Datenzwischenspeichern (z. B. DL1, DL2) zugeordnet, die die Zwei-Bit-Schreibdaten für die Speicherzelle speichern. Gleichermaßen ist in einer Speichervorrichtung mit drei Bits pro Zelle jede Speicherzelle drei Datenzwischenspeichern (z. B. DL1, DL2, DL3) zugeordnet, die die Drei-Bit-Schreibdaten für die Speicherzelle speichern. Auf ähnliche Weise ist in einer Speichervorrichtung mit vier Bits pro Zelle jede Speicherzelle vier Datenzwischenspeichern (z. B. DL1, DL2, DL3, DL4) zugeordnet, die die Vier-Bit-Schreibdaten für die Speicherzelle speichern.
  • Während des Programmierens können die Datenzwischenspeicher einer Speicherzelle gelesen werden, um den Speicherzustand zu bestimmen, auf den die Zelle programmiert werden soll. Bei NAND-Speicherzellen ist jeder programmierte Speicherzustand einer Verifizierungsspannung zugeordnet. Bei einer NAND-Speicherzelle mit einem gegebenen Speicherzustand wird davon ausgegangen, dass die Programmierung abgeschlossen ist, wenn eine Erfassungsoperation bestimmt, dass die Schwellenspannung (Vth) der Speicherzelle über der zugeordneten Verifizierungsspannung liegt. Ein Erfassungsvorgang kann bestimmen, ob eine Speicherzelle eine Spannung Vth über der zugeordneten Verifizierungsspannung aufweist, indem die zugehörige Verifizierungsspannung an das Steuer-Gate angelegt wird und ein Strom durch die Speicherzelle erfasst wird. Wenn der Strom relativ hoch ist, zeigt dies an, dass sich die Speicherzelle in einem leitfähigen Zustand befindet, sodass die Spannung Vth kleiner ist als die Spannung am Steuer-Gate. Wenn der Strom relativ niedrig ist, zeigt dies an, dass sich die Speicherzelle in einem nicht-leitfähigen Zustand befindet, sodass die Spannung Vth über der Spannung am Steuer-Gate liegt.
  • Zusätzlich zu den oben beschriebenen Verifizierungsvorgängen kann auch ein Bitabtastungsvorgang durchgeführt werden, um zu bestimmen, wann die Programmierung für eine Gruppe von Speicherzellen abgeschlossen ist. Wie hierin verwendet, ist eine „Bitabtastung“ ein Vorgang, der eine Anzahl von Zellen zählt, deren Programmiereigenschaft sich nicht über einen bestimmten Verifizierungsspannungspegel für einen bestimmten Speicherzustand verschoben hat. Bei NAND-Speicherzellen ist eine Bitabtastung ein Vorgang, der eine Anzahl von Speicherzellen zählt, deren Schwellenspannung sich nicht über einen bestimmten Verifizierungsspannungspegel für einen bestimmten Speicherzustand verschoben hat. Eine Bitabtastung für Zustand N ist beispielsweise eine Zählung einer Anzahl von Speicherzellen mit dem Zustand N, deren Schwellenspannung sich nicht über einen Verifizierungsspannungspegel für Zustand N verschoben hat. Auf ähnliche Weise ist eine Bitabtastung für Zustand (N + 1) eine Zählung einer Anzahl von Speicherzellen mit dem Zustand (N + 1), deren Schwellenspannung sich nicht über einen Verifizierungsspannungspegel für Zustand (N + 1) verschoben hat, und so weiter. Zur Vereinfachung wird sich die folgende Diskussion auf Bitabtastungsvorgänge für NAND-Speicherzellen beziehen. Der Durchschnittsfachmann wird verstehen, dass Bitabtastungsvorgänge auch für andere nichtflüchtige Speichertechnologien verwendet werden können.
  • Die Programmierung von Speicherzellen auf einen bestimmten Speicherzustand kann als abgeschlossen betrachtet werden, wenn der Bitabtastungszählwert für einen bestimmten Zustand kleiner als ein vorbestimmter Wert ist. In einigen Ausführungsformen ist der vorbestimmte Wert kleiner als eine Anzahl von Lesefehlern, die durch eine Fehlerkorrekturcodemaschine korrigiert werden können. Mit anderen Worten kann das Programmieren von Speicherzellen auf einen bestimmten Speicherzustand als abgeschlossen betrachtet werden, obwohl alle Speicherzellen, die auf den bestimmten Speicherzustand zu programmieren sind, keine Schwellenspannungen aufweisen, die sich über einen Verifizierungsspannungspegel für den Speicherzustand verschoben haben, solange die Anzahl von Speicherzellen mit „Schlecht“-Ergebnis kleiner ist als eine Anzahl von Lesefehlern, die durch eine Fehlerkorrekturcodemaschine korrigiert werden können.
  • Bitabtastungsberechnungen werden typischerweise auf der Grundlage von Ergebnissen von Verifizierungsvorgängen für eine bestimmte Programmieren-Verifizieren-Iteration durchgeführt. Insbesondere können nach dem Anlegen eines Programmierimpulses Verifizierungsvorgänge für einen oder mehrere Speicherzustände durchgeführt werden, und die Ergebnisse der Verifizierungsvorgänge können dann verwendet werden, um die Bitabtastung für einen bestimmten Speicherzustand zu berechnen.
  • Bei einigen Programmiertechniken wird nach jedem Programmierimpuls eine Bitabtastung für einen einzelnen Speicherzustand durchgeführt (eine „Einzelzustands-Bitabtastung“), und Bitabtastungen für höhere Speicherzustände werden nicht durchgeführt, bis der Bitabtastungszählwert für den niedrigeren Speicherzustand kleiner als der vorbestimmte Wert ist. Unter einigen Umständen kann das Durchführen solcher Einzelzustands-Bitabtastungen zur Folge haben, dass zusätzliche Verifizierungsvorgänge durchgeführt und zusätzliche Programmierimpulse an die Speicherzellen angelegt werden, selbst wenn die Speicherzellen eigentlich die Programmierung abgeschlossen haben. Dies ist unerwünscht, weil Zeit für die Durchführung von Verifizierungsvorgängen aufgewendet wird und das Anlegen unnötiger Programmierimpulse das Programm stören kann.
  • Bei anderen Programmiertechniken wird nach jedem Programmierimpuls eine Bitabtastung für mehrere (z. B. n) aufeinander folgende Speicherzustände (eine „n-Zustands-Bitabtastung“) durchgeführt. Unter einigen Umständen kann das Durchführen solcher n-Zustands-Bitabtastungen ebenfalls zur Folge haben, dass zusätzliche Verifizierungsvorgänge durchgeführt und zusätzliche Programmierimpulse an die Speicherzellen angelegt werden, selbst wenn die Speicherzellen eigentlich die Programmierung abgeschlossen haben. Wie in dem Fall der Einzelzustands-Bitabtastungen ist dies unerwünscht, weil Zeit für die Durchführung von Verifizierungsvorgängen aufgewendet wird und das Anlegen unnötiger Programmierimpulse das Programm stören kann.
  • Es wird eine Technologie zum Durchführen dynamischer Bitabtastungen einer variablen Zustandsanzahl beschrieben, die wiederholt umschalten zwischen dem Durchführen einer n-Zustands-Bitabtastung (z. B. Bitabtastungen, die für n aufeinander folgende Speicherzustände durchgeführt werden) nach jedem Programmierimpuls, bis erste vorgegebene Kriterien erfüllt sind, und dem Durchführen einer m-Zustands-Bitabtastung (z. B. Bitabtastungen, die für m aufeinander folgende Speicherzustände durchgeführt werden) nach jedem Programmierimpuls, bis zweite vorgegebene Kriterien erfüllt sind, wobei m > n und n > 0 ist. Außerdem wird eine Technologie zum selektiven Durchführen einer Einzelzustands-Bitabtastung oder einer dynamischen Bitabtastung einer variablen Zustandsanzahl nach jedem von mehreren Programmierimpulsen basierend auf einer bestimmten durchschnittlichen Schwellenspannungsänderung pro angelegtem Programmierimpuls beschrieben. Verschiedene andere Merkmale und Vorteile werden unten beschrieben.
  • 1A ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 100. Die Speichervorrichtung 100 kann einen oder mehrere Speicherchips 102 einschließen. Der Speicherchip 102 schließt ein Speicherarray 104 von Speicherzellen, Steuerschaltungen 106 und Lese-/Schreibschaltungen 108 ein. Das Speicherarray 104 ist durch Wortleitungen über einen Zeilen-Decodierer 110 und durch Bitleitungen über einen Spalten-Decodierer 112 adressierbar. Die Lese-/Schreibschaltungen 108 schließen mehrere Erfassungsblöcke SB1, SB2..., SBp ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Die Speichervorrichtung 100 kann auch eine Steuerung 114 einschließen. Befehle und Daten werden zwischen einem Host 116 und der Steuerung 114 über einen Datenbus 118 und zwischen der Steuerung 114 und dem einen oder den mehreren Speicherchips 102 über Leitungen 120 übertragen.
  • Das Speicherarray 104 kann zweidimensional oder dreidimensional sein. Das Speicherarray 104 kann ein oder mehrere Arrays von Speicherzellen einschließen. Das Speicherarray 104 kann eine monolithische dreidimensionale Speicherstruktur einschließen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat, wie beispielsweise einem Wafer, ohne dazwischen liegende Substrate ausgebildet sind. Das Speicherarray 104 kann jede Art von nichtflüchtigem Speicher einschließen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellenarrays ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliziumsubstrat angeordnet ist. Das Speicherarray 104 kann eine nichtflüchtige Speichervorrichtung sein, die Schaltungen aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
  • Die Steuerschaltungen 106 arbeiten mit den Lese-/Schreibschaltungen 108 zusammen, um Speichervorgänge auf dem Speicherarray 104 auszuführen, und schließen eine Zustandsmaschine 122, einen On-Chip-Adress-Decodierer 114 und ein Stromsteuermodul 126 ein. Die Zustandsmaschine 122 stellt eine Steuerung von Speichervorgängen auf Chipebene bereit. Der On-Chip-Adress-Decodierer 124 stellt eine Adressschnittstelle zwischen Adressen, die von einem Host oder einer Speichersteuerung verwendet werden, zu der Hardware-Adresse, die von dem Zeilen-Decodierer 110 und dem Spalten-Decodierer 112 verwendet wird, bereit. Das Stromsteuermodul 126 steuert den Strom und die Spannungen, die den Wortleitungen und Bitleitungen während Speichervorgängen zugeführt werden, und kann Treiber für Wortleitungen, SGS- und SGD-Transistoren und Sourceleitungen einschließen. Die Erfassungsblöcke SB1, SB2, ..., SBp können in einem Ansatz Bitleitungstreiber einschließen.
  • In Ausführungsformen können einige der Komponenten kombiniert werden. Bei verschiedenen Entwürfen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von dem Speicherarray 104 unterscheiden, als eine Steuerschaltung fungieren, die eingerichtet ist, um die hier beschriebenen Vorgänge durchzuführen. Zum Beispiel kann eine Steuerschaltung eine oder mehrere von Steuerschaltungen 106, Lese-/Schreibschaltungen 108, Zeilen-Decodierer 110, Spalten-Decodierer 112, Steuerung 114, Zustandsmaschine 122, Stromsteuermodul 126, Bitabtastungsvorgangsschaltung 150 und Erfassungsblöcken SBb, SB2, ..., SBp einschließen.
  • Die Steuerschaltungen können eine Programmierschaltung einschließen, die eingerichtet ist, um einen Programmiervorgang für Speicherzellen durchzuführen. Der Programmiervorgang schließt eine Vielzahl von Programmieren-Verifizieren-Iterationen ein, und in jeder Programmieren-Verifizieren-Iteration legt die Programmierschaltung einen oder mehrere Programmierimpulse an die Speicherzellen an. Die Steuerschaltungen können auch eine Abtastungsschaltung einschließen, die eingerichtet ist, um wiederholt umzuschalten zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem Programmierimpuls, bis erste vorbestimmte Kriterien erfüllt sind, und dem Durchführen einer m-Zustands-Bitabtastung nach jedem Programmierimpuls, bis zweite vorbestimmte Kriterien erfüllt sind, wobei m > n und n > 0.
  • Die Steuerschaltungen können auch eine erste Zählschaltung einschließen, die eingerichtet ist, um eine Anzahl von Speicherzellen zu zählen, die nicht auf einen gewünschten Speicherzustand für jeden von n Speicherzuständen programmiert wurden, und eine zweite Zählschaltung einschließen, die eingerichtet ist, um eine Anzahl von Speicherzellen zu zählen, die nicht auf einen gewünschten Speicherzustand für jeden von m Speicherzuständen programmiert wurden.
  • Die Steuerschaltungen können auch eine erste Bitabtastungsschaltung einschließen, die eingerichtet ist, um eine Einzelzustands-Bitabtastung nach jedem von mehreren Programmierimpulsen durchzuführen, und eine zweite Bitabtastungsschaltung einschließen, die eingerichtet ist, um eine dynamische Bitabtastung einer variablen Zustandsanzahl durch das Zählen von Bits Zustand für Zustand nach jedem von mehreren Programmierimpulsen durchzuführen. In Ausführungsformen können die erste Bitabtastungsschaltung und die zweite Bitabtastungsschaltung verschiedene Schaltungen oder die gleiche Schaltung sein.
  • Die Steuerschaltungen können auch eine Bitabtastungsauswahlschaltung einschließen, die eingerichtet ist, um basierend auf einer durchschnittlichen Speicherzellen-Schwellenspannungsänderung pro Programmierimpuls selektiv die erste Bitabtastungsschaltung oder die zweite Bitabtastungsschaltung zu aktivieren.
  • Die Steuerschaltungen können auch eine Bitabtastungsauswahlschaltung einschließen, die eingerichtet ist, um die erste Bitabtastungsschaltung zu aktivieren, wenn eine durchschnittliche Speicherzellen-Schwellenspannungsänderung pro Programmierimpuls kleiner als ein vorbestimmter Wert ist, und um die zweite Bitabtastungsschaltung zu aktivieren, wenn die durchschnittliche Speicherzellen-Schwellenspannungsänderung pro Programmierimpuls größer als der vorbestimmte Wert oder gleich diesem ist.
  • Zum Beispiel ist 1B ein Blockdiagramm einer beispielhaften Bitabtastungsvorgangsschaltung 150, die eine Programmierschaltung 152, eine Abtastungsschaltung 154, eine erste Zählschaltung 156, eine zweite Zählschaltung 158, eine erste Bitabtastungsschaltung 160, eine zweite Bitabtastungsschaltung 162 und eine Bitabtastungsauswahlschaltung 164 einschließt. Die Programmierschaltung 152 kann Software, Firmware und/oder Hardware einschließen, die z. B. die Schritte 1102-1120 von 11A implementiert.
  • Die Abtastungsschaltung 154 kann Software, Firmware und/oder Hardware einschließen, die z. B. die Schritte 1202a-1212 von 12A und die Schritte 1202b-1212 von 12C implementiert. Zum Beispiel zeigt 1C eine Ausführungsform einer Abtastungsschaltung 154, die einen Prozessor 166 und eine Bitabtastungsschaltung 168 einschließt. In Ausführungsformen schließt eine Speichervorrichtung (z. B. Speichervorrichtung 130 des Speicherarrays 104) Code ein, wie beispielsweise einen Satz von Anweisungen, und der Prozessor 166 ist betriebsfähig, um den Satz von Anweisungen auszuführen, um ein Steuersignal SELnm für die Bitabtastungsschaltung 168 bereitzustellen, um wiederholt umzuschalten zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem Programmierimpuls, bis erste vorbestimmte Kriterien erfüllt sind, und dem Durchführen einer m-Zustands-Bitabtastung nach jedem Programmierimpuls, bis zweite vorbestimmte Kriterien erfüllt sind, wobei m > n und n > 0 ist. In Ausführungsformen kann die Bitabtastungsschaltung 168 eine oder mehrere von der beispielhaften Bitabtastungsschaltung 1130a von 11B oder der beispielhaften Bitabtastungsschaltung 1130b von 11D sein.
  • Die erste Zählschaltung 156 kann Software, Firmware und/oder Hardware einschließen, die z. B. Schritt 1202a von 12A und Schritt 1202b von 12C implementiert. In Ausführungsformen kann die erste Zählschaltung 156 eine oder mehrere von der beispielhaften Bitabtastungsschaltung 1130a von 11B oder der beispielhaften Bitabtastungsschaltung 1130b von 11D sein.
  • Die zweite Zählschaltung 158 kann Software, Firmware und/oder Hardware einschließen, die z. B. Schritt 1208a von 12A und Schritt 1208b von 12C implementiert. In Ausführungsformen kann die zweite Zählschaltung 158 eine oder mehrere von der beispielhaften Bitabtastungsschaltung 1130a von 11B oder der beispielhaften Bitabtastungsschaltung 1130b von 11D sein.
  • Die erste Bitabtastungsschaltung 160 kann Software, Firmware und/oder Hardware einschließen, die z. B. Schritt 1226 von 12E implementiert, die zweite Bitabtastungsschaltung 162 kann Software, Firmware und/oder Hardware einschließen, die z. B. Schritt 1228 von 12E implementiert, und die Bitabtastungsauswahlschaltung 164 kann Software, Firmware und/oder Hardware einschließen, die z. B. Schritt 1224 von 12E implementiert.
  • Zum Beispiel zeigt 1D eine Ausführungsform einer Bitabtastungsauswahlschaltung 164, die einen Prozessor 170, eine erste Bitabtastungsschaltung 160 und eine zweite Bitabtastungsschaltung 162 einschließt. In Ausführungsformen kann die erste Bitabtastungsschaltung 160 die beispielhafte Bitabtastungsschaltung 1130a von 11B oder die beispielhafte Bitabtastungsschaltung 1130b von 11D sein. In Ausführungsformen kann die zweite Bitabtastungsschaltung 162 eine oder mehrere von der beispielhaften Bitabtastungsschaltung 1130a von 11B sein. In Ausführungsformen können die erste Bitabtastungsschaltung 160 und die zweite Bitabtastungsschaltung 162 verschiedene Schaltungen oder die gleiche Schaltung sein.
  • In Ausführungsformen schließt eine Speichervorrichtung (z. B. Speichervorrichtung 130 von Speicherarray 104) Code wie zum Beispiel einen Satz von Anweisungen ein, und der Prozessor 170 ist betreibbar, um den Satz von Anweisungen auszuführen, um ein Steuersignal SEL1 für die erste Bitabtastungsschaltung 160 und ein Steuersignal SEL2 zum selektiven Aktivieren der ersten Bitabtastungsschaltung 160 oder der zweiten Bitabtastungsschaltung 162 basierend auf einer durchschnittlichen Speicherzellen-Schwellenspannungsänderung pro Programmierimpuls bereitzustellen.
  • In Ausführungsformen schließt eine Speichervorrichtung (z. B. Speichervorrichtung 130 von Speicherarray 104) Code wie zum Beispiel einen Satz von Anweisungen ein, und der Prozessor 170 ist betreibbar, um den Satz von Anweisungen auszuführen, um ein Steuersignal SEL1 zum Aktivieren der ersten Bitabtastungsschaltung 160 bereitzustellen, wenn eine durchschnittliche Speicherzellen-Schwellenspannungsänderung pro Programmierimpuls kleiner als ein vorbestimmter Wert ist, und um ein Steuersignal SEL2 zum Aktivieren der zweiten Bitabtastungsschaltung bereitzustellen, wenn die durchschnittliche Speicherzellen-Schwellenspannungsänderung pro Programmierimpuls größer als der vorbestimmte Wert oder gleich diesem ist.
  • Die Steuerung 114 kann Speichervorrichtungen (Speicher) wie beispielsweise ROM 114a und RAM 114b, einen Prozessor 114c und eine Fehlerkorrekturcode(ECC)-Maschine 128 einschließen, die eine Anzahl von Lesefehlern korrigieren kann.
  • In einer Ausführungsform schließt eine Speichervorrichtung Code wie einen Satz von Anweisungen ein, und der Prozessor 114c ist betreibbar, um den Satz von Anweisungen auszuführen, um die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Prozessor 114c auf Code aus einer Speichervorrichtung 130 des Speicherarrays 104 zugreifen, zum Beispiel einem reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
  • Der Code kann zum Beispiel von der Steuerung 114 verwendet werden, um auf das Speicherarray 104 zuzugreifen, zum Beispiel für Programmier-, Lese- und Löschvorgänge. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Befehlen) einschließen. Der Bootcode ist eine Software, die die Steuerung während eines Boot- oder Startvorgangs initialisiert und der Steuerung 114 ermöglicht, auf das Speicherarray 104 zuzugreifen. Der Code kann von der Steuerung 114 verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. Beim Hochfahren ruft der Prozessor 114c den Bootcode aus dem ROM 114a oder der Speichervorrichtung 130 zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM 114b. Sobald er in den RAM 114b geladen ist, wird der Steuercode durch den Prozessor 114c ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie beispielsweise Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
  • Im Allgemeinen kann der Steuercode Anweisungen einschließen, um die hierin beschriebenen Funktionen einschließlich der weiter unten erläuterten Schritte der Flussdiagramme durchzuführen und um die Spannungswellenformen einschließlich der weiter unten erläuterten bereitzustellen.
  • Bei einer Ausführungsform ist der Host 116 eine Rechenvorrichtung (z. B. ein Laptop, ein Desktop, ein Smartphone, ein Tablet, eine Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (RAM, ROM, Flashspeicher, Festplattenlaufwerk, Solid-State-Memory) einschließt, die einen prozessorlesbaren Code (z. B. eine Software) zum Programmieren der einen oder der mehreren Prozessoren speichert, um die hierin beschriebenen Verfahren durchzuführen. Der Host kann auch einen zusätzlichen Systemspeicher, eine oder mehrere Eingabe-/Ausgabeschnittstellen und/oder eine oder mehrere Eingabe-/Ausgabevorrichtungen einschließen, die mit dem einem oder den mehreren Prozessoren in Kommunikation stehen.
  • Andere Arten von nichtflüchtigen Speichern zusätzlich zu NAND-Flash-Speichern können ebenfalls verwendet werden.
  • Halbleiterspeichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie Dynamic Random Access Memory-Vorrichtungen („DRAM-Vorrichtungen“) oder Static Random Access Memory-Vorrichtungen („SRAM-Vorrichtungen“), nichtflüchtige Speichervorrichtungen, wie Resistive Random Access Memory („ReRAM“), Electrically Erasable Programmable Read Only Memory („EEPROM“), Flash-Speicher (der auch als Untergruppe eines EEPROM betrachtet werden kann), Ferroelectric Random Access Memory („FRAM“) und Magnetoresistive Random Access Memory („MRAM“), und andere Halbleiterelemente, die Informationen speichern können. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein widerstandsschaltendes Speicherelement wie ein Anti-Fuse- oder Phasenwechselmaterial und gegebenenfalls ein Lenkelement wie eine Diode oder einen Transistor einschließen. Weiterhin schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die eine Ladungsspeicherregion enthalten, wie ein Floating-Gate, leitfähige Nanopartikel oder ein dielektrisches Ladungsspeichermaterial.
  • Die exakte Art der Speicherzellen in dem Speicherarray 104 ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicherarray-Architekturen oder Speichertechnologien können verwendet werden, um das Speicherarray 104 zu bilden. Es ist keine spezielle nichtflüchtige Speichertechnologie für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen des Speicherarrays 104 schließen ReRAM-Speicher, magnetoresistive Speicher (z. B. MRAM, Spin Transfer Torque MRAM, Spin Orbit Torque MRAM), Phasenwechselspeicher (z. B. PCM) und dergleichen ein. Beispiele von geeigneten Technologien für die Speicherzellen-Architekturen des Speicherarrays 104 schließen zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunkt-Arrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
  • Ein Beispiel eines ReRAM- oder PCMRAM-Kreuzpunktspeichers schließt reversible Widerstandsschaltelemente ein, die in Kreuzpunktarrays angeordnet sind, auf die durch X-Leitungen und Y-Leitungen (z. B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente einschließen. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines Festelektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden einschließen, eine relativ inerte (z. B. Wolfram) und eine elektrochemisch aktive (z. B. Silber oder Kupfer), mit einer dünnen Folie des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, sodass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmschwellenwerten als Funktion der Temperatur aufweisen.
  • Ein magnetoresistiver Speicher (MRAM) speichert Daten durch Magnetspeicherelemente. Die Elemente sind aus zwei durch eine dünne Isolierschicht getrennte ferromagnetischen Platten gebildet, von denen jede eine Magnetisierung halten kann. Eine der beiden Platten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Platte kann so geändert werden, dass sie der eines externen Felds entspricht, um Speicher zu speichern. Eine Speichervorrichtung wird aus einem Gitter solcher Speicherzellen aufgebaut. Bei einer Ausführungsform zum Programmieren liegt jede Speicherzelle zwischen einem Paar von Schreibleitungen, die in rechten Winkeln zueinander parallel zu der Zelle angeordnet sind, eine über und eine unter der Zelle. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt.
  • Phasenwechselspeicher (PCM) nutzen das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nichtthermische Phasenänderungen zu erreichen, indem einfach der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle einschließt.
  • Der Durchschnittsfachmann wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur beschränkt ist, sondern viele relevante Speicherstrukturen gemäß dem Geist und Umfang der Technologie, wie hierin beschrieben und wie einem Fachmann der Technik bekannt, abdeckt.
  • Mehrere Speicherelemente können derart eingerichtet sein, dass sie in Reihe geschaltet sind, oder derart, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Eine NAND-Kette ist ein Beispiel eines Satzes von in Reihe geschalteten Transistoren, die Speicherzellen und Auswahlgate(SG)-Transistoren einschließen.
  • Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind Beispiele, und Speicherelemente können anderweitig eingerichtet sein.
  • Die Halbleiterspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.
  • In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z. B. in einer x-y-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Speicherelementen befestigt wird, nachdem diese gebildet werden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen.
  • Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wo die z-Richtung im Wesentlichen senkrecht ist und die x- und y-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats verlaufen).
  • Als nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als Stapel mehrerer zweidimensionaler Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zur Hauptfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-y-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
  • Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y) Speichervorrichtungsebene zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch als eine NOR-Konfiguration und als eine ReRAM-Konfiguration ausgelegt sein.
  • Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen über einem einzelnen Substrat gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten mindestens teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium, einschließen. In einem monolithischen dreidimensionalen Speicherarray werden die Schichten, die die einzelnen Speichervorrichtungsebenen des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.
  • Zusätzlich können zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Zum Beispiel können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet und dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Weiterhin können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Ein Fachmann wird erkennen, dass diese Technologie nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Technologie abdeckt, wie hier beschrieben und wie es von einem Fachmann verstanden wird.
  • 2 zeigt Blöcke von Speicherzellen in einer beispielhaften zweidimensionalen Konfiguration des Speicherarrays 104 von 1. Das Speicherarray 104 kann viele Blöcke einschließen. Jeder beispielhafte Block 200 und 202 schließt eine Anzahl NAND-Ketten und jeweilige Bitleitungen, z. B. BL0, BL1, ..., ein, die von den Blöcken gemeinsam genutzt werden. Jede NAND-Kette ist an einem Ende mit einem Drain-Auswahlgate-Transistor (SGD-Transistor) verbunden und an ihrem anderen Ende mit einem Source-Auswahlgate-Transistor (SGS-Transistor) verbunden, der wiederum mit einer gemeinsamen Sourceleitung 204 verbunden ist.
  • Die Steuer-Gates der SGD-Transistoren sind über eine gemeinsame SGD-Leitung verbunden, und die Steuer-Gates der SGS-Transistoren sind über eine gemeinsame SGS-Leitung verbunden. Zwischen den SGD-Transistoren und den SGS-Transistoren erstrecken sich sechzehn Wortleitungen, beispielsweise WL0-WL15. In einigen Fällen können auch Dummy-Wortleitungen, die keine Benutzerdaten enthalten, in dem Speicherarray angrenzend zu SGD/SGS-Transistoren verwendet werden. Solche Dummy-Wortleitungen können die Randdatenwortleitung vor bestimmten Randeffekten abschirmen.
  • Ein Floating-Gate-Speicher ist ein Typ eines nichtflüchtigen Speichers, der in dem Speicherarray 104 bereitgestellt sein kann. Die 3A-3B zeigen Querschnittsansichten von beispielhaften Floating-Gate-Speicherzellen (z. B. in dem Speicherarray 104 von 1) in NAND-Ketten. In 3A geht die Richtung einer Bitleitung oder NAND-Kette in die Seite hinein, und die Richtung einer Wortleitung geht von links nach rechts. 3A zeigt die Speicherzellen 300, 302 und 304, die jeweils mit einer Wortleitung 306 gekoppelt sind. Die Speicherzelle 300 schließt ein Steuer-Gate 308, ein Floating-Gate 310, eine Tunneloxidschicht 312 und eine Kanalregion 314 ein. Die Speicherzelle 302 schließt ein Steuer-Gate 316, ein Floating-Gate 318, eine Tunneloxidschicht 320 und eine Kanalregion 322 ein. Die Speicherzelle 304 schließt ein Steuer-Gate 324, ein Floating-Gate 326, eine Tunneloxidschicht 328 und eine Kanalregion 330 ein. Jede der Speicherzellen 300, 320 und 304 befindet sich in einer anderen jeweiligen NAND-Kette. Ein Interpolydielektrikum(IPD)-Schicht 332 ist ebenfalls dargestellt. Die Steuer-Gates 308, 316 und 324 sind Abschnitte der Wortleitung 306.
  • Bezug nehmend auf 3B schließt eine NAND-Kette 334 einen SGS-Transistor 336, beispielhafte Speicherzellen 300, 338, ..., 340 und 342 und einen SGD-Transistor 344 ein. Die Speicherzelle 300 schließt das Steuer-Gate 308, die IPD-Schicht 332, das Floating-Gate 310 und die Tunneloxidschicht 312 ein. Durchgänge in der IPD-Schicht 332 in den SGS- und SGD-Transistoren ermöglichen, dass die Steuer-Gate-Schichten und Floating-Gate-Schichten kommunizieren. In einer Ausführungsform können die Steuer-Gate-Schichten und die Floating-Gate-Schichten Polysilizium sein und die Tunneloxidschicht kann Siliziumoxid sein. Die IPD-Schicht 332 kann ein Stapel von Nitriden (N) und Oxiden (O) sein, wie beispielsweise in einer N-O-N-O-N-Konfiguration.
  • Die NAND-Kette 334 kann auf einem Substrat ausgebildet sein, das eine Substratregion vom p-Typ 346, eine Wanne vom n-Typ 348 und eine Wanne vom p-Typ 350 einschließt. Die Source/Drain-Diffusionsregionen vom n-Typ sd1, sd2, sd3, sd4, sd5, sd6 und sd7 sind in der Wanne vom p-Typ 350 ausgebildet. Eine Kanalspannung, Vch, kann direkt an die Kanalregion des Substrats angelegt werden.
  • Ein anderer Typ eines nichtflüchtigen Speichers ist eine Ladungsfänger-Speicherzelle, die ein nicht-leitfähiges dielektrisches Material verwendet, um Ladung zu speichern. Die 4A-4B zeigen Querschnittsansichten von beispielhaften Ladungsfänger-Speicherzellen (z. B. in dem Speicherarray 104 von 1) in NAND-Ketten. In 4A ist die Ansicht in Richtung einer Wortleitung. Ladungsfänger-Speichertechnologie verwendet einen Isolator wie eine SiN-Folie zum Speichern von Elektronen, im Gegensatz zu einer Floating-Gate-MOSFET-Technologie, die einen Leiter wie beispielsweise dotiertes polykristallines Silizium verwendet, um Elektronen zu speichern.
  • 4A zeigt die Speicherzellen 400, 402 und 404, die jeweils mit einer Wortleitung 406 gekoppelt sind. Die Speicherzelle 400 schließt ein Steuer-Gate 408, eine Ladungsfängerschicht 410, eine Polysiliziumschicht 412, eine Tunnelschicht 414 und einen Abschnitt einer Kanalregion 416 ein. Die Speicherzelle 402 schließt ein Steuer-Gate 418, eine Ladungsfängerschicht 420, eine Polysiliziumschicht 422, eine Tunnelschicht 424 und einen Abschnitt einer Kanalregion 426 ein. Die Speicherzelle 404 schließt ein Steuer-Gate 428, eine Ladungsfängerschicht 430, eine Polysiliziumschicht 432, eine Tunnelschicht 434 und einen Abschnitt der Kanalregion 436 ein.
  • Als ein Beispiel erstreckt sich die Wortleitung 406 über NAND-Ketten hinweg, die jeweilige Kanalregionen 416, 426 und 436 einschließen. Abschnitte der Wortleitung 406 stellen die Steuer-Gates 408, 418 und 428 bereit. Unter der Wortleitung 406 befinden sich eine IPD-Schicht 438, Ladungsfängerschichten 410, 420 und 430, Polysiliziumschichten 412, 422 und 432 und Tunnelschichten 414, 424 und 434. Jede der Ladungsfängerschichten 410, 420 und 430 erstreckt sich kontinuierlich in einer jeweiligen NAND-Kette.
  • Bezug nehmend auf 4B schließt eine NAND-Kette 440 einen SGS-Transistor 442, Speicherzellen 400, 444, .., 446 und 448 sowie einen SGD-Transistor 450 ein. Die NAND-Kette 440 kann auf einem Substrat ausgebildet sein, das eine Substratregion vom p-Typ 452, eine Wanne vom n-Typ 454 und eine Wanne vom p-Typ 456 einschließt. Die Source/Drain-Diffusionsregionen vom n-Typ sd1, sd2, sd3, sd4, sd5, sd6 und sd7 sind in der Wanne vom p-Typ 456 ausgebildet. Eine Kanalspannung, Vch, kann direkt an die Kanalregion des Substrats angelegt werden. Die Speicherzelle 400 schließt das Steuer-Gate 408 und die IPD-Schicht 438 über der Ladungsfängerschicht 410, die Polysiliziumschicht 412, die Tunnelschicht 414 und eine Kanalregion 416 ein.
  • Die Steuer-Gate-Schicht kann zum Beispiel Polysilizium sein und die Tunnelschicht kann zum Beispiel Siliziumoxid sein. Die IPD-Schicht kann ein Stapel von Dielektrika mit hohem k-Wert wie AlOx oder HfOx sein, die dazu beitragen, das Kopplungsverhältnis zwischen der Steuer-Gate-Schicht und der Ladungsfänger- - oder Ladungsspeicherschicht zu erhöhen. Die Ladungsfängerschicht kann zum Beispiel eine Mischung aus Siliziumnitrid und Siliziumoxid sein.
  • In diesem Beispiel erstrecken sich die Schichten 410, 412 und 414 kontinuierlich in der NAND-Kette. In einem anderen Ansatz können Abschnitte der Schichten 410, 412 und 414, die sich zwischen den Steuer-Gates 408, 418 und 428 befinden, entfernt werden, wodurch eine obere Oberfläche des Kanals 416 freigelegt wird.
  • 5 zeigt ein beispielhaftes Blockdiagramm eines Erfassungsblocks SB1 von 1. Der Erfassungsblock schließt mehrere Erfassungsschaltungen 500a, 502a, 504a und 506a ein, die den Datenzwischenspeichern 500b, 502b, 504b bzw. 506b zugeordnet sind. Der Erfassungsblock SB1 schließt weiterhin eine Erfassungsschaltungssteuerung 508 ein, die mit den Erfassungsschaltungen 500a, 502a, 504a und 506a und den Datenzwischenspeichern 500b, 502b, 504b und 506b kommunizieren kann. Die Erfassungsschaltungsteuerung 508 kann eine Vorladeschaltung 510, einen Speicher 512 und einen Prozessor 514 einschließen. Die Vorladeschaltung 510 stellt eine Spannung für jede der Erfassungsschaltungen 500a, 502a, 504a und 506a zum Einstellen einer Vorladespannung bereit. Der Speicher 512 kann Code speichern, der durch den Prozessor 514 ausführbar ist, um die hier beschriebenen Funktionen auszuführen. Diese Funktionen können das Lesen der Datenzwischenspeicher 500b, 502b, 504b und 506b, das Einstellen von Bitwerten in den Datenzwischenspeichern 500b, 502b, 504b und 506b und das Bereitstellen von Spannungen zum Einstellen von Vorladepegeln in Erfassungsknoten der Erfassungsschaltungen 500a, 502a, 504a und 506a einschließen.
  • 6A ist eine perspektivische Ansicht eines Satzes von Blöcken 600 in einer beispielhaften dreidimensionalen Konfiguration des Speicherarrays 104 von 1. Auf einem Substrat 602 befinden sich die beispielhaften Blöcke BLKO, BLK1, BLK2 und BLK3 von Speicherzellen und ein Peripheriebereich 604 mit Schaltungen zur Verwendung durch die Blöcke BLKO, BLK1, BLK2 und BLK3. Zum Beispiel können die Schaltungen die Spannungstreiber 606 einschließen, die mit Steuer-Gate-Schichten der Blöcke BLKO, BLK1, BLK2 und BLK3 verbunden werden können. Das Substrat 602 kann auch Schaltungen unter den Blöcken BLKO, BLK1, BLK2 und BLK3 und eine oder mehrere untere Metallschichten einschließen, die in Leiterbahnen strukturiert sind, um Signale der Schaltungen zu tragen.
  • In einer Ausführungsform sind die Blöcke BLKO, BLK1, BLK2 und BLK3 in einer Zwischenregion 608 der Speichervorrichtung ausgebildet. In einem oberen Region 610 der Speichervorrichtung sind eine oder mehrere obere Metallschichten in Leiterbahnen strukturiert, um Signale der Schaltungen zu tragen. Jeder der Blöcke BLKO, BLK1, BLK2 und BLK3 schließt einen gestapelten Speicherzellenbereich ein, wobei abwechselnde Ebenen des Stapels Wortleitungen darstellen. In einer Ausführungsform hat jeder Block BLKO, BLK1, BLK2 und BLK3 gegenüberliegende abgestufte Seiten, von denen sich vertikale Kontakte nach oben zu einer oberen Metallschicht erstrecken, um Verbindungen zu Leiterbahnen herzustellen. Während vier Blöcke BLKO, BLK1, BLK2 und BLK3 beispielhaft dargestellt sind, können zwei oder mehr Blöcke verwendet werden, die sich in x- und/oder y-Richtung erstrecken.
  • In einer Ausführungsform stellt die Länge der Ebene in der x-Richtung eine Richtung dar, in der sich Signalpfade zu Wortleitungen in der einen oder den mehreren oberen Metallschichten erstrecken (eine Wortleitungs- oder SGD-Leitungsrichtung), und die Breite der Ebene in der y-Richtung stellt eine Richtung dar, in der sich Signalpfade zu Bitleitungen in der einen oder den mehreren oberen Metallschichten (einer Bitleitungsrichtung) erstrecken. Die z-Richtung stellt eine Höhe der Speichervorrichtung dar.
  • 6B stellt eine beispielhafte Querschnittsansicht eines Abschnitts von einem der Blöcke (z. B. BLK0) von 6A dar. Der Block BLK0 schließt einen Stapel 612 von abwechselnd leitfähigen und dielektrischen Schichten ein. In diesem Beispiel schließen die leitfähigen Schichten ein: zwei SGD-Schichten, zwei SGS-Schichten und vier Dummy-Wortleitungsschichten DWLD0, DWLD1, DWLS0 und DWLS1 zusätzlich zu den Daten-Wortleitungsschichten (Wortleitungen) WLL0-WLL10. Die dielektrischen Schichten werden als DL0-DL19 bezeichnet. Weiterhin sind Regionen des Stapels 612 dargestellt, die NAND-Ketten NS1 und NS2 einschließen. Jede NAND-Kette umschließt ein Speicherloch 614 oder 616, das mit Materialien gefüllt ist, die Speicherzellen bilden, die den Wortleitungen benachbart sind. Eine Region 618 des Stapels ist in 6C ausführlicher gezeigt.
  • Der Stapel 612 schließt ein Substrat 620, eine Isolierfolie 622 auf dem Substrat 620 und einen Abschnitt einer Sourceleitung SL ein. NS1 weist ein Sourceende 624 an einer Unterseite 626 des Stapels 612 und ein Drainende 628 an einer Oberseite 630 des Stapels 612 auf. Metallgefüllte Schlitze 632 und 634 können periodisch über den Stapel 612 hinweg als Verbindungen bereitgestellt werden, die sich durch den Stapel 612 erstrecken, um beispielsweise die Sourceleitung SL mit einer Leitung über dem Stapel 612 zu verbinden. Die Schlitze 632 und 634 können während der Herstellung der Wortleitungen verwendet und anschließend mit Metall gefüllt werden. Ein Abschnitt einer Bitleitung BL0 ist auch dargestellt. Ein leitfähiger Weg 636 verbindet das Drainende 628 mit BL0.
  • 6C zeigt eine Detailansicht der Region 618 des Stapels von 6A. Speicherzellen sind an den verschiedenen Ebenen des Stapels an dem Schnittpunkt einer Wortleitungsschicht und eines Speicherlochs ausgebildet. Bei diesem Beispiel werden SGD-Transistoren 640 und 642 über Dummyspeicherzellen 644 und 646 und einer Datenspeicherzelle MC bereitgestellt. Eine Reihe von Schichten kann entlang der Seitenwand (SW) des Speicherlochs 648 und/oder innerhalb jeder Wortleitungsschicht abgeschieden werden, z. B. unter Verwendung von atomarer Schichtabscheidung. Beispielsweise kann jede Säule (z. B. die Säule, die durch die Materialien innerhalb eines Speicherlochs gebildet wird) eine Ladungsfängerschicht oder -folie 650 wie SiN oder ein anderes Nitrid, eine Tunnelschicht 652, einen Polysiliziumkörper oder Kanal 654 und einen dielektrischen Kern 656 einschließen.
  • Eine Wortleitungsschicht kann ein Blockieroxid / Blockiermaterial mit hohem k-Wert 658, eine Metallbarriere 660 und ein leitfähiges Metall 662 wie Wolfram als ein Steuer-Gate einschließen. Zum Beispiel werden Steuer-Gates 662, 664, 666, 668 und 670 bereitgestellt. In diesem Beispiel sind alle Schichten mit Ausnahme des Metalls in dem Speicherloch bereitgestellt. In anderen Ansätzen können einige der Schichten in der Steuer-Gate-Schicht sein. Zusätzliche Säulen sind gleichermaßen in den verschiedenen Speicherlöchern ausgebildet. Eine Säule kann eine säulenförmige aktive Fläche (AA) einer NAND-Kette bilden.
  • Wenn eine Speicherzelle programmiert wird, werden Elektronen in einem Teil der Ladungsfängerschicht gespeichert, welche der Speicherzelle zugeordnet ist. Diese Elektronen werden in die Ladungsfängerschicht aus dem Kanal und durch die Tunnelschicht gezogen. Die Schwellenspannung (Vth) einer Speicherzelle wird proportional zur Menge der gespeicherten Ladung erhöht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück.
  • Jedes der Speicherlöcher kann mit einer Vielzahl von ringförmigen Schichten gefüllt sein, die eine Blockieroxidschicht, eine Ladungsfängerschicht, eine Tunnelschicht und eine Kanalschicht einschließen. Eine Kernregion jedes der Speicherlöcher ist mit einem Körpermaterial gefüllt und die Vielzahl von ringförmigen Schichten befindet sich zwischen der Kernregion und der Wortleitung in jedem der Speicherlöcher.
  • Die NAND-Kette kann als einen Floating-Body-Kanal aufweisend betrachtet werden, da die Länge des Kanals nicht auf einem Substrat ausgebildet ist. Weiterhin wird die NAND-Kette durch eine Vielzahl von Wortleitungsschichten bereitgestellt, die übereinander in einem Stapel angeordnet und durch dielektrische Schichten voneinander getrennt sind.
  • 7A zeigt eine Draufsicht einer beispielhaften Wortleitungsschicht WLL0 des Stapels 612 von 6B. Wie zuvor erwähnt, kann eine 3D-Speichervorrichtung einen Stapel von abwechselnd leitfähigen und dielektrischen Schichten einschließen. Die leitfähigen Schichten stellen die Steuer-Gates der SGS/SGD-Transistoren und Speicherzellen bereit. Die für die SGS/SGD-Transistoren verwendeten Schichten sind SG-Schichten, und die für die Speicherzellen verwendeten Schichten sind Wortleitungsschichten. Ferner sind im Stapel Speicherlöcher gebildet und mit einem Ladungseinfangmaterial und einem Kanalmaterial gefüllt. Dadurch wird eine vertikale NAND-Kette gebildet. Sourceleitungen sind mit den NAND-Ketten unter dem Stapel verbunden, und Bitleitungen sind mit den NAND-Ketten über dem Stapel verbunden.
  • Ein Block BLK in einer dreidimensionalen Speichervorrichtung kann in Teilblöcke unterteilt sein, wobei jeder Teilblock einen Satz von NAND-Ketten einschließt, die eine gemeinsame SGD-Steuerleitung (z. B. die SGD-Leitungen/Steuer-Gates SGD0, SGD1, SGD2 und SGD3 in den Teilblöcken SBa, SBb, SBc bzw. SBd) aufweisen. Ferner kann eine Wortleitungsschicht in einem Block in Regionen unterteilt sein. Jede Region in einem jeweiligen Teilblock kann sich zwischen Schlitzen erstrecken, die periodisch in dem Stapel ausgebildet sind, um die Wortleitungsschichten während des Herstellungsprozesses der Speichervorrichtung zu verarbeiten. Diese Bearbeitung kann das Ersetzen eines Opfermaterials der Wortleitungsschichten durch Metall einschließen.
  • Im Allgemeinen sollte der Abstand zwischen den Schlitzen relativ klein sein, um eine Grenze für den Abstand zu berücksichtigen, den ein Ätzmittel lateral zurücklegen kann, um das Opfermaterial zu entfernen, und über den das Metall sich bewegen kann, um einen Hohlraum zu füllen, der durch das Entfernen des Opfermaterials erzeugt wird. Zum Beispiel kann der Abstand zwischen Schlitzen einige Reihen von Speicherlöchern zwischen benachbarten Schlitzen zulassen. Das Layout der Speicherlöcher und Schlitze sollte auch eine Grenze in der Anzahl von Bitleitungen berücksichtigen, die sich über die Region erstrecken können, während jede Bitleitung mit einer anderen Speicherzelle verbunden ist. Nach der Bearbeitung der Wortleitungsschichten können die Schlitze optional mit Metall gefüllt werden, um eine Verbindung durch den Stapel bereitzustellen.
  • Diese Figur und andere sind nicht notwendigerweise maßstabsgetreu. In der Praxis können die Regionen in der x-Richtung relativ zur y-Richtung viel länger sein als dargestellt, um zusätzliche Speicherlöcher unterzubringen.
  • In diesem Beispiel gibt es vier Reihen von Speicherlöchern zwischen benachbarten Schlitzen. Eine Zeile ist hier eine Gruppe von Speicherlöchern, die in x-Richtung ausgerichtet sind. Außerdem befinden sich die Zeilen von Speicherlöchern in einem gestaffelten Muster, um die Dichte der Speicherlöcher zu erhöhen. Die Wortleitungsschicht oder Wortleitung ist in Regionen WLL0a, WLL0b, WLL0c und WLL0d unterteilt, die jeweils durch einen Verbinder 700 verbunden sind. Bei einem Ansatz kann die letzte Region einer Wortleitungsschicht in einem Block mit einer ersten Region einer Wortleitungsschicht in einem nächsten Block verbunden sein. Der Verbinder 700 wiederum ist mit einem Spannungstreiber für die Wortleitungsschicht verbunden.
  • Die Region WLL0a hat beispielhafte Speicherlöcher 702 und 704 entlang einer Linie 706. Die Region WLL0b hat beispielhafte Speicherlöcher 708 und 710. Die Region WLL0c hat beispielhafte Speicherlöcher 712 und 714. Die Region WLL0d hat beispielhafte Speicherlöcher 716 und 718. Die Speicherlöcher sind auch in 7B gezeigt. Jedes Speicherloch kann Teil einer entsprechenden NAND-Kette sein. Zum Beispiel können die Speicherlöcher 702, 708, 712 und 716 Teil der NAND-Ketten NS0_SBa, NS0_SBb, NS0_SBc bzw. NS0_SBd sein.
  • Jeder Kreis stellt den Querschnitt eines Speicherlochs an einer Wortleitungsschicht oder SG-Schicht dar. Jeder Kreis, der mit gestrichelten Linien gezeigt ist, stellt Speicherzellen dar, die durch die Materialien in dem Speicherloch und durch die benachbarte Wortleitungsschicht bereitgestellt werden. Zum Beispiel befinden sich die Speicherzellen 720 und 722 in WLL0a, die Speicherzellen 724 und 726 befinden sich in WLL0b, die Speicherzellen 728 und 730 befinden sich in WLL0c und die Speicherzellen 732 und 734 befinden sich in WLL0d. Diese Speicherzellen befinden sich auf einer gemeinsamen Höhe in dem Stapel.
  • Mit Metall gefüllte Schlitze 736, 738, 740 und 742 (z. B. Metallverbindungen) können zwischen und nebenstehend zu den Rändern der Regionen WLL0a-WLL0d angeordnet sein. Die mit Metall gefüllten Schlitze stellen einen leitfähigen Pfad vom Boden des Stapels zur Oberseite des Stapels bereit. Beispielsweise kann eine Sourceleitung an der Unterseite des Stapels mit einer leitfähigen Leitung über dem Stapel verbunden sein, wobei die leitfähige Leitung mit einem Spannungstreiber in einer peripheren Region der Speichervorrichtung verbunden ist. Siehe auch 8A für weitere Details der Teilblöcke SBa-SBd von 7A.
  • 7B zeigt eine Draufsicht auf eine beispielhafte obere dielektrische Schicht DL19 des Stapels von 6B. Die dielektrische Schicht DL19 ist in die Regionen DL19a, DL19b, DL19c und DI19d unterteilt. Jede Region kann mit einem jeweiligen Spannungstreiber verbunden sein. Dies ermöglicht, dass ein Satz von Speicherzellen in einer Region einer Wortleitungsschicht gleichzeitig programmiert wird, wobei jede Speicherzelle in einer jeweiligen NAND-Kette ist, die mit einer jeweiligen Bitleitung verbunden ist. Eine Spannung kann auf jeder Bitleitung eingestellt werden, um die Programmierung während jeder Programmierspannung zu ermöglichen oder zu unterbinden.
  • Die Region DI19a hat die beispielhaften Speicherlöcher 702 und 704 entlang einer Linie 744, die mit einer Bitleitung BL0 zusammenfällt. Eine Anzahl von Bitleitungen erstreckt sich über die Speicherlöcher und ist mit den Speicherlöchern verbunden, wie durch die „X“-Symbole angedeutet. BL0 ist mit einem Satz von Speicherlöchern verbunden, der die Speicherlöcher 704, 710, 714 und 718 einschließt. Eine andere beispielhafte Bitleitung BL1 ist mit einem Satz von Speicherlöchern verbunden, der die Speicherlöcher 702, 708, 712 und 716 einschließt. Die mit Metall gefüllten Schlitze 736, 738, 740 und 742 von 7A sind ebenfalls dargestellt, da sie sich vertikal durch den Stapel erstrecken. Die Bitleitungen können in einer Sequenz BL0-BL23 über die DL19-Schicht in der x-Richtung nummeriert sein.
  • Unterschiedliche Teilmengen von Bitleitungen sind mit Zellen in verschiedenen Reihen verbunden. Zum Beispiel sind BL0, BL4, BL8, BL12, BL16 und BL20 mit Zellen in einer ersten Reihe von Zellen am rechten Rand jeder Region verbunden. BL2, BL6, BL10, BL14, BL18 und BL22 sind mit Zellen in einer benachbarten Reihe von Zellen verbunden, angrenzend an die erste Reihe am rechten Rand. BL3, BL7, BL11, BL15, BL19 und BL23 sind mit Zellen in einer ersten Reihe von Zellen am linken Rand jeder Region verbunden. BL1, BL5, BL9, BL13, BL17 und BL21 sind mit Zellen in einer benachbarten Reihe von Zellen angrenzend an die erste Reihe am linken Rand verbunden.
  • 8A zeigt ein Beispiel von NAND-Ketten in den Teilblöcken SBa-SBd von 7A. Die Teilblöcke sind konsistent mit der Struktur von 6B. Die leitfähigen Schichten in dem Stapel sind zur Bezugnahme auf der linken Seite dargestellt. Jeder Teilblock schließt mehrere NAND-Ketten ein, wobei eine beispielhafte NAND-Kette dargestellt ist. Beispielsweise schließt SBa eine beispielhafte NAND-Kette NS0_SBa ein, SBb schließt eine beispielhafte NAND-Kette NS0_SBb ein, SBc schließt eine beispielhafte NAND-Kette NS0_SBc ein und SBd schließt eine beispielhafte NAND-Kette NS0_SBd ein.
  • Zusätzlich schließt NS0_SBa die SGS-Transistoren 800 und 801, die Dummyspeicherzellen 802 und 803, die Datenspeicherzellen 804, 805, 806, 807, 808, 809, 810, 811, 812, 813 und 814, die Dummyspeicherzellen 815 und 816 und die SGD-Transistoren 817 und 818 ein.
  • NS0_SBb schließt die SGS-Transistoren 820 und 821, die Dummyspeicherzellen 822 und 823, die Datenspeicherzellen 824, 825, 826, 827, 828, 829, 830, 831, 832, 833 und 834, die Dummyspeicherzellen 835 und 836 und die SGD-Transistoren 837 und 838 ein.
  • NS0_SBc schließt die SGS-Transistoren 840 und 841, die Dummyspeicherzellen 842 und 843, die Datenspeicherzellen 844, 845, 846, 847, 848, 849, 850, 851, 852, 853 und 854, die Dummyspeicherzellen 855 und 856 und die SGD-Transistoren 857 und 858 ein.
  • NS0_SBd schließt die SGS-Transistoren 860 und 861, die Dummyspeicherzellen 862 und 863, die Datenspeicherzellen 864, 865, 866, 867, 868, 869, 870, 871, 872, 873 und 874, die Dummyspeicherzellen 875 und 876 und die SGD-Transistoren 877 und 878 ein.
  • Bei einer gegebenen Höhe in dem Block befindet sich ein Satz von Speicherzellen in jedem Teilblock auf einer gemeinsamen Höhe. Zum Beispiel ist ein Satz von Speicherzellen (einschließlich der Speicherzelle 804) unter einer Vielzahl von Speicherzellen entlang sich verjüngender Speicherlöcher in einem Stapel aus abwechselnd leitfähigen und dielektrischen Schichten ausgebildet. Der eine Satz von Speicherzellen befindet sich auf einer bestimmten Höhe z0 in dem Stapel. Ein weiterer Satz von Speicherzellen (einschließlich der Speicherzelle 824), die mit der einen Wortleitung (WLL0) verbunden sind, befindet sich ebenfalls auf der bestimmten Höhe. In einem anderen Ansatz befindet sich der weitere Satz von Speicherzellen (z. B. einschließlich der Speicherzelle 812), die mit einer anderen Wortleitung (z. B. WLL8) verbunden sind, auf einer anderen Höhe (z8) in dem Stapel.
  • 8B zeigt eine weitere beispielhafte Ansicht von NAND-Ketten in Teilblöcken. Die NAND-Ketten schließen NS0_SBa, NS0_SBb, NS0_SBc und NS0_SBd ein, die in diesem Beispiel 48 Wortleitungen, WL0-WL47, aufweisen. Jeder Teilblock schließt einen Satz NAND-Ketten ein, die sich in der x-Richtung erstrecken und die eine gemeinsame SGD-Leitung aufweisen, z. B. SGD0, SGD1, SGD2 oder SGD3. In diesem vereinfachten Beispiel gibt es nur einen SGD-Transistor und einen SGS-Transistor in jeder NAND-Kette. Die NAND-Ketten NS0_SBa, NS0_SBb, NS0_SBc und NS0_SBd befinden sich in den Teilblöcken SBa, SBb, SBc bzw. SBd. Ferner sind beispielsweise Gruppen von Wortleitungen G0, G1 und G2 dargestellt.
  • Ein Programmiervorgang für einen Satz von Speicherzellen beinhaltet typischerweise das Anlegen einer Reihe von Programmierspannungs-Impulsen (Vpgm-Impulsen) an die Speicherzellen, nachdem die Speicherzellen in einem gelöschten Zustand bereitgestellt sind. Jeder Vpgm-Impuls wird in einer Programmschleife bereitgestellt, auch als eine Programmieren-Verifizieren-Iteration bezeichnet. Beispielsweise können die Vpgm-Impulse an eine Wortleitung angelegt werden, die mit Steuer-Gates der Speicherzellen verbunden ist. Bei einem Ansatz wird eine Impulsprogrammierung in inkrementellen Schritten durchgeführt, wobei die Vpgm-Impulsamplitude in jeder Programmschleife um eine Schrittgröße erhöht wird. Verifizierungsvorgänge können nach jedem Vpgm-Impuls durchgeführt werden, um zu bestimmen, ob die Speicherzellen ein Programmieren abgeschlossen haben. Wenn ein Programmieren für eine Speicherzelle abgeschlossen ist, kann sie von einem weiteren Programmieren ausgeschlossen werden, während ein Programmieren für andere Speicherzellen in nachfolgenden Programmierschleifen fortgeführt wird.
  • Jede Speicherzelle kann einem Speicherzustand gemäß Schreibdaten in einem Programmierbefehl zugeordnet sein. Basierend auf ihrem Speicherzustand wird eine Speicherzelle entweder im gelöschten Zustand bleiben oder auf einen Speicherzustand (einen programmierten Speicherzustand) programmiert, der sich von dem gelöschten Zustand unterscheidet. Beispielsweise gibt es in einer Speichervorrichtung mit zwei Bits pro Zelle vier Speicherzustände, die den gelöschten Zustand und drei programmierte Speicherzustände einschließen, die als die Speicherzustände S1, S2 und S3 bezeichnet werden. In einer Speichervorrichtung mit drei Bits pro Zelle gibt es acht Speicherzustände, die den gelöschten Zustand und sieben programmierte Speicherzuständen einschließen, die als die Speicherzustände S1, S2, S3, S4, S5, S6 und S7 bezeichnet werden. In einer Speichervorrichtung mit vier Bits pro Zelle gibt es sechzehn Speicherzustände, die den gelöschten Zustand und fünfzehn programmierte Speicherzustände einschließen, die als Speicherzustände Er, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14 und S15 bezeichnet werden.
  • 9A zeigt eine Ausführungsform von Schwellenspannungsverteilungen für eine Vier-Zustands-Speichervorrichtung, in der jede Speicherzelle zwei Datenbits speichert. Eine erste Vth-Verteilung 900 wird für gelöschte Speicherelemente (mit Er-Zustand) bereitgestellt. Drei Vth-Verteilungen 902, 940 und 906 stellen die programmierten Speicherzustände S1, S2 bzw. S3C dar. Ein 2-Bit-Code mit unteren und oberen Bits kann verwendet werden, um jeden der vier Speicherzustände darzustellen. In einer Ausführungsform werden die Speicherzustände „Er“, „S1“, „S2“ und „S3“ dargestellt durch ,,11", „01“, „00“ bzw. „10“.
  • 9B zeigt eine Ausführungsform von Schwellenspannungsverteilungen für eine Acht-Zustands-Speichervorrichtung, in der jede Speicherzelle drei Datenbits speichert. Eine erste Vth-Verteilung 910 ist für Speicherelemente mit Er-Zustand bereitgestellt. Sieben Vth-Verteilungen 912, 914, 916, 918, 920, 922 und 924 stellen die programmierten Speicherzustände S1, S2, S3, S4, S5, S6 bzw. S7 dar. Ein 3-Bit-Code mit niedrigeren, mittleren und oberen Bits kann verwendet werden, um jeden der acht Speicherzustände darzustellen. In einer Ausführungsform werden die Speicherzustände „Er“, „S1“, „S21“, „S3“, „S4“, „S5“, „S6“ und S7 dargestellt durch „111“, „011“, „001“, „101“, „100“, „000“, „010“ und „110“.
  • 9C zeigt eine Ausführungsform von Schwellenspannungsverteilungen für eine Sechzehn-Zustands-Speichervorrichtung, in der jede Speicherzelle vier Datenbits speichert. Eine erste Vth-Verteilung 930 wird für gelöschte Speicherzellen mit Er-Zustand bereitgestellt. Fünfzehn Vth-Verteilungen 932, 934, 936, 938, 940, 942, 944, 946, 948, 950, 952, 954, 956, 958 und 960 stellen die programmierten Speicherzustände S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14 bzw. S15 dar.
  • 10 zeigt eine Wellenform 1000 eines beispielhaften Speicherzellenprogrammiervorgangs für eine Vier-Zustands-Speichervorrichtung mit einem gelöschten Zustand (Er) und drei programmierten Speicherzuständen (z. B. S1, S2, S3), wie in 9A gezeigt. Die horizontale Achse zeigt eine Programmschleifenzahl und die vertikale Achse Steuer-Gate- oder Wortleitungsspannung. Im Allgemeinen kann ein Programmiervorgang das Anlegen einer Impulsfolge an eine ausgewählte Wortleitung beinhalten, wobei die Impulsfolge mehrere Programmschleifen oder Programmieren-Verifizieren-Iterationen einschließt. Der Programmierungsabschnitt der Programmieren-Verifizieren-Iteration schließt einen Vpgm-Impuls ein, und der Verifizierungsabschnitt der Programmieren-Verifizieren-Iteration schließt einen oder mehrere Verifizierungsimpulse ein.
  • Für jeden Vpgm-Impuls ist der Einfachheit halber eine rechteckige Wellenform dargestellt, obwohl andere Formen möglich sind, wie beispielsweise eine mehrstufige Form oder eine Rampenform. Ferner wird in diesem Beispiel Incremental Step Pulse Programing (ISPP) verwendet, bei dem die Vpgm-Impulsamplitude in jeder nachfolgenden Programmierschleife erhöht wird. Dieses Beispiel nutzt ISPP in einem einzigen Programmierdurchgang, in dem die Programmierung abgeschlossen wird. ISPP kann auch in jedem Programmierdurchgang eines Vorgangs mit mehreren Durchgängen verwendet werden.
  • Eine Impulsfolge schließt üblicherweise Vpgm-Impulse ein, deren Amplitude in jeder Programmieren-Verifizieren-Iteration unter Verwendung einer festen oder variierenden Schrittgröße schrittweise zunimmt. Eine neue Impulsfolge beginnt bei einem anfänglichen Vpgm-Impulspegel und endet bei einem letzten Vpgm-Impulspegel, der einen maximal erlaubten Pegel nicht überschreitet.
  • Die Impulsfolge 1000 schließt eine Reihe von Vpgm-Impulsen 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028 und 1030 ein, die an eine zur Programmierung ausgewählte Wortleitung und einen zugehörigen Satz von nichtflüchtigen Speicherzellen angelegt werden. Nach jedem Vpgm-Impuls werden beispielsweise basierend auf den Zielspeicherzuständen, die verifiziert werden, ein, zwei oder drei Verifizierungsspannungsimpulse bereitgestellt. Zwischen den Vpgm-Impulsen und Verifizierungsspannungsimpulsen kann eine Spannung von 0 V kann an die ausgewählte Wortleitung angelegt werden.
  • In einer Ausführungsform kann die Verifizierungsspannung Vv1 (z. B. Wellenform oder Signal 1032) für Zustand S1 jeweils nach jedem von dem ersten, zweiten und dritten Vpgm-Impuls 1002, 1004 und 1006 angelegt werden.
  • Die Verifizierungsspannungen Vv1 und Vv2 (z. B. Wellenform oder Signal 1034) für Zustand S1 und Zustand S2 können jeweils nach dem jedem von dem vierten, fünften und sechsten Vpgm-Impuls 1008, 1010 und 1012 angelegt werden.
  • Die Verifizierungsspannungen Vv1, Vv2 und Vv3 (z. B. Wellenform oder Signal 1036) für Zustand S1, Zustand S2 und Zustand S3 können jeweils nach jedem von dem siebten und achten Vpgm-Impuls 1014 bzw. 1016 angelegt werden.
  • Die Verifizierungsspannungen Vv2 und Vv3 (z. B. Wellenform oder Signal 1038) für Zustand S2 und Zustand S3 können jeweils nach jedem von dem neunten, zehnten und elften Vpgm-Impuls 1018, 1022 bzw. 1020 angelegt werden.
  • Schließlich kann eine Verifizierungsspannung Vv3 (z. B. Wellenform oder Signal 1040) für Zustand S3 nach jedem von dem zwölften, dreizehnten, vierzehnten und fünfzehnten Vpgm-Impuls 1012, 1013, 1014 bzw. 1015 angelegt werden.
  • 11A ist ein Flussdiagramm eines beispielhaften Prozesses 1100 zum Programmieren von Speicherzellen. In einer Ausführungsform kann der Prozess 1000 in einer Speichervorrichtung, wie zum Beispiel der Speichervorrichtung 100 von 1, durchgeführt werden. Bei Schritt 1102 wird eine Wortleitung für die Programmierung ausgewählt. In einer Ausführungsform ist die ausgewählte Wortleitung mit einer oder mehreren Speicherzellen gekoppelt. In einer Ausführungsform befindet sich jede Speicherzelle, die mit der ausgewählten Wortleitung gekoppelt ist, vor dem Programmieren in einem Er-Zustand. In einer Ausführungsform wird während des Programmierens jede Speicherzelle, die mit der ausgewählten Wortleitung gekoppelt ist, in dem Er-Zustand belassen oder auf einen von mehreren programmierten Speicherzuständen programmiert, wie beispielsweise die programmierten Speicherzustände, die in den 9A-9C dargestellt sind.
  • In einer Ausführungsform ist jede Speicherzelle, die mit der ausgewählten Wortleitung gekoppelt ist, einem oder mehreren Datenzwischenspeichern zugeordnet, die verwendet werden, um einen Code zu speichern, der den gewünschten Speicherzustand der Speicherzelle darstellt. Zum Beispiel zeigt 9B einen beispielhaften 3-Bit-Code, der verwendet wird, um jeden von acht Speicherzuständen darzustellen. In einer Ausführungsform werden vor dem Programmieren einer Speicherzelle die zugeordneten Datenzwischenspeicher für die Speicherzelle mit dem Code geladen, der den gewünschten Speicherzustand der Speicherzelle darstellt.
  • Bei Schritt 1104 wird eine anfängliche Vpgm-Impulsamplitude eingestellt. In einer Ausführungsform kann die anfängliche Vpgm-Impulsamplitude zwischen etwa 8 V und etwa 30 V liegen, obwohl andere Werte verwendet werden können.
  • Bei Schritt 1106 wird ein Vpgm-Impuls an die ausgewählte Wortleitung angelegt. In der ersten Iteration von Schritt 1106 hat der angelegte Vpgm-Impuls die in Schritt 1104 spezifizierte Impulsamplitude. Wie oben beschrieben wurde, befindet sich jede Speicherzelle, die mit der ausgewählten Wortleitung gekoppelt ist, vor dem Programmieren in einem Er-Zustand. Als Ergebnis des Anlegens des Vpgm-Impulses an die ausgewählte Wortleitung wird die Schwellenspannung von Speicherzellen, die mit der ausgewählten Wortleitung gekoppelt sind, höher verschoben. Das Ausmaß der Schwellenspannungsverschiebung variiert von Speicherzelle zu Speicherzelle, was zu einer Schwellenspannungsverteilung über die Population der Speicherzellen führt, die mit der ausgewählten Wortleitung gekoppelt sind.
  • Bei Schritt 1108 wird ein Verifizierungssignal (z. B. eine Wellenform, die einen oder mehrere Verifizierungsimpulse einschließt) an die ausgewählte Wortleitung angelegt, während Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt werden. Die Verifizierungstests bestimmen, ob sich die Schwellenspannung jeder Speicherzelle über bestimmte Verifizierungsspannungspegel verschoben hat. In einer Ausführungsform wird, wenn sich die Schwellenspannung einer Speicherzelle nicht über den Verifizierungsspannungspegel für diese Speicherzelle verschoben hat, der Codewert in den zugeordneten Datenzwischenspeichern für die Speicherzelle nicht modifiziert. In einer Ausführungsform wird, wenn sich die Schwellenspannung einer Speicherzelle über den Verifizierungsspannungspegel für diese Speicherzelle verschoben hat, der Codewert in den zugeordneten Datenzwischenspeichern für die Speicherzelle auf den Codewert geändert, der dem Er-Zustand zugeordnet ist (z. B. „111“ in dem Beispiel von 9B).
  • Wenn sich zum Beispiel, wieder auf 9B Bezug nehmend, die Schwellenspannung einer Speicherzelle mit Zustand S1 nicht über die Verifizierungsspannung Vv1 verschoben hat, wird der Codewert in den zugeordneten Datenzwischenspeichern für die Speicherzelle nicht modifiziert und bleibt „011“. Wenn sich jedoch die Schwellenspannung einer Speicherzelle mit Zustand S1 über die Verifizierungsspannung Vv1 verschoben hat, wird der Codewert in den zugeordneten Datenzwischenspeichern für die Speicherzelle auf „111“ geändert.
  • In einer Ausführungsform werden entsprechende Verifizierungstests für Speicherzellen mit Zustand K (Speicherzellen, die zugewiesen sind, um Zustand K darzustellen) durchgeführt. In einer anderen Ausführungsform werden entsprechende Verifizierungstests für Speicherzellen mit Zustand K, Speicherzellen mit Zustand (K+1) und Speicherzellen mit Zustand (K+2) durchgeführt, wobei Zustand K, Zustand (K+1) und Zustand (K+2) drei aufeinander folgende Speicherzustände sind. Zum Beispiel kann K zu Beginn der Programmierung der Zustand S1 von 9C sein, und entsprechende Verifizierungstests werden für Zellen mit Zustand S1, Zellen mit Zustand S2 und Zellen mit Zustand S3 durchgeführt. Der Durchschnittsfachmann wird verstehen, dass entsprechende Verifizierungstests für mehr oder weniger als drei Zustände durchgeführt werden können.
  • In einer Ausführungsform ist ein Sperrzustand für Speicherzellen eingestellt, die die Verifizierungstests von Schritt 1108 bestehen. Zum Beispiel wird, wieder Bezug nehmend auf 9B, ein Sperrzustand für Speicherzellen mit Zustand S1 eingestellt, die die entsprechenden Verifizierungstests für Zustand S1 bei Schritt 1108 bestehen, es wird ein Sperrzustand für Speicherzellen mit Zustand S2 eingestellt, die die entsprechenden Verifizierungstests für Zustand S2 bei Schritt 1108 bestehen, usw.
  • Erneut Bezug nehmend auf 11A werden bei Schritt 1110 eine oder mehrere Bitabtastungen durchgeführt. Wie oben beschrieben und wie hierin verwendet, ist eine Bitabtastung eine Zählung der Anzahl von Speicherzellen, deren Schwellenspannung sich nicht über einen bestimmten Verifizierungsspannungspegel für einen bestimmten Speicherzustand verschoben hat. Beispielsweise ist eine Bitabtastung für Zustand S1 eine Zählung der Anzahl von Speicherzellen mit Zustand S1, deren Schwellenspannung sich nicht über einen Verifizierungsspannungspegel für Zustand S1 verschoben hat. Gleichermaßen ist eine Bitabtastung für Zustand S2 eine Zählung der Anzahl von Speicherzellen mit Zustand S2, deren Schwellenspannung sich nicht über einen Verifizierungsspannungspegel für Zustand S2 verschoben hat, und so weiter.
  • Wie oben beschrieben wurde, wird für eine Speicherzelle mit Zustand S1, deren Schwellenspannung sich nicht über die Verifizierungsspannung Vv1 verschoben hat, der Codewert in die zugeordneten Datenzwischenspeichern für die Speicherzelle nicht modifiziert und bleibt „01 1“. Somit kann in einer Ausführungsform eine Bitabtastung für Zustand S1 durchgeführt werden, indem eine Anzahl von Datenzwischenspeichern gezählt wird, die einen Codewert „011“ haben. Gleichermaßen kann eine Bitabtastung für Zustand S2 durchgeführt werden, indem eine Anzahl von Datenzwischenspeichern gezählt wird, die einen Codewert „001“ haben, und so weiter.
  • 11B zeigt ein Blockdiagramm auf hoher Ebene einer Ausführungsform einer Bitabtastungsschaltung 1130a zur Verwendung mit einer Gruppe von J 3-Bit-Speicherzellen mit den beispielhaften programmierten Speicherzuständen S1-S7 und in 9B darstellten Codewerten. Die Bitabtastungsschaltung 1130a ist eine beispielhafte Bitabtastungsvorgangsschaltung 150 von 1A. Wie unten ausführlicher beschrieben wird, kann die Bitabtastungsschaltung 1130a verwendet werden, um ein Einzelzustands-Bitabtastungsergebnis für irgendeinen der programmierten Speicherzustände S1-S7 zu berechnen.
  • Die Bitabtastungsschaltung 1130a schließt eine Bitabtastungssteuerschaltung 1132a, Logikschaltungen 1134a-1134g für die Zustände S1-S7, einen J:1-Multiplexer 1136 und eine Zählerschaltung 1138 ein. Die Bitabtastungsschaltung 1130a ist mit Datenzwischenspeichern für J Speicherzellen 1140 gekoppelt, welche 3xJ Bits von Daten für die Logikschaltungen 1134a-1134g für die Zustände S1-S7 bereitstellen. Die Bitabtastungssteuerschaltung 1132a stellt ein Zustandsaktivierungssignal ENs zum selektiven Aktivieren von einer der Logikschaltungen 1134a-1134g für die Zustände S1-S7 bereit, stellt ein Multiplexer-Auswahlsignal Msel für den J:1-Multiplexer 1136 zum wahlweisen Koppeln der J-Bit-Ausgabe von einer der Logikschaltungen 1134a-1134g für die Zustände S1-S7 mit einer J-Bit-Eingabe der Zählerschaltung 1138 bereit, und stellt ein Zähleraktivierungssignal ENc zum Triggern der Zählerschaltung 1138 für die Durchführung einer Zählung der Anzahl von Bits mit Wert „1“ in der J-Bit-Eingabe zur Zählerschaltung 1138 bereit.
  • 11C zeigt ein Diagramm einer Ausführungsform der Logikschaltungen 1134a-1134g für die Zustände S1-S7, die mit den Datenzwischenspeichern DL1-DL3 gekoppelt sind. 11C schließt auch eine Tabelle ein, die die beispielhaften Datenzwischenspeicherwerte für den gelöschten Zustand Er und jeden der programmierten Speicherzustände S1-S7 zeigt. Jede der Logikschaltungen 1134a-1134g für die Zustände S1-S7 ist mit J Sätzen von Datenzwischenspeichern DL1-DL3 gekoppelt und schließt J Sätze von 3-Eingangs-NAND-Gattern ein, die jeweils mit einem entsprechenden der J Sätze von Datenzwischenspeichern DL1-DL3 gekoppelt sind. Für jeden Zustandscodewert gleich „0“ ist ein Inverter zwischen einen Datenzwischenspeicher und einen entsprechenden Eingang des 3-Eingangs-NAND-Gatters gekoppelt. Somit ist für den programmierten Speicherzustand S1 (Codewert „011“) ein Inverter zwischen den Datenzwischenspeicher DL3 und den entsprechenden Eingang zum 3-Eingangs-NAND-Gatter gekoppelt. Gleichermaßen ist für den programmierten Speicherzustand S4 (Codewert „100“) ein Inverter zwischen jeden der Datenzwischenspeicher DL1 und DL2 und den entsprechenden Eingang zum 3-Eingangs-NAND-Gatter gekoppelt.
  • Jedes AND-Gatter stellt eine Ausgabe „1“ bereit, wenn die Datenzwischenspeicherwerte DL1-DL3 mit dem Codewert für den speziellen programmierten Speicherzustand übereinstimmen, und stellt eine Ausgabe „0“ bereit, wenn alle Datenzwischenspeicher DL1-DL3 Werte haben, die sich von dem Codewert für den speziellen Datenzustand unterscheiden. Somit wird die Logikschaltung 1134a für Zustand S1 eine J Bit breite Ausgabe bs1 mit einer „1“ für jede Speicherzelle mit Werten der zugeordneten Datenzwischenspeicher DL1- DL3 von „011“ bereitstellen und mit einer „0“ für jede Speicherzelle mit anderen Werten der zugeordneten Datenzwischenspeicher DL1-DL3. Gleichermaßen wird die Logikschaltung 1134e für Zustand S5 eine J Bit breite Ausgabe bs5 mit einer „1“ für jede Speicherzelle mit Werten der zugeordneten Datenzwischenspeicher DL1-DL3 von „000“ bereitstellen und mit einer „0“ für jede Speicherzelle mit anderen Werten der zugeordneten Datenzwischenspeicher DL1-DL3.
  • Erneut Bezug nehmend auf 11B aktiviert die Bitabtastungssteuerschaltung 1132a zum Durchführen einer Bitabtastung für Zustand S1 selektiv die Logikschaltung 1134a für Zustand S1 und stellt dem J:1-Multiplexer 1136 das Multiplexerauswahlsignal Msel bereit, um selektiv die J-Bit-Ausgabe bs1 der Logikschaltung 1134a für Zustand S1 mit der J-Bit-Eingabe der Zählerschaltung 1138 zu koppeln. Die Steuerschaltung 1132a stellt das Zähleraktivierungssignal ENc bereit, um die Zählerschaltung 1138 für die Durchführung einer Zählung der Anzahl von Bits mit einem Wert „1“ in der J-Bit-Ausgabe bs1 der Logikschaltung 1134a für Zustand S1 zu triggern. Die Zählung ist die Bitabtastung für Zustand S1.
  • Alternativ kann die Bitabtastungssteuerschaltung 1132a für die Durchführung einer S6-Bitabtastung selektiv die Logikschaltung 1134f für Zustand S6 aktivieren und stellt dem J:1-Multiplexer 1136 das Multiplexer-Auswahlsignal Msel bereit, um selektiv die J-Bit-Ausgabe bs6 der Logikschaltung 1134f für Zustand S6 mit der J-Bit-Eingabe der Zählerschaltung 1138 zu koppeln. Die Steuerschaltung 1132a stellt das Zähleraktivierungssignal ENc bereit, um die Zählerschaltung 1138 für die Durchführung einer Zählung der Anzahl von Bits mit einem Wert „1“ in der J-Bit-Ausgabe bs6 der Logikschaltung 1134f für Zustand S6 zu triggern. Die Zählung ist die Bitabtastung für Zustand S6.
  • Wie oben beschrieben, kann die Bitabtastungsschaltung 1130a verwendet werden, um eine Einzelzustands-Bitabtastung für irgendeinen der Zustände S1-S7 durchzuführen. Um eine Bitabtastung für mehrere Zustände durchzuführen, kann die Bitabtastungsschaltung 1132a eingerichtet sein, um mehrere Einzelzustands-Bitabtastungen nacheinander durchzuführen. Um zum Beispiel Bitabtastungen für die Zustände S1, S2 und S3 durchzuführen, kann die Steuerschaltung 1132a eingerichtet sein, um eine Bitabtastung für Zustand S1 durchzuführen, anschließend eine Bitabtastung für Zustand S2 durchzuführen und dann eine Bitabtastung für Zustand S3 durchzuführen.
  • Alternativ können mehrere Bitabtastungsschaltungen 1130a verwendet werden, um eine Mehrzustands-Bitabtastung durchzuführen. Beispielsweise kann eine erste Bitabtastungsschaltung 1130a verwendet werden, um eine Bitabtastung für Zustand S1 durchzuführen, eine zweite Bitabtastungsschaltung 1130a kann verwendet werden, um eine Bitabtastung für Zustand S2 durchzuführen, und eine dritte Bitabtastungsschaltung 1130a kann verwendet werden, um eine Bitabtastung für Zustand S3 durchzuführen, und so weiter.
  • 11D zeigt ein Blockdiagramm auf hoher Ebene einer Ausführungsform einer weiteren Bitabtastungsschaltung 1130b zur Verwendung mit einer Gruppe von J 3-Bit-Speicherzellen mit den beispielhaften programmierten Speicherzuständen S1-S7 und in 9B darstellten Codewerten. Die Bitabtastungsschaltung 1130b ist eine beispielhafte Bitabtastungsvorgangsschaltung 150 von 1A. Wie unten ausführlicher beschrieben wird, kann die Bitabtastungsschaltung 1130b verwendet werden, um ein Mehrzustands-Bitabtastungsergebnis für die programmierten Speicherzustände S1-S7 zu berechnen.
  • Die Bitabtastungsschaltung 1130b schließt eine Bitabtastungssteuerschaltung 1132b, Logikschaltungen 1134a-1134g für die Zustände S1-S7, ein 7-Eingangs-OR-Gatter 1142 und eine Zählerschaltung 1138 ein. Die Bitabtastungsschaltung 1130b ist mit Datenzwischenspeichern für J Speicherzellen 1140 gekoppelt, welche 3xJ Bits von Daten für die Logikschaltungen 1134a-1134g für die Zustände S1-S7 bereitstellen. Die Bitabtastungssteuerschaltung 1132b stellt ein Zustandsaktivierungssignal ENs zum selektiven Aktivieren von einer oder mehreren der Logikschaltungen 1134a-1134g für die Zustände S1-S7 bereit und stellt ein Zähleraktivierungssignal ENc zum Triggern der Zählerschaltung 1138 für die Durchführung einer Zählung der Anzahl von Bits mit einem Wert „1“ in der J-Bit-Eingabe zur Zählerschaltung 1138 bereit.
  • Die Bitabtastungsschaltung 1130b kann verwendet werden, um ein Mehrzustands-Bitabtastungsergebnis für die programmierten Speicherzustände S1-S7 zu berechnen. Die Bitabtastungssteuerschaltung 1132b aktiviert selektiv mehrere von den Logikschaltungen 1134a-1134g für die Zustände S1-S7, deren Ausgaben durch das OR-Gatter 1142 kombiniert werden, um eine einzelne J-Bit-Ausgabe für den Zähler 1138 bereitzustellen. Die Zählerschaltung 1138 führt eine Zählung der Anzahl von Bits mit einem Wert „1“ in der J-Bit-Eingabe zur Zählerschaltung 1138 durch, und die Zählung ist eine zusammengesetzte Bitabtastung für die mehreren Zustände, die durch die Bitabtastungssteuerschaltung 1132b ausgewählt werden.
  • Um zum Beispiel eine Bitabtastung für die Zustände S1-S3 durchzuführen, aktiviert die Bitabtastungssteuerschaltung 1132b selektiv die Logikschaltung 1134a für Zustand S1, die Logikschaltung 1134b für Zustand S2 und die Logikschaltung 1134c für Zustand S3. Die J-Bit-Ausgaben bs1, bs2 und bs3 der Logikschaltung 1134a für Zustand S1, der Logikschaltung 1134b für Zustand S2 bzw. der Logikschaltung 1134cfür Zustand S3 werden durch das OR-Gatter 1142 zu einer einzelnen J-Bit-Eingabe für die Zählerschaltung 1138 kombiniert. Die Steuerschaltung 1132b stellt das Zähleraktivierungssignal ENc bereit, um die Zählerschaltung 1138 für die Durchführung einer Zählung der Anzahl von Bits mit einem Wert „1“ zu triggern. Die Zählung ist die Bitabtastung für die Zustände S1-S3. Die Bitabtastungsschaltung 1130b kann somit eine Mehrzustands-Bitabtastung in einem einzelnen Vorgang durchführen, wobei Bits als eine Charge aus allen ausgewählten Zustände gezählt werden.
  • Wieder Bezug nehmend auf 11A kann in einer Ausführungsform, und wie unten detaillierter beschrieben wird, Schritt 1110 Bitabtastungen durchführen, bei denen die Anzahl von Speicherzuständen, für die Bitabtastungen durchgeführt werden, dynamisch variiert werden kann (hierin als „dynamische Bitabtastung einer variablen Zustandsanzahl“ bezeichnet). Insbesondere kann Schritt 1110 Bitabtastungen von n Zuständen oder Bitabtastungen von m Zuständen durchführen, wobei m > n und n > 0 ist (z. B. unter Verwendung der Bitabtastungsschaltung 1130a von 11B oder der Bitabtastungsschaltung 1130b von 11D).
  • Wenn zum Beispiel n = 1 und m = 2 ist, führt Schritt 1110 dynamisch Einzelzustands-Bitabtastungen (z. B. eine Bitabtastung für Zustand S1, eine Bitabtastung für Zustand S2, eine Bitabtastung für Zustand S3, und so weiter) und Bitabtastungen für 2 Zustände (z. B. eine Bitabtastung für Zustand S1 und eine Bitabtastung für Zustand S2, eine Bitabtastung für Zustand S2 und eine Bitabtastung für Zustand S3, eine Bitabtastung für Zustand S3 und eine Bitabtastung für Zustand S4 und so weiter) durch. In einer anderen Ausführungsform, und wie unten detaillierter beschrieben wird, kann Schritt 1110 selektiv (1) eine Einzelzustands-Bitabtastung und (2) eine dynamische Bitabtastung einer variablen Zustandsanzahl durchführen.
  • In Schritt 1112 wird eine Bestimmung durchgeführt, ob jede der Bitabtastungen, die in Schritt 1110 durchgeführt werden, zu einem „Gut“-Ergebnis führt. Wie hierin verwendet, spricht man von einem „Gut“-Ergebnis einer Bitabtastung, wenn der Bitabtastungszählwert für einen bestimmten Zustand kleiner als ein vorbestimmter Wert ist. Im umgekehrten Fall spricht man von einem „Schlecht“-Ergebnis einer Bitabtastung, wenn die Bitabtastung für einen bestimmten Zustand größer als oder gleich dem vorbestimmten Wert ist. In einer Ausführungsform ist der vorbestimmte Wert kleiner ist als eine Anzahl von Lesefehlern, die durch eine ECC-Maschine, wie die ECC-Maschine 128 von 1A, korrigiert werden können. Andere Werte können für den vorbestimmten Wert verwendet werden.
  • Wenn bei Schritt 1112 bestimmt wird, dass alle in Schritt 1110 durchgeführten Bitabtastungen nicht zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1114 eine Bestimmung durchgeführt, ob eine maximale Anzahl von Programmieren-Verifizieren-Iterationen (PV-Iterationen) durchgeführt worden ist. Wenn bei Schritt 1114 die Anzahl von PV-Iterationen ein Maximum nicht überschritten hat, wird bei Schritt 1116 die Vpgm-Impulsamplitude erhöht. In der Ausführungsform kann die Vpgm-Impulsamplitude zwischen etwa 0,1 V bis etwa 0,8 V erhöht werden, obwohl andere Werte verwendet werden können. Wenn bei Schritt 1114 die Anzahl von PV-Iterationen ein Maximum überschritten hat, wird bei Schritt 1118 davon ausgegangen, dass die Programmierung fehlgeschlagen ist, und der Prozess 1100 endet.
  • Wenn bei Schritt 1112 bestimmt wird, dass alle in Schritt 1110 durchgeführten Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1120 eine Bestimmung durchgeführt, ob Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1120 bestimmt wird, dass noch nicht alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, fährt der Prozess mit Schritt 1114 fort, wie oben beschrieben. Wenn bei Schritt 1120 bestimmt wird, dass alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, ist die Programmierung abgeschlossen und der Prozess 1100 endet.
  • 12A ist ein Flussdiagramm eines beispielhaften Prozesses 1200a für die Programmierung von Speicherzellen unter Verwendung einer Ausführungsform einer dynamischen Bitabtastung einer variablen Zustandsanzahl, die wiederholt zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen und dem Durchführen einer m-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen umschaltet, wobei m > n und n > 0 ist. In einer Ausführungsform kann der Prozess 1200a in einer Speichervorrichtung, wie zum Beispiel der Speichervorrichtung 100 von 1.blop, durchgeführt werden.
  • Bei Schritt 1202a wird ein Vpgm-Impuls an eine ausgewählte Wortleitung angelegt (z. B. wie oben in Bezug auf Schritt 1106 von 11A beschrieben), ein Verifizierungssignal wird an die ausgewählte Wortleitung angelegt, während Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt werden (z. B. wie oben in Bezug auf Schritt 1108 von 11A beschrieben), und eine n-Zustands-Bitabtastung wird beginnend mit einem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a durchgeführt. Bei der ersten Iteration von Schritt 1202a wurden keine vorherigen Bitabtastungen durchgeführt, sodass die n-Zustands-Bitabtastung bei dem ersten Zustand beginnt.
  • Bei Schritt 1204 wird bestimmt, ob alle in Schritt 1202a durchgeführten n Bitabtastungen zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1204 bestimmt wird, dass alle n Bitabtastungen nicht zu einem „Gut“-Ergebnis geführt haben, kehrt der Prozess 1200a zu Schritt 1202a zurück, um einen weiteren Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung anzulegen, Verifizierungstests für einen oder mehrere Speicherzustände durchzuführen und eine n-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a durchzuführen.
  • Wenn bei Schritt 1204 bestimmt wird, dass alle n Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1206 bestimmt, ob Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1206 bestimmt wird, dass alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, ist die Programmierung abgeschlossen und der Prozess 1200a endet.
  • Wenn bei Schritt 1206 bestimmt wird, dass noch nicht alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1208a ein weiterer Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt, und es wird eine m-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1208a durchgeführt. Bei der ersten Iteration von Schritt 1208a nach Schritt 1206 beginnt die m-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1202a.
  • Bei Schritt 1210 wird bestimmt, ob alle in Schritt 1208a durchgeführten m Bitabtastungen zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1210 bestimmt wird, dass alle m Bitabtastungen nicht zu einem „Gut“-Ergebnis geführt haben, kehrt der Prozess 1200a zu Schritt 1208a zurück, um einen weiteren Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung anzulegen, Verifizierungstests für einen oder mehrere Speicherzustände durchzuführen und eine m-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1208a durchzuführen.
  • Wenn bei Schritt 1210 bestimmt wird, dass alle m Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1212 bestimmt, ob Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1212 bestimmt wird, dass alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, ist die Programmierung abgeschlossen und der Prozess 1200a endet.
  • Wenn bei Schritt 1212 bestimmt wird, dass noch nicht alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1202a ein weiterer Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt, und es wird eine n-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a durchgeführt. Bei der ersten Iteration von Schritt 1202a nach Schritt 1212 beginnt die n-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1208a.
  • Somit schaltet der Prozess 1200a wiederholt um zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis erste vorbestimmte Kriterien erfüllt sind, und dem Durchführen einer m-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis zweite vorbestimmte Kriterien erfüllt sind. In einer Ausführungsform sind die ersten vorbestimmten Kriterien, dass alle n-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis führen, und die zweiten vorbestimmten Kriterien, dass alle m-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis führen.
  • In dem beispielhaften Prozess 1200a wird bei jeder Iteration von Schritt 1202a die n-Zustands-Bitabtastung beginnend mit einem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a durchgeführt, und bei jeder Iteration von Schritt 1208a wird die m-Zustands-Bitabtastung beginnend mit einem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1208a durchgeführt. In dieser Hinsicht zählen die Bitabtastungsvorgänge die Bits separat Zustand für Zustand, und der Prozess kann bestimmen, für welche spezifischen Zustände die Bitabtastungen zu einem „Gut“-Ergebnis oder einem „Schlecht“-Ergebnis führen.
  • 12B zeigt Ergebnisse eines beispielhaften Vorgangs des Prozesses 1200a von 12A, wobei n = 1 und m = 2 ist, und unter Verwendung von beispielhaften Vpgm-Impulsen, Schwellenspannungsverteilungen und Verifizierungsspannungen, die in 12A dargestellt sind. Insbesondere zeigt 13A die Vpgm-Impulse P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 und P13 mit Werten (in Volt) von 10,0, 10,8, 11,6, 12,4, 13,2, 14,0, 14,8, 15,6, 16,4, 17,2, 18,0, 18,8 bzw. 19,6, mit einer Differenz zwischen aufeinander folgenden Vpgm-Impulsen (Δpgm) von 0,8 V. 13A zeigt auch beispielhafte Schwellenspannungsverteilungen für eine Sechzehn-Zustands-Speichervorrichtung, in der jede Speicherzelle vier Datenbits speichert (eine Verteilung für den Er-Zustand ist nicht gezeigt). Fünfzehn Vth-Verteilungen stellen die programmierten Speicherzustände S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14 und S15 dar. Die Verifizierungsspannungen Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, Vv7, Vv8, Vv9, Vv10, Vv11, Vv12, Vv13, Vv14 und Vv15 haben Werte (in Volt) von 10,8, 11,4, 12,0, 12,6, 13,2, 13,8, 14,4, 15,0, 15,6, 16,2, 16,8, 17,4, 18,0, 18,6 bzw. 19,2, mit einem Abstand zwischen aufeinander folgenden Verifizierungspegeln (ΔVpvf) von 0,6 V. Andere Vpgm-Impulsamplituden, Δpgm-Werte, Verifizierungsspannungswerte und Δpvf-Werte können verwendet werden.
  • In dem in 12B gezeigten Beispiel werden zwei Verifizierungstests nach jedem Vpgm-Impuls durchgeführt, und jeder Verifizierungstest ist durch ein A-Symbol dargestellt. Beispielsweise werden nach dem Vpgm-Impuls P1 (10,0 V) Verifizierungstests für die Speicherzellen mit Zustand S1 und Speicherzellen mit Zustand S2 durchgeführt, und nach dem Vpgm-Impuls P5 (13,2 V) werden Verifizierungstests für Speicherzellen mit Zustand S4 und Speicherzellen mit Zustand S5 durchgeführt und so weiter. Bei anderen Ausführungsformen können mehr als zwei Verifizierungstests nach jedem Vpgm-Impuls durchgeführt werden.
  • Nach den Verifizierungstests werden Bitabtastungen gemäß den Schritten des Prozesses 1200a von 12A durchgeführt. Insbesondere schaltet der Prozess wiederholt um zwischen dem Durchführen einer 1-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis die 1-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führt, und dem Durchführen einer 2-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis beide 2-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis führen.
  • Somit wird beginnend bei Schritt 1202a ein Vpgm-Impuls P1 (10,0 V) an eine ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine n=1-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a durchgeführt. Wie oben beschrieben, wurden bei der ersten Iteration von Schritt 1202a keine vorherigen Bitabtastungen durchgeführt, sodass die 1-Zustands-Bitabtastung bei dem ersten Zustand S1 beginnt. Die Bitabtastung für Zustand S1 führt zu einem „Schlecht“-Ergebnis (10,0 V ist kleiner als Vv1 = 10,8 V). Somit wird bei Schritt 1204 bestimmt, dass nicht alle 1-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess kehrt zu Schritt 1202a zurück. Ein nächster Vpgm-Impuls P2 (10,8 V) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine 1-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a (Zustand S1) durchgeführt. Die Bitabtastung für Zustand S1 führt zu einem „Gut“-Ergebnis (10,8 V ist gleich Vv1 = 10,8 V). Somit wird bei Schritt 1204 bestimmt, dass alle 1-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess fährt mit Schritt 1206 fort.
  • Da bei Schritt 1206 noch nicht alle Bitabtastungen für alle 15 Zustände zu einem „Gut“-Ergebnis geführt haben, fährt der Prozess dann mit Schritt 1208a fort, es wird ein nächster Vpgm-Impuls P3 (11,6 V) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt und dann werden m=2-Zustands-Bitabtastungen beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1208a durchgeführt. Wie oben beschrieben, beginnt bei der ersten Iteration von Schritt 1208a nach Schritt 1206 die 2-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1202a (Zustand S1). Somit führt Schritt 1208a eine Bitabtastung für Zustand S2 und eine Bitabtastung für Zustand S3 durch.
  • Die Bitabtastung für Zustand S2 führt zu einem „Gut“-Ergebnis (11,6 V ist größer als Vv2 = 11,4 V), aber die Bitabtastung für Zustand S3 führt zu einem „Schlecht“-Ergebnis (11,6 V ist kleiner als Vv3 = 12,0 V). Somit wird bei Schritt 1210 bestimmt, dass nicht alle 2-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess kehrt zu Schritt 1208a zurück. Ein nächster Vpgm-Impuls P4 (12,4 V) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine 2-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1208a (Zustand S3) durchgeführt. Somit führt Schritt 1208a eine Bitabtastung für Zustand S3 und eine Bitabtastung für Zustand S4 durch. Die Bitabtastung für Zustand S3 führt zu einem „Gut“-Ergebnis (12,4 V ist größer als Vv3 = 12,0 V), aber die Bitabtastung für Zustand S4 führt zu einem „Schlecht“-Ergebnis (12,4 V ist kleiner als Vv4 = 12,6 V).
  • Somit wird bei Schritt 1210 bestimmt, dass nicht alle 2-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess kehrt zu Schritt 1208a zurück. Ein nächster Vpgm-Impuls P5 (13,2 V) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine 2-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1208a (Zustand S4) durchgeführt. Somit führt Schritt 1208a eine Bitabtastung für Zustand S4 und eine Bitabtastung für Zustand S5 durch. Die Bitabtastung für Zustand S4 führt zu einem „Gut“-Ergebnis (13,2 V ist größer als Vv4 = 12,6 V), und die Bitabtastung für Zustand S5 führt zu einem „Gut“-Ergebnis (13,2 V ist gleich Vv5 = 13,2 V). Somit wird bei Schritt 1210 bestimmt, dass alle 2-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess fährt mit Schritt 1212 fort.
  • Da bei Schritt 1212 noch nicht alle Bitabtastungen für alle 15 Zustände zu einem „Gut“-Ergebnis geführt haben, fährt der Prozess dann mit Schritt 1202a fort, es wird ein nächster Vpgm-Impuls P6 (14,0 V) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine n=1-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a durchgeführt. Wie oben beschrieben, beginnt bei der ersten Iteration von Schritt 1202a nach Schritt 1212 die 1-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1208a (Zustand S5). Somit führt Schritt 1202a eine Bitabtastung für Zustand S6 durch. Die Bitabtastung von Zustand S6 führt zu einem „Gut“-Ergebnis (14,0 V ist größer als Vv6 = 13,8 V). Somit wird bei Schritt 1204 bestimmt, dass alle 1-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess fährt mit Schritt 1206 fort.
  • Der Prozess 1200a fährt wie oben beschrieben fort, wobei er wiederholt umschaltet zwischen dem Durchführen einer 1-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis erste vorbestimmte Kriterien erfüllt sind (z. B. alle 1-Zustands-Bitabtastungen haben zu einem „Gut“-Ergebnis geführt), und dem Durchführen einer 2-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis zweite vorbestimmte Kriterien erfüllt sind (z. B. alle 2-Zustands-Bitabtastungen haben zu einem „Gut“-Ergebnis geführt).
  • 12C ist ein Flussdiagramm eines beispielhaften Prozesses 1200b für die Programmierung von Speicherzellen unter Verwendung einer Ausführungsform einer dynamischen Bitabtastung einer variablen Zustandsanzahl, die wiederholt zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen und dem Durchführen einer m-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen umschaltet, wobei m > n und n > 0 ist. In einer Ausführungsform kann der Prozess 1200b in einer Speichervorrichtung, wie zum Beispiel der Speichervorrichtung 100 von 1, durchgeführt werden.
  • Bei Schritt 1202b wird ein Vpgm-Impuls an eine ausgewählte Wortleitung angelegt (z. B. wie oben in Bezug auf Schritt 1106 von 11A beschrieben), ein Verifizierungssignal wird an die ausgewählte Wortleitung angelegt, während Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt werden (z. B. wie oben in Bezug auf Schritt 1108 von 11A beschrieben), und es wird eine n-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1202b durchgeführt. Bei der ersten Iteration von Schritt 1202b wurden keine vorherigen Bitabtastungen durchgeführt, sodass die n-Zustands-Bitabtastung bei dem ersten Zustand beginnt.
  • Bei Schritt 1204 wird bestimmt, ob alle in Schritt 1202a durchgeführten n Bitabtastungen zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1204 bestimmt wird, dass alle n Bitabtastungen nicht zu einem „Gut“-Ergebnis geführt haben, kehrt der Prozess 1200b zu Schritt 1202b zurück, um einen weiteren Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung anzulegen, Verifizierungstests für einen oder mehrere Speicherzustände durchzuführen und eine n-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1202b durchzuführen.
  • Wenn bei Schritt 1204 bestimmt wird, dass alle n Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1206 bestimmt, ob Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1206 bestimmt wird, dass alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, ist die Programmierung abgeschlossen und der Prozess 1200b endet.
  • Wenn bei Schritt 1206 bestimmt wird, dass noch nicht alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1208b ein weiterer Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt, und es wird eine m-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1208b durchgeführt. Bei der ersten Iteration von Schritt 1208b nach Schritt 1206 beginnt die m-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1202b.
  • Bei Schritt 1210 wird bestimmt, ob alle in Schritt 1208b durchgeführten m Bitabtastungen zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1210 bestimmt wird, dass alle m Bitabtastungen nicht zu einem „Gut“-Ergebnis geführt haben, kehrt der Prozess 1200a zu Schritt 1208b zurück, um einen weiteren Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung anzulegen, Verifizierungstests für einen oder mehrere Speicherzustände durchzuführen und eine m-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1208b durchzuführen.
  • Wenn bei Schritt 1210 bestimmt wird, dass alle m Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1212 bestimmt, ob Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1212 bestimmt wird, dass alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, ist die Programmierung abgeschlossen und der Prozess 1200b endet.
  • Wenn bei Schritt 1212 bestimmt wird, dass noch nicht alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, wird bei Schritt 1202b ein weiterer Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt, und es wird eine n-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1202b durchgeführt. Bei der ersten Iteration von Schritt 1202b nach Schritt 1212 beginnt die n-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1208b.
  • Somit schaltet der Prozess 1200b wiederholt um zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis erste vorbestimmte Kriterien erfüllt sind, und dem Durchführen einer m-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis zweite vorbestimmte Kriterien erfüllt sind. In einer Ausführungsform sind die ersten vorbestimmten Kriterien, dass alle n-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis führen, und die zweiten vorbestimmten Kriterien, dass alle m-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis führen.
  • In dem beispielhaften Prozess 1200b wird bei jeder Iteration von Schritt 1202b die n-Zustands-Bitabtastung beginnend mit einem aktuellen Zustand aus der vorherigen Iteration von Schritt 1202b durchgeführt, und bei jeder Iteration von Schritt 1208b wird die m-Zustands-Bitabtastung beginnend mit einem aktuellen Zustand aus der vorherigen Iteration von Schritt 1208b durchgeführt. In dieser Hinsicht zählen die Bitabtastungsvorgänge die Bits als eine Charge aus allen Zuständen, und der Prozess kann nicht ermitteln, für welchen spezifischen Zustand die Bitabtastungen zu einem „Gut“-Ergebnis oder einem „Schlecht“-Ergebnis führen. Dieser Prozess kann jedoch zeiteffizienter in Hinblick auf Bitabtastungszählungen sein, weil keine separaten Bitabtastungszählungen für jede von den n-Zustands- und m-Zustands-Bitabtastungen erforderlich sind.
  • 12D zeigt Ergebnisse eines beispielhaften Vorgangs des Prozesses 1200b von 12C mit n = 1 und m = 2 und unter Verwendung von beispielhaften Vpgm-Impulsen, Schwellenspannungsverteilungen und Verifizierungsspannungen, die in 13A dargestellt sind. In dem in 12D gezeigten Beispiel werden zwei Verifizierungstests nach jedem Vpgm-Impuls durchgeführt, und jeder Verifizierungstest ist durch ein ▲-Symbol dargestellt. Bei anderen Ausführungsformen können mehr als zwei Verifizierungstests nach jedem Vpgm-Impuls durchgeführt werden.
  • Nach den Verifizierungstests werden Bitabtastungen gemäß den Schritten des Prozesses 1200b von 12C durchgeführt. Insbesondere schaltet der Prozess wiederholt um zwischen dem Durchführen einer 1-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis die 1-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führt, und dem Durchführen einer 2-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis beide 2-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis führen.
  • Somit wird beginnend bei Schritt 1202b ein Vpgm-Impuls P1 (10,0 V) an eine ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt und dann wird eine n=1-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1202b durchgeführt. Wie oben beschrieben, wurden bei der ersten Iteration von Schritt 1202b keine vorherigen Bitabtastungen durchgeführt, sodass die 1-Zustands-Bitabtastung bei dem ersten Zustand S1 beginnt. Die Bitabtastung für Zustand S1 führt zu einem „Schlecht“-Ergebnis (10,0 V ist kleiner als Vv1 = 10,8 V). Somit wird bei Schritt 1204 bestimmt, dass alle 1-Zustands-Bitabtastungen nicht zu einem „Gut“-Ergebnis geführt haben, und der Prozess kehrt zu Schritt 1202b zurück. Ein nächster Vpgm-Impuls P2 (10,8 V) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine 1-Zustands-Bitabtastung beginnend mit dem ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1202a (Zustand S1) durchgeführt. Die Bitabtastung für Zustand S1 führt zu einem „Gut“-Ergebnis (10,8 V ist gleich Vv1 = 10,8 V). Somit wird bei Schritt 1204 bestimmt, dass alle 1-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess fährt mit Schritt 1206 fort.
  • Da bei Schritt 1206 noch nicht alle Bitabtastungen für alle 15 Zustände zu einem „Gut“-Ergebnis geführt haben, fährt der Prozess dann mit Schritt 1208b fort, es wird ein nächster Vpgm-Impuls P3 (11,6 V) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann werden m=2-Zustands-Bitabtastungen beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1208b durchgeführt. Wie oben beschrieben, beginnt bei der ersten Iteration von Schritt 1208b nach Schritt 1206 die 2-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1202b (Zustand S1). Somit führt Schritt 1208b eine Bitabtastung für Zustand S2 und eine Bitabtastung für Zustand S3 durch.
  • Die Bitabtastung für Zustand S2 führt zu einem „Gut“-Ergebnis (11,6 V ist größer als Vv2 = 11,4 V), aber die Bitabtastung für Zustand S3 führt zu einem „Schlecht“-Ergebnis (11,6 V ist kleiner als Vv3 = 12,0 V). Somit wird bei Schritt 1210 bestimmt, dass alle 2-Zustands-Bitabtastungen nicht zu einem „Gut“-Ergebnis geführt haben, und der Prozess kehrt zu Schritt 1208b zurück. Ein nächster Vpgm-Impuls P4 (12,4 V) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine 2-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1208b (Zustand S2) durchgeführt. Somit führt Schritt 1208b eine weitere Bitabtastung für Zustand S2 und eine weitere Bitabtastung für Zustand S3 durch. Die Bitabtastung für Zustand S2 führt wieder zu einem „Gut“-Ergebnis (12,4 V ist größer als Vv2 = 11,4 V), und die Bitabtastung für Zustand S3 führt zu einem „Gut“-Ergebnis (12,4 V ist größer als Vv3 = 12,0 V). Da die Bitabtastung für Zustand S2 bei der ersten Iteration von Schritt 1208b zu einem „Gut“-Ergebnis geführt hat, werden die Verifizierung und die Bitabtastung für Zustand S2 bei der zweiten Iteration von Schritt 1208b hierin als „zusätzliche Verifizierung“ bezeichnet. Somit wird bei Schritt 1210 bestimmt, dass alle 2-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess fährt mit Schritt 1212 fort.
  • Da bei Schritt 1212 noch nicht alle Bitabtastungen für alle 15 Zustände zu einem „Gut“-Ergebnis geführt haben, fährt der Prozess dann mit Schritt 1202b fort, es wird ein nächster Vpgm-Impuls P5 (13,2 V) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine n=1-Zustands-Bitabtastung beginnend mit dem aktuellen Zustand aus der vorherigen Iteration von Schritt 1202b durchgeführt. Wie oben beschrieben, beginnt bei der ersten Iteration von Schritt 1202b nach Schritt 1212 die 1-Zustands-Bitabtastung mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1208b (Zustand S3). Somit führt Schritt 1202b eine Bitabtastung für Zustand S4 durch. Die Bitabtastung von Zustand S4 führt zu einem „Gut“-Ergebnis (13,2 V ist größer als Vv4 = 12,6 V). Somit wird bei Schritt 1204 bestimmt, dass alle 1-Zustands-Bitabtastungen zu einem „Gut“-Ergebnis geführt haben, und der Prozess fährt mit Schritt 1206 fort. Es ist zu beachten, dass der Zustand S5 bei einer Verifizierung mit dem Vpgm-Impuls P5 zu einem „Gut“-Ergebnis führt (13,2 V ist gleich Vv5 = 13,2 V).
  • Der Prozess 1200b fährt wie oben beschrieben fort, wobei er wiederholt umschaltet zwischen dem Durchführen einer 1-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis erste vorbestimmte Kriterien erfüllt sind (z. B. alle 1-Zustands-Bitabtastungen haben zu einem „Gut“-Ergebnis geführt), und dem Durchführen einer 2-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis zweite vorbestimmte Kriterien erfüllt sind (z. B. alle 2-Zustands-Bitabtastungen haben zu einem „Gut“-Ergebnis geführt).
  • 12E ist ein Flussdiagramm eines beispielhaften Prozesses 1220 für die Programmierung von Speicherzellen unter Verwendung einer Ausführungsform, die selektiv (1) eine Einzelzustands-Bitabtastung und (2) eine dynamische Bitabtastung einer variablen Zustandsanzahl durchführt. In einer Ausführungsform kann der Prozess 1220 in einer Speichervorrichtung, wie zum Beispiel der Speichervorrichtung 100 von 1, durchgeführt werden.
  • Bei Schritt 1222 wird eine durchschnittliche Schwellspannungsänderung pro angelegtem Vpgm-Impuls (ΔVt) bestimmt. Beispielsweise können Vpgm-Impulse an eine Population von Speicherzellen angelegt werden, und eine durchschnittliche Schwellenspannungsänderung pro angelegtem Vpgm-Impuls kann bestimmt werden.
  • Bei Schritt 1224 wird bestimmt, ob ΔVt, die bestimmte durchschnittliche Schwellenspannungsänderung pro angelegtem Vpgm-Impuls, kleiner als oder gleich ΔVpvf, dem Abstand zwischen aufeinander folgenden Verifizierungspegeln, ist.
  • Wenn in Schritt 1224 bestimmt wird, dass ΔVt ≤ ΔVpvf, fährt der Prozess mit Schritt 1226 fort und es wird eine Einzelzustands-Bitabtastung nach jedem der mehreren Programmierimpulse durchgeführt. Ein beispielhafter Einzelzustands-Bitabtastungsprozess ist unten beschrieben und in 12F dargestellt. Wenn in Schritt 1224 bestimmt wird, dass ΔVt nicht ≤ ΔVpvf, fährt der Prozess mit Schritt 1228 fort und es wird eine dynamische Bitabtastung einer variablen Zustandsanzahl nach jedem der mehreren Programmierimpulse durchgeführt. In einer Ausführungsform kann Schritt 1228 dynamische Bitabtastungen einer variablen Zustandsanzahl durchführen, die wiederholt zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen und dem Durchführen einer m-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen umschalten, wobei m > n und n > 0 ist, wie oben für die beispielhaften Prozesse von 12A und 12C beschrieben.
  • 12F ist ein Flussdiagramm eines beispielhaften Prozesses 1230 für die Programmierung von Speicherzellen unter Verwendung einer Ausführungsform einer Einzelzustands-Bitabtastung. In einer Ausführungsform kann Prozess 1230 in einer Speichervorrichtung durchgeführt werden, wie zum Beispiel der Speichervorrichtung 100 von 1.
  • Bei Schritt 1232 wird ein Vpgm-Impuls an eine ausgewählte Wortleitung angelegt (z. B. wie oben in Bezug auf Schritt 1106 von 11A beschrieben), es wird ein Verifizierungssignal an die ausgewählte Wortleitung angelegt, während Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt werden (z. B. wie oben in Bezug auf Schritt 1108 von 11A beschrieben), und es wird eine Einzelzustands-Bitabtastung durchgeführt. Bei der ersten Iteration von Schritt 1232 beginnt die Einzelzustands-Bitabtastung mit dem ersten Zustand.
  • Bei Schritt 1234 wird bestimmt, ob die in Schritt 1232 durchgeführte Einzelzustands-Bitabtastung zu einem „Gut“-Ergebnis geführt hat. Wenn bei Schritt 1234 bestimmt wird, dass die Bitabtastung nicht zu einem „Gut“-Ergebnis geführt hat, kehrt der Prozess 1230 zu Schritt 1232 zurück, um einen weiteren Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) an die ausgewählte Wortleitung anzulegen, Verifizierungstests für einen oder mehrere Speicherzustände durchzuführen und eine Einzelzustands-Bitabtastung beginnend mit dem gleichen ersten Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1232 durchzuführen.
  • Wenn bei Schritt 1234 bestimmt wird, dass die Bitabtastung zu einem „Gut“-Ergebnis geführt hat, wird bei Schritt 1236 bestimmt, ob Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben. Wenn bei Schritt 1236 bestimmt wird, dass alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, ist die Programmierung abgeschlossen und der Prozess 1230 endet.
  • Wenn bei Schritt 1236 bestimmt wird, dass noch nicht alle Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben, kehrt der Prozess 1230 zu Schritt 1232 zurück und ein weiterer Vpgm-Impuls (mit einer erhöhten Amplitude im Vergleich zum vorherigen Vpgm-Impuls) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests für einen oder mehrere Speicherzustände durchgeführt, und es wird eine Einzelzustands-Bitabtastung beginnend mit dem nächsten Zustand nach dem Zustand mit „Gut“-Ergebnis aus der vorherigen Iteration von Schritt 1232 durchgeführt. Der Prozess 1230 wird fortgesetzt, bis Einzelzustands-Bitabtastungen für alle Programmierzustände zu einem „Gut“-Ergebnis geführt haben.
  • 12G zeigt Ergebnisse eines beispielhaften Vorgangs des Prozesses 1230 von 12F unter Verwendung von beispielhaften Vpgm-Impulsen, Schwellenspannungsverteilungen und Verifizierungsspannungen, die in 13B dargestellt sind. Insbesondere zeigt 13B die Vpgm-Impulse P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23 und P24 mit den Werten (in Volt) 10,0, 10,4, 10,8, 11,2, 11,6, 12,0, 12,4, 12,8, 13,2, 13,6, 14,0, 14,4, 14,8, 15,2, 15,6, 16,0, 16,4, 16,8, 17,2, 17,6, 18,0, 18,4, 18,8 bzw. 19,2, mit einer Differenz zwischen aufeinander folgenden Vpgm-Impulsen (Δpgm) von 0,4 V. 13B zeigt auch beispielhafte Schwellenspannungsverteilungen für eine Sechzehn-Zustands-Speichervorrichtung, in der jede Speicherzelle vier Datenbits speichert (eine Verteilung für den Er-Zustand ist nicht gezeigt). Fünfzehn Vth-Verteilungen stellen die programmierten Speicherzustände S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14 und S15 dar. Die Verifizierungsspannungen Vv1, Vv2, Vv3, Vv4, Vv5, Vv6, Vv7, Vv8, Vv9, Vv10, Vv11, Vv12, Vv13, Vv14 und Vv15 haben Werte (in Volt) von 10,8, 11,4, 12,0, 12,6, 13,2, 13,8, 14,4, 15,0, 15,6, 16,2, 16,8, 17,4, 18,0, 18,6 bzw. 19,2, mit einem Abstand zwischen aufeinander folgenden Verifizierungspegeln (ΔVpvf) von 0,6 V. Andere Vpgm-Impulsamplituden, Δpgm-Werte, Verifizierungsspannungswerte und Δpvf-Werte können verwendet werden.
  • In dem in 12G gezeigten Beispiel werden zwei Verifizierungstests nach jedem Vpgm-Impuls durchgeführt, und jeder Verifizierungstest ist durch ein A-Symbol dargestellt. Bei anderen Ausführungsformen können mehr als zwei Verifizierungstests nach jedem Vpgm-Impuls durchgeführt werden.
  • Nach den Verifizierungstests wird eine Einzelzustands-Bitabtastung gemäß den Schritten des Prozesses 1230 von 12F durchgeführt. Wie oben beschrieben, ist eine Einzelzustands-Bitabtastung ein Bitabtastungsvorgang, der für einen einzelnen Zustand durchgeführt wird. Somit wird beginnend bei Schritt 1232 ein Vpgm-Impuls P1 (10,0 V) an eine ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine Einzelzustands-Bitabtastung beginnend mit Zustand S1 durchgeführt. Die Bitabtastung für Zustand S1 führt zu einem „Schlecht“-Ergebnis (10,0 V ist kleiner als Vv1 = 10,8 V). Somit wird bei Schritt 1234 bestimmt, dass die Einzelzustands-Bitabtastung nicht zu einem „Gut“-Ergebnis geführt hat, und der Prozess kehrt zu Schritt 1232 zurück. Ein nächster Vpgm-Impuls P2 (10,4 V) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine Einzelzustands-Bitabtastung beginnend mit dem Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1232 (Zustand S1) durchgeführt. Die Bitabtastung für Zustand S1 führt erneut zu einem „Schlecht“-Ergebnis (10,4 V ist kleiner als Vv1 = 10,8 V). Somit wird bei Schritt 1234 bestimmt, dass die Einzelzustands-Bitabtastung nicht zu einem „Gut“-Ergebnis geführt hat, und der Prozess kehrt zu Schritt 1232 zurück. Ein nächster Vpgm-Impuls P3 (10,8 V) wird an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine Einzelzustands-Bitabtastung beginnend mit dem Zustand mit „Schlecht“-Ergebnis aus der vorherigen Iteration von Schritt 1232 (Zustand S1) durchgeführt. Bei Schritt 1234 wird bestimmt, dass die Einzelzustands-Bitabtastung zu einem „Gut“-Ergebnis geführt hat (10,8 V ist gleich Vv1 = 10,8 V). Somit fährt der Prozess mit Schritt 1236 fort.
  • Da bei Schritt 1236 Bitabtastungen für alle 15 Zustände noch nicht zu einem „Gut“-Ergebnis geführt haben, kehrt der Prozess zu Schritt 1232 zurück, es wird ein nächster Vpgm-Impuls P4 (11,2 V) an die ausgewählte Wortleitung angelegt, es werden Verifizierungstests durchgeführt, und dann wird eine Einzelzustands-Bitabtastung beginnend mit dem ersten Zustand nach dem letzten Zustand mit „Gut“-Ergebnis von Schritt 1232 (Zustand S1) durchgeführt. Somit führt Schritt 1232 eine Bitabtastung für Zustand S2 durch. Die Bitabtastung für Zustand S2 führt zu einem „Schlecht“-Ergebnis (11,2 V ist kleiner als Vv2 = 11,4 V). Somit wird bei Schritt 1234 bestimmt, dass die Einzelzustands-Bitabtastung nicht zu einem „Gut“-Ergebnis geführt hat, und der Prozess kehrt zu Schritt 1232 zurück. Die Prozessschritte des Prozesses 1230 werden fortgesetzt, bis Bitabtastungen für alle fünfzehn Zustände zu einem „Gut“-Ergebnis führen.
  • Folglich kann gesehen werden, dass in einer Ausführungsform eine Vorrichtung bereitgestellt wird, die eine Vielzahl von Speicherzellen, eine Programmierschaltung zum Anlegen einer Vielzahl von Programmierimpulsen an die Speicherzellen und eine Abtastungsschaltung zum wiederholten Umschalten zwischen dem Durchführen einer n-Zustands-Bitabtastung nach jedem Programmierimpuls, bis erste vorbestimmte Kriterien erfüllt sind, und dem Durchführen einer m-Zustands-Bitabtastung nach jedem Programmierimpuls, bis zweite vorbestimmte Kriterien erfüllt sind, einschließt, wobei m > n und n > 0 ist.
  • In einer anderen Ausführungsform wird eine Vorrichtung bereitgestellt, die eine Vielzahl von Speicherzellen, eine Programmierschaltung zum Anlegen einer Vielzahl von Programmierimpulsen an die Speicherzellen, eine erste Bitabtastungsschaltung zum Durchführen einer Einzelzustands-Bitabtastung nach jedem von mehreren Programmierimpulsen und eine zweite Bitabtastungsschaltung zum Durchführen einer dynamischen Bitabtastung variabler Zustandsanzahlen durch das Zählen von Bits Zustand für Zustand nach jedem von mehreren Programmierimpulsen einschließt.
  • In einer anderen Ausführungsform wird ein Verfahren bereitgestellt, das das Anlegen von Programmierimpulsen an eine Vielzahl von Speicherzellen, die jeweils eine Vielzahl von Speicherzuständen einschließen, das Bestimmen einer durchschnittlichen Schwellenspannungsänderung pro angelegtem Programmierimpuls, das selektive Durchführen einer Einzelzustands-Bitabtastung oder einer dynamischen Bitabtastung einer variablen Zustandsanzahl nach jedem von mehreren Programmierimpulsen basierend auf der bestimmten durchschnittlichen Schwellenspannungsänderung pro angelegtem Programmierimpuls einschließt.
  • In einer anderen Ausführungsform wird eine Vorrichtung bereitgestellt, die eine Vielzahl von Speicherzellen, ein Programmiermittel, das eingerichtet ist, um eine Vielzahl von Programmierimpulsen an die Speicherzellen anzulegen, und ein Mittel zum Durchführen von Bitabtastungen an der Vielzahl von Speicherzellen einschließt. Die Mittel zum Durchführen von Bitabtastungen schließen Mittel zum Durchführen einer n-Zustands-Bitabtastung nach jedem Programmierimpuls, Mittel zum Bestimmen, dass alle n Zustände bei der n-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führen, Mittel zum Durchführen einer m-Zustands-Bitabtastung nach jedem Programmierimpuls, wobei m > n ist, Mittel zum Bestimmen, dass alle m Zustände bei der m-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führen, und Mittel zum Durchführen einer n-Zustands-Bitabtastung nach jedem Programmierimpuls ein.
  • Die Programmiermittel können Lese-/Schreibschaltungen 108, Zeilen-Decodierer 110 und das Stromsteuermodul 126 von 1A oder andere Logik-Hardware, und/oder anderen ausführbaren Code einschließen, der auf einem computerlesbaren Speichermedium oder einer Vorrichtung gespeichert ist. Andere Ausführungsformen können ähnliche oder äquivalente Mittel einschließen.
  • Die Mittel zum Durchführen von Bitabtastungen können Steuerschaltungen 106 und die Steuerung 114 von 1A oder andere Logik-Hardware und/oder anderen ausführbaren Code einschließen, der auf einem computerlesbaren Speichermedium oder einer Vorrichtung gespeichert ist. Andere Ausführungsformen können ähnliche oder äquivalente Mittel einschließen.
  • Die Mittel zum Durchführen einer n-Zustands-Bitabtastung nach jedem Programmierimpuls können Steuerschaltungen 106 und die Steuerung 114 von 1A oder andere Logik-Hardware und/oder anderen ausführbaren Code einschließen, der auf einem computerlesbaren Speichermedium oder einer Vorrichtung gespeichert ist. Andere Ausführungsformen können ähnliche oder äquivalente Mittel einschließen.
  • Die Mittel zum Bestimmen, dass alle n Zustände bei der n-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führen, können Steuerschaltungen 106 und die Steuerung 114 von 1A oder andere Logik-Hardware und/oder anderen ausführbaren Code einschließen, der auf einem computerlesbaren Speichermedium oder einer Vorrichtung gespeichert ist. Andere Ausführungsformen können ähnliche oder äquivalente Mittel einschließen.
  • Die Mittel zum Durchführen einer m-Zustands-Bitabtastung nach jedem Programmierimpuls können Steuerschaltungen 106 und die Steuerung 114 von 1A oder andere Logik-Hardware und/oder anderen ausführbaren Code einschließen, der auf einem computerlesbaren Speichermedium oder einer Vorrichtung gespeichert ist. Andere Ausführungsformen können ähnliche oder äquivalente Mittel einschließen.
  • Die Mittel zum Bestimmen, dass alle m Zustände bei der m-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führen, können Steuerschaltungen 106 und die Steuerung 114 von 1A oder andere Logik-Hardware und/oder anderen ausführbaren Code einschließen, der auf einem computerlesbaren Speichermedium oder einer Vorrichtung gespeichert ist. Andere Ausführungsformen können ähnliche oder äquivalente Mittel einschließen.
  • In einer anderen Ausführungsform wird ein System bereitgestellt, das einen Speicherchip mit einer Vielzahl von Speicherzellen und eine mit dem Speicherchip verbundene Steuerung einschließt, wobei die Steuerung eingerichtet ist, um eine Vielzahl von Programmierimpulsen an die Speicherzellen anzulegen und eine Bitabtastung einer variablen Zustandsanzahl nach jedem von mehreren Programmierimpulsen durchzuführen, wobei die Bitabtastung einer variablen Zustandsanzahl wiederholt zwischen einer n-Zustands-Bitabtastung und einer m-Zustands-Bitabtastung umschaltet, wobei m > n und n > 0 ist.
  • Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Es ist nicht beabsichtigt umfassend zu sein oder auf die genaue angegebene Form zu beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Beschreibung möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der Technologie und ihre praktische Anwendung am besten zu erklären, um dadurch anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, wie sie für die jeweilige beabsichtigte Verwendung geeignet sind, am besten zu nutzen. Der Schutzumfang der Technologie wird durch die hieran angehängten Ansprüche definiert.

Claims (12)

  1. Vorrichtung, aufweisend: eine Vielzahl von Speicherzellen; eine Programmierschaltung, die eingerichtet ist, um eine Vielzahl von Programmierpulsen an die Speicherzellen anzulegen; und eine Abtastungsschaltung, die eingerichtet ist, um wiederholt umzuschalten zwischen: Durchführen einer n-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis erste vorbestimmte Kriterien erfüllt sind; und Durchführen einer m-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis zweite vorbestimmte Kriterien erfüllt sind, wobei m > n und n > 0 ist.
  2. Vorrichtung gemäß Anspruch 1, wobei das erste vorbestimmte Kriterium aufweist, dass die n-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führt, und das zweite vorbestimmte Kriterium aufweist, dass die m-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führt.
  3. Vorrichtung gemäß Anspruch 2, wobei: das „Gut“-Ergebnis der n-Zustands-Bitabtastung das Bestimmen aufweist, dass eine Anzahl von Speicherzellen, die nicht auf einen gewünschten Speicherzustand programmiert worden sind, kleiner als ein vorbestimmter Wert für jeden von n Speicherzuständen ist; und das „Gut“-Ergebnis der m-Zustands-Bitabtastung das Bestimmen aufweist, dass die Anzahl von Speicherzellen, die nicht auf einen gewünschten Speicherzustand programmiert worden sind, kleiner als der vorbestimmte Wert für jeden von m Speicherzuständen ist.
  4. Vorrichtung nach einem der vorstehenden Ansprüche, wobei: das Durchführen einer n-Zustands-Bitabtastung das Bestimmen einer Anzahl von Speicherzellen aufweist, die nicht auf einen gewünschten Speicherzustand für jeden von n Speicherzuständen programmiert worden sind; und das Durchführen einer m-Zustands-Bitabtastung das Bestimmen einer Anzahl von Speicherzellen aufweist, die nicht auf einen gewünschten Speicherzustand für jeden von m Speicherzuständen programmiert worden sind.
  5. Vorrichtung gemäß Anspruch 1, weiterhin aufweisend: eine erste Zählschaltung, die eingerichtet ist, um eine Anzahl von Speicherzellen zu zählen, die nicht auf einen gewünschten Speicherzustand für jeden von n Speicherzuständen programmiert worden sind; und eine zweite Zählschaltung, die eingerichtet ist, um eine Anzahl von Speicherzellen zu zählen, die nicht auf einen gewünschten Speicherzustand für jeden von m Speicherzuständen programmiert worden sind.
  6. Vorrichtung gemäß Anspruch 5, wobei die erste Zählschaltung und die zweite Zählschaltung jeweils eingerichtet sind, um gemeinsam Speicherzellen für alle Speicherzustände zu zählen.
  7. Vorrichtung gemäß Anspruch 5, wobei die erste Zählschaltung und die zweite Zählschaltung jeweils eingerichtet sind, um separat Speicherzellen für jeden Speicherzustand zu zählen.
  8. Verfahren, aufweisend: Anlegen von Programmierimpulsen an eine Vielzahl von Speicherzellen, die jeweils eine Vielzahl von Speicherzuständen aufweisen; Bestimmen einer durchschnittlichen Schwellenspannungsänderung pro angelegtem Programmierimpuls; und selektives Durchführen einer Einzelzustands-Bitabtastung oder einer dynamischen Bitabtastung einer variablen Zustandsanzahl nach jedem von mehreren Programmierimpulsen basierend auf der bestimmten durchschnittlichen Schwellenspannungsänderung pro angelegtem Programmierimpuls.
  9. Verfahren gemäß Anspruch 8, weiterhin aufweisend: Vergleichen der bestimmten durchschnittlichen Schwellenspannungsänderung pro angelegtem Programmierimpuls mit einem vorbestimmten Wert; und selektives Durchführen einer Einzelzustands-Bitabtastung oder einer dynamischen Bitabtastung einer variablen Zustandsanzahl nach jedem von mehreren Programmierimpulsen basierend auf dem Vergleichsergebnis.
  10. Verfahren gemäß Anspruch 9, wobei der vorbestimmte Wert eine Differenz zwischen Verifizierungsschwellenpegeln zwischen aufeinander folgenden Speicherzuständen aufweist.
  11. Verfahren gemäß Anspruch 8, wobei das Durchführen der dynamischen Bitabtastung einer variablen Zustandsanzahl aufweist: Durchführen einer n-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis erste vorbestimmte Kriterien erfüllt sind; und Durchführen einer m-Zustands-Bitabtastung nach jedem von mehreren Programmierimpulsen, bis zweite vorbestimmte Kriterien erfüllt sind, wobei m > n und n > 0 ist.
  12. Verfahren gemäß Anspruch 11, wobei das erste vorbestimmte Kriterium aufweist, dass die n-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führt, und das zweite vorbestimmte Kriterium aufweist, dass die m-Zustands-Bitabtastung zu einem „Gut“-Ergebnis führt.
DE112019000148.5T 2018-06-05 2019-02-07 Dynamische Bitabtastungstechniken für die Programmierung von Speichervorrichtungen Pending DE112019000148T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/000,413 US10535401B2 (en) 2018-06-05 2018-06-05 Dynamic bit-scan techniques for memory device programming
US16/000,413 2018-06-05
PCT/US2019/017075 WO2019236151A1 (en) 2018-06-05 2019-02-07 Dynamic bit-scan techniques for memory device programming

Publications (1)

Publication Number Publication Date
DE112019000148T5 true DE112019000148T5 (de) 2020-09-17

Family

ID=68693627

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000148.5T Pending DE112019000148T5 (de) 2018-06-05 2019-02-07 Dynamische Bitabtastungstechniken für die Programmierung von Speichervorrichtungen

Country Status (4)

Country Link
US (2) US10535401B2 (de)
CN (1) CN111433854B (de)
DE (1) DE112019000148T5 (de)
WO (1) WO2019236151A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021047939A (ja) 2019-09-17 2021-03-25 キオクシア株式会社 半導体記憶装置
WO2021176243A1 (en) * 2020-03-03 2021-09-10 Micron Technology, Inc. On-the-fly programming and verifying method for memory cells based on counters and ecc feedback
TWI755154B (zh) 2020-03-03 2022-02-11 美商美光科技公司 基於計數器及錯誤校正碼反饋用於記憶體單元之即時程式化及驗證方法
US11942165B2 (en) * 2020-09-24 2024-03-26 Yangtze Memory Technologies Co., Ltd. Architecture and method for NAND memory programming
US11475969B2 (en) 2020-12-18 2022-10-18 Micron Technology, Inc. Scan optimization using data selection across wordline of a memory array
US11361835B1 (en) 2021-03-01 2022-06-14 Sandisk Technologies Llc Countermeasure for reducing peak current during programming by optimizing timing of latch scan operations
US11581049B2 (en) 2021-06-01 2023-02-14 Sandisk Technologies Llc System and methods for programming nonvolatile memory having partial select gate drains
US11521691B1 (en) 2021-06-02 2022-12-06 Sandisk Technologies Llc Triggering next state verify in program loop for nonvolatile memory
US11699494B2 (en) * 2021-06-07 2023-07-11 Sandisk Technologies Llc Peak and average ICC reduction by tier-based sensing during program verify operations of non-volatile memory structures
CN115458018A (zh) * 2021-06-09 2022-12-09 桑迪士克科技有限责任公司 解决非易失性存储器结构中相邻平面干扰条件的对策模式
US11862256B2 (en) 2022-02-22 2024-01-02 Sandisk Technologies Llc Non-volatile memory with plane independent screening
US20230290419A1 (en) * 2022-03-09 2023-09-14 Sandisk Technologies Llc Mlc programming techniques in a memory device

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100706245B1 (ko) * 2005-04-13 2007-04-11 삼성전자주식회사 비트 스캔 방식을 사용한 노어 플래시 메모리 장치 및그것의 프로그램 방법
JP5065594B2 (ja) 2005-12-23 2012-11-07 株式会社東芝 半導体記憶装置
US8233324B2 (en) 2010-03-25 2012-07-31 Sandisk Il Ltd. Simultaneous multi-state read or verify in non-volatile storage
US8427884B2 (en) 2011-06-20 2013-04-23 SanDisk Technologies, Inc. Bit scan circuits and method in non-volatile memory
US9361986B2 (en) 2011-09-19 2016-06-07 Sandisk Technologies Inc. High endurance non-volatile storage
US9349476B2 (en) 2013-02-21 2016-05-24 Sandisk Technologies Inc. Methods, systems, and computer readable media for early detection of potential flash failures using an adaptive system level algorithm based on flash program verify
US9552882B2 (en) * 2014-02-06 2017-01-24 Sandisk Technologies Llc Sense amplifier with efficient use of data latches
TWI515734B (zh) * 2014-03-13 2016-01-01 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置
US9343141B2 (en) * 2014-07-15 2016-05-17 Sandisk Technologies Inc. Reprogramming memory with single program pulse per data state
US9922719B2 (en) 2015-06-07 2018-03-20 Sandisk Technologies Llc Multi-VT sensing method by varying bit line voltage
US10157681B2 (en) 2015-09-14 2018-12-18 Sandisk Technologies Llc Programming of nonvolatile memory with verify level dependent on memory state and programming loop count
US10014063B2 (en) 2015-10-30 2018-07-03 Sandisk Technologies Llc Smart skip verify mode for programming a memory device

Also Published As

Publication number Publication date
US10535401B2 (en) 2020-01-14
US20200126613A1 (en) 2020-04-23
US20190371395A1 (en) 2019-12-05
CN111433854B (zh) 2023-10-03
CN111433854A (zh) 2020-07-17
US10971222B2 (en) 2021-04-06
WO2019236151A1 (en) 2019-12-12

Similar Documents

Publication Publication Date Title
DE112019000148T5 (de) Dynamische Bitabtastungstechniken für die Programmierung von Speichervorrichtungen
DE112019000164B4 (de) Speichervorrichtung mit verbundenen wortleitungen zur schnellen programmierung
DE112019000157B4 (de) Speichervorrichtung mit von nand-ketten getrennten bitleitungen zur schnellen programmierung
DE102017104265A1 (de) Dummy-Spannung zum Verringern des Erst-Lese-Effekts in einem Speicher
DE112018003426T5 (de) Reduzieren der lesestörung der art durch injektion heisser elektronen in 3d-speichervorrichtung mit verbundenen sourceendauswahlgates
DE112017004208T5 (de) 3d-nand mit teilblocklöschen
DE112017003298T5 (de) Schema für das Herunterfahren von Wortleitungen zum Entfernen von Restelektronen
DE102015105858A1 (de) Halbleitervorrichtungen mit Peripherieschaltungsbereich und einem ersten und einem zweiten Speicherbereich, sowie zugehörige Programmierverfahren
DE102018105685A1 (de) Multi-Zustands-Programm, das gesteuertes schwaches Boosten für einen nichtflüchtigen Speicher verwendet
DE102018114250A1 (de) Reduzieren eines heißen Elektroneninjektionstypen von Lesestörungen in einer 3D-Speichervorrichtung während Signal-schaltenden Störsignalen
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE102021106907A1 (de) Lochvorladeschema mit gate-induzierter drain-leckstromerzeugung
DE112016003568B4 (de) Intelligente Überprüfung bzw. Verifizierung zur Programmierung nicht-flüchtiger Speicher
DE102018106111A1 (de) Selektives Boosting von Strom in Speicherkanälen basierend auf einem Datenmuster oder physischen Nicht-Uniformitäten
DE102022102591A1 (de) Systeme und verfahren zum einstellen der schwellenspannungsverteilung aufgrund von halbkreis-sgd
DE112019005518T5 (de) Mehrzustandsprogrammierung in einer speichervorrichtung mit schleifenabhängiger bitleitungsspannung während der verifizierung
DE102022113174A1 (de) Proaktive aktualisierung der randdatenwortleitung für halbkreis-drain-side-select-gate
DE102022102593A1 (de) Speicherprogrammierung mit selektiv übersprungenen verifizierungsimpulsen zur leistungsverbesserung
DE102021107268A1 (de) Programmierung von speicherzellen unter verwendung von kodiertem tlc-fine
DE112023000257T5 (de) Zeit-tagging von lesepegeln mehrerer wortleitungen für die aufbewahrung von daten in offenen blöcken
DE102022102624A1 (de) Speichereinrichtung und verfahren zum betrieb unter verwendung des programmierens mit dreifacher kette während des löschens
DE102021106910A1 (de) Schleifenabhängiges umschalten zwischen techniken zur programmverifizierung
DE102022113175A1 (de) Sekundäre kreuzkopplungswirkung in speichervorrichtung mit halbkreis-drain-side-select-gate und gegenmassnahme
DE102022112833A1 (de) Wartung des halbkreis-drain-side-select-gate durch selektives halbkreis-dummy-wortleitungsprogramm
DE102022102622A1 (de) Systeme und verfahren zur kompensation von schwankungen der löschgeschwindigkeit aufgrund von halbkreis-sgd

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE