-
Die
Erfindung bezieht sich auf ein nichtflüchtiges Speicherbauelement
und ein zugehöriges
Verfahren zur Durchführung
eines Programmiervorgangs.
-
Eine
Vielzahl von nichtflüchtigen
Speicherbauelementen verwendet Widerstandsmaterialien, um Daten
zu speichern. So verwenden beispielsweise Phasenwechselspeicher
mit direktem Zugriff (PRAM), Widerstands-RAM (RRAM), ferroelektrische
RAM (FRAM) und magnetische RAM (MRAM) alle Widerstandsmaterialien,
um Daten zu speichern. Im Gegensatz zu anderen Speicherformen wie
dynamische Speicher mit direktem Zugriff (DRAM) und Flashspeicher,
die Daten unter Verwendung von Ladungen speichern, tendieren Bauelemente,
welche Widerstandsmaterialien benutzen, dazu, Daten durch eine physikalische
Modifizierung des Widerstandsmaterials zu speichern. So speichert
beispielsweise ein PRAM Daten in der Regel unter Verwendung von
verschiedenen Zuständen
eines Phasenwechselmaterials, wie z.B. einer Chalcogenidlegierung,
ein PRAM speichert Daten in der Regel unter Verwendung von verschiedenen
Widerstandswerten eines Materials mit variablem Widerstand, ein
FRAM speichert Daten in der Regel unter Verwendung eines Polarisationsphänomens eines
ferroelektrischen Materials, und ein MRAM speichert Daten in der
Regel unter Verwendung einer Widerstandsvariation eines magnetischen
Tunnelübergangs(MTJ)-Dünnfilms in Reaktion auf einen
Magnetisierungszustands eines ferromagnetischen Materials.
-
Um
eine Möglichkeit
darzustellen, dass Widerstandsmaterialien zum Speichern von Daten
verwendet werden können,
wird nun ein beispielhafter PRAM detaillierter beschrieben. Das
Phasenwechselmaterial in einem PRAM, typischerweise Chalcogenid,
ist in der Lage, stabil zwischen amorphen und kristallinen Phasen zu
wechseln. Die amorphen und kristallinen Phasen (oder Zustände) zeigen
verschiedene Widerstandswerte, die zur Unterscheidung von verschiedenen
logischen Zuständen
von Speicherzellen in den Speicherbauelementen verwendet werden.
Insbesondere zeigt die amorphe Phase einen relativ hohen Widerstandswert
und die kristalline Phase zeigt einen relativ niedrigen Widerstandswert.
-
Der
PRAM benutzt den amorphen Zustand, um einen logischen Wert „1" (oder Datenwert „1") zu repräsentieren,
und der kristalline Zustand repräsentiert
einen logischen Wert „0" (oder Datenwert „0"). In einem PRAM-Bauelement
wird der kristalline Zustand als „Setz-Zustand" bezeichnet und der
amorphe Zustand wird als „Rücksetz-Zustand" bezeichnet. Entsprechend
speichert eine Speicherzelle in einem PRAM durch Setzen des Phasenwechselmaterials
der Speicherzelle in den kristallinen Zustand einen logischen Wert „0" und durch Setzen
des Phasenwechselmaterials in den amorphen Zustand einen logischen
Wert „1". Verschiedene PRAM-Bauelemente
sind beispielsweise in den Patentschriften
US 6.487.113 und
US 6.480.438 offenbart.
-
Das
Phasenwechselmaterial in einem PRAM wird durch Erwärmen des
Materials auf einen ersten Temperaturwert, der über einem vorgegebenen Schmelztemperaturwert
liegt, und anschließendes
schnelles Abkühlen
des Materials in den amorphen Zustand konvertiert. Das Phasenwechselmaterial
wird durch Erwärmen
des Materials auf einen zweiten Temperaturwert und Halten für eine gewisse
Zeitspanne in den kristallinen Zustand konvertiert, wobei der zweite
Temperaturwert niedriger als der Schmelztemperaturwert aber höher als
ein Kristallisationstemperaturwert ist. Entsprechend werden Daten
in die Speicherzellen eines PRAMs dadurch programmiert, dass das
Phasenwechselmaterial in Speicherzellen des PRAMs durch Erwärmen und Abkühlen zwischen
dem amorphen und kristallinem Zustand konvertiert wird, wie oben
beschrieben.
-
Das
Phasenwechselmaterial in einem PRAM umfasst typischerweise eine
Verbindung, die Germanium (Ge), Antimon (Sb) und Tellur (Te) aufweist,
d.h. eine „GST-Verbindung". Die GST-Verbindung
ist für
ein PRAM gut geeignet, da sie durch Erwärmen und Abkühlen schnell
zwischen dem amorphen und kristallinen Zustand wechseln kann. Zusätzlich oder
alternativ zur GST-Verbindung kann eine Vielzahl von anderen Verbindungen
im Phasenwechselmaterial verwendet werden. Beispiele für andere
Verbindungen umfassen Verbindungen aus zwei Elementen, wie beispielsweise
GaSb, InSb, InSe, Sb2Te3 und
GeTe, Verbindungen aus drei Elementen, wie beispielsweise GeSbTe,
GaSeTe, InSbTe, SnSb2Te4 und
InSbGe, oder Verbindungen aus vier Elementen, wie beispielsweise
AgInSbTe, (GeSn)SbTe, GeSb(SeTe) und Te81Ge15Sb2S2,
sind aber nicht darauf beschränkt.
-
Die
Speicherzellen in einem PRAM werden als „Phasenwechselspeicherzellen" bezeichnet. Eine
Phasenwechselspeicherzelle umfasst typischerweise eine obere Elektrode,
eine Phasenwechselmaterialschicht, einen unteren Elektrodenkontakt,
eine untere Elektrode und einen Zugriffstransistor. Ein Lesevorgang
mit der Phasenwechselspeicherzelle wird durch Messen des Widerstandswertes
der Phasenwechselmaterialschicht ausgeführt, und ein Programmiervorgang
mit der Phasenwechselspeicherzelle wird durch Erwärmen und
Abkühlen
der Phasenwechselmaterialschicht ausgeführt, wie oben beschrieben.
-
Allgemein
wird der Programmiervorgang durch Anlegen eines elektrischen „Setz-" oder „Rücksetz-"Impulses an die Elektrode
ausgeführt,
um die Phasenwechselmaterialschicht in den „Setz-" oder „Rücksetz-"Zustand
zu wechseln. Die erforderliche Zeitspanne zum Programmieren des
Datenwertes „0" in eine Speicherzelle
entspricht typischerweise ungefähr
der fünffachen
Zeitspanne, die zum Programmieren des Datenwertes „1" in die Speicherzelle
erforderlich ist. Die erforderliche Zeitspanne zum Programmieren
des Datenwertes „0" kann beispielsweise
ungefähr
600ns betragen, während
die erforderliche Zeitspanne zum Programmieren des Datenwertes „1" ungefähr 120ns
betragen kann.
-
Herkömmliche
PRAM-Bauelemente können
mehrere Eingabebits gleichzeitig empfangen, sind aber leider nicht
in der Lage, die Bits gleichzeitig in entsprechende Speicherzellen
zu programmieren. Ein PRAM kann beispielsweise 16 Eingaben über eine
Mehrzahl von Pins empfangen, ist aber nicht in der Lage, gleichzeitig
auf 16 Phasenwechselspeicherzellen zuzugreifen. Ein Grund für diesen
Mangel besteht darin, dass, wenn ein Strom von 1 mA erforderlich
ist, um eine Phasenwechselspeicherzelle zu programmieren, ein Strom von
16mA erforderlich wäre,
um 16 Phasenwechselspeicherzellen gleichzeitig zu programmieren.
Des Weiteren wäre,
wenn der Wirkungsgrad einer Treiberschaltung 10% beträgt, die
den Strom zur Verfügung
stellt, tatsächlich
ein Strom von 160mA erforderlich, um die 16 Speicherzellen gleichzeitig
zu programmieren. Herkömmliche
PRAM-Bauelemente sind jedoch im Allgemeinen nicht ausgerüstet, Ströme mit solch
hohen Werten zur Verfügung
zu stellen.
-
Da
ein Programmiertreiber in einem PRAM-Bauelement nur einen begrenzten
Stromwert zur Verfügung
stellen kann, kann ein Programmiervorgang von mehreren Phasenwechselspeicherzellen
in mehrere „Teilprogrammiervorgänge" aufgeteilt werden,
für welche
jeweils ein Bruchteil des für
den Programmiervorgang der mehreren Phasenwechselspeicherzellen
erforderlichen Gesamtstroms erforderlich ist. In jedem Teilprogrammiervorgang
wird eine Untermenge (d.h. ein „Teil") von Speicherzellen aus einer größeren Gruppe programmiert.
Eine Gruppe von sechzehn Phasenwechselspeicherzellen kann beispielsweise
durch Aufteilen der sechzehn Phasenwechselspeicherzellen in acht
Gruppen (d.h. Teilmengen) von je zwei Speicherzellen und gleichzeitiges
Programmieren der zwei Speicherzellen in jeder Zweiergruppe in acht
aufeinander folgenden Teilprogrammiervorgängen programmiert werden.
-
Um
einen unnötigen
Stromverbrauch und Programmierfehler zu vermeiden, kann das PRAM-Bauelement
auch einen Verifizierungslesevorgang ausführen, um den Programmierstatus
von jeder ausgewählten Speicherzelle
zu verifizieren. Um den Verifizierungslesevorgang auszuführen, werden
in die ausgewählten Speicherzellen
zu programmierende Programmierdaten in einem temporären Speicherbereich
wie einem Programmpuffer gespeichert. Dann werden die Programmierdaten
in die ausgewählten
Zellen programmiert. Dann werden die in den ausgewählten Speicherzellen
gespeicherten Daten gelesen und mit den in dem temporären Speicherbereich
gespeicherten Programmierdaten verglichen. Wo die im temporären Speicherbereich gespeicherten
Daten von den in den ausgewählten
Speicherzellen gespeicherten Daten verschieden sind, zeigt der Verifizierungslesevorgang
einen Programmierfehler an. Ansonsten zeigt der Verifizierungslesevorgang
einen Programmiererfolg an.
-
1 zeigt
ein konzeptionelles Zeitablaufdiagramm, das ein herkömmliches
Verfahren zum Betreiben eines PRAM-Bauelements zeigt, welches Teilprogrammiervorgänge verwendet.
Für Beschreibungszwecke wird
angenommen, dass ein Programmiervorgang des PRAM-Bauelements unter
Verwendung von 8 Teilprogrammiervorgängen 16 Datenbits in 16 ausgewählte Speicherzellen
programmiert, die in acht Paare oder Gruppen aufgeteilt sind.
-
Bezugnehmend
auf 1 werden Daten unter Verwendung einer Mehrzahl
von Programmierschleifen (L=1 bis 11) in das PRAM-Bauelement programmiert.
Bevor jede Programmierschleife beginnt, wird ein Verifizierungslesevorgang
ausgeführt,
um Speicherzellen unter den ausgewählten Speicherzellen zu detektieren, die
nicht erfolgreich programmiert worden sind. Anschließend wird
ein Teilprogrammiervorgang mit Gruppen der Speicherzellen, die als „durchgefallene
Gruppen" bezeichnet
sind, ausgeführt,
wo wenigstens eine Speicherzelle nicht erfolgreich programmiert
worden ist (individuelle Speicherzellen, die nicht erfolgreich programmiert
worden sind, werden übrigens
als „durchgefallene
Zellen" bezeichnet).
Im Beispiel gemäß 1 korrespondieren
acht Teilprogrammiervorgänge
1 bis 8 mit acht entsprechenden Zellengruppen.
-
In
einem Programmiervorgang beginnen alle acht Speicherzellengruppen
allgemein als durchgefallene Gruppen. Entsprechend wird in der ersten
Programmierschleife (L=1) typischerweise ein Teilprogrammiervorgang
für jede
der acht Gruppen ausgeführt.
In der zweiten Programmierschleife (L=2) wird unter der Annahme,
dass die dritte und vierte Gruppe erfolgreich programmiert worden
sind, für
alle acht Gruppen außer
für die
dritte und vierte Gruppe, ein Teilprogrammiervorgang ausgeführt. Ähnlich werden
in verbleibenden Programmierschleifen weniger Gruppen programmiert,
da mehr Gruppen erfolgreich programmiert wurden.
-
Leider
berücksichtigen
herkömmliche
Prozesse, wie der oben beschriebene Prozess, nicht die Tatsache,
dass zur Programmierung des Datenwerts „0" und des Datenwerts „1" in ausgewählte Speicherzellen un terschiedliche
Programmierzeiten erforderlich sind. Daraus resultiert, dass die
erforderliche Dauer für
jeden Teilprogrammiervorgang so lang wie die Dauer eines Setzimpulses
ist, der zur Programmierung des Datenwerts „0" verwendet wird, auch wenn einige mit
dem Teilprogrammiervorgang korrespondierende Speicherzellen nur
mit dem Datenwert „1" zu programmieren
sind. Entsprechend kann die zur Durchführung des Programmiervorgangs
erforderliche Zeitspanne unnötig
lang sein.
-
Als
technisches Problem liegt der Erfindung die Bereitstellung eines
nichtflüchtigen
Speicherbauelements und eines Verfahrens zur Durchführung eines
Programmiervorgangs in einem solchen nichtflüchtigen Speicherbauelement
zugrunde, die in der Lage sind, die Unzulänglichkeiten des oben genannten
Standes der Technik zu reduzieren oder zu vermeiden, und die insbesondere
die Durchführung
von Programmiervorgängen in
einer vergleichsweise kurzen Zeitspanne ermöglichen.
-
Die
Erfindung löst
dieses Problem durch die Bereitstellung eines Programmierverfahrens
mit den Merkmalen des Patentanspruchs 1 und eines nichtflüchtigen
Speicherbauelements mit den Merkmalen des Patentanspruchs 6 oder
9. Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
-
Ausführungsformen
der Erfindung stellen nichtflüchtige
Speicherbauelemente und zugehörige
Verfahren zur Verfügung,
welche in der Lage sind, die erforderliche Zeitspanne zur Durchführung von
Programmiervorgängen
zu reduzieren.
-
Vorteilhafte,
nachfolgend beschriebene Ausführungsformen
der Erfindung sowie das zu deren besserem Verständnis oben erläuterte,
herkömmliche
Ausführungsbeispiel
sind in den Zeichnungen dargestellt. Es zeigen:
-
1 ein
konzeptionelles Zeitablaufdiagramm eines herkömmlichen Verfahrens zum Betreiben
eines PRAM-Bauelements, welches Teilprogrammiervorgänge und
Verifizierungslesevorgänge
verwendet,
-
2 ein
konzeptionelles Zeitablaufdiagramm eines Verfahrens zur Programmierung
eines PRAM-Bauelements gemäß einer
Ausführungsform
der Erfindung,
-
3 ein
konzeptionelles Zeitablaufdiagramm eines Verfahrens zur Programmierung
eines PRAM-Bauelements gemäß einer
anderen Ausführungsform
der Erfindung,
-
4A und 4B konzeptionelle
Zeitablaufdiagramme einer Technik zum Einstellen des Zeitablaufs zur
Ausführung
von Teilprogrammiervorgängen
gemäß einer
Ausführungsform
der Erfindung,
-
5A und 5B konzeptionelle
Zeitablaufdiagramme einer Technik zum Einstellen des Zeitablaufs zur
Ausführung
von Teilprogrammiervorgängen
gemäß einer
anderen Ausführungsform
der Erfindung,
-
6 ein
konzeptionelles Zeitablaufdiagramm einer Technik zum Einstellen
des Zeitablaufs zur Ausführung
von Teilprogrammiervorgängen
gemäß noch einer
weiteren Ausführungsform
der Erfindung,
-
7 ein
Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs
in einem PRAM-Bauelement gemäß einer
Ausführungsform
der Erfindung,
-
8 ein
Blockdiagramm eines PRAM-Bauelements gemäß einer Ausführungsform
der Erfindung,
-
9 ein
Blockdiagramm einer Ausführungsform
einer Programmierverifizierungsbestimmungseinheit im PRAM-Bauelement
gemäß 8,
-
10 ein
Zeitablaufdiagramm eines Beispiels eines Setzimpulssteuersignals,
das von einer Programmierimpulserzeugungseinheit im PRAM-Bauelement
gemäß 8 ausgeben
wird, und
-
11 ein
Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs
in einem PRAM-Bauelement gemäß einer
anderen Ausführungsform
der Erfindung.
-
Nachfolgend
werden unter Bezugnahme auf die 2 bis 11 beispielhafte
Ausführungsformen der
Erfindung beschrieben. Obwohl ein PRAM-Bauelement verwendet wird,
um verschiedene Ausführungsformen
der Erfindung zu zeigen, kann die Erfindung selbstverständlich in
einer Vielzahl von verschiedenen Formen ausgeführt werden. Das PRAM-Bauelement
kann beispielsweise durch andere Typen von nichtflüchtigen Speicherbauelementen,
wie z.B. RRAM, FRAM und MRAM, ersetzt werden, die Widerstandsmaterialien
verwenden.
-
Die 2 und 3 zeigen
konzeptionelle Zeitablaufdiagramme von Verfahren zur Programmierung eines
PRAM-Bauelements gemäß ausgewählter Ausführungsformen
der Erfindung. Bezugnehmend auf die 2 und 3 werden
ausgewählte,
mit dem gleichen Zustand zu programmierende Speicherzellen zur gleichen
Zeit programmiert. Ausgewählte,
mit dem Datenwert „0" zu programmierende
Speicherzellen können
beispielsweise zuerst programmiert werden, gefolgt von ausgewählten, mit
dem Datenwert „1" zu programmierenden
Speicherzellen. Ähnlich
können
aus gewählte
Speicherzellen, die in der Lage sind, mehr als ein Bit zu speichern,
in einer Reihenfolge basierend auf ihrem beabsichtigten Zustand
programmiert werden, z.B. können
Daten in der Reihenfolge Datenwert „0", Datenwert „1", Datenwert „2" usw. programmiert werden.
-
In
ausgewählten
Ausführungsformen
der Erfindung umfassen Programmierverfahren für PRAM-Bauelemente Teilprogrammiervorgänge und
Verifizierungslesevorgänge.
Die Erfindung ist jedoch nicht auf die Verwendung dieser Arten von
Vorgängen
beschränkt.
Teilprogrammiervorgänge
können
beispielsweise nicht von Verifizierungslesevorgängen begleitet sein und umgekehrt,
oder Programmiervorgänge
können
entweder ohne Teilprogrammiervorgänge oder ohne Verifizierungslesevorgänge ausgeführt werden.
-
Bezugnehmend
auf 2 werden in einem erfindungsgemäßen PRAM-Bauelement während eines Programmierintervalls
RW Datenwerte „1" in ausgewählte Speicherzellen
programmiert, und während
eines Programmierintervalls SW werden Datenwerte „0" in eine Teilmenge
der ausgewählten
Speicherzellen programmiert.
-
Das
Programmierintervall RW erstreckt sich über elf Programmierschleifen
RL=1 bis 11, und das Programmierintervall SW erstreckt sich über zwei
Programmierschleifen SL=1 und 2. Vor jeder Programmierschleife wird
ein Verifizierungslesevorgang VERIFY_READ ausgeführt. Während jeder Programmierschleife wird
ein Teilprogrammiervorgang nur mit Gruppen von Speicherzellen ausgeführt, die
wenigstens eine Speicherzelle aufweisen, die nicht erfolgreich programmiert
wurde, d.h. mit „durchgefallenen
Gruppen".
-
Aus
Beschreibungsgründen
sei angenommen, dass sechzehn Datenbits über sechzehn Eingabe/Ausgabe(I/O)-Pins
gleichzeitig in das PRAM-Bauelement
eingegeben werden. Die sechzehn Bits werden dann in acht Gruppen
zu zwei Zellen in sechzehn ausgewählte Phasenwechselspeicherzellen
programmiert, wie beispielsweise in der nachfolgenden Tabelle 1
dargestellt ist. Im Beispiel der Tabelle 1 besteht eine erste Gruppe aus
Speicherzellen, die mit einem nullten und einem achten IO-Pin IO0 und IO8 korrespondieren,
eine zweite Gruppe besteht aus Speicherzellen, die mit einem ersten
und einem neunten IO-Pin IO1 und IO9 korrespondieren usw. Die Daten
werden gleichzeitig in die beiden Speicherzellen einer jeden Gruppe
programmiert, während
Speicherzellen in verschiedenen Gruppen zu verschiedenen Zeitpunkten
programmiert werden.
-
Aus
Beschreibungsgründen
sei angenommen, dass die in die ausgewählten Speicherzellen zu programmierenden
Daten Werte aufweisen, die in Tabelle 1 durch den Begriff „Programmierdaten" bezeichnet sind.
Insbesondere sind die Datenwerte „1" und „0" in die Speicherzellen zu programmieren,
die mit den IO-Pins 0 bzw. 8 korrespondieren, die Datenwerte „1" und „1" sind in die Speicherzellen
zu programmieren, die mit den IO-Pins 2 bzw. 10 korrespondieren
usw. Tabelle 2 zeigt Gruppen von Speicherzellen, die während des Programmierintervalls
RW und des Programmierintervalls SW zu programmieren sind. Wie aus
Tabelle 2 ersichtlich ist, werden alle Speicherzellengruppen während des
Programmierintervalls RW programmiert, und Speicherzellengruppen,
in denen wenigstens eine Speicherzelle mit dem Datenwert „0" zu programmieren
ist, werden während
des Programmierintervalls SW programmiert. Tabelle 1
IO-Pin | {0,8} | {1,9} | {2,10} | {3,11} | {4,12} | {5,13} | {6,14} | {7,15} |
Programmierdaten | 1,0 | 1,0 | 1,1 | 1,1 | 1,0 | 1,0 | 1,1 | 1,1 |
Gruppe | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Tabelle 2
| Programmierintervall
RW | Programmierintervall
SW |
Gruppe | 1,
2, 3, 4, 5, 6, 7, 8 | 1,
2, 5, 6 |
-
Ein
erster Verifizierungslesevorgang wird vor der ersten Programmierschleife
(RL=1) im Programmierintervall RW ausgeführt. Dann werden die Speicherzellen
in allen acht Gruppen in acht korrespondierenden Teilprogrammiervorgängen mit
dem Datenwert „1" programmiert. Anschließend wird
ein Verifizierungslesevorgang ausgeführt, um Speicherzellen zu detektieren,
die erfolgreich/nicht erfolgreich programmiert worden sind. Dann
werden Speicherzellen in „durchgefallenen
Gruppen" basierend
auf der Detektierung nochmals mit dem Datenwert „1" programmiert. In der zweiten Programmierschleife
(RL=2) des Programmierintervalls RW werden beispielsweise die Gruppen
1, 2 und 5 bis 8 mit dem Datenwert „1" programmiert. Der Prozess der Ausführung aufeinanderfolgender
Verifizierungslesevorgänge
und Programmierschleifen dauert bis zur elften Programmierschleife
(RL=11) des Programmierintervalls RW an, unter der Annahme, dass
bis zur elften Programmierschleife nicht alle der ausgewählten Speicherzellen
erfolgreich mit dem Datenwert „1" programmiert sind. Nach
der elften Programmierschleife sind unter der ersten bis achten
Gruppe keine durchgefallenen Gruppen mehr vorhanden. Entsprechend
wird ein Rücksetzpassierflagsignal
RE-SET_PASS_FLAG
aktiviert, welches anzeigt, dass der Datenwert „1" in allen acht Gruppen erfolgreich programmiert
ist.
-
Nachfolgend
wird während
des Programmierintervalls SW der Datenwert „0" in eine Teilmenge der ausgewählten Speicherzellen
programmiert. Insbesondere wird zu Beginn des Programmierintervalls
SW ein Verifizierungslesevorgang ausgeführt, um zu detektieren, ob
jede Speicherzelle der Teilmenge der ausgewählten Speicherzellen erfolgreich
mit dem Datenwert „0" programmiert worden
ist. Da die erste, zweite, fünfte
und sechste Gruppe anfänglich
Speicherzellen umfassen, die nicht er folgreich mit dem Datenwert „0" programmiert worden
sind, werden korrespondierend mit diesen Gruppen in der ersten Programmierschleife
(SL=1) des Programmierintervalls SW Teilprogrammiervorgänge ausgeführt. Dann
werden in der zweiten Programmierschleife (SL=2) des Programmierintervalls
SW Teilprogrammiervorgänge
ausgeführt,
die mit der ersten und zweiten Gruppe korrespondieren, nachdem detektiert
wurde, dass alle Speicherzellen in verbliebenen Gruppen erfolgreich
programmiert sind.
-
Nach
der zweiten Programmierschleife des Programmierintervalls SW sind
alle Speicherzellen der Teilmenge der ausgewählten Speicherzellen erfolgreich
mit dem Datenwert „0" programmiert. Entsprechend wird
ein Setzpassierflagsignal SET_PASS_FLAG aktiviert, welches anzeigt,
dass der Datenwert „0" in die Teilmenge
der ausgewählten
Speicherzellen erfolgreich programmiert ist. Zusätzlich wird ein Passierflagsignal PASS_FLAG
aktiviert, welches anzeigt, dass alle der ausgewählten Speicherzellen erfolgreich
programmiert sind.
-
Der
in 2 dargestellte Programmiervorgang kann wie folgt
grob begrifflich gefasst werden. Ausgewählte Speicherzellen werden
während
eines ersten Programmierintervalls, das eine erste Anzahl von Teilprogrammiervorgängen aufweist,
mit Daten programmiert, die einen ersten Zustand aufweisen. Nachfolgend
wird eine Teilmenge der ausgewählten
Speicherzellen während
eines zweiten Programmierintervalls, das eine zweite Anzahl von
Teilprogrammiervorgängen
aufweist, mit Daten programmiert, die einen zweiten Zustand aufweisen.
Da die Programmierung von Phasenwechselspeicherzellen in verschiedene
Zustände
verschiedene Zeitdauern erfordert, tendiert der Programmiervorgang
gemäß 2 im
Vergleich mit herkömmlichen
Programmiervorgängen
dazu, weniger Zeit zu beanspruchen.
-
Bezugnehmend
auf 3 werden in einem PRAM-Bauelement gemäß einer
anderen Ausführungsform
der Erfindung während
des Programmierintervalls RW ausgewählte Speicherzellen mit dem
Datenwert „1" programmiert, und
eine Teilmenge der ausgewählten
Speicherzellen wird während
des Programmierintervalls SW mit dem Datenwert „0" programmiert. Bei der Ausführungsform
gemäß 3 wird
die Dauer von jeder Programmierschleife RL im Programmierintervall
RW und die Dauer von jeder Programmierschleife SL im Programmierintervall
SW entsprechend der Anzahl von innerhalb einer jeden Schleife auszuführenden
Teilprogrammiervorgängen
eingestellt. Ein Programmiervorgang, der eine solche Einstelleigenschaft
oder Einstellfähigkeit
aufweist, wird als „adaptiver
Programmiervorgang" bezeichnet.
-
Das
Verfahren gemäß 3 ist ähnlich dem
Verfahren gemäß 2,
daher wird zur Vermeidung von Wiederholungen auf eine detaillierte
Beschreibung von wenigstens einigen gemeinsamen Eigenschaften der 2 und 3 verzichtet.
So führt
das Verfahren gemäß 3 wie
das Verfahren gemäß 2 beispielsweise
acht Teilprogrammiervorgänge
in der ersten Programmierschleife des Programmierintervalls RW aus und
führt weniger
Teilprogrammiervorgänge
in nachfolgenden Programmierschleifen des Programmierintervalls
RW aus. Danach werden in der ersten Programmierschleife des Programmierintervalls
SW Teilprogrammiervorgänge
mit Gruppen von Speicherzellen ausgeführt, die mit dem Datenwert „0" programmiert werden sollen,
und in der zweiten Programmierschleife des Programmierintervalls
SW werden Teilprogrammiervorgänge
mit Gruppen ausgeführt,
die verbleibende Speicherzellen enthalten, die mit dem Datenwert „0" programmiert werden
sollen.
-
Im
Gegensatz zum Verfahren gemäß 2 ist
jedoch aus 3 ersichtlich, dass die Dauer
der Programmierschleifen im Programmierintervall RW und im Programmierintervall
SW dazu tendiert, monoton abzunehmen. Diese Einstellungen werden
gemacht, um die erforderliche Ge samtdauer zum Abschließen der Teilprogrammiervorgänge innerhalb
jeder Programmierschleife zu reduzieren. Um das Verfahren gemäß 3 zu
implementieren wird der Zeitablauf der Teilprogrammiervorgänge durch
Zeitverschiebung oder allgemeiner durch Neuorganisierung oder Neuanordnung
des Timings eingestellt. Im Verfahren gemäß 3 sind während der
zehnten Programmierschleife des Programmierintervalls RW die Teilprogrammiervorgänge für die fünfte und
sechste Gruppe von Speicherzellen beispielsweise zeitlich verschoben,
so dass eine in der zehnten Programmierschleife des Programmierintervalls
RW in 2 vorhandene Zeitlücke entfernt ist.
-
Die 4 bis 6 zeigen
konzeptionelle Diagramme, die verschiedene Techniken darstellen,
welche zum Implementieren der beispielsweise in 3 dargestellten
Zeitverschiebung verwendet werden können. Für Beschreibungszwecke wird
angenommen, dass die Zeitverschiebung gemäß den 4 bis 6 bewirken,
dass Teilprogrammiervorgänge
in verschiedenen „Zeitschlitzen" ausgeführt werden.
In der in den 4A und 4B dargestellten
Technik werden beispielsweise während
einer ersten Programmierschleife in den entsprechenden ersten bis
achten Zeitschlitzen die ersten bis achten Zellengruppen programmiert.
Dann werden während
einer zweiten Programmierschleife die fünften bis achten Zellengruppen „verschoben", so dass sie während den
entsprechenden dritten bis sechsten Zeitschlitzen programmiert werden.
-
In
den 4A und 4B repräsentiert
jeder Kasten eine Zellgruppe, die mit ausgewählten Speicherzellen korrespondiert,
die durch Zahlen in Klammern repräsentiert werden. Durchgezogene
Linien repräsentieren
potentielle Zeitverschiebungen zwischen aufeinanderfolgenden Programmschleifen,
wobei das tatsächliche
Auftreten von Zeitverschiebungen jedoch davon abhängig ist,
ob Zellengruppen während
jeder Programmierschleife erfolgreich programmiert werden. Bei dem
Beispiel gemäß den 4A und 4B werden
beispielsweise die dritte und vierte Zellen gruppe während der
ersten Programmierschleife erfolgreich programmiert, während die
verbleibenden Zellengruppen nicht erfolgreich programmiert werden.
Entsprechend wird das Timing der fünften bis achten Zellengruppe
für die
zweite Programmierschleife verschoben.
-
Die 5A und 6 sind ähnlich zu 4A,
außer
dass in den 5A und 6 angenommen wird,
dass jede Zellengruppe eine größere Anzahl
von Speicherzellen aufweist. In 5A wird
beispielsweise angenommen, dass jede Zellengruppe vier Speicherzellen
aufweist, die gleichzeitig zu programmieren sind, und in 6 wird
angenommen, dass jede Zellengruppe acht Speicherzellen aufweist,
die gleichzeitig zu programmieren sind.
-
5B zeigt
Beispiele von verschiedenen Fällen,
die in einer bestimmten Programmierschleife eines PRAM auftreten
können,
das wie in 5A Gruppen von vier Speicherzellen
verwendet. Bezugnehmend auf 5B werden
in einem Fall, der mit „CASE1" bezeichnet ist,
während
einer ersten Programmierschleife die erste und zweite Zellengruppe
nicht erfolgreich programmiert, aber die dritte und vierte Zellengruppe
werden erfolgreich programmiert. Entsprechend führt eine zweite Programmierschleife
Teilprogrammiervorgänge
mit der ersten und zweiten Zellengruppe, aber nicht mit der dritten
und vierten Zellengruppe durch, wie in 5B unten
dargestellt ist. Obwohl das Diagramm gemäß 5B keinen
erschöpfenden
Satz von allen möglichen Fällen zeigt,
sind einige andere mögliche
Fälle als
Beispiele dargestellt, wenn auch ohne begleitende Signalverlaufsdiagramme.
-
Durch
das Programmieren des Datenwerts „1" und des Datenwerts „0" in getrennten Programmierintervallen
und durch das Einstellen der Dauer einer jeden Programmierschleife
gemäß der Anzahl
von während der
Schleife auszuführenden
Teilprogrammiervorgängen,
können
die in den 3 bis 6 dargestellten
Verfahren den erforderlichen Zeitbedarf zur Ausführung von Programmiervorgängen deutlich
reduzieren.
-
Um
die Zeitreduzierung darzustellen, wird die Dauer eines Teilprogrammiervorgangs
zur Programmierung des Datenwerts „1" durch „T" repräsentiert, und die Dauer eines
Teilprogrammiervorgangs zur Programmierung des Datenwerts „0" wird durch „5T" repräsentiert,
wobei angenommen wird, dass die erforderliche Zeitdauer zum Programmieren
des Datenwerts „0" ungefähr fünfmal länger als
die erforderliche Zeitdauer zum Programmieren des Datenwerts „1" ist. Unter dieser
Voraussetzung ist ein Vergleich der erforderlichen Zeitdauern zur
Ausführung
von Programmiervorgängen
unter Verwendung der Verfahren gemäß den
1 bis
3 in
der nachfolgenden Tabelle 3 dargestellt. In Tabelle 3 wird angenommen,
dass während
jeder Programmierschleife acht Zellengruppen in acht verschiedenen
Teilprogrammiervorgängen
zu programmieren sind. Tabelle 3
Klassifikation | Verfahren
gemäß Fig. 1 | Verfahren
gemäß Fig. 2 | Verfahren
gemäß Fig. 3 |
Programmierzeit | (8 × 5T) =
40T | Datenwert „1":
(8 × T) = 8T
Datenwert „0":
(8 × 5T) =
40T | Datenwert „1":
≤ (8 × T) = 8T
Datenwert „0":
≤ (8 × 5T) =
40T |
-
Wie
aus Tabelle 3 ersichtlich ist, entspricht die Gesamtdauer der Teilprogrammiervorgänge in jeder Programmierschleife
im Verfahren gemäß 1 immer
40T. Die Gesamtdauer der Teilprogrammiervorgänge in jeder Programmierschleife
im Verfahren gemäß 2 ist
in Abhängigkeit
davon, ob der Datenwert „1" oder der Datenwert „0" zu programmieren
ist, gleich 8T oder 40T. Die Gesamtdauer der Teilprogrammiervorgänge in jeder
Programmierschleife im Verfahren gemäß 3 ist in Abhängigkeit
davon, ob der Datenwert „1" oder der Datenwert „0" zu programmieren
ist, höchstens
gleich 8T oder 40T. Entsprechend tendieren die Verfahren gemäß den 2 und 3 dazu,
weniger Zeit als das Verfahren gemäß 1 zu brauchen,
wenn die Anzahl von Programmierschleifen, die zur Programmierung
des Datenwerts „0" erforderlich sind,
im Vergleich mit der Anzahl von Programmierschleifen relativ klein
ist, die zur Programmierung des Datenwerts „1" erforderlich sind.
-
7 zeigt
ein Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs
in einem PRAM-Bauelement gemäß einer
Ausführungsform
der Erfindung. Insbesondere zeigt das in 7 dargestellte
Flussdiagramm eine Möglichkeit
zur Implementierung von Verifizierungslesevorgängen für die in den 2 und 3 dargestellten
Verfahren. In der nachfolgenden Beschreibung sind beispielhafte
Verfahrensschritte in Klammern (SXX) bezeichnet. Bezugnehmend auf 7 wird
zuerst ein Teilprogrammiermodus gesetzt (S10). Der Teilprogrammiermodus
bestimmt die Anzahl von Speicherzellen, die gleichzeitig zu programmieren
sind. Ein Satz von sechzehn ausgewählten Speicherzellen kann beispielsweise
in acht Gruppen von zwei Speicherzellen (x2 Teilprogrammiermodus),
in vier Gruppen von vier Speicherzellen (x4 Teilprogrammiermodus),
in zwei Gruppen von acht Speicherzellen (x8 Teilprogrammiermodus)
oder in eine Gruppe von sechzehn Speicherzellen (x16 Teilprogrammiermodus)
aufgeteilt werden.
-
Anschließend wird
ein Verifizierungslesevorgang ausgeführt, um zu bestimmen, ob die
ausgewählten Speicherzellen
erfolgreich programmiert worden sind (S20). Während des Verifizierungslesevorgangs
werden Verifikationsdaten VDATA aus den ausgewählten Speicherzellen gelesen
und die Verifikationsdaten VDATA werden mit Programmierdaten WDATA
verglichen, welche gewünschte
logische Zustände
der ausgewählten Speicherzellen
repräsentieren.
Basierend auf dem Vergleich bestimmt das Verfahren, ob alle Zellengruppen, die
Speicherzellen auf weisen, die mit dem Datenwert „1" zu programmieren sind, erfolgreich
programmiert worden sind (S30). Wenn ja (S30 = Ja), dann springt
das Verfahren zu einem Schritt S60. Ansonsten (S30 = Nein) führt das
Verfahren eine Programmierschleife aus, die Teilprogrammiervorgänge zum
Programmieren des Datenwerts „1" für alle der „durchgefallenen
Gruppen" unter den
ausgewählten
Speicherzellen durchführt (S40).
Nach Schritt S40 bestimmt das Verfahren, ob die Programmierschleife
eine letzte Programmierschleife für ein erstes Programmierintervall
war (S50). Wenn ja (S50 = Ja), dann fährt das Verfahren mit Schritt
S60 fort. Ansonsten (S50 = Nein) kehrt das Verfahren zum Schritt
S20 zurück
und wiederholt den Schritt S20 und nachfolgende Schritte.
-
Im
Schritt S60 führt
das Verfahren einen Verifizierungslesevorgang aus, um zu bestimmen,
ob die ausgewählten
Speicherzellen erfolgreich programmiert worden sind. Während des
Verifizierungslesevorgangs werden Verifikationsdaten VDATA aus den
ausgewählten
Speicherzellen gelesen und die Verifikationsdaten VDATA werden mit
den Programmierdaten WDATA verglichen, welche gewünschte logische
Zustände
der ausgewählten
Speicherzellen repräsentieren.
Basierend auf dem Vergleich bestimmt das Verfahren, ob alle Zellengruppen,
die Speicherzellen aufweisen, die mit dem Datenwert „0" zu programmieren
sind, erfolgreich worden programmiert sind (S70). Wenn ja (S70 =
Ja), dann wird das Verfahren mit einem „Bestanden-Zustand" abgeschlossen (S92).
Ansonsten (S70 = Nein) führt
das Verfahren eine Programmierschleife aus, die für alle mit
dem Datenwert „0" zu programmierenden
Speicherzellen der „durchgefallenen
Gruppen" unter den
ausgewählten
Speicherzellen einen Teilprogrammiervorgang zum Programmieren des
Datenwerts „0" durchführt (S80).
Nach Schritt S80 bestimmt das Verfahren, ob die Programmierschleife
eine letzte Programmierschleife für ein zweites Programmierintervall
war (S90). Wenn ja (S90 = Ja), dann schließt das Verfahren mit einem „Durchgefallen-Zustand" ab (S94). Ansonsten (S90
= Nein) kehrt das Verfahren zum Schritt S60 zurück und wiederholt den Schritt
S60 und die nachfolgenden Schritte.
-
Wenn
das Verfahren gemäß 3 verwendet
wird, werden Teilprogrammiervorgänge
für den
Schritt S40 und den Schritt S80 zeitlich verschoben, wo es möglich ist,
um die Dauer für
jede Programmierschleife zu reduzieren.
-
8 zeigt
ein Blockdiagramm eines PRAM-Bauelements gemäß einer Ausführungsform
der Erfindung. Aus Beschreibungsgründen wird angenommen, dass
das PRAM-Bauelement gemäß 8 dafür ausgeführt ist,
eines der Verfahren gemäß 2 oder 3 oder
das Flussdiagramm gemäß 7 zu
implementieren. Bezugnehmend auf 8 umfasst
das PRAM-Bauelement ein Speicherzellenfeld 110, einen Zeilendecoder 124,
einen Spaltendecoder 126, einen Adressenpuffer 128 und
eine Programmierschaltung 130.
-
Das
Speicherzellenfeld 110 umfasst eine Mehrzahl von Phasenwechselspeicherzellen,
die in eine Mehrzahl von Zellengruppen aufgeteilt werden können. Obwohl
in den Zeichnungen nicht dargestellt, umfasst jede Phasenwechselspeicherzelle
ein Phasenwechselwiderstandsmaterial und ein Zugriffselement, wie
einen Transistor oder eine Diode. Das Zugriffselement wird verwendet,
um die Stromversorgung für
das Phasenwechselwiderstandsmaterial während Programmier-, Lese- und
Löschvorgängen zu
steuern.
-
Der
Zeilendecoder 124 wird mit einer Zeilenadresse XA versorgt,
die vom Adressenpuffer 128 ausgegeben wird, decodiert die
Zeilenadresse XA und wählt
eine Zeile der Mehrzahl von zu programmierenden Phasenwechselspeicherzellen
aus. Der Spaltendecoder 126 wird mit einer Spaltenadresse
YA versorgt, die vom Adressenpuffer 128 ausgegeben wird,
decodiert die Spaltenadresse YA und wählt basierend auf der de codierten
Spaltenadresse Spalten der Mehrzahl von zu programmierenden Phasenwechselspeicherzellen
aus.
-
Die
Programmierschaltung 130 führt einen adaptiven Verifizierungslesevorgang
mit der Mehrzahl von ausgewählten
Phasenwechselspeicherzellen aus. Insbesondere vergleicht die Programmierschaltung 130 Verifikationsdaten
VDATA, die aus den ausgewählten
Phasenwechselspeicherzellen ausgelesen werden, mit Programmierdaten
WDATA, die in die ausgewählten
Phasenwechselspeicherzellen zu programmieren sind, identifiziert
eine Mehrzahl von „durchgefallenen" Phasenwechselspeicherzellen,
deren Verifikationsdaten VDATA und Programmierdaten WDATA sich voneinander
unterscheiden, programmiert Daten in die durchgefallenen Phasenwechselspeicherzellen,
wobei die Daten einen zu programmierenden ersten logischen Zustand
(z.B. den Datenwert „1") aufweisen, und
programmiert Daten in die durchgefallenen Phasenwechselspeicherzellen,
wobei die Daten einen zu programmierenden zweiten logischen Zustand
(z.B. den Datenwert „0") aufweisen.
-
Die
Programmierschaltung 130 umfasst eine Vergleichseinheit 140,
einen Verifizierungsabtastverstärker 142,
einen Dateneingabepuffer 144, eine Statusflagsignalerzeugungseinheit 146,
eine Programmierverifizierungsbestimmungseinheit 150, eine
Programmierimpulserzeugungseinheit 160, einen Programmiertreiber 170,
eine Steuereinheit 180, einen Befehlspuffer 182 und
eine Modusauswahleinheit 190.
-
Die
Statusflagsignalerzeugungseinheit 146 empfängt die
Programmierdaten WDATA vom Dateneingabepuffer 144 und erzeugt
ein Statusflagsignal STATUS_FLAG, das eine Mehrzahl von Phasenwechselspeicherzellen
anzeigt, in welche Programmierdaten eines bestimmten logischen Zustands
aus der Mehrzahl von Programmierdaten WDATA zu programmieren sind.
Hierbei können
die Programmierdaten des bestimmten logischen Zustandes Programmierdaten
mit einem ersten logischen Zustand (z.B. dem Datenwert „1") oder Programmierdaten
mit einem zweiten logischen Zustand (z.B. dem Datenwert „0") sein. In diesem
Fall empfängt die
Statusflagsignalerzeugungseinheit 146 ein Programmiersteuersignal
RESET/SET_VERIFY von der Steuereinheit 180 und erzeugt
ein Statusflagsignal, das eine Mehrzahl von Phasenwechselspeicherzellen
anzeigt, in welche Programmierdaten mit dem ersten logischen Zustand
zu programmieren sind, oder erzeugt ein Statusflagsignal, das eine
Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche Programmierdaten
mit dem zweiten logischen Zustand zu programmieren sind. Typischerweise
stellt die Statusflagsignalerzeugungseinheit 146 zuerst
ein Statusflagsignal zur Verfügung,
das eine Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche
Programmierdaten mit dem ersten logischen Zustand zu programmieren
sind, und stellt dann ein Statusflagsignal zur Verfügung, das
eine Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche
Programmierdaten mit dem zweiten logischen Zustand zu programmieren
sind.
-
Die
Vergleichseinheit 140 vergleicht die durch den Verifizierungsabtastverstärker 142 aus
der Mehrzahl von Phasenwechselspeicherzellen gelesenen Verifikationsdaten
VDATA mit den Programmierdaten WDATA, die vom Dateneingabepuffer 144 eingegeben
werden, und gibt korrespondierende Vergleichssignale PASS ab. Die
Vergleichssignale PASS zeigen eine Mehrzahl von verschiedenen durchgefallenen
Phasenwechselspeicherzellen unter „k" Phasenwechselspeicherzellen an, deren
Verifikationsdaten VDATA und Programmierdaten WDATA sich voneinander
unterscheiden. Zudem empfängt
die Vergleichseinheit 140 die Verifikationsdaten VDATA,
die Programmierdaten WDATA und das Statusflagsignal STATUS_FLAG
und gibt ein Bestandenflagsignal PASS_FLAG, ein Rücksetzbestandenflagsignal
RESET_PASS_FLAG und ein Setzbestandenflagsignal SET_PASS_FLAG an
die Steuereinheit 180 aus. Wo die Verifikationsdaten VDATA
und die Programmierdaten WDATA gleich sind, nimmt das Bestandenflagsignal
PASS_FLAG einen ersten logischen Zustand an (z.B. einen hohen logischen
Zustand) und wo die Verifikationsdaten VDATA und die Programmierdaten
WDATA voneinander verschieden sind, nimmt das Bestandenflagsignal
PASS_FLAG einen zweiten logischen Zustand an (z.B. einen niedrigen
logischen Zustand).
-
Des
Weiteren nimmt das Rücksetzbestandenflagsignal
RESET_PASS_FLAG den ersten logischen Zustand an, wenn alle Phasenwechselspeicherzellen
bestanden haben, in die Programmierdaten mit dem ersten logischen
Zustand (z.B. mit dem Datenwert „1") zu programmieren sind, und wenn nicht
alle Phasenwechselspeicherzellen bestanden haben, in die Programmierdaten
mit dem ersten logischen Zustand zu programmieren sind, nimmt das
Rücksetzbestandenflagsignal
RESET_PASS_FLAG den zweiten logischen Zustand an. Des Weiteren nimmt
das Setzbestandenflagsignal SET_PASS_FLAG den ersten logischen Zustand
an, wenn alle Phasenwechselspeicherzellen bestanden haben, in die
Programmierdaten mit dem zweiten logischen Zustand zu programmieren
sind, und wenn nicht alle Phasenwechselspeicherzellen bestanden
haben, in die Programmierdaten mit dem zweiten logischen Zustand
zu programmieren sind, nimmt das Setzbestandenflagsignal SET_PASS_FLAG
den zweiten logischen Zustand an.
-
Die
Programmierverifizierungsbestimmungseinheit 150 empfängt das
Vergleichssignal PASS, das Statusflagsignal STATUS_FLAG und ein
Modusauswahlsignal WT_xX und erzeugt ein Bestimmungssignal DG zur
Bestimmung einer Mehrzahl von Teilprogrammiervorgängen, so
dass zu programmierende Daten in durchgefallenen Phasenwechselspeicherzellen
aus der Mehrzahl von Phasenwechselspeicherzellen programmiert werden,
in welche Programmierdaten mit einem bestimmten logischen Zustand
zu programmieren sind. Die Programmierverifizierungsbestimmungseinheit 150 wird
nachfolgend unter Bezugnahme auf 9 detaillierter
beschrieben.
-
Die
Programmierimpulserzeugungseinheit 160 empfängt das
Bestimmungssignal DG, das Programmiersteuersignal RESET/SET_VERIFY
und ein Programmierschleifensignal WT_LOOP und erzeugt ein Setzimpulssteuersignal
PWD_SET und ein Rücksetzimpulssteuersignal
PWD_RESET im Zeitablauf eines bestimmten Teilprogrammiervorgangs
in einer vorbestimmten Programmierschleife.
-
Der
Programmiertreiber 170 empfängt die Programmierdaten WDATA,
das Setzimpulssteuersignal PWD_SET und das Rücksetzimpulssteuersignal PWD_RESET
und erzeugt korrespondierend mit den Programmierdaten für eine durchgefallene
Phasenwechselspeicherzelle einen Setzimpuls oder einen Rücksetzimpuls.
-
Die
Steuereinheit 180 empfängt
einen Programmierbefehl vom Befehlspuffer 182, steuert
den Verifizierungsabtastverstärker 142,
die Statusflagsignalerzeugungseinheit 146, den Programmiertreiber 170 und die
Programmierimpulserzeugungseinheit 160 und führt einen
adaptiven Programmierverifizierungsvorgang aus. Zudem empfängt die
Steuereinheit 180 das Bestimmungssignal DG und stellt einen
detaillierten Betrieb des Verifizierungsabtastverstärkers 142 oder
dergleichen ein und empfängt
das Flagsignal PASS_FLAG mit dem ersten logischen Zustand und stoppt
den adaptiven Programmierverifizierungsvorgang. Des Weiteren empfängt die
Steuereinheit 180 das Rücksetzbestandenflagsignal
RESET_PASS_FLAG mit dem ersten logischen Zustand, um einen Teilprogrammiervorgang
von Daten mit einem ersten Status aufzuheben, und empfängt das
Setzbestandenflagsignal SET_PASS_FLAG mit dem ersten logischen Pegel,
um einen Teilprogrammiervorgang von Daten mit dem zweiten logischen
Zustand aufzuheben. Hierbei wird die Steuereinheit 180 mit dem
Modusauswahlsignal WT_xX versorgt, das einen Teilprogrammiermodus
aus der Modusauswahleinheit 190 auswählt, und steuert den Betrieb
des Verifizierungsabtastverstärkers 142 oder ähnlichem
gemäß dem ausgewählten Teilprogrammiermodus.
-
9 zeigt
ein Blockdiagramm einer Ausführungsform
einer Programmierverifizierungsbestimmungseinheit 150 im
PRAM-Bauelement gemäß 8.
Um den Kontext herzustellen, sind auch die Modusauswahleinheit 190 und
die Programmierimpulserzeugungseinheit 160 dargestellt.
-
Bezugnehmend
auf 9 empfängt
die Modusauswahleinheit 190 ein Modussteuersignal MODE
und erzeugt eine Mehrzahl von Modusauswahlsignalen WT_x2, WT_x4,
WT_x8 und WT_x16 zum Auswählen
von Teilprogrammiermodi. Das mit dem ausgewählten Teilprogrammiermodus
korrespondierende Modusauswahlsignal (z.B. WT_x2) nimmt den ersten
logischen Zustand an, und die verbleibenden Modusauswahlsignale WT_x4,
WT_x8 und WT_x16 nehmen den zweiten logischen Zustand an.
-
Die
Programmierverifizierungsbestimmungseinheit 150 umfasst
eine Mehrzahl von Durchlassgattern 151, 152, 153 und 154 und
eine Bestimmungslogikeinheit 156.
-
Die
Durchlassgatter 151, 152, 153 und 154 korrespondieren
mit einer Mehrzahl von entsprechenden Modusauswahlsignalen. Die
Durchlassgatter 151, 152, 153 und 154 werden
mit den entsprechenden Modusauswahlsignalen WT_x2, WT_x4, WT_x8
und WT_x16 versorgt und übertragen
selektiv ein Vergleichssignal PASS. Insbesondere gibt das mit dem
Modusauswahlsignal WT_x2 mit dem ersten logischen Pegel versorgte Durchlassgatter 151 das
Vergleichssignal PASS frei und überträgt es, und
die Durchlassgatter 152, 153 und 154,
die entsprechend mit den Modusauswahlsignalen WT_x4, WT_x8 und WT_x16
mit dem zweiten logischen Pegel versorgt werden, sind gesperrt.
-
Die
Bestimmungslogikeinheit 156 empfängt das Vergleichssignal PASS,
die Modusauswahlsignale WT_x2, WT_x4, WT_x8 und WT_x16 und das Statusflagsignal
STATUS_FLAG, bestimmt aus einer Mehrzahl von Zellengruppen eine
vorbestimmte Programmierreihenfolge der Mehrzahl von durchgefallenen
Zellengruppen, die wenigstens eine durchgefallene Phasenwechselspeicherzelle
aufweisen, in die Programmierdaten mit einem bestimmten logischen
Pegel zu programmieren sind, und legt die Bestimmungssignale DG
an, welche die Mehrzahl von Teilprogrammiervorgängen so bestimmen, dass die
Daten entsprechend der bestimmten Programmierreihenfolge programmiert
werden. Ein Beispiel eines Verfahrens zur Bestimmung der Programmierreihenfolge
wurde unter Bezugnahme auf die 4A bis 6 beschrieben.
-
10 zeigt
ein Zeitablaufdiagramm eines Beispiels eines Setzimpulssteuersignals,
das von der Programmierimpulserzeugungseinheit 160 ausgeben
wird. Die Programmierimpulserzeugungseinheit 160 empfängt das
Bestimmungssignal DG und das Programmierschleifensignal WT_LOOP
und gibt das Setzimpulssteuersignal und das Rücksetzimpulssteuersignal aus.
Zur Vereinfachung der Beschreibung zeigt 10 Setzimpulssteuersignale
PWD_SET0 bis PWD_SET7, die erzeugt werden, wenn in der ersten Programmierschleife
(SL=1) die Phasenwechselspeicherzellen der ersten, zweiten und fünften und
sechsten Zellengruppe durchfallen, in welche der Datenwert „0" zu programmieren
ist, wie im Zeitablaufdiagramm gemäß 3 dargestellt
ist. Bezugnehmend auf 10 korrespondieren die ersten
bis achten Setzimpulssteuersignale PWD_SET0 bis PWD_SET7 entsprechend
mit den ersten bis achten Zellengruppen. Da die dritte, vierte,
siebte und achte Zellengruppe bestanden haben, bleiben das dritte,
vierte, siebte und achte Setzimpulssteuersignal PWD_SET2, PWD_SET3,
PWD_SET6 und PWD_SET7 auf dem niedrigen logischen Zustand. Das erste, zweite
und fünfte
und sechste Setzimpulssteuersignal PWD_SET0, PWD_SET1, PWD_SET4
und PWD_SET5 werden nacheinander erzeugt, ohne einander zu überlappen.
-
11 zeigt
ein Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs
in einem PRAM-Bauelement gemäß einer
anderen Ausführungsform
der Erfindung. Die gleichen Schritte wie die in 7 dargestellten
Schritte sind mit den gleichen Bezugszeichen bezeichnet, wobei zur
Vermeidung von Wiederholungen auf eine detaillierte Beschreibung
der bereits beschriebenen Schritte verzichtet wird. Bezugnehmend
auf 11 wird zuerst ein Teilprogrammiermodus gesetzt
(S10) und die Anzahl von Phasenwechselspeicherzellen bestimmt, die
in jeder Zellengruppe enthalten sind. Dann wird ein Programmiermodus
gesetzt (S12) und es wird der Datenwert „1"programmiert und dann der Datenwert „0" programmiert (S20
bis S94), oder es wird der Datenwert „0" und dann der Datenwert „1" programmiert (S220
bis S294).
-
Insbesondere
folgt der Vorgang zum Schreiben des Datenwerts „0" nach dem Schreiben des Datenwerts „1" der Reihenfolge
des Verifizierungslesevorgangs (S20) in der Bestimmung im Schritt
S30, ob die Phasenwechselspeicherzelle, die mit dem Datenwert „1" zu programmieren
ist, bestanden hat oder nicht, des Teilprogrammierungsvorgangs für den Datenwert „1" (S40), der Bestimmung
im Schritt S50, ob die ausgeführte Programmierschleife
mit der letzten Programmierschleife korrespondiert, des Verifizierungslesevorgangs (S60),
der Bestimmung im Schritt S70, ob die Phasenwechselspeicherzelle,
die mit dem Datenwert „0" zu programmieren
ist, bestanden hat, des Teilprogrammiervorgangs des Datenwerts „0" (S80) und der Bestimmung im
Schritt S90, ob die ausgeführte
Programmierschleife mit der letzten Programmierschleife korrespondiert.
-
Zudem
folgt der Vorgang des Programmierens des Datenwerts „1" nach dem Programmieren
des Datenwerts „0" der Reihenfolge
des Verifizierungslesevorgangs (S220), der Bestimmung im Schritt
S230, ob die Phasenwechselspeicherzelle, die mit dem Datenwert „1" zu programmieren
ist, bestanden hat oder nicht, des Teilprogrammierungsvorgangs zum
Programmieren des Datenwerts „1" (S240), der Bestimmung
im Schritt S250, ob die ausgeführte
Programmierschleife mit der letzten Programmierschleife korrespondiert,
des Verifizierungslesevorgangs (S260), der Bestimmung im Schritt
S270, ob die Phasenwechselspeicherzelle, die mit dem Datenwert „0" zu programmieren
ist, bestanden hat, des Teilprogrammiervorgangs zum Programmieren des
Datenwerts „0" (S280) und der Bestimmung
im Schritt S290, ob die ausgeführte
Programmierschleife mit der letzten Programmierschleife korrespondiert.
-
Der
Fachmann erkennt, dass PRAM-Bauelemente, die zur Implementierung
des Verfahrens nach 11 geeignet sind, unter Verwendung
eines beispielhaft in 8 dargestellten Aufbaus ausgeführt werden können. Eine
getrennte Modusauswahleinheit kann zur Auswahl eines Programmiermodus
zur Verfügung
gestellt werden.
-
Entsprechend
den ausgewählten
Ausführungsformen
der Erfindung kann der erforderliche Zeitbedarf zur Ausführung eines
Programmiervorgangs in ausgewählten
Speicherzellen eines nichtflüchtigen
Speicherbauelements durch die Programmierung von ausgewählten Speicherzellen
mit verschiedenen logischen Zuständen
während
verschiedener Programmierintervalle reduziert werden. Der erforderliche
Zeitbedarf für
die Programmiervorgänge
kann durch Einstellen der Dauer von Programmierschleifen gemäß der Anzahl
von während
jeder Programmierschleife auszuführenden
Teilprogrammiervorgängen
weiter reduziert werden.