DE60225005T2 - Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür - Google Patents

Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür Download PDF

Info

Publication number
DE60225005T2
DE60225005T2 DE60225005T DE60225005T DE60225005T2 DE 60225005 T2 DE60225005 T2 DE 60225005T2 DE 60225005 T DE60225005 T DE 60225005T DE 60225005 T DE60225005 T DE 60225005T DE 60225005 T2 DE60225005 T2 DE 60225005T2
Authority
DE
Germany
Prior art keywords
programming
cell
voltage
memory
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60225005T
Other languages
English (en)
Other versions
DE60225005D1 (de
Inventor
Geoffrey Los Altos Gongwer
Daniel.C. Fremont Guterman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25159763&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60225005(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by SanDisk Corp filed Critical SanDisk Corp
Application granted granted Critical
Publication of DE60225005D1 publication Critical patent/DE60225005D1/de
Publication of DE60225005T2 publication Critical patent/DE60225005T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • 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
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/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/10Programming or data input circuits
    • G11C16/12Programming voltage switching 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/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3481Circuits or methods to verify correct programming of nonvolatile memory cells whilst programming is in progress, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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

Description

  • Die vorliegende Erfindung betrifft allgemein nichtflüchtige Halbleiterspeicher wie beispielsweise elektrisch löschbare und programmierbare Nur-Lese-Speicher (EEPROM) und Flash-EEPROM und betrifft spezieller Schaltungen und Verfahren zum Programmieren der Speicherzustände dieser.
  • Halbleiterspeicher, die nichtflüchtig Ladung speichern können, insbesondere in Form von EEPROM- und Flash-EEPROM-Speichern, sind in jüngerer Zeit zum Speicher der Wahl in Mobil- und Handgeräten geworden, insbesondere für Datenanwendungen und Consumer-Elektronik-Produkte. Im Gegensatz zu einem RAM (Direktzugriffsspeicher), der auch einen Halbleiterspeicher darstellt, ist ein Flash-Speicher nichtflüchtig, indem die in diesem gespeicherten Daten selbst dann erhalten bleiben, nachdem die Stromversorgung abgeschaltet ist. Trotz der höheren Kosten werden Flash-Speicher zunehmend für Massenspeicheranwendungen genutzt. Herkömmliche Massenspeicher, die auf einem sich drehenden magnetischen Medium basieren, beispielsweise Festplatten und Disketten, sind im Umfeld von Mobil- und Handgeräten ungeeignet. Dies ist der Fall, weil Plattenlaufwerke tendenziell voluminös sind, anfällig für mechanische Ausfälle sind und eine hohe Reaktionszeit sowie einen hohen Energiebedarf haben. Diese unerwünschten Attribute machen einen auf Platten basierenden Speicher in den meisten mobilen und tragbaren Anwendungen unpraktisch. Flash-Speicher andererseits sind im Umfeld von mobilen und tragbaren Anwendungen wegen ihrer kleinen Größe, geringen Leistungsaufnahme, hohen Geschwindigkeit und hohen Zuverlässigkeit ideal geeignet.
  • EEPROMs und elektrisch programmierbare Nur-Lese-Speicher (EPROMs) stellen nichtflüchtige Speicher dar, die gelöscht werden können und in deren Speicherzellen neue Daten geschrieben oder "programmiert" werden können.
  • Ein EPROM nutzt ein schwebendes (nicht angeschlossenes) leitfähiges Gate, ein so genanntes Floating-Gate, in einer Feldeffekttransistor-Struktur, das über einem Kanalbereich in einem Halbleitersubstrat zwischen Source- und Drain-Gebieten angeordnet ist. Ein Steuergate wird dann über dem Floating-Gate bereitgestellt. Die Schwellspannungscharakteristik des Transistors wird durch die Menge an Ladung gesteuert, die auf dem Floating-Gate gehalten wird. Das bedeutet, für einen gegebenen Ladungswert auf dem Floating-Gate muss eine entsprechende Spannung (Schwellspannung) an das Steuergate angelegt werden, bevor der Transistor "anschaltet", um eine Leitung zwischen dessen Source- und Drain-Gebiet zu ermöglichen.
  • Das Floating-Gate kann Ladung in einem bestimmten Bereich halten, und daher kann eine EPROM-Speicherzelle auf einen beliebigen Schwellspannungspegel in einem Schwellspannungsfenster programmiert werden. Die Größe des Schwellspannungsfensters wird durch den minimalen und den maximalen Schwellspannungspegel des Bauelements begrenzt, welcher wiederum dem Bereich der Ladungen entspricht, der auf dem Floating-Gate programmiert werden kann. Das Schwellspannungsfenster hängt im Allgemeinen von den Charakteristika, den Betriebsbedingungen und der Verlaufshistorie des Speicherbauelements ab. Jeder eindeutig auflösbare Schwellspannungspegel in dem Fenster kann prinzipiell zum Festlegen eines definierten Speicherzustands der Zelle genutzt werden.
  • Für EPROM-Speicher wird der als Speicherzelle dienende Transistor typischerweise auf einen programmierten Zustand programmiert, indem Elektronen aus dem Kanalbereich des Substrats heraus durch ein dünnes Gate-Dielektrikum hindurch und auf das Floating-Gate beschleunigt werden. Der Speicher kann als Block gelöscht werden, indem die Ladung auf dem Floating-Gate durch ultraviolette Bestrahlung entfernt wird.
  • 1A stellt schematisch einen nichtflüchtigen Speicher in Form einer EEPROM-Zelle mit einem Floating-Gate zum Speichern von Ladung dar. Ein elektrisch löschbarer und programmierbarer Nur-Lese-Speicher (EEPROM) weist eine ähnliche Struktur wie ein EPROM auf, bietet zusätzlich aber einen Mechanismus zum elektrischen Hinzufügen und Entfernen von Ladung von dessen Floating-Gate beim Anlegen geeigneter Spannungen, ohne dass eine Belichtung mit UV-Strahlung erforderlich ist.
  • Ein Array aus solchen EEPROM-Zellen wird als "Flash"-EEPROM-Array bezeichnet, wenn ein gesamtes Zellen-Array oder eine beträchtliche Gruppe von Zellen des Arrays zusammen elektrisch gelöscht werden kann (d. h. blitzartig). Wenn die Gruppe von Zellen gelöscht ist, kann sie danach erneut programmiert werden.
  • 1B stellt schematisch einen nichtflüchtigen Speicher in Form einer NROM-Zelle mit einer dielektrischen Schicht zur Ladungsspeicherung dar. Anstatt Ladung auf einem Floating-Gate zu speichern, weist diese eine dielektrische Schicht zum Speichern von Ladung auf. Zum Beispiel offenbaren die US-Patente Nr. 5,768,192 und 6,011,725 eine nichtflüchtige Speicherzelle mit einem einfangenden Dielektrikum, das in Zwischenlage zwischen zwei Siliciumdioxid-Schichten angeordnet ist.
  • ZELLEN- UND ARRAY-STRUKTUR
  • 1C stellt schematisch eine Flash-EEPROM-Zelle mit sowohl einem Auswahlgate als auch einem Control- oder Steuergate dar. Speicherbauelemente mit einer solchen Zellenstruktur sind in US-Patent Nr. 5,313,421 beschrieben. Die Speicherzelle 10 weist einen "gespaltenen Kanal" 12 zwischen Source- 14 und Drain- 16 Diffusionsgebieten auf. Eine Zelle wird effektiv mit zwei Transistoren T1 und T2 in Reihe gebildet. T1 dient als Speichertransistor, wobei er ein Floating-Gate 20 und ein Control-Gate 30 aufweist. Das Control-Gate wird auch als Steuergate 30 bezeichnet. Das Floating-Gate kann eine wählbare Menge an Ladung speichern. Die Stromstärke, die durch den Abschnitt des Kanals von T1 fließen kann, hängt von der Spannung an dem Steuergate 30 und von der Menge an Ladung, die auf dem dazwischen liegenden Floating-Gate 20 vorhanden ist, ab. T2 dient als Auswahltransistor, indem er ein Auswahlgate 40 aufweist. Wenn T2 durch eine Spannung an dem Auswahlgate 40 angeschaltet ist, ermöglicht er, dass der in dem Abschnitt des Kanals von T1 vorhandene Strom zwischen Source und Drain fließen kann.
  • 1D stellt schematisch eine weitere Flash-EEPROM-Zelle mit zwei Floating-Gates und unabhängigen Auswahl- und Steuergates dar. Speicherbauelemente, die eine solche Zellenstruktur aufweisen, sind in der gleichzeitig anhängigen US-Patentanmeldung Nr. 09/343,493, eingereicht am 30. Juni 1999 und als US 6,103,573 erteilt, beschrieben. Die Speicherzelle 10' ähnelt derjenigen aus 1C, außer dass sie effektiv drei in Reihe geschaltete Transistoren aufweist. Zwischen einem Paar Speichertransistoren, T1-links und T1-rechts, befindet sich ein Auswahltransistor T2. Die Speichertransistoren weisen Floating-Gates 20' und 20'' und Steuergates 30' bzw. 30'' auf. Der Auswahltransistor T2 wird durch ein Auswahlgate 40' gesteuert. Zu einem bestimmten Zeitpunkt wird jeweils nur auf einen der beiden Speichertransistoren zugegriffen, zum Lesen oder Programmieren. Wenn auf die Speichereinheit T1-links zugegriffen wird, wird sowohl der T2 als auch der T1-rechts angeschaltet, sodass der in dem Abschnitt des Kanals von T1-links vorhandene Strom zwischen Source und Drain fließen kann. Analog werden, wenn auf die Speichereinheit T1-rechts zugegriffen wird, der T2 und der T1-links angeschaltet. Eine Löschung erfolgt dadurch, dass sich ein Abschnitt des Auswahlgate-Polysiliciums nahe dem Floating-Gate befindet und eine beträchtliche positive Spannung (z. B. 20 V) an das Auswahlgate angelegt wird, sodass die in dem Floating-Gate gespeicherten Elektronen zu dem Auswahlgate-Polysilicium tunneln können.
  • 2 stellt ein schematisches Blockdiagramm eines adressierbaren Arrays aus Speicherzellen in Zeilen und Spalten zusammen mit Decodern dar. Ein zweidimensionales Array 100 ist aus Speicherzellen gebildet, wobei die Speicherzellen jeder Zeile über ihre Source- und Drain-Elektroden in Reihe geschaltet sind. Jede Speicherzelle 50 weist eine Source-Elektrode 54, eine Drain-Elektrode 56 und ein Steuergate 60 sowie ein Auswahlgate 70 auf. Die Auswahlgates der Zellen in einer Zeile sind mit einer Wortleitung 110 verbunden. Die Source- und Drain-Elektroden der Zellen in einer Spalte sind mit Bitleitungen 124 bzw. 126 verbunden. Außerdem sind die Steuergates der Zellen in einer Spalte durch eine Steuerleitung 130 verbunden.
  • Wenn die Zelle 50 zum Programmieren oder Lesen adressiert wird, müssen jeweils geeignete Programmier- oder Lesespannungen (VS, VD, VSTG, VSLG) an Source 54 und Drain 56 der Zelle, an das Steuergate 60 und an das Auswahlgate 70 angelegt werden. Ein Wortleitungsdecoder 112 verbindet selektiv eine ausgewählte Wortleitung mit einer Auswahlspannung VSLG. Ein Bitleitungsdecoder 122 verbindet selektiv das Bitleitungspaar 124, 126 in einer adressierten Spalte mit einer Source-Spannung VS bzw. einer Drain-Spannung VD. Analog verbindet ein Steuerleitungsdecoder 132 die Steuerleitung 130 in der adressierten Spalte selektiv mit einer Steuer- oder Control-Gate-Spannung VSTG.
  • Somit wird eine spezielle Zelle des zweidimensionalen Arrays aus Flash-EEPROM-Zellen zum Programmieren oder Lesen durch Auswahl oder Decodierung in der Spaltenrichtung eines Paares von Bitleitungen und einer Steuerleitung und in der Zeilenrichtung einer Wortleitung adressiert. Um das Leistungsverhalten zu verbessern, ermöglichen die Spaltendecoder 122 und 132, eine Gruppe von Spalten auszuwählen und daher auf eine entsprechende Gruppe oder einen Block von Zellen parallel zuzugreifen, indem auf die Zeile von Zellen Block für Block zugegriffen wird.
  • Früher hatten viele Flash-EEPROM-Bauelemente eine Wortleitung, die sämtliche Steuergates der Zellen entlang einer jeweiligen Zeile verband. Somit hatte die Wortleitung grundsätzlich zwei Funktionen auszuführen: die Zeilenauswahl und das Anlegen einer Steuergate-Spannung an sämtliche Zellen in der Zeile zum Lesen oder Programmieren. Es ist oft schwierig, diese beiden Funktionen in optimaler Weise mit einer einzigen Spannung auszuführen. Wenn die Spannung zur Auswahl einer Zeile ausreicht, kann sie zum Programmieren höher als gewollt sein. Bei einer Zelle jedoch, die ein unabhängiges Steuergate und Auswahlgate aufweist, braucht die Wortleitung, die an die Auswahlgates der Zellen in einer Zeile angeschlossen ist, nur die Auswahlfunktion auszuführen, während die Steuerleitung die Funktion des Anlegens einer optimalen, unabhängigen Steuergate-Spannung an einzelne Zellen in einer Spalte ausführt.
  • ZELLEN-CHARAKTERISTIKA
  • Bei der üblichen EEPROM-Zelle mit zwei Zuständen wird zumindest ein Stromstärke-Kipppunktwert festgelegt, um so das Leitungsfenster in zwei Bereiche zu unterteilen. Wenn eine Zelle gelesen wird, indem vorgegebene feste Spannungen angelegt werden, wird deren Source/Drain-Strom durch Vergleich mit dem Kipppunktwert (oder der Referenzstromstärke IREF) auf einen Speicherzustand aufgelöst. Wenn die gelesene Stromstärke größer als diejenige des Kipppunktwertes oder IREF ist, wird für die Zelle ein bestimmter logischer Zustand festgestellt (z. B. ein Zustand "Null"), während, wenn die Stromstärke geringer als der Kipppunktwert ist, für die Zelle der andere logische Zustand festgestellt wird (z. B. ein Zustand "Eins"). Somit speichert eine solche Zelle mit zwei Zuständen ein Bit an digitalen Daten. Eine Referenzstromquelle, die extern programmierbar sein kann, wird oft als Teil eines Speichersystems bereitgestellt, um die Stromstärke des Kipppunktwertes zu erzeugen.
  • Um die Speicherkapazität zu erhöhen, werden im Zuge der Fortschritte in der Halbleitertechnologie EEPROM-Bauelemente mit immer höherer Dichte hergestellt. Eine andere Methode zum Erhöhen der Speicherkapazität besteht darin, in jeder Speicherzelle mehr als zwei Zustände zu speichern.
  • Für eine Mehrzustands- oder Mehrpegel-EEPROM-Speicherzelle wird das Leitungsfenster in mehr als zwei Bereiche unterteilt, durch mehr als einen Kipppunkt, sodass jede Zelle mehr als ein Bit Daten speichern kann. Die Informationen, die ein gegebenes EEPROM-Array speichern kann, steigen also mit der Anzahl der Zustände, die in jeder Zelle gespeichert werden können. EEPROMs oder Flash-EEPROMs mit Mehrzustands- oder Mehrpegel-Speicherzellen sind in US-Patent Nr. 5,172,338 beschrieben.
  • In der Praxis wird der Speicherzustand einer Zelle üblicherweise gelesen, indem die Leitungsstromstärke zwischen der Source- und der Drain-Elektrode der Zelle ermittelt wird, wenn eine Referenzspannung an das Steuergate angelegt ist. Somit kann für jede gegebene Ladung auf dem Floating-Gate einer Zelle eine entsprechende Leitungsstromstärke in Bezug auf eine feste Steuergate-Referenzspannung erkannt werden. Analog definiert der Bereich an Ladung, die auf das Floating-Gate programmiert werden kann, ein entsprechendes Schwellspannungsfenster oder ein entsprechendes Leitungsstromfenster.
  • Alternativ ist es, anstatt den Leitungsstrom in einem unterteilten Stromstärkefenster zu ermitteln, möglich, die Schwellspannung an dem Steuergate zu bestimmen, welche bewirkt, dass der Leitungsstrom gerade eben "einsetzt" oder eine feste Referenzstromstärke übersteigt. Somit erfolgt die Ermittlung anhand einer Schwellspannung in einem unterteilten Schwellspannungsfenster.
  • 3 stellt die Beziehung zwischen der Source-Drain-Stromstärke-ID und der Steuergate-Spannung VSTG für vier unterschiedliche Ladungen Q1–Q4 dar, die das Floating-Gate wahlweise zu einem bestimmten Zeitpunkt speichern kann. Die vier durchgezogenen Kurven für ID in Abhängigkeit von VSTG stellen vier mögliche Ladungswerte dar, die auf einem Floating-Gate einer Speicherzelle programmiert werden können, wobei sie jeweils vier möglichen Speicherzuständen entsprechen. Beispielsweise kann das Schwellspannungsfenster einer Population von Zellen von 0,5 V bis 3,5 V reichen. Es können sechs Speicherzustände abgegrenzt werden, indem das Schwellspannungsfenster in fünf Bereiche mit einem Intervall von jeweils 0,5 V unterteilt wird. Wenn zum Beispiel eine Referenzstromstärke IREF von 2 μA genutzt wird, wie gezeigt, dann kann die mit Q1 programmierte Zelle als in einem Speicherzustand "1" befindlich betrachtet werden, da deren Kurve IREF im Bereich des Schwellspannungsfensters schneidet, das durch VSTG = 0,5 V und 1,0 V begrenzt ist. Analog befindet sich Q4 in einem Speicherzustand "5".
  • Wie anhand der vorstehenden Beschreibung zu ersehen ist, wird das Schwellspannungsfenster einer Speicherzelle umso feiner unterteilt, für je mehr Zustände die Speicherzelle ausgelegt ist. Dadurch wird eine höhere Genauigkeit bei Programmier- und Lesevorgängen erforderlich sein, um die geforderte Auflösung erreichen zu können.
  • US-Patent Nr. 4,357,685 offenbart ein Verfahren zum Programmieren eines EPROM mit 2 Zuständen, bei welchem, wenn eine Zelle auf einen gegebenen Zustand programmiert wird, diese aufeinanderfolgenden Programmierspannungsimpulsen ausgesetzt wird, wobei jedes Mal eine inkrementelle Ladung auf dem Floating-Gate ergänzt wird. Zwischen den Impulsen wird die Zelle zurückgelesen oder verifiziert, um deren Source-Drain- Stromstärke in Bezug auf den Kipppunktwert zu bestimmen. Die Programmierung wird gestoppt, wenn verifiziert worden ist, dass der Stromstärkezustand den gewünschten Zustand erreicht hat. Die genutzte Programmierimpulsfolge kann eine zunehmende Periode oder Amplitude aufweisen.
  • Bei Programmierschaltungen gemäß dem Stand der Technik werden einfach Programmierimpulse angelegt, um das Schwellspannungsfenster von dem gelöschten oder Grundzustand aus zu durchschreiten, bis der Soll-Zustand erreicht ist. Praktisch wäre es, um eine adäquate Auflösung zu ermöglichen, erforderlich, dass für jeden unterteilten oder begrenzten Bereich zumindest ungefähr fünf Programmierschritte durchlaufen werden. Das Leistungsverhalten ist für Speicherzellen mit 2 Zuständen akzeptabel. Für Mehrzustands-Zellen jedoch erhöht sich die Anzahl der erforderlichen Schritte mit der Anzahl der Unterteilungen, und daher muss die Genauigkeit oder Auflösung der Programmierung erhöht werden. Zum Beispiel können für Zellen mit 16 Zuständen im Mittel zumindest 40 Programmierimpulse zum Programmieren auf einen Soll-Zustand erforderlich sein.
  • Die US 6,014,330 offenbart ein System, bei welchem Speicherzellen durch aufeinanderfolgendes Anlegen von Programmierimpulsen auf eine Mehrzahl von Speicherzuständen programmiert werden. Die Oberbegriffe der unabhängigen Ansprüche basieren auf dem Offenbarungsgehalt des Dokuments US 5,910,915 .
  • Dementsprechend besteht eine allgemeine Aufgabe der vorliegenden Erfindung darin, ein Speicherbauelement mit hoher Dichte und hoher Leistungsfähigkeit und dennoch zu geringen Kosten zur Verfügung zu stellen.
  • Insbesondere besteht eine allgemeine Aufgabe der vorliegenden Erfindung darin, einen Flash-EEPROM mit hoher Leistungsfähigkeit zur Verfügung zu stellen, der im Wesentlichen mehr als zwei Speicherzustände unterstützen kann.
  • Eine weitere allgemeine Aufgabe der vorliegenden Erfindung besteht darin, Flash-EEPROM-Halbleiterchips zur Verfügung zu stellen, die in Computersystemen Magnetplatten-Speichereinrichtungen ersetzen können.
  • Aufgabe der vorliegenden Erfindung ist es, verbesserte Programmierschaltungen und -verfahren für Flash-EEPROM-Bauelemente zur Verfügung zu stellen.
  • Weiterhin ist es Aufgabe der Erfindung, Programmierschaltungen zur Verfügung zu stellen, die einfacher und leichter hergestellt werden können und die eine bessere Genauigkeit und Zuverlässigkeit über eine längere Nutzungsdauer hin aufweisen.
  • Diese und weitere Aufgaben werden gelöst durch Verbesserungen an Programmierschaltungen und -verfahren für nichtflüchtige Bauelemente mit Floating-Gate. Verschiedene Aspekte der vorliegenden Erfindung helfen das Leistungsverhalten zu verbessern, wobei gleichzeitig die erforderliche genaue Programmierauflösung erreicht wird.
  • Entsprechend einem Aspekt der vorliegenden Erfindung wird ein Verfahren zum Programmieren einer Gruppe von Speicherzellen wie in Anspruch 1 beansprucht zur Verfügung gestellt.
  • Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird ein nichtflüchtiger Speicher wie in Anspruch 16 beansprucht zur Verfügung gestellt.
  • Ein Merkmal einer bevorzugten Ausführungsform der vorliegenden Erfindung besteht darin, Programmierimpulse zu nutzen, deren Stärke für die zu programmierenden Daten (Soll-Zustand) optimiert sind, sodass die Zelle innerhalb des ersten Schritts oder der ersten wenigen Schritte so nah wie möglich an den Soll-Zustand heran programmiert wird, ohne diesen zu überschreiten. Ein zweites Merkmal besteht darin, die Programmierung über eine Reihe von Betriebsphasen zu iterieren, wobei bei jeder Phase die Programmierwellenform zunehmend feinere Programmierschritte erzeugt. Ein weiteres Merkmal besteht darin, die ersten beiden Merkmale in einem Programmiervorgang zu realisieren, der auf eine Gruppe von Zellen parallel angewendet werden kann. Auf diese Weise können gleichzeitig sowohl eine hohe Auflösung als auch eine schnelle Konvergenz auf den Soll-Zustand hin erreicht werden, wobei die parallele Funktionsweise das Leistungsverhalten weiter verbessert.
  • Die Verbesserung umfasst eine Programmierschaltung und ein Programmierverfahren, die auf eine Gruppe von Speicherzellen parallel angewendet werden können. Die an jede der Zellen parallel angelegten Programmierimpulse sind für die in dieser Zelle zu speichernden Daten optimiert. Auf diese Weise wird jede der Zellen mit einem Minimum an Programmierimpulsen auf ihren Soll-Zustand programmiert. In der bevorzugten Ausführungsform wird dies durch Bereitstellen eines Programmierspannungsbusses erreicht, der eine Mehrzahl von Spannungspegeln bereitstellt, und dadurch, dass die Programmierschaltung für jede Zelle in der Gruppe von dem Spannungsbus einen optimalen Spannungspegel auswählen kann, der zum Programmieren der jeweiligen Zelle auf ihren Soll-Zustand geeignet ist.
  • Die Programmierimpulse können über eine Mehrzahl von Programmierbetriebsphasen angelegt werden, mit einer zunehmend feineren Programmierauflösung. Bei der bevorzugten Ausführungsform wird während jeder Phase eine Programmierspannung in Form einer Treppen-Wellenform an jede der Zellen parallel angelegt. Eine Zelle in der Gruppe wird aus der weiteren Programmierung ausgeschlossen, wenn diese soweit programmiert worden ist, dass sie einen vorbestimmten Pegel überschritten hat, der geringfügig zu dem Soll-Pegel versetzt ist, welcher dem Soll-Zustand entspricht. Der Versatz ist derart vorgesehen, dass ein Programmierimpuls, der eine Zelle über den vorbestimmten Pegel hinaus programmiert, den Soll-Pegel nicht um mehr als einen vorgegebenen Toleranzwert übersteigt. Die vorgegebene Toleranz wird implizit durch die Größe der Programmierschritte festgelegt. Während der letzten Phase ist der vorgegebene Pegel gleich dem Soll-Pegel, wobei der Versatz Null beträgt. Auf diese Weise ist eine schnelle Konvergenz auf den Soll-Zustand hin möglich, wobei gleichzeitig eine hohe Auflösung erreicht wird.
  • Die verbesserten Programmierschaltungen und -verfahren ermöglichen es, den Bereich der Leitungszustände oder Schwellspannungen der Zelle fein zu unterteilen, um eine höhere Speicherdichte zu unterstützen. Bei der bevorzugten Ausführungsform kann eine Flash-EEPROM-Zelle mit 16 unterschiedlichen Zuständen mit ungefähr 10–20 Programmierschritten programmiert werden. Wenn die verbesserten Merkmale der datenabhängigen Programmierspannungen und der Mehrphasenprogrammierung in einem stark parallelen Betrieb implementiert werden, ist ein Flash-EEPROM mit hoher Dichte und hohem Leistungsverhalten und dennoch geringen Kosten möglich.
  • Weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden anhand der folgenden Beschreibung ihrer bevorzugten Ausführungsformen verständlich werden, wobei die Beschreibung im Zusammenhang mit den beigefügten Zeichnungen gelesen werden sollte.
  • 1A stellt schematisch einen nichtflüchtigen Speicher in Form einer EEPROM-Zelle dar;
  • 1B stellt schematisch einen nichtflüchtigen Speicher in Form einer NROM-Zelle dar;
  • 1C stellt schematisch eine Flash-EEPROM-Zelle mit sowohl einem Auswahlgate als auch einem Control- oder Steuergate dar;
  • 1D stellt schematisch eine weitere Flash-EEPROM-Zelle mit zwei Floating-Gates und einem unabhängigen Auswahl- und Steuergate dar;
  • 2 stellt ein schematisches Blockdiagramm eines adressierbaren Arrays aus Speicherzellen in Zeilen und Spalten mit Decodern dar;
  • 3 stellt die Beziehung zwischen dem Source-Drain-Strom I(t) und der Steuergate-Spannung VSTG für vier unterschiedliche Ladungen Q1–Q2 dar, die das Floating-Gate zu einem bestimmten Zeitpunkt speichern kann;
  • 4 stellt ein Blockdiagramm dar, das ein Programmiersystem zum parallelen Programmieren einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 5 zeigt detaillierter den Mehrphasen-Programmierspannungsgenerator und den Zellen-ProgrammierController der Mehrphasen-Programmierschaltung aus 4; die
  • 6(a)6(e) stellen Taktungsdiagramme für den Abtast- und Haltebetrieb des Mehrphasen-Programmierspannungsgenerators aus 5 dar; die
  • 7(a)7(i) stellen Taktungsdiagramme für die Funktionsweise ersten Phase des Mehrphasen-Programmierspannungsgenerators dar, der in 5 gezeigt ist; die
  • 8(a)8(j) stellen Taktungsdiagramme für die Funktionsweise der zweiten Phase des in 5 gezeigten Mehrphasen-Programmierspannungsgenerators dar;
  • 9 stellt ein Ablaufdiagramm der mehrphasigen, parallelen Programmierung einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung dar.
  • 4 stellt ein Blockdiagramm dar, das ein Programmiersystem zum parallelen Programmieren einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht. Das Programmiersystem 200 umfasst einen Satz von Mehrphasen-Programmierschaltungen 210, ..., 210' zum Bereitstellen optimierter einzelner Programmierspannungen VSTG(1), ..., VSTG(k) für die Steuergates 60, ..., 60' einer Gruppe aus k Speicherzellen 50, ..., 50'. Bei einer bevorzugten Ausführungsform wird ein Block in einer Größe von k = 4096 Zellen parallel programmiert.
  • Die Mehrphasen-Programmierschaltung 210 stellt im Wesentlichen eine Reihe von Programmierspannungsimpulsen an dem Steuergate der Zelle 50 bereit. Wenn die Zelle 50 auf einen Soll-Zustand S1 programmiert werden soll, werden die zugeführten Spannungsimpulse derart optimiert, dass die Zelle exakt und schnell auf S1 programmiert wird. Bei einer bevorzugten Ausführungsform ist das Schwellspannungsfenster jeder Zelle 50 derart unterteilt, dass einer von sechzehn Zuständen bestimmt wird. Zum Beispiel wäre bei einer Zelle, bei welcher ein Schwellspannungsfenster von 0,5 bis 3,5 V reicht, eine Unterteilung in Intervalle von ungefähr 0,2 V erforderlich, um 16 Zustände abzugrenzen. Dies ist ungefähr eine Größenordnung mehr als die Auflösung, die bei einer Unterteilung in 2 Zustände genutzt wird.
  • Ein Mehrspannungsbus 220 wird von einer Spannungsversorgung 222 getrieben, um eine Mehrzahl von optimalen Startspannungen V0 zum Programmieren und Lesen der unterteilten Zustände bereitzustellen. Allgemein ist die Optimierung der Startspannungen umso feiner, je mehr Spannungen zur Verfügung stehen. Bei der bevorzugten Ausführungsform wird der Mehrspannungsbus Spannungen bereitstellen, die ungefähr gleich jeder der unterteilten Schwellspannungen sind. Beim vorliegenden Beispiel umfasst der Bus 16 Spannungsleitungen, wobei die Spannungen 0,4; 0,6; 0,8; 1,0; 1,2; 1,4; 1,6; 1,8; 2,0; 2,2; 2,4; 2,6; 2,8; 3,0; 3,2 und 3,4 V betragen.
  • Wenn die Zelle 50 auf einen Soll-Zustand S1 programmiert werden soll, werden die Daten in einem Daten-Latch 232 gespeichert. Ein Spannungswähler 230, der auf die Soll-Zustandsdaten D(S1) (die mehrere Bits ausmachen können) in dem Daten-Latch 232 anspricht, wählt eine der Spannungen der Busleitung V0(S1) aus, die für die Programmierung der Zelle auf den Soll-Zustand S1 optimiert ist.
  • Wie bereits beschrieben, erfolgt die Programmierung durch abwechselndes Anlegen eines Programmierimpulses an die Zelle, gefolgt von einem Zurücklesen, um den resultierenden Speicherzustand der Zelle festzustellen. Während der Verifizierungs-(Zurücklese-)Vorgänge wird die Spannung V0(S1) an das Steuergate 60 der Zelle angelegt. Während der Programmierung bildet die Spannung V0(S1) die Basis zum Aufbau einer Programmierspannung mit einem vorgegebenen Wellenformprofil. In Abhängigkeit von der gewünschten Programmierrate kann das Wellenformprofil ein flaches Profil bis zu ansteigenden Profilen darstellen, die zu einer erhöhten Programmierrate führen. Bei einer bevorzugten Ausführungsform stellt das vorbestimmte Wellenformprofil eine treppenförmige Wellenform dar.
  • Während eines Verifizierungsvorgangs aktiviert ein Signal VERIFIZIERUNG einen Pfad 234, damit V0(S1) von dem Spannungswähler 230 an dem Steuergate 60 der Zelle 50 bereitgestellt wird. Der resultierende Source-Drain-Strom wird von einem Leseverstärker 240 mit einem Referenzstrom verglichen. Vor dem Beginn der Programmierung befindet sich die Zelle 50 in einem gelöschten Zustand, in welchem der Source-Drain-Strom größer als der Referenzstrom ist. Im Zuge der fortschreitenden Programmierung der Zelle 50 sammeln sich Ladungen auf dem Floating-Gate, wodurch der Feldeffekt von V0(S1) des Steuergates auf den Kanal vermindert wird, sodass der Source-Drain-Strom abnimmt, bis er während der Verifizierung unter den Referenzstrom, IREF, abgefallen ist. An diesem Punkt ist die Zelle auf einen gewünschten Pegel programmiert, und das Ereignis wird dadurch signalisiert, dass ein Ausgangssignal DURCH* von dem Leseverstärker 240 auf LOW (niedrigen Pegel) kommt.
  • Während eines Programmierungsvorgangs nutzt ein Mehrphasen-Programmierspannungsgenerator 250 V0(S1), um die Basis zum Erzeugen verschiedener Wellenformen zu bilden, die an dem Steuergate 60 der Zelle bereitgestellt werden sollen. Der Mehrphasen-Programmierspannungsgenerator 250 erzeugt in unterschiedlichen Betriebsphasen unterschiedliche Wellenformen und wird durch einen Zellenprogrammier-Controller 260 gesteuert, welcher auf den Zustand der lokalen Zellen 50 wie auch auf die Zustände sämtlicher Zellen in der Gruppe aus k Zellen anspricht.
  • Der Zellenprogrammier-Controller 260 spricht außerdem auf das von dem Leseverstärker 240 ausgegebene Signal an. Wie bereits beschrieben kommt, wenn die Zelle auf einen gewünschten Pegel programmiert ist, das Ausgangssignal DURCH* des Leseverstärkers auf LOW, was wiederum bewirkt, dass der Controller 260 ein Signal PGM1* ausgibt, um eine Programmiersperrschaltung 280 zu aktivieren. Wenn die Programmiersperrschaltung 280 aktiviert ist, sperrt sie die Zelle 50 grundsätzlich für die weitere Programmierung, durch Anlegen geeigneter Spannungen an Drain und die Steuergates.
  • Zum parallelen Programmieren von k Zellen kommt ein Satz von Mehrphasen-Programmierschaltungen 210, ..., 210' zur Anwendung, jeweils eine Programmierschaltung für jede Zelle. Ein Parallel-Programmier-Controller 290, der auf den Status PGM1*, ..., PGMk* jeder der k Mehrphasen-Programmierschaltungszellen anspricht, koordiniert die Programmiervorgänge für den Satz von Programmierschaltungen. Wie später noch detaillierter beschrieben wird, beginnt eine neue Phase, nachdem sämtliche k Zellen auf ihre jeweils gewünschten Pegel programmiert worden sind, was gleichbedeutend damit ist, dass jede Zelle mit der Referenzstromstärke ihres Leseverstärkers einsetzt. Infolgedessen sind PGM1 bis PGMk* alle LOW geworden, d. h. auf niedrigen Pegel gekommen.
  • 5 zeigt detaillierter den Mehrphasen-Programmierspannungsgenerator 250 sowie den Zellenprogrammier-Controller 260 der Mehrphasen-Programmierschaltung 210 aus 4. Die Funktionsweise der verschiedenen Komponenten lässt sich am besten in Verbindung mit den in den 68 gezeigten Taktungsdiagrammen beschreiben.
  • Grundsätzlich wird der Mehrphasen-Programmierspannungsgenerator 250 in einer Anfangsphase des Betriebs, die dadurch festgelegt ist, dass ein Steuersignal ABTASTUNG einen hohen Impuls aufweist, die optimierte Spannung V0(S1) in einer Abtast-und-Halte-Schaltung 300 abtasten und speichern. Die Abtast-und-Halte-Schaltung 300 weist einen Ausgangsknoten 307 auf, an welchem Spannungen von anderen Quellen (beispielsweise 330, 350, die noch beschrieben werden) aufsummiert werden, sodass sich eine resultierende Spannung, Vletzte, bildet. Diese Spannung, Vletzte, treibt dann einen Sourcefolger 310, um die Programmierspannung VSTG(1) an dem Steuergate der Zelle 50 bereitzustellen.
  • Die Abtast-und-Halte-Schaltung 300 umfasst einen Eingang, der durch zwei in Reihe geschaltete Transistoren 302, 304 torgesteuert wird, mit einem gemeinsamen Knoten 303 zwischen diesen und mit dem Ausgangsknoten 307. Der gemeinsame Knoten 303 kann auf eine Spannung VHALTEN gelegt werden, die durch einen weiteren Transistor 308.
  • Bei der bevorzugten Ausführungsform werden die anderen Quellen für Spannungen, die an dem Ausgangsknoten 307 aufsummiert werden, um Vletzte zu ergeben, durch einen Wellenformgenerator 320 für eine erste Phase mit einem zugehörigen Wechselspannungskoppler 330 sowie einen Wellenformgenerator 340 für eine zweite Phase mit einem zugehörigen Wechselspannungskoppler 350 erzeugt.
  • Die 6(a)6(e) stellen Taktungsdiagramme für den Abtast-und-Halte-Betrieb des Mehrphasen-Programmierspannungsgenerators aus 5 dar. Im Betrieb sorgt der Parallelprogrammier-Controller 290 (siehe 4) für das Signal ABTASTUNG, das die beiden in Reihe geschalteten Transistoren 302 und 304 anschaltet, damit die Eingangsspannung V0(S1) an einem Kondensator C1 des Wechselspannungskopplers 330 anliegen kann. Im Abtast-und-Halte-Betrieb tragen die Wellenformgeneratoren 320 und 340 nicht zu Vletzte bei, da deren Pfade durch die Ansteuersignale G1 bzw. G2 (6(c)) blockiert sind. Somit nimmt die Spannung Vletzte an dem Ausgangsknoten 307 anfangs den Wert von V0(S1) an (6(e)). Danach werden die beiden in Reihe geschalteten Transistoren abgeschaltet, indem ABTASTUNG auf LOW kommt (6(a)), und der gemeinsame Knoten 303 kann die Spannung VHALTEN annehmen, nachdem ein Signal HALTEN (6(b)) an dem Gate des Transistors 308 angelegt ist. Mit dieser Vorspannungsaufhebungsanordnung wird ein Lecken von Vletzte zurück über den Transistor 304 um mehrere Größenordnungen reduziert und die Genauigkeit der an dem Knoten 307 gespeicherten abgetasteten Spannung wird sichergestellt.
  • Der in 5 gezeigte Zellenprogrammier-Controller 260 umfasst ein S/R-(Set/Reset-)Latch 262. Wenn die Zelle 50 derart programmiert ist, dass deren Leitungsstrom unterhalb eines Referenzstromwertes liegt, gibt der Leseverstärker das Signal DURCH* aus, das von HIGH auf LOW übergeht. Dieses wird genutzt, um das S/R-Latch 262 derart zu setzen, dass sich ein gelatchtes Ausgangssignal PGM1* von HIGH auf LOW ändert, wodurch wiederum die Programmiersperrschaltung 280 aktiviert wird.
  • Die 7(a)7(i) stellen Taktungsdiagramme für die Funktionsweise der ersten Phase des in 5 gezeigten Mehrphasen-Programmierspannungsgenerators dar. Bei der bevorzugten Ausführungsform wird vor der Programmierung ein Verifizierungsvorgang ausgeführt. Ein RESET-Signal setzt den S/R-Latch 262 zurück, sodass das gelatchte Ausgangssignal PGM1* HIGH ist. Ein Verifizierungsvorgang wird immer dann aktiviert, wenn das Signal VERIFIZIERUNG auf HIGH kommt. Im Gegensatz dazu kann ein Programmiervorgang stattfinden, wenn das Signal VERIFIZIERUNG LOW ist. Wenn die Zelle 50 richtig gelöscht ist, wird das Ausgangssignal DURCH* des Leseverstärkers 240 HIGH sein, wodurch eine Programmierung stattfinden kann, weil dieses nicht die Programmiersperrschaltung 280 aktivieren wird (siehe auch 4).
  • Während der ersten Phase des Programmiervorgangs wird der erste Wellenformgenerator 320 durch ein Steuersignal Φ1 (7(e)) von dem Parallelprogrammier-Controller 290 aktiviert. Er erzeugt dann V1(t) (7(h)) in Form eines oder mehrerer treppenförmiger Impulse, wenn das Durchlass-Gatesignal G1 dies gestattet. Der Anfangsanstieg des ersten Impulses ist vorzugsweise abgeschrägt, um den ansonsten steilen Anstieg moderater zu gestalten, wodurch etwaige unerwünschte Spannungen in der Speicherzelle gemildert werden. Mit jedem nachfolgenden Impuls der Wellenform wird der programmierte Pegel der Zelle zu einem Soll-Pegel hin angehoben, welcher als ein bevorzugter Pegel festgelegt ist, der den Soll-Zustand für die Zelle bestimmt. Wegen der diskreten Natur der Programmierschritte werden die programmierten Pegel, die einen gegebenen Speicherzustand repräsentieren sollen statistisch verteilt sein. Bei der vorliegenden Ausführungsform wird eine Zelle als auf einen gegebenen Speicherzustand programmiert betrachtet, wenn der programmierte Schwellspannungspegel in den diesem Zustand zugeordneten Bereich von Programmierpegeln fällt. Der Bereich von Programmierpegeln wird am unteren Ende durch den Soll-Pegel und am oberen Ende durch den diesem Zustand zugeordneten vorgegebenen Toleranzwert begrenzt.
  • Um ein Überschreiten des Bereichs von Programmierpegeln zu vermeiden, nutzt die Programmierschaltung einen vorbestimmten Pegel knapp vor dem Bereich, um zu ermitteln, wann die Programmierung während jeder Phase abzubrechen ist. Dieser vorbestimmte Pegel ist geringfügig zu dem Soll-Pegel versetzt, sodass, wenn ein Programmierimpuls den programmierten Pegel an dem vorbestimmten Pegel vorbei verschiebt, dieser den Soll-Pegel nicht um mehr als die zugeordnete vorbestimmte Toleranz überschreiten wird. Mit anderen Worten ist, sobald der vorbestimmte Pegel überschritten ist, die Zelle auf einen Pegel programmiert, der das obere Ende des Programmierpegelbereichs für diesen Zustand nicht übersteigt. In diesem Fall werden die Programmierimpulse der momentanen Phase nicht länger angelegt. Somit gibt es im Hinblick auf die Anstiegsrate der treppenförmigen Wellenform und den vorbestimmten Pegel der ersten Phase folgende Überlegungen: Der Soll-Pegel wird mit aufeinanderfolgenden Impulsen so schnell wie möglich angenähert, aber kein einzelner Impuls wird bewirken, dass die Schwellspannung der Speicherzelle den für die erste Phase vorbestimmten Pegel als auch die zugehörige vorbestimmte Toleranzgrenze jenseits des Soll-Pegels überschreitet.
  • V1(t) wird an einem Knoten 333 dadurch zugelassen, dass das Steuersignal PGM1* HIGH ist, und wird über den Wechselspannungskoppler 330 zu dem Ausgangsknoten 307 addiert. (Man vergleiche die 7(d), 7(h)). Somit beträgt die Spannung an dem Ausgangsknoten 307 Vletzte = V0(S1) + b1V1(t) (wobei b1 ein Kopplungsverhältnis nahe Eins ist), und sie passiert den Sourcefolger 310, um als Spannung an das Steuergate der Zelle 50 angelegt zu werden. (Man vergleiche 7(i)). Mit dem Anlegen der Programmierimpulse nacheinander wird die Zelle 50 schließlich auf den für die erste Phase vorbestimmten Pegel programmiert. An dieser Stelle kommt das Signal DURCH* (7(c)) auf LOW und bewirkt wiederum, dass das Signal PGM1* auf LOW kommt (7(d)), welches seiner seits die Programmiersperrschaltung 280 aktiviert, um die Zelle 50 für eine weitere Programmierung zu sperren. Gleichzeitig damit, dass PGM1* LOW wird, wird bewirkt, dass G1 auf LOW kommt (7(f)), wodurch der Wechselspannungskoppler 330 von dem ersten Wellenformgenerator 320 abgeschnitten wird, wodurch V1 bei der Amplitude der Wellenform zum Zeitpunkt des Abschaltens eingefroren wird. Wenn T1f der Zeitpunkt ist, zu dem PGM1* auf LOW kommt, dann ist V1 = V1(T1f), sodass Vletzte(T1f) = V0(S1) + b1V1(T1f) ist.
  • In der Zwischenzeit wird die Programmierung für die anderen Zellen in dem Block fortgesetzt, wobei immer mehr Zellen ihren zugehörigen vorbestimmten Pegel für die erste Phase erreichen und aus dem parallelen Programmiervorgang herausfallen. Wenn die jeweilige Zelle herausfällt, bleibt durch die dieser jeweils zugehörige Vletzte die entsprechende zum Zeitpunkt der Sperrung der Programmierung an das Steuergate angelegte Spannung erhalten. Schließlich sind sämtliche Zellen in dem Block auf die entsprechenden vorgegebenen Pegel programmiert, und dieses Ereignis wird signalisiert, indem PGM1* bis PGMk* alle auf LOW gekommen sind. Dadurch wird der Parallelprogrammier-Controller 290 veranlasst, die nächste Phase einzuleiten.
  • Die 8(a)8(j) stellen Taktungsdiagramme für die Funktionsweise der zweiten Phase des in 5 gezeigten Mehrphasen-Programmierspannungsgenerators dar. Die zweite Phase gleicht der ersten Phase insofern, als sie mit einem Verifizieren beginnt, das vor dem Programmieren erfolgt, außer dass der erste Wellenformgenerator dadurch deaktiviert ist, dass das Steuersignal Φ1 LOW ist (8(e)). Stattdessen wird der zweite Wellenformgenerator 340 durch ein Steuersignal Φ2 (8(f)) von dem Parallelprogrammier-Controller 290 aktiviert und erzeugt V2(t) in Form eines oder mehrerer treppenförmiger Impulse (8(i)). Durch jeden aufeinanderfolgenden Impuls der Wellenform wird der programmierte Pegel der Zelle zu einem für die zweite Phase vorbestimmten Pegel hin verschoben, der zu dem Soll-Pegel versetzt ist. Die Anstiegsrate der Treppenwellenform und der für die zweite Phase vorbestimmte Pegel sind derart gewählt, dass der Soll-Pegel mit aufeinanderfolgenden Impulsen so schnell wie möglich angenähert wird, aber kein einzelner Impuls bewirken wird, dass die Schwellspannung der Speicherzelle den für die zweite Phase vorbestimmten Pegel als auch die zugehörige vorbestimmte Toleranzgrenze jenseits des Soll-Pegels überschreitet. Allgemein werden die Anstiegsrate der Treppenwellenform und der vorbestimmte Pegel viel feiner sein als diejenigen der ersten Phase.
  • V2(t) wird an einem Knoten 335 dadurch zugelassen, dass ein Rücksetz-Steuersignal PGM1* HIGH ist ((8(d)) (wobei sämtliche S/R-Latches zu Beginn der zweiten Phase zurückgesetzt worden sind (8(a))) und wird über den Wechselspannungskoppler 350 zu dem Knoten 333 addiert. Somit beträgt die Spannung an dem Ausgangsknoten 307 Vletzte = V0(S1) + b1V1(T1f) + b2[V2(t) – V2i], wobei b2 ein weiteres Kopplungsverhältnis ist und V2i der Wert von V2 ist, wenn G1 auf LOW kommt und einen vorgegebenen Versatz darstellt (z. B. 0,4 V), der vor dem Ende der ersten Phase anliegt. Vletzte passiert den Sourcefolger 310, um als Spannung an dem Steuergate der Zelle 50 angelegt zu werden. (Man vergleiche 8(j)). Während die Programmierimpulse nacheinander angelegt werden, wird die Zelle 50 schließlich auf den für die momentane Phase vorbestimmten Pegel programmiert. An dieser Stelle kommt das Signal DURCH* (8(c)) auf LOW und bewirkt seinerseits, dass das Signal PGM1* LOW wird (8(d)), was wiederum bewirkt, dass die Programmiersperrschaltung 280 aktiviert wird, um die Zelle 50 für die weitere Programmierung zu sperren. Gleichzeitig damit, dass PGM1* auf LOW kommt, wird bewirkt, dass G2 LOW wird (8(g)), wodurch der Wechselspannungskoppler 350 durch das deaktivierende Steuersignal G2 von dem zweiten Wellenformgenerator 340 abgeschnitten wird, wodurch V2 bei der Amplitude der Wellenform zum Zeitpunkt des Abschaltens eingefroren wird. Wenn T2f der Zeitpunkt ist, zudem PGM1* LOW wird, dann ist V2 = V2(T2f), sodass Vletzte(T2f) = V0(S1) + b1V1(T1f) + b2[V2(T2f) – V2i] ist.
  • Analog wird die parallele Programmierung für die anderen Zellen in dem Block fortgesetzt, während immer mehr Zellen ihre Soll-Zustände erreichen und aus dem parallelen Programmiervorgang herausfallen und bei jeder für deren Vletzte die zum Zeitpunkt der Sperrung der Programmierung an dem Steuergate anliegende Spannung erhalten bleibt. Schließlich sind sämtliche Zellen in dem Block auf den vorbestimmten Pegel programmiert, und dieses Ereignis wird dadurch signalisiert, dass PGM1* bis PGMk* alle auf LOW gekommen sind. Dies wird den Parallelprogrammier-Controller 290 veranlassen, die nächste Phase einzuleiten.
  • Eine analoge Gestaltung kommt bei höheren Phasen zur Anwendung, wobei ein Wellenformgenerator eine Spannung erzeugt, die zu dem Pegel der am Ende der vorhergehenden Phase eingefrorenen Vletzte hinzuaddiert wird. In der letzten Phase ist der vorgegebene Pegel gleich dem Soll-Pegel, der dem Soll-Zustand entspricht.
  • Bei einer weiteren Ausführungsform wird Vletzte von einem einzigen Mehrphasen-Wellenformgenerator erzeugt.
  • Die Implementierung einer mehrphasigen Programmierung ermöglicht unterschiedliche Anstiegsraten für die Treppenwellenform während der unterschiedlichen Phasen. Der Soll-Zustand, der programmiert werden soll, wird durch eine Hierarchie von Programmierschritten angenähert, wobei die erste Phase die gröbste darstellt, in welcher der Soll-Zustand mit den wenigsten Schritten angenähert wird, ohne dass dieser überschritten wird, worauf die nächste Phase mit einer Reihe feinerer Schritte folgt, mit denen der Soll-Zustand wiederum mit den wenigsten Schritten weiter angenähert wird, ohne dass er überschritten wird, und so weiter. Auf diese Weise werden eine Reihe von ansteigenden Programmierimpulsen an das Steuergate 60 der Zelle 50 angelegt, wobei die Anstiegsrate während jeder Phase im Hinblick auf eine schnelle Konvergenz zu dem Soll-Zustand hin optimiert ist.
  • Wie vorstehend beschrieben, wird für jede Phase bis kurz vor der Endphase ein Pegel kurz vor dem Soll-Zustand als Soll genutzt, sodass ein Überschreiten desselben in einem Programmierschritt für diese Phase nicht zu einem Überschreiten des eigentlichen Soll-Zustands führen wird. In der Endphase stellt der eigentliche Soll-Zustand das Soll dar. Bei der bevorzugten Ausführungsform wird der von der Phase abhängige Pegel implementiert, indem ein vorgegebener Spannungswert, der während des Verifizierungsvorgangs an ein Steuergate angelegt ist, VSTG, nach unten verschoben wird. Dies wird dazu führen, dass der Leseverstärker 240 (siehe 4) auslöst, bevor der eigentliche Soll-Zustand erreicht ist. Die Spannungsquelle 222 (siehe 4), die auf den Zustand der Phase anspricht, passt die Spannungen auf dem Mehrspannungsbus 220 dementsprechend an.
  • Bei einer alternativen Ausführungsform erfolgt die von der Phase abhängige Verifizierung durch Anpassen der Referenzstromstärke IREF, die von dem in 4 gezeigten Leseverstärker 240 genutzt wird, auf inkrementell niedrigere Werte.
  • Bei einer noch weiteren Ausführungsform erfolgt die von der Phase abhängige Verifizierung durch eine Kombination aus Verschieben einer während des Verifizierungsvorgangs an das Steuergate angelegten Spannung um einen vorgegebenen Wert nach unten und Anpassen der von dem Leseverstärker genutzten Referenzstromstärke.
  • Es ist festgestellt worden, dass eine Reihe von Ausführungsformen ermöglichen, dass eine Programmierung auf einen Soll-Zustand für eine in 16 Zustände unterteilte Zelle innerhalb von ungefähr 10–20 Schritten konvergiert. Zum Beispiel besteht eine bevorzugte Ausführungsform aus einem zweiphasigen Programmiervorgang, wobei die erste Phase eine erste ansteigende Wellenform aufweist, auf welche eine zweite Phase mit einer zweiten, sanfter ansteigenden Wellenform folgt. Eine weitere Ausführungsform besteht aus einem dreiphasigen Vorgang, bei dem die erste Phase einen einzigen Impuls darstellt, auf welchen zwei Serien von Treppenwellenformen folgen. Verschiedene Kombinationen sind möglich und werden erfindungsgemäß in Betracht gezogen.
  • Ein Vorteil des beschriebenen Programmiersystems 200 besteht darin, dass wenngleich eine große Gruppe von Zellen parallel programmiert wird, die Zellen alle denselben Leitungsbus 220 gemeinsam nutzen können, um datenabhängige Programmierspannungen zu realisieren. Analog können die phasenabhängigen Wellenformgeneratoren wie etwa 320, 340, ... von sämtlichen Zellen in der Gruppe gemeinsam genutzt werden.
  • 9 stellt ein Ablaufdiagramm für die mehrphasige parallele Programmierung einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung dar.
    • Schritt 400: BEGINNE INITIALISATION, setze Phase = 0, Phaseletzte = 2 (als Beispiel).
    • Schritt 410: BEGINNE DATENABHÄNGIGE SPANNUNG ZU ERHALTEN.
    • Schritt 412: bearbeite den Zellenblock mit i = 1 bis k parallel.
    • Schritt 414: Speichere D(Si), den Soll-Zustand der i-ten Zelle, in dem Latch.
    • Schritt 416: Nutze D(Si), um eine Anfangsspannung V0(D(Si)) auszuwählen, die für die Programmierung der i-ten Zelle auf D(Si) optimiert ist.
    • Schritt 418: Speichere V0(D(Si)) zur Verwendung als Basislinienspannung für die Steuergate-Spannung, d. h. Vletzte(i) = V0(D(Si)).
    • Schritt 420: BEGINNE NEUE PHASE DER PARALLELEN PROGRAMMIERUNG.
    • Schritt 422: Phase = Phase + 1.
    • Schritt 430: BEGINNE BLOCKPROGRAMMIERUNG, für i = 1 bis k parallel.
    • Schritt 432: Setze Steuergate-Spannung auf eine phasenabhängige Wellenform in Bezug auf die Basislinie Vletzte(i).
    • Schritt 434: Fahre mit paralleler Programmierung des Zellenblocks fort.
    • Schritt 436: Verifiziere, um festzustellen, ob die i-te Zelle auf einen für den Soll-Zustand vorgegebenen Pegel programmiert worden ist. Der Pegel ist phasenabhängig und liegt ausreichend knapp vor dem Soll-Zustand, sodass bei einem Programmierschritt, bei dem der Pegel überschritten wird, nicht der Soll-Zustand überschritten wird. Wenn der Pegel überschritten ist, fahre mit Schritt 440 fort, wenn nicht, gehe zu Schritt 438 über.
    • Schritt 438: Lege einen Programmierimpuls VSTG(i) an die i-te Zelle an. Kehre zu Schritt 436 zurück.
    • Schritt 440: Sperre die i-te Zelle für die weitere Programmierung während der momentanen Phase.
    • Schritt 442: Speichere die momentane Programmierspannung, d. h. Vletzte(i) = VSTG(i) als eine Basislinienspannung für die nächste Phase.
    • Schritt 450: Sind sämtliche Zellen über den für die momentane Phase geltenden Pegel hinaus programmiert? Ist dies der Fall, fahre mit Schritt 460 fort. Ansonsten kehre zu Schritt 434 zurück, um die Programmierung der verbleibenden Zellen in dem Block fortzusetzen, bis die letzte den Pegel für die momentane Phase überschritten hat. Wenn bei der Programmierung eine vorgegebene maximal zulässige Anzahl von Impulsen überschritten worden ist, wird eine vorgegebene Ausnahmebehandlung eingeleitet, und bei dieser setzt typischerweise eine Fehlerbehandlungsroutine ein.
    • Schritt 460: Ist Phase = Phaseletzte? Wenn nicht, fahre mit Schritt 420 fort, um die nächste Phase zu beginnen. Ansonsten fahre mit Schritt 470 fort.
    • Schritt 470: FERTIG. Die Programmierung des Zellenblocks für i = 1 bis k ist abgeschlossen.
  • Die Ausführungsformen der vorliegenden Erfindung wurden unter Bezugnahme auf nichtflüchtige Halbleiterspeicher diskutiert, die ein Ladung speicherndes Floating-Gate oder eine Ladung speichernde dielektrische Schicht enthalten. Die verschiedenen Aspekte der vorliegenden Erfindung können jedoch auch auf eine beliebige Art von nichtflüchtigem Speicher angewandt werden, bei dem eine exakte Programmierung durch das Anlegen von zustandsabhängigen, optimal gesteuerten Programmierspannungsimpulsen ausgeführt werden kann. Zum Beispiel kann diese Methode auf Speicherbauelemente mit mehreren Dielektrika, beispielsweise Metall-Nitrid-Oxid-Silicium-(MNOS-)- oder Polysilicium-Nitrid-Oxid-Silicium-(SONGS-)Bauelemente angewandt werden. In ähnlicher Weise ist sie auf MROM-Bauelemente anwendbar.
  • Wenngleich die Ausführungsformen der vorliegenden Erfindung, die beschrieben worden sind, bevorzugte Realisierungen darstellen, werden Fachleute auf dem Gebiet verstehen, dass auch Varianten zu diesen möglich sein können. Daher beansprucht die Erfindung Schutz mit dem vollständigen Schutzumfang der anhängenden Ansprüche.

Claims (18)

  1. Verfahren zum Programmieren einer Gruppe von Speicherzellen (50) in einem Array von Speicherzellen, die in Zeilen und Spalten angeordnet sind, wobei sich die Gruppe von Speicherzellen (50) entlang einer Zeile erstreckt, wobei jede Zelle (50) ein Auswahlgate (70) und ein Steuergate (60) zum Anlegen einer Programmierspannung zum Programmieren eines Ladungsspeichers auf einen Soll-Ladungspegel entsprechend einem Soll-Speicherzustand aus einer Mehrzahl von Speicherzuständen für diese aufweist, wobei eine Mehrzahl von Spannungspegeln zum Programmieren einer Speicherzelle (50) auf einen jeweiligen der mehreren Speicherzustände bereitgestellt wird; dadurch gekennzeichnet, dass jede Speicherzelle (50) der Gruppe mit einer separaten Bitleitung (56) verbunden ist, und dass das Verfahren folgende Schritte umfasst: Auswählen der Gruppe von Speicherzellen (50) durch Auswählen einer gemeinsamen Wortleitung (110), die mit dem Auswahlgate (70) jeder Zelle in der Gruppe von Speicherzellen (50) gekoppelt ist; Auswählen eines der mehreren Spannungspegel für jede Speicherzelle (50) der Gruppe, wobei der ausgewählte Spannungspegel eine Funktion des Soll-Speicherzustands der Speicherzelle ist, und Generieren einer Programmierspannung als Funktion der ausgewählten Spannung für jede Speicherzelle; und paralleles Programmieren der Speicherzellen (50) der Gruppe, wobei jede Speicherzelle (50) der Gruppe ihre Programmierspannung aufweist, die unabhängig an deren Steuergate (60) angelegt wird.
  2. Verfahren nach Anspruch 1, welches folgenden Schritt umfasst: Generieren einer Programmierspannungswellenform für jede Zelle (50) der Gruppe, wobei jede Programmierspannungswellenform eine Anfangsamplitude aufweist, die eine Funktion des für die jeweilige Zelle (50) ausgewählten Spannungspegels ist.
  3. Verfahren nach Anspruch 2, wobei die Programmierspannungswellenform eine Serie von Spannungsimpulsen umfasst.
  4. Verfahren nach Anspruch 3, wobei durch Anlegen eines anfänglichen Spannungsimpulses der Serie von Spannungsimpulsen jede Zelle (50) im Wesentlichen zu ihrem Soll-Speicherzustand hin programmiert wird, diesen aber nicht überschreitet.
  5. Verfahren nach Anspruch 3 oder Anspruch 4, wobei die Serie von Spannungsimpulsen eine Amplitude aufweist, die sich im Zeitverlauf erhöht.
  6. Verfahren nach einem der Ansprüche 3 bis 5, welches folgende Schritte umfasst: (a) paralleles Programmieren der Gruppe von Speicherzellen (50) durch Anlegen eines Impulses aus der Serie von Spannungsimpulsen der Programmierspannungswellenform, die jeder Zelle (50) zugeordnet ist, an jede Zelle (50); (b) paralleles Verifizieren der Gruppe von Speicherzellen (50) durch Feststellen, ob jede Zelle (50) auf einen vorbestimmten Pegel programmiert worden ist, der dem Soll-Zustand für jede Speicherzelle (50) zugeordnet ist; und (c) Sperren einer Zelle (50) aus der Gruppe für die weitere Programmierung, wenn diese Zelle (50) auf ihren vorgegebenen Pegel programmiert worden ist; und (d) Wiederholen von (a), (b) und (c), bis sämtliche Zellen (50) in der Gruppe auf ihre jeweils vorgegebenen Pegel programmiert sind.
  7. Verfahren nach Anspruch 6, wobei der Wiederholungsschritt auch dann endet, wenn er über mehr als eine vorgegebene Anzahl von Malen iteriert worden ist.
  8. Verfahren nach Anspruch 6, wobei der wiederholte Durchlauf von (a)–(d) bis zur Beendigung eine Programmierphase darstellt, wobei das Verfahren eine oder mehr zusätzliche Programmierphasen umfasst, jeweils mit diesen zugeordneten Serien von Spannungsimpulsen und vorgegebenen Pegeln.
  9. Verfahren nach Anspruch 8, wobei bei jeder nachfolgenden Phase eine Serie von Spannungsimpulsen verwendet wird, die einen feineren Programmierungsschritt als in der vorhergehenden Phase ergeben.
  10. Verfahren nach Anspruch 8, wobei bei jeder nachfolgenden Phase vorgegebene Pegel angewandt werden, die den Soll-Zuständen näher liegen.
  11. Verfahren nach Anspruch 8, wobei bei einer vorgegebenen letzten Phase vorgegebene Pegel angewandt werden, mit denen jede Zelle der Gruppe auf ihren jeweiligen Soll-Zustand programmiert wird.
  12. Verfahren nach einem der Ansprüche 8 bis 11, wobei jede Zelle (50) nicht mehr als zwanzig Programmierimpulse erhält.
  13. Verfahren nach einem der vorhergehenden Ansprüche, wobei jede Zelle (50) einen von zwei Speicherzuständen speichert.
  14. Verfahren nach einem der Ansprüche 1 bis 12, wobei jede Zelle (50) mehr als zwei Speicherzustände speichert.
  15. Verfahren nach einem der Ansprüche 1 bis 12, wobei jede Zelle (50) einen von sechzehn Speicherzuständen speichert.
  16. Nichtflüchtiger Speicher, umfassend: ein Array aus Speicherzellen (50), die in Zeilen und Spalten angeordnet sind, wobei jede Speicherzelle (50) ein Auswahlgate (70) und ein Steuergate (60) aufweist, zum Anlegen einer Programmierspannung zum Programmieren eines Ladungsspeichers auf einen zugehörigen Soll-Ladungspegel, der einem Soll-Speicherzustand aus einer Mehrzahl von Speicherzuständen für diese entspricht; einen Leistungsbus (220) zum Zuführen einer Mehrzahl von Spannungen zum Programmieren einer Speicherzelle (50) in dem Array auf einen jeweiligen der mehreren Speicherzustände; und ein System zum Programmieren einer Gruppe von Speicherzellen (50) in dem Array, dadurch gekennzeichnet, dass die Gruppe von Speicherzellen (50) durch eine gemeinsame Wortleitung (110) ausgewählt werden kann, die mit dem Auswahlgate (70) jeder Zelle in der Gruppe von Speicherzellen (50) gekoppelt ist; das Programmiersystem (200) dafür ausgelegt ist, die Gruppe von Speicherzellen (50), die sich entlang einer Zeile des Speicherzellenarrays erstrecken, parallel zu programmieren, und wobei es jeder Zelle (50) in der Gruppe zugeordnet eine Programmier- und Leseschaltung (210) aufweist, wobei jede Schaltung ferner einen Spannungsselektor (230) umfasst, der eine der mehreren Spannungen von dem Leistungsbus auswählt, um eine Programmierspannung in Funktion der ausgewählten Spannung an das Steuergate (60) der zugehörigen Speicherzelle (50) in der Gruppe anzulegen, wobei die ausgewählte Spannung eine Funktion des Soll-Zustands der zugehörigen Speicherzelle (50) ist, und zwar in solcher Weise, dass die ausgewählte Spannung optimal für die Programmierschaltung ist, um die Programmierspannung zum Programmieren des Speicherzustands auf seinen Soll-Speicherzustand zu erzeugen; und dass jede Speicherzelle (50) der Gruppe mit einer separaten Bitleitung (56) verbunden ist.
  17. Nichtflüchtiger Speicher nach Anspruch 16, wobei die Programmierschaltung umfasst: einen ersten Programmierspannungswellenform-Generator (320), welcher derart gekoppelt ist, dass er die ausgewählte Spannung erhält, um eine erste Programmierspannungswellenform mit einer Anfangsamplitude zu erzeugen, die eine Funktion der ausgewählten Spannung ist; einen Leseverstärker (240) zum Bestimmen des programmierten Zustands der Speicherzelle; und eine Programmiersperrschaltung (280), die auf den Leseverstärker anspricht, indem sie eine weitere Programmierung der Zelle (50) immer dann sperrt, wenn der programmierte Zustand der Speicherzelle (50) einen ersten vorgegebenen Pegel überschritten hat.
  18. Nichtflüchtiger Speicher nach Anspruch 17, umfassend: ein Speicherelement zum Speichern der letzten Programmierspannung, welche bewirkt, dass der programmierte Zustand der zugehörigen Zelle (50) den ersten vorgegebenen Pegel überschreitet; einen zweiten Programmierspannungswellenform-Generator (340), der auf die gespeicherte letzte Programmierspannung anspricht, indem er eine zweite Programmierspannung generiert; und einen Controller (290) zum Aktivieren des zweiten Programmierspannungswellenform-Generators, nachdem sämtliche Speicherzellen in der Gruppe den ersten vorgegebenen Pegel überschritten haben.
DE60225005T 2001-02-26 2002-02-22 Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür Expired - Fee Related DE60225005T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US793370 1985-10-31
US09/793,370 US6738289B2 (en) 2001-02-26 2001-02-26 Non-volatile memory with improved programming and method therefor
PCT/US2002/005265 WO2002069346A2 (en) 2001-02-26 2002-02-22 Non-volatile memory with improved programming and method therefor

Publications (2)

Publication Number Publication Date
DE60225005D1 DE60225005D1 (de) 2008-03-27
DE60225005T2 true DE60225005T2 (de) 2009-02-12

Family

ID=25159763

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60225005T Expired - Fee Related DE60225005T2 (de) 2001-02-26 2002-02-22 Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür

Country Status (10)

Country Link
US (5) US6738289B2 (de)
EP (2) EP1393323B1 (de)
JP (1) JP2004519804A (de)
KR (1) KR20030014207A (de)
CN (1) CN1460268A (de)
AT (1) ATE386327T1 (de)
AU (1) AU2002242219A1 (de)
DE (1) DE60225005T2 (de)
TW (1) TW556194B (de)
WO (1) WO2002069346A2 (de)

Families Citing this family (217)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US6738289B2 (en) * 2001-02-26 2004-05-18 Sandisk Corporation Non-volatile memory with improved programming and method therefor
US6894343B2 (en) 2001-05-18 2005-05-17 Sandisk Corporation Floating gate memory cells utilizing substrate trenches to scale down their size
US6936887B2 (en) 2001-05-18 2005-08-30 Sandisk Corporation Non-volatile memory cells utilizing substrate trenches
US6762092B2 (en) * 2001-08-08 2004-07-13 Sandisk Corporation Scalable self-aligned dual floating gate memory cell array and methods of forming the array
KR100432884B1 (ko) * 2001-08-28 2004-05-22 삼성전자주식회사 공유된 행 선택 구조를 갖는 불 휘발성 반도체 메모리 장치
US6897522B2 (en) 2001-10-31 2005-05-24 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US6925007B2 (en) * 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
KR20030060139A (ko) * 2002-01-07 2003-07-16 삼성전자주식회사 스플리트 게이트형 비휘발성 메모리 소자 및 그 제조방법
JP4192510B2 (ja) * 2002-06-14 2008-12-10 日本電気株式会社 半導体装置
US6894930B2 (en) 2002-06-19 2005-05-17 Sandisk Corporation Deep wordline trench to shield cross coupling between adjacent cells for scaled NAND
US6917544B2 (en) 2002-07-10 2005-07-12 Saifun Semiconductors Ltd. Multiple use memory chip
US6864106B1 (en) * 2002-08-12 2005-03-08 Advanced Micro Devices, Inc. Method and system for detecting tunnel oxide encroachment on a memory device
US7443757B2 (en) 2002-09-24 2008-10-28 Sandisk Corporation Non-volatile memory and method with reduced bit line crosstalk errors
US6983428B2 (en) * 2002-09-24 2006-01-03 Sandisk Corporation Highly compact non-volatile memory and method thereof
US7327619B2 (en) * 2002-09-24 2008-02-05 Sandisk Corporation Reference sense amplifier for non-volatile memory
US7196931B2 (en) 2002-09-24 2007-03-27 Sandisk Corporation Non-volatile memory and method with reduced source line bias errors
KR100615975B1 (ko) 2002-09-24 2006-08-28 쌘디스크 코포레이션 비휘발성 메모리 및 그 감지 방법
US7046568B2 (en) 2002-09-24 2006-05-16 Sandisk Corporation Memory sensing circuit and method for low voltage operation
US7324393B2 (en) 2002-09-24 2008-01-29 Sandisk Corporation Method for compensated sensing in non-volatile memory
US6987693B2 (en) * 2002-09-24 2006-01-17 Sandisk Corporation Non-volatile memory and method with reduced neighboring field errors
US7136304B2 (en) * 2002-10-29 2006-11-14 Saifun Semiconductor Ltd Method, system and circuit for programming a non-volatile memory array
US7031192B1 (en) * 2002-11-08 2006-04-18 Halo Lsi, Inc. Non-volatile semiconductor memory and driving method
JP4205938B2 (ja) * 2002-12-05 2009-01-07 シャープ株式会社 不揮発性メモリ装置
JP4667719B2 (ja) * 2003-01-17 2011-04-13 スパンション エルエルシー 不揮発性多値半導体メモリ
US6944063B2 (en) 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
US7178004B2 (en) 2003-01-31 2007-02-13 Yan Polansky Memory array programming circuit and a method for using the circuit
US6856551B2 (en) * 2003-02-06 2005-02-15 Sandisk Corporation System and method for programming cells in non-volatile integrated memory devices
US7630237B2 (en) * 2003-02-06 2009-12-08 Sandisk Corporation System and method for programming cells in non-volatile integrated memory devices
US6839281B2 (en) * 2003-04-14 2005-01-04 Jian Chen Read and erase verify methods and circuits suitable for low voltage non-volatile memories
US6950348B2 (en) 2003-06-20 2005-09-27 Sandisk Corporation Source controlled operation of non-volatile memories
US6956770B2 (en) 2003-09-17 2005-10-18 Sandisk Corporation Non-volatile memory and method with bit line compensation dependent on neighboring operating modes
US7064980B2 (en) 2003-09-17 2006-06-20 Sandisk Corporation Non-volatile memory and method with bit line coupled compensation
US7177199B2 (en) * 2003-10-20 2007-02-13 Sandisk Corporation Behavior based programming of non-volatile memory
US7057931B2 (en) * 2003-11-07 2006-06-06 Sandisk Corporation Flash memory programming using gate induced junction leakage current
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US6888758B1 (en) * 2004-01-21 2005-05-03 Sandisk Corporation Programming non-volatile memory
US7372730B2 (en) * 2004-01-26 2008-05-13 Sandisk Corporation Method of reading NAND memory to compensate for coupling between storage elements
US7139198B2 (en) * 2004-01-27 2006-11-21 Sandisk Corporation Efficient verification for coarse/fine programming of non-volatile memory
US7002843B2 (en) * 2004-01-27 2006-02-21 Sandisk Corporation Variable current sinking for coarse/fine programming of non-volatile memory
US7068539B2 (en) * 2004-01-27 2006-06-27 Sandisk Corporation Charge packet metering for coarse/fine programming of non-volatile memory
US7020026B2 (en) * 2004-05-05 2006-03-28 Sandisk Corporation Bitline governed approach for program control of non-volatile memory
US7023733B2 (en) * 2004-05-05 2006-04-04 Sandisk Corporation Boosting to control programming of non-volatile memory
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US7307884B2 (en) 2004-06-15 2007-12-11 Sandisk Corporation Concurrent programming of non-volatile memory
US7638850B2 (en) 2004-10-14 2009-12-29 Saifun Semiconductors Ltd. Non-volatile memory structure and method of fabrication
US7092290B2 (en) * 2004-11-16 2006-08-15 Sandisk Corporation High speed programming system with reduced over programming
US7173859B2 (en) * 2004-11-16 2007-02-06 Sandisk Corporation Faster programming of higher level states in multi-level cell flash memory
US7242618B2 (en) * 2004-12-09 2007-07-10 Saifun Semiconductors Ltd. Method for reading non-volatile memory cells
US7120051B2 (en) * 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7158421B2 (en) * 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US7420847B2 (en) * 2004-12-14 2008-09-02 Sandisk Corporation Multi-state memory having data recovery after program fail
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7130210B2 (en) * 2005-01-13 2006-10-31 Spansion Llc Multi-level ONO flash program algorithm for threshold width control
US7251160B2 (en) * 2005-03-16 2007-07-31 Sandisk Corporation Non-volatile memory and method with power-saving read and program-verify operations
US8053812B2 (en) 2005-03-17 2011-11-08 Spansion Israel Ltd Contact in planar NROM technology
US7447078B2 (en) 2005-04-01 2008-11-04 Sandisk Corporation Method for non-volatile memory with background data latch caching during read operations
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
TWI410974B (zh) * 2005-04-01 2013-10-01 Sandisk Technologies Inc 於編程失敗後具有資料回復之複數狀態記憶體
US7463521B2 (en) * 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
JP4907896B2 (ja) * 2005-04-12 2012-04-04 株式会社東芝 不揮発性半導体記憶装置
US7339834B2 (en) * 2005-06-03 2008-03-04 Sandisk Corporation Starting program voltage shift with cycling of non-volatile memory
US7656710B1 (en) 2005-07-14 2010-02-02 Sau Ching Wong Adaptive operations for nonvolatile memories
US7786512B2 (en) 2005-07-18 2010-08-31 Saifun Semiconductors Ltd. Dense non-volatile memory array and method of fabrication
US7668017B2 (en) 2005-08-17 2010-02-23 Saifun Semiconductors Ltd. Method of erasing non-volatile memory cells
US7342833B2 (en) * 2005-08-23 2008-03-11 Freescale Semiconductor, Inc. Nonvolatile memory cell programming
US8116142B2 (en) * 2005-09-06 2012-02-14 Infineon Technologies Ag Method and circuit for erasing a non-volatile memory cell
US7286406B2 (en) * 2005-10-14 2007-10-23 Sandisk Corporation Method for controlled programming of non-volatile memory exhibiting bit line coupling
US7206235B1 (en) 2005-10-14 2007-04-17 Sandisk Corporation Apparatus for controlled programming of non-volatile memory exhibiting bit line coupling
US20070087503A1 (en) * 2005-10-17 2007-04-19 Saifun Semiconductors, Ltd. Improving NROM device characteristics using adjusted gate work function
US7366022B2 (en) * 2005-10-27 2008-04-29 Sandisk Corporation Apparatus for programming of multi-state non-volatile memory using smart verify
US7301817B2 (en) * 2005-10-27 2007-11-27 Sandisk Corporation Method for programming of multi-state non-volatile memory using smart verify
KR101357076B1 (ko) 2005-12-28 2014-02-11 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리에서 보상된 감지를 위한 기준 감지 증폭기및 방법
US7349264B2 (en) * 2005-12-28 2008-03-25 Sandisk Corporation Alternate sensing techniques for non-volatile memories
US7616481B2 (en) * 2005-12-28 2009-11-10 Sandisk Corporation Memories with alternate sensing techniques
US7310255B2 (en) * 2005-12-29 2007-12-18 Sandisk Corporation Non-volatile memory with improved program-verify operations
US7224614B1 (en) * 2005-12-29 2007-05-29 Sandisk Corporation Methods for improved program-verify operations in non-volatile memories
US7808818B2 (en) 2006-01-12 2010-10-05 Saifun Semiconductors Ltd. Secondary injection for NROM
US7760554B2 (en) 2006-02-21 2010-07-20 Saifun Semiconductors Ltd. NROM non-volatile memory and mode of operation
US8253452B2 (en) 2006-02-21 2012-08-28 Spansion Israel Ltd Circuit and method for powering up an integrated circuit and an integrated circuit utilizing same
US7692961B2 (en) 2006-02-21 2010-04-06 Saifun Semiconductors Ltd. Method, circuit and device for disturb-control of programming nonvolatile memory cells by hot-hole injection (HHI) and by channel hot-electron (CHE) injection
US7701779B2 (en) 2006-04-27 2010-04-20 Sajfun Semiconductors Ltd. Method for programming a reference cell
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103258572B (zh) 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
US7639542B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Maintenance operations for multi-level data storage cells
DE602006011451D1 (de) 2006-06-21 2010-02-11 Hynix Semiconductor Inc Verfahren und Vorrichtung zum elektrischen Programmieren von Halbleiterspeicherzellen
US7486561B2 (en) 2006-06-22 2009-02-03 Sandisk Corporation Method for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7489549B2 (en) * 2006-06-22 2009-02-10 Sandisk Corporation System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
US7483305B2 (en) * 2006-08-28 2009-01-27 Micron Technology, Inc. Method, apparatus and system relating to automatic cell threshold voltage measurement
WO2008024688A2 (en) * 2006-08-25 2008-02-28 Micron Technology, Inc. Method, apparatus and system relating to automatic cell threshold voltage measurement
US8060806B2 (en) 2006-08-27 2011-11-15 Anobit Technologies Ltd. Estimation of non-linear distortion in memory devices
US7599223B2 (en) * 2006-09-12 2009-10-06 Sandisk Corporation Non-volatile memory with linear estimation of initial programming voltage
US7453731B2 (en) * 2006-09-12 2008-11-18 Sandisk Corporation Method for non-volatile memory with linear estimation of initial programming voltage
US7606077B2 (en) * 2006-09-12 2009-10-20 Sandisk Corporation Non-volatile memory with reduced erase/write cycling during trimming of initial programming voltage
US7606091B2 (en) * 2006-09-12 2009-10-20 Sandisk Corporation Method for non-volatile memory with reduced erase/write cycling during trimming of initial programming voltage
US7696044B2 (en) * 2006-09-19 2010-04-13 Sandisk Corporation Method of making an array of non-volatile memory cells with floating gates formed of spacers in substrate trenches
US7646054B2 (en) * 2006-09-19 2010-01-12 Sandisk Corporation Array of non-volatile memory cells with floating gates formed of spacers in substrate trenches
US7450426B2 (en) * 2006-10-10 2008-11-11 Sandisk Corporation Systems utilizing variable program voltage increment values in non-volatile memory program operations
US7474561B2 (en) * 2006-10-10 2009-01-06 Sandisk Corporation Variable program voltage increment values in non-volatile memory program operations
CN101601094B (zh) 2006-10-30 2013-03-27 苹果公司 使用多个门限读取存储单元的方法
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
KR100836762B1 (ko) * 2006-12-11 2008-06-10 삼성전자주식회사 멀티 비트 플래시 메모리 장치 및 그것의 프로그램 방법
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US7800161B2 (en) * 2006-12-21 2010-09-21 Sandisk Corporation Flash NAND memory cell array with charge storage elements positioned in trenches
US7642160B2 (en) * 2006-12-21 2010-01-05 Sandisk Corporation Method of forming a flash NAND memory cell array with charge storage elements positioned in trenches
US7570520B2 (en) * 2006-12-27 2009-08-04 Sandisk Corporation Non-volatile storage system with initial programming voltage based on trial
US7551482B2 (en) * 2006-12-27 2009-06-23 Sandisk Corporation Method for programming with initial programming voltage based on trial
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
KR101163162B1 (ko) * 2007-02-20 2012-07-06 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 저장소자를 위한 가변 프로그램
US7616500B2 (en) * 2007-02-20 2009-11-10 Sandisk Corporation Non-volatile storage apparatus with multiple pass write sequence
CN101715595A (zh) 2007-03-12 2010-05-26 爱诺彼得技术有限责任公司 存储器单元读取阈的自适应估计
US7745285B2 (en) 2007-03-30 2010-06-29 Sandisk Corporation Methods of forming and operating NAND memory with side-tunneling
US7643348B2 (en) * 2007-04-10 2010-01-05 Sandisk Corporation Predictive programming in non-volatile memory
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US7936599B2 (en) * 2007-06-15 2011-05-03 Micron Technology, Inc. Coarse and fine programming in a solid state memory
US7508715B2 (en) * 2007-07-03 2009-03-24 Sandisk Corporation Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US7599224B2 (en) * 2007-07-03 2009-10-06 Sandisk Corporation Systems for coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US7660151B2 (en) * 2007-09-17 2010-02-09 Qimonda Ag Method for programming an integrated circuit, method for programming a plurality of cells, integrated circuit, cell arrangement
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
KR101301773B1 (ko) * 2007-10-25 2013-09-02 삼성전자주식회사 멀티 비트 프로그래밍 장치 및 방법
WO2009063450A2 (en) 2007-11-13 2009-05-22 Anobit Technologies Optimized selection of memory units in multi-unit memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US7688638B2 (en) * 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US7813172B2 (en) 2008-06-12 2010-10-12 Sandisk Corporation Nonvolatile memory with correlated multiple pass programming
US7796435B2 (en) * 2008-06-12 2010-09-14 Sandisk Corporation Method for correlated multiple pass programming in nonvolatile memory
US7800945B2 (en) * 2008-06-12 2010-09-21 Sandisk Corporation Method for index programming and reduced verify in nonvolatile memory
JP5395167B2 (ja) * 2008-06-12 2014-01-22 サンディスク テクノロジィース インコーポレイテッド 相関複数パスプログラミングのための不揮発性メモリおよび方法
US7826271B2 (en) * 2008-06-12 2010-11-02 Sandisk Corporation Nonvolatile memory with index programming and reduced verify
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US7715235B2 (en) * 2008-08-25 2010-05-11 Sandisk Corporation Non-volatile memory and method for ramp-down programming
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US9159452B2 (en) * 2008-11-14 2015-10-13 Micron Technology, Inc. Automatic word line leakage measurement circuitry
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US7821840B2 (en) * 2008-11-24 2010-10-26 Spansion Llc Multi-phase programming of multi-level memory
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8305812B2 (en) * 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8416624B2 (en) 2010-05-21 2013-04-09 SanDisk Technologies, Inc. Erase and programming techniques to reduce the widening of state distributions in non-volatile memories
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US8472280B2 (en) 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
US8588007B2 (en) 2011-02-28 2013-11-19 Micron Technology, Inc. Leakage measurement systems
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8634264B2 (en) 2011-10-26 2014-01-21 Micron Technology, Inc. Apparatuses, integrated circuits, and methods for measuring leakage current
US8792285B2 (en) * 2011-12-02 2014-07-29 Macronix International Co., Ltd. Page buffer circuit
TWI497501B (zh) * 2011-12-30 2015-08-21 Macronix Int Co Ltd 頁面緩衝器電路
US8842471B2 (en) * 2012-01-06 2014-09-23 Sandisk Technologies Inc. Charge cycling by equalizing and regulating the source, well, and bit line levels during write operations for NAND flash memory: program to verify transition
CN103310839B (zh) * 2012-03-15 2016-01-20 旺宏电子股份有限公司 缩短擦除操作的方法与装置
US8797802B2 (en) * 2012-03-15 2014-08-05 Macronix International Co., Ltd. Method and apparatus for shortened erase operation
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
CN102682845B (zh) * 2012-05-09 2018-10-16 上海华虹宏力半导体制造有限公司 Eeprom存储单元以及eeprom存储器
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
CN102915071A (zh) * 2012-10-23 2013-02-06 南京航空航天大学 面向混合信号处理的低电压低功耗开关电流采样保持电路
US8971128B2 (en) 2013-01-31 2015-03-03 Sandisk Technologies Inc. Adaptive initial program voltage for non-volatile memory
US9349469B2 (en) 2014-10-02 2016-05-24 Macronix International Co., Ltd. Program verify with multiple sensing
US9887009B2 (en) 2014-10-14 2018-02-06 Macronix International Co., Ltd. Memory page buffer with simultaneous multiple bit programming capability
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
JP5909294B1 (ja) * 2015-03-11 2016-04-26 力晶科技股▲ふん▼有限公司 不揮発性記憶装置のための書き込み回路及び方法、並びに不揮発性記憶装置
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
CN108877856B (zh) 2017-05-10 2021-02-19 慧荣科技股份有限公司 储存装置、记录方法以及预载方法
TWI646551B (zh) * 2017-05-10 2019-01-01 慧榮科技股份有限公司 儲存裝置、記錄方法以及預載方法
US10748622B2 (en) 2019-01-21 2020-08-18 Sandisk Technologies Llc State adaptive predictive programming
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1224062B (it) * 1979-09-28 1990-09-26 Ates Componenti Elettron Metodo di programmazione per una memoria a semiconduttore non volatile elettricamente alterabile
US4628487A (en) 1984-08-14 1986-12-09 Texas Instruments Incorporated Dual slope, feedback controlled, EEPROM programming
US4945393A (en) * 1988-06-21 1990-07-31 At&T Bell Laboratories Floating gate memory circuit and apparatus
US5172338B1 (en) * 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
DE69034191T2 (de) * 1989-04-13 2005-11-24 Sandisk Corp., Sunnyvale EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
US5163021A (en) * 1989-04-13 1992-11-10 Sundisk Corporation Multi-state EEprom read and write circuits and techniques
JP3448051B2 (ja) * 1990-03-31 2003-09-16 株式会社東芝 不揮発性半導体記憶装置
US5239505A (en) * 1990-12-28 1993-08-24 Intel Corporation Floating gate non-volatile memory with blocks and memory refresh
US5220531A (en) 1991-01-02 1993-06-15 Information Storage Devices, Inc. Source follower storage cell and improved method and apparatus for iterative write for integrated circuit analog signal recording and playback
US6002614A (en) * 1991-02-08 1999-12-14 Btg International Inc. Memory apparatus including programmable non-volatile multi-bit memory cell, and apparatus and method for demarcating memory states of the cell
US5218569A (en) * 1991-02-08 1993-06-08 Banks Gerald J Electrically alterable non-volatile memory with n-bits per memory cell
US5602789A (en) * 1991-03-12 1997-02-11 Kabushiki Kaisha Toshiba Electrically erasable and programmable non-volatile and multi-level memory systemn with write-verify controller
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5313421A (en) * 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US5267218A (en) * 1992-03-31 1993-11-30 Intel Corporation Nonvolatile memory card with a single power supply input
US5910912A (en) * 1992-10-30 1999-06-08 International Business Machines Corporation Flash EEPROM with dual-sidewall gate
US5623436A (en) 1993-06-17 1997-04-22 Information Storage Devices Method and apparatus for adjustment and control of an iterative method of recording analog signals with on-chip trimming techniques
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5422842A (en) 1993-07-08 1995-06-06 Sundisk Corporation Method and circuit for simultaneously programming and verifying the programming of selected EEPROM cells
JP3462894B2 (ja) 1993-08-27 2003-11-05 株式会社東芝 不揮発性半導体メモリ及びそのデータプログラム方法
JP3737525B2 (ja) 1994-03-11 2006-01-18 株式会社東芝 半導体記憶装置
US5629890A (en) 1994-09-14 1997-05-13 Information Storage Devices, Inc. Integrated circuit system for analog signal storing and recovery incorporating read while writing voltage program method
US5694356A (en) * 1994-11-02 1997-12-02 Invoice Technology, Inc. High resolution analog storage EPROM and flash EPROM
JPH08263361A (ja) * 1995-03-23 1996-10-11 Mitsubishi Electric Corp フラッシュメモリカード
US5557567A (en) 1995-04-06 1996-09-17 National Semiconductor Corp. Method for programming an AMG EPROM or flash memory when cells of the array are formed to store multiple bits of data
KR0185611B1 (ko) 1995-12-11 1999-04-15 김광호 불휘발성 반도체 메모리장치의 고전압 레벨 최적화 회로 및 그 방법
US5729489A (en) 1995-12-14 1998-03-17 Intel Corporation Programming flash memory using predictive learning methods
US5677869A (en) 1995-12-14 1997-10-14 Intel Corporation Programming flash memory using strict ordering of states
JPH09180473A (ja) 1995-12-27 1997-07-11 Nec Corp 不揮発性半導体メモリ装置
KR100223868B1 (ko) * 1996-07-12 1999-10-15 구본준 비휘발성 메모리를 프로그램하는 방법
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US6134148A (en) 1997-09-30 2000-10-17 Hitachi, Ltd. Semiconductor integrated circuit and data processing system
JP3517081B2 (ja) * 1997-05-22 2004-04-05 株式会社東芝 多値不揮発性半導体記憶装置
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US6046934A (en) 1999-01-12 2000-04-04 Macronix International Co., Ltd. Method and device for multi-level programming of a memory cell
US5926409A (en) 1997-09-05 1999-07-20 Information Storage Devices, Inc. Method and apparatus for an adaptive ramp amplitude controller in nonvolatile memory application
KR100327421B1 (ko) * 1997-12-31 2002-07-27 주식회사 하이닉스반도체 비휘발성 메모리 소자의 프로그램 시스템 및 그의 프로그램 방법
US6040993A (en) 1998-02-23 2000-03-21 Macronix International Co., Ltd. Method for programming an analog/multi-level flash EEPROM
JP2000040382A (ja) 1998-07-23 2000-02-08 Sony Corp 不揮発性半導体記憶装置およびそのデータ書き込み方法
IT1303204B1 (it) * 1998-11-27 2000-10-30 St Microelectronics Srl Metodo di programmazione di celle di memoria non volatile ad elevataprecisione, con velocita' di programmazione ottimizzata.
US6567302B2 (en) * 1998-12-29 2003-05-20 Micron Technology, Inc. Method and apparatus for programming multi-state cells in a memory device
US6103573A (en) * 1999-06-30 2000-08-15 Sandisk Corporation Processing techniques for making a dual floating gate EEPROM cell array
US6301161B1 (en) * 2000-04-25 2001-10-09 Winbond Electronics Corporation Programming flash memory analog storage using coarse-and-fine sequence
US6928001B2 (en) * 2000-12-07 2005-08-09 Saifun Semiconductors Ltd. Programming and erasing methods for a non-volatile memory cell
US6738289B2 (en) * 2001-02-26 2004-05-18 Sandisk Corporation Non-volatile memory with improved programming and method therefor
US6621742B1 (en) * 2002-04-29 2003-09-16 Fujitsu Limited System for programming a flash memory device

Also Published As

Publication number Publication date
US20070002633A1 (en) 2007-01-04
KR20030014207A (ko) 2003-02-15
EP1978526A1 (de) 2008-10-08
WO2002069346A2 (en) 2002-09-06
US7139465B2 (en) 2006-11-21
EP1393323A2 (de) 2004-03-03
AU2002242219A1 (en) 2002-09-12
DE60225005D1 (de) 2008-03-27
JP2004519804A (ja) 2004-07-02
US20040174744A1 (en) 2004-09-09
US20050213361A1 (en) 2005-09-29
US20070091681A1 (en) 2007-04-26
WO2002069346A3 (en) 2003-02-13
CN1460268A (zh) 2003-12-03
US6738289B2 (en) 2004-05-18
EP1393323B1 (de) 2008-02-13
TW556194B (en) 2003-10-01
ATE386327T1 (de) 2008-03-15
US20020118574A1 (en) 2002-08-29

Similar Documents

Publication Publication Date Title
DE60225005T2 (de) Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür
DE102005037287B3 (de) Nicht-flüchtiger Halbleiterspeicher und Verfahren zum Bestimmen einer Lesespannung zum Auslesen von Daten aus derartigen Speichern
DE60220590T2 (de) Verfahren zur Reduzierung von Kopplungseffekten zwischen multi-level Speicherelementen eines nicht flüchtigen Speichers
DE102004033443B4 (de) Flashspeicherbauelement mit Mehrpegelzelle
DE60216010T2 (de) Verfahren und Schaltung zum Auslesen von Doppelbit-Speicherzellen unter Verwendung einer Vielzahl von Doppelbit-Referenz-Speicherzellen, die beidseitig gelesen werden
DE3925153C2 (de)
DE60315532T2 (de) Verfahren zur Reudzierung der Programmier- und Lese-Störungen eines nicht-flüchtigen Speichers
DE4119394C2 (de) Nichtflüchtige Halbleiterspeichereinrichtung und Datenlöschungsverfahren hierfür
DE60212661T2 (de) Hintergrund-ausführung einer operation mit speicherzellen
DE60214023T2 (de) Selektiver betrieb eines nichtflüchtigen mehrzustandsspeichersystems in einem binärmodus
DE112005002818B4 (de) Diodenarrayarchitektur zum Adressieren von Widerstandspeicherarrays im Nanomaßstab
DE19983565B4 (de) Interner Auffrisch-Modus für eine Flash-Speicherzellenmatrix
DE102005030661B4 (de) Nichtflüchtiges Halbleiterspeicherbauelement und Verfahren zum Betreiben und Herstellen eines nichtflüchtigen Halbleiterspeicherbauelementes
DE112005001325T5 (de) Lösch-Algorithmus für einen Multilevel-Bit-Flash-Speicher
EP0936629B1 (de) EEPROM und Verfahren zur Ansteuerung eines EEPROM
DE60303511T2 (de) Verfahren zum löschen eines flash-speichers unter verwendung eines prä-lösch verfahrensschritts
DE112005000866T5 (de) Verfahren und Systeme zur Erreichung einer hohen Schreibleistung in Multibit-Speichervorrichtungen
DE102008003637B4 (de) Integrierter Schaltkreis, Verfahren zum Programmieren einer Speicherzellen-Anordnung eines Integrierten Schaltkreises, und Speichermodul
DE4014117A1 (de) Elektrisch loeschbarer programmierbarer festwertspeicher mit nand-zellenbloecken
DE102008007685B4 (de) Integrierte Schaltung und Verfahren zum Betreiben einer integrierten Schaltung
DE102007006279A1 (de) Nichtflüchtiges Halbleiterspeicherelement und Verfahren zum Betreiben eines nichtflüchtigen Halbleiterspeicherelements
DE4040492A1 (de) Automatische loeschoptimierschaltung fuer einen elektrisch loesch- und programmierbaren halbleiterspeicher und automatisches loeschoptimierungsverfahren
EP1571674B1 (de) Verfahren zum Betreiben einer elektrischen beschreib- und löschbaren Speicherzelle und eine Speichereinrichtung zum elektrischen Speichern
DE102020116188A1 (de) Verbesserung der sourceseitigen vorladung und verstärkung für das programmieren in umgekehrter reihenfolge
DE102005031892B4 (de) Verfahren zum Programmieren von Multi-Bit-Charge-Trapping-Speicherzellenanordnungen und Speicherbauelement

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee