Universit`a degli Studi di Pavia Sviluppo di Algoritmi di

Università degli Studi di Pavia
Dipartimento di Elettronica
Dottorato di Ricerca
in Ingegneria Elettronica, Informatica ed Elettrica
XXI Ciclo
Sviluppo di Algoritmi di
Programmazione Multilivello per
Memorie a Cambiamento di Fase
Tutor:
Chiar.mo Prof. Guido Torelli
Co-Tutor:
Ing. Alessandro Cabrini
Coordinatore del Corso di Dottorato:
Chiar.mo Prof. Giuseppe Conciauro
Tesi di Dottorato
di Roberto Faravelli
Anno Accademico 2007 - 2008
2
i
A mia mamma,
con infinito affetto
ii
Indice
Introduzione
vii
1 Memorie a Semiconduttore
1.1 Memorie Volatili . . . . . . . . . . . . . . . . . .
1.2 Memorie Non Volatili . . . . . . . . . . . . . . . .
1.2.1 Le Memorie Flash . . . . . . . . . . . . . .
1.3 Memorie Non Volatili di Nuova Generazione . . .
1.3.1 Limiti di Scalabilità della Tecnologia Flash
1.3.2 Le Memorie FeRAM . . . . . . . . . . . .
1.3.3 Le Memorie MRAM . . . . . . . . . . . .
1.4 Le Memorie a Cambiamento di Fase . . . . . . . .
1.4.1 Struttura della Cella di Memoria PCM . .
1.4.2 Affidabilità della Cella . . . . . . . . . . .
1.4.3 Prospettive di Scaling . . . . . . . . . . .
1.4.4 Tipi di cella PCM . . . . . . . . . . . . . .
1.5 Organizzazione di una Memoria a Semiconduttore
1.6 Operazioni sulla Cella di Memoria PCM . . . . .
1.6.1 Caratteristica I-V della Cella . . . . . . .
1.6.2 Programmazione di una Cella PCM . . . .
1.6.3 Lettura di una Cella PCM . . . . . . . . .
1.7 La Memorizazione Multilivello . . . . . . . . . . .
1.8 Confronto tra le Tecnologie Emergenti . . . . . .
1
3
3
7
11
11
14
17
19
20
21
23
24
26
28
28
29
30
32
34
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Caratteristiche delle Leghe Calcogenure
37
2.1 Il GST Cristallino . . . . . . . . . . . . . . . . . . . . . . . . . 38
iv
INDICE
2.2 Il GST Amorfo . . . . . . . . . . . . . . . . .
2.3 Il Fenomeno del Threshold Switching . . . . .
2.3.1 Modello Fisico del Threshold Switching
2.4 Cristallizzazione del GST amorfo . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
3.1 Architettura della Cella di Memoria . . . . . . . . . .
3.1.1 Approccio con Selettore MOSFET . . . . . .
3.1.2 Approccio con Selettore Bipolare . . . . . . .
3.2 Architettura del Dispositivo ZZA0-MOS . . . . . . .
3.3 Architettura del Dispositivo ZZA0-BJT . . . . . . . .
3.4 Modalità di Test del Dispositivo ZZA0-MOS . . . . .
3.4.1 Operazioni di Testing . . . . . . . . . . . . . .
3.5 Modalità di Test del Dispositivo ZZA0-BJT . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
43
45
50
.
.
.
.
.
.
.
.
53
54
54
55
58
62
64
69
71
4 Algoritmi di Programmazione Multilivello
4.1 Tecniche di Programmazione Tradizionali . . . . . . . . . . . .
4.2 Approcci alla Programmazione . . . . . . . . . . . . . . . . . .
4.2.1 Programmazione Pilotata in Tensione . . . . . . . . . .
4.2.2 Programmazione Pilotata in Corrente . . . . . . . . . .
4.3 Analisi della Programmazione su Singola Cella di Memoria . .
4.3.1 Curva di Programmazione della Cella PCM con
Pilotaggio in Tensione . . . . . . . . . . . . . . . . . .
4.3.2 Analisi della Programmazione Pilotata in Tensione . .
4.3.3 Dipendenza delle Curve di Programmazione Pilotata in
Tensione dall’Ampiezza e dalla Durata degli Impulsi di
Set, e dalla presenza degli Impulsi di Reset . . . . . . .
4.3.4 Curva di Programmazione della Cella PCM con
Pilotaggio in Corrente . . . . . . . . . . . . . . . . . .
4.3.5 Determinazione della Massima Finestra delle Correnti
di Lettura . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.6 Impatto della condizione Iniziale di Reset sulle Curve
di Programmazione . . . . . . . . . . . . . . . . . . . .
4.4 Analisi su Matrice di Memoria . . . . . . . . . . . . . . . . . .
4.4.1 Impatto della Condizione Iniziale di Reset sulla
Programmazione di un’Area della Matrice di Memoria
75
76
79
80
81
85
89
95
104
114
118
120
122
123
INDICE
v
4.4.2
4.5
Algoritmo di Programmazione SCU P&V con Doppio
Livello di Reset . . . . . . . . . . . . . . . . . . . . .
Algoritmi di Programmazione Alternativi . . . . . . . . . . .
4.5.1 Algoritmo SCD Reset + SCU P&V Set . . . . . . . .
4.5.2 Algoritmo di Programmazione Multilivello con Reset
Adattativo . . . . . . . . . . . . . . . . . . . . . . . .
5 Programmazione Multilivello in tecnologia a 90 nm
5.1 Architettura dell’Elemento di Memoria . . . . . . . .
5.2 Architettura del Dispositivo . . . . . . . . . . . . . .
5.3 Algoritmo di Programmazione . . . . . . . . . . . . .
5.4 Risultati Sperimentali . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Conclusioni
A Setup Sperimentale
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS
A.1.1 Il QT200 . . . . . . . . . . . . . . . . . . . . . . .
A.1.2 Il Programma di Test . . . . . . . . . . . . . . . .
A.1.3 Il DatalogReader . . . . . . . . . . . . . . . . . .
A.2 Caratterizzazione del Dispositivo in Tecnologia a 90 nm .
. 127
. 130
. 130
. 133
139
. 139
. 143
. 151
. 153
157
.
.
.
.
.
.
.
.
.
.
159
. 159
. 159
. 161
. 165
. 183
vi
INDICE
Introduzione
Il progresso scientifico e tecnologico nel campo dell’elettronica, ed in
particolare della microelettronica, ha reso possibile la realizzazione di sistemi
elettronici sempre più complessi, che possano servire sia come aiuto nella
vita di tutti i giorni, sia per il semplice intrattenimento. All’interno di
questi dispositivi, oltre a circuiti in grado di eseguire elaborazioni sempre
più complesse in tempi sempre più rapidi, giocano un ruolo di primo piano
le memorie. La ricerca è pertanto volta allo sviluppo di dispositivi di
memoria dalle caratteristiche sempre più competitive, che siano in grado
cioè di soddisfare le pressanti richieste del mercato, quali l’elevata densità
di memorizzazione, garantendo un basso costo per bit di informazione
immagazzinata, e prestazioni in termini di velocità in lettura/scrittura
sempre più competitive. Le memorie a semiconduttore trovano applicazione
all’interno di svariate apparecchiature, come i personal computer, gli apparati
per le telecomunicazioni, le macchine fotografiche e le videocamere digitali,
i sistemi di riproduzione audio-video e i dispositivi di memorizzazione di
massa.
Le memorie a semiconduttore si suddividono in due categorie
fondamentali, le memorie volatili e le memorie non volatili. Le prime, a
cui appartiene la famiglia delle RAM (Random Access Memory), sono in
grado di mantenere l’informazione memorizzata soltanto in presenza della
tensione di alimentazione, mentre le seconde sono dotate della capacità di
conservare l’informazione anche quando il dispositivo non viene alimentato.
Le memorie volatili offrono prestazioni superiori in termini di velocità di
scrittura e lettura, ma hanno lo svantaggio di non mantenere le informazioni
in mancanza della tensione di alimentazione. Le memorie non volatili a
semiconduttore, invece, grazie alla capacità di trattenere l’informazione anche
viii
Introduzione
in assenza della tensione di alimentazione, trovano impiego in numero sempre
maggiore di applicazioni, che prima si affidavano alle memorie volatili o a
quelle magnetiche. Il mercato delle memorie non volatili è tuttora dominato
dalle memorie Flash, che vengono utilizzate in apparecchiature come telefoni
cellulari, videocamere digitali, lettori di musica portatili e dispositivi per la
memorizzazione di massa a stato solido (SSD, Solid State Drive). La cella
di memoria Flash è costituita da un transistore MOS a gate flottante, un
transistore cioè in cui è presente un ulteriore gate isolato galvanicamente e
isolato dal resto del circuito. L’informazione è immagazzinata sotto forma di
carica immagazzinata sul gate flottante. È però stato previsto che il continuo
scaling down tecnologico porterà a forti problemi di affidabilità della cella
di memoria Flash. Per questo motivo i maggiori produttori di memorie
non volatili stanno investendo nello studio e nello sviluppo di tecnologie
innovative, in grado di soddisfare le richieste di velocità, affidabilità, densità
di memorizzazione e scalabilità.
Tra le tecnologie di memoria non volatile di nuova generazione hanno
raggiunto un buon grado di maturità le FeRAM (Ferroelectric RAM, RAM
ferroelettriche), le MRAM (Magnetoresistive RAM, RAM magnetoresistive),
e le PCM (Phase Change Memories, memorie a cambiamento di fase). Le
memorie a cambiamento di fase, in cui l’elemento di memoria è costituito da
uno strato sottile di una lega calcogenura (costituita cioè da elementi del IV,
V e VI gruppo della tavola periodica), risultano essere molto promettenti per
sostituire la tecnologia Flash. Tali leghe allo stato solido si possono presentare
sia in fase policristallina, caratterizzata da un basso valore di resistività
elettrica, sia in fase amorfa, caratterizzata da un alto valore di resistività
elettrica. Alla cella nello stato completamente cristallino, che presenta un
valore di resistenza elettrica dell’ordine dei kΩ, è associato il valore logico
“1” (stato di Set), mentre alla cella nello amorfo, il cui valore di resistenza
elettrica è dell’ordine del MΩ, è associato lo “0” logico (stato di Reset). La
fase amorfa e la fase cristallina sono stabili nel tempo, il che garantisce alle
memorie che sfruttano questi materiali caratteristiche di non volatilità. La
transizione di fase, inoltre, è un fenomeno reversibile e riproducibile, il che
rende possibile l’utilizzo di questa tipologia di materiali per la realizzazione
di memorie. Tale tecnologia presenta ottime caratteristiche in termini di
endurance, ritenzione del dato, alta velocità di lettura e programmazione
(i fenomeni di cambiamento di fase sono infatti rapidi, richiedendo tempi
nell’ordine delle decine di ns), scalabilità e compatibilità con i processi di
ix
fabbricazione CMOS standard. L’operazione di lettura, inoltre, risulta essere
non distruttiva, ed è possibile indirizzare una sola cella di memoria alla volta.
Per far fronte alle pressanti esigenze del mercato, che richiede dispositivi
di memoria con capacità sempre maggiore e con dimensioni sempre più
ridotte, la ricerca nel campo delle memorie non volatili ha dedicato una
particolare attenzione allo studio della memorizzazione multilivello, che
permette di memorizzare più di un bit in una singola cella di memoria. Tale
approccio consente di aumentare la capacità di memorizzazione a parità di
tecnologia, contenendo i costi di produzione. Nel caso delle memorie Flash,
la programmazione multilivello è ottenuta controllando in maniera accurata
la quantità di carica iniettata sul gate flottante.
Il concetto di memorizzazione multilivello è applicabile anche alle
memorie a cambiamento di fase. L’idea che sta alla base di questo
approccio alla programmazione è la modulazione della resistenza dello
strato di materiale calcogenuro, che deve assumere valori intermedi tra
quella dello stato di Set e quella dello stato di Reset. L’attività del mio
dottorato di ricercasi è concentrata sullo studio delle problematiche relative
alla memorizzazione multilivello nella tecnologia PCM e sullo sviluppo di
algoritmi di programmazione che rendano possibile effettuare un controllo
accurato della resistenza della cella. Per meglio comprendere la totalità dei
problematiche studiate, è necessario integrare la trattazione contenuta nel
presente lavoro di tesi con quella di Giacomo M. A. Calvi, che ha condiviso
con me questi tre anni di lavoro.
Gran parte dell’attività di caratterizzazione sperimentale è stata condotta
su due dispositivi sperimentali, lo ZZA0-MOS e lo ZZA0-BJT, realizzati
da STMicroelectronics in tecnologia a 180 nm. I risultati ottenuti sono
stati sono stati in seguito validati su un dispositivo in tecnologia a 90 nm,
sviluppato da STMicroelectronics in collaborazione con Intel, dimostrando
l’efficacia dell’algoritmo di programmazione proposto anche per un livello di
integrazione più spinto.
Nel primo capitolo della presente tesi viene fornita una panoramica sulle
memorie a semiconduttore, con particolare attenzione alle memorie non
volatili di nuova generazione, e vengono descritte più in dettaglio le memorie a
cambiamento di fase, esaminandone le caratteristiche principali. Nel secondo
capitolo vengono descritte le proprietà fisiche della fase cristallina e della
fase amorfa delle leghe calcogenure, le quali, come detto sopra, costituiscono
l’elemento di memoria nella tecnologia PCM. Vengono inoltre esaminati in
x
Introduzione
dettaglio i meccanismi che stanno alla base della transizione tra le due
fasi. Nel terzo capitolo vengono presentati i due dispositivi sperimentali
utilizzati per le valutazioni sperimentali, cioè lo ZZA0-MOS e lo ZZA0-BJT,
mentre nel quarto capitolo vengono riportati i risultati sperimentali che
hanno portato alla definizione di algoritmi di programmazione multilivello.
Nel quinto capitolo viene descritto il dispositivo in tecnologia a 90 nm, e
vengono mostrati i risultati sperimentali che esso ha permesso di ottenere.
Nell’Appendice A, infine, vengono descritte le macchine di test utilizzate per
svolgere le caratterizzazioni sperimentali effettuate sui dispositivi, le routine
di test utilizzate, ed il software sviluppato come ausilio all’analisi dei dati
sperimentali ottenuti.
Capitolo
1
Memorie a Semiconduttore
Le memorie a cambiamento di fase appartengono alla famiglia delle
memorie a semiconduttore. L’evoluzione di questa famiglia di memorie è
dovuta alle pressanti spinte del mercato, che richiede lo sviluppo di dispositivi
di memoria che siano dotati di capacità di immagazzinare dati sempre
maggiori, nonché di caratteristiche competitive quali la miniaturizzazione
e il basso consumo di potenza. Tali richieste da parte del mercato sono
dovute al fatto che sono sempre più diffusi dispositivi portatili quali personal
cumputer, videocamere e apparati fotografici digitali, lettori di MP3, drive
USB per la memorizzazione di massa, telefoni cellulari e smartphone. Le
esigenze di mercato hanno dunque favorito la nascita e lo sviluppo delle
memorie a semiconduttore, che permettono di realizzare su un unico circuito
integrato sia la memoria vera e propria, sia tutta la circuiteria necessaria
al suo corretto funzionamento. La famiglia delle memorie a semiconduttore
comprende al suo interno varie tipologie di dispositivi, caratterizzati in base
ai seguenti parametri:
• ritenzione (capacità di mantenere l’informazione nel tempo);
• possibilità di modificare i dati memorizzati;
• endurance (numero di cicli di scrittura che la cella di memoria sopporta
prima di presentare guasti);
• granularità (numero minimo di celle di memoria che possono essere
programmate in modo indipendente, senza dover andare a modificare
il contenuto di altre celle);
2
Memorie a Semiconduttore
Memorie a
Semiconduttore
Volatili
Non Volatili
RAM
SRAM
ROM
EPROM
DRAM
EEPROM
PROM
UVEPROM
Flash
Figura 1.1: Memorie a semiconduttore.
• tempi di accesso (tempo di lettura, cioè tempo necessario a leggere un
dato in una certa locazione di memoria, e tempo di programmazione,
cioè tempo necessario a immagazzinare il dato nella locazione
desiderata);
• densità di integrazione.
Esistono varie tipologie di memorie a semiconduttore, ognuna
caratterizzata da specifiche caratteristiche che offrono differenti prestazioni
relativamente ai parametri evidenziati. La prima grande distinzione può
essere fatta tra memorie volatili e memorie non volatili (NVM, Non Volatile
Memory), com’è schematizzato in Fig. 1.1: le prime mantengono memorizzate
le informazioni solo in presenza della tensione di alimentazione, mentre le
seconde hanno la caratteristica di mantenere il dato anche in assenza di
questa [1].
1.1 Memorie Volatili
1.1
3
Memorie Volatili
Alla categoria delle memorie volatili appartiene un primo sottogruppo,
quello delle RAM (Random Access Memory, memoria ad accesso casuale).
Il nome deriva dal fatto che il tempo di accesso è indipendente dalla
locazione nella memoria dell’elemento che si desidera leggere o scrivere, in
quanto opportuni circuiti logici combinatori individuano la cella a partire
dal suo indirizzo. Le RAM sono dette anche memorie R/W (Read/Write),
in quanto possono essere sia lette, sia scritte e cancellate un numero molto
elevato di volte. A seconda della classe di appartenenza il dato può essere
immagazzinato anche utilizzando un solo transistore, il che contribuisce a
raggiungere ottimi risultati in termini di integrazione.
Le RAM si suddividono in due tipi: le DRAM (Dynamic RAM, RAM
dinamiche) e le SRAM (Static RAM, RAM statiche). Le prime sono quelle
più economiche e più utilizzate all’interno degli elaboratori. Esse sono volatili
e riscrivibili; ogni cella comprende un solo transistore, consentendo una
elevatissima densità di integrazione. Le informazioni vengono memorizzate
sfruttando un condensatore: la carica immagazzinata nel condensatore
rappresenta il dato memorizzato. La permanenza dell’informazione è
estremamente breve a causa delle correnti di leakage, che fanno sı̀ che la carica
si esaurisca dopo breve tempo. Per questa ragione è necessario effettuare
periodicamente un ciclo di rinfresco, al fine di evitare che il dato contenuto
nella cella venga irrimediabilmente perso.
Per quanto riguarda le SRAM, invece, i dati vengono memorizzati
utilizzando più transistori che formano un latch statico, il che evita
l’inconveniente di dovere effettuare il rinfresco. Ciò comporta un minore
consumo di potenza, a scapito però di una ridotta densità di integrazione, in
quanto la singola cella ha dimensioni maggiori. Ciò porta ovviamente a costi
più elevati.
1.2
Memorie Non Volatili
Il primo sottogruppo delle memorie non volatili è costituito dalle ROM
(Read Only Memory, memoria a sola lettura). Questi dispositivi sono non
volatili, sono cioè in grado di mantenere l’informazione anche in assenza
di tensione di alimentazione. Il successo di queste memorie è dovuto alla
sempre maggiore richiesta di dispositivi non volatili dai costi contenuti. Le
4
Memorie a Semiconduttore
ROM propriamente dette sono a sola lettura, e possono essere programmate
una sola volta (ciò avviene durante il processo di fabbricazione). I dati
non possono quindi essere modificati. Questi vengono memorizzati in una
matrice di interconnessioni costituite da diodi o transistori, che vengono
indirizzati attraverso una rete combinatoria. In virtù di queste caratteristiche,
il principale utilizzo sarà per applicazioni in cui non è necessario modificare
i dati memorizzati.
Le PROM (Programmable ROM) sono memorie a sola lettura
programmabili una sola volta (OTP, One Time Programmable). L’operazione
di programmazione può essere svolta dall’utente mediante una particolare
apparecchiatura, il che fornisce maggiore versatilità rispetto al caso delle
ROM. In ogni nodo della matrice di interconnessioni, che costituiscono i
singoli elementi di memoria, è presente un elemento attivo messo in serie
a un fusibile in policristallo. La programmazione avviene bruciando in
maniera selettiva i fusibili in base a una maschera ottenuta a partire dai
dati da memorizzare. Esiste anche una tipologia di PROM in cui, invece dei
fusibili, vengono utilizzati degli antifusibili (antifuse), in cui il collegamento
viene creato invece che bruciato. Un ulteriore metodologia per ottenere una
memoria OTP è quello di utilizzare una EPROM posta all’interno di una
package privo della finestrella che permette la cancellazione della matrice di
memoria (tali concetti verranno chiariti meglio in seguito).
Per cercare di soddisfare le esigenze degli utilizzatori, la ricerca si è
rivolta allo sviluppo di una tipologia di memoria non volatile non solo
programmabile, ma anche riprogrammabile dall’utente. È sotto queste spinte
che nel 1967 sono nate le prime memorie a gate flottante [2], in cui cioè
il dato è memorizzato nella forma di cariche elettriche presenti su di un
gate galvanicamente isolato, mediante materiale isolante, dagli elettrodi
accessibili. La cella risulta programmata quando sul gate flottante è presente
una carica tale da inibire l’accensione del dispositivo. La prima realizzazione
commerciale di un dispositivo di memoria a gate flottante è il cosiddetto
dispositivo di memoria FAMOS (Floating-gate Avalanche-injection MOS,
MOS a gate flottante con iniezione a valanga, Fig. 1.2), proposto nei primi
anni ’70 da D. Frohman-Bentchkowsky [3]. In un dispositivo FAMOS, la
programmazione viene effettuata attraverso un breakdown a valanga in
corrispondenza della giunzione di drain. Gli elettroni caldi cosı̀ generati
vengono trasportati verso il gate flottante, oltrepassando la barriera costituita
dall’ossido mediante l’applicazione di una tensione relativamente bassa. Per
1.2 Memorie Non Volatili
5
Source
Drain
Gate Flottante
SiO2
SiO2
p+
SiO2
p+
Substrato n
Figura 1.2: Sezione trasversale di una cella FAMOS.
cancellare una memoria FAMOS viene utilizzata luce ultravioletta, la quale
svolge la funzione di eccitare gli elettroni e far loro lasciare il gate flottante
in modo che attraversino la barriera d’ossido e siano quindi raccolti da una
massa elettrica.
Sul finire degli anni ’70, le FAMOS si sono evolute in una tipologia
di memorie non volatili commerciali dette EPROM (Erasable PROM,
PROM cancellabile), altresı̀ note come UV-EPROM (Ultra-Violet EPROM).
Nelle EPROM la programmazione è effettuata tramite elettroni caldi di
canale (Channel Hot Electron, CHE) [4]. Al contrario delle PROM, le
EPROM possono essere totalmente cancellate (per un numero limitato, ma
consistente di volte) e riprogrammate dall’utente. La programmazione si
realizza polarizzando opportunamente la cella con elevate tensioni: viene fatta
scorrere una forte corrente tra drain e source, e parte degli elettroni interessati
vengono iniettati sul gate flottante. La cancellazione avviene esponendo la
matrice di memoria a raggi ultravioletti per un periodo di tempo prolungato
(circa 20 minuti), utilizzando un’apparecchiatura chiamata EPROM Eraser,
la quale contiene al suo interno una lampada a raggi UV di tipo UV-C e un
temporizzatore elettromeccanico, il quale permette di impostare il tempo di
irradiazione. Per questo motivo il chip è montato in un package dotato di una
finestrella di quarzo (Fig. 1.3(a)), che permette il passaggio di tali radiazioni.
Le EPROM hanno un impiego analogo a quello delle ROM, ma hanno un
costo molto maggiore (anche a causa del package), e in genere vengono
perciò usate per bassi volumi di produzione o laddove vi sia la necessità di
aggiornare il software memorizzato. L’operazione critica risulta essere dunque
la cancellazione, in primo luogo perché riguarda tutta la matrice e non vi è
dunque possibilità di effettuare un indirizzamento selettivo, e inoltre perché
6
Memorie a Semiconduttore
(a) EPROM da 32 kBin
tecnologia CMOS.
(b) EPROM su cui è stato
memorizzato il software di un
microcontrollore.
Figura 1.3: Esempi di EPROM.
per esporre il chip alle radiazioni UV è necessario rimuoverlo dalla locazione
fisica su cui è montato, ad esempio un circuito stampato (Fig. 1.3(b)). Un
ulteriore svantaggio delle EPROM sta nel fatto che durante l’operazione di
programmazione sono necessarie alte tensioni (12 - 21 V) e alte correnti
(>10 mA) di alimentazione. Di conseguenza, l’operazione di programmazione
avviene attraverso l’utilizzo di uno specifico apparato che fornisce i segnali
di tensione e corrente necessari.
Per far fronte ai problemi delle EPROM, cioè la complicata procedura
di riprogrammazione e i tempi troppo lunghi di cancellazione, la ricerca si
è mossa in direzione dello sviluppo delle EEPROM (Electrically Erasable
PROM, PROM cancellabili elettricamente) o E2 PROM, comparse sul
mercato nel 1981. In Fig. 1.4 è mostrata la sezione laterale di una cella
EEPROM. Queste sono EPROM che possono essere riprogrammate senza
essere rimosse dal circuito stampato, in quanto questa operazione avviene
tramite l’applicazione di impulsi elettrici. Nel caso delle EEPROM, infatti,
durante le operazioni di programmazione e cancellazione, viene iniettata
e rimossa carica dal gate flottante sfruttando l’effetto tunnel [5]. Dalla
presentazione di queste caratteristiche, risulta evidente che le EEPROM
possono essere viste come un punto di convergenza tra i mondi delle
ROM tradizionali e delle RAM, in quanto costituiscono un’evoluzione delle
prime, ma la possibilità di essere riscritte in tempi relativamente brevi
(anche se molto superiori a quelli tipici delle RAM) le accomuna con le
1.2 Memorie Non Volatili
Dielettrico interpoly
7
Poly 2 (gate)
Poly 1 (floating gate)
Ossido di campo
n+
n+
Substrato p
Ossido di gate
Ossido di campo
Ossido di tunnel
Figura 1.4: Sezione trasversale di una cella di EEPROM (il transistore di selezione
non è riportato in figura).
seconde. Gli elementi di memoria sono organizzati in modo da consentire
la riprogrammazione di un Byte alla volta. Come è stato appena accennato,
attualmente i tempi di riprogrammazione delle EEPROM risultano essere
lunghi rispetto a quelli delle RAM, e i campi di applicazione restano pertanto
quelli delle memorie non volatili. Esse sono dunque impiegate laddove
vi sia necessità di tenere immagazzinati, anche in assenza di tensione di
alimentazione, dati che non richiedano molto spazio di memoria, come ad
esempio dati di configurazione, e che debbano essere modificabili durante
l’uso corrente (per esempio dati relativi alle informazioni di sintonia in
videoregistratori, televisori e autoradio). Rispetto alle ROM e alle EPROM,
esse presentano lo svantaggio di una maggiore occupazione di area per la
singola cella, ossia di una ridotta densità di integrazione.
1.2.1
Le Memorie Flash
Un’evoluzione delle EPROM sono le memorie Flash, dispositivi anch’essi
programmabili e cancellabili elettricamente. La cella di memoria Flash non
presenta il transistore di selezione (che è presente invece nelle celle EPROM),
il che garantisce maggiore densità di integrazione. La programmazione
avviene a livello di singola cella, mentre la cancellazione coinvolge un intero
settore (blocco o pagina) di dimensioni che vanno dal Byte al MByte.
Il loro nome è dovuto al fatto che l’operazione di cancellazione di un
8
Memorie a Semiconduttore
intero settore (o, originariamente, dell’intera matrice di memoria) è molto
veloce, caratteristica sviluppata in base a una precisa richiesta dell’esercito
americano, per impedire al nemico di leggere i codici dei mezzi bellici
eventualmente catturati. Il tempo di accesso in lettura è pressoché uguale
a quello delle EEPROM, ma diminuiscono in maniera drastica l’area della
cella e i tempi di cancellazione di grandi volumi di dati. La cella dell’originaria
memoria Flash a un transistore è derivata dalla cella convenzionale della
tecnologia EPROM. L’idea di base per memorizzare il dato è quella di
sfruttare una struttura MOS a gate flottante, in cui cioè è presente un
gate aggiuntivo annegato nell’ossido, e pertanto non accessibile dall’esterno.
Come avviene anche nelle altre tipologie di memoria a gate flottante, il dato
viene memorizzato sotto forma di carica iniettata in questo nuovo elemento
che, essendo isolato, permette che l’informazione venga mantenuta anche
per decine di anni. La presenza di carica intrappolata ha come effetto una
variazione della tensione di soglia del transistore, vista dal gate di controllo,
Vth secondo la legge:
Vth = Vth0 −
Q
,
Cox
(1.1)
dove Vth0 indica la tensione di soglia quando non è presente carica sul gate
flottante, Q la carica intrappolata, e Cox la capacità dell’ossido di gate.
Le sezioni trasversali di una cella di memoria Flash lungo la bit-line e
lungo la word-line sono mostrate rispettivamente in Fig. 1.5 e Fig. 1.6. Gli
elettrodi di drain e source consistono in regioni n+ a cui si sovrappone
parzialmente (a causa della diffusione laterale) il gate flottante. Tra il
gate flottante (poly 1) e il substrato di tipo p è presente uno strato
uniforme di ossido di gate. Uno strato di dielettrico interpoly (tipicamente
ossido-nitruro-ossido, ONO) è utilizzato per isolare il gate di controllo (poly
2), che è tipicamente realizzato in polisiliciuro (polycide), dal gate flottante.
Le regioni di source e drain sono autoallineate alla struttura a pila costituita
da poly 2/ONO/poly 1. Le bit-line in metal sono perpendicolari alle word-line
(in polisiliciuro) e contattano tutte le diffusione di drain di una colonna. Le
diffusioni di source sono parallele alle word-line, e sono contattate a distanza
regolare da una pista metallica di source comune.
Intel fu la prima società a produrre memorie Flash e a immetterle nel
mercato come componenti singoli. Nel 1988 il gruppo ha introdotto un chip
1.2 Memorie Non Volatili
9
Gate di Controllo
Gate Flottante
Dielettrico Inter-poly
Ossido di Gate
Source n+
Drain n+
Substrato p
Figura 1.5: Sezione trasversale di una cella di memoria Flash lungo la bit-line.
Flash a 256 Kbit, dimostrando poi i vantaggi della memoria embedded usando
un vecchio registratore di voce, che poteva riempire una borsa per documenti.
L’invenzione di Intel prese il nome di NOR Flash. Sviluppata con tecnologie
EPROM ed EEPROM, la Flash di tipo NOR aveva velocità di scrittura
e lettura che sarebbero considerate lentissime se paragonate agli standard
attuali, e poteva gestire solo un limitato quantitativo di cicli di scrittura
(circa 100.000). Questo tipo di memoria è impiegata principalmente in quei
campi che richiedono il salvataggio permanente di dati raramente soggetti a
modifiche, come ad esempio, i sistemi operativi delle fotocamere digitali o
dei telefoni cellulari.
Diversamente dalle tecnologie precedenti, la tecnologia Flash ha reso
Gate di Controllo
Gate Flottante
Substrato p
Figura 1.6: Sezione di una cella Flash lungo la word-line.
10
Memorie a Semiconduttore
possibile la cancellazione di dati in un unico step. Il secondo tipo di memoria
Flash introdotta sul mercato è la NAND Flash, inventata nel 1989 da Toshiba,
che si è subito presentata come l’alternativa più veloce ed economica alle
memorie Flash di tipo NOR. In confronto alla cella di tipo NOR, le celle di
memoria di tipo Flash NAND erano grandi solo la metà. Questo rappresentò
un grande vantaggio in termini economici: le ridotte dimensioni delle celle
permettevano l’utilizzo di maggiori capacità di immagazzinamento nello
stesso spazio di una memoria NOR, e, quindi minor costo per l’acquirente
e/o un margine superiore per il costruttore. La tecnologia NAND aumentava
inoltre di dieci volte il numero dei cicli di riprogrammazione consentiti,
incrementando di conseguenza la velocità dei processi.
Il mercato delle memorie a semiconduttore è oggi dominato dalle DRAM,
ma il settore delle NVM vede l’emergere delle memorie Flash, grazie alle
numerose applicazioni possibili. Esse sono utilizzate per la memorizzazione
di informazioni necessarie al funzionamento di un sistema elettronico, ad
esempio per il BIOS (Basic Input Output System, cioè tutto l’insieme di
istruzioni necessarie per l’inizializzazione di un sistema elettronico) dei PC e
di altri tipi di firmware riconfigurabili. Le memorie Flash sono utilizzate
in tutti i dispositivi portatili (oggi trainanti per il mercato consumer ).
Il forte interesse verso questo tipo di memorie deriva dal fatto che esse
rappresentano il miglior compromesso in termini di ritenzione, densità di
integrazione e tempi di accesso. Esse infatti garantiscono piccole dimensioni,
basso consumo di potenza e robustezza, in quanto non ci sono parti in
movimento, al contrario ad esempio che negli hard disk (Fig. 1.7(a)). Per
questi motivi le memorie Flash vengono utilizzate anche per la realizzazione
di dischi a stato solido (SSD, Solid State Disk, o, più correttamente, Solid
State Drive, (Fig. 1.7(b))). Un SSD è un dispositivo di memorizzazione di
massa basato esclusivamente su memoria a stato solido, e per questo non
necessita di parti meccaniche o magnetiche come negli hard disk tradizionali,
il che comporta notevoli vantaggi per la sicurezza dei dati. Altri vantaggi che
derivano dall’assenza di parti meccaniche sono:
• minore rumorosità;
• minor consumo di potenza;
• tempi di accesso ridotti (si ha una riduzione di un fattore 50);
• maggiore dissipazione di calore;
1.3 Memorie Non Volatili di Nuova Generazione
11
• peso e dimensioni più contenuti;
• maggiore resistenza agli urti;
• maggiore affidabilità.
Gli svantaggi degli SSD, invece, sono sostanzialmente due:
• un maggior costo per bit, che fa sı̀ che i dischi a stato solido abbiano un
costo circa trenta volte superiore rispetto a un omologo disco rigido;
• una possibile minore durata del disco, a causa del limitato numero
di riscritture consentite dalle memorie Flash; i dispositivi attuali
dichiarano un numero massimo di riscritture consecutive dello stesso
bit che va da 10.000 a 1.000.000 di cicli, a seconda del modello e degli
utilizzi ipotizzati; tuttavia all’interno dei dispositivi di archiviazione
sono inseriti, a livello hardware, particolari algoritmi che gestiscono
l’accesso alle celle di memoria prolungando notevolmente la vita del
dispositivo.
Entrambi i problemi sembrano però destinati a risolversi in futuro. Le
nuove tecnologie stanno portando a memorie Flash in grado di garantire
durata pari o superiore a quella di un disco rigido tradizionale; attualmente i
produttori dichiarano anzi 140 anni di vita con una riscrittura 50 GBal giorno
su un drive da 250 GB; il costo di questa tecnologia inoltre sta lentamente
scendendo, facendo presagire una futura sostituzione dei dischi tradizionali
con i dischi a stato solido.
Come si vede da Fig. 1.7(b), all’interno di un SSD sono presenti più chip
di memoria, al fine di ottenere una capacità di memorizzazione paragonabile
a quella dei moderni hard disk.
1.3
1.3.1
Memorie Non
Generazione
Volatili
di
Nuova
Limiti di Scalabilità della Tecnologia Flash
L’affidabilità delle memorie non-volatili a gate flottante è stata
ampiamente studiata sia in contesto industriale, sia a livello di enti di ricerca.
12
Memorie a Semiconduttore
(a)
(b)
Figura 1.7: Drive per la memorizzazione di massa: interno di un hard disk (a) e
di un Solid State Drive (b).
In particolare, è stato calcolato che lo spessore dell’ossido che circonda il
gate flottante non può essere ridotto al di sotto dei 10 nm per applicazioni
che richiedono un’affidabilità molto alta, in quanto un elevato numero di
cicli di programmazione/cancellazione può causare la formazione di cammini
di leakage nell’ossido di gate di una piccola frazione di celle. La presenza
di tali difetti provoca una perdita dell’intera carica immagazzinata sul
gate flottante, causando cosı̀ la perdita del dato memorizzato [6]. Nelle
memorie Flash di tipo NOR, le tensioni di programmazione non possono
essere ridotte al di sotto di un certo limite, in quanto il meccanismo
utilizzato per la programmazione (CHE) necessita dell’applicazione di
tensioni di drain di valore elevato. Per queste ragioni, neppure l’area
occupata dai transistori high voltage utilizzati dai circuiti periferici può
essere ridotta ulteriormente, limitando ulteriormente i vantaggi portati
dallo scaling down tecnologico. Nelle memorie Flash di tipo NAND la
scalabilità è limitata dall’accoppiamento capacitivo tra i gate flottanti di celle
adiacenti: programmando una cella, infatti, si va a modificare l’informazione
immagazzinata all’interno delle celle adiacenti. È in quest’ambito che nasce
un forte interesse da parte dell’industria nei confronti di tecnologie alternative
che utilizzino nuovi materiali e nuovi concetti per sostituire la tecnologia
Flash, al fine di avere uno scaling migliore, e di incrementare le prestazioni
della memoria stessa. Un totale di circa 30 tecnologie e variazioni tecnologiche
1.3 Memorie Non Volatili di Nuova Generazione
13
Gate di Controllo
Ossido
Nanocristalli
Source n+
Drain n+
Substrato p
Figura 1.8: Sezione laterale di una cella di memoria a nanocristalli.
[7], molte delle quali aspirano a rimpiazzare anche le DRAM, sono in
competizione per ritagliarsi una fetta del mercato delle NVM, caratterizzato
da una forte crescita. Ad ogni modo, una sopravvivenza a lungo termine è
assicurata soltanto alle tecnologie che riusciranno a trasformare la superiorità
tecnologica in una considerevole quota di mercato.
Ad essere considerate come un potenziale approccio evolutivo della
tecnologia Flash sono le memorie a nano-floating gate (o a nanocristalli)
[8, 9]. Le memorie a nanocristalli hanno una struttura simile alla cella di
memoria a gate flottante, e sono compatibili con il processo di fabbricazione
CMOS standard. In questa tecnologia, invece di iniettare carica in un gate
flottante, gli elettroni vengono intrappolati all’interno di nanocristalli di
silicio (silicon dots) che si comportano come dei nano-floating gate, com’è
mostrato in Fig. 1.8. Se si utilizzano silicon dots elettricamente isolati per
l’immagazzinamento di carica, viene ampiamente ridotta la perdita di carica
attraverso difetti localizzati eventualmente presenti all’interno dell’ossido.
Questa caratteristica può essere sfruttata per costruire delle strutture a
gate flottante con uno strato di ossido tunnel molto sottile. Un vantaggio
più importante è costituito dal fatto che l’affidabilità viene nettamente
migliorata, in quanto la formazione di un eventuale cammino di leakage
comporta la perdita della carica presente su un solo silicon dot, senza inficiare
gravemente il funzionamento dell’intera cella di memoria. È stata inoltre
dimostrata un’endurance di 106 cicli, che è di poco superiore a quella delle
memorie a gate flottante di tipo tradizionale. La tecnologia a nano-floating
gate è completamente compatibile con la tecnologia CMOS standard, ma
esistono ancora dubbi riguardo alla ritenzione del dato e alla scalabilità dei
nanocristalli.
14
Memorie a Semiconduttore
Al fine di allargare le quote di mercato, oltre ai nanocristalli, l’industria
delle memorie non volatili sta studiando nuovi materiali e concetti di
memorizzazione alternativi. Al fine di migliorare le prestazioni e la scalabilità
propri dei dispositivi a gate flottante, sono stati proposti, e sono tuttora in
fase di studio, concetti innovativi di memorie non volatili, il cui obiettivo
è quello di trovare una tecnologia in grado di combinare le caratteristiche
tipiche delle memorie Flash e quelle delle DRAM, quali alta velocità nelle
operazioni di lettura e programmazione, non volatilità, basso consumo di
potenza, endurance illimitata, e di garantire costi di produzione paragonabili
a quelli delle memorie Flash e delle DRAM.
1.3.2
Le Memorie FeRAM
Le memorie FeRAM (Ferroelectric RAM) costituiscono l’unica tecnologia
alternativa di NVM messa in commercio finora, nonostante i numerosi
problemi tecnologici riscontrati, legati soprattutto all’impiego di nuovi
materiali e alle tecnologie di fabbricazione, che ne limitano ancora la
diffusione. Al momento sono due le classi di materiali ferroelettrici utilizzati
per la realizzazione delle FeRAM: le strutture a perovskite e le strutture a
strati. Per quanto riguarda la prima categoria, il materiale più usato è la lega
PbTix Zr1−x O3 , detta anche PZT, mentre nel caso delle strutture a strati la
scelta ricade su una lega di stronzio, bismuto e tantalio, detta per semplicità
SBT. All’interno di un materiale ferroelettrico, la polarizzazione elettrica
può essere indotta mediante l’applicazione di un campo elettrico esterno. La
polarizzazione avviene tramite una deformazione del reticolo a forma cubica
al di sotto del punto di Curie, la temperatura oltre la quale il materiale
diventa paraelettrico. Per esempio, nei PZT l’atomo di Ti può essere spostato
dal campo elettrico in due posizioni stabili, le quali si trovano al di sopra e
al di sotto del piano su cui giacciono gli atomi di ossigeno all’interno della
struttura molecolare.
L’endurance, altresı̀ detta affaticamento elettrico (electric fatigue), è
un’importante caratteristica di affidabilità, ed è collegata al fatto che si ha
una diminuzione nella capacità della cella di effettuare la transizione da
uno stato di polarizzazione a quello opposto, dopo che questa è rimasta
programmata nel medesimo stato per lunghi periodi di tempo. Questo
effetto è collegato ad uno spostamento della polarizzazione all’interno del
ciclo di isteresi, ed è proporzionale al numero di cicli di commutazione
1.3 Memorie Non Volatili di Nuova Generazione
15
tra i due stati di programmazione. Ciononostante ci si aspetta di avere
un’endurance di circa 1012 cicli di scrittura (o di lettura, in quanto
quest’operazione risulta essere distruttiva, come si mostrerà in seguito), il
che è in linea con le specifiche della maggior parte delle applicazioni. Fino
ad oggi sono state proposte varie strutture di cella FeRAM, che prevedono
che il materiale ferroelettrico sia integrato in un elemento separato (un
condensatore ferroelettrico, Fig. 1.9), oppure all’interno dell’elemento di
selezione, e cioè all’interno di un transistore FET ferroelettrico (in questo
caso l’elemento di memoria e quello di selezione sono incorporati in un’unica
struttura). La prima struttura può essere utilizzata sia per la realizzazione di
celle con due transistori e due capacità (2T2C), sia di celle con un transistore
e una capacità (1T1C), mentre la seconda struttura è stata proposta con un
approccio a un solo transistore (1T). Tutte le architetture FeRAM presentano
tempi di accesso molto rapidi, e garantiscono un indirizzamento casuale
delle locazioni di memoria. Tra le architetture proposte, l’approccio 1T1C
presenta dimensioni della cella paragonabili a quella ottenibili dalle DRAM.
L’architetture 1T è la più promettente, in quanto è caratterizzata da una
dimensione delle celle molto piccola, e presenta un’endurance praticamente
senza limiti, ma il suo processo produttivo risulta essere molto complicato.
L’operazione di scrittura avviene attraverso l’applicazione di un impulso
di tensione ai capi della cella di memoria; il campo elettrico indotto agisce in
modo da spostare gli atomi di titanio, rispetto al piano definito dagli atomi
Figura 1.9: Struttura schematica di una cella FeRAM con approccio a
condensatore stacked.
16
Memorie a Semiconduttore
Figura 1.10: Differenti stati di programmazione all’interno della cella FeRAM.
di ossigeno, nella direzione del campo stesso (Fig. 1.10). La polarizzazione
elettrica di una cella FeRAM segue l’andamento di una curva di isteresi
e, una volta rimossa la tensione applicata ai suoi capi, la cella presenta
una polarizzazione residua, il cui segno dipende da quello della tensione
di programmazione. Per effettuare l’operazione di lettura si applica una
tensione di opportuno valore ai capi della cella: se la tensione applicata è tale
da non modificare l’orientazione della polarizzazione della cella, la corrente
che la attraversa sarà quella dovuta soltanto alla carica del condensatore
ferroelettrico; se, al contrario, tensione e polarizzazione residua hanno verso
opposto, la corrente che attraversa la cella risulterà essere maggiore, in
quanto si ha un ulteriore contributo dovuto all’inversione della polarizzazione.
L’operazione di lettura risulta quindi essere distruttiva (in pratica, si ha
infatti una sorta di scrittura della cella), ed è necessario, come nel caso
delle DRAM, riscrivere il dato memorizzato una volta effettuata la lettura
di una cella. La cella di memoria FeRAM è per molti aspetti simile a
quella DRAM; la differenza più rilevante sta nel fatto che nelle DRAM
non si utilizza un dielettrico ferroelettrico. Le FeRAM presentano inoltre
un importante vantaggio rispetto alle DRAM: nelle DRAM il condensatore
della cella si scarica molto velocemente a causa del leakage, ed è perciò
necessario riscrivere ciclicamente il dato mediante un’operazione di rinfresco;
nelle FeRAM, invece, la riscrittura del dato è necessaria solamente dopo
l’operazione di lettura, riducendo cosı̀ la potenza dissipata.
1.3 Memorie Non Volatili di Nuova Generazione
17
Figura 1.11: Domini ferromagnetici.
1.3.3
Le Memorie MRAM
Le memorie MRAM (Magnetoresistive RAM, RAM magnetoresistive)
sfruttano un’altra proprietà di alcuni materiale, la magnetoresistività. In
un materiale ferromagnetico tutti gli atomi si comportano come dei piccoli
magneti, e se vengono sottoposti ad un campo magnetico esterno tendano ad
allinearsi ad esso. Come nei materiali ferroelettrici, gli atomi si organizzano
all’interno di domini magnetici in cui tutti i magneti “puntano” nella stessa
direzione, formando un magnete di maggiori dimensioni (Fig. 1.11). Se si
applica un campo magnetico, tutti gli atomi dei vari domini di allineano con
questo; una volta rimosso il campo, essi rimangono bloccati nella medesima
direzione, e se successivamente viene applicato un campo con la stessa
direzione, ma verso opposto, anche la direzione di tutti i domini si inverte.
Questa proprietà fa sı̀ che i materiali ferromagnetici possano essere usati
come memoria.
Gli sforzi per lo sviluppo di questa tecnologia prevedono l’utilizzo di una
cella MTJ (Magnetic Tunnel Junction, giunzione a tunnel magnetico), il cui
schema è mostrato in Fig. 1.12. Queste giunzioni sono costituite da due
strati ferromagnetici separati uno strato sottile di materiale isolante. Per
spessori di qualche nanometro, l’isolante impedisce il passaggio di elettroni.
Nelle giunzioni a tunnel, lo spessore dell’ossido è minore di 2 nm, cosicché
18
Memorie a Semiconduttore
Figura 1.12: Schema di una giunzione MJT.
alcuni elettroni possono attraversarlo per tunnelling, e passare quindi da
uno strato ferromagnetico all’altro. In uno di questi due strati i dipoli
magnetici hanno un’orientazione fissa (fixed layer ), mentre nel secondo (free
layer ) questa può essere modificata attraverso l’applicazione di un campo
magnetico esterno. Ne risulta che i domini magnetici all’interno del free layer
possono essere o paralleli o antiparalleli a quelli dell’altro strato. Queste
due condizioni vengono sfruttate per la memorizzazione del dato. Infatti, se
i dipoli magnetici associati ai due strati di materiale ferromagnetico sono
allineati, la resistenza elettrica sarà bassa; se invece sono antiparalleli la
resistenza sarà alta (effetto magnetoresistivo).
La lettura avviene nel seguente modo: la cella viene selezionata attraverso
un apposito transistore di selezione, e successivamente, attraverso un
confronto con una cella di riferimento, si misura la resistenza elettrica della
giunzione.
La programmazione è effettuata forzando una corrente di valore
opportuno attraverso due piste (la bit-line e la digit-line, che si trovano
rispettivamente al di sopra e al di sotto della MTJ); la somma di queste
correnti genera un campo magnetico abbastanza intenso da modificare
polarità dei domini magnetici del free layer.
La lettura non distruttiva e tempi di accesso molto brevi sono le premesse
per il raggiungimento di prestazioni elevate, cicli di lettura e scrittura della
stessa durata, e un basso consumo di potenza. La struttura MTJ è inoltre
1.4 Le Memorie a Cambiamento di Fase
19
resistente alle radiazioni, e permette un’endurance virtualmente infinita,
rendendo le MRAM adatte ad applicazioni in cui si richieda un elevato
numero di cicli di lettura/scrittura. Il più grande svantaggio delle MRAM
consiste nel fatto che esse richiedono elevate correnti di programmazione:
mentre le correnti di lettura sono tali da garantire tempi d’accesso molto
rapidi, si richiedono correnti di scrittura molte elevate (dell’ordine del mA),
il che porta ad un aumento della potenza dissipata.
1.4
Le Memorie a Cambiamento di Fase
Le memorie a cambiamento di fase (Phase-Change Memories, PCMs)
sono una delle tecnologie più promettenti per sostituire le memorie Flash
sul mercato. Esse infatti garantiscono un’endurance elevata, tempi di
programmazione e di accesso rapidi, e promettono una buona scalabilità
dell’elemento di memoria. In questa tipologia di dispositivi il dato è
memorizzato sotto forma di resistenza elettrica di uno strato sottile di una
lega di materiale calcogenuro. Queste leghe sono costituite da elementi del VI
gruppo della tavola periodica (detti appunto calcogenuri), ed elementi del IV
e del V gruppo. Le proprietà di tali leghe sono state studiate da S. Ovshinsky
(ed è per questo motivo che le memorie a cambiamento di fase vengono
chiamate anche OUM, Ovonic Unified Memory) nella seconda metà degli
anni ’60 [10]. Le leghe calcogenure si possono allo stato solido presentare sia in
fase amorfa, sia in fase policristallina (più comunemente detta cristallina). Le
due fasi sono caratterizzate da differenti proprietà elettriche e ottiche: la fase
amorfa presenta alta resistività elettrica e bassa riflettività, viceversa quella
cristallina presenta una bassa resistività elettrica ed un’elevata riflettività.
Le proprietà ottiche sono da tempo sfruttate per la realizzazione di supporti
di memorizzazione ottici riscrivibili (CD e DVD) [11, 12]. In questo caso le
transizioni di fase vengono effettuate mediante un fascio laser di opportuna
potenza.
La transizione dalla fase cristallina a quella amorfa (e dualmente quella
dalla fase amorfa a quella cristallina) avviene in maniera completamente
reversibile e riproducibile, e può essere effettuata tramite l’applicazione
al materiale di opportuni profili termici, come mostrato in Fig. 1.13: per
effettuare la transizione da fase cristallina a fase amorfa, è necessario
riscaldare il materiale al di sopra del suo punto di fusione (T m ), e raffreddarlo
velocemente, in modo da non lasciare agli atomi il tempo di disporsi
20
Memorie a Semiconduttore
T
Impulso di Cristallizzazione
Tm
Impulso di Amorfizzazione
Tx
Ta
t
Figura 1.13: Profili termici da applicare al materiale calcogenuro per la
transizione di fase.
secondo una struttura ordinata; per effettuare la transizione opposta, invece,
la lega deve essere portata ad una temperatura intermedia tra quella di
cristallizzazione (T X , temperatura a cui il GST amorfo deve essere riscaldato
affinché cristallizzi in un dato periodo di tempo) e quella di fusione per
un tempo sufficiente affinché gli atomi si organizzino secondo un reticolo
cristallino.
L’utilizzo delle leghe calcogenure per la realizzazione di dispositivi di
memoria a stato solido è stato proposto per la prima volta nel 1972 da
Dewald, e in seguito da Neale e Aseltine nel 1973 [13]. Il grosso ostacolo, ormai
superato, che ha ritardato lo sviluppo di questa tecnologia è stato quello
di rendere compatibile la deposizione di strati sottili di leghe calcogenure
con il processo CMOS standard. Risolto questo problema, l’industria dei
semiconduttori ha cominciato a interessarsi allo sviluppo delle memorie a
cambiamento di fase, realizzando i primi prototipi [14, 15, 16, 17, 18].
1.4.1
Struttura della Cella di Memoria PCM
La cella di memoria PCM (Fig. 1.14) è costituita da un transistore e un
resistore programmabile (struttura 1T-1R). Il resistore è realizzato da uno
strato sottile di una lega calcogenura posto tra due elettrodi metallici. La lega
più utilizzata è Ge2 Sb2 Te5 , che viene detta per semplicità GST. Il transistore
1.4 Le Memorie a Cambiamento di Fase
21
Metallo
Metallo
GST Cristallino
GST Cristallino
Isolante
Isolante
Metallo
(a) Cella PCM nello stato di Set.
Riscaldatore
Isolante
Riscaldatore
GST
Amorfo
Isolante
Metallo
(b) Cella PCM nello stato di Reset.
Figura 1.14: Schema semplificato di una cella PCM e suoi stati di
programmazione.
all’interno della cella (per semplicità non mostrato in figura), ha la funzione
di selettore, e serve a selezionare la cella desiderata nella matrice di memoria.
A seconda che il GST sia completamente cristallino (Fig. 1.14(a), stato
di Set, ’1’ logico) o amorfo (Fig. 1.14(b), stato di Reset, ’0’ logico), la
resistenza può variare anche di qualche ordine di grandezza, da qualche kΩ
al MΩ. La programmazione avviene attraverso il riscaldamento della cella
per effetto Joule, ottenuto forzando una corrente attraverso la cella, oppure
applicando una tensione ai suoi capi. La potenza necessaria a effettuare le
operazioni di cambiamento di fase è fornita da un elettrodo riscaldatore posto
all’interno della cella. La regione della cella interessata dal cambiamento di
fase è quella che raggiunge la temperatura più alta durante le operazioni di
programmazione (per il GST, T m è di circa 620 ◦ C), e cioè l’interfaccia tra
il GST e il riscaldatore (regione attiva, active region).
1.4.2
Affidabilità della Cella
La transizione di fase tra GST cristallino e amorfo è veloce e stabile
[19, 20, 21]. In Fig. 1.15 è mostrato l’andamento della resistenza degli
stati di Set e Reset di una cella PCM in funzione del numero di cicli di
programmazione (ogni ciclo comprende un’operazione di Set e un’operazione
di Reset). Come si può notare, i due stati di programmazione sono separati
da una finestra di circa 102 Ω per un elevato numero di cicli (più di
1011 ), mostrando un’ottima endurance. Dopo 1011 − 1012 cicli, le celle
22
Memorie a Semiconduttore
Figura 1.15: Resistenza della cella degli stati di Set e di Reset in funzioni del
numero di cicli di Set/Reset.
PCM possono presentare dei fallimenti del tipo stuck -Set (la cella rimane
permanentemente nello stato a minima resistenza) o stuck -Reset (la cella
rimane permanentemente nello stato a massima resistenza). Il presentarsi
di entrambe le tipologie di fallimenti dipende dalla qualità dell’interfaccia
tra GST e riscaldatore, dall’adesione tra questo e il GST, e dal processo di
interdiffusione che si può verificare tra la lega calcogenura e i materiali con
cui questa è a contatto.
Un altro problema importante che deve essere preso in considerazione
è la ritenzione del dato memorizzato. Da questo punto di vista, ad essere
particolarmente critico è lo stato di Reset della cella: il GST amorfo, infatti,
tende spontaneamente a cristallizzare, in quanto la struttura cristallina
costituisce la struttura a minima energia. L’energia di attivazione del processo
di cristallizzazione è stata ottenuta sperimentalmente, e risulta essere pari a
2.6 eV, il che permette di garantire una ritenzione del dato memorizzato di
10 anni alla temperatura massima di 110 ◦ C.
Un ulteriore problema per quanto riguarda l’affidabilità della cella
è il cosiddetto disturbo di programmazione. Quando una cella viene
programmata all’interno della matrice di memoria, le celle adiacenti
possono essere anch’esse riscaldate (soprattutto durante l’operazione di
Reset, durante la quale si raggiungono temperature più alte), e il dato in
esse memorizzato potrebbe andare perso. Attraverso una caratterizzazione
sperimentale è stato dimostrato che non si verifica perdita del dato fino a
1.4 Le Memorie a Cambiamento di Fase
23
1010 cicli di programmazione. Simulazioni numeriche mostrano che questo
“cross-talk ” termico non dovrebbe essere un problema per dimensioni
litografiche superiori a 45 nm. Per tecnologie più spinte, sarà dunque
necessario aumentare la distanza tra celle adiacenti, oppure, meglio, adottare
dei metodi di isolamento termico più efficaci.
1.4.3
Prospettive di Scaling
Per quanto riguarda lo scaling, le memorie a cambiamento di
fase promettono una buona competitività [22]. Poiché il principio di
funzionamento di questa tecnologia si basa sul cambiamento di fase di una
piccola porzione di GST (regione attiva), si prevede che le dimensioni della
cella di memoria possano essere scalate fino a raggiungere dimensioni di
qualche nm2 . Questa proprietà è inoltre sfruttata per ridurre le correnti di
programmazione (in particolare quelle dell’operazione di Reset) e, quindi,
la potenza dissipata. Mediante l’utilizzo di un modello elettro-termico
semplificato, la potenza dissipata per effetto Joule in fase di programmazione
(supposta concentrata nella regione attiva del GST) è legata alla differenza
ΔT tra la temperatura di fusione Tm e la temperatura ambiente dalla
relazione P = ΔT /Rth , ove R th è la resistenza termica totale tra la regione
attiva e la massa termica. Poiché la potenza dissipata risulta pari a P = VH I,
dove V H è la tensione ai capi della cella (si veda a tale riguardo il capitolo
successivo), mentre I è la corrente di programmazione, quest’ultima può
essere riscritta come:
ΔT
.
(1.2)
VH Rth
Poiché ΔT e VH sono quantità che non scalano con le dimensioni, la
corrente di programmazione scala come l’inverso di Rth , e può dunque essere
ridotta minimizzando l’area di contatto tra il riscaldatore e il GST.
Il limite più grande allo scaling nelle memorie a cambiamento di fase è
dato dalla presenza del transistore di selezione. L’utilizzo di un MOSFET
porta ad avere dimensioni della cella di 15-20 F 2 (ove F è la feature size
della tecnologia). Risultati migliori si ottengono mediante l’utilizzo di un
transistore bipolare verticale (anche se questo comporta un aumento del
numero di passi del processo produttivo), che porta al raggiungimento di
dimensioni pari a 8-10 F 2 . L’adozione del selettore bipolare è quindi indicata
per la realizzazione di matrici di memoria ad alta densità.
I=
24
1.4.4
Memorie a Semiconduttore
Tipi di cella PCM
Nel corso degli anni sono state presentate diverse tipologie di cella PCM.
Una tale varietà di tipologie di cella è indice della competizione in atto tra
le aziende per la realizzazione di questa tecnologia di memorie non volatili.
I primi risultati sono stati presentati da Intel e Ovonyx nel 2001. La
struttura della cella è simile a quella riportata in Fig. 1.14, e prende il nome
di cella con lance heater. In questo caso l’elemento di selezione è un diodo. Il
GST è deposto al di sopra del riscaldatore, il quale definisce le dimensioni del
contatto inferiore. Poiché, come si è visto, tali dimensioni fissano la corrente
di programmazione, all’interno della matrice di memoria il controllo di queste
deve essere molto preciso. Il riscaldatore, generalmente in TiN, ha lo scopo di
incrementare la potenza sviluppata per effetto Joule, e mantiene la regione a
più alta temperatura lontano dal contatto metallico inferiore (massa termica).
L’approccio a cella lance è stato adottato anche da Samsung, la quale nel
2004 ha presentato un dispositivo PCM con matrice da 64 Mb con selettore
MOS. Mediante l’utilizzo di un processo CMP a due step, è stato raggiunto
un controllo migliore delle dimensioni del contatto (52 ± 7 nm), e si è
ottenuta un’ulteriore riduzione della corrente di programmazione limitando
la deposizione del TiN solo lungo la periferia del lance heater.
Una dimensione del contatto molto affidabile è stata raggiunta anche
da STMicroelectronics con la cella chiamata μtrench (Fig. 1.16)[18]. In
questo caso l’heater è più complesso rispetto al caso precedente, e in
particolare presenta una geometria a bicchiere. Tale geometria è stata
adottata per risolvere problemi tecnologici, come l’allineamento tra GST
e heater, che in questa architettura di cella risulta essere automatico,
migliorando notevolmente la resa del processo. Le dimensioni dell’area
di contatto tra GST e heater sono inoltre ridotte, in quanto questo ha
dimensioni sub-litografiche, il che riduce la corrente utilizzata in fase di
programmazione e, di conseguenza, la potenza dissipata.
Un’altra possibile geometria della cella è la cosiddetta struttura pore-like,
schematizzata in Fig. 1.17. In questo caso il GST è deposto all’interno di un
foro nel materiale isolante, e di conseguenza la regione attiva è ben confinata
all’interno di questo. È stato inoltre dimostrato che questo approccio è in
grado di dimezzare la corrente di programmazione rispetto al caso della
struttura a lance.
Il resistore PCM può essere anche realizzato orizzontalmente. In Fig. 1.18
1.4 Le Memorie a Cambiamento di Fase
25
Figura 1.16: Cella μtrench: vista dall’alto e sezioni laterali.
è mostrata una fotografia al SEM (Scanning Electron Microscope, microscopio
a scansione elettronica) di una cella con geometria planare. Tale cella è
costituita da uno strato di GST in cui è realizzata una strozzatura, all’interno
della quale avviene la transizione di fase. Il grosso vantaggio che caratterizza
questo tipo di cella risiede nel fatto che, a causa della semplicità della
geometria, il numero di passi di litografici aggiuntivi rispetto ad un processo
CMOS standard è ridotto rispetto al caso delle altre tipologie di cella. A
causa della struttura planare della cella, però, l’area occupata risulta essere
maggiore rispetto ai casi trattati in precedenza, e questa architettura risulta
quindi svantaggiosa dal punto di vista del costo di produzione.
26
Memorie a Semiconduttore
Figura 1.17: Schema di cella PCM di tipo pore-like.
Figura 1.18: Cella PCM planare.
1.5
Organizzazione di
Semiconduttore
una
Memoria
a
Le memorie a semiconduttore sono organizzate secondo una struttura a
matrice con M righe e N colonne, in cui ogni cella è univocamente individuata
dai numeri della riga e della colonna a cui appartiene.
Per effettuare l’indirizzamento di una cella, ai fini della lettura o della
scrittura, è necessario conoscere la locazione in memoria dell’elemento che si
vuole leggere o scrivere. Tale locazione può essere individuata a partire da
un indirizzo attraverso due circuiti, che prendono il nome di decodificatore
1.5 Organizzazione di una Memoria a Semiconduttore
27
Sense Amplifier
Decodificatore di riga
2m righe
parola
1
2
m
2n colonne
1
2
n
Decodificatore di colonna
(a) Indirizzamento di una cella di memoria in fase
di lettura.
Decodificatore di riga
2m righe
parola
1
2
cella
m
2n colonne
1
2
n
Decodificatore di colonna
(b) Indirizzamento di una cella di memoria in fase di
programmazione.
Figura 1.19: Indirizzamento di un elemento di memoria.
di riga e decodificatore di colonna.
I decodificatori di riga e di colonna hanno l’importante compito di
selezionare un gruppo di celle (cioè una parola), all’interno della matrice.
Sia la programmazione, sia la lettura prevedono che venga indirizzata una
parola alla volta (Fig. 1.19(a)). Durante la programmazione è prevista una
selettività a livello di singola cella (vi è la possibilità, cioè, di programmare
ogni cella in modo diverso, 1.19(b)).
28
1.6
Memorie a Semiconduttore
Operazioni sulla Cella di Memoria PCM
Come è stato accennato nel paragrafo 1.4, in una cella di memoria PCM
il dato viene memorizzato sotto forma di resistenza elettrica di uno strato
sottile di GST. In questo paragrafo verrà presentata in modo qualitativo
la caratteristica corrente-tensione di una cella PCM (per una trattazione
più accurata si rimanda al Capitolo 2), e verranno brevemente descritte le
operazioni di programmazione e lettura del dato memorizzato.
1.6.1
Caratteristica I-V della Cella
La caratteristica I-V della cella PCM descrive quanta corrente attraversa
una cella in funzione della tensione applicata ai suoi capi. È possibile
ottenere tale caratteristica attraverso due modalità, cioè in regime continuo
oppure in regime impulsato. La prima modalità è utilizzata per ottenere la
caratteristica della cella per basso campo, cioè per bassi valori di tensione
applicata, mentre con la seconda si ottiene quella per alto campo, in quanto
le tensioni applicate sono di ampiezza maggiore, anche se di durata molto
inferiore. Per quanto riguarda la misura in regime impulsato, dopo aver
misurato la corrente che attraversa la cella durante un dato impulso di
tensione, la cella di memoria è riportata nello stato iniziale (Set o Reset),
in quanto l’impulso applicato ne modifica lo stato di programmazione.
Quest’operazione non è necessaria per le misure in regime continuo, in quanto
le tensioni applicate alla cella sono troppo basse per modificare la fase del
GST.
In Fig. 1.20 è mostrata la caratteristica corrente-tensione della cella PCM.
Come si può notare, la caratteristica dipende dallo stato (cristallino o amorfo)
in cui la cella si trova inizialmente. Partendo da una cella nello stato di
Reset, si possono individuare due zone di funzionamento: la prima, per bassi
valori di tensione applicata, è detta zona di OFF (il nome deriva dal fatto
che la corrente che attraversa la cella è trascurabile, e la cella si comporta
sostanzialmente come un interruttore spento); la seconda, per alti valori di
tensione applicata, è detta zona di ON, ed è caratterizzata da un basso valore
di resistenza elettrica. La transizione dalla zona di OFF a quella di ON
avviene per un determinato valore di tensione, detto tensione di soglia, V th :
al superamento di questa tensione si ha infatti il verificarsi di un fenomeno
chiamato threshold switching, di cui si parlerà in maniera più estesa nel
1.6 Operazioni sulla Cella di Memoria PCM
29
1200
Programmazione
1000
Reset
Corrente [µA]
800
600
ON
Set
400
Lettura
200
OFF
Vth
fase amorfa
fase cristallina
0
0.0
0.5
1.0
Tensione [V]
1.5
2.0
Figura 1.20: Caratteristica I-V di una cella PCM a partire dallo stato di Set e
di Reset.
prossimo capitolo. Nello stato di ON, la pendenza della caratteristica, che
rappresenta la conduttanza differenziale della cella, può essere considerata
costante, ed è pari alla conduttanza degli elementi posti in serie alla cella,
come ad esempio l’heater e i contatti metallici. La transizione da ON a OFF,
invece, avviene quando la tensione ai capi della cella diminuisce al di sotto
della tensione di mantenimento V h .
Se la cella si trova inizialmente nello stato di Set, invece, non si
riscontrano due zone distinte di funzionamento, ma si osserva solamente una
variazione della pendenza della curva, corrispondente ad una variazione della
conduttanza differenziale della cella: nel primo tratto la pendenza è costante
(la cella segue cioè la legge di Ohm), dopodiché si ha un incremento della
pendenza, finché la curva non va sostanzialmente a coincidere con quella
ottenuta partendo dallo stato di Reset.
1.6.2
Programmazione di una Cella PCM
Come è stato accennato precedentemente, le operazioni di
programmazione nelle memorie a cambiamento di fase vengono effettuare
attraverso l’applicazione alla cella di opportuni impulsi di tensione o di
corrente. Siccome la transizione di fase dipende dalla temperatura raggiunta
30
Memorie a Semiconduttore
dalla regione attiva della cella a causa di un riscaldamento per effetto
Joule, sono l’ampiezza e la durata dell’impulso applicato a determinare
la transizione stessa. In Fig. 1.20 è evidenziata la regione in cui avviene
la programmazione; in particolare si può vedere che questa corrisponde
al tratto in cui le due curve hanno la stessa pendenza, che corrisponde
alla conduttanza dell’heater. In figura sono inoltre rappresentate le zone
interessate dall’operazione di Set (cristallizzazione) e Reset (amorfizzazione).
Per portare la cella nello stato di Reset, è necessario che la potenza sviluppata
nella regione attiva sia tale da riscaldare il materiale oltre il suo punto
di fusione (T m ). Affinché ciò avvenga è necessario applicare alla cella un
impulso di tensione (o corrente) di valore elevato. Un impulso di questo
tipo determina la fusione del GST nei pressi del riscaldatore; se il tempo
di discesa di tale impulso è sufficientemente breve (le costanti di tempo
elettriche sono maggiori di quelle termiche, per cui il profilo termico segue
l’andamento dell’impulso elettrico applicato), tale porzione di materiale
verrà a trovarsi nella fase amorfa una volta tornata allo stato solido.
Gli impulsi di Set, invece, sono caratterizzati da un’ampiezza inferiore
rispetto a quelli di Reset, in quanto la cristallizzazione non richiede che il
GST venga fuso. La cristallizzazione del GST amorfo, infatti, avviene anche
a temperatura ambiente (caratteristica che è responsabile dei problemi di
ritenzione del dato memorizzato). L’applicazione alla cella di temperature
dell’ordine delle centinaia di ◦ C durante l’operazione di Set ha lo scopo di
fornire una grande quantità di energia alla cella, e accelerare cosı̀ il processo di
cristallizzazione, al fine di raggiungere tempi di programmazione dell’ordine
del centinaio di ns.
1.6.3
Lettura di una Cella PCM
La lettura è l’operazione che permette di rivelare il dato memorizzato in
una cella di memoria. Esistono due differenti tipi di approccio alla lettura:
accesso casuale (random access) e accesso seriale (serial access). Il primo
consente l’individuazione del dato da leggere attraverso un indirizzo che
permette di raggiungerlo direttamente, mentre il secondo prevede che il
blocco di dati venga raggiunto sequenzialmente, andando cioè a “scorrere”
tutta la memoria fino al raggiungimento dell’indirizzo desiderato. Le memorie
a cambiamento di fase, come del resto tutti gli altri tipi di memorie a
semiconduttore, utilizzano il primo approccio.
1.6 Operazioni sulla Cella di Memoria PCM
31
Bit-line j-1 Bit-line j Bit-line j+1
Word-line i-1
\
Cella di
Memoria
Word-line i
Word-line i+1
Figura 1.21: Schema di una porzione di matrice di memoria a cambiamento di
fase.
L’architettura utilizzata correntemente nelle matrici PCM è mostrata
in Fig. 1.21. Come si può vedere, uno dei due terminali della cella è
collegato al drain di un transistore di selezione (in questo caso un transistore
MOS a canale n), il cui source è collegato a massa. Il selettore svolge la
funzione di interruttore, e il suo gate viene pertanto collegato alla tensione
di alimentazione nel caso in cui la riga (word-line) a cui appartiene la cella
sia selezionata dal decodificatore di riga, e a massa nel caso opposto. Le celle
appartenenti alla stessa colonna sono collegate alla stessa linea (bit-line).
In una memoria PCM l’operazione di lettura di una cella consiste quindi
nella misura della sua resistenza. Per fare ciò è necessario polarizzare la cella
con una tensione (corrente) opportuna, e misurare la corrente che l’attraversa
(la tensione che si sviluppa ai suoi capi).
Al fine di non modificare l’informazione contenuta nella cella, l’energia
fornita a questa durante l’operazione di lettura deve essere sufficientemente
bassa da non innescare i meccanismi di cambiamento di fase. La lettura
può risultare particolarmente critica se la cella si trova nello stato di
Reset. L’energia fornita dall’impulso di lettura, infatti, potrebbe accelerare
il meccanismo di cristallizzazione del GST amorfo, e causare dunque una
32
Memorie a Semiconduttore
perdita del dato memorizzato, soprattutto nel caso in cui vengano effettuate
più letture consecutive. Per non incorrere in questo problema è necessario
che la tensione ai capi della cella durante la lettura sia molto inferiore della
tensione di soglia V th , come è indicato in Fig. 1.20, in modo da garantire che
la massima temperatura raggiunta nella regione attiva sia contenuta.
Le condizioni di lettura più comuni per le memorie a cambiamento di
fase prevedono l’applicazione di una tensione di lettura ai capi della cella,
attraverso la polarizzazione della bit-line selezionata, e nella misura della
corrente che scorre attraverso essa (definita comunemente corrente di lettura).
Se la cella desiderata si trova nello stato di Set, la corrente che l’attraversa
sarà alta, viceversa se si trova nello stato di Reset la corrente letta sarà
trascurabile. Il circuito che si occupa di distinguere l’ampiezza della corrente
che scorre nella cella mediante il confronto con una corrente di riferimento
prende il nome di Sense Amplifier.
1.7
La Memorizazione Multilivello
La densità di dati immagazzinabili (numero di bit per unità di area) e
il costo del singolo bit sono fattori guida essenziali per lo sviluppo di ogni
tipo di dispositivo di memoria, e le memorie a cambiamento di fase non
costituiscono un’eccezione in questo senso.
Poiché entrambi i fattori dipendono strettamente dalle dimensioni fisiche
delle celle di memoria, risulta evidente come lo scaling down tecnologico
contribuisca a ridurre i costi di produzione delle memorie a semiconduttore.
Il concetto di memorizzazione multivello (Multi-Level Cell, MLC) è nato
allo scopo di aumentare il numero di bit immagazzinati all’interno della
singola cella di memoria, a parità di generazione tecnologica. Nel caso della
memorizzazione bilivello (quella descritta finora) le celle possono avere solo
due valori di resistenza (uno ad alta ed uno a bassa resistenza), e durante la
lettura è sufficiente verificare se la cella selezionata è conduttiva o meno.
La resistenza R cell di una cella di memoria PCM dipende in maniera
analogica dalla quantità di GST amorfo presente nella regione attiva; perciò
è possibile affermare che R cell e, di conseguenza, la corrente di lettura I cell,
possono variare in un ampio intervallo di valori andando semplicemente a
modificare la frazione di GST amorfo all’interno della cella. Perciò, se la
circuiteria è in grado di distinguere differenze ΔI cell nella corrente di celle
1.7 La Memorizazione Multilivello
33
programmate in maniera differente, in ogni cella è possibile immagazzinare
un numero n di bit pari a
n = log2
Imax − Imin
+1
ΔIcell
(1.3)
dove I max e I min rappresentano rispettivamente il valore massimo e quello
minimo della corrente della cella nel caso più conduttivo e in quello meno
conduttivo. Se per assurdo esistesse un circuito in grado di distinguere
ΔI cell infinitesime, in condizioni ideali (possibilità di ottenere distribuzioni
di larghezza infinitesima, assenza dei fennomeni di cristallizzazione del GST
amorfo e drift della resistenza della fase amorfa), all’interno di una sola cella
sarebbe possibile immagazzinare un numero infinito di bit (a patto di poter
programmare la cella con la stessa accuratezza). La risoluzione in lettura
è quindi funzione del minimo ΔI cell distinguibile, cioè della precisione del
Sense Amplifier, e la precisione della corrente della cella è legata all’efficienza
delle tecniche di programmazione utilizzate, che saranno oggetto del presente
lavoro di tesi.
L’approccio multilivello offre dunque un costo per bit equivalente a
quello delle future generazioni di tecnologie di produzione utilizzando quella
presente, e porta quindi ad un’accelerazione nella diminuzione di tale costo.
A causa degli spread di processo, all’interno di una matrice le celle di
memoria non saranno caratterizzate dai medesimi parametri elettrici, come
ad esempio la resistenza del riscaldatore. Questo problema, assieme ad altri
che verranno chiariti successivamente in questo lavoro di tesi, è responsabile
di un’imprecisione nel valore di resistenza ottenuto dopo la programmazione.
A seguito della lettura di una porzione di matrice programmata nel medesimo
stato, il valore di resistenza letto per le varie celle presenta pertanto una
certa dispersione. In Fig. 1.22(a) è mostrato l’andamento qualitativo delle
distribuzioni di R cell ottenute mediante una programmazione a singolo bit per
cella. Nel caso della programmazione bilivello, dato che occore distinguere
solamente tra due livelli di resistenza, non è richiesta una particolare
accuratezza né in fase di programmazione, né in fase di lettura. Nel caso
di una programmazione a due bit per cella, invece, l’accuratezza richiesta
è maggiore: la dispersione della singola distribuzione deve infatti essere
minore, in quanto non ci deve essere una sovrapposizione tra due distribuzioni
34
Memorie a Semiconduttore
# di celle
“1”
“0”
Icell
0
(a) Distribuzione delle resistenze di celle PCM
nel caso memorizzazione bilivello.
# di celle
“00”
0
“01”
“10”
“11”
Icell
(b) Distribuzione delle resistenze di celle PCM
nel caso memorizzazione a quattro livelli.
Figura 1.22: Distribuzioni ottenute programmando una matrice di memoria.
adiacenti, e il margine tra queste deve inoltre essere massimizzato in modo
da ridurre i tempi necessari ad effettuare la lettura (Fig. 1.22(b)).
1.8
Confronto tra le Tecnologie Emergenti
Nella Tabella 1.1 sono riassunte le caratteristiche più importanti delle
memorie non volatili di nuova generazione (MRAM, FeRAM e PCM) [14,
23]: come si può notare, le memorie a cambiamento di fase posseggono le
caratteristiche più vantaggiose, sia per quanto riguarda la velocità di scrittura
e quella di programmazione, sia per la potenza dissipata e i costi.
In Tabella 1.2 vengono riportate le previsioni riguardanti alcuni parametri
per le tecnologie Flash, FeRAM, MRAM e PCM per i prossimi anni,
pubblicate nel 2007 dall’ITRS (International Technology Roadmap for
Semiconductors).
1.8 Confronto tra le Tecnologie Emergenti
Tecnologia
FeRAM
Lettura
Distruttiva
Energia
di
Media
Programmazione
Tempi
di
50 ns
Programmazione
Tempi
di
50
Lettura (ns)
Costo Relativo
Alto
per Bit
35
MRAM
Non Distruttiva
Media
PCM
Non Distruttiva
Bassa
30 ns
< 500 ns
30
20
Medio-Alto
Basso
Tabella 1.1: Confronto tra le tecnologie emergenti.
Anno di produzione
Flash (NOR)
Nodo tecnologico - F (nm)
Area della cella - (F2 )
Endurance
Ritenzione del dato (anni)
FeRAM
Nodo tecnologico - F (nm)
Area della cella - (F2 )
Endurance
Ritenzione del dato (anni)
MRAM
Nodo tecnologico - F (nm)
Area della cella - (F2 )
Endurance
Ritenzione del dato (anni)
PCM
Nodo tecnologico - F (nm)
Area della cella - (F2 )
Numero di bit per cella
Endurance
Ritenzione del dato (anni)
2007
2010
2013
65
9-11
105
10
45
9-11
106
10
32
9-11
106
10
180
22
1014
10-20
130
20
1014
10-20
90
16
1015
20
90
20
> 3 · 1016
10
45
20
> 3 · 1016
10
32
19
> 3 · 1016
10
72
4.8
1
108
> 10
40
4
2
1010
> 10
28
4
4
1012
> 10
Tabella 1.2: Roadmap a medio termine.
36
Memorie a Semiconduttore
Capitolo
2
Caratteristiche delle Leghe
Calcogenure
Nel precedente capitolo è stata presentata una panoramica sulle tecnologie
di memorizzazione emergenti, ponendo particolare attenzione alle memorie a
cambiamento di fase, che sono oggetto del presente lavoro di tesi. I materiali
utilizzati per la realizzazione di questo tipo di memoria a semiconduttore
sono lega di elementi del VI gruppo (detti calcogeni) ed elementi del IV
e V gruppo della tavola periodica. La lega più utilizzata è composta da
germanio, antimonio e tellurio in composizione stechiometrica Ge2 Sb2 Te5 , ed
è comunemente chiamata GST. Come si può vedere dalla Fig. 2.1, esistono
anche altre composizioni stechiometriche di materiali calcogenuri utilizzate
come memorie, in particolare per la realizzazione di supporti di tipo ottico
(DVD riscrivibili).
La fase cristallina e quella amorfa del GST presentano differenze a
livello microscopico per quanto riguarda la struttura fisica. Esistono inoltre
differenze anche nei diagrammi a bande energetiche delle due fasi, che
determinano un comportamento diverso a livello macroscopico. Tali differenze
si manifestano nelle proprietà termiche, elettriche e ottiche delle due fasi. In
questo capitolo verranno illustrate tali proprietà, analizzando la struttura
atomica e i diagrammi a bande delle due fasi, al fine di comprendere al
meglio le caratteristiche del GST. Verranno inoltre analizzati i meccanismi
che determinano le transizioni di fase, con particolare attenzione nei confronti
del fenomeno del threshold switching, a cui si è accennato nel Capitolo 1.
38
Caratteristiche delle Leghe Calcogenure
Ge or M (at%)
0 100
10
90
20
GST (GeSbTe)
80
70 Doped SbTe
30
40
DVD-RAM
60
50
DVD+RW
50
60
40
Ge2Sb2Te5
70
30
80
20
90
100
0
Te (at%)
10
10
20
30
40
50
60
70
80
0
90 100
Sb (at%)
Figura 2.1: Composizione delle leghe calcogenure più utilizzate.
2.1
Il GST Cristallino
Il GST cristallino è caratterizzato da una struttura microscopica ordinata,
in cui cioè gli atomi di Ge, Sb e Te si dispongono secondo un reticolo
periodico. Tale reticolo deriva dalla ripetizione nello spazio tridimensionale di
una cella elementare, che può presentarsi in due possibili strutture [24, 25]:
una struttura esagonale (hex), che risulta essere stabile, ed una cubica a
facce centrate (FCC), che invece è metastabile. Poiché tra le due fasi è quella
metastabile a cristallizzare più velocemente, dopo un’operazione di Set, che
è molto rapida, il GST assumerà sempre la struttura FCC, la cui struttura
reticolare è mostrata in Fig. 2.2. Il GST, inoltre, cristallizza nella struttura
FCC per temperature inferiori a 300 ◦ C, e nella fase esagonale, caratterizzata
da un’energia inferiore, a temperature superiori [26], com’è mostrato in Fig.
2.3.
La struttura FCC è simile a quella del comune sale da cucina (cloruro di
sodio, NaCl), in cui al posto del cloro si trova il tellurio, mentre al posto del
sodio possono trovarsi il germanio oppure l’antimonio. Gli atomi di tellurio
di trovano in configurazione esavalente, e sono in grado cioè di formare sei
legami. In alcuni casi, però, si possono verificare dei difetti di tipo punto,
dovuti al fatto che un sito attorno all’atomo di tellurio non viene occupato
a causa della mancanza di un atomo di antimonio o germanio, e l’atomo
di tellurio realizza soltanto cinque legami. Tali difetti prendono il nome di
vacanze, e interessano circa il 20% degli atomi di tellurio complessivi, dando
luogo a stati trappola di tipo accettore per gli elettroni.
2.1 Il GST Cristallino
39
Te
Vacanza
Ge
Sb
Figura 2.2: Struttura atomica del GST nella fase cristallina FCC.
108
Amorfo
Resistività (μΩ cm)
107
106
Cristallino con
Struttura FCC
Cristallino con
Struttura Esagonale
105
104
103
102
0
100
200
300
Temperatura (°C)
400
Figura 2.3: Resistività del GST in funzione della temperatura.
Per quanto riguarda il diagramma a bande del GST cristallino con
struttura hex, è stato dimostrato che questo si comporta come un
semiconduttore di tipo p. Il livello di Fermi, a causa della presenza degli
stati trappola di tipo accettore, non si trova al centro del gap tra banda
di conduzione e banda di valenza, ma è molto vicino a quest’ultima. In
particolare, esso è posto tra questa e gli stati trappola, com’è mostrato in
Fig. 2.4. La distanza tra gli stati trappola e la banda di valenza risulta essere
pari a 0.1 eV, mentre il gap energetico è di 0.5 eV [27]. Se si impone una
40
Caratteristiche delle Leghe Calcogenure
E
Stati Trappola di
Tipo Accettore
EC
EV
EF
Figura 2.4: Diagramma a bande del GST cristallino. E F indica il livello di Fermi,
mentre E C e E V indicano rispettivamente i bordi della banda di conduzione e della
banda di valenza.
condizione di neutralità tra le cariche positive presenti nella banda di valenza
e quelle negative contenute nella banda di conduzione e nelle vacanze, si
può calcolare che la distanza tra il livello di Fermi e la banda di valenza
è di soli 20 meV. Valutazioni sperimentali hanno dimostrato che il valore
dell’energia di attivazione della fase cristallina è proprio di 20 meV, il che
implica che il valore della resistenza relativa sia praticamente indipendente
dalla temperatura.
Come si può notare dalla Fig. 2.3, la conducibilità elettrica della struttura
hex è molto superiore rispetto a quella della struttura FCC: ciò è dovuto al
fatto che nel primo caso si ha una mobilità dei portatori maggiore del 30%
rispetto al secondo.
Dal punto di vista termico, inoltre, il GST cristallino presenta
caratteristiche qualitativamente simili a quelle elettriche [28]. La
conducibilità termica, infatti, presenta variazioni brusche in prossimità della
transizione tra la fase FCC e quella hex (Fig. 2.5), come avviene nel caso della
conducibilità elettrica. La variazione della conducibilità elettrica, invece, è di
entità superiore, e risulta pari ad un ordine di grandezza.
2.2 Il GST Amorfo
41
Figura 2.5: Conducibilità del GST in funzione della temperatura.
2.2
Il GST Amorfo
Il GST in fase amorfa, come i solidi amorfi in generale, possiede una
struttura microscopica disordinata. La differenza sostanziale rispetto al GST
cristallino non riguarda la disposizione spaziale degli atomi a corto raggio,
che risulta molto simile per le due fasi, ma l’assenza di un ordinamento a
lungo raggio (Fig. 2.6). In altre parole, non esiste una periodicità su distanze
grandi rispetto a quella interatomica. Nel GST amorfo, ad essere differente
è il numero di coordinazione del tellurio, che da sei passa a due. In questo
caso il tellurio privilegia i legami con i due atomi simili adiacenti, a scapito
di quello con i restanti quattro di specie differenti. Si avranno pertanto
catene Te–Te, in cui il tellurio utilizza soltanto due dei quattro elettroni
più energetici per la formazione di legami, mentre gli altri due vengono
lasciati su un livello non-legante. Questi ultimi costituiscono i cosiddetti lone
pairs, che determinano le proprietà tipiche della fase amorfa. La condizione
bivalente neutra per un atomo di calcogenuro si indica con C02 , dove C indica
il calcogenuro (il tellurio in questo caso), 2 indica la valenza, mentre 0 indica
il fatto che la configurazione è neutra.
In Fig. 2.7 è rappresentato il diagramma a bande del GST amorfo. La
possibilità di rappresentare il GST amorfo tramite diagramma a bande
è dovuta al fatto che anch’esso si comporta come un semiconduttore di
42
Caratteristiche delle Leghe Calcogenure
Figura 2.6: Struttura atomica del GST nella fase amorfa.
tipo p. Oltre alla banda di valenza e a quella di conduzione, è presente
anche una terza banda, formata dai lone pairs. Tale banda è caratterizzata
da stati localizzati, ed è quindi popolata da cariche a mobilità pressoché
nulla. È dunque possibile definire un gap di mobilità, un intervallo cioè
in cui i portatori sono caratterizzati da una bassa mobilità. L’ampiezza
di tale gap risulta essere pari a 0.7 eV. Misure di assorbimento ottico
hanno invece permesso di determinare il gap energetico, zona in cui non
è presente alcun tipo di stato elettronico, che risulta essere di 0.5 eV. Di
conseguenza gli stati localizzati occupano 0.2 eV in prossimità della banda
di valenza. Gli stati trappola, invece, corrispondono a difetti reticolari dotati
di carica. Difetti strutturali lungo le catene Te–Te danno origine ad un’alta
−
densità di coppie di difetti di tipo donore/accettore (C+
3 –C1 ). Queste coppie
di difetti, chiamate VAP (Valence Alternation Pair ) [29], costituiscono la
configurazione a minore energia a cui tendono tutte le altre tipologie di
difetto dotate di carica presenti nel GST amorfo. La formazione di questi
difetti può essere descritta attraverso la reazione 2C20 → C3+ + C1− , dove
−
17
e 1020 cm−3 . Come si vedrà in
C+
3 e C1 hanno una concentrazione tra 10
seguito, alla presenza di VAPs è strettamente legato il fenomeno del threshold
switching.
Per quanto riguarda le caratteristiche elettriche del GST amorfo, per bassi
campi applicati questo presenta un valore di resistività elettrica piuttosto
elevato, tra i tre e i quattro ordini di grandezza superiore a quello del
GST cristallino (si veda Fig. 2.3). La resistività del GST amorfo diminuisce
all’aumentare della temperatura, cosı̀ come avviene nei semiconduttori
2.3 Il Fenomeno del Threshold Switching
43
E
Stati Trappola di
Tipo Donore (C3+)
EC
EF
EV
Stati Trappola di
Tipo Accettore (C-1)
Lone Pairs (C02)
Figura 2.7: Diagramma a bande del GST amorfo.
cristallini intrinseci. Ciò è dovuto al fatto che il numero di portatori liberi
aumenta all’aumentare della temperatura secondo la legge dell’azione di
massa
p · n = Nc · Nv · e−EG /(kB · T )
(2.1)
dove E G è il gap energetico tra banda di valenza e banda di conduzione,
N c e N v sono quantità legate alla densità degli stati permessi ai bordi della
banda di valenza e della banda di conduzione, n e p sono rispettivamente la
concentrazione di elettroni liberi e quella di lacune, T indica la temperatura
assoluta, e k B è la costante di Boltzmann. Come verrà chiarito nel paragrafo
successivo, per elevati valori di tensione applicata il valore della resistività
decresce, a causa del fenomeno del threshold switching. I valori numerici dei
parametri che determinano il diagramma a bande energetiche del GST amorfo
e del GST cristallino, sono per semplicità riassunti nella Tabella 2.1.
2.3
Il Fenomeno del Threshold Switching
La ricerca nel campo delle proprietà elettroniche delle leghe calcogenure
amorfe ha mosso i primi passi sul finire degli anni ’50 con i lavori di
Ovshinsky, che si occupò di studiare le proprietà chimiche e metallurgiche
dei semiconduttori amorfi, arrivando a scoprire due tipologie di switching
44
Caratteristiche delle Leghe Calcogenure
Parametro
EG [EV]
Nc [cm−3 ]
Nn [cm−3 ]
Vacanze [cm−3 ]
C02 [cm−3 ]
−3
C+
3 [cm ]
−3
C−
1 [cm ]
GST cristallino
0.5
2.5 ×1019
2.5 × 1019
5 × 1020
-
GST amorfo
0.7
2.5 ×1019
1020
1021
1017 ÷ 1020
1017 ÷ 1020
Tabella 2.1: Valori dei parametri che descrivono la struttura a bande del GST.
reversibile. Il primo, chiamato threshold switching, consiste nel passaggio
di un semiconduttore amorfo da uno stato altamente resistivo ad uno
conduttivo, ed è una transizione pilotata dal campo elettrico applicato al
materiale. Una volta che la resistività è crollata, in svariati semiconduttori
amorfi si può verificare una seconda trasformazione, nota come memory
switching. Questo meccanismo consiste nella transizione dalla fase amorfa
alla fase cristallina del materiale, ad opera di un riscaldamento per effetto
Joule dovuto al passaggio di corrente.
A partire da questi lavori, la ricerca si è occupata dello studio di
entrambi i fenomeni, al fine di sfruttarli in applicazioni come la xerografia
o la realizzazione di memorie. Per quanto riguarda quest’ultimo filone, il
fenomeno del memory switching nella leghe calcogenure, e in particolare nel
GST, è stato sfruttato per la realizzazione di DVD riscrivibili. In queste
applicazioni, un impulso laser è utilizzato per per effettuare il cambiamento
di fase di una piccola area di GST. La differenza di riflettività tra le due fasi
rende possibile la lettura del dato memorizzato.
Poiché al cambiamento di fase del GST, come si è visto nei paragrafi
precedenti, è associata una forte variazione della resistività elettrica,
lo stesso materiale è stato studiato per la realizzazione di memorie a
semiconduttore. In questo caso i meccanismi di cambiamento di fase sono
indotti elettricamente, e il dato memorizzato (“0” o “1” logico) corrisponde
ad un valore di resistività alto o basso. Poiché il mantenimento dei due stati
resistivi non richiede che venga fornita energia all’elemento di memoria, il
GST può essere utilizzato per la realizzazione di memorie non volatili.
Al fine di comprendere meglio il fenomeno del threshold switching nelle
memorie a cambiamento di fase, è utile analizzare di nuovo la caratteristica
2.3 Il Fenomeno del Threshold Switching
45
I-V della cella PCM, già esposta nel precedente capitolo. Come si può
vedere dalla Fig. 2.8, per basse tensioni applicate il GST cristallino presenta
un comportamento quasi ohmico: se si incrementa la tensione applicata,
la corrente aumenta, e la temperatura nei pressi dell’interfaccia tra GST
e riscaldatore aumenta. Quando viene raggiunta la zona di Reset, la
temperatura è tale da far fondere il GST nei pressi del riscaldatore. Se
il tempo di discesa dell’impulso applicato è molto rapido, il GST fuso si
raffredda velocemente, e non vi è il tempo necessario perché gli atomi si
dispongano di nuovo secondo un reticolo cristallino. Il materiale allo stato
solido verrà dunque a trovarsi nella fase amorfa. La curva I-V della cella
di memoria nello stato amorfo, invece, presenta due differenti regioni di
funzionamento. Per basse tensioni di polarizzazione applicate, la resistenza
è di qualche ordine di grandezza superiore rispetto al caso della cella nello
stato di Set (GST completamente cristallino). Una volta che la tensione ai
capi della cella raggiunge la tensione di soglia V th , si verifica il fenomeno del
threshold switching. Il valore della corrente che attraversa la cella aumenta
bruscamente, mentre la tensione ai suoi capi diminuisce. Bisogna precisare
che anche dopo il threshold switching il materiale si trova ancora nella fase
amorfa. Affinché si verifichi la transizione verso la fase cristallina, la tensione
deve essere aumentata ulteriormente, fino a raggiungere la zona che in figura
è denominata regione di Set. In questa zona la potenza dissipata per effetto
Joule è tale da indurre la cristallizzazione senza che il GST venga di nuovo
fuso. Se la tensione viene poi aumentata per portare la cella nella zona
denominata regione di Reset, il GST fonde e, se la tensione applicata viene
riportata rapidamente a 0, esso torna in fase amorfa.
2.3.1
Modello Fisico del Threshold Switching
Per quanto riguarda i principi fisici che determinano il threshold switching,
in letteratura non vi è un accordo su quali siano i fenomeni che ne
determinano l’innesco. A partire dalla pubblicazione del lavoro di Ovshinsky
[10], sono stati proposti vari modelli per spiegare la natura del threshold
switching. Alcuni autori affermano che si tratta di un fenomeno dovuto
a effetti termici e che, per tensioni applicate superiori alla tensione di
soglia, la corrente nel GST amorfo aumenta a causa della formazione di un
“filamento caldo” (hot filament) [30, 31]. Nel 1978 Adler dimostrò che per
leghe calcogenure deposte in strati sottili il fenomeno non è di origine termica
46
Caratteristiche delle Leghe Calcogenure
1200
Programmazione
1000
Reset
Corrente [µA]
800
600
ON
Set
400
Lettura
200
OFF
0
0.0
VH
0.5
VHSB
1.0
Tensione [V]
Vth
1.5
fase amorfa
fase cristallina
2.0
Figura 2.8: Caratteristica I-V dellla cella di memoria con GST cristallino e
amorfo.
[32]. Due anni dopo, assieme ad altri autori (tra cui lo stesso Ovshinsky)
[33], Adler sviluppò una teoria secondo cui in un resistore a semiconduttore
si può verificare il fenomeno del threshold switching senza che intervengano
effetti di natura termica. Secondo questa teoria, lo switching è causato dal
campo elettrico applicato, e la concentrazione dei portatori è contrastata
da una forte ricombinazione di tipo Shockley-Hall-Read (SHR) attraverso
stati localizzati. Questo modello è purtroppo rimasto puramente teorico: i
meccanismi proposti non sono mai stati esposti chiaramente, e non sono
state fornite né una spiegazione supportata dalla struttura microscopica dei
materiali calcogenuri, né un confronto tra il modello proposto ed eventuali
evidenze sperimentali.
Negli ultimi anni è stato elaborato un modello che interpreta il threshold
switching come un fenomeno puramente elettronico, e pone le sue fondamenta
sul diagramma a bande del calcogenuro amorfo, in particolare sull’azione
−
delle VAP C+
3 –C1 [25]. In Fig. 2.9 è mostrata la caratteristica I-V di una
cella di memoria con GST in fase amorfa per tensioni applicate inferiori a
V th . Bisogna notare che è stato scelto di rappresentare l’asse delle ordinate in
scala logaritmica, al fine di evidenziare meglio alcuni dettagli. In particolare,
è possibile individuare quattro differenti regioni di funzionamento per la cella.
Nella prima zona, lo strato di GST presenta un comportamento lineare, il che
indica un comportamento ohmico del materiale. Nella seconda zona si osserva
2.3 Il Fenomeno del Threshold Switching
47
1.E-02
Corrente [A]
Zona 4
1.E-04
RON
Zona 3
Ith
1.E-06
Zona 2
1.E-08
ROFF
Zona 1
1.E-10
0.0
0.2
0.4
0.6
0.8
1.0
Vth
1.2
Tensione [V]
Figura 2.9: Caratteristica I-V di una cella PCM nello stato amorfo per basso
campo applicato.
invece un andamento esponenziale della curva. La pendenza di questa, cioè
la conducibilità elettrica del GST, può essere espressa come
σ = qμn n + qμp p,
(2.2)
dove q indica la carica dell’elettrone, μn e μp rappresentano rispettivamente
la mobilità degli elettroni e delle lacune (i valori numerici per il GST amorfo
e cristallino sono riportati nella Tabella 2.2), mentre con n e p si intendono
le rispettive concentrazioni. Dalla (2.2) appare chiaro che nella seconda zona
si ha una crescita esponenziale del numero di portatori. Quest’andamento
è indice del fatto che è in atto un processo di generazione che dipende
esponenzialmente dal campo elettrico, come il tunnelling o la ionizzazione da
impatto. Una generazione per tunnelling è comunque da scartare, poiché non
dipende dalla densità di portatori. La concentrazione dei portatori è infatti
un concetto chiave per spiegare la forma a “S” con pendenza negativa della
curva (SNDC, S-Shaped Negative Device Characteristic). Una volta che il
campo elettrico ha superato un valore critico (F crit ), i portatori liberi presenti
nel materiale sono infatti accelerati dal campo applicato, e, a causa degli urti
con gli atomi, vengono generate nuove coppie elettrone-lacuna. Le coppie cosı̀
48
Caratteristiche delle Leghe Calcogenure
generate concorrono a loro volta alla generazione di nuove coppie di portatori,
secondo un meccanismo a valanga. Al crescere della tensione applicata, il
numero di portatori cresce esponenzialmente con il campo elettrico, e a
causa della ricombinazione che avviene per effetto delle coppie di trappole
−
C+
3 –C1 si ha una situazione di equilibrio. Man mamo che ci si avvicina della
tensione di soglia, è sempre più difficile per la ricombinazione bilanciare la
generazione. Una volta che si supera Vth (zona 3), il tasso di ricombinazione
non è più in grado di bilanciare la generazione, il che significa che le trappole
sono tutte occupate da portatori, e il numero di portatori liberi aumenta.
In questo regime, l’unico modo per raggiungere un nuovo stato stazionario
è che ci sia un crollo della tensione ai capi della cella, il che riduce in tal
modo il tasso di generazione. A parità di numero di portatori, infatti, il
meccanismo di valanga non è più sostenuto dal campo elettrico applicato,
ma dall’aumento della concentrazione dei portatori liberi. Nella zona 4 della
curva si osserva un’elevata conducibilità del GST, dovuta al numero di
portatori liberi presenti nel materiale. In questa zona, la conducibilità del
GST può essere pertanto considerata pressoché infinita, e la pendenza di
questo tratto della caratteristica è dovuta agli elementi che sono in serie allo
strato di calcogenuro (l’heater e i contatti metallici). Lo strato di calcogenuro
presenta dunque un comportamento simile a quello di un generatore ideale
di tensione, e la tensione ai suoi capi risulta essere pari alla tensione di hold
VH .
Affinché il fenomeno di generazione a valanga venga inibito, la tensione ai
capi della cella deve scendere al di sotto della tensione VHSB (tensione di hold
di snap-back ) a cui corrisponde il campo elettrico minimo che permette alla
valanga di sostenersi. Al di sotto di tale tensione, la cella torna nello stato
ad alta resistenza.
Occorre sottolineare di nuovo che il modello appena esposto è puramente
elettronico, e non prevede effetti di tipo termico. Ciò implica che non si
verifichi il memory switching, in quanto il cambiamento di fase del materiale
avviene ad opera della temperatura. Questo è vero nel caso in cui la cella
di memoria sia portata in regime di threshold switching per un tempo
infinitesimo. Se il tempo in cui il GST permane nella condizione di switching
non è trascurabile, il passaggio di corrente causa un riscaldamento per effetto
Joule del materiale stesso, con la possibilità di innescare i meccanismi di
cambiamento di fase, a seconda del valore della corrente che attraversa la
cella (si ricordino a tal proposito le regioni di programmazione evidenziate
2.3 Il Fenomeno del Threshold Switching
49
EC
Efn Efp
EV
Cristallino
Amorfo
Riscaldatore
V1
EC
Efn
Efp
EV
Cristallino
Amorfo
Riscaldatore
EC
V2
V1
Efn
Efp
EV
Cristallino
Amorfo
Riscaldatore
Figura 2.10: Struttura a bande di una cella PCM nello stato di Reset in regime
ohmico (a), esponenziale (b), e nello stato di ON.
in Fig. 2.8).
In Fig. 2.10 sono rappresentati i diagrammi a bande lungo un asse
verticale all’interno della regione attiva. Per bassi valori di tensione applicata,
la conduzione è ohmica (Fig. 2.10(a)). Quando il campo elettrico supera il
valore Fcrit , si verifica il fenomeno della ionizzazione da impatto all’interno
del GST amorfo, e la corrente cresce esponenzialmente a causa della
generazione di lacune. Gli elettroni, invece, vengono catturati dalle trappole
di tipo donore. Aumentando ancora la tensione, gli elettroni generati per
ionizzazione da impatto tendono a saturare le trappole, e la densità di
elettroni liberi aumenta. Il quasi-livello di Fermi degli elettroni (E f n ) si
sposta vicino alla banda di conduzione (Fig. 2.10(b)). Una volta superata
50
Caratteristiche delle Leghe Calcogenure
Parametro
μn [cm2 V−1 s−1 ]
μp [cm2 V−1 s−1 ]
FC [Vcm−1 ]
GST cristallino
0.1
15
3.3 × 105
GST amorfo
5
200
3.3 × 105
Tabella 2.2: Valori dei parametri relativi ai fenomeni di trasporto nel GST.
la tensione di soglia, l’effetto della ionizzazione da impatto supera quello
della ricombinazione, e si verifica lo snap-back (Fig. 2.10(c)). Di conseguenza,
una corrente maggiore può attraversare la cella con una tensione applicata
minore (V2 < V1 ). La ionizzazione da impatto si verifica ancora, ma il tasso
di moltiplicazione è ridotto rispetto a prima, e il fenomeno della conduzione
è sostenuto principalmente dagli elettroni, anche se il materiale di partenza
è di tipo p.
2.4
Cristallizzazione del GST amorfo
La cristallizzazione è il fenomeno responsabile del passaggio dallo stato
di Reset a quello di Set in una cella PCM, attraverso una riorganizzazione
degli atomi del materiale. Al fine di ridurre la durata dell’operazione di Set
a tempi dell’ordine del centinaio di ns, la cristallizzazione viene accelerata
dal riscaldamento del GST, ottenuto tramite l’applicazione di opportuni
impulsi elettrici. I fenomeni che stanno alla base della cristallizzazione sono
sostanzialmente due: la nucleazione e la crescita. La nucleazione consiste nella
formazione, all’interno del materiale amorfo, di germi di GST cristallino (i
cosiddetti nuclei). La velocità di nucleazione dipende dalla temperatura a cui
si trova il GST, e dal tempo per cui questo è tenuto a questa temperatura.
La crescita, invece, prevede un ingrandimento dei nuclei formatisi
precedentemente. Il processo di crescita venne per la prima volta descritto
negli anni ’40, e segue la cosiddetta legge di Johnson-Mehl-Avrami (JMA)
[34, 35, 36], che nel corso degli anni è stata affinata alla luce dei risultati
sperimentali. Il modello JMA era stato sviluppato contemporaneamente dal
matematico russo Kolmogorov (uno dei matematici che contribuı̀ alla nascita
della statistica stessa), e per questo talvolta prende il nome di legge di
Johnson-Mehl-Avrami-Kolmogorov (JMAK).
2.4 Cristallizzazione del GST amorfo
51
Il modello di JMAK fornisce una descrizione dell’evoluzione della frazione
cristallina CF (crystal fraction, il rapporto tra il volume del materiale nella
fase cristallina e il volume totale), e si basa fondamentalmente su tre ipotesi:
1. la probabilità di nucleazione è uniforme in tutto il materiale, e dipende
dalla temperatura;
2. le leggi secondo cui operano nucleazione e cristallizzazione sono note a
priori;
3. i nuclei hanno inizialmente dimensioni infinitesime.
La prima ipotesi è in realtà molto semplificativa, in quanto è stato
osservato sperimentalmente che il tasso di nucleazione decresce all’aumentare
della CF. L’assunzione di tale ipotesi implica che il numero dei grani
cristallini che si sono formati sia costante al variare della dimensione dei
grani (distribuzione a scatola), mentre i risultati sperimentali mostrano una
distribuzione simile ad una gaussiana.
La seconda ipotesi fa riferimento ai meccanismi di nucleazione (come varia
il tasso di nucleazione nel tempo) e di crescita (interfacciale o per processi di
diffusione). Per la crescita, inoltre, vi può essere una direzione preferenziale.
La terza ipotesi, infine, è anch’essa molto semplificativa, e trascura
il fatto che la crescita interessa solo i nuclei che hanno raggiunto una
dimensione critica, mentre quelli che non l’hanno raggiunta possono regredire
e scomparire.
A partire da queste ipotesi, Avrami formulò un’espressione per la CF in
funzione del volume esteso Ve (la somma dei volumi normalizzati di tutti i
grani, senza tenere conto di eventuali sovrapposizioni tra grani adiacenti).
L’equazione enunciata da Avrami è la seguente:
CF (t) = 1 − e−Ve (t) ,
(2.3)
dove il termine Ve (t), che indica la funzione che fornisce il modello di
accrescimento del volume occupato dalla fase cristallina all’istante t, può
essere espresso come
Ve (t) =
0
t
dN
V1 (t, u)du,
du
(2.4)
il tasso di nucleazione e V1 (t, u) il volume esteso
dove t indica il tempo, dN
du
di un singolo grano che comincia a crescere al tempo u < t. In condizioni
52
Caratteristiche delle Leghe Calcogenure
isoterme si ha che Ve (t) = Ktn , dove K è un coefficiente detto costante di
reazione e n è l’esponente di Avrami, che dipende dal modo in cui avvengono
nucleazione e crescita in un determinato materiale.
Come si può intuire dalle equazioni appena descritte, la fortuna del
modello JMAK deriva dalla semplicità con cui descrive la cinetica di
cristallizzazione. Nonostante ciò, esso presenta anche dei limiti, come ad
esempio il fatto che presenta una descrizione del materiale da un punto di
vista puramente macroscopico, in quanto fornisce solamente informazioni
sull’andamento temporale della frazione cristallina, ma non dà nessuna
informazione a livello microscopico, come ad esempio la distribuzione dei
grani all’interno del volume totale. Questo implica problemi nel calcolo di
parametri come la resistenza del materiale che, oltre che dalla CF, dipende
anche dal modo in cui i grani sono distribuiti nel materiale amorfo di
partenza.
Capitolo
3
I Dispositivi Sperimentali ZZA0-BJT e
ZZA0-MOS
In questo capitolo verranno descritti brevemente i dispositivi sperimentali
di memoria a cambiamento di fase che sono stati utilizzati per la
caratterizzazione sperimentale che ha interessato la mia attività di dottorato.
Tali dispositivi, realizzati da STMicroelectronics, hanno entrambi lo scopo di
investigare la possibilità e le potenzialità delle memorie a cambiamento di
fase. Da parte delle industrie è infatti importante investigare aspetti come la
compatibilità dei nuovi materiali utilizzati con i processi tradizionali e ridurre
al minimo il numero di passi di fabbricazione aggiuntivi rispetto a quelli di
un processo CMOS standard, al fine di contenere i costi di produzione. Un
altro aspetto fondamentale per un dispositivo di memoria è la densità di
integrazione, e lo scopo delle aziende è quello di miniaturizzare il più possibile
i dispositivi, al fine di aumentare al massimo la densità di memoria.
I dispositivo ZZA0-MOS è stato sviluppato allo scopo di dimostrare la
fattibilità e il corretto funzionamento della tecnologia PCM utilizzando un
processo il più vicino possibile al CMOS standard, mentre il dispositivo
ZZA0-BJT è nato per esplorare le potenzialità delle memorie a cambiamento
di fase in termini di densità di integrazione.
All’interno di questo capitolo verrà mostrata l’architettura della
cella di memoria utilizzata nei due dispositivi. Seguirà una descrizione
dell’architettura dei dispositivi stessi, seguita da una breve descrizione delle
più importanti modalità di test da essi supportate.
54
3.1
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
Architettura della Cella di Memoria
La cella PCM è realizzata aggiungendo un numero limitato di moduli di
processo, tra quelli di front-end e quelli di back-end di un processo CMOS
standard, al fine di definire le geometrie dei precontatti metallici della cella,
dell’heater e del calcogenuro, com’è riassunto nella Tabella 3.1. Allo scopo
di minimizzare la corrente di programmazione, e di conseguenza il consumo
di potenza, pur mantenendo una struttura verticale compatta, la definizione
dell’area di contatto tra GST e heater si ottiene attraverso l’intersezione
tra un sottile heater verticale di dimensioni sub-micrometriche, realizzato
in materiale semimetallico, e una trincea di dimensioni sub-micrometriche,
chiamata μtrench, in cui viene depositato il GST. L’utilizzo del μtrench
permette dunque di definire l’area attiva come l’intersezione tra una
dimensione sublitografica e lo spessore del riscaldatore. Le prestazioni
dell’elemento di memoria possono pertanto essere ottimizzate andando a
modificare le dimensioni dell’area di contatto tra GST e riscaldatore, pur
mantenendo sempre un buon controllo delle dimensioni.
3.1.1
Approccio con Selettore MOSFET
La cella PCM di tipo μtrench è completamente compatibile con l’utilizzo
di un selettore di tipo MOSFET [37], ed è pertanto stata utilizzata per la
realizzazione di un dispositivo sperimentale, denominato ZZA0-MOS, la cui
matrice utilizza dei transistori MOS come selettori di riga [38, 39]. In Fig. 3.1
è mostrato uno schema della sezione trasversale della cella di memoria lungo
la direzione della bit-line. Per realizzare la bit-line è stato utilizzato il livello
più basso di metallizzazione (metal 0). Il processo CMOS scelto per lo
ZZA0-MOS è caratterizzato da una lunghezza minima di canale di 0.18 µm,
al fine di dimostrare la completa compatibilità della tecnologia PCM con
un processo CMOS standard. Il processo utilizzato, le cui caratteristiche
principali sono riassunte nella tabella 3.2, prevede un isolamento di tipo
shallow trench, un dual flavor poly-gate, uno spessore dell’ossido di gate pari
a 7 nm e tre livelli di metallizzazione realizzati in Al/Cu.
Il riscaldatore è connesso tramite un pilastro realizzato in tungsteno al
drain del selettore MOS, mentre il gate di questo, diviso in due sezioni poste
in parallelo per migliorare la driving capability, è collegato alla word-line
tramite il secondo livello di metallizzazione (metal 2, non mostrata in figura).
3.1 Architettura della Cella di Memoria
55
Figura 3.1: Struttura schematica di una cella di memoria con selettore MOS
(sezione lungo la direzione di una bit-line).
La linea di source (indicata in figura come SL) è anch’essa realizzata in
tungsteno, e contatta il primo livello di metallizzazione ogni 64 celle, al fine
di limitare la resistenza complessiva di tale linea.
In Fig. 3.2 viene mostrata una foto al microscopio a scansione elettronica
(Scanning Electron Microscope, SEM) della sezione trasversale di una cella
PCM con selettore MOS. Nonostante l’architettura μtrench permetta di
ottenere dimensioni dell’elemento di memoria molto contenute, le dimensioni
complessive della cella sono determinate dal selettore, che risulta abbastanza
ingombrante (la dimensione delle celle risulta pari a circa 1.3 µm2 , che
corrispondono a 40 F2 ). L’approccio a selettore MOS non risulta pertanto
indicato per applicazioni di tipo stand-alone in cui venga richiesta un’elevata
densità di integrazione. Un grosso vantaggio di questo approccio è che
questo tipo di cella può essere integrato con l’aggiunta di un numero
limitato di maschere litografiche (in questo caso soltanto quattro), rendendolo
particolarmente indicato per applicazioni embedded, assicurando bassi costi e
una complessità inferiore rispetto alle altre tecnologie presenti sul mercato.
3.1.2
Approccio con Selettore Bipolare
Oltre che con un selettore di tipo MOS, la cella μtrench è compatibile con
un selettore bipolare a giunzione [18]. Al fine di minimizzare l’occupazione di
area, è stata sviluppata una cella con struttura verticale che prevede l’utilizzo
di un transistore bipolare a giunzione (Bipolar Junction Transistor, BJT) di
56
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
Blocco
Modulo
Front-End
STI
Impiantazione delle well
Definizione del selettore
Formazione del salicide
Formazione della cella PCM Precontatti
Definizione dell’heater
μtrench
Metal 0
Back-End
Contatti/Via 0
Metal 1
Via 1
Metal 2
Passivazione e Pad
Tabella 3.1: Schema del processo produttivo.
Litografia
Dimensioni della cella
Isolamento
Spessore dell’ossido
Tipo di gate
Interconnessioni
0.18 µm
1.55 × 0.85 µm2
Shallow trench
7 nm
Dual-flavor poly & TiSi2
2 Al/Cu
Tabella 3.2: Parametri tecnologici che caratterizzano la tecnologia utilizzata per
il dispositivo ZZA0-MOS.
3.1 Architettura della Cella di Memoria
57
Figura 3.2: Immagine SEM della sezione trasversale di una matrice di celle PCM
con selettore MOSFET.
tipo pnp come selettore di riga. Il dispositivo sperimentale realizzato, di cui
si parlerà nel paragrafo 3.3, è stato pertanto chiamato ZZA0-BJT [40].
In Fig. 3.3 è mostrato lo schema della sezione trasversale di una cella di
memoria lungo la direzione della word-line. Analogamente al caso esaminato
nella sezione precedente, l’elemento di memoria è costituito da uno strato
sottile di GST posto in contatto con un riscaldatore semimetallico. Anche
in questo caso tutti gli step di processo aggiuntivi sono compatibili con una
tecnologia CMOS standard con lunghezza minima di canale pari a 0.18 µm,
i cui parametri fondamentali sono riassunti nella Tabella 3.3.
Durante il processo di fabbricazione della cella di memoria, il GST viene
deposto assieme al livello inferiore di metallizzazione. Il riscaldatore è posto
in contatto con la regione di emettitore (di tipo p) del selettore bipolare,
il cui terminale di base è connesso alla word-line, realizzata in metal 1. Il
substrato è sempre connesso alla linea di massa, e funge da collettore.
Litografia
Dimensioni della cella
Spessore dell’ossido
Tipo di gate
Metallizzazioni
0.18 µm
0.8 × 0.4 µm2
7 nm
Dual-flavor poly & TiSi2
2 Metal + 1 AlCu7GST
Tabella 3.3: Parametri tecnologici che caratterizzano la tecnologia utilizzata per
il dispositivo ZZA0-BJT.
58
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
Figura 3.3: Schema della sezione trasversale di una cella μtrench con selettore
bipolare lungo la direzione della word-line.
Le specifiche che hanno guidato il progetto del selettore sono la
minimizzazione della corrente di leakage delle giunzioni base-emettitore e
base-collettore polarizzate in inversa, e la massimizzazione della corrente di
emettitore rispetto a quella di base, al fine di minimizzare la corrente nelle
celle non selezionate e la caduta di tensione lungo la word-line. La dimensione
della cella di memoria, in questo caso, è di soli 0.32 µm2 , corrispondenti a
circa 10 F2 (1/4 rispetto al caso del selettore MOS), il che rende questo tipo
di cella particolarmente adatta all’impiego in applicazioni che prevedano un
elevato grado di densità di integrazione.
3.2
Architettura del Dispositivo ZZA0-MOS
In Fig. 3.4 è mostrato lo schema a blocchi che descrive il dispositivo
sperimentale ZZA0-MOS. Le celle di memoria sono organizzate in un’unica
matrice da 4 Mb, costituita da 2048 righe e 2048 colonne (un dettaglio
dell’architettura della matrice è rappresentato in Fig. 3.5). I transistori
naturali YO, che operano in regione di saturazione, hanno la funzione di
polarizzare la bit-line durante le varie operazioni. Più precisamente, essi
regolano la tensione di bit-line a circa 400 mV durante l’operazione di lettura,
in modo da effettuare il sensing della resistenza della cella (confronto tra
corrente di lettura della cella di memoria e una corrente di riferimento)
3.2 Architettura del Dispositivo ZZA0-MOS
PUMP Y
VA
REG
59
I/O Buffs ESDs PADs
Sense Amplifiers
Address
VSET
REG
CLOCK
YO
YO
VRESET
REG
Md
Md
DISCH
VREAD
REG
PUMP X
Pulse
Gen
VPCX
REG
Address
Glue Logic
&
Test Mode
Figura 3.4: Schema a blocchi del dispositivo ZZA0-MOS.
senza modificarne lo stato di programmazione, e rispettivamente a 1.5 V
e 2.7 V durante le operazioni di Set e di Reset. Le tensioni di lettura e
programmazione che polarizzano i gate dei transistori YO vengono fornite
da un blocco denominato OC (Operation Control). La tensione di bit-line
può essere dunque espressa come:
VBL = VG,Y O − (Vth − Vov ),
(3.1)
dove VG,Y O , Vth e Vov indicano rispettivamente la tensione di gate del
transistore YO, la sua tensione di soglia, ed il suo overdrive. In fase di
lettura, la tecnica di tipo cascode adottata per la polarizzazione della bit-line
premette di ottenere dei tempi di precarica della bit-line stessa molto rapidi.
Lo schema di polarizzazione adottato permette inoltre di prevenire eventuali
impulsi di programmazione indesiderati, poiché la struttura cascode reietta
eventuali disturbi iniettati dalla linea di alimentazione del decodificatore di
colonna [41].
Durante le operazioni di Set e di Reset, alle bit-line indirizzate devono
essere applicati impulsi di programmazione che abbiano una forma ed una
durata prestabilite. Tali tensioni sono ottenute applicando opportune tensioni
60
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
Bit-line j-1
Bit-line j
Bit-line j+1
Word-line i-1
Word-line i
Cella di
Memoria
Word-line i+1
Figura 3.5: Dettaglio della configurazione della matrice di memoria del dispositivo
ZZA0-MOS.
ai gate dei transistori YO. I transistori Md hanno lo scopo di scaricare le
bit-line dopo l’esecuzione delle operazioni di lettura e programmazione, al
fine di evitare l’applicazione di eventuali impulsi di programmazioni spuri
alle celle non selezionate durante l’operazione successiva.
Poiché le operazioni di programmazione necessitano di tensioni superiori
a quella di alimentazione (Vdd è pari a 1.8 V), nel dispositivo sono state
integrate due pompe di carica (PUMP X e PUMP Y in Fig 3.4). Le pompe
di carica sono appunto circuiti che, a partire dalla tensione di alimentazione,
generano in uscita una tensione superiore a questa. La pompa di carica
PUMP X, attraverso dei regolatori di tensione, fornisce le tensioni di Set,
Reset e lettura, nonché la tensione di gate del selettore di riga, che in figura
sono indicate rispettivamente come VSET , VRESET , VREAD e VP CX . La pompa
di carica PUMP Y, invece, si occupa di fornire la potenza necessaria alle
operazioni di programmazione attraverso un regolatore e il decodificatore di
colonna.
Come è stato accennato nel Capitolo 1, l’operazione di lettura consiste
nel confronto tra la corrente di lettura della cella (Icell ) e una corrente di
riferimento (Iref ), eseguito mediante un circuito che prende il nome di sense
amplifier. I sense amplifier integrati nel dispositivo ZZA0-MOS sono otto,
uno per ogni piedino di ingresso/uscita e determinano quindi un grado di
parallelismo pari a 8. Lo schema utilizzato è mostrato in Fig. 3.6 [42]. La
3.2 Architettura del Dispositivo ZZA0-MOS
61
Vdd
M4
M6
M3
M5
M2
M1
IR
IR
CR
CM
Dummy
Column
Decoder
matside
+
refside
Column
Decoder
M10 M9
-
Iref
M8 M7
Icell
Comparatore
Buffer
SAOUT
I/O
Figura 3.6: Schema circuitale del sense amplifier.
struttura di questo circuito è completamente simmetrica, il che assicura un
offset sistematico nullo, assieme a una buona reiezione dei disturbi dovuti
ad accoppiamenti capacitivi con il substrato e le linee di alimentazione e di
massa.
Con riferimento alla Fig. 3.6, al fine di garantire un fattore di specchio
pari a 1, tutti i transistori a canale p, cosı̀ come quelli a canale n,
sono caratterizzati dal medesimo rapporto W/L. Le capacità CM e CR
rappresentano rispettivamente le capacità parassite presenti ai nodi di
ingresso del comparatore dal lato della matrice (matside) e da quello dei
riferimenti (refside). Questi due condensatori integrano le differenze di
corrente Icell − Iref e Iref − Icell . Le tensioni che si sviluppano ai nodi
corrispondenti costituiscono rispettivamente l’ingresso negativo e quello
positivo del comparatore, che rivela lo stato di programmazione della cella
indirizzata: se Icell > Iref l’uscita del comparatore (SAOUT) sarà a 1, il
che indica che la cella si trova nello stato di Set; se, viceversa, Icell < Iref ,
SAOUT sarà a 0, il che mostra che la cella si trova nello stato di Reset.
Per assicurare un funzionamento simmetrico, i terminali di ingresso del
comparatore vengono equalizzati prima di ogni operazione di lettura. Oltre
all’equalizzazione, prima di effettuare l’operazione di lettura, le bit-line
vengono precaricate al fine di velocizzare la lettura stessa.
62
3.3
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
Architettura del Dispositivo ZZA0-BJT
In Fig. 3.7 è rappresentato uno schema a blocchi del dispositivo
ZZA0-BJT. La capacità di memoria è doppia rispetto a quella del dispositivo
ZZA0-MOS, in quanto sul chip sono presenti due matrici da 4 Mb, a loro
volta suddivise in sottomatrici da 2 Mb, ognuna costituita da 2048 righe
e 1024 colonne (un dettaglio dell’architettura delle matrici è mostrato in
Fig. 3.8). Il processo con cui è stato integrato il dispositivo è anche in
questo caso un processo CMOS standard con lunghezza minima di canale
pari a 0.18 µm. Come si può notare da Fig. 3.7, il dispositivo risulta meno
complesso del suo omologo a selettore MOS, in quanto manca delle circuiterie
atte alla generazione degli impulsi di lettura e programmazione (regolatori
di tensione e pompe di carica). Le tensioni necessarie alla generazioni di
tali impulsi vengono infatti fornite dall’esterno tramite piedini dedicati, al
fine di verificare più facilmente le prestazioni e l’affidabilità della tecnologia,
senza incorrere in eventuali problemi dovuti ad un cattivo funzionamento dei
suddetti circuiti.
In Fig. 3.9 è mostrata una microfotografia del dispositivo ZZA0-BJT.
Come si può vedere, il decodificatore di riga (indicato in figura come
local selector ) è posizionato tra le due sottomatrici. Al fine di minimizzare
la resistenza complessiva delle varie bit-line, è stato scelto un approccio
gerarchico a due livelli, che prevede che ad ogni bit-line principale siano
collegate due sotto-bit-line, una per ogni matrice, in cui sono presenti i
selettori locali YO (anche in questo caso realizzati mediante transistori MOS
naturali a canale n).
Come nel caso del dispositivo ZZA0-MOS, i transistori YO svolgono la
funzione di polarizzare le sotto-bit-line a 1 V durante l’operazione di lettura,
e rispettivamente a 2 V e 2.7 V durante le operazioni di Set e di Reset (le
tensioni sono più alte che nel caso del dispositivo ZZA0-MOS per tenere conto
della caduta di tensione presente ai capi della giunzione emettitore-base del
selettore). Le tensioni di lettura e programmazione vengono portate ai gate
dei transistori YO dal blocco OC.
Le tensioni di polarizzazione necessarie al funzionamento del dispositivo
e all’esecuzione delle varie operazioni sono fornite dall’esterno attraverso pin
dedicati. I sense amplifier presenti sul dispositivo sono otto, e sono identici
a quelli integrati sul chip ZZA0-MOS.
Uno dei problemi derivanti dall’utilizzo di transistori bipolari come
3.3 Architettura del Dispositivo ZZA0-BJT
TEST
MODE
63
I/O Buffs ESDs PADs
IREF
Sense Amplifiers
Address
VA
TEST
MODE
VSET
YO
VRESET
YO
VREAD
Pulse
Gen
VPCX
Address
TEST
MODE
CTRL
BIT
Glue Logic
&
Test Mode
TEST
MODE
VLEAK
VLEAK &
VPCY GEN
Leaker
VPCY
Figura 3.7: Schema a blocchi del dispositivo ZZA0-BJT.
selettori di riga consiste nella presenza di una corrente di leakage nelle celle
di memoria non selezionate (la giunzione base-emettitore di queste è infatti
polarizzata inversamente). Per questo motivo sono stati inseriti transistori
MOS a canale n che svolgono la funzione di leaker. Questi transistori svolgono
la funzione di controllare la tensione delle sotto-bit-line, polarizzandole alla
tensione VP CY (si veda la Fig. 3.7), il cui valore è minore della soglia di
accensione della giunzione base-emettitore del selettore bipolare, in modo
da prevenirne un’accensione indesiderata. Il leaker ha inoltre la funzione
di mantenere le bit-line non selezionate alla tensione VP CY durante le
operazione di lettura e scrittura, in modo da assorbire le correnti di leakage
di tutte le giunzioni base-emettitore polarizzate in inversa. In questo modo è
possibile evitare qualsiasi accensione indesiderata dei transistori bipolari in
corrispondenza di una riga selezionata e di una colonna non selezionata. La
corrente assorbita dai leaker è dell’ordine del nA, e risulta quindi trascurabile
64
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
Bit-line j-1
Bit-line j
Bit-line j+1
Word-line i-1
Cella di
Memoria
Word-line i
Word-line i+1
Figura 3.8: Dettaglio della matrice di memoria del dispositivo ZZA0-BJT.
rispetto alle correnti in gioco durante la lettura e la programmazione.
3.4
Modalità di
ZZA0-MOS
Test
del
Dispositivo
In questa sezione verranno descritte le principali modalità operative e di
test del dispositivo ZZA0-MOS, focalizzando l’attenzione su quelle utilizzate
durante la caratterizzazione sperimentale effettuata.
Per meglio comprendere alcuni dei dettagli che verranno forniti, è
necessario chiarire quale sia la funzione dei diversi piedini del dispositivo.
Diciannove di questi sono assegnati agli indirizzi (input): i dieci meno
significativi hanno la funzione di selezionare la word-line desiderata, mentre
i rimanenti selezionano la bit-line. Altri otto piedini sono dedicati ai dati;
questi piedini sono bidirezionali: essi vengono infatti utilizzati come piedini di
3.4 Modalità di Test del Dispositivo ZZA0-MOS
65
Figura 3.9: Microfotografia del dispositivo ZZA0-BJT.
ingresso quando si desidera effettuare la scrittura di una parola su un registro
di test (TLATCH, la cui funzione verrà chiarita in seguito) o in memoria, o
come piedini di uscita per leggere il contenuto di una locazione di memoria
indirizzata (il chip lavora con parole di 8 bit) o quando vengono eseguiti alcuni
tipi di test, come ad esempio il DMA (Direct Memory Access). Vi sono poi
pin che hanno la funzione di controllo (WEREXT PAD, WE PAD, OE PAD,
TLOAD PAD): quasti piedini comandano le operazioni di programmazione,
lettura e caricamento delle modalità di test. I rimanenti piedini hanno
la funzione di portare al chip le tensioni di alimentazione (VDD), quelle
necessarie alle operazioni di programmazione e lettura (VRESET EXT,
VSET EXT e VBG READ) e altre tensioni di polarizzazione (VPCX EXT
e VA EXT). Vi è infine il pin EXTCK PAD, dedicato al clock quando il
dispositivo lavora in modalità esterna (si veda sotto).
Il nome dei pin, il tipo e la descrizione della loro funzione sono riassunti
nella Tabella 3.4.
Il dispositivo ZZA0-MOS è in grado di operare secondo due modalità di
funzionamento fondamentali sotto descritte.
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
66
Pin
APAD<18:0>
EXTCK PAD
IOPAD< 7 : 0 >
OE PAD
TLATCHEN
TLOAD PAD
VA EXT
VBG READ
VEXT PAD
VPCX EXT
VRESET EXT
VSET EXT
WEREXT PAD
WE PAD
BITCTRL<4:0>
VDD
GND
Tipo
Descrizione
Digitale
Indirizzi
Fase
Clock esterno
Analogico/digitale
I/O dei dati e cammino per il DMA
Fase
Abilita la lettura
Digitale
Determina la modalità di funzionamento
Fase
Caricamento e reset dei TLATCH
Analogico
Tensione esterna di colonna
Analogico
Tensione di lettura
Analogico
Determina la corrente di riferimento per la lettura
Analogico
Tensione di riga
Analogico
Tensione di Reset
Analogico
Tensione di Set
Fase
Abilita il Reset
Fase
Abilita il Set
Digitali
Definiscono i 32 user modes
Analogico
Tensione di alimentazione
Analogico
Massa
Tabella 3.4: Descrizione dei pin del dispositivo ZZA0-MOS.
3.4 Modalità di Test del Dispositivo ZZA0-MOS
67
• Modalità esterna: le tensioni operative, le tensioni di riferimento e i
segnali logici necessari al corretto svolgimento delle operazioni di test
vengono forniti dall’esterno; alcuni circuiti integrati sul dispositivo,
come ad esempio le pompe di carica, sono disattivati, in modo da
permettere la validazione della tecnologia PCM.
• Modalità interna: le tensioni operative, le tensioni di riferimento e
i segnali logici necessari al corretto svolgimento delle operazioni di
test sono generati da circuiterie interne al dispositivo; tale modalità
permette sia la validazione della tecnologia, sia quella delle soluzioni
circuitali adottate.
Le operazioni di testing possono inoltre essere eseguite in due modi,
entrambi i quali prevedono la possibilità che il dispositivo lavori sia in
modalità esterna, sia in modalità interna.
• TL MODE: attraverso una rigida procedura di inizializzazione
(caricamento di registri dedicati, denominati TLATCH), questa
modalità permette di collaudare il dispositivo mediante la
configurazione di opportuni segnali di controllo, i quali definiscono le
varie modalità di test, in una ampia gamma di combinazioni.
• USER MODE: questa modalità è stata prevista al fine di rendere non
volatili particolari configurazioni di modalità di test, ritenute le più
significative fra tutte quelle possibili. Gli user mode sono in tutto 32,
ed ognuno di essi è selezionabile configurando opportunamente 5 bit di
controllo.
La differenza sostanziale fra le due modalità di testing consiste nella
fase preliminare alla vera e propria operazione, ad esempio lettura o
scrittura: nel primo caso (TL MODE) occorre caricare i TLATCH, nel
secondo (USER MODE), invece, occorre configurare i bit di controllo.
La modalità TL MODE costituisce il metodo di testing più flessibile
previsto dal dispositivo. Essa permette infatti di configurare tutti i possibili
test-mode previsti attraverso il caricamento dei TLATCH, registri le cui
uscite sono segnali digitali che controllano opportunamente il funzionamento
del dispositivo. L’insieme dei TLATCH costituisce, infatti, l’interprete dei
comandi che dalla macchina di test vengono impartiti al dispositivo di
68
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
memoria. Si rende dunque necessario resettare all’inizio tutti i registri, ed in
seguito caricarli opportunamente, al fine di eseguire l’operazione desiderata.
La tipica sequenza di procedure da attuare per ogni singola operazione
di test è la seguente:
• impostare le tensioni di alimentazione al valore desiderato;
• porre il segnale TLATCHEN alto;
• porre i segnali BITCTRL<4:0> a massa;
• resettare i TLATCH;
• caricare i TLATCH necessari all’operazione desiderata;
• impostare gli indirizzi ed eventualmente, in caso di scrittura, i dati;
• fornire un impulso positivo di tensione al piedino OE PAD, se si vuole
effettuare una lettura, o al piedino WE PAD, se si vuole effettuare una
programmazione.
Sia in modalità interna, sia in modalità esterna, è necessario fornire le
seguenti tensioni di alimentazione:
• VDD: tensione di alimentazione del dispositivo, pari a 1.8 V;
• VA EXT (3.3 ÷ 5.2 V, in modalità esterna: tensione di colonna);
• VBG READ (0.6 ÷ 2 V, tensione di riferimento di lettura in modalità
esterna);
• VPCX EXT (2 ÷ 5 V, tensione di riga in modalità esterna);
• VRESET EXT (2 ÷ 5 V: tensione di Reset in modalità esterna);
• VSET EXT (1 ÷ 3 V: tensione di Set in modalità esterna);
• VEXT PAD (0.7 ÷ 1.2 V: tensione di riferimento in modalità esterna).
3.4 Modalità di Test del Dispositivo ZZA0-MOS
3.4.1
69
Operazioni di Testing
In questa sezione viene chiarito il funzionamento delle principali
operazioni di test, effettuate secondo la modalità TL MODE. Queste
operazioni sono la lettura e la scrittura del dato. Entrambe le operazioni
vengono effettuate in modalità esterna, fornendo cioè le varie tensioni
dall’esterno mediante la macchina di test.
L’operazione di lettura dell’informazione contenuta all’interno delle celle
della matrice di memoria può essere effettuata in due modi: attraverso
l’utilizzo dei sense apmlifiers integrati nel dispositivo (lettura interna),
oppure effettuando dall’esterno un sensing della corrente che attraversa la
cella polarizzata nella condizione di lettura, mediante un accesso diretto alle
celle di memoria (Direct Memory Access, DMA).
La lettura dei dati memorizzati in matrice attraverso i sense amplifier
avviene, dopo aver configurato gli opportuni test mode, cioè dopo
aver caricato i TLATCH corrispondenti, semplicemente imponendo la
configurazione degli indirizzi APAD<18:0> relativa alla parola che si vuole
leggere e portando alto il piedino OE PAD (per un tempo ≥ 200 ns). Il
livello della corrente di riferimento per la lettura viene imposto esternamente,
tramite il pad analogico VEXT.
In modalità ad accesso diretto, invece, la lettura della corrente delle
celle avviene, dopo avere configurato gli opportuni test mode, dopo avere
cioè caricato i relativi registri TLATCH, imponendo la configurazione degli
indirizzi APAD<18:0> relativa al byte che si vuole leggere e portando a
VDD i piedini IOPAD<7:0> e OE PAD. La corrente è misurata ai pin
IOPAD<7:0>. Al fine di effettuare correttamente l’operazione di DMA,
è necessario polarizzare i piedini VA EXT, VBG READ e VPCX EXT
rispettivamente alle tensioni di 3 V, 0.7 V e 2 V. Il valore selezionato di
VPCX EXT ha la funzione di abilitare il transistore MOS di selezione, il
valore di VBG READ fa sı̀ che ai capi delle celle di memoria selezionate
sia applicata una tensione di lettura tale da non modificare il contenuto
delle celle stesse, mentre il valore assegnato a VA EXT serve a polarizzare
correttamente il decodificatore di colonna.
In Fig. 3.10 sono mostrate le temporizzazioni dei segnali necessari a
effettuare un’operazione di DMA.
Per quanto riguarda le operazioni di scrittura della matrice di memoria,
invece, è necessario agire su entrambi i segnali di abilitazione alla scrittura
70
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
ADD <18:0>
T ≥ 10 ns
OE
T ≥ 200 ns
Vdd
IOPAD<7:0>
Figura 3.10: Temporizzazione per l’operazione di DMA.
(write enable), cioè WE PAD e WEREXT PAD: il primo determina la
forma e la durata dell’impulso di Set, il secondo combinato assieme al
primo mediante un’operazione di AND logico, determina la durata effettiva
dell’impulso di Reset generato dalla circuiteria interna; la durata dell’impulso
di Reset risulta sempre minore o uguale a quella dell’impulso di Set.
L’attivazione del segnale applicato al piedino WEREXT PAD può dunque
iniziare prima di quella del segnale applicato a WE PAD. Tuttavia, affinché
l’operazione di Reset venga portata a termine correttamente, è necessario che
il segnale di abilitazione dell’impulso di Reset termini contemporaneamente
o poco dopo il segnale di abilitazione dell’impulso di Set. Al fine di chiarire
quanto detto, in Fig. 3.11 sono mostrati esempi di temporizzazione per i
segnali coinvolti nelle operazioni di scrittura.
La scrittura delle celle di matrice avviene, dopo aver configurato gli
opportuni test mode mediante il caricamento dei TLATCH corrispondenti,
imponendo la configurazione dei dati (IOPAD<7:0>) e dei piedini relativi
all’indirizzo della locazione di memoria su cui si desidera effettuare la
scrittura, APAD<18:0>, e portando a VDD sia il pin WE, la cui durata
è pari a Ts , sia WEREXT, come è stato mostrato precedentemente.
Le tensioni di alimentazione da impostare durante le operazioni di
scrittura sono le seguenti:
• VA EXT = 3.3 ÷ 5.2 V;
• VBG READ = 1.24 V;
3.5 Modalità di Test del Dispositivo ZZA0-BJT
71
ADD <18:0>
IOPAD<7:0>
WE_PAD
T ≥ 10 nsec
TS = durata set
TD
WEREXT_PAD
TR = durata reset
Figura 3.11: Temporizzazione per le operazione di scrittura.
• VEXT PAD = 0 V;
• VPCX EXT = 2 ÷ 5 V;
• VSET EXT = 1 ÷ 3 V;
• VRESET EXT = 2 ÷ 5 V.
3.5
Modalità di
ZZA0-BJT
Test
del
Dispositivo
Com’è stato sottolineato nel paragrafo 3.3, il dispositivo ZZA0-BJT
è privo dei circuiti per la generazione delle tensioni di alimentazione e
di riferimento. Per questa ragione, tutte le tensioni necessarie al corretto
funzionamento del dispositivo (alimentazioni e segnali logici) devono essere
fornite dall’esterno attraverso piedini dedicati. I piedini del dispositivo hanno
sostanzialmente le stesse funzioni di quelli del dispositivo ZZA0-MOS. In
questo caso, mancano però i pin che vengono utilizzati per il caricamento dei
72
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
TLATCH (TLATCHEN e TLOAD PAD), mentre sono presenti piedini per
l’abilitazione dei decodificatori di riga e di colonna (XEN PAD e YEN PAD),
oltre a un piedino dedicato all’abilitazione del chip (CE PAD). In Tabella
3.5 sono elencati tutti i piedini del dispositivo, e viene inoltre data una breve
descrizione delle funzioni da essi svolte.
Le tensioni di alimentazione da fornire al dispositivo sono le seguenti:
• VDD = 1.8 V;
• VA EXT 3.6 ÷ 5.5 V;
• VREAD = 1 ÷ 2.3 V;
• VPCX EXT = 3.6 ÷ 5.5 V;
• VRESET EXT = 3.6 ÷ 5.5 V;
• VSET EXT 2.5 = ÷ 3.4 V;
• VEXT PAD 0.7 = ÷ 1.2 V.
Per eseguire una delle 32 modalità di test disponibili, è necessario
configurare i bit di controllo (BITCTRL<4:0>) e portare a un livello alto
il segnale OE oppure il segnale WE, a seconda dell’operazione desiderata.
Occorre, infatti, fornire un impulso al pin OE PAD, se si vuole effettuare
un’operazione di lettura, o al pin WE PAD, se si vuole effettuare una
scrittura. Le temporizzazioni per le varie operazioni di test sono analoghe
a quelle esposte per il dispositivo con cella a selettore MOS.
APAD<18:0>
IOPAD< 7 : 0 >
CE PAD
OE PAD
XEN PAD
YEN PAD
VA EXT
V READ
VEXT PAD
VPCX EXT
VRESET EXT
VSET EXT
WEREXT PAD
WE PAD
BITCTRL<4:0>
VDD
GND
GND DISCH
Pin
Descrizione
Tabella 3.5: Descrizione dei pin del dispositivo ZZA0-BJT.
Digitale
Indirizzi
Analogico/digitale
I/O dei dati e cammino per il DMA
Digitale
Abilita il dispositivo
Fase
Abilita la lettura
Digitale
Abilita il decodificatore di riga indipendentemente da quello di colonna
Digitale
Abilita il decodificatore di colonna indipendentemente da quello di riga
Analogico
Tensione esterna di colonna
Analogico
Tensione di lettura
Analogico
Determina la corrente di riferimento per la lettura
Analogico
Tensione di riga
Analogico
Tensione di Reset
Analogico
Tensione di Set
Fase
Abilita il Reset
Fase
Abilita il Set
Digitali
Definiscono i 32 user modes
Analogico
Tensione di alimentazione
Analogico
Massa per la circuiteria
Analogico
Massa per i transistori di discharge in matrice
Tipo
3.5 Modalità di Test del Dispositivo ZZA0-BJT
73
74
I Dispositivi Sperimentali ZZA0-BJT e ZZA0-MOS
Capitolo
4
Algoritmi di Programmazione
Multilivello
Nel presente Capitolo si discuterà dello sviluppo di algoritmi di
programmazione multilivello per memorie a cambiamento di fase, mostrando
anche i risultati della caratterizzazione sperimentale. Lo scopo di tale
caratterizzazione è di ottenere quattro distribuzioni separate su una matrice
di celle PCM (programmazione a due bit per cella), studiando le finestre
di lettura e di programmazione che permettono l’ottenimento di suddette
distribuzioni. Per questi motivi si è deciso di utilizzare dispositivi con
matrici di memoria ad alta densità ben collaudati, in modo da potere
studiare sia il comportamento delle celle di memoria a livello statistico,
sia il comportamento di eventuali celle anomale. I dispositivi scelti sono lo
ZZA0-MOS e lo ZZA0-BJT, brevemente descritti nel Capitolo 3.
Al fine di spiegare meglio alcuni fenomeni, è stato adottato un approccio
analitico (cioè su singola cella di memoria), e non statistico (cioè su blocchi
di celle di memoria), con lo scopo di focalizzare meglio l’attenzione su
alcuni aspetti di particolare interesse. La caratterizzazione sperimentale
è stata effettuata mediante l’utilizzo del QT200 (descritto brevemente
nell’Appendice A), macchina per il collaudo a livello industriale realizzata da
STMicroelectronics, che è in grado di generare segnali logici programmabili,
alimentazioni e tensioni analogiche e che, inoltre, dispone di linee dedicate
alle misure di tensioni e di correnti.
Nella prima parte di questo capitolo verrà presentata una panoramica
sulle tecniche di programmazione utilizzate per la memorizzazione a singolo
76
Algoritmi di Programmazione Multilivello
bit per cella nelle memorie a cambiamento di fase. Verrà poi illustrata
un’analisi effettuata su singola cella di memoria, concentrando l’attenzione
sui fenomeni più importanti, che porteranno alla definizione di algoritmi per
la programmazione multilivello. L’analisi su singola cella è stata effettuata
con due differenti approcci alla programmazione: il primo prevede che il
parametro controllato durante la programmazione sia la tensione ai capi
della cella di memoria, mentre nel secondo viene controllata la corrente che
vi scorre. Si discuterà infine degli algoritmi di programmazione proposti, e
verranno analizzati i risultati sperimentali ottenuti.
4.1
Tecniche
Tradizionali
di
Programmazione
In questo paragrafo vengono brevemente descritti gli impulsi di
programmazione utilizzati per effettuare una programmazione bilivello in
celle di memoria a cambiamento di fase. Tali impulsi sono stati ampiamente
caratterizzati, e i risultati sperimentali ottenuti sono noti in letteratura
[38, 39, 40, 43, 44].
Come è stato accennato nel Capitolo 1, un ruolo di fondamentale
importanza è giocato dal profilo temporale che possiede l’impulso elettrico di
programmazione (di tensione o di corrente) applicato alla cella. La capacità
termica associata alla cella di memoria è relativamente bassa e, pertanto, le
costanti di tempo termiche in gioco sono molto piccole (in particolare, esse
sono inferiori al ns). Ciò comporta che la temperatura raggiunta all’interno
del dispositivo evolva molto velocemente, e sia pertanto in grado di seguire i
profili degli impulsi elettrici applicati. I valori delle caratteristiche termiche
dei materiali che costituiscono la cella di memoria sono riassunti nella Tabella
4.1.
Gli impulsi di programmazione utilizzati per la memorizzazione a singolo
bit per cella sono sostanzialmente quattro, e vengono schematizzati in
Fig. 4.1, in cui vengono rappresentati i profili degli impulsi di tensione o
corrente da applicare alla cella di memoria in funzione del tempo.
• Impulso di Reset
L’impulso di Reset, rappresentato in Fig. 4.1(a) e da qui in avanti
evidenziato in rosso, è utilizzato per programmare la cella di memoria
4.1 Tecniche di Programmazione Tradizionali
77
in uno stato altamente resistivo. Esso deve pertanto essere in grado di
far passare il GST contenuto nella regione attiva dalla fase cristallina a
quella amorfa. A tal fine, è necessario fondere il materiale calcogenuro,
riscaldandolo oltre la sua temperatura di fusione Tm . Il GST fuso deve
poi raffreddare rapidamente, al fine di impedirgli di riorganizzare i
legami secondo l’ordine a lungo raggio tipico della fase cristallina. È
quindi indispensabile, che il tempo di discesa dell’impulso sia il più
breve possibile (dell’ordine del ns).
• Impulso di Set
L’impulso di Set (Fig. 4.1(b), da qui in avanti evidenziato in
blu) ha lo scopo di programmare la cella in uno stato a bassa
resistenza, facendo transitare gran parte del GST della regine attiva
dalla fase amorfa a quella cristallina. Questo impulso deve fare in
modo che il GST si mantenga il più a lungo possibile ad una
temperatura superiore a TX , inferiore alla temperatura di fusione, ma
tale da accelerare significativamente il processo di cristallizzazione.
Va precisato che TX non ha un valore preciso, in quanto essa è,
per definizione, la temperatura necessaria a far cristallizzare il GST
amorfo in un tempo prestabilito. La velocità con cui avvene il
fenomeno della cristallizzazione dipende infatti dalla temperatura e
cresce all’aumentare di questa. A temperatura ambiente, ad esempio,
il GST amorfo impiegherebbe centinaia di anni a cristallizzare. Poiché
l’operazione di Set deve avvenire nell’arco di decine/centinaia di ns, è
necessario che la cristallizzazione sia accelerata fornendo temperatura
alla cella. Al fine di raggiungere tempi di programmazione dell’ordine
delle decine di ns, è stata calcolata una TX di circa 380 ÷ 400 ◦ C.
• Impulso di Set-Sweep
Tale impulso ha lo scopo di portare la cella di memoria nella
condizione di Set minimo, nella condizione, cioè, caratterizzata dalla
resistenza minima. Questo tipo di impulso ha dunque la funzione di
rendere il GST della regione attiva completamente cristallino. A tal
fine il GST è portato inizialmente oltre la temperatura di fusione
Tm (esso viene cioè fuso, come nel caso dell’impulso di Reset), e
quindi raffreddato lentamente (contrariamente a quanto avviene per
l’operazione di Reset). In questo modo, il GST si trova per lungo tempo
78
Algoritmi di Programmazione Multilivello
ad alta temperatura, ed è in grado di assorbire la quantità di energia
necessaria a far cristallizzare in tempi brevi tutto il materiale contenuto
nella regione attiva. Risulta dunque chiaro che il tempo di discesa
dell’impulso di Set-Sweep deve essere piuttosto lungo (dell’ordine delle
centinaia di ns o del µs), com’è mostrato in Fig. 4.1(c). In particolare,
quanto più la discesa di questo impulso è lenta, tanto maggiore è la
quantità di GST che cristallizza, dando luogo a valori di resistenza più
bassi. Un vantaggio dell’utilizzo dell’impulso di Set-Sweep si ha nel caso
di programmazione di matrici di memoria. All’interno di una matrice
di memoria, infatti, esiste uno spread nelle caratteristiche fisiche delle
varie celle, e l’utilizzo del medesimo impulso di Set con fronti di discesa
a gradino produce risultati differenti da cella a cella. Con un impulso
di Set-Sweep, invece, poiché il raffreddamento della cella è graduale e
lento, si otterrà una condizione di resistenza più uniforme anche su una
vasta popolazione di celle di memoria [44].
• Impulso a scaletta decrescente
L’impulso a scaletta decrescente (Fig. 4.1(d)), detto per semplicità SCD
(StairCase-Down), svolge la stessa funzione dell’impulso di Set-Sweep.
Esso è costituito da una serie di impulsi di forma rettangolare e di
ampiezza decrescente, il primo dei quali porta la temperatura della
regione attiva oltre Tm . La funzione degli impulsi successivi è quella di
fornire l’energia necessaria alla cristallizzazione del GST, esattamente
come avviene nel caso del Set-Sweep. L’unica differenza sta nel fatto
che nel caso del Set-Sweep la temperatura della regione attiva passa
da Tm al valore della temperatura ambiente in modo continuo, mentre
nel caso dello SCD la transizione avviene in modo discreto. Al fine
di ridurre i tempi di programmazione, è possibile ridurre il numero di
impulsi da applicare alle celle, ottenendo però un’accuratezza inferiore
nella programmazione. In particolare, è stato dimostrato che possono
essere ottenuti buoni risultati per una programmazione bilivello con
l’applicazione di tre soli impulsi [43].
4.2 Approcci alla Programmazione
prog
prog
prog
prog
79
prog
prog
(a) Impulso di Reset.
(b) Impulso di Set.
prog
prog
prog
prog
prog
(c) Impulso di tipo Set-Sweep.
prog
(d) Impulso a scaletta decrescente.
Figura 4.1: Impulsi di programmazione tradizionali.
4.2
Approcci alla Programmazione
In questo paragrafo verranno descritti brevemente i due metodi utilizzati
per effettuare la programmazione di celle di memoria PCM (programmazione
pilotata in tensione e programmazione pilotata in corrente), mostrando come
essi possono essere implementati sui due dispositivi sperimentali utilizzati
(ZZA0-MOS e ZZA0-BJT).
Riscaldatore
GST amorfo
GST cristallino
Conducibilità termica
[J/(cmKs)]
0.3
0.003
0.005
Capacità termica per unità
di volume [J/(cm3 K)]
0.7
1.2
1.2
Tabella 4.1: Proprietà termiche dei materiali costituenti la cella.
80
Algoritmi di Programmazione Multilivello
OC
VSET VRESET VREAD
VYO
Icell
YO
Md
VDISCH
VPCX
Figura 4.2: Schema circuitale semplificato del cammino di lettura/scrittura del
dispositivo ZZA0-BJT.
4.2.1
Programmazione Pilotata in Tensione
In Fig. 4.2 è mostrata una parte del cammino di lettura/scrittura del
dispositivo ZZA0-BJT. Nella parte sinistra della figura è rappresentato un
dettaglio semplificato del blocco OC descritto nel Capitolo 3, in cui è
mostrato come le tensioni di lettura (VREAD ) e di programmazione (VSET
e VRESET ) vengono passate al gate del transistore YO, al fine di polarizzare
la bit-line. Come si può notare, i circuiti di programmazione permettono di
effettuare solamente una programmazione pilotata in tensione (voltage-driven
programming) della cella di memoria. Tali circuiti permettono infatti di
imporre una tensione ai capi della cella stessa, ma non è possibile controllare
la corrente che vi scorre durante le operazioni di programmazione.
Uno schema semplificato dei diagrammi temporali dei segnali che
interessano le operazioni di lettura e programmazione (l’unica differenza tra
queste operazioni risiede nel valore della tensione utilizzata per polarizzare la
bit-line) è mostrato in Fig. 4.3. Dopo che la cella è stata selezionata tramite
il selettore di riga (segnale VP CX basso) e il transistore Md , che si occupa
di scaricare la capacità parassita della bit-line, è stato disabilitato (segnale
VDISCH basso), la bit-line è polarizzata in lettura o programmazione tramite
la tensione VY O , e attraverso la cella di memoria scorre una corrente di lettura
o programmazione (Icell ).
4.2 Approcci alla Programmazione
81
PCX
DISCH
YO
cell
Figura 4.3: Schema delle temporizzazioni per le operazioni di lettura e
programmazione nel dispositivo ZZA0-BJT.
Anche il dispositivo ZZA0-MOS è dotato dei circuiti necessari ad
effettuare la programmazione pilotata in tensione per le celle di memoria, e le
operazioni sono simili a quelle descritte per il dispositivo ZZA0-BJT. In Fig.
4.4 sono mostrati il cammino di lettura/scrittura del dispositivo ZZA0-MOS
(in questo caso non è mostrato il blocco OC, in quanto è identico a quello
visto per il chip ZZA0-BJT), e i diagrammi temporali relativi alle operazioni
di lettura e di programmazione pilotata in tensione. Come si può notare
dalla Fig. 4.4(b), l’andamento dei segnali è praticamente identico al caso
dello ZZA0-BJT, ad eccezione che per il comportamento del segnale VP CX .
Affinché la cella di memoria sia selezionata, infatti, questo segnale deve essere
portato ad un valore logico alto (in particolare a 2 V), in quanto il selettore
è un transistore NMOS pilotato tramite il gate, e non un transistore bipolare
pnp pilotato tramite base come nel caso precedente.
4.2.2
Programmazione Pilotata in Corrente
Al contrario del dispositivo ZZA0-BJT, il dispositivo ZZA0-MOS
permette all’utilizzatore di controllare la corrente che scorre all’interno
della cella durante le operazioni di programmazione. Tale corrente può
essere infatti controllata agendo sulla tensione applicata al gate del
transistore MOS di selezione, in quanto il valore di questa può essere fornito
dall’esterno tramite un piedino dedicato. In altre parole, il selettore MOS,
invece che come interruttore, viene utilizzato come generatore di corrente,
82
Algoritmi di Programmazione Multilivello
VYO
YO
PCX
Icell
Md
VDISCH
DISCH
YO
VPCX
cell
(a) Schema circuitale semplificato
del cammino di lettura/scrittura del
dispositivo ZZA0-MOS.
(b) Schema delle temporizzazioni
per le operazioni di lettura e
programmazione pilotate in tensione
nel dispositivo ZZA0-MOS.
Figura 4.4: Schema circuitale del cammino di lettura/scrittura del dispositivo
ZZA0-MOS e temporizzazioni per la lettura e la programmazione pilotate in
tensione.
consentendo cosı̀ un controllo sufficientemente accurato della corrente
di programmazione, implementando quella che in seguito verrà definita
tecnica di programmazione pilotata in tensione (current-driven programming
technique). La programmazione pilotata in corrente non è realizzabile sul
dispositivo ZZA0-BJT, in quanto la caratteristica esponenziale del selettore
bipolare rende sostanzialmente impossibile effettuare un controllo accurato
della corrente di programmazione.
In Fig. 4.5, assieme allo schema del cammino di lettura/scrittura del
dispositivo, vengono mostrate le temporizzazioni dei segnali nel caso della
programmazione pilotata in corrente. Contrariamente ai casi analizzati in
precedenza, VP CX è ora una variabile analogica, ed è il suo valore a
determinare quello della corrente di programmazione. Il segnale VP CX è
applicato al gate del selettore dopo un tempo twait a partire dalla salita
del segnale VY O , forzando cosı̀ la corrente desiderata attraverso la cella di
memoria. Il tempo di ritardo twait serve a garantire che la capacità parassita
della bit-line sia completamente caricata al valore VBL = VY O − (Vth − Vov )
(Equazione 3.2), permettendo cosı̀ un controllo più adeguato della corrente
4.2 Approcci alla Programmazione
VYO
83
YO
twait
PCX
Icell
Md
VDISCH
DISCH
YO
VPCX
cell
(a) Schema circuitale semplificato
del cammino di lettura/scrittura del
dispositivo ZZA0-MOS.
(b) Schema delle temporizzazioni
per l’operazione di programmazione
pilotata in corrente nel dispositivo
ZZA0-MOS.
Figura 4.5: Schema circuitale del cammino di lettura/scrittura del dispositivo
ZZA0-MOS e temporizzazioni per la programmazione pilotata in corrente.
che attraversa la cella durante la programmazione. Il valore di twait utilizzato
in questa caratterizzazione è di 2 µs.
Al fine di ottenere una corrispondenza tra il valore di VP CX applicato e
la corrente di programmazione che scorre attraverso la cella di memoria,
è stata effettuata una misura di quest’ultima al variare della tensione
VP CX . In particolare, è stata eseguita una misura indiretta della corrente
di programmazione. Lo schema circuitale semplificato per la misura di Icell è
mostrato in Fig. 4.6. Come si può vedere dalla figura, il drain del transistore
YO è collegato al piedino VA (a cui è collegata la tensione di polarizzazione
della bit-line) attraverso il decodificatore di colonna, qui rappresentato da due
transistori MOS a canale p connessi in serie. Al fine di misurare la corrente
Icell , tra il piedino VA e la linea di alimentazione di uscita della macchina
di test QT200 (VB ), è stata collegato un resistore. Il valore di Icell può cosı̀
essere ottenuto in modo indiretto misurando la caduta di tensione ai capi del
resistore tramite un oscilloscopio.
In Fig. 4.7 è mostrata un’immagine dello schermo dell’oscilloscopio
che chiarisce meglio come è stata effettuata la misura. La traccia blu
rappresenta il segnale WE, che abilita la salita della tensione VY O , la traccia
84
Algoritmi di Programmazione Multilivello
VB
R
VA
VGD
Decodificatore
di colonna
VYO
Icell
YO
Md
VDISCH
VPCX
Figura 4.6: Schema circuitale del cammino utilizzato per la misura della corrente
di programmazione nel dispositivo ZZA0-MOS.
rossa rappresenta il segnale WEREXT, che abilita la salita della tensione
VP CX , mentre in verde è rappresentata la tensione VA misurata sul piedino
corrispondente del chip. Come si può vedere dalla figura, la tensione VA
presenta un primo spike negativo in presenza della salita del segnale WE,
dovuta alla carica della capacità parassita della bit-line, come è stato chiarito
in precedenza. Dopo la salita del segnale WEREXT, invece, si osserva
una caduta nella tensione VA , il cui valore è proporzionale alla corrente di
programmazione Icell . Dopo che i segnali WE e WEREXT tornano al valore
basso, si osserva un secondo spike negativo in VA , dovuto alla scarica delle
capacità di gate dei transistori a canale p, la cui tensione VGD passa da 0 a
VB . La misura della corrente di programmazione è stata ripetuta per vari
valori di VP CX , ed i risultati ottenuti sono mostrati in Fig. 4.8. Il valore di
Icell durante la programmazione pilotata in corrente mostra un andamento
lineare con la tensione di controllo VP CX , e varia tra 0 e un valore massimo
di circa 800 µA nel range utilizzato per la programmazione. L’andamento
mostrato dalla corrente di drain (Icell ) del transistore di selezione rispetto
alla sua tensione gate-source (VP CX ) è dovuto al fenomeno di saturazione
della velocità di canale. Tale fenomeno implica infatti che la corrente di drain
di un MOSFET nella regione di saturazione cresca linearmente, invece che
4.3 Analisi della Programmazione su Singola Cella di Memoria 85
WE
WEREXT
VA
Figura 4.7: Immagine dell’oscilloscopio dei segnali per la misura della corrente
di programmazione.
in maniera quadratica, con il suo overdrive.
4.3
Analisi della Programmazione su Singola
Cella di Memoria
In questo paragrafo verranno discusse le analisi effettuate su singole
celle di memoria, al fine di capire alcuni fenomeni che porteranno alla
definizione di un algoritmo di programmazione multilivello che permetta di
effettuare una memorizzazione a due bit per cella. In particolare, è stato
analizzato il comportamento delle celle di memoria in funzione della durata
e dell’ampiezza degli impulsi applicati, sia nel caso della programmazione
pilotata in tensione, sia in quello della programmazione pilotata in corrente.
Verrà poi analizzato l’impatto della condizione iniziale di Reset sulla
programmazione multilivello, aspetto indispensabile ai fini della definizione
dell’algoritmo proposto.
Come è stato accennato in precedenza, per effettuare una
programmazione multilivello è necessario poter programmare la cella
di memoria a livelli di resistenza intermedi tra quello dello stato di Reset
86
Algoritmi di Programmazione Multilivello
800
700
600
Icell [μA]
500
400
300
200
100
0
0.5
1
1.5
2
2.5
3
3.5
VPCX [V]
Figura 4.8: Corrente di programmazione in funzione di VP CX .
e quello dello stato completamente cristallino, modulando la frazione
cristallina della cella stessa [45]. In Fig. 4.9 è mostrato l’andamento della
resistenza di una cella PCM in funzione della corrente di programmazione a
partire dallo stato di Set e da quello di Reset [46]. Tali curve sono ottenute
nel seguente modo: alla cella di memoria viene applicato un impulso di
programmazione di corrente Iprog , dopodiché viene letto il valore della
resistenza della cella; a questo punto la cella viene riportata nello stato
iniziale (stato di Set, pallini neri, o stato di Reset, pallini bianchi), e viene
applicato un nuovo impulso di programmazione di ampiezza superiore a
quella del precedente, dopodiché viene effettuata nuovamente la lettura della
cella. Il procedimento appena descritto viene iterato in tutto l’intervallo
analizzato di Iprog . In Fig. 4.9 sono evidenziate le regioni in cui la cella di
memoria si trova in uno stato di programmazione intermedio tra quello
di Set e quello di Reset. In particolare, si hanno una zona di Set parziale
(partial Set) e una di Reset parziale (partial Reset). Lo stato di Set parziale
si ottiene programmando la cella a partire da una condizione di Reset, ed è
caratterizzato da una parziale cristallizzazione del volume di GST amorfo
tipico dello stato di Reset, mentre il Reset parziale si ottiene programmando
una cella che è originariamente nello stato altamente conduttivo, ed è
R [Ω]
4.3 Analisi della Programmazione su Singola Cella di Memoria 87
Iprog [μA]
Figura 4.9: Resistenza di una cella PCM in funzione della corrente di
programmazione Iprog [46].
caratterizzata dalla formazione di un volume di materiale amorfo via via
crescente all’interfaccia tra GST e riscaldatore.
Studi già noti in letteratura [46] hanno dimostrato la cella PCM negli
stati di programmazione intermedia si può presentare in due configurazioni
fondamentali, note rispettivamente come configurazione di tipo serie (4.10(a))
e configurazione di tipo parallelo (4.10(b)). I due nomi derivano dalla
differente struttura fisica della cella programmata e, di conseguenza, dal
modo in cui avviene la conduzione elettrica tra i terminali della cella stessa.
La cella di tipo serie è costituita da un volume di GST amorfo all’interfaccia
con il riscaldatore, che risulta posto in serie al restante GST cristallino. La
resistenza equivalente dello strato di GST è dunque data dalla serie di una
resistenza di valore basso (dovuta al materiale cristallino), e una di valore
alto (dovuta al materiale amorfo). La resistenza complessiva della cella (che
comprende anche il contributo dovuto alla resistenza dell’heater, posta in
serie a quella dello strato di GST) può essere modulata regolando lo spessore
del GST amorfo. Per effettuare una programmazione multilivello, come si può
vedere da Fig. 4.9, è necessario ottenere valori di resistenza dell’ordine del kΩ.
A tal fine, lo spessore del volume di GST amorfo deve essere molto sottile.
Come si può facilmente comprendere, ottenere tali valori di resistenza con
un sufficiente grado di accuratezza risulta essere piuttosto arduo, oltre che
poco riproducibile. Esiste inoltre una forte probabilità che, per il fenomeno
Algoritmi di Programmazione Multilivello
Isolante
Riscaldatore
Metallo
Metallo
Isolante
Isolante
Riscaldatore
88
Isolante
Metallo
Metallo
(a) Struttura schematica di una cella
multilivello di tipo serie.
(b) Struttura schematica di una cella
multilivello di tipo parallelo.
Figura 4.10: Tipi di cella multilivello.
della cristallizzazione, si formino cammini cristallini spuri all’interno di un
volume tanto sottile, il che abbatte la resistenza della cella e degrada quindi
l’informazione immagazzinata.
Nella cella di tipo parallelo, invece, si ha un volume di GST amorfo,
all’interno del quale è stato ottenuto un cammino cristallino altamente
conduttivo. La resistenza equivalente dello strato di GST in questo caso
risulta essere data dal parallelo tra le resistenze del cammino conduttivo e
del GST amorfo rimanente. In serie a queste due vi è inoltre un’ulteriore
resistenza data dallo strato superiore di GST cristallino, il cui valore è
trascurabile. La resistenza complessiva può essere cosı̀ considerata come il
parallelo tra quella del cammino cristallino e quella del restante materiale
amorfo. Il valore della resistenza della cella può essere modulato agendo sia
sul diametro del cammino cristallino, sia sulla lunghezza di questo, andando
cosı̀ a far decrescere il valore di resistenza rispetto a quello iniziale. In una
cella di tipo parallelo, la probabilità che si formi un cammino conduttivo
spurio dovuto alla cristallizzazione del materiale amorfo è molto più remota
rispetto al caso precedente, in quanto il materiale amorfo ha uno spessore
molto maggiore.
In Fig. 4.11 viene mostrata la formazione di cammini cristallini spuri nella
cella con configurazione di tipo serie e in quella con configurazione di tipo
parallelo. Quanto maggiore è lo spessore del volume amorfo, tanto maggiore
è la lunghezza del cammino conduttivo parassita e, quindi, tanto più è scarsa
4.3 Analisi della Programmazione su Singola Cella di Memoria 89
Metallo
Metallo
Cammino spurio
Isolante
Isolante
Riscaldatore
Isolante
Riscaldatore
Cammino spurio
Metallo
Metallo
(a)
(b)
Isolante
Figura 4.11: Formazione di cammini conduttivi spuri in una cella di tipo serie
(a) e di tipo parallelo (b).
la probabilità che questo si formi.
Appare dunque chiaro che la cella multilivello di tipo parallelo presenta
caratteristiche più vantaggiose rispetto a quella di tipo serie, sia in termini
di riproducibilità, sia in termini di ritenzione del dato memorizzato. Un
algoritmo utilizzato per ottenere una configurazione di tipo parallelo è
mostrato in Fig. 4.12. L’algoritmo consiste in una sequenza di impulsi di
Reset (in rosso) e di Set (in blu) tra loro intercalati: gli impulsi di Reset
hanno la funzione di formare il volume di GST amorfo, mentre quelli di Set
formano il cammino conduttivo. Ad ogni impulso di Set segue una verifica
del dato scritto (verify), mediante un confronto della corrente di lettura
della cella con una opportuna corrente di riferimento. Ogni impulso di Set
ha un’ampiezza maggiore di quello precedente, in quanto il diametro del
cammino conduttivo dipende dall’ampiezza dell’impulso di Set applicato:
man mamo che l’ampiezza dell’impulso aumenta, la sezione del cammino
cristallino risulta essere sempre maggiore, facendo di conseguenza diminuire
la resistenza complessiva della cella di memoria.
4.3.1
Curva di Programmazione della Cella PCM con
Pilotaggio in Tensione
Al fine di ottenere le caratteristiche di programmazione delle celle PCM,
l’algoritmo di programmazione mostrato in Fig. 4.12 è stato applicato a
90
Algoritmi di Programmazione Multilivello
prog
Verify
Verify
Verify
prog
Figura 4.12: Algoritmo di programmazione per ottenere una cella di tipo
parallelo.
singole celle sul dispositivo ZZA0-MOS, utilizzando l’approccio che prevede
il controllo della tensione durante l’impulso di programmazione. Invece
dell’operazione di verify, ad ogni impulso di Set segue un’operazione di DMA
(Direct Memory Access, accesso diretto alla memoria), che prevede che il
valore della corrente che scorre nella cella in condizioni di lettura venga
rilevato direttamente dal QT200. Grazie all’applicazione di un impulso di
Reset prima di ogni impulso di Set, questo algoritmo permette di valutare
l’effetto di un singolo impulso di Set sulla corrente di lettura della cella di
memoria.
In Fig. 4.13 viene mostrata la curva di programmazione di una cella PCM
ottenuta mediante l’applicazione dell’algoritmo di Fig. 4.12: sull’asse delle
ascisse è rappresentata la tensione VSET applicata al gate del transistore YO,
mentre sull’asse delle ordinate è riportata la corrente di lettura (Icell ), che
è dunque funzione solo dell’ultimo impulso di Set applicato. La durata dei
singoli impulsi di Reset e di Set è di 50 ns, l’ampiezza dell’impulso di Reset
è di 5.2 V, mentre l’incremento di tensione tra un impulso di Set e quello
successivo è di 25 mV. Come è stato sottolineato nel paragrafo precedente,
la curva ottenuta non è monotona, e non è quindi possibile stabilire una
relazione univoca tra il valore di Icell e l’ampiezza dell’impulso di Set. Tale
valutazione sperimentale è stata più volte ripetuta sulla singola cella di
memoria, mostrando un notevole spread tra le curve di programmazione,
com’è mostrato nelle Fig. 4.14. In queste figure sono riportate le curve di
programmazione ottenute iterando l’algoritmo sopra descritto sulla medesima
4.3 Analisi della Programmazione su Singola Cella di Memoria 91
60
50
Icell [μA]
40
30
20
10
0
0
0.5
1
1.5
2
VSET [V]
2.5
3
3.5
4
Figura 4.13: Curva di programmazione di una cella PCM ottenuta con l’algoritmo
mostrato in Fig. 4.12.
cella PCM, rispettivamente 10, 25, 50 e 100 volte.
Se si analizza la Fig. 4.14(d), risulta chiaro che questa tecnica di
programmazione non può essere utilizzata per realizzare una memorizzazione
multilivello che utilizzi un numero limitato di impulsi di programmazione, a
causa del comportamento non monotono e del forte spread che si osserva
tra le varie curve. Risulta anche chiaro che per ogni impulso di Set avente
un’ampiezza nell’intervallo tra 1.5 V e 2.5 V, è possibile ottenere una corrente
letta che varia in maniera casuale tra 0 e circa l’85% del valore massimo
rilevato. Per esempio, per un impulso di Set dell’ampiezza di circa 2.4 V si
può ottenere una corrente di lettura che varia tra 0 e 35 µA.
La variazione del livello della corrente letta ottenuto con lo stesso
impulso di programmazione, e il comportamento non monotono delle curve
di programmazione stesse possono essere causati sostanzialmente da due
fenomeni, entrambi di natura stocastica:
• la struttura dello stesso volume di GST amorfo dopo ogni impulso di
Reset;
• la formazione del cammino cristallino all’interno del volume di GST
amorfo.
Per quanto riguarda la struttura del volume di GST amorfo, è plausibile
che esso vari come forma e dimensioni dopo i diversi impulsi di Reset, ed
Algoritmi di Programmazione Multilivello
60
60
50
50
40
40
Icell [μA]
Icell [μA]
92
30
30
20
20
10
10
0
0
0.5
1
1.5
2
VSET [V]
2.5
3
3.5
0
4
0
0.5
1
1.5
(a)
2
VSET [V]
2.5
3
3.5
4
2.5
3
3.5
4
(b)
60
60
50
50
40
Icell [μA]
Icell [μA]
40
30
30
20
20
10
10
0
0
0.5
1
1.5
2
VSET [V]
(c)
2.5
3
3.5
4
0
0
0.5
1
1.5
2
VSET [V]
(d)
Figura 4.14: Curve di programmazione sulla stessa cella di memoria ottenute
iterando l’algoritmo di Fig. 4.12 10 (a), 25 (b), 50 (c) e 100 volte (d).
è altrettanto plausibile che al suo interno siano contenuti residui di GST
cristallino, che andranno ad influenzare la successiva operazione di Set. Per
quanto riguarda la formazione del cammino cristallino, bisogna ricordare
che il processo di cristallizzazione avviene per la crescita di nuclei di GST
cristallino all’interno di quello amorfo (si veda il Paragrafo 2.4). La posizione
e il numero di tali nuclei varia di volta in volta, introducendo un’aleatorietà
nella cristallizzazione. Quando viene applicato un impulso di Set, infatti, le
linee di forza del campo elettrico all’interno del materiale amorfo tendono
ad addensarsi in prossimità dei nuclei cristallini, e innescano un threshold
switching locale del materiale amorfo attorno a questi, determinando cosı̀ la
cristallizzazione di un cammino che segue questi nuclei.
Può quindi accadere che, per i motivi appena esposti, ad essere interessata
dal threshold switching sia una quantità relativamente grande di GST amorfo,
il che porta a un valore relativamente basso densità di corrente durante
la programmazione. In questo caso, la corrente non scorre attraverso un
4.3 Analisi della Programmazione su Singola Cella di Memoria 93
prog
Verify
Verify
Verify
Verify
Verify
prog
Figura 4.15: Algoritmo di programmazione SCU.
filamento sottile, causando cosı̀ un riscaldamento sufficiente ad aumentare
rapidamente la frazione cristallina della cella, ma scorre attraverso una
sezione di area maggiore, portando il materiale ad una temperatura più bassa,
e di conseguenza cristallizzando una quantità minore di GST amorfo.
Una delle possibili tecniche per controllare e minimizzare lo spread appena
descritto consiste nel modificare l’algoritmo di programmazione, ed utilizzare
la sequenza di impulsi mostrata in Fig. 4.15. Secondo questa sequenza,
partendo da una cella nello stato cristallino, viene applicato un solo impulso
di Reset, all’inizio dell’operazione di programmazione, al fine di formare il
volume di GST amorfo. In seguito viene applicata una sequenza di impulsi di
Set, ognuno di ampiezza superiore di una quantità costante rispetto a quella
del passo precedente, cosicché l’aspetto della sequenza di impulsi risulta
essere quello di una scaletta ascendente (StairCase Up, SCU).
In Fig. 4.16 è mostrata una curva di programmazione ottenuta con
l’algoritmo di programmazione SCU. L’ampiezza e la durata dei vari impulsi
applicati sono le medesime del caso precedente (Fig. 4.13). Se si utilizza
questo nuovo approccio alla programmazione, può essere ottenuta una
relazione biunivoca tra l’ampiezza dell’impulso di Set e il livello di corrente di
lettura. La curva di programmazione mostra inoltre un’andamento monotono
crescente, finché non viene raggiunto il valore massimo di corrente letta.
Dopo il raggiungimento di tale valore, infatti, l’ampiezza dell’impulso di
programmazione è tale da portare il GST oltre il suo punto di fusione, e
da questo punto in avanti la cella torna gradualmente nello stato di Reset, in
quanto a ogni impulso di Set il volume di GST portato alla fusione è maggiore
94
Algoritmi di Programmazione Multilivello
60
50
Icell [μA]
40
30
20
10
0
1.5
2
2.5
3
3.5
4
VSET [V]
Figura 4.16: Curva di programmazione di una cella PCM ottenuta con l’algortimo
SCU.
rispetto all’impulso precedente. La cella di memoria può considerarsi di
nuovo nello stato di Reset completo per tensioni applicate dell’ordine dei
4 V. È dunque possibile affermare che nel tratto discendente della curva di
programmazione la configurazione della cella è di tipo serie, mentre in quello
ascendente è di tipo parallelo. La curva di programmazione mostra dunque
un andamento monotono a tratti, con un cambio nel segno della pendenza
per una tensione applicata di circa 3 V, in quanto la condizione iniziale di
ogni singolo impulso di Set è data dal risultato finale del precedente passo di
programmazione.
Se si itera l’algoritmo di programmazione SCU sulla stessa cella, si osserva
uno spread di entità ridotta rispetto al caso dell’algoritmo precedente. La
Fig. 4.17 mostra le curve di programmazione ottenute ripetendo la stessa
sequenza di programmazione rispettivamente 10, 50 e 100 volte sulla stessa
cella di memoria. Lo spread ottenuto viene ancora attribuito alla formazione
casuale del cammino cristallino all’interno del volume di GST amorfo
iniziale e ad una variazione casuale della struttura fisica corrispondente alla
condizione di Reset di partenza. Il valore limitato dello spread delle curve di
programmazione ci permette di selezionare una sequenza limitata di impulsi
di programmazione per il corretto piazzamento del livello di corrente di
lettura di cella desiderato. Per esempio, se si vuole raggiungere un valore
di corrente di lettura di 20 µA, è necessario applicare alla cella una sequenza
di impulsi di Set tra 1.7 Ve 2.3 V. Una sequenza di programmazione che
60
60
50
50
50
40
40
40
30
Icell [μA]
60
Icell [μA]
Icell [μA]
4.3 Analisi della Programmazione su Singola Cella di Memoria 95
30
30
20
20
20
10
10
10
0
1.5
2
2.5
3
3.5
4
0
1.5
VSET [V]
(a)
2
2.5
3
3.5
4
0
1.5
2
2.5
3
VSET [V]
VSET [V]
(b)
(c)
3.5
4
Figura 4.17: Curve di programmazione sulla stessa cella di memoria ottenute
iterando l’algoritmo di programmazione SCU (Fig. 4.15) 10 (a), 50 (b), 100 volte
(c).
comprenda impulsi di Set nell’intervallo appena descritto è infatti in grado di
garantire che la cella raggiunga un livello di corrente letta di 20 µA per tutte
le curve di programmazione mostrate in Fig. 4.17(c). L’accuratezza della
corrente di lettura ottenuta dipende ovviamente dall’incremento di ampiezza
tra un impulso di Set e il successivo: quanto più piccolo è questo incremento,
tanto maggiore risulta il grado di precisione ottenuto, con lo svantaggio però
di ottenere cosı̀ tempi di programmazione più lunghi.
Quando si adotta una tecnica di programmazione di tipo Program &
Verify (P&V), la sequenza di impulsi di programmazione può essere fermata
quando viene ottenuto il valore di corrente di lettura desiderato. Il numero
di impulsi di programmazione da applicare in un dispositivo commerciale
deve essere scelto come il miglior compromesso che tra accuratezza, durata
complessiva dell’operazione di programmazione, e altri effetti secondari.
4.3.2
Analisi della
Tensione
Programmazione
Pilotata
in
In questo paragrafo viene fornita un’analisi della programmazione
pilotata in tensione per applicazioni multilivello, allo scopo di sottolineare
la dipendenza dell’accuratezza della programmazione dall’ampiezza degli
impulsi applicati. In particolare, verrà analizzato l’impatto di fenomeni
come il threshold switching, il self-heating e di parametri come l’ampiezza
e la durata degli impulsi di programmazione per i due algoritmi di
programmazione descritti nel Paragrafo precedente.
96
Algoritmi di Programmazione Multilivello
L’analisi sperimentale è stata condotta su una cella di memoria
del dispositivo ZZA0-MOS. Gli impulsi di Reset sono caratterizzati da
un’ampiezza di 5.2 V e da una durata di 50 ns, mentre la tensione degli
impulsi di Set varia tra un valore minimo V0 di 1 V, ed un valore massimo
Vf di 4.4 V, con un incremento ΔV di 25 mV.
In Fig. 4.18 è mostrata la curva di programmazione ottenuta con
l’algoritmo di Fig. 4.12, utilizzando una durata temporale di 300 ns
per gli impulsi di Set. Com’è stato detto in precedenza, la tensione di
programmazione viene applicata al gate del transistore YO. La caduta di
tensione effettiva ai capi della cella di memoria al passo i risulta essere dunque
pari a VSET,i − VGS,i , dove VGS,i è la tensione tra gate e source del transistore
YO al passo i. Dalla Fig. 4.18 si può vedere che la programmazione della
cella comincia quando VSET raggiunge circa 1.6 V, che corrispondono a una
tensione ai capi della cella di circa 1.2 V, in quanto la tensione gate-source
del transistore YO è di circa 400 mV. Questo valore (1.2 V) corrisponde
al valore della tensione di soglia VSW,i del fenomeno di threshold switching
[25] del volume di materiale amorfo presente nella regione attiva della cella
ottenuto dopo l’applicazione dell’impulso di Reset al passo i. Infatti, finché
la tensione ai capi della cella è minore di VSW,i , attraverso la cella scorre una
corrente trascurabile, e la potenza termica generata per effetto Joule non è
sufficientemente elevata da riscaldare il GST oltre TX in modo da attivare il
processo di cristallizzazione.
Quando la tensione applicata ai capi della cella di memoria al passo
di programmazione i -esimo raggiunge VSW,i, si innesca il fenomeno del
threshold switching, e si ha pertanto un forte incremento nella corrente
che attraversa la cella: la temperatura all’interno della regione attiva cresce
quindi bruscamente. Se la temperatura diventa maggiore di TX , l’impulso di
programmazione attiva la cristallizzazione del GST, portando una riduzione
della resistenza della cella. In particolare, durante il passo di programmazione
i -esimo, le dinamiche di cristallizzazione seguono il modello JMAK (si
veda il Paragrafo 2.4). Al passo (i +1)-esimo, poiché la tensione ai capi
della cella è maggiore rispetto a quella del passo precedente, il GST
è ulteriormente soggetto all’innescarsi del threshold switching. Poiché la
temperatura all’interno del GST cresce al crescere dell’ampiezza dell’impulso
di Set, secondo la teoria JMAK la riduzione della resistenza del GST risulta
maggiore per valori più elevati di VSET . In modo analogo, si osserva una
maggiore diminuzione di resistenza per valori più elevati della durata degli
4.3 Analisi della Programmazione su Singola Cella di Memoria 97
−5
4.5
x 10
4
A
3.5
Icell [A]
3
2.5
2
1.5
1
0.5
0
1
1.5
2
2.5
3
3.5
4
4.5
VSET [V]
Figura 4.18: Curva di programmazione di una cella PCM ottenuta con l’algoritmo
di Fig. 4.12 (programmazione in tensione); tSET = 300 ns, parametri dell’impulso
di Reset: VRESET = 5.2 V, tRESET = 50 ns.
impulsi di programmazione tprog (Fig. 4.19).
Dalla Fig. 4.18 si vede che, nonostante il sostanziale incremento lineare
medio di Icell all’aumentare del valore di VSET (ΔIcell /ΔVSET ≈ 30 µA/V),
l’algoritmo di programmazione non risulta adatto per una memorizzazione
multilivello. Infatti, come si è già detto, la natura stocastica dei fenomeni
di amorfizzazione (ad opera degli impulsi di Reset) e cristallizzazione
(ad opera degli impulsi di Set) rendono la curva non monotona e, fatto
ancora più importante, in alcuni punti l’incremento ΔIcell della corrente
di lettura dovuto ad un singolo impulso di programmazione rispetto al
precedente risulta essere troppo ampio, il che limita cosı̀ l’accuratezza durante
la programmazione. Un caso esemplificativo è quello del punto A, dove
Icell passa da 20 µA a 34 µA con un singolo passo di programmazione,
con un aumento dunque di 6 µA, che è troppo elevato rispetto ad un
incremento medio di 0.75 µA per ogni singolo impulso applicato. Quando
la tensione di programmazione applicata supera 3 V, la temperatura del
GST raggiunge il punto di fusione, portando all’amorfizzazione del materiale
(si ha un’amorfizzazione parziale per 3 V < VSET < 3.5 V, mentre per valori
più elevati di VSET si ha un’amorfizzazione completa).
Se si utilizza l’algoritmo mostrato in Fig. 4.15, invece, il processo
98
Algoritmi di Programmazione Multilivello
−5
5
x 10
4.5
C
4
3.5
Icell [A]
3
B
2.5
2
1.5
A
1
0.5
0
1
1.5
2
2.5
3
3.5
4
4.5
VSET [V]
Figura 4.19: Curve di programmazione di una cella PCM ottenute con l’algoritmo
di Fig. 4.12 per differenti valori di durata degli impulsi di programmazione tprog :
50 ns (A, ×), 500 ns (B, +) e 1 µs (C, ∗); parametri dell’impulso di Reset: VRESET
= 5.2 V, tRESET = 50 ns.
di cristallizzazione della regione attiva del GST non dipende più da un
singolo impulso di programmazione, ma è funzione dell’intera sequenza di
programmazione applicata, poiché alla cella viene applicato un solo impulso
di Reset (all’inizio della routine di programmazione). In Fig. 4.20 è mostrata
una curva di programmazione ottenuta con l’algoritmo SCU, con gli stessi
parametri per gli impulsi di Set e di Reset utilizzati nel caso precedente.
In questo caso, la curva di programmazione mostra un comportamento
monotono, e la variazione di Icell in funzione di VSET è più controllata.
Sebbene la presente curva di programmazione possa risultare differente
programmando più celle di memoria all’interno della stessa matrice, o anche
ripetendo l’algoritmo sulla stessa cella (si veda il Paragrafo 4.3.1), la sua
forma rimane sempre la stessa. Un approccio di tipo Program & Verify
[47, 48] permette alla routine di programmazione di fermarsi quando viene
raggiunto l’obiettivo in termini di corrente letta, assicurando il livello di
accuratezza richiesto.
Il problema principale evidenziato dalla curva di Fig. 4.20 è la dipendenza
di ΔIcell /ΔVSET dal valore di VSET . Scendendo nello specifico, si possono
individuare due regioni nel tratto ascendente della curva di programmazione:
4.3 Analisi della Programmazione su Singola Cella di Memoria 99
−5
6
x 10
5
Icell [A]
4
3
2
1
0
1
1.5
2
2.5
3
3.5
4
4.5
VSET [V]
Figura 4.20: Curva di programmazione ottenuta utilizzando l’algoritmo SCU
(tprog = 300 ns).
la prima regione, in cui ΔIcell /ΔVSET è maggiore, corrisponde a valori di VSET
inferiori a circa 1.7 V, mentre la seconda, in cui ΔIcell /ΔVSET è minore, si
ha per VSET maggiore di 1.7 V. La corrente letta nella regione in cui si ha
un valore più elevato di ΔIcell /ΔVSET non può essere utilizzata qualora sia
richiesto un elevato grado di accuratezza, come nel caso della memorizzazione
multilivello. Al fine di studiare il problema, sono state eseguite ulteriori
misure utilizzando diversi valori di tprog . In particolare, sono stati utilizzati
valori di tprog tra 50 ns e 1 µs. Per semplicità, in Fig. 4.21 sono riportate
soltanto tre curve di programmazione, per valori di tprog di 50 ns (A), 500 ns
(B) e 1 µs (C). Si può notare che, all’aumentare del valore di tprog , cresce il
valore massimo di Icell ottenibile, e la regione iniziale caratterizzata da un
valore elevato di ΔIcell /ΔVSET si restringe.
In Fig. 4.22 è mostrato il circuito equivalente del cammino di
lettura/programmazione del dispositivo ZZA0-MOS. Le resistenze RGST ,
Rh e Ron rappresentano rispettivamente le resistenze equivalenti dello
strato di GST, del riscaldatore, e del transistore MOS di selezione nello
stato di ON (la resistenza dello strato di GST verrà d’ora in avanti
pg
rd
e RGST
, a seconda che la cella si trovi rispettivamente in
chiamata RGST
100
Algoritmi di Programmazione Multilivello
−5
6
x 10
C
5
B
4
Icell [A]
A
3
2
1
0
1
1.5
2
2.5
3
3.5
4
4.5
VSET [V]
Figura 4.21: Curve di programmazione di una cella PCM ottenute con l’algoritmo
SCU per differenti valori di durata degli impulsi di programmazione tprog : 50 ns
(A, ×), 500 ns (B, +) e 1 µs (C, ∗).
lettura o programmazione). Sotto l’ipotesi che l’operazione di lettura venga
portata a termine correttamente, evitando cioè che avvenga il fenomeno del
rd
threshold switching, la resistenza della cella RGST,i
dopo l’i -esimo passo di
programmazione può essere espressa come:
rd
RGST,i
=
rd
VREAD − VGS,i
− RH − Ron ,
Icell,i
(4.1)
dove VREAD è la tensione di lettura applicata al gate del transistore YO,
Icell,i è la corrente di lettura dopo il passo di programmazione i -esimo, e
rd
VGS,i
è la corrispondente tensione gate-source del transistore YO durante
la lettura, mentre Ron e RH indicano rispettivamente la resistenza di on
pg
rd
del selettore MOS e la resistenza dell’heater. Definiamo ora VGST,i
e VGST,i
rispettivamente, la tensione ai capi dello strato di GST durante il passo
i -esimo di lettura e il passo i -esimo di programmazione. Poiché, per valori di
tensione applicata maggiori di kT /q (k, T e q sono rispettivamente la costante
di Boltzmann, la temperatura assoluta e la carica dell’elettrone), la resistività
del GST cristallino e quella dell’amorfo possono essere modellizzate come
4.3 Analisi della Programmazione su Singola Cella di Memoria101
aventi una dipendenza esponenziale dalla tensione applicata [49, 50, 51], si
può assumere che la resistenza dello strato di GST all’inizio dell’(i +1)-esimo
pg
rd
, dipenda da RGST,i
nel seguente modo:
passo di programmazione, RGST,i+1
pg
pg
rd
RGST,i+1
= eα(VGST,i −VGST,i+1 ) RGST,i
,
rd
(4.2)
dove α è un opportuno fattore di normalizzazione. La caduta di tensione ai
pg
capi del GST durante l’impulso considerato, VGST,i+1
, dipende ovviamente dal
pg
valore di resistenza RGST,i+1 . Al fine di determinare la resistenza del GST
all’inizio del passo di programmazione (i +1)-esimo può essere utilizzato il
seguente sistema di equazioni:
= (VSET,i+1 −
pg
VGST,i+1
pg
VGS,i+1
= Vth +
pg
VGS,i+1
)
pg
RGST,i+1
pg
RGST,i+1
+ RH + Ron
pg
IGST,i+1
2
kY O
(4.4)
pg
VGST,i+1
= pg
,
RGST,i+1
pg
IGST,i+1
(4.3)
(4.5)
pg
dove kY O = μp Cox (W/L)Y O , con ovvio significato dei simboli, e IGST,i+1
è la corrente di programmazione all’inizio dell’impulso di programmazione
pg
può essere
considerato. Dal precedente sistema e dalla (4.2), RGST,i+1
calcolata risolvendo l’equazione implicita:
rd
α VGST,i
−VSET,i+1 +Vth +
pg
RGST,i+1
=e
pg
2V
GST,i+1
pg
kY O R
GST,i+1
pg
R
GST,i+1
pg
R
+RH +Ron
GST,i+1
rd
RGST,i
. (4.6)
La tensione VSET,i+1 applicata durante l’impulso di programmazione
(i +1)-esimo provoca l’innescarsi del threshold switching se la tensione ai capi
del GST è maggiore della tensione di soglia di switching VSW,i , cioè se il valore
pg
dato da (4.6) soddisfa la seguente relazione:
di RGST,i+1
pg
RGST,i+1
≥
RH + Ron
pg
VSET,i+1 −VGS,i+1
VSW,i
−1
,
(4.7)
o, equivalentemente, considerando la 4.2, se:
⎛
pg
rd
RH − Ron
rd
RGST,i+1
≥ eα(VGST,i+1 −VGST,i ) ⎝ V
−V pg
SET,i+1
VSW,i
GS,i+1
⎞
−1
⎠,
(4.8)
102
Algoritmi di Programmazione Multilivello
VA
VSET
VRESET
VREAD
YO
VSET - VGS
RGST
RH
Ron
Figura 4.22: Circuito equivalente del cammino di scrittura del dispositivo
ZZA0-MOS durante la programmazione.
che implica:
Icell,i ≤
rd
VREAD,i − VGS,i
·
RH + Ron
1+
1
pg
rd
VSW,i
eα(VGST,i+1 −VGST,i )
pg
VSET,i+1 −VGS,i+1
−VSW,i
. (4.9)
È bene ricordare che, nel tratto ascendente della curva di
programmazione, la porzione cristallina all’interno della cella di memoria
cresce secondo una distribuzione di fase di tipo parallelo, nella quale,
come sottolineato in precedenza, la fase amorfa e quella cristallina sono
sostanzialmente disposte in parallelo. Lo spessore del volume di GST
amorfo rimane perciò sostanzialmente invariato nei successivi passi di
programmazione e, quindi, il valore di VSW,i è all’incirca costante per ogni
passo di programmazione, com’è stato confermato sperimentalmente. La
linea nera tratteggiata di Fig. 4.23 corrisponde alla relazione (4.9), in cui
per tutti i parametri sono stati utilizzati valori in accordo con i risultati
sperimentali. Per ogni valore di Icell al di sotto di questa linea, la regione
attiva del GST è soggetta al threshold switching. In questa regione della curva
di programmazione, poiché la tensione ai capi della cella è pari alla tensione
di hold VH [52], si verifica un brusco incremento nella tensione gate-source
del transistore YO e, di conseguenza, nella corrente che attraversa la cella, il
che causa una forte diminuzione della resistenza della cella per ogni impulso
di programmazione a causa dell’incremento di temperatura che ne consegue.
Al contrario, per valori di Icell al di sopra la linea nera tratteggiata, la
variazione della resistenza della cella è dovuta al self-heating del materiale
calcogenuro, e la corrente che attraversa la cella è limitata dalla resistenza
4.3 Analisi della Programmazione su Singola Cella di Memoria103
−5
−5
x 10
6
5
5
4
4
Icell [A]
Icell [A]
6
3
3
2
2
1
1
0
1
1.5
2
2.5
3
3.5
x 10
0
1
4
1.5
2
2.5
3
3.5
4
VSET [V]
VSET [V]
(a)
(b)
−5
6
x 10
5
Icell [A]
4
3
2
1
0
1
1.5
2
2.5
3
3.5
4
VSET [V]
(c)
Figura 4.23: Curve di programmazione di una cella PCM ottenute con l’algoritmo
SCU per differenti valori di durata degli impulsi di programmazione tprog : 50 ns
(A, ×), 500 ns (B, +) e 1 µs (C, ∗). Al di sotto della linea tratteggiata, definita
dall’Equazione (4.9), si verifica il threshold switching del materiale calcogenuro.
104
Algoritmi di Programmazione Multilivello
della cella stessa, dando cosı̀ luogo ad un aumento di temperatura più
controllato, e, quindi, ad un valore più basso di ΔIcell /ΔVSET .
È dunque possibile affermare che, anche in presenza di threshold
switching, l’utilizzo di impulsi di programmazione di breve durata permette
di raggiungere bassi livelli di corrente di programmazione con un adeguato
grado di accuratezza. Al contrario, impulsi di tensione di durata maggiore
permettono di programmare alti valori di corrente letta (attraverso il
self-heating del GST), incrementando il limite superiore della finestra
di lettura. Risulta chiaro che, al fine di sfruttare la massima finestra
di lettura permessa raggiungendo un elevato grado di accuratezza, una
programmazione multilivello pilotata in tensione con l’algoritmo SCU deve
utilizzare sia impulsi brevi, sia impulsi di durata maggiore, scegliendo
il miglior compromesso tra ampiezza e durata di ciascun impulso di
programmazione.
4.3.3
Dipendenza delle Curve di Programmazione
Pilotata in Tensione dall’Ampiezza e dalla
Durata degli Impulsi di Set, e dalla presenza
degli Impulsi di Reset
In questo Paragrafo verrà analizzato l’effetto dell’ampiezza e della durata
degli impulsi di programmazione sulle curve di programmazione pilotate
in tensione. Verrà studiato anche l’impatto della presenza degli impulsi
di Reset sulla curva di programmazione stessa. A tal fine, a una cella
PCM del dispositivo ZZA0-BJT sono stati applicati differenti algoritmi di
programmazione. Gli impulsi di programmazione sono stati applicati al gate
del transistore YO (tensione VY O di Fig. 4.2), e lo stato di programmazione
della cella è stato monitorato mediante DMA.
Lo scopo della prima analisi è quello di valutare l’effetto di un singolo
impulso di Set sulla resistenza della cella in funzione della durata temporale
e dell’ampiezza dell’impulso stesso. La routine di programmazione è mostrata
in Fig. 4.24(a). Alla cella di memoria viene applicata una sequenza di
impulsi di Set. Ogni impulso di Set è preceduto da un impulso di Reset,
che ha lo scopo di reinizializzare la cella nello stato amorfo, ed è seguito da
un’operazione di lettura, al fine di controllare lo stato di programmazione
della cella, cioè il valore della corrente di lettura. Alla cella viene applicata
4.3 Analisi della Programmazione su Singola Cella di Memoria105
una prima sequenza di programmazione. Tale sequenza comincia con impulsi
di minima durata temporale (t0 ) e minima ampiezza (V0 ). Ognuno degli
impulsi di Set successivi ha una durata maggiore rispetto a quello precedente
di una quantità Δt, finché si raggiunge una durata massima prefissata tf .
Terminata questa sequenza, l’ampiezza della tensione degli impulsi è a questo
punto incrementata di un valore fisso ΔV , e alla cella viene applicata una
nuova sequenza di impulsi identica alla precedente, tranne che per l’ampiezza
degli impulsi stessi, che ora è V0 + ΔV . Questa routine è ripetuta finché non
viene raggiunta una sequenza con un’ampiezza prestabilita degli impulsi di
valore Vf . In questo modo viene monitorato l’effetto di un singolo impulso di
Set in funzione della sua ampiezza e della sua durata.
Nella nostra analisi sperimentale sono stati utilizzati i seguenti valori:
V0 = 2 V, Vf = 4.4 V, ΔV = 25 mV (impulsi di ampiezza inferiore a 2 V
non sono in grado di indurre la cristallizzazione del materiale calcogenuro,
mentre impulsi con ampiezza superiore portano la cella nello stato di Reset),
e t0 = 50 ns, tf = 2 µs, Δt = 50 ns (50 ns è la massima precisione dello
step temporale che si può raggiungere con il QT200; valori più grandi di
tf sono stati scartati in quanto portano a tempi di programmazione troppo
lunghi). L’ampiezza degli impulsi di Reset è stata scelta pari a 5.2 V (prima
dell’applicazione del primo impulso di Reset la cella è portata nello stato
completamente cristallino mediante un impulso di Set-Sweep).
I risultati ottenuti sono mostrati nella Fig. 4.24. Il grafico 3D (Fig.
4.24(b)) rappresenta la corrente di lettura misurata in funzione della durata
e dell’ampiezza dell’impulso di Set (superficie di programmazione). Si può
osservare che per una prefissata tensione di programmazione, la corrente
di lettura non presenta un andamento monotono, ma a dente di sega. Lo
stesso andamento si può osservare nella curva di programmazione ottenuta
in funzione della tensione applicata per una prefissata durata temporale.
Questo effetto può essere spiegato dalle cause esposte nel Paragrafo 4.3.1.
In Fig. 4.24(c) è rappresentata la vista dall’alto della superficie di
programmazione 3D, in cui i diversi colori rappresentano i diversi valori di
corrente letta.
Da entrambi i grafici è possibile vedere che l’intervallo di ampiezza degli
impulsi di programmazione utile va da circa 2.65 V a circa 4.3 V. Impulsi
di ampiezza inferiore a ≈ 2.65 V, infatti, non hanno effetto ai fini della
programmazione (il GST amorfo non viene portato ad una temperatura
sufficiente da innescarne la cristallizzazione). Dall’altro lato, impulsi con
106
Algoritmi di Programmazione Multilivello
VSET
t
DMA
DMA
DMA
DMA
DMA
(a)
25
30
I c ell [ μA]
20
20
15
10
10
0
2000
4
1500
3.5
1000
5
3
500
2.5
tprog [ns]
V SET [V]
2
(b)
2000
1800
25
1600
1400
20
tprog [ns]
1200
15
1000
800
10
600
400
5
200
2
2.5
3
3.5
4
V SET [V]
(c)
Figura 4.24: Valutazione dell’effetto di un singolo impulso di Set sulla resistenza
della cella in funzione della durata e dell’ampiezza della tensione applicata (cella
con selettore BJT): routine di programmazione (a), e superfici di programmazione
sperimentale 3D (b) e 2D (c), con rappresentazione del codice colore.
4.3 Analisi della Programmazione su Singola Cella di Memoria107
un’ampiezza superiore a ≈ 4.3 V portano la cella in uno stato altamente
resistivo, il che significa che essi agiscono sostanzialmente come impulsi di
Reset, a causa di un forte aumento della temperatura, che porta il materiale
calcogenuro alla fusione. È bene precisare che i valori di tensione di Set
appena visti sono superiori di circa 1 V rispetto ai valori corrispondenti
incontrati nei due paragrafi precedenti a causa della presenza del selettore di
tipo bipolare: nel caso di selettore MOS, infatti, quando la cella è selezionata,
la tensione ai capi del selettore stesso è trascurabile, in virtù del fatto
che questo funziona come interruttore; nel dispositivo ZZA0-BJT, invece, la
tensione ai capi del selettore non è trascurabile ma, poiché questo è connesso
a sostanzialmente diodo, risulta essere pari alla sua tensione base-emettitore,
che in questo caso è all’incirca 1 V.
Si può inoltre osservare che la durata dell’impulso di programmazione
non gioca un ruolo di importanza significativa: solo per impulsi brevi (fino a
150 ÷ 200 ns) la cella di memoria non può essere programmata ad alti valori
di corrente, mentre per impulsi di durata maggiore l’effetto della durata non
sembra avere effetti degni di nota.
L’analisi che verrà ora presentata è simile alla precedente, con l’unica
differenza che nella successione delle sequenze sono stati scambiati gli
incrementi della durata e dell’ampiezza degli impulsi di Set (Fig. 4.25): in ogni
sequenza, tutti gli impulsi di Set hanno la stessa durata, mentre l’ampiezza in
tensione è incrementata di una quantità fissa ΔV ad ogni impulso, partendo
da un valore iniziale V0 , fino ad arrivare a un valore massimo Vf . L’ampiezza
dell’impulso è incrementata di una quantità fissa Δt all’inizio di ogni sequenza
di impulsi, da un valore iniziale t0 ad un valore finale tf . Come nel caso
sopra esposto, ogni impulso di Set è preceduto da un impulso di Reset, ed è
seguito da un’operazione di lettura in DMA, e prima della sequenza iniziale
la cella è inizializzata con un impulso di Set-Sweep, che la porta nello stato
completamente cristallino. I valori dei parametri degli impulsi di Set e di
Reset sono gli stessi utilizzati per l’investigazione mostrata in Fig. 4.24.
I risultati ottenuti sono mostrati in Fig. 4.25(b) e Fig. 4.25(c), e
sono molto simili a quelli di Fig. 4.24, come conseguenza dell’effetto di
reinizializzazione dell’impulso di Reset applicato prima di ogni impulso di
Set.
È stato poi studiato l’effetto che ha la suddivisione gli impulsi di Set in
un numero n di impulsi più brevi, allo scopo di investigare se un impulso di
programmazione della durata Tp ha lo stesso effetto di n impulsi della durata
108
Algoritmi di Programmazione Multilivello
VSET
t
DMA
DMA
DMA
DMA
DMA
DMA
(a)
30
25
40
I c ell [ μA]
30
20
20
15
10
0
2000
10
4
1500
3.5
1000
5
3
500
2.5
tprog [ns]
V SET [V]
2
(b)
2000
30
1800
1600
25
1400
20
tprog [ns]
1200
1000
15
800
10
600
400
5
200
2
2.5
3
3.5
4
V SET [V]
(c)
Figura 4.25: Valutazione dell’effetto di un singolo impulso di Set sulla resistenza
della cella in funzione della durata e dell’ampiezza della tensione applicata (gli
incrementi di ampiezza e durata degli impulsi di Set sono scambiati rispetto al
caso di Fig. 4.24): routine di programmazione (a), e superfici di programmazione
sperimentale 3D (b) e 2D (c), con rappresentazione del codice colore.
4.3 Analisi della Programmazione su Singola Cella di Memoria109
Tp /n. La routine di programmazione utilizzata per questo scopo è mostrata
in Fig. 4.26(a): questa routine è la stessa della sequenza di programmazione
di Fig. 4.24, ma ogni singolo impulso di durata Tp è suddiviso in un numero
n di impulsi di durata Δt, cosı̀ da avere Tp = nΔt. La resistenza della cella
viene letta alla fine di ogni sottosequenza di impulsi di Set. In questa analisi,
è stato scelto Δt = 50 ns. Gli altri valori dei parametri degli impulsi di Set
e di Reset, cosı̀ come l’inizializzazione della cella mediante un impulso di
Set-Sweep, rimangono invariati rispetto al caso di Fig. 4.24.
I risultati ottenuti sono mostrati nelle Figg. 4.26(c) e 4.26(b). Dal
confronto della superficie di programmazione ottenuta con quella di Fig. 4.24,
si può notare che applicare un numero maggiore di impulsi di Set invece
che uno solo di durata maggiore (equivalente) è più efficiente se la durata
complessiva dell’impulso è breve. La cella di memoria può essere infatti
programmata ad alti livelli di corrente letta anche con impulsi della durata
complessiva di 50 ns. Come ci si aspettava, anche in questo caso impulsi di
ampiezza troppo grande riportano la cella nello stato di Reset.
È stata condotta un’ulteriore analisi sull’effetto del tempo di
programmazione sulle caratteristiche di programmazione della cella. A tal
fine, è stata applicata alla cella la stessa sequenza di impulsi brevi di
Fig. 4.26(a), ma senza applicare gli impulsi di Reset tra due impulsi di
Set consecutivi aventi la stessa ampiezza (Fig. 4.27(a)). Alla fine di una
sequenza di impulsi con la stessa ampiezza, alla cella viene applicato un
impulso di Reset, e viene quindi applicata una nuova sequenza di impulsi
di Set di ampiezza incrementata, finché viene raggiunto un valore massimo
di ampiezza predeterminato. In questo modo è possibile valutare l’effetto
cumulativo di una successione di impulsi di Set aventi la stessa ampiezza,
mentre ogni sequenza non ha effetto su quella successiva. La resistenza della
cella è monitorata dopo ogni impulso di Set attraverso un’operazione di
DMA. I valori dei parametri relativi agli impulsi di Set e di Reset, nonché
l’inizializzazione della cella mediante un’impulso di Set-Sweep, sono gli stessi
delle analisi precedenti.
I risultati ottenuti sono mostrati nella Fig. 4.27. Per ogni determinato
valore della tensione di Set, la curva della corrente letta in funzione del
tempo ha un comportamento sostanzialmente monotono: la corrente aumenta
infatti finché non viene raggiunto un valore massimo, che è diverso per diversi
valori della tensione di Set. Quando viene incrementata l’ampiezza degli
impulsi di Set, la corrente letta raggiunge il suo valore massimo con un
110
Algoritmi di Programmazione Multilivello
VSET
t
DMA
DMA
DMA
DMA
DMA
(a)
30
25
40
20
I c ell [ μA]
30
20
15
10
10
0
2000
4
1500
3.5
1000
5
3
500
2.5
tprog [ns]
V SET [V]
2
(b)
2000
30
1800
25
1600
1400
20
tprog [ns]
1200
1000
15
800
10
600
400
5
200
2
2.5
3
3.5
V
SET
4
[V]
(c)
Figura 4.26: Valutazione dell’effetto della suddivisione di un impulso di
Set in un numero maggiore di impulsi più brevi con la stessa routine di
programmazione mostrata in Fig. 4.24(a): routine di programmazione (a), e
superfici di programmazione sperimentali 3D (b) e 2D (c), con rappresentazione
del codice colore.
4.3 Analisi della Programmazione su Singola Cella di Memoria111
numero inferiore di impulsi di programmazione. Il valore di corrente letta
raggiunto non può comunque essere controllato con accuratezza. Questo
infatti dipende fortemente dal valore raggiunto dopo il primo impulso di
Set che riesce a modificare la resistenza di cella: questo ha infatti un
comportamento irregolare in funzione dell’ampiezza dell’impulso, a cuausa
della natura stocastica della formazione del volume di GST amorfo e del
cammino cristallino. I successivi impulsi di Set hanno la funzione di crescere
per self-heating il cammino cristallino che si è formato all’interno del volume
di materiale amorfo ad opera dell’impulsosopra citato. Come nelle analisi
precedenti, impulsi con un’ampiezza troppo grande riportano la cella nello
stato di Reset.
Al fine di studiare l’effetto cumulativo sia del tempo, sia dell’ampiezza
degli impulsi di programmazione sulle caratteristiche di programmazione
della cella PCM, è stata utilizzata la routine mostrata in Fig. 4.28(a). La
sequenza di impulsi è simile a quella precedente, con la differenza che qui non
viene applicato nessun impulso di Reset dopo quello iniziale. Quando una
sequenza di impulsi della stessa ampiezza di tensione è giunta al termine,
l’ampiezza di questi è incrementata e viene applicata una nuova sequenza
(senza che venga preventivamente applicato un impulso di Reset), finché
non si raggiunge un valore massimo di ampiezza predefinito. In questo
modo si sommano gli effetti di tutte le sequenze di impulsi applicate, e la
resistenza della cella viene monitorata dopo ogni impulso di Set. I parametri
degli impulsi di Set e di Reset, nonché l’inizializzazione mediante della cella
mediante un impulso di Set-Sweep, sono gli stessi delle analisi precedenti.
I risultati ottenuti sono mostrati nelle Figg. 4.28(c) e 4.28(b). La superficie
di programmazione risulta molto più regolare rispetto a quella di Fig. 4.27, a
causa dell’assenza degli impulsi di Reset tra una sequenza e quella successiva.
Il valore di ampiezza della tensione di Set che causa un brusco aumento della
corrente di lettura della cella è maggiore (≈ 2.9 V) rispetto ai casi precedenti,
e la transizione dallo stato di Reset a quello di Set parziale è più brusca.
Si può notare che è trascurabile l’effetto cumulativo del tempo di
programmazione sulla corrente di lettura, che aumenta quando viene
aumentata l’ampiezza degli impulsi. Con questa routine di programmazione
è possibile raggiungere livelli di corrente letta tra i 12 µA e i 30 µA con
un’accuratezza soddisfacente. Come nelle analisi precedenti, impulsi di Set
di ampiezza troppo grande riportano la cella nello stato di Reset.
Sono infine stati studiati gli effetti dell’applicazione di una sequenza
112
Algoritmi di Programmazione Multilivello
VSET
t
DMA DMA DMA DMA
DMA DMA DMA
(a)
30
25
40
20
20
15
I
c ell
[ μA]
30
10
10
0
2000
4
1500
3.5
1000
5
3
500
2.5
tprog [ns]
V SET [V]
2
(b)
2000
30
1800
25
1600
1400
20
tprog [ns]
1200
15
1000
800
10
600
400
5
200
2
2.5
3
3.5
4
V SET [V]
(c)
Figura 4.27: Valutazione dell’effetto cumulativo del tempo di programmazione
degli impulsi di Set: routine di programmazione (a), e superfici di programmazione
sperimentali 3D (b) e 2D (c), con rappresentazione del codice colore.
4.3 Analisi della Programmazione su Singola Cella di Memoria113
VSET
t
DMA DMA DMA DMA DMA DMA DMA
(a)
25
I c ell [ μA]
30
20
20
15
10
10
0
2000
4
1500
3.5
1000
5
3
500
2.5
tprog [ns]
V SET [V]
2
(b)
2000
1800
25
1600
1400
20
tprog [ns]
1200
15
1000
800
10
600
400
5
200
2
2.5
3
3.5
V
SET
4
[V]
(c)
Figura 4.28: Valutazione dell’effetto cumulativo del tempo e dell’ampiezza
degli impulsi di programmazione: routine di programmazione (a), e superfici di
programmazione 3D (b) e 2D (c), con rappresentazione del codice colore.
114
Algoritmi di Programmazione Multilivello
di impulsi di tipo SCU al variare della sola durata degli impulsi stessi.
In questa analisi, alla cella di memoria sono state applicate più sequenze
SCU, incrementando per ogni sequenza la durata degli impulsi di Set di una
quantità fissa Δt, partendo da un valore minimo t0 , fino ad un valore massimo
tf . Ogni sequenza SCU è preceduta da un impulso di Reset, al fine di formare
il volume di GST amorfo di partenza. Lo stato di programmazione della cella è
monitorato dopo ogni impulso di Set all’interno di ogni sequenza. I parametri
degli impulsi Set e di Reset sono invariati rispetto alle analisi precedenti, cosı̀
come l’inizializzazione della cella mediante l’impulso di Set-Sweep.
In Fig. 4.29 sono mostrati i risultati ottenuti. Come nell’analisi riportata
in Fig. 4.28, la curva di programmazione per una determinata durata degli
impulsi di Set (cioè per ogni sequenza SCU) è regolare, e non si osserva un
apprezzabile variazione nella corrente di lettura fino ad un’ampiezza degli
impulsi applicati di circa 2.9 V. Per questo valore di tensione, la corrente
di lettura mostra un aumento brusco, e da questo punto in avanti cresce
in maniera monotona fino a raggiungere il valore massimo. Oltre a questo
punto l’ampiezza degli impulsi fa tornare la cella nello stato di Reset. Anche
in questo caso, l’andamento regolare delle curve di programmazione è dovuto
all’assenza di impulsi di Reset intercalati agli impulsi di Set all’interno delle
sequenze SCU. Al contrario, il comportamento delle curve di programmazione
al variare della durata degli impulsi per una prefissata tensione di Set non
risulta regolare, a causa della presenza dell’impulso di Reset che precede
l’inizio di ciascuna sequenza. Nonostante ciò, è possibile osservare un aumento
della corrente massima letta all’interno di ogni sequenza, all’aumentare della
durata degli impulsi di Set. All’interno di ciascuna sequenza, ogni valore di
corrente di lettura tra ≈ 12 µA e il valore massimo può essere raggiunto con
un’accuratezza soddisfacente.
4.3.4
Curva di Programmazione della Cella PCM con
Pilotaggio in Corrente
Come è stato sottolineato nel Paragrafo 4.2.2, sul dispositivo ZZA0-MOS
è possibile eseguire anche la cosiddetta programmazione pilotata in corrente,
in cui, nelle operazioni di programmazione, la variabile sotto controllo non è
la tensione, bensı̀ la corrente.
In Fig. 4.30 è mostrata la superficie di programmazione di una cella di
memoria del dispositivo ZZA0-MOS, ovvero la corrente di lettura di una cella
4.3 Analisi della Programmazione su Singola Cella di Memoria115
VSET
t
DMA DMA DMA
DMA
DMA
DMA
(a)
30
25
40
20
20
c ell
[ μA]
30
I
15
10
0
2000
10
4
1500
3.5
1000
5
3
500
2.5
tprog [ns]
V SET [V]
2
(b)
2000
1800
30
1600
25
1400
20
tprog [ns]
1200
1000
15
800
10
600
400
5
200
2
2.5
3
3.5
V
SET
4
[V]
(c)
Figura 4.29: Valutazione dell’effetto di una sequenza SCU in funzione della
durata degli impulsi di Set: routine di programmazione (a), e superfici di
programmazione 3D (b) e 2D (c), con rappresentazione del codice colore.
116
Algoritmi di Programmazione Multilivello
in funzione della durata e dell’ampiezza degli impulsi di programmazione,
ottenuta attraverso una programmazione pilotata in corrente. La routine di
programmazione è la stessa mostrata in Fig. 4.29(a), e prevede di iterare più
volte la medesima sequenza di programmazione. All’inizio di ogni sequenza,
alla cella viene applicato un impulso di Reset, al fine di inizializzare la cella
di memoria, e cioè di formare il volume di GST amorfo. Alla cella viene
successivamente applicata una sequenza di impulsi di Set, ognuno dei quali
ha un’ampiezza superiore rispetto a quella dell’impulso precedente, facendo
variare la tensione di gate del selettore MOS da un valore minimo VP CX0
ad un valore VP CXf , con un incremento costante pari a ΔVP CX . Al termine
di ogni impulso di programmazione, la resistenza della cella viene misurata
attraverso un’operazione di DMA. Al raggiungimento della tensione VP CXf ,
la cella è di nuovo portata nello stato di Reset, e comincia una nuova sequenza
di programmazione, in cui la durata degli impulsi di programmazione è
incrementata rispetto a quella della sequenza precedente. Tale durata varia
da un valore minimo t0 ad un valore massimo tf , con un incremento costante
Δt. Analogamente ai casi trattati precedentemente, l’operazione di Reset
viene eseguita attraverso una programmazione pilotata in tensione, al fine
di ottenere risultati confrontabili. I valori dei parametri degli impulsi di
programmazione sono i seguenti: VP CX0 = 500 mV, VP CXf = 3.5 V,
ΔVP CX = 25 mV, t0 = 100 ns, tf = 1 µs e Δt = 50 ns. L’ampiezza degli
impulsi di Reset è invece pari a 5.2 V. In Fig. 4.30, invece dell’ampiezza della
tensione applicata al gate del transistore di selezione (VP CX ), è riportata la
corrente di programmazione (Iprog ), ottenuta secondo la relazione mostrata
in Fig. 4.8.
Come si può osservare dalla figura, il comportamento della superficie di
programmazione è simile a quella del caso della programmazione pilotata
in tensione. Dall’analisi della superficie di programmazione si può notare
che, per una prefissata durata degli impulsi di programmazione, la cella di
memoria passa dallo stato di Reset allo stato di Set parziale per correnti
di programmazione dell’ordine di 50 µA. Correnti di programmazione in
questo intorno sono infatti in grado di innescare un threshold switching
locale all’interno del GST amorfo, formando cosı̀ un cammino cristallino a
bassa resistenza. Gli impulsi di programmazione successivi hanno l’effetto di
accrescere la sezione di questo cammino conduttivo, facendo sı̀ che la corrente
letta cresca in maniera monotona, fino a raggiungere un valore massimo di
circa 52 µA per correnti di programmazione nell’intorno dei 450 µA. Al
4.3 Analisi della Programmazione su Singola Cella di Memoria117
50
60
45
Icell [μA]
50
40
40
35
30
30
20
25
10
20
0
1000
800
600
400
200
tprog [ns]
15
10
5
0
200
400
600
Iprog [μA]
Figura 4.30: Superficie di programmazione di una cella PCM ottenuta mediante
programmazione pilotata in corrente, iterando l’algoritmo SCU per diversi valori
della durata degli impulsi di programmazione.
crescere ulteriore della corrente di programmazione, la potenza sviluppata è
tale da fondere il GST, riportando gradualmente la cella nello stato di Reset.
A differenza di quanto è stato sottolineato nel paragrafo 4.3.2 per il
caso della programmazione pilotata in tensione, si può notare che, se si
controlla la corrente che attraversa la cella durante la fase di scrittura, la
regione in cui le curve di programmazione esibisconola derivata ΔIcell /ΔIprog
con valore elevato risulta molto ridotta, se non inesistente. Ciò è dovuto
al fatto che la cella si trova in regime di threshold switching solamente al
primo impulso di programmazione utile, dopodiché la corrente letta cresce in
maniera controllata, offrendo cosı̀ la possibilità di ottenere un elevato grado
di accuratezza nella programmazione. Il massimo valore di corrente letta,
inoltre, non aumenta in maniera molto marcata all’aumentare dalla durata
degli impulsi di programmazione, ma dipende solamente da come il cammino
cristallino si è inizialmente formato. È possibile ottenere un elevato grado di
accuratezza anche con l’utilizzo di impulsi di breve durata (100 ns), il che
premette di ridurre i tempi di programmazione.
In Fig. 4.31 sono riportate, sovrapposte sullo stesso grafico, cinque curve
di programmazione ottenute con l’algoritmo SCU sulla medesima cella di
memoria, con una durata degli impulsi di programmazione di 100 ns. Si
118
Algoritmi di Programmazione Multilivello
60
50
30
I
c ell
[μA]
40
20
10
0
0
100
200
300
400
Iprog [μA]
500
600
700
Figura 4.31: Curve di programmazione di una cella PCM pilotata in corrente; la
programmazione è stata ripetuta cinque volte con una sequenza di tipo SCU.
può osservare che, in prima approssimazione, la programmazione pilotata
in corrente mostra gli stessi effetti dovuti alla casualità della formazione
del cammino conduttivo all’interno del GST amorfo che caratterizza la
programmazione pilotata in tensione.
4.3.5
Determinazione della Massima Finestra delle
Correnti di Lettura
Com’è stato più volte sottolineato in precedenza, per effettuare una
programmazione multilivello nella tecnologia a cambiamento di fase è
necessario programmare le celle di memoria a livelli di resistenza (cioè di
corrente di lettura) intermedi tra il valore dello stato di Reset e quello dello
stato di Set. Al fine di effettuare una programmazione efficiente, è perciò
necessario determinare quale sia la massima finestra di lettura ottenibile in
una cella PCM, in modo da potere scegliere correttamente a che livello di
corrente di lettura posizionare gli stati di programmazione intermedia.
Nel paragrafo 4.3.6 si vedrà che il valore massimo della corrente di lettura
ottenibile con un algoritmo di tipo SCU dipende dall’ampiezza dell’impulso
di Reset applicato inizialmente. Al fine di ottenere il massimo livello di
corrente di lettura raggiungibile indipendentemente dallo spessore del volume
di GST amorfo iniziale, e massimizzare cosı̀ la finestra delle correnti di lettura,
è necessario applicare alla cella un sequenza di programmazione di tipo
4.3 Analisi della Programmazione su Singola Cella di Memoria119
60
50
Icell [μA]
40
30
20
10
0
0
100
200
300
400
Iprog [μA]
500
600
700
Figura 4.32: Curve di programmazione di una cella PCM ottenute con l’algoritmo
SCU con pilotaggio in corrente, partendo da una cella nello stato di Set minimo
(blu) e dallo stato di Reset (rosso).
SCD, o, alternativamente, un impulso di Set-Sweep (si veda a tal proposito
il paragrafo 4.1): questo tipo di programmazione, come già sottolineato,
consente infatti di ottenere la cristallizzazione completa della regione attiva
di GST.
In Fig. 4.32 sono mostrate due differenti curve di programmazione
ottenute con l’algoritmo SCU con pilotaggio in corrente. La curva in rosso,
analoga a quelle mostrate in precedenza, è ottenuta partendo da una cella
nello stato di Reset, mentre per la curva blu la condizione di partenza è
quella di Set minimo. Come si può notare, il valore massimo raggiunto dalla
curva rossa (≈ 50 µA), è inferiore al valore massimo della curva blu (≈ 55
µA). L’applicazione dell’algoritmo SCU a partire dallo stato di Reset non
permette quindi di raggiungere il valore massimo di corrente letta ottenibile,
corrispondente al valore di resistenza minima della cella di memoria. Si può
dunque affermare che, per sfruttare dunque la massima finestra di lettura, e
ottimizzare quindi il posizionamento dei livelli di programmazione intermedi,
è necessario utilizzare una sequenza di impulsi di tipo SCD (o in alternativa
un impulso di tipo Set-Sweep), al fine di programmare la cella nel suo stato
più conduttivo.
120
Algoritmi di Programmazione Multilivello
60
50
Icell [μA]
40
30
20
10
0
0
100
200
300
400
500
Iprog [μA]
600
700
800
900
Figura 4.33: Curve di programmazione di una cella PCM ottenute per diversi
valori di ampiezza della tensione del Reset iniziale: 4.2 V (blu), 4.7 V (verde) e
5.2 V (rosso).
4.3.6
Impatto della condizione Iniziale di Reset sulle
Curve di Programmazione
Come è stato sottolineato in precedenza, per ottenere una struttura
della cella di memoria di tipo parallelo, la cella è inizialmente programmata
nello stato di Reset. L’operazione di Reset determina il volume (e quindi,
le dimensioni geometriche, in particolare lo spessore) della calotta di GST
amorfo all’interno del quale verrà ottenuto il cammino cristallino mediante
l’applicazione di una sequenza di impulsi di tipo SCU.
È dunque possibile, modificando l’ampiezza dell’impulso di Reset iniziale,
modulare la pendenza e il valore massimo della curva di programmazione,
com’è mostrato in Fig. 4.33, dove sono rappresentate tre curve di
programmazione ottenute con l’algoritmo SCU con pilotaggio in corrente,
per differenti valori della tensione di Reset iniziale, rispettivamente 4.2 V
(blu), 4.7 V (verde) e 5.2 V (rosso): la durata degli impulsi di Set è di 100 ns.
In particolare, quanto più è elevata l’ampiezza dell’impulso di Reset iniziale,
tanto minore risultano la pendenza della curva di programmazione e il valore
massimo di corrente letta.
Questo comportamento è dovuto al fatto che differenti ampiezze
dell’impulso di Reset iniziale danno luogo ad un volume di GST amorfo
4.3 Analisi della Programmazione su Singola Cella di Memoria121
di spessore differente, all’interno del quale viene poi formato un cammino
conduttivo di sezione adeguata mediante l’utilizzo dell’algoritmo SCU.
Quanto maggiore è l’ampiezza dell’impulso applicato, tanto maggiore è lo
spessore della calotta di calcogenuro reso amorfo (ta ). A differenti spessori
della calotta di GST amorfo corrispondono differenti valori della tensione di
soglia della cella di memoria per il fenomeno del threshold switching (V th )
[46, 53]. Il valore di V th è infatti linearmente proporzionale a ta secondo la
relazione
Vth = Vth0 + Fcrit · ta ,
(4.10)
dove Vth0 è un termine che include le cadute di tensione ai capi dei contatti
metallici della cella di memoria, mentre Fcrit indica il campo critico da
applicare allo strato di GST affinché si inneschi il threshold switching.
In prima approssimazione la resistenza del cammino conduttivo cristallino
può essere espressa come R = ρX · L/S, dove ρX è la resistività del GST
cristallino, mentre S e L ne indicano rispettivamente la sezione e la lunghezza.
Da questa formula, risulta chiaro che è possibile controllare la resistenza del
cammino conduttivo modulandone sia la sezione, sia la lunghezza. Nel caso
della programmazione che stiamo considerando, la lunghezza del cammino è
determinata dal valore della tensione dell’impulso di Reset iniziale, mentre la
sezione è modulata dai successivi impulsi di Set. È perciò possibile, partendo
da differenti condizioni di Reset, ottenere differenti valori di resistenza della
cella utilizzando la stessa sequenza di impulsi di Set. Allo stesso modo, è
possibile ottenere lo stesso valore di resistenza partendo da due differenti
condizioni di Reset e utilizzando differenti sequenze di impulsi di Set.
Osserviamo ora la curva curva blu e la curva rossa di Fig. 4.33, ottenute
a partire da una condizione iniziale determinata rispettivamente con un
livello basso ed uno alto di ampiezza della tensione di Reset, che d’ora
in avanti verranno chiamati rispettivamente “soft Reset” e “hard Reset”.
La curva blu (soft Reset) permette di programmare facilmente la cella ad
alti livelli di corrente di lettura (ad esempio 35 µA) con un’accuratezza
elevata, mentre non consente di programmare con altrettanta accuratezza
livelli di corrente letta inferiori (ad esempio 15 µA), poiché la sua pendenza,
che è adeguatamente contenuta nella regione corrispondente ad alti livelli
di corrente, è troppo alta nella regione che corrisponde a basse correnti di
lettura. Al contrario, la pendenza della curva rossa (hard Reset) permette di
122
Algoritmi di Programmazione Multilivello
ottenere con buona accuratezza livelli di corrente di lettura bassi, in quanto
in questa zona la sua pendenza è molto bassa. Il diverso comportamento delle
due curve è dovuto al diverso spessore del volume amorfo iniziale. Quanto
maggiore è tale spessore, tanto minore sono la diminuzione di resistenza
ottenuta ad ogni impulso di Set e, quindi, la pendenza della curva di
programmazione.
Il massimo livello di corrente letta che si può ottenere con una
programmazione a scaletta crescente dopo un hard Reset è minore rispetto
a quello ottenibile su una cella inizializzata con un soft Reset. Per questo
motivo, la prima curva non permette di raggiungere alti livelli di corrente
di lettura, che possono invece essere raggiunti tramite la seconda. Il fatto
che il valore massimo di corrente di lettura raggiungibile sia minore nel caso
di inizializzazione con un hard Reset è dovuto al fatto che l’applicazione
di ulteriori impulsi di programmazione, che sarebbero necessari a far
crescere ulteriormente il valore della corrente letta mediante l’allargamento
del cammino conduttivo, portano il materiale calcogenuro all’interno della
regione attiva alla fusione, e agiscono dunque come impulsi di Reset.
È dunque possibile affermare che utilizzando differenti ampiezze per
l’impulso di Reset iniziale allo scopo di raggiungere differenti condizioni
di partenza, modulando cosı̀ la pendenza e l’ampiezza della curva di
programmazione, permette di ottenere tutti i livelli di programmazione
intermedia tra lo stato di Set e quello di Reset tramite l’applicazione di
un’unica sequenza SCU. Questo approccio permette di raggiungere tuti i
livelli intermedi di programmazione all’interno dell’interointervallo di correnti
di lettura permesso, e di limitare il numero di impulsi di programmazione
necessari a programmare la cella ad alti livelli di corrente letta.
4.4
Analisi su Matrice di Memoria
Alla luce dei risultati sperimentali finora discussi, al fine di elaborare
un algoritmo di programmazione multilivello, è necessario focalizzare
l’attenzione non più su una singola cella, ma su una porzione sufficientemente
ampia della matrice di memoria. L’algoritmo di programmazione adottato
prevede l’utilizzo di una tecnica di programmazione con sequenza SCU
pilotata in corrente di tipo P&V, cioè una sequenza di impulsi di Set
di ampiezza crescente in cui ogni impulso di programmazione segue
un’operazione di verifica del dato programmato (Fig. 4.15). Poiché la variabile
4.4 Analisi su Matrice di Memoria
123
sotto controllo durante la programmazione è la corrente, l’algoritmo è stato
implementato sul dispositivo ZZA0-MOS. L’operazione di verifica del dato
scritto (verify) è realizzata con l’utilizzo dei sense amplifier integrati sul
dispositivo, i quali permettono di effettuare una lettura più veloce rispetto
all’operazione di DMA, confrontando la corrente di lettura della cella con
una opportuna corrente di riferimento. Quando la corrente di lettura della
cella supera quella di riferimento, l’algoritmo di programmazione si ferma. La
scelta di tale algoritmo si basa sul fatto che esso permette un buon controllo
durante la programmazione degli stati intermedi. Com’è stato sottolineato
precedentemente, prima dell’applicazione della sequenza di programmazione
SCU, le celle di memoria sono inizializzate nella condizione di Reset, al
fine di ottenere, mediante la successiva programmazione, una configurazione
di tipo parallelo all’interno dello strato di materiale calcogenuro. Tale fase
di inizializzazione è effettuata mediante l’applicazione di un impulso di
Set-sweep (che ha lo scopo di portare uniformando tutte le celle nel medesimo
stato, quello altamente conduttivo), e di un successivo impulso di Reset.
4.4.1
Impatto della Condizione Iniziale di Reset sulla
Programmazione di un’Area della Matrice di
Memoria
Nel paragrafo 4.3.6 è stato mostrato come la condizione iniziale di
Reset influenzi la curva di programmazione della cella di memoria. È stato
quindi analizzato l’impatto della condizione iniziale di Reset su un’intera
popolazione di celle di memoria, al fine di determinare il livello ottimale
dell’impulso di Reset ai fini della programmazione di tutte le celle considerate.
In Fig. 4.34 sono mostrate le distribuzioni normali inverse relative ad una
programmazione multilivello di sei aree di memoria di 20 kcelle ciascuna
(tutte le celle di una singola area sono state programmate allo stesso livello,
che è diverso per le diverse aree, come sotto specificato). La distribuzione
normale inversa si ottiene come funzione inversa della funzione di probabilità
cumulativa. Sull’asse delle ascisse della figura è rappresentato il valore
della corrente di lettura, mentre sull’asse delle ordinate è rappresentata
la dispersione della distribuzione. La scelta di questo tipo di distribuzioni
per rappresentare la statistica delle correnti di lettura delle celle deriva dal
fatto che esso permette di evidenziare il comportamento di eventuali celle
anomale presenti nelle code delle distribuzioni, che sarebbero “invisibili”
124
Algoritmi di Programmazione Multilivello
4
3
2
σ
1
0
−1
−2
−3
−4
0
10
20
30
Icell [μA]
40
50
60
Figura 4.34: Distribuzioni normali inverse riferite alla programmazione di
sei porzioni della matrice di memoria a sei differenti livelli di corrente di
lettura, attraverso l’utilizzo dell’algoritmo SCU con pilotaggio in corrente, dopo
l’applicazione di un hard Reset.
nel caso di rappresentazioni tradizionali come, ad esempio, la densità di
probabilità o la funzione cumulativa di distribuzione. I livelli di corrente
scelti come riferimento sono rispettivamente 9 µA (blu), 15 µA (nero), 21
µA (rosso), 27 µA (marrone), 33 µA (viola) e 39 µA (verde). L’ampiezza
dell’impulso di Reset iniziale è di 5.2 V (hard Reset). In analogia con la
notazione utilizzata nei paragrafi precedenti, i parametri degli impulsi di Set,
applicati con modalità SCU, sono i seguenti: VP CX0 = 0 V, VP CXf = 4 V e
ΔVP CX = 25 mV. Tutti gli impulsi di Set hanno la stessa durata, pari a 100
ns. In Fig. 4.34 ogni distribuzione è relativa a un ottavo della popolazione
delle celle programmate, corrispondenti all’uscita di un solo sense amplifier.
Questa scelta è dettata dal fatto che ad ognuno degli otto sense amplifier
del dispositivo è associato un riferimento di corrente; poiché non vi è un
perfetto allineamento tra i vari riferimenti, le otto distribuzioni ottenute
risultano traslate le une rispetto alle altre di qualche µA. Per svincolarsi
da tale limite, si è scelto di rappresentare i dati in uscita ad un solo sense
amplifier. Le distribuzioni delle popolazioni relative agli altri sette sono del
tutto equivalenti a quella mostrata in figura, a meno di una traslazione rigida.
Dalla figura si può notare che l’algoritmo ha programmato correttamente
4.4 Analisi su Matrice di Memoria
125
bassi livelli di corrente: le distribuzioni corrispondenti ai due livelli più bassi
(9 µA e 15 µA) sono infatti sufficientemente strette. Al contrario, quando il
livello di corrente di lettura richiesto è maggiore, non è possibile utilizzare un
hard Reset come condizione iniziale. Infatti, al crescere del livello di corrente
richiesto, si osserva un numero sempre maggiore di celle che presentano
una corrente letta di circa 0 µA (stato di Reset). Per queste celle, per le
quali il valore di corrente obiettivo è maggiore del massimo livello della
corrente letta ottenibile, dopo che questo livello massimo è stato raggiunto,
l’algoritmo SCU continua ad incrementare la corrente di programmazione
nel tentativo di raggiungere l’obiettivo, portando alla fusione il GST
nella regione attiva. Dato che sono stati usati impulsi di programmazione
“a scatola”, una volta che l’impulso è terminato, il calore generato nel
GST è evacuato rapidamente (attraverso il contatto metallico superiore o
attraverso il riscaldatore), determinando l’amorfizzazione del GST nei pressi
del riscaldatore, il che interrompe il cammino cristallino conduttivo che era
stato precedentemente generato, e incrementa di conseguenza la resistenza
di basso campo. Quanto maggiore è il livello di corrente letta richiesto, tanto
maggiore sarà la corrente di programmazione richiesta, con un conseguente
rischio di riportare la cella nello stato di Reset. A livello di distribuzioni, si
nota dunque la comparsa di una coda bassa prossima a 0 µA, che è tanto
più marcata quanto più è elevato il valore di corrente di riferimento. In Fig.
4.35 sono rappresentate le distribuzioni normali inverse relative al caso di
una programmazione di altrettante aree di memoria di 20 kcelle eseguita
utilizzando gli stessi parametri sopra descritti dopo l’applicazione di un soft
Reset iniziale (4.2 V). In questo caso, al contrario di quanto è stato osservato
in Fig. 4.34, è possibile programmare correttamente le popolazioni di celle
di memoria a cui è stato assegnato come obiettivo un alto livello di corrente:
le distribuzioni attorno a 33 µA e 39 µA infatti, sono ora adeguatamente
strette. All’interno di una popolazione di queste dimensioni, però, esiste un
numero di celle la cui curva di programmazione ottenuta dopo un Reset di
tipo soft mostra una pendenza troppo elevata per bassi valori di corrente
letta, e, di conseguenza, appare una coda alta piuttosto pronunciata nelle
distribuzioni corrispondenti ad alti valori di corrente programmata. Questo
comportamento è dovuto al fatto che un soft Reset forma un volume di
materiale amorfo dallo spessore contenuto. La presenza di una porzione
cosı̀ sottile di GST amorfo porta ad avere un’elevata probabilità che, con
un singolo impulso di programmazione, la resistenza della cella venga a
126
Algoritmi di Programmazione Multilivello
4
3
2
σ
1
0
−1
−2
−3
−4
0
10
20
30
Icell [μA]
40
50
60
Figura 4.35: Distribuzioni normali inverse riferite alla programmazione di sei
porzioni della matrice di memoria a sei differenti livelli di corrente di lettura,
attraverso l’utilizzo dell’algoritmo SCU di tipo P&V dopo l’applicazione di un soft
Reset.
decrescere notevolmente, causando un cosiddetto over-programming nel caso
in cui il livello d i corrente di lettura richiesto sia basso (ad esempio 15
µA): quanto più basso è il valore dell’ampiezza dell’impulso di Reset iniziale,
tanto maggiore è la probabilità di avere un over-programming. Si può dunque
affermare che un soft Reset non può essere utilizzato come condizione iniziale
se il valore di corrente letta a cui programmare le celle è basso.
Risulta dunque chiaro che, al fine di programmare correttamente un’area
di memoria ad un determinato livello di corrente di lettura con una sequenza
SCU, è necessario partire da una condizione iniziale di Reset ben precisa, che
dipende dal livello stesso. È stata dunque svolta una caratterizzazione allo
scopo di determinare l’ampiezza della tensione di Reset iniziale necessaria ad
ottenere distribuzioni adeguatamente strette al variare del livello di corrente
letta desiderato. A tal fine, alcune aree di memoria sono state programmate
agli stessi livelli di corrente di lettura utilizzati precedentemente attraverso
l’algoritmo SCU di tipo P&V pilotato in corrente utilizzando diversi valori di
ampiezza per la tensione dell’impulso di Reset iniziale, e in seguito sono state
analizzate le distribuzioni ottenute. I parametri degli impulsi della sequenza
SCU sono i medesimi utilizzati nelle caratterizzazioni precedenti: VP CX0 = 0
127
4
4
3
3
2
2
1
1
σ
σ
4.4 Analisi su Matrice di Memoria
0
0
−1
−1
−2
−2
−3
−3
−4
0
10
20
30
Icell [μA]
(a)
40
50
60
−4
0
10
20
30
Icell [μA]
40
50
60
(b)
Figura 4.36: Distribuzioni normali inverse ottenute con l’algoritmo SCU di tipo
P&V dopo l’applicazione di un Reset di ampiezza pari 4 V (blu), 4.2 V (nero), 4.4
V (rosso), 4.6 V (marrone), 4.8 V (viola), 5 V (verde) e 5.2 V (giallo); i valori di
corrente di riferimento utilizzati sono 15 µA (a) e 35 µA (b).
V, VP CXf = 4 V, ΔVP CX = 25 mV e tprog = 100 ns. In Fig. 4.36 sono mostrati
i risultati sperimentali della caratterizzazione appena descritta: in Fig.
4.36(a) sono riportate le distribuzioni normali inverse ottenute con un livello
di corrente di riferimento di 15 µA, mentre le distribuzioni normali inverse di
Fig. 4.36(b) sono relative ad un valore di corrente di riferimento di 33 µA. I
valori dell’ampiezza dell’impulso di Reset iniziale variano tra 4 V e 5.2 V, con
un passo di 200 mV. Come si può notare dalla figura, l’ampiezza dell’impulso
di Reset deve essere scelta accuratamente in funzione del livello di corrente
desiderato: quando il livello di Reset è troppo basso in considerazione del
valore da ottenere in programmazione, la distribuzione mostra una coda alta
lontana dal valore nominale a causa di un over-programming, mentre quando
esso è troppo alto si osserva una coda bassa a 0 µA, dovuta all’amorfizzazione
del GST all’interfaccia con il riscaldatore.
Il valore ottimo dell’impulso di Reset in funzione del livello di resistenza
programmata desiderato può quindi essere ottenuto tramite un’adeguata
caratterizzazione.
4.4.2
Algoritmo di Programmazione SCU P&V con
Doppio Livello di Reset
A partire dalle analisi finora discusse, è stato possibile definire un
algoritmo di programmazione multilivello che è in grado di programmare
128
Algoritmi di Programmazione Multilivello
correttamente intere aree di una matrice di celle PCM, e che può quindi
essere implementato su un dispositivo di memoria a cambiamento di
fase multilivello. In particolare, l’algoritmo proposto ha come scopo una
memorizzazione a due bit per cella, e può in linea di principio essere adattato
al fine di ottenere una densità maggiore.
Il concetto chiave dell’algoritmo è l’utilizzo di differenti livelli di Reset
(un soft Reset e un hard Reset) per inizializzare la cella di memoria, a
seconda di quale è il livello di corrente di lettura a cui programmare la cella
stessa (algoritmo con doppio Reset). Com’è stato sottolineato nel paragrafo
4.3.5, al fine di ottimizzare la finestra di lettura, per programmare il livello
di corrente più alto (stato di programmazione “11”) viene utilizzata una
sequenza di impulsi SCD (o in alternativa un impulso di Set-Sweep). Il
livello a corrente di lettura minore (“00”) è ottenuto utilizzando un soft
Reset (l’utilizzo di un basso livello di tensione di Reset riduce infatti il
rischio di degradare le caratteristiche della cella di memoria). Gli impulsi
di Reset hard e soft sono utilizzati rispettivamente come condizione iniziale
da cui partire per raggiungere il primo (“01”) e il secondo (“10”) livello
di programmazione intermedio, mediante l’applicazione di una sequenza di
impulsi di Set di tipo SCU con P&V. In Fig. 4.37(a) è mostrato il diagramma
di flusso dell’algoritmo sviluppato. I livelli di corrente a cui programmare le
celle di memoria nei due stati intermedi sono stati scelti in modo da sfruttare
la massima finestra di corrente di lettura disponibile, e ottenere quindi
distribuzioni adeguatamente separate, per poter effettuare le operazioni di
lettura in modo corretto e rapido. I livelli di riferimento scelti per gli stati
“01” e “10” sono rispettivamente 15 µA e 35 µA.
Un esempio di distribuzioni normali inverse delle correnti di lettura
ottenute dalla programmazione di 4 aree della matrice del dispositivo
ZZA0-MOS (40 kcelle per ogni distribuzione) con l’algoritmo proposto è
mostrato in Fig. 4.37(b). Le distribuzioni corrispondenti ai livelli di corrente
di lettura intermedi (“01” in verde e “10” in rosso) sono state ottenute con
i seguenti parametri per gli impulsi applicati al gate del selettore MOS:
VP CX0 = 1.06 V e VP CXf = 2.34 V per il livello “01”, VP CX0 = 1.36 V
e VP CXf = 2.54 V per il livello “10”; in entrambi i casi l’incremento di
tensione tra un passo di programmazione e quello successivo è ΔVP CX = 40
mV, mentre la durata degli impulsi è di 100 ns. Come si può notare dalla
figura, le distribuzioni ottenute sono sufficientemente strette e adeguatamente
separate le une dalle altre, il che permette di leggere correttamente i dati
4.4 Analisi su Matrice di Memoria
129
Begin
4
3
SET
Sweep
2
Hard Reset
+
Set SCU
N
10?
Y
Soft Reset
+
Set SCU
Y
Soft
Reset
N
00?
1
σ
Y
01?
0
−1
−2
−3
N
−4
End
(a)
0
10
20
30
Icell [μA]
40
50
60
(b)
Figura 4.37: Diagramma di flusso (a) e distribuzioni normali inverse ottenute da
una programmazione multilivello con l’algoritmo proposto (b): livelli “00” (blu),
“01” (verde), “10” (rosso) e “11” (marrone).
memorizzati in tempi rapidi. È dunque possibile affermare che l’algoritmo
proposto è adatto ad effettuare una programmazione a due bit per cella nella
tecnologia utilizzata.
I valori di VP CX0 , VP CXf e ΔVP CX sono stati determinati come
compromesso tra accuratezza e durata complessiva dell’operazione di
programmazione. Quanto minore è il valore di ΔVP CX , tanto maggiore
è il grado di accuratezza ottenuto, in quanto l’incremento di frazione
cristallina ad ogni passo di programmazione è minore. Valori elevati di
ΔVP CX , invece, portano ad un incremento maggiore della frazione cristallina
e aumentano la probabilità di avere un over-programming della cella.
L’accuratezza in fase di programmazione deve dunque essere ottimizzata
tenendo in considerazione la durata totale della fase di programmazione.
I parametri degli impulsi di programmazione utilizzati sono frutto di
un’attenta caratterizzazione. Come si può notare, sia l’incremento di tensione
ΔVP CX tra due impulsi di programmazione successivi, sia l’ampiezza dei
due intervalli di programmazione sono coincidenti (quello necessario a
programmare il livello “10” è traslato di 300 mV verso tensioni più alte).
Come valore centrale dei due intervalli (rispettivamente 1.7 V e 2 V) è
130
Algoritmi di Programmazione Multilivello
stato scelto il valore di tensione VP CX in grado di programmare il maggior
numero di celle al livello di corrente di lettura desiderato (rispettivamente
15 µA e 35 µA). In entrambi i casi, il numero massimo di impulsi
applicati è 32, ± 16 rispetto al valore centrale, e risulta essere il miglior
compromesso tra accuratezza di programmazione e durata massima di
esecuzione dell’algoritmo.
Bisogna sottolineare che, nelle caratterizzazioni sperimentali effettuate,
la tecnica di programmazione SCU pilotata in corrente è stata implementata
applicando impulsi di tensione al gate del selettore MOS. Per una
corretta valutazione del numero di impulsi di programmazione necessari a
programmare ogni livello di corrente, occorre considerare il mismatch che
affligge la tensione di soglia dei selettori delle varie celle di memoria. Tale
tipologia di mismatch, infatti, causa un aumento nella dispersione del numero
di impulsi di programmazione richiesti è indipendente dalle caratteristiche
dell’elemento di memoria. Una volta considerato tale mismatch, è possibile
stimare un numero massimo di impulsi di programmazione dell’ordine di
18 ÷ 20 sia per il livello “01”, sia per il livello “10”.
4.5
Algoritmi
Alternativi
di
Programmazione
Nel presente paragrafo verranno presentati due algoritmi di
programmazione multilivello che discendono da quello di tipo SCU
con P&V a doppio livello di Verify appena descritto, elaborati allo scopo di
migliorarlo.
4.5.1
Algoritmo SCD Reset + SCU P&V Set
Come è stato più volte sottolineato, la condizione iniziale di Reset della
cella di memoria per l’algoritmo SCU è ottenuta a partire da una cella nello
stato completamente cristallino. A tal fine alla cella viene applicata una
sequenza SCD o, equivalentemente, un impulso di Set-Sweep. Questa scelta
deriva dal fatto che partire da una condizione di Set ben nota e facile da
riprodurre (quella di Set minimo) permette di ottenere una condizione iniziale
di Reset che non dipende dalla storia precedente della cella. Com’è stato
mostrato nel paragrafo precedente, al fine di programmare una popolazione
4.5 Algoritmi di Programmazione Alternativi
prog
131
prog
Verify
Verify
Verify
Verify
Verify
prog
Verify
Verify
Verify
Verify
prog
Figura 4.38: Rappresentazione schematica dell’algoritmo con Reset SCD + Set
SCU P&V.
di celle di memoria ad un determinato livello di corrente, è necessario, tramite
una caratterizzazione sperimentale, determinare il valore ottimo di ampiezza
dell’impulso di Reset iniziale.
Sarebbe peraltro molto utile potere determinare in maniera automatica
quale sia l’impulso di Reset ottimo per ogni cella di memoria, tenendo in
considerazione la presenza di eventuali spread di processo e di variazioni
nelle condizioni operative. L’algoritmo di programmazione mostrato in Fig.
4.38 è stato sviluppato al fine di raggiungere questo obiettivo. Viene prima
utilizzato un impulso di Reset di ampiezza elevata (5.2 V) seguito da una
sequenza di programmazione SCU con P&V. Se la corrente di lettura di
una cella al termine di tale sequenza è minore della corrente di riferimento,
a tale cella vengono applicati due impulsi di Reset, il primo uguale a quello
applicato in precedenza, il secondo di ampiezza decrementata di un prefissato
valore ΔVReset , dopodiché viene applicata una nuova sequenza SCU con
P&V. Questa routine è ripetuta aggiungendo ogni volta un impulso di
Reset con ampiezza diminuita di una quantità ΔVReset rispetto al precedente
impulso di Reset, finché tutte le celle di memoria non risultano programmate
correttamente. Prima dell’applicazione di ogni sequenza SCU viene cioè
applicata un’opportuna scaletta decrescente di impulsi di Reset (SCD Reset).
Va osservato che una sequenza SCD di impulsi di Reset può essere vista
come una sequenza parziale di una sequenza SCD di impulsi di Set, fermata
quando viene raggiunto il valore ottimo per l’impulso di Reset da applicare
alla cella di memoria nel caso specifico. Ogni impulso di Reset è infatti in
grado di cristallizzare una parte di GST che si trova in fase amorfa coem
risultato della precedente sequenza di impulsi di Reset. Poiché ogni impulso
di Reset ha un’ampiezza minore di quello che lo precede, la temperatura
132
Algoritmi di Programmazione Multilivello
4
3
2
σ
1
0
−1
−2
−3
−4
0
10
20
30
Icell [μA]
40
50
60
Figura 4.39: Distribuzioni normali inverse ottenute con l’algoritmo Reset SCD
+ Set SCU P&V.
raggiunta alla periferia del volume di GST amorfo è minore di quella di
fusione, e di valore tale da indurre una rapida cristallizzazione del materiale.
In alternativa, è possibile introdurre un’intera sequenza SCD tra
due impulsi di Reset discendenti consecutivi, in modo da cristallizzare
completamente il GST prima di applicare un nuovo impulso di Reset.
Quest’ultimo approccio presenta tuttavia un svantaggio in termini di tempi
di programmazione.
L’algoritmo proposto è stato caratterizzato sperimentalmente, scegliendo
una corrente di riferimento è 35 µA, che corrisponde al livello “10”. I
parametri degli impulsi di Set della sequenza SCU sono gli stessi utilizzati
nel paragrafo precedente per programmare con lo stesso livello di riferimento:
VP CX0 = 1.36 V, VP CXf = 2.34 V, ΔVP CX = 40 mV, tprog = 100 ns. I risultati
ottenuti sono illustrati in Fig. 4.39, nella quale viene mostrata l’evoluzione
delle distribuzioni normali inverse ottenute in funzione del numero della
sequenza di programmazione applicata. Dalla figura è possibile notare che la
distribuzione migliora gradualmente all’aumentare del numero della sequenze
applicate, in quanto l’algoritmo è in grado di raggiungere il livello di Reset
ottimo per ogni cella di memoria della popolazione considerata, fino ad
ottenere distribuzioni sufficientemente strette, limitando anche il tempo
totale di programmazione.
4.5 Algoritmi di Programmazione Alternativi
4.5.2
133
Algoritmo di Programmazione Multilivello con
Reset Adattativo
Nel paragrafo 1.4.2 è stato sottolineato come l’endurance sia uno
degli aspetti fondamentali che determinano l’affidabilità di una tecnologia
di memoria. Le memorie a cambiamento di fase, nel caso di una
memorizzazione bilivello, garantiscono un’endurance maggiore di 1011 cicli
di programmazione. Per rendere la tecnologia maggiormente attraente per il
mercato, in modo che essa possa competere con le DRAM, è necessario che
il numero di cicli di programmazione sopportabile dalle celle di memoria
sia più elevato. In letteratura [19] viene ribadito che l’endurance di una
cella PCM dipende fortemente sia dalla qualità dell’interfaccia GST-heater,
sia dalla possibile interdiffusione tra il GST e i materiali con cui esso si
trova a contatto. La scarsa qualità dell’interfaccia tra GST e riscaldatore
può determinare infatti dei guasti di tipo “open”, causati da una vera e
propria separazione fisica tra GST e heater. Problemi di interdiffusione,
invece, possono causare un corto-circuito tra i due elettrodi della cella.
Fattori acceleranti per questo tipo di meccanismi di fallimento sono la
densità di corrente e le alte temperature (superiori a 600 ◦ C) raggiunte nella
regione attiva durante l’operazione di Reset. È dunque chiaro che, al fine
di aumentare la vita di una cella PCM, è necessario agire sia sulla qualità
del processo produttivo, sia sull’algoritmo di programmazione adottato.
Nell’algoritmo di programmazione multilivello SCU con P&V con doppo
livello di Reset descritto nel paragrafo 4.4.2, si è visto che per programmare
la cella nello stato intermedio “01”, a questa viene applicato un impulso di
Reset di tipo hard, un impulso cioè di ampiezza elevata, in grado di portare
alla fusione un volume considerevole di GST. Poiché lo spessore del GST reso
amorfo da questo impulso è elevato, lo è anche la porzione di GST che supera
la temperatura di fusione Tm . Siccome la regione che raggiunge la massima
temperatura è quella che si trova nei pressi dell’interfaccia con il riscaldatore,
la temperatura di questa zona sarà notevolmente superiore a Tm . In Fig. 4.40
è mostrato uno schema del profilo termico all’interno del GST, in cui in giallo
è rappresentata la zona che raggiunge la temperatura di fusione, mentre il
colore rosso indica temperature supeiori.
Al fine di degradare il meno possibile le caratteristiche fisiche della
cella di memoria, appare pertanto opportuno applicare un impulso di Reset
di ampiezza minore possibile purché esso sia adeguato a determinare le
134
Algoritmi di Programmazione Multilivello
Metallo
T = 600 °C
Isolante
Riscaldatore
T > 600 °C
Isolante
Metallo
Figura 4.40: Profilo termico ll’interno della regione attiva di GST durante
l’impulso di Reset.
condizioni di amorfizzazione richieste. Come è strato mostrato nel paragrafo
4.4.1, all’interno di una popolazione di celle ve ne sono alcune la cui curva di
programmazione non permette di effettuare una programmazione efficiente
al livello di corrente richiesto ad esempio per lo stato “01”: la distribuzione
presenta una coda alta troppo pronunciata se il livello di Reset è troppo basso.
Il miglior approccio per ottenere distribuzioni con una dispersione contenuta
appare dunque quello di applicare ad ogni cella il livello di Reset ideale da essa
richiesto. Un metodo per ottenere questo risultato è il seguente algoritmo.
Alla cella viene applicato, come condizione iniziale, un impulso di Reset di
valore contenuto (ad esempio 4 V), dopodiché si procede con la sequenza di
programmazione SCU con P&V pilotata in corrente, al fine di programmare
la cella al livello di corrente di lettura richiesto (ad esempio 15 µA). La
distribuzione normale inversa ottenuta al termine della sequenza SCU è
mostrata in Fig. 4.41. Come si può notare, la larghezza della distribuzione
risulta inaccettabile per una programmazione multilivello. Supponiamo di
fissare a 20 µA il limite massimo di corrente letta accettabile, oltre il quale
una cella di memoria deve essere considerata programmata in modo errato. A
questo punto è possibile selezionare il gruppo di celle che è stato programmato
correttamente dalla sequenza applicata. Per ottenere una distribuzione più
stretta, le celle rimanenti (quelle cioè la cui corrente letta supera i 20 µA)
richiedono un Reset iniziale di ampiezza maggiore rispetto a quello applicato
4.5 Algoritmi di Programmazione Alternativi
135
4
3
2
σ
1
0
−1
−2
−3
−4
0
10
20
30
40
50
60
Icell [μA]
Figura 4.41: Distribuzione normale inversa per il livello di corrente di lettura a
15 µA ottenuta dopo la prima sequenza dell’algoritmo con Reset adattativo.
in precedenza. A queste celle viene pertanto applicato un impulso di Reset
di ampiezza maggiore rispetto al primo (4.2 V), seguito dalla stessa sequenza
SCU con P&V applicata prima: almeno una parte di queste celle verrà
a trovarsi programmata correttamente, mentre altre potranno presentare
ancora un valore di corrente letta superiore a 20 µA.
Mediante l’iterazione della metodologia appena descritta, è possibile
programmare correttamente tutte le celle di memoria, com’è mostrato in
Fig. 4.42. È bene sottolineare che in questo modo le celle di memoria sono
state sottoposte al minimo stress possibile. L’algoritmo di programmazione
può essere applicato anche per ottenere del livello di programmazione “10”,
in quanto il livello di Reset di partenza utilizzato è inferiore a quello utilizzato
come “soft” Reset.
In Fig. 4.43 vengono mostrate in maniera schematica le sequenze
di impulsi per ottenere i livelli di programmazione “00” e “11”
tramite l’algoritmo di programmazione con Reset adattativo. Lo stato
ad alta resistenza (Reset, livello logico “00”) viene programmato tramite
l’applicazione di una sequenza di impulsi di Reset di ampiezza crescente,
ognuno seguito da un’operazione di Verify, in modo da fermare la sequenza
quando la corrente letta è scesa al di sotto di un valore di soglia, che ad
esempio può essere dell’ordine del µA. Ciò permette di raggiungere il valore
136
Algoritmi di Programmazione Multilivello
3
2
1
σ
0
−1
−2
−3
−4
0
10
20
30
40
50
60
Icell [μA]
Figura 4.42: Distribuzione normale inversa per il livello di corrente di lettura a
15 µA ottenuta con l’algoritmo con Reset adattativo.
di resistenza desiderato minimizzando lo stress complessivo a cui è sottoposta
la cella di memoria.
Lo stato a resistenza minima (Set minimo, livello logico “11”) è, come in
precedenza, programmato con un impulso di Set-sweep, in quanto questo è
in grado di ottenere la cristallizzazione dell’intera regione attiva della cella
(si veda il paragrafo 4.1).
Il primo stato di programmazione intermedia (livello logico “01”) viene
programmato tramite una sequenza di programmazione SCU con P&V con
Reset adattativo. Ogni impulso di Set è seguito da un’operazione di Verify,
in cui la corrente di lettura della cella è confrontata con due differenti livelli
di corrente di riferimento, Iref 1 e Iref 2 , che corrispondono rispettivamente al
limite inferiore e a quello superiore che dovrà avere la distribuzione che si
vuole ottenere (Iref 1 < Iref 2 , doppio livello di Verify). Alla cella di memoria
viene applicato il resto della sequenza di programmazione SCU solamente se
la corrente di lettura risulta essere minore di Iref 1 . Al termine di una sequenza
SCU, un nuovo impulso di Reset (di ampiezza superiore al precedente) seguito
da una sequenza SCU identica alla precedente vengono applicati soltanto
alle celle di memoria la cui corrente letta è maggiore di Iref 2 , in modo tale
da portarle all’interno dei limiti che definiscono la larghezza massima della
distribuzione.
4.5 Algoritmi di Programmazione Alternativi
137
Il secondo stato di programmazione intermedia (livello logico “10”) è
programmato mediante una sequenza SCU con P&V con Reset adattativo
identica a quella necessaria a programmare il livello “01”, ma con differenti
valori per Iref 1 e Iref 2 , che ora definiscono rispettivamente il limite inferiore
e quello superiore della corrispondente distribuzione.
138
Algoritmi di Programmazione Multilivello
Iprog
Vprog
Iprog
Vprog
...
tprog
tprog
(a)
(b)
Iprog
Vprog
...
...
...
tprog
(c)
Figura 4.43: Sequenze di impulsi per ottenere i livelli di programmazione “00”
(a), “11” (b) e per i livelli di programmazione intermedi (c) secondo l’algoritmo di
programmazione con Reset adattativo. Le frecce indicano l’operazione di Verify.
Capitolo
5
Programmazione Multilivello in
tecnologia a 90 nm
In questo capitolo viene presentata l’applicazione dell’algoritmo di
programmazione multilivello descritto nel precedente Capitolo a un
dispositivo PCM a 90 nm, al fine di dimostrarne l’efficacia anche su una
tecnologia di integrazione più spinta. A tal fine è stato impiegato un
dispositivo sperimentale di memoria a cambiamento di fase della capacità
di 128 Mcelle [54], realizzato da STMicroelectronics in collaborazione con
Intel. Le celle di memoria sono selezionate tramite un transistore bipolare,
e sono ancora basate su un’architettura di tipo μtrench. Dapprima verrà
brevemente descritto il dispositivo e, quindi, verranno mostrati i risultati
sperimentali ottenuti dalla caratterizzazione sperimentale, che dimostrano la
fattibilità della programmazione multilivello in questa tecnologia.
5.1
Architettura dell’Elemento di Memoria
In Fig. 5.1 è rappresentato lo schema della cella PCM realizzata sul
dispositivo Alverstone. Analogamente a quanto visto per il dispositivo
ZZA0-BJT, il selettore è realizzato tramite un transistore bipolare a giunzione
di tipo pnp, mentre l’elemento di memoria vero e proprio è costituito
da un riscaldatore e da uno strato di lega calcogenura (GST) deposta
al di sopra di questo. La base del transistore bipolare è connessa alla
word-line, mentre l’emettitore è connesso all’elettrodo inferiore dell’elemento
di memoria (in particolare del riscaldatore) attraverso un precontatto in
140
Programmazione Multilivello in tecnologia a 90 nm
Bit-line
Elemento di
memoria
Word-line
Figura 5.1: Schema dell’elemento di memoria.
tungsteno. Il collettore del bipolare è costituito dal substrato del chip. Nella
matrice di memoria, l’elettrodo superiore dell’elemento di memoria è connesso
alla bit-line, la quale è ortogonale alle word-line. In Fig. 5.2(a) è mostrata
una foto al SEM di un elemento di memoria. Come si può vedere, la regione
attiva della cella è data dall’intersezione tra uno strato verticale di materiale
semimetallico (il riscaldatore, realizzato in TiSiN, deposto in un’apertura al
di sopra del precontatto in tungsteno) e uno strato sottile di GST, il quale è
ricoperto da uno strato di TiN ed è depositato all’interno di una trincea dalle
dimensioni submicrometriche (la cosiddetta μtrench). Al fine di semplificare
il processo di fabbricazione della cella e di minimizzare il numero di maschere
aggiuntive rispetto ad un processo CMOS standard, è stato ideato un tipo
di cella μtrench con allineamento automatico (Self-Aligned, SA) [55]. In Fig.
5.2(b) è mostrata una foto al SEM di un particolare di una matrice di celle
SA lungo la direzione della word-line, dopo aver effettuato il passo di etching.
La sezione mostra chiaramente l’autoallineamento tra lo strato di GST e il
riscaldatore posto al di sotto.
L’architettura per la tecnologia PCM a 90 nm [56, 55] è stata sviluppata
considerando aspetti quali l’esigenza di avere una cella di dimensioni
contenute, bassi costi per il processo di fabbricazione, e prestazioni elevate in
termini di tempi di accesso [18, 57, 56]. Un ulteriore obiettivo che ha guidato
l’ingegnerizzazione della cella è stato la riduzione della corrente di Reset (la
corrente richiesta per portare la cella nello stato di Reset) o, in maniera
equivalente, la massimizzazione dell’efficienza del riscaldatore, che porta al
5.1 Architettura dell’Elemento di Memoria
141
Heater
(a)
(b)
Figura 5.2: (a) Dettaglio di una cella di memoria in cui sono evidenziati il GST
cristallino (χ) e amorfo (α) e il riscaldatore (heater ); (b) dettaglio della matrice
lungo la direzione della word-line (p+: emettitore del BJT; n: regione di base; n+:,
contatto di base; la regione di collettore del selettore bipolare, che corrisponde al
substrato, non è inclusa nella figura).
raggiungimento di prestazioni migliori durante la fase di programmazione.
Uno degli aspetti più importanti che rendono l’architettura μtrench superiore
rispetto agli altri tipi di cella è la sua capacità di raggiungere correnti di
programmazione molto basse e, allo stesso tempo, garantire un controllo
adeguato delle geometrie anche a dimensioni submicrometriche, in modo
da ottimizzare le caratteristiche elettriche della cella stessa. Quest’aspetto
è di fondamentale importanza per la tecnologia PCM in quanto ha un
impatto sulle prestazioni globali in termini di throughput di scrittura (il
parallelismo in programmazione è infatti limitato dal massimo consumo di
potenza permesso), e sui costi di produzione in termini di area occupata per
realizzare un selettore con un’adeguata driving capability.
In Fig. 5.3 è mostrata la caratteristica corrente-tensione di una cella
di memoria SA μtrench in tecnologia a 90 nm nello stato di Reset
(tratto nero) e nello stato di Set (tratto rosso), mentre la sua curva
di programmazione (resistenza dell’elemento di memoria in funzione della
corrente di programmazione) è mostrata in Fig. 5.4. Le dimensioni ridotte
dell’area di contatto tra GST e riscaldatore, assieme a ulteriori ottimizzazioni
di carattere geometrico, garantiscono una riduzione della corrente di Reset
142
Programmazione Multilivello in tecnologia a 90 nm
Figura 5.3: Caratteristica corrente-tensione della cella di memoria SA μtrench
nello stato di Set e nello stato di Reset.
fino a 300 µA, con una caduta di tensione di 1.6 V ai capi dell’elemento di
memoria.
La Fig. 5.5 mostra che il selettore bipolare è in grado di fornire una
corrente di programmazione e di Reset di 300 µA con una tensione applicata
di circa 1.5 V, il che permette di programmare la cella nello stato di Reset
con una tensione di bit-line contenuta. È da sottolineare che una tale driving
capability del selettore bipolare è ottenuta assieme ad una corrente di leakage
della giunzione base-emettitore polarizzata inversamente molto bassa (meno
di 10 pA per VBE = 3 V ad una temperatura operativa di 85 ◦ C), il che è
necessario nella realizzazione di matrici di memoria ad altissima densità.
Nella Tabella 5.1 sono riassunti i principali parametri della tecnologia
di fabbricazione utilizzata. La profondità per l’isolamento in trincea
(Shallow-Trench Isolation, STI) è di 270 nm, al fine di ottimizzare le
caratteristiche attive e passive del transistore di selezione. È stato inoltre
utilizzato un approccio a singolo STI in base alle necessità di profondità per
l’STI della cella PCM. L’architettura dei transistori MOS è stata definita
considerando le specifiche del dispositivo, al fine di massimizzare la corrente
e sopportare tensioni di 3 V, necessarie alle operazioni di programmazione. Il
tipo di metallizzazioni è stato scelto in base al layout della cella di memoria.
In particolare, si hanno 3 livelli di metallizzazione in Cu: il primo livello è
utilizzato per realizzare le word-line all’interno della matrice di memoria, con
il secondo vengono realizzate le main bit-line, mentre il terzo è utilizzato nella
5.2 Architettura del Dispositivo
143
Figura 5.4: Caratteristica di programmazione dell’elemento di memoria in
tecnologia a 90 nm.
periferia del dispositivo o come global word-line (nel dispositivo è infatti stato
seguito un approccio gerarchico per la decodifica). Il contatto tra il secondo
livello e lo strato di GST è infine realizzato con una striscia realizzata ad hoc.
L’area della cella misura 440 nm × 220 nm= 0.0968 µm2 .
5.2
Architettura del Dispositivo
In Fig. 5.6 viene mostrata una microfotografia del dispositivo. La
struttura di base della matrice è la cosiddetta tile, che contiene al suo interno
1 Mcelle. Ogni tile è costituita da 1024 word-line e 1088 (1024 + 64) bit-line.
All’interno di ogni tile le bit-line sono suddivise in 8 gruppi di bit-line di dati
(data bit-line, 128 per ogni gruppo), a cui è aggiunto un ulteriore gruppo
Litografia
90 nm
Interconnessioni
Triplo Cu
Materiale a Cambiamento di Fase
Ge2 Sb2 Te5
Dimensioni della Cella
440 nm × 220 nm, 0.0968 µm2
Isolamento
270 nm Shallow Trench
Tipo di Gate
8.5 nm Dual Flavor CoSi2
Tabella 5.1: Parametri tecnologici.
144
Programmazione Multilivello in tecnologia a 90 nm
Figura 5.5: Caratteristica corrente-tensione del selettore bipolare di tipo pnp in
condizioni di polarizzazione diretta (a sinistra) e inversa (a destra).
di 64 bit-line di parità, necessarie per l’identificazione e la correzione degli
errori. Per semplicità, questi gruppi di bit-line nel seguito verranno chiamati
I/O. Le tile sono a loro volta raggruppate in plane (ogni plane include 8
tile), 4 delle quali si trovano a sinistra del data-path (situato al centro del
dispositivo), le rimanenti 4 alla sua destra. L’insieme di 2 plane definisce
una partizione, che costituisce un sottoinsieme di tile simultaneamente attive
durante le operazioni di lettura e scrittura (ogni partizione include dunque 16
tile). I due plane di una partizione sono separati fisicamente. In questo modo
i circuiti di lettura e scrittura possono essere condivisi da due plane adiacenti,
ma appartenenti a partizioni diverse, una sola delle quali può essere attiva
in ogni operazione di lettura o programmazione. Questa soluzione procura
un vantaggio ulteriore, poiché contribuisce a ridurre la caduta di tensione
che si ha nel caso peggiore sulle linee di alimentazione (i due plane che si
trovano alla massima distanza possibile rispetto ai generatori delle tensioni
di alimentazione per le bit-line per le operazioni di lettura/scrittura non sono
mai attivi contemporaneamente) e, quindi, permette di avere specifiche più
rilassate per le tensioni di programmazione.
Durante l’operazione di lettura, oltre a tutti i gruppi di I/O della
partizione selezionata, vengono attivati anche 8 gruppi di I/O di parità, scelti
tra i 16 disponibili in base alle bit-line che vengono selezionate, e, quindi,
all’indirizzo di tali bit-line. Viene selezionata una sola bit-line in ognuno dei
gruppi di I/O, per un totale di 128 + 8 bit-line attive. La scelta operata
nell’organizzazione dei bit di parità permette di avere un layout simmetrico
5.2 Architettura del Dispositivo
145
Figura 5.6: Microfotografia del chip; vengono evidenziate l’organizzazione della
matrice, la posizione del data path, dei circuiti di scrittura, delle pompe di carica
necessarie per generare le alte tensioni, dei generatori dei riferimenti, e della logica
di controllo.
per le tile.
L’utilizzo di un transistore bipolare di tipo pnp come selettore richiede
uno schema di selezione delle word-line complementare rispetto a quello
comunemente utilizzato nelle memorie Flash di tipo NOR. In Fig. 5.7 è
mostrato un dettaglio della matrice di memoria, in cui sono evidenziate le
tensioni applicate alle bit-line e alle word-line di quattro celle di memoria
durante la lettura/scrittura di una di queste: la word-line selezionata è
connessa a massa, mentre quelle non selezionate sono connesse ad una
tensione alta, in modo da mantenere spenti i selettori corrispondenti.
La tensione applicata alla bit-line selezionata (VH ) è differente nel caso
in cui viene effettuata un’operazione di lettura o di programmazione
(rispettivamente 1.3 V e circa 3.8 V) e, quindi, anche la corrispondente
tensione applicata alle word-line non selezionate è differente nei due casi
(rispettivamente 1.3 V e 3.8 V). Le bit-line non selezionate non possono essere
lasciate floating,in modo da di evitare che vengano caricate alla tensione delle
corrispondenti word-line non selezionate attraverso il leakage della giunzione
base-emettitore del selettore. Per questa ragione è stato introdotto un sistema
146
Programmazione Multilivello in tecnologia a 90 nm
R/W
rev
H
cell
Figura 5.7: Polarizzazione delle celle di memoria durante le operazioni di lettura
e programmazione: Vcell indica la tensione ai capi della cella selezionata, mentre
Vrev indica la presenza di una polarizzazione inversa.
di gestione di clamping per la gestione del leakage, detto leaker (Fig. 5.8),
al fine di polarizzare le bit-line non selezionate ad una tensione di 0.3 V.
Durante lo stand-by, la lettura, e la programmazione, un apposito circuito,
detto leakage decoder, collega le bit-line non selezionate a una linea di massa
virtuale, polarizzata a 0.3 V, attraverso un transistore NMOS di dimensioni
minime. La tensione di bit-line è regolata tramite un controllo di tipo on-off,
costituito da un comparatore con isteresi e da un transistore per la scarica.
Le bit-line e le word-line appartenenti alle partizioni non selezionate
vengono polarizzate alle rispettivamente a 0.3 V e 1.3 V invece di essere
lasciate floating (Fig. 5.9), al fine di evitare un’eventuale latenza qualora la
partizione venga attivata a partire dalla condizione di stand-by, assicurando
cosı̀ un’accesso veloce alla modalità di lettura.
Le bit-line indirizzate sono selezionate tramite dei transistori PMOS, i
gate dei quali sono polarizzati con una tensione negativa di valore contenuto,
Vneg , al fine di aumentarne la driving capability. Durante la lettura, le
bit-line selezionate sono polarizzate con uno schema a cascode statico, il
che assicura una buona reiezione dei disturbi provenienti dall’alimentazione
5.2 Architettura del Dispositivo
147
Read/Write
Column Decoder
Row Decoder
Leaker Decoder
VREF
Glue Logic
Figura 5.8: Schema semplificato della matrice di memoria che mostra la gestione
del leakage dei selettori bipolari polarizzati in inversa.
del decodificatore di colonna e una protezione nei confronti di impulsi di
programmazione spuri durante la lettura, assieme ad una rapida precarica
della bit-line [41].
La scelta della tensione di polarizzazione per le bit-line indirizzate
è un aspetto critico: da un lato, infatti, tale tensione deve essere
sufficientemente elevata da garantire una corrente di lettura adeguata,
dall’altro la polarizzazione della cella di memoria deve essere mantenuta
all’interno di una zona operativa ritenuta sicura (Safe Operating Area, SOA),
in modo tale da prevenire eventuali disturbi e stress indesiderati per la cella
stessa. La definizione della regione di SOA è mostrata in Fig. 5.10, dove
vengono anche mostrati i limiti superiori della regione permessa in termini di
corrente e tensione (Isaf e e Vsaf e ): il funzionamento della cella in condizioni
operative sicure è garantito se, qualunque sia lo stato di programmazione
della cella, almeno uno dei due parametri Icell e Vcell (che sono rispettivamente
la corrente che attraversa la cella di memoria e la tensione ai suoi capi)
148
Programmazione Multilivello in tecnologia a 90 nm
Partizione 0
Word-lines @ 1.3 V
Partizione 1
Word-lines @ 3.8 V
Partizione 2
Word-lines @ 1.3 V
Partizione 6
Word-lines @ 1.3 V
Partizione 7
Word-lines @ 1.3 V
Figura 5.9: Polarizzazione delle partizioni della matrice. La partizione selezionata
per la scrittura è evidenziata in rosso.
si trova sotto il limite specificato. Al fine di assicurare una polarizzazione
della cella in fase di lettura senza correre il rischio di alterare il dato
memorizzato viene utilizzato il circuito mostrato in Fig. 5.11. Il ramo sul
lato sinistro della figura si comporta come il selettore bipolare e la parte
di bit-line legata alla cella di memoria (il transistore PMOS è un elemento
dummy che compensa la resistenza di on dei selettori di bit-line in matrice).
La corrente Isaf e è ottenuta applicando una tensione VBG , generata da un
circuito di riferimento a bandgap, ai capi del resistore Rref . Si ha quindi
Isaf e = VBG /Rref . Il resistore R1 è infine utilizzato per ottenere la tensione
richiesta Vsaf e = Isaf e · R1 = VBG · R1 /Rref , in modo tale che la tensione
applicata al gate del dispositivo M1 sia
Vgcasc = VEB (Isaf e ) + Vsaf e + VSD,P 1 + VT H,M 1 (Isaf e ) + VOV,M 1(Isaf e ), (5.1)
dove VEB (Isaf e ) è la tensione emettitore-base del transistore Q1 quando viene
attraversato da una corrente Isaf e , VT H,M 1 e VOV,M 1 sono rispettivamente la
tensione di soglia e l’overdrive (per I = Isaf e ) del dispositivo M1 , e VSD,P 1
è la tensione source-drain relativa al dispositivo dummy P1 . La tensione ai
capi della cella selezionata può essere scritta come
Vcell = VEB (Isaf e ) + Vsaf e + VSD,P1 + VT H,M1 (Isaf e ) + VOV,M1 (Isaf e )+
−VT H,M2 (Icell ) − VOV,M2 (Icell ) − VSD,M2 (Icell ) − VSD,BLS − VEB (Icell )
(5.2)
5.2 Architettura del Dispositivo
149
Figura 5.10: Definizione della Safe Operating Area (SOA, regione non
tratteggiata).
dove VT H,M2 e VOV,M2 sono rispettivamente la tensione di soglia e l’overdrive
del transistore M2 quando questo è attraversato da una corrente Icell , VSD,BLS
è la tensione ai capi del selettore di bit-line, e VEB (Icell ) è la tensione
emettitore-base del selettore di word-line per I = Icell . Se si ipotizza che
vi sia un buon matching tra tra i corrispondenti elementi nei due rami e che
le differenze VT H,M2 (Icell )−VT H,M1 (Isaf e ) e VSD,BLS −VSD,P1 siano trascurabili,
l’Equazione (5.2) si riduce a
Vcell = VEB (Isaf e ) + Vsaf e + VOV,M1 (Isaf e ) − VOV,M2 (Icell ) − VEB (Icell ). (5.3)
Il punto di lavoro della cella nel circuito di Fig. 5.11 in funzione della
sua resistenza programmata è mostrato in Fig. 5.10. Se nella cella scorre una
corrente maggiore di Isaf e , la tensione ai capi della cella scende al di sotto
di Vsaf e , poiché VEB (Icell ) > VEB (Isaf e ) e VOV,M2 (Icell ) > VOV,M1 (Isaf e ), e
viceversa, se la tensione ai capi della cella è maggiore di Vsaf e , si ha che
VEB (Icell ) + VOV,M2 (Icell ) > VEB (Isaf e ) + VOV,M1 (Isaf e ), e la corrente che
attraversa la cella crolla al di sotto di Isaf e (in sostanza, il bipolare limita
la corrente a valori inferiori a Isaf e ). Il punto di lavoro della cella è perciò
mantenuto all’interno della SOA per ogni condizione di programmazione della
cella.
150
Programmazione Multilivello in tecnologia a 90 nm
Isafe
Vgcasc
M1
Vneg
Vpref
M3
A
M2
Vneg
P1
+
Vsafe
R1
-
to sense
amplifier
GST
+
Heater
Q1
Figura 5.11: Schema del circuito di lettura utilizzato per polarizzare la cella di
memoria all’interno della SOA.
Il drain del transistore M2 è connesso al drain di un transistore PMOS
che funge da carico di colonna (column load, M3 ), il cui gate è polarizzato
con una tensione di riferimento (Vpref ). La tensione al nodo A costituisce uno
degli ingressi del sense amplifier (non mostrato in Fig. 5.11).
Com’è stato precedentemente sottolineato, per programmare la cella
di memoria con l’algoritmo di programmazione multilivello adottato
è necessario avvalersi di specifiche forme d’onda per la corrente di
programmazione. La programmazione è ottenuta forzando un’appropriata
corrente di programmazione Iprog attraverso la cella di memoria. Una corrente
di valore opportuno viene generata con un convertitore digitale-analogico
(Digital to Analog Converter, DAC) di corrente posto nella periferia del chip,
e viene poi specchiata verso il core del dispositivo per ottenere la corrente di
programmazione Iprog , com’è mostrato in Fig. 5.12. Al fine di minimizzare
la caduta di tensione lungo la word-line, viene programmata una sola cella
alla volta all’interno di ogni tile, programmando simultaneamente 16 celle
in 16 distinte tile all’interno della partizione selezionata. Il funzionamento
del DAC è pilotato da un microcontrollore integrato nel dispositivo, che
permette di controllare adeguatamente l’evoluzione temporale della corrente
di programmazione Iprog .
5.3 Algoritmo di Programmazione
151
Array Left
Mid Core
Vpump
Vpump
Array Right
Vpump
Vpump
Vpump
Program Current DAC
Periphery
EN0
EN1
EN2
EN31
Iref
Figura 5.12: Generazione della corrente di programamzione e specchi per la sua
distribuzione.
5.3
Algoritmo di Programmazione
Come è stato sottolineato in precedenza, il funzionamento del chip come
dispositivo a 2 bit per cella richiede che le distribuzioni di corrente letta
relative ai livelli di programmazione intermedia vengano posizionate tra il
minimo livello ottenibile, corrispondente allo stato di completo Reset (IR ), e
il massimo livello ottenibile, corrispondente allo stato di Set completo (IS ).
La posizione migliore per i livelli intermedi all’interno di questa finestra deve
essere scelta in modo da assicurare il massimo margine di lettura ottenibile
tra due distribuzioni adiacenti. Poiché in questo dispositivo la lettura viene
effettuata applicando una tensione predeterminata ai capi della cella e
misurando la corrente che scorre in questa (Icell ), è parso naturale posizionare
i livelli intermedi in modo tale che le correnti di lettura associate ad n
differenti livelli programmati siano uniformemente spaziate nell’intervallo tra
IR e IS .
I valori intermedi di resistenza della cella possono essere ottenuti
sia modulando lo spessore della calotta di GST amorfo (Fig. 5.13(a)),
sia controllando lo spessore del cammino conduttivo all’interno del GST
precedentemente reso amorfo (Fig. 5.13(b)) [58]. In base alle considerazioni
viste nel paragrafo 4.3, in questo chip è stato scelto il secondo approccio.
Secondo la teoria JMAK (Capitolo 2), la frazione cristallina della regione
attiva di una cella PCM, che si trova inizialmente nella fase amorfa, cambia in
funzione del tempo e della temperatura. Poiché la temperatura all’interno del
152
Programmazione Multilivello in tecnologia a 90 nm
Figura 5.13: Schema delle due possibili evoluzioni della distribuzione di fase del
GST nella regione attiva per raggiungere uno stato di programmazione intermedio:
aumento dello spessore della calotta amorfa al di sopra del riscaldatore (a);
aumento della frazione cristallina all’interno della calotta amorfa (b).
GST dipende dalla corrente che attraversa la cella, è possibile controllare la
frazione cristallina (e perciò la resistenza della cella) con un adeguato grado
di accuratezza regolando in maniera appropriata l’ampiezza e/o la durata
degli impulsi di Set di corrente applicati alla cella di memoria (e quindi la
quantità di energia fornita al materiale calcogneuro). In altre parole, mentre
nella programmazione bilivello gli impulsi di Set devono avere una durata
ed un’ampiezza sufficienti a cristallizzare completamente la regione attiva
della cella, nel caso della programmazione multilivello, invece, devono essere
applicati alla cella impulsi con ampiezza e durata minore, al fine di ottenere
una cristallizzazione parziale della regione attiva.
Com’è stato chiarito nel capitolo precedente, l’algoritmo di
programmazione utilizzato è basato su una tecnica di tipo P&V, al
fine di assicurare un adeguato controllo della resistenza della cella. Ogni
impulso di programmazione è controllato in corrente, accelerando cosı̀
l’effetto Joule direttamente al punto in cui la sua efficienza è massima.
Secondo la strategia di programmazione adottata (Fig. 5.14), la cella è
dapprima programmata nel suo stato a resistenza minima (RS ) attraverso
un impulso di Set-sweep. A questo punto viene applicato alla cella un singolo
impulso di Reset, caratterizzato da un tempo di discesa molto rapido, allo
scopo di inizializzare la cella nello stato di Reset. Nel Capitolo 4, attraverso
un’analisi sperimentale, si è visto che questa sequenza preparatoria porta al
5.4 Risultati Sperimentali
153
raggiungimento di risultati più precisi dopo l’applicazione dell’algoritmo di
programmazione SCU con P&V, composta da una sequenza di impulsi di
ampiezza Iprog,i, ognuno seguito da una verifica dello stato di programmazione
della cella. Tutti gli impulsi Iprog,i hanno la stessa durata, mentre l’ampiezza
della corrente di programmazione è incrementata di una quantità fissa
(ΔIprog ) rispetto all’impulso precedente (Fig. 5.14). La sequenza di
programmazione SCU opera lungo il tratto discendente della curva di
programmazione R-I di Fig. 5.4. L’implementazione dell’algoritmo di
programmazione SCU è ottenuta in maniera semplice pilotando il DAC di
corrente.
Il numero di impulsi di programmazione e, quindi, il tempo necessario a
raggiungere il valore di resistenza della cella desiderato, dipende sia dal valore
iniziale della corrente di programmazione (Iprog,1), sia dall’incremento ΔIprog
tra un impulso e il successivo nella sequenza di programmazione SCU, ed in
particolare aumenta al diminuire del valore di ΔIprog . È bene ricordare che
ΔIprog influisce sull’accuratezza di programmazione: se si utilizza un valore
di ΔIprog contenuto, l’accuratezza del valore di corrente di lettura ottenuto
risulta essere maggiore, mentre se si utilizza un valore più elevato di ΔIprog
il valore obiettivo di corrente letta viene raggiunto con un numero inferiore
di passi di programmazione, ma la precisione ottenuta risulta essere minore.
Poiché la durata della sequenza SCU dipende linearmente dal numero di
impulsi applicati alla cella di memoria, appare chiaro che il valore di ΔIprog
deve essere scelto come il miglior compromesso tra accuratezza e durata
complessiva dell’operazione di programmazione.
5.4
Risultati Sperimentali
L’algoritmo di programmazione completo (Fig. 5.15) è stato
implementato attraverso un microcontrollore a 8 bit dotato di 32 registri
integrato sul dispositivo. L’algoritmo inizia con un impulso di tipo Set-sweep
che porta la cella di memoria nello stato cristallino. Se i bit da memorizzare
corrispondono al livello “11” (massima corrente di lettura, IS ), l’algoritmo
si ferma. In caso contrario viene applicato un impulso di Reset. A questo
punto l’algoritmo si ferma se devono essere memorizzati i bit “00” (minima
corrente di lettura, IR ), oppure continua applicando la sequenza SCU con
P&V in modo da programmare i dati richiesti, cioè “01” o “10”, ottenendo
cosı̀ il valore intermedio desiderato di Icell . L’algoritmo proposto è stato
154
Programmazione Multilivello in tecnologia a 90 nm
Figura 5.14: Algoritmo di programmazione multilivello proposto (le frecce
indicano l’operazione di Verify).
caratterizzato sperimentalmente. In particolare, è stata misurata una durata
media per un’operazione di programmazione completa di circa 35 µs/kb,
corrispondenti ad un throughput di circa 3.5 MB/s (in media vengono
richiesti meno di 8 impulsi di programmazione per completare la sequenza
SCU), con un consumo di corrente proveniente dalle pompe di carica di circa
10 mA.
L’intera matrice di memoria è stata programmata in un primo momento
nello stato di Set minimo (livello “11”) e successivamente ai livelli logici
“01”, “10” oppure “00”, secondo i valori caricati nel data buffer. Le
distribuzioni ottenute sono mostrate in Fig. 5.16. Esse sono spaziate
uniformemente all’interno della finestra permessa, e la distanza tra due stati
di programmazione adiacenti risulta adeguata. In modalità di test, l’analisi
sperimentale ha mostrato un tempo di accesso di circa 120 ns nel caso di
lettura di tipo seriale con accesso casuale. Con un approccio parallelo è
possibile raggiungere tempi di accesso più veloci. In Tabella 5.2 sono riassunte
le caratteristiche chiave del dispositivo di memoria proposto.
5.4 Risultati Sperimentali
155
Figura 5.15: Diagramma di flusso dell’algoritmo di programmazione multilivello
adottato.
100.00
90.00
80.00
70.00
%
60.00
50.00
40.00
30.00
20.00
10.00
0.00
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Icell [μA]
Figura 5.16: Distribuzioni cumulative ottenute con l’algoritmo di
programmazione proposto: livello “00” (blu), “01”(verde), “10” (viola) e
“11” (rosso).
156
Programmazione Multilivello in tecnologia a 90 nm
Alimentazione del core
Alimentazione degli IO
Organizzazione
Capacità di memoria
Prestazioni in lettura
Prestazioni in scrittura
Dimensioni del dispositivo
2.7 ÷ 3.6 V
1.6 ÷ 3.6 V
16 Mb × 16 (multilivello)
256 Mb (multilivello)
120 ns (multilivello)
3.5 Mb/s (multilivello)
36 mm2
Tabella 5.2: Parametri chiave del dispositivo.
Conclusioni
Le memorie Flash costituiscono attualmente la tecnologia dominante nel
campo delle memorie non volatili. Si prevede però che nei prossimi anni
questa tecnologia raggiunga i suoi limiti intrinseci di scalabilità. Per questa
ragione le principali aziende produttrici di memorie non volatili stanno
investendo notevoli risorse nella ricerca, al fine di sviluppare tecnologie
alternative a quella Flash. Nel panorama delle nuove tecnologie sotto
indagine, uno dei candidati più promettenti è costituito dalle memorie a
cambiamento di fase. Al fine di ridurre i costi di produzione, una delle
strategie da adottare, già utilizzata nel caso delle memorie Flash, è costituita
dall’approccio multilivello, che permette di memorizzare di più di un bit
all’interno della singola cella di memoria, incrementando cosı̀ la densità di
dati memorizzabili a parità di generazione tecnologica.
L’attività di ricerca presentata nel presente lavoro di tesi ha riguardato
lo studio, lo sviluppo e la caratterizzazione sperimentale di algoritmi di
programmazione multilivello. L’indagine sperimentale è stata eseguita su
tre dispositivi sperimentali, lo ZZA0-MOS e lo ZZA0-BJT (realizzati in
tecnologia a 180 nm), sviluppati da STMicroelectronics, e un dispositivo
in tecnologia a 90 nm, realizzato da STMicroelectronics in collaborazione
con Intel. Sui primi due dispositivi, in particolare, è stato eseguito
uno studio delle problematiche relative alla programmazione multilivello,
effettuando dapprima un’analisi su singole celle di memoria, al fine di
studiare le caratteristiche di programmazione di queste e, quindi, un’indagine
su vaste popolazioni di celle, al fine di studiare il problema della
programmazione multilivello a livello statistico. I risultati ottenuti hanno
portato all’elaborazione di algoritmi che rendono possibile la memorizzazione
158
Conclusioni
di 2 bit per cella. Gli algoritmi proposti permettono infatti di ottenere quattro
distribuzioni di corrente letta non sovrapposte e ben separate, garantendo un
adeguato margine di lettura. Il dispositivo in tecnologia a 90 nm, invece,
è stato utilizzato per dimostrare l’efficacia dei risultati ottenuti su una
tecnologia di integrazione più spinta.
Accanto alle attività finora descritte, infine, mi sono occupato
dello sviluppo di strumenti software, come supporto per l’attività
di caratterizzazione effettuata. Tali strumenti permettono infatti
un’archiviazione automatica dei file di testo contenti i dati sperimentali
ottenuti, e ne manipolano opportunamente il contenuto per semplificare le
successive operazioni di analisi.
Appendice
A
Setup Sperimentale
Nei Capitoli 4 e 5 sono stati illustrati i risultati sperimentali ottenuti sui
dispositivi ZZA0-BJT e ZZA0-MOS e su un dispositivo in tecnologia a 90
nm, realizzati rispettivamente in tecnologia a 180 nm e 90 nm. In questa
Appendice si discuterà degli strumenti, sia hardware sia software, che hanno
permesso l’ottenimento di tali risultati. Tra i primi figurano le macchine di
test (il QT200 e il Kalos 2), mentre tra i secondi meritano di essere menzionati
i programmi che sono stati appositamente sviluppati per l’elaborazione dei
dati sperimentali.
A.1
A.1.1
Caratterizzazione
dei
ZZA0-BJT e ZZA0-MOS
dispositivi
Il QT200
Il QT200 è una macchina di test utilizzata per la caratterizzazione
sperimentale effettuata sui dispositivi ZZA0-MOS e ZZA0-BJT. Questa
apparecchiatura è stata progettata e realizzata da STMicroelectronics, che la
utilizza tuttora per il collaudo industriale di memorie non volatili. Il QT200
è in grado di generare segnali logici programmabili, alimentazioni e tensioni
analogiche, ed è dotato di linee di misura dedicate per il sensing di tensioni
e correnti.
In Fig. A.1 è mostrato lo schema a blocchi della macchina. Lo strumento
è costituito da una base, che contiene i circuiti che generano i segnali e le
tensioni di alimentazione, e da una testa di collaudo, che riceve i segnali
Setup Sperimentale
160
PC
D.U.T
Jig
Alimentatori
e
Generatori
Testa di
collaudo
Figura A.1: Schema a blocchi del QT200.
generati nella base e invia a questa i valori delle tensioni e delle correnti
misurate. Sulla testa di collaudo viene montata una scheda dedicata, detta
Jig, specifica per ogni dispositivo da caratterizzare, che ha la funzione di
interfacciare il dispositivo sotto misura (Device Under Test, DUT) con il
resto dell’apparecchiatura. A controllare il funzionamento del QT200 e a
ricevere i dati sperimentali è un personal computer, sul quale è caricato un
software appositamente realizzato. Al fine di implementare le routine di test,
l’utilizzatore si serve di un linguaggio di programmazione dedicato, composto
da due parti: un macrocodice, linguaggio di alto livello, ed un microcodice, di
livello più basso, con il quale si agisce direttamente sui registri e sulla logica
di controllo dei segnali generati dalla macchina.
Il QT200 ha al suo interno tre alimentatori, controllati da un
microprocessore Z80, ognuno dei quali genera tre valori di tensione (per un
totale di nove), denominati PW1-PW9. I valori di tali tensioni possono essere
controllati singolarmente, e sono relativi a una massa analogica separata
da quella relativa ai segnali digitali. Le tensioni fornite possono variare
all’interno di uno dei quattro intervalli selezionabili: ± 2 V, ± 4 V, ± 16
V, e ± 32 V, mentre la massima corrente erogabile è pari a 250 µA.
La linea di misura, chiamata PW0, permette sia di forzare una tensione
o una corrente, sia di misurare il valore di una tensione o di una corrente.
Gli intervalli di queste variabili sono gli stessi delle variabili generate dagli
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 161
alimentatori. Tutti gli alimentatori, ad esclusione del primo (PW1), possono
essere utilizzati a coppie: esiste infatti una funzione che permette di fornire
alla stessa linea che arriva ad un piedino del DUT l’una o l’altra tensione
generate da due alimentatori differenti. La commutazione tra le due tensioni
fornite alla linea è effettuata tramite appositi relè presenti sul Jig e comandati
via software.
Al fine di ottenere le temporizzazioni e le sincronizzazioni desiderate, il
QT200 è dotato di un misuratore di tempi e di frequenze, la cui risoluzione
è di 10 ns.
La testa di collaudo è composta da:
• un blocco sincronizzatore, che genera il livello logico che si intende
forzare su ognuno dei pin del dispositivo sotto misura;
• un generatore di fasi, segnali che seguono una temporizzazione
prestabilita assegnata per mezzo di istruzioni via software;
• una scheda di gestione degli indirizzi, denominata Address Pin Electric;
• una scheda di gestione delle alimentazioni;
• una scheda di gestione delle linee dati, detta Data Pin Electric;
• un sistema di scrambling, per la gestione dei fail e memorie.
A.1.2
Il Programma di Test
Le routine di test vengono implementate tramite un linguaggio di
programmazione dedicato, e permettono all’utilizzatore di interagire con
il QT200 attraverso un PC. Le routine sviluppate per la caratterizzazione
sperimentale dei dispositivi ZZA0-BJT e ZZA0-MOS sono state numerate in
maniera progressiva (da 0 a 29) in base alla data di generazione. Le routine
utilizzate durante la caratterizzazione sperimentale che ha interessato la mia
attività di ricerca sono le seguenti.
• Parametric Test (routine 0): verifica il corretto funzionamento del DUT
dal punto di vista elettrico, controllando, ad esempio, che i vari pin
non si trovino in condizione di circuito aperto, di corto circuito, o che
presentino un leakage di valore inaccettabile. Questa routine deve essere
utilizzata ogni volta ogni volta che un DUT viene posizionato sul Jig,
al fine di verificare se esso è effettivamente funzionante.
162
Setup Sperimentale
• Array Cells DMA (routine 3): esegue l’operazione di DMA su un’area
della matrice di memoria del dispositivo;
• Programming Curve (routine 13): ottiene la curva di programmazione
su una o più celle di memoria.
• Reset (routine 21): esegue un’operazione di Reset su un’area della
matrice di memoria.
• SCD Set (routine 24): esegue un’operazione di Set tramite sequenza
SCD su un’area della matrice di memoria.
• Retention Flow (routine 25): permette di effettuare un’operazione di
DMA su più aree della matrice di memoria in maniera automatica.
• Multi-Level Char (routine 27): esegue una programmazione multilivello
su più aree della matrice di memoria.
Una volta avviato il programma di test del QT200, l’utente deve
selezionare la routine desiderata tramite una semplice interfaccia testuale.
Nel caso in cui sia selezionata la routine 0, la macchina esegue in
modo automatico i vari test di funzionalità del dispositivo. Per le altre
routine, invece, all’utente è richiesto di inserire i parametri necessari alla
caratterizzazione da effettuare:
• gli indirizzi delle celle da caratterizzare (nel caso si lavori su una o
più aree della matrice, vengono richiesti i valori iniziali e finali per le
righe e le colonne appartenenti alle aree interessate; è inoltre possibile
scegliere di lavorare su una sola linea di ingresso/uscita o su tutte e 8
in parallelo);
• i parametri che permettono di selezionare l’algoritmo di
programmazione da utilizzare; nel caso della routine 13, ad esempio,
è possibile selezionare l’algoritmo per ottenere la curva/superficie di
programmazione di una cella di memoria, come è stato mostrato nel
paragrafo 4.3.3; è inoltre possibile, nel caso del dispositivo ZZA0-MOS,
decidere se effettuare una programmazione pilotata in tensione o in
corrente; se si sceglie di effettuare una programmazione multilivello,
invece, viene chiesto all’utente se si desidera effettuare una lettura in
DMA delle aree di memoria programmate in maniera automatica al
termine della routine di scrittura;
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 163
VA
VA
Decodificatore
di colonna
VYO
YO
Md
VDISCH
VPCX
Figura A.2: Cammino di lettura/scrittura del dispositivo ZZA0-MOS.
• l’ampiezza della tensione di lettura (VREAD );
• l’ampiezza delle tensioni di programmazione (VSET , VRESET e VP CX )
e la loro durata, nel caso in cui si esegua una routine che preveda
di effettuare una scrittura; nelle routine 24 e 27, poiché prevedono
l’applicazione alle celle di una sequenza di impulsi di programmazione
a scaletta rispettivamente discendente e ascendente, vengono richiesti
il valore iniziale e quello finale della sequenza, nonché il passo con cui
la tensione è incrementata o decrementata;
• i valori delle correnti di riferimento per l’operazione di verify;
• le tensioni di alimentazione del decodificatore di colonna (VA , si veda
Fig. A.2) nel caso si effettui una lettura o una programmazione.
Dopo l’inserimento di questi dati, il software si occupa dell’esecuzione
della routine selezionata in maniera automatica, mostrando sul video i
risultati delle misure eseguite. Nel caso in cui si sia eseguita un’operazione di
DMA, ad esempio, viene riportato il valore della corrente letta di tutte le celle
selezionate, mentre nel caso in cui sia stata eseguita una programmazione
164
Setup Sperimentale
Figura A.3: Esempio di datalog contenente l’uscita di un’operazione di DMA.
multilivello, oltre alla corrente di lettura delle celle (nel caso in cui sia stato
abilitato il DMA), viene riportato il numero di impulsi di programmazione
applicati ad ogni elemento di memoria.
Tutto ciò che compare sull’interfaccia testuale per l’utente (i menu
per la selezione delle routine da eseguire e per l’inserimento dei dati,
nonché i risultati sperimentali ottenuti) viene salvato su un file di testo,
chiamato datalog. Sul datalog, dunque, sono riportati tutti i dati relativi alle
caratterizzazioni sperimentali effettuate e in base a questi dati è possibile
ricostruire tutte le operazioni svolte dal QT200.
Poiché, come si è visto nel Capitolo 4, le caratterizzazioni sperimentali
effettuate hanno interessato vaste aree della matrice di memoria, si è
reso necessario estrarre dai vari datalog i dati sperimentali, ed elaborarli
successivamente con l’ausilio di strumenti automatici come Matlab o Excel.
In Fig. A.3 è mostrata a titolo esemplificativo qualche riga di un Datalog,
relativa all’uscita di un’operazione di DMA. Come si può vedere, oltre ai
valori delle correnti lette, la cui ampiezza in A è preceduta dalla stringa
“IBIT =”, sono presenti anche altri dati (l’indirizzo della cella, la tensione
di lettura VBG READ, la tensione di alimentazione del decodificatore di
colonna VDMA e i valori della resistenza della cella e della tensione ai suoi
capi). È dunque necessario disporre di uno strumento che estragga solamente
i dati utili (in questo caso, i valori di corrente di lettura), riconoscendoli
all’interno del datalog. A tal fine è stato elaborato un software apposito,
chiamato DatalogReader, che verrà descritto più in dettaglio nel prossimo
paragrafo.
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 165
A.1.3
Il DatalogReader
Il DatalogReader è un software da me realizzato in linguaggio C# (un
linguaggio di programmazione orientato agli oggetti sviluppato da Microsoft),
utilizzando l’ambiente di sviluppo Microsoft Visual Studio, allo scopo di
estrarre dai datalog i dati sperimentali, frutto delle caratterizzazioni eseguite.
Esso permette inoltre, in modo automatico, di archiviare i datalog e di creare
dei registri che contengono informazioni sulle caratterizzazioni sperimentali
effettuate sui vari dispositivi, in modo tale da rendere più semplice e veloce il
reperimento e la consultazione dei dati sperimentali desiderati, e di ricostruire
la “storia” di ogni dispositivo. Il DatalogReader è un software molto flessibile
e consente di essere aggiornato facilmente nel caso vengano aggiunte nuove
routine di test o vengano modificate quelle esistenti. In questo paragrafo
verrà descritto il funzionamento del DatalogReader a partire dalla descrizione
dell’interfaccia utente, al fine di chiarire meglio il modo in cui esso opera.
In Fig. A.4 è mostrata l’interfaccia utente, utilizzata per interagire
con il DatalogReader. Nella parte superiore sono presenti quattro
checkbox (rispettivamente MENU3, MENU25, MENU13 e MENU27), che
corrispondono ad alcune delle routine di test sopra descritte. Il fatto che
siano state scelte solamente queste quattro deriva dal fatto che sono le
uniche a produrre dei dati sperimentali in uscita (rispettivamente i valori
di correnti di lettura della celle di memoria relative ad una o più aree
della matrice, la caratteristica di programmazione di una o più celle, e il
numero di impulsi di programmazione applicati ad ogni cella, assieme ai
valori delle correnti di lettura, nel caso in cui sia stato abilitato il DMA
al termine della programmazione multilivello). A seconda che si voglia
estrarre dal datalog i dati relativi ad un’operazione di DMA, ad una o più
curve di programmazione, ad un DMA su più aree di memoria o ad una
programmazione multilivello, è sufficiente selezionare il checkbox relativo
alla routine corrispondente (di default sono selezionati tutti e quattro).
Ad ognuno di questi checkbox è associata una classe (in un linguaggio di
programmazione orientato agli oggetti, con il termine classe si definisce una
struttura che può contenere sia dati, sia funzioni necessarie alla loro gestione)
avente lo stesso nome (Menu3, Menu13, Menu25 e Menu27 ), contenenti i
metodi (funzioni che operano sugli oggetti presenti in ogni classe) necessari
all’estrazione delle informazioni desiderate dal datalog. Nel caso vengano
sviluppate nuove routine di test che producano un’uscita da cui debbano
166
Setup Sperimentale
essere estratti i dati sperimentali, è sufficiente aggiungere una nuova classe
a cui collegare un nuovo checkbox. Sulla parte destra della finestra, invece,
sono presenti due textbox, denominate “Lotto” e “Pezzo”, in cui l’utente deve
inserire rispettivamente il codice identificativo del lotto a cui a cui appartiene
il DUT, e il numero di quest’ultimo (come si vedrà in seguito queste sono
informazioni che saranno utilizzate per la catalogazione dei datalog). Al
di sotto di questi elementi sono presenti due stringhe: “Root Directory”,
affiancata dal nome della directory di lavoro principale in cui verranno copiati
i datalog (“C:\PCMML”) e “Current Datalog file is” affiancata dal nome
del datalog che verrà selezionato. Nella parte inferiore sinistra della finestra
è presente una textarea, nella quale vengono riassunte le operazioni svolte
dal DatalogReader dal momento in cui viene lanciato, assieme a data e ora
di esecuzione. A destra di questa, invece, è presente una casella di testo
(contrassegnata da “Commenti”) in cui inserire una breve descrizione della
misura effettuata. In basso a destra sono presenti quattro pulsanti:
• “Load Datalog...”: consente all’utente di selezionare il datalog da
processare;
• “Reset Log”: consente di cancellare il contenuto della textarea presente
sulla sinistra della finestra;
• “Start”: il programma inizia a eseguire le operazioni desiderate sul
datalog selezionato (esso non è attivo finché non viene caricato un
datalog; non è inoltre consentita l’esecuzione di alcuna operazione
finché i campi “Lotto” e “Pezzo” non vengono riempiti);
• “Close”: chiude il DatalogReader.
Una volta che tutti i campi sono stati completati e viene premuto
il pulsante “Start”, il DatalogReader genera, all’interno della directory
“C:\PCMML”, una sottodirectory che ha come nome la stringa inserita nel
campo ”Lotto”, e all’interno di questa un’ulteriore sottodirectory avente come
nome la stringa contenuta nel campo “Pezzo”. Se ad esempio i campi “Lotto”
e “Pezzo” contengono rispettivamente “Pippo” e “1”, il risultato di queste
operazioni sarà la creazione della directory “C:\PCMML\Pippo\1”. Lo scopo
della creazione di tale percorso è quello di permettere una catalogazione dei
datalog intuiva ed efficiente. All’interno della directory appena vista, ne viene
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 167
Figura A.4: Interfaccia utente del DatalogReader.
creata una nuova, all’interno della quale viene copiato il datalog selezionato,
il cui nome contiene la data e l’ora in cui è stato premuto il pulsante “Start”.
A questo punto il DatalogReader, in maniera trasparente all’utente,
aggiorna i campi di un registro generale, costituito da un foglio di lavoro
Excel (Registro.xls) che si trova nella directory “C:\PCMML”, mostrato in
Fig. A.5: nella colonna A viene riportato l’hyperlink contenente l’indirizzo
completo della directory in cui è stato copiato il datalog; nelle colonne
B e C vengono rispettivamente copiati i contenuti dei campi “Lotto” e
“Pezzo”, mentre nella colonna D viene riportato quanto inserito nel textbox
“Commenti”.
Dopo l’aggiornamento del registro generale, il DatalogReader procede con
l’aggiornamento (o con la creazione, se non esiste) di un ulteriore foglio di
lavoro Excel, un registro relativo al dispositivo a cui si riferisce il datalog,
chiamato pertanto “Registro Pezzo XX.xls” (XX indica il numero assegnato
al DUT). In Fig. A.6 è mostrato un esempio di questa categoria di registri:
nella casella A1 viene indicato il numero del DUT (in questo caso, “Pezzo
44”); nella casella sottostante (A2) vengono riportate la data e l’ora in cui
il registro viene aggiornato; le due righe sottostanti (3 e 4) contengono
gli indirizzi delle righe e delle colonne interessate dalla caratterizzazione
Setup Sperimentale
168
Figura A.5: Esempio di registro generale in Excel.
sperimentale eseguita; nelle due righe successive, invece, devono essere
compilate dall’utilizzatore inserendo le operazioni eseguite sulle aree di
memoria sopra indicate; qualora venissero eseguite ulteriori caratterizzazioni
sul dispositivo, come mostrato nell’esempio, il DatalogReader procede con la
compilazione delle stesse informazioni sopra citate nelle prime righe libere
che vengono trovate nel foglio di lavoro.
Al termine dell’esecuzione di queste operazioni, il DatalogReader procede
con la ricerca all’interno del datalog dei dati desiderati, in base alla
selezione effettuata tramite i checkbox situati nella parte superiore sinistra
dell’interfaccia utente. Se nessuno di questi è stato selezionato, il programma
esce dalla modalità esecutiva, e si mette in attesa per l’inserimento di nuovi
dati. Se invece uno o più dei suddetti checkbox è selezionato, il DatalogReader
procede con l’esecuzione dei metodi presenti nelle classi corrispondenti.
Poiché il funzionamento di tali classi è pressoché equivalente, ne verrà
esaminata in dettaglio soltanto una, quella per l’estrazione dei dati che
costituiscono l’output della routine 27. Il costruttore della classe (metodo
che ha lo scopo di inizializzare i dati interni alla classe) è il seguente:
internal Menu27(string file, mainForm aForm)
{
sourceFile = new StreamReader(file);
observer = aForm;
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 169
Figura A.6: Esempio di registro di un DUT in Excel.
}
Al costruttore vengono passate come parametri due variabili: la prima è
una stringa in cui è contenuto il nome del datalog, mentre la seconda è un
riferimento al form che costituisce l’interfaccia utente. La prima di queste
variabili è utilizzata per inizializzare una variabile di tipo StreamReader, che
permette di leggere il contenuto di un file di testo (il datalog, in questo caso).
Il metodo find(), mostrato qui di seguito, si occupa di cercare all’interno
del datalog delle determinate stringhe che identificano l’inizio dei dati relativi
alla routine 27.
public void find()
{
observer.log(Language.LOG_SEARCHING_LABEL +
Language.MENU27_LABEL + "...");
while ((line = sourceFile.ReadLine()) != null)
{
if (isMenu27(line))
{
nMenu27++;
Setup Sperimentale
170
observer.log(Language.MENU27_LABEL +
Language.LOG_FOUND_LABEL);
observer.di = new DirectoryInfo(observer.path +
Language.DIR_MENU27+nMenu27);
observer.di.Create();
nDMA = 0;
nMAP = 0;
findDMAandMaps();
if (newMenu27)
{
nMenu27++;
observer.log(Language.MENU27_LABEL +
Language.LOG_FOUND_LABEL);
observer.di = new DirectoryInfo(observer.path +
Language.DIR_MENU27 + nMenu27);
observer.di.Create();
nDMA = 0;
nMAP = 0;
findDMAandMaps();
newMenu27 = false;
}
}
}
observer.log(Language.MENU27_LABEL +
Language.LOG_NOT_FOUND_LABEL);
}
Il metodo prevede l’esecuzione di un ciclo while, all’interno del quale,
ad ogni iterazione, il datalog viene letto una riga alla volta. Viene quindi
eseguito un test per verificare se la riga contiene l’identificatore della routine
27. Se il test ha dato esito positivo, viene creata una sottodirectory chiamata
“Menu27”, all’interno della quale saranno copiati i file contenenti i dati
desiderati. A questo punto viene richiamato il metodo findDMAandMaps(),
che ha la funzione di cercare i dati prodotti dall’operazione di DMA (se si è
scelto di eseguirla al termine della programmazione multilivello) e le mappe
contenenti il numero di impulsi di programmazione applicati a ciascuna cella
di memoria presente nella porzione di matrice selezionata (un esempio è
mostrato in Fig. A.7).
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 171
Figura A.7: Esempio di mappa contenente il numero di impulsi di
programmazione applicati ad ogni cella di memoria selezionata.
private void findDMAandMaps()
{
observer.log(Language.LOG_SEARCHING_LABEL +
Language.LOG_MAP_DMA+"...");
StreamWriter sw = null;
string line;
while ((line = sourceFile.ReadLine()) != null)
{
if (Util.isDMA(line))
{
observer.log(Language.DMA_LABEL +
Language.LOG_FOUND_LABEL);
nDMA++;
saveDMA(line);
noDMAFound = false;
}
else if (Util.isMap(line))
{
observer.log(Language.MAP_LABEL +
Language.LOG_FOUND_LABEL);
Setup Sperimentale
172
nMAP++;
saveMap(line);
noMapFound = false;
}
if (isMenu27(line))
{
newMenu27 = true;
break;
}
if (Util.isMenu3(line) || Util.isMenu13(line) ||
Util.isMenu25(line))
{
break;
}
}
if (noDMAFound)
observer.log(Language.DMA_LABEL +
Language.LOG_NOT_FOUND_LABEL);
sw = new StreamWriter(observer.path + Language.DIR_MENU27 +
nMenu27 + Language.N_th);
sw.Write (nDMA);
sw.Close();
if (noMapFound)
observer.log(Language.MAP_LABEL +
Language.LOG_NOT_FOUND_LABEL);
}
Il metodo findDMAandMaps(), come del resto il precedente, prevede una
lettura riga per riga del datalog. Ad ogni riga viene viene eseguito un ulteriore
test, per verificare se questa contiene la stringa che identifica l’inizio di un
DMA o di una mappa. Se il test ha avuto esito positivo viene richiamato il
metodo saveDMA() oppure il metodo saveMap(), che hanno la funzione di
salvare su file i dati relativi al DMA o a una mappa.
Il metodo saveDMA() permette, a partire dalla riga corrente del datalog,
di salvare i dati relativi all’operazione di DMA all’interno di un nuovo file di
testo.
public void saveDMA(string firstLine)
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 173
{
StreamWriter sw = null;
string dir;
if (!reset)
{
dir = observer.path + Language.DIR_MENU27+nMenu27 +
Language.DIR_DISTRIBUTION + nDMA + Language.DIR_DMA;
}
else
{
dir = observer.path + Language.DIR_MENU27+nMenu27 +
"\\reset_"+ nDMA + Language.DIR_DMA;
nDMA--;
}
observer.di = new DirectoryInfo(dir);
observer.di.Create();
string dmaFileName = "\\";
dmaFileName += Language.DMA_FILE_NAME +
Language.FILE_EXTENSION;
try
{
sw = new StreamWriter(dir + dmaFileName);
}
catch (IOException ex) { }
sw.WriteLine(Util.clear(firstLine, false));
while ((firstLine = sourceFile.ReadLine()) != null)
{
if (firstLine.LastIndexOf(Language.END_DMA_1) != -1 ||
firstLine.LastIndexOf(Language.END_DMA_2) != -1 ||
firstLine.LastIndexOf(Language.END_DMA_3) != -1)
break;
sw.WriteLine(Util.clear(firstLine, false));
}
observer.log(Language.DMA_LABEL+Language.LOG_SAVE_FILE +
"\"" + dmaFileName+"\"");
sw.Close();
}
174
Setup Sperimentale
Il metodo mostrato genera, all’interno della directory di lavoro, una o
più subdirectory, ognuna delle quali è identificata da un numero progressivo.
Se ad esempio viene eseguita una programmazione su 3 aree di memoria, si
avrà il risultato di 3 differenti operazioni di DMA, e verranno pertanto create
3 subdirectory (rispettivamente th 1, th 2 e th 3). Successivamente, questo
metodo inizializza una nuova variabile di tipo StreamWriter per la scrittura
dei dati all’interno di un file di testo creato all’interno delle subdirectory
appena create. In tale file vengono copiate tutte le righe del datalog finché
non viene identificata, attraverso la presenza di un opportuno identificatore,
la fine del DMA. Si noti che, prima di ogni scrittura nel file, il contenuto
di ogni riga viene processato dal metodo clear(), il quale, come si vedrà in
seguito, elimina le informazioni superflue.
Viene dunque mostrato il metodo saveMap().
private void saveMap(string firstLine)
{
int nSubMap = 0;
reset = 0;
while ((firstLine = sourceFile.ReadLine()) != null)
{
if (firstLine.LastIndexOf(Language.END_MAP_1) != -1 ||
firstLine.LastIndexOf(Language.END_MAP_2) != -1)
break;
if (firstLine.LastIndexOf(Language.START_SUBMAP_1) != -1)
{
nSubMap++;
saveSubMap(nSubMap);
}
if (firstLine.LastIndexOf(Language.START_SUBMAP_RESET_1)
!= -1)
{
nSubMap++;
saveSubMapReset(nSubMap);
}
}
if(reset==1)
mapreset = true;
}
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 175
Il metodo saveMap() si occupa, scorrendo il datalog riga per riga, di
cercare l’identificatore dell’inizio di una sottomappa. Le mappe contenenti il
numero di impulsi applicati alle celle di memoria sono in fatti suddivise in
8 sezioni, tante quante le linee di ingresso/uscita del dispositivo (in Fig. A.7
è mostrato un dettaglio di una sottomappa relativa all’I/O 0). Viene quindi
richiamato il metodo saveSubMap() (il cui funzionamento è simile a quello
del metodo saveDMA()), che si occupa di scrivere su file i dati utili presenti
nella sottomappa.
private void saveSubMap(int nSubMap)
{
string line;
StreamWriter sw = null;
string dir = observer.path + Language.DIR_MENU27 + nMenu27
+ Language.DIR_DISTRIBUTION + nMAP + Language.DIR_MAP;
observer.di = new DirectoryInfo(dir);
observer.di.Create();
string subMapFileName = "\\";
if (nMAP > 10)
subMapFileName += Language.MAP_FILE_NAME + "_IO_" +
(nSubMap - 1) + Language.FILE_EXTENSION;
else
subMapFileName += Language.MAP_FILE_NAME + "_IO_" +
"0" + (nSubMap - 1) + Language.FILE_EXTENSION;
try
{
sw = new StreamWriter(dir+subMapFileName);
}
catch (IOException ex) { }
while ((line = sourceFile.ReadLine()) != null)
{
if (line.LastIndexOf(Language.END_SUBMAP_1) != -1)
break;
sw.WriteLine(Util.clear(line,true));
}
sw.Close();
observer.log(Language.SUBMAP_LABEL+Language.LOG_SAVE_FILE +
"\"" + subMapFileName+"\"");
176
Setup Sperimentale
}
All’interno del DatalogReader è contenuta un’ulteriore classe, chiamata
Util, in cui sono contenuti metodi di supporto che vengono richiamati dalle
altre classi.
public static Boolean isMenu3(String aLine)
{
if (aLine.ToLower().LastIndexOf(Language.START_MENU3_1) !=
-1 &&
aLine.ToLower().LastIndexOf(Language.START_MENU3_2) != -1)
{
return true;
}
return false;
}
public static Boolean isMenu13(String aLine)
{
if (aLine.ToLower().LastIndexOf(Language.START_MENU13_1) !=
-1 &&
aLine.ToLower().LastIndexOf(Language.START_MENU13_2) != -1)
{
return true;
}
return false;
}
public static Boolean isMenu25(String aLine)
{
if (aLine.ToLower().LastIndexOf(Language.START_MENU25_1) !=
-1 &&
aLine.ToLower().LastIndexOf(Language.START_MENU25_2) != -1)
{
return true;
}
return false;
}
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 177
public static Boolean isMenu27(String aLine)
{
if (aLine.ToLower().LastIndexOf(Language.START_MENU27_1) !=
-1 &&
aLine.ToLower().LastIndexOf(Language.START_MENU27_2) != -1)
{
return true;
}
return false;
}
public static Boolean isCurva(String aLine)
{
if (aLine.LastIndexOf(Language.START_CURVA) != -1)
{
return true;
}
return false;
}
public static Boolean isDMA(String aLine)
{
if (aLine.LastIndexOf(Language.START_DMA) != -1)
{
return true;
}
return false;
}
public static Boolean isMap(String aLine)
{
if (aLine.LastIndexOf(Language.START_MAP_1) != -1 ||
aLine.LastIndexOf(Language.START_MAP_2) != -1)
{
return true;
}
178
Setup Sperimentale
return false;
}
I primi quattro metodi della classe Util (isMenu3(), isMenu13(),
isMenu25() e isMenu27()) svolgono la funzione di individuare, all’interno del
datalog, l’inizio di una delle quattro routine di test che si vogliono ricercare.
I restanti metodi permettono di individuare, all’interno delle varie routine di
test, l’inizio dell’uscita relativo a una curva di programmazione, a un DMA,
o a una mappa contenente il numero di impulsi di programmazione applicati
alle celle.
Il metodo clear(), a cui si è accennato in precedenza, consente di eliminare
da una riga del datalog le informazioni superflue.
public static string clear(string line, Boolean isAMap)
{
int index = line.IndexOf(Language.TRASH_STR);
if (isAMap)
{
line = line.Remove(0, 5);
if (index != -1)
line = line.Replace(Language.TRASH_STR, ";");
}
else
{
if (index != -1)
line = line.Replace(Language.TRASH_STR, "");
}
string newLine = "";
for (int i = 0; i < line.Length; i++)
{
if (char.IsDigit(line, i))
{
newLine += line[i];
}
else if (line[i] == ’.’)
{
newLine += line[i];
}
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 179
else if (char.IsWhiteSpace(line, i))
{
if (!isAMap)
newLine += line[i];
}
else if (line[i] == ’-’ || line[i] == ’+’)
{
if (isAMap && line[i] == ’-’)
{
newLine += line[i];
}
else if (line[i] == ’+’)
{
newLine += ’e’;
}
else if (char.IsDigit(line[i + 1]) &&
char.IsDigit(line[i - 1]) && line[i] == ’-’)
{
newLine += ’e’;
newLine += line[i];
}
else if (char.IsDigit(line[i + 1]) &&
!char.IsDigit(line[i - 1]) && line[i] == ’-’)
{
newLine += line[i];
}
}
else if (isAMap)
{
if (line[i] == ’;’)
newLine += line[i];
}
}
return newLine;
}
La prima parte del codice mostrato permette di rimuovere dal datalog
la stringa S1H1., che il software del QT200 inserisce per identificare l’inizio
180
Setup Sperimentale
Figura A.8: Esempio di uscita di un’operazione di DMA “ripulito” dal
DatalogReader.
di una nuova riga. La parte restante di codice, invece, contiene un ciclo for,
all’interno del quale vengono scanditi uno per uno tutti i caratteri della riga
di datalog esaminata. Il carattere esaminato viene lasciato inalterato nel caso
si tratti di un numero, uno spazio, oppure un punto. Prima dei caratteri +
e - viene inserito il carattere e, per indicare i numeri espressi in notazione
esponenziale: il QT200, infatti, indica ad esempio 10−3 semplicemente con
-03, che i programmi di calcolo utilizzati per l’analisi dei dati interpretano
come il numero negativo −3.
Nelle Figg. A.8 e A.9 sono riportate a titolo di esempio le versioni
“ripulite” dei brani di datalog mostrate rispettivamente nelle Figg. A.3 e A.7.
Come si può notare, i file di testo generati dal DatalogReader contengono
soltanto numeri, e possono essere facilmente caricati da software come Matlab
o Excel per effettuare elaborazioni successive.
Nel DatalogReader è inoltre presente un’ulteriore classe, chiamata
language. Questa classe non contiene alcun metodo, bensı̀ una lista di
dichiarazioni di variabili di tipo string. Esso è in sostanza un elenco di
parole chiave, di identificatori presenti all’interno del datalog per segnalare
ad esempio l’inizio o la fine di una routine di test. All’interno dei metodi
A.1 Caratterizzazione dei dispositivi ZZA0-BJT e ZZA0-MOS 181
Figura A.9: Esempio di mappa contenente il numero di impulsi di
programmazione applicati “ripulita” dal DatalogReader.
sopra descritti, invece dellla stringa da ricercare, viene riportato il nome
della variabile corrispondente presente nella classe language. Ciò permette
innanzitutto di scrivere un codice più leggibile, e di aggiornare il software
in maniera rapida. Se chi sviluppa il software per il QT200, ad esempio,
decidesse di cambiare un identificatore, sarà sufficiente aggiornare la variabile
corrispondente all’interno della classe language, senza andare a cercare
l’identificatore in questione nelle altre classi del DatalogReader.
public static string FILE_EXTENSION = ".txt";
public static string TRASH_STR = "S1H1.";
//LOG label definition
public static string LOG_SEPARATOR =
"-------------------------------------------";
public static string LOG_PROGRAM_LOADED_LABEL =
"Program loaded.";
public static string LOG_LOAD_FILE_LABEL =
"successfully loaded.";
public static string LOG_SEARCHING_LABEL = "Searching for: ";
public static string LOG_FOUND_LABEL = " found.";
public static string LOG_NOT_FOUND_LABEL = " not found.";
public static string LOG_MAP_DMA = "DMA and Maps";
public static string LOG_SAVE_FILE = " saved in the file: ";
Setup Sperimentale
182
//Directories
public static
public static
public static
public static
public static
public static
public static
public static
public static
public static
names
string
string
string
string
string
string
string
string
string
string
DIR_MENU3 = "\\menu_3";
DIR_MENU13 = "\\menu_13";
DIR_MENU25 = "\\menu_25";
DIR_MENU27 = "\\menu_27_";
DIR_DISTRIBUTION = "\\th_";
DIR_CURVE = "\\curve";
DIR_DISTRIBUTION25 = "\\distr";
DIR_DMA = "\\DMA";
DIR_MAP = "\\maps";
N_th = "\\n_th.txt";
//MENU
public
public
public
public
static
static
static
static
string
string
string
string
MENU3_LABEL = "MENU3";
MENU13_LABEL = "MENU13";
MENU25_LABEL = "MENU25";
MENU27_LABEL = "MENU27";
//MAP DMA
public static
public static
public static
public static
public static
public static
public static
public static
public static
public static
string
string
string
string
string
string
string
string
string
string
CURVA_LABEL = "Curva";
DISTR_LABEL = "Distribution";
MAP_LABEL = "MAP";
DMA_LABEL = "DMA";
SUBMAP_LABEL = "SubMap";
MAP_FILE_NAME = "map";
DMA_FILE_NAME = "DMA";
DIS_FILE_NAME = "DISTRIBUTION";
CURVE_FILE_NAME = "CURVA";
SUBMAP_FILE_SUFFIX = "_n";
//Start end identifiers
public static string START_MENU27_1 = "menu";
public static string START_MENU27_2 = "27.1";
public static string START_MENU3_1 = "menu";
public static string START_MENU3_2 = " 3 ";
public static string START_MENU25_1 = " menu";
A.2 Caratterizzazione del Dispositivo in Tecnologia a 90 nm
183
public static string START_MENU25_2 = " 25";
public static string START_MENU13_1 = "menu";
public static string START_MENU13_2 = "13";
public static string START_MAP_1 = "VSET MAP";
public static string START_MAP_2 = "VRESET MAP";
public static string START_SUBMAP_1 = "vset_map_begin";
public static string START_SUBMAP_RESET_1 =
"vreset_map_begin";
public static string START_DMA = "RIGA";
public static string START_CURVA = "V_APPLICATA";
public static string START_DISTR = "distr_begin";
public static string END_DMA_1 =
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&";
public static string END_DMA_2 = "end";
public static string END_DMA_3 = "++++++++++++++++++++++";
public static string END_MAP_1 =
"++++++++++++++++++++++++++++++";
public static string END_MAP_2 = "V_FIN";
public static string END_SUBMAP_1 = "vset_map_end";
public static string END_SUBMAP_RESET_1 = "vreset_map_end";
public static string END_CURVA_1 = "RIGA";
public static string END_CURVA_2 = "Class";
public static string END_DISTR = "distr_end";
A.2
Caratterizzazione del
Tecnologia a 90 nm
Dispositivo
in
La macchina di test utilizzata per eseguire la caratterizzazione
sperimentale sul dispositivo in tecnologia a 90 nm è il Kalos 2, sviluppato da
Credence.
Il Kalos 2, il cui schema a blocchi è mostrato in Fig. A.10, è un sistema
di test general purpose, con caratteristiche addizionali per ottimizzare il
collaudo di memorie non volatili e circuiti logici ad elevata densità di
integrazione. Le sue dimensioni ridotte e il suo design altamente integrato
minimizzano lo spazio occupato dalla macchina e i costi necessari alle
operazioni di testing.
Setup Sperimentale
184
Testa di Collaudo
Figura A.10: Schema a blocchi del Kalos 2.
In particolare, le sue caratteristiche lo rendono adatto al testing di matrici
di memoria di dimensioni del Tb, ed è dotato di 768 pin di I/O, suddivisi
in gruppi di 96. La testa di collaudo, dotata di quattro moduli, fornisce 36
sistemi di test indipendenti, ognuno con 96 pin di I/O, per un totale di
3456 piedini. Ognuno dei 36 sistemi di test è dotato di due CPU dedicate,
il che rende cosı̀ il Kalos 2 superiore ai sistemi la cui architettura prevede la
presenza di risorse condivise, in cui tutti i dispositivi devono aspettare il più
lento, o eseguire le varie operazioni in maniera seriale. Con 36 × 96 (oppure
72 × 48) pin, i DUT vengono collaudati in parallelo in maniera asincrona, il
che significa che ogni DUT è collaudato con il massimo throughput possibile.
Ogni modulo della testa di collaudo contiene 9 schede dotate di 96 pin,
ognuna delle quali contiene un oscillatore a cristallo, la cui frequenza di
oscillazione è 400 MHz, che costituisce il clock principale. Ogni scheda può
essere inoltre suddivisa in due sezioni di 48 pin, dette slice. Ogni slice è
una scheda di test caratterizzata da una velocità di test di 100 MHz e
48 pin di ingresso/uscita, ed è in grado di collaudare fino a 8 dispositivi
simultaneamente.
Analogamente a quanto visto per il QT200, il Kalos 2 è pilotato da
un PC, attraverso il quale l’utilizzatore interagisce con la macchina. Le
routine di test sono sviluppate in un apposito linguaggio di programmazione
A.2 Caratterizzazione del Dispositivo in Tecnologia a 90 nm
185
fornito dalla stessa Credence. L’interfaccia utente è di tipo testuale, ed è del
tutto analoga a quella del QT200. Assieme ai risultati delle caratterizzazioni
sperimentali, le operazioni di testing eseguite vengono anche in questo
caso salvate su un file datalog. È stato dunque necessario realizzare
un software per l’estrazione dal datalog delle informazioni necessarie
all’interpretazione dei dati sperimentali, analogamente a quanto è stato visto
nel paragrafo A.1.3 per il caso dell’utilizzo del QT200. Il software da me
sviluppato, chiamato 90nmPostProcessing, è stato realizzato in linguaggio
C# utilizzando l’ambiente di sviluppo Visual Studio, al fine di garantirne
la compatibilità con tutti i moderni PC equipaggiati di sistema operativo
Windows. L’interfaccia utente di tale software è mostrata in Fig. A.11. Come
si può notare, esso è molto simile a quella del DatalogReader. La selezione
delle routine da ricercare all’interno del datalog è operata tramite radiobutton
invece che attraverso checkbox. Tali radiobutton, presenti nella parte superiore
sinistra della finestra, permettono di selezionare in modo esclusivo una
sola delle routine di test disponibili. Le routine di test che implicano la
scrittura di risultati sperimentali sul datalog da parte del Kalos 2 finora
sviluppate sono soltanto due. La prima, detta DMAC (DMA “cascodato”),
si occupa di effettuare l’operazione di DMA sulle celle di memoria indirizzate,
e fornisce come risultato la corrente letta di ciascuna cella (Fig. A.12).
Anche in questo caso, oltre ai valori delle correnti lette sul datalog sono
presenti ulteriori informazioni che devono essere eliminate per far sı̀ che i
dati sperimentali possano essere caricati correttamente dagli strumenti di
analisi sviluppati in Matlab. La seconda, invece, chiamata Fast PMU DMAC,
esegue un’operazione di DMA sulle celle indirizzate in maniera più veloce, e
come risultato fornisce direttamente la distribuzione delle correnti lette (in
particolare, vengono forniti gli intervalli di corrente di lettura e il numero
di celle la cui corrente letta di trova in ogni intervallo, si veda Fig. A.13).
Gli altri elementi presenti sull’interfaccia utente mostrata in Fig. A.11 sono
identici a quelli presenti su quella del DatalogReader, e svolgono le medesime
funzioni. L’unica differenza consiste nella presenza di un pulsante aggiuntivo,
“Post-Processing”, che richiama una finestra da cui è possibile lanciare i
programmi per l’elaborazione dei risultati sperimentali, programmi che sono
stati sviluppati in Matlab.
Il programma 90nmPostProcessing ha una struttura simile al
DatalogReader. Le operazioni di archiviazione dei datalog e la gestione
dei registri corrispondenti (il registro generale e i registri associati ai
186
Setup Sperimentale
Figura A.11: Interfaccia utente del software per l’estrazione dei dati sperimentali
del dispositivo a 90 nm.
vari DUT) sono state implementate in maniera identica rispetto al caso
del DatalogReader. Al fine di non presentare inutili ripetizioni, verranno
illustrate solamente le caratteristiche più importanti, e verranno sottolineate
le differenze rispetto al DatalogReader. Per maggiore semplicità, i metodi
sviluppati per l’individuazione delle routine di test e dei dati sperimentali
all’interno del datalog sono state raccolte all’interno di un’unica classe,
chiamata Utils. Tale classe contiene i metodi che riconoscono l’inizio e la
fine delle routine DMAC e Fast PMU DMAC (rispettivamente isDMAC(),
isend DMAC(), isFPMU DMAC() e isend FPMU DMAC()), che vengono
richiamate in base allo stato dei radiobutton corrispondenti sopra descritti.
Oltre a questi metodi, ne sono stati realizzati altri (isrow ini(), iscol ini() e
isn buffer()) che permettono di individuare le informazioni relative all’area di
memoria caratterizzata (riga iniziale, riga finale e dimensioni della porzione
di matrice interessata dalle operazioni di DMA), che saranno successivamente
salvate su file.
public static Boolean isDMAC(string str, int n, int flag,
int OK)
{
if (str.Contains(Language.start_DMAC_1) ||
A.2 Caratterizzazione del Dispositivo in Tecnologia a 90 nm
str.Contains(Language.start_DMAC_2) ||
(str.Contains(Language.start_DMAC_3) &&
(n > 0) && (flag == 0) && OK == 1))
return true;
else
return false;
}
public static Boolean isend_DMAC(string str, int n)
{
if (str.Contains(Language.end_DMAC_1) ||
str.Contains(Language.end_DMAC_2) ||
(str.Contains(Language.end_DMAC_3) && n > 0) ||
(str.Contains(Language.end_DMAC_4) && n > 0))
return true;
else
return false;
}
public static Boolean isrow_ini(string str)
{
if (str.Contains(Language.row_in))
return true;
else
return false;
}
public static Boolean iscol_ini(string str)
{
if (str.Contains(Language.col_in))
return true;
else
return false;
}
public static Boolean isn_buffer(string str)
{
187
188
Setup Sperimentale
if (str.Contains(Language.n_buff))
return true;
else
return false;
}
public static Boolean isFPMU_DMAC(string str)
{
if (str.Contains(Language.start_FPMU_DMAC_1) ||
str.Contains(Language.start_FPMU_DMAC_2))
return true;
else
return false;
}
public static Boolean isend_FPMU_DMAC(string str)
{
if (str.Contains(Language.end_FPMU_DMAC))
return true;
else
return false;
}
}
I metodi saveDMA() e saveFPMU DMA() si occupano del salvataggio
su file dell’output delle operazioni di DMA descritte in precedenza. Il
primo, in particolare, genera un file di testo che contiene solamente i valori
numerici delle correnti di lettura. È bene notare che, poiché nel datalog
viene utilizzata la notazione ingegneristica per la rappresentazione dei valori
numerici (si veda la Fig. A.12), è necessario effettuare una conversione in
notazione scientifica, affinché i dati possano essere correttamente caricati
dagli strumenti di elaborazione sviluppati in Matlab o Excel. Le stringhe nA
e uA vengono pertanto sostituite rispettivamente da e-9 e e-6. Il metodo
saveFPMU DMA(), invece, genera un file di testo costituito da due colonne:
nella prima vengono riportati gli estremi degli intervalli di corrente letta
considerati, mentre nella seconda viene riportato il numero di celle la cui
corrente di lettura è compresa in ognuno dei suddetti intervalli.
A.2 Caratterizzazione del Dispositivo in Tecnologia a 90 nm
189
Figura A.12: Frammento di datalog in cui vengono riportati i risultati
sperimentali di un’operazione di DMAC.
public static void saveDMA(string str, StreamWriter sw)
{
if (str.Contains(Language.Force_Range))
{
int lunghezza;
int i = 1;
str = str.Remove(1, 62);
lunghezza = str.Length;
str = str.Remove(lunghezza - 33, 33);
while (i < str.Length)
{
if (char.IsDigit(str, i) || str[i] == ’.’ ||
char.IsWhiteSpace(str, i))
sw.Write(str[i]);
i++;
Setup Sperimentale
190
Figura A.13: Frammento di datalog in cui vengono riportati i risultati
sperimentali di un’operazione di Fast PMU DMAC.
}
if (str.Contains("nA"))
{
sw.Write("e-9");
}
else if (str.Contains("uA"))
{
sw.Write("e-6");
}
sw.Write(’\n’);
}
}
public static int saveFPMU_DMA(string str, StreamWriter sw,
int flag)
{
if (str.Contains(Language.FPMU_DMA_id))
{
A.2 Caratterizzazione del Dispositivo in Tecnologia a 90 nm
191
int lunghezza;
int i = 40;
lunghezza = str.Length;
while (i < lunghezza)
{
if (char.IsDigit(str, i) || str[i] == ’.’ ||
char.IsWhiteSpace(str, i))
sw.Write(str[i]);
i++;
}
sw.Write(’\n’);
}
else if (flag == 1 && Utils.isend_FPMU_DMAC(str))
{
flag = 0;
sw.Close();
}
if (flag == 0)
{
return 0;
}
else
{
return 1;
}
}
Analogamente a quanto visto per il DatalogReader, la lista delle parole
chiave è contenuta in una classe a se stante, chiamata Language.
La struttura di 90nmPostProcessing fa sı̀ che tale software possa anch’esso
essere agevolmente modificato. Qualora venissero aggiunte ulteriori routine di
test, è sufficiente integrare nella classe Utils i metodi necessari a individuarla
all’interno del datalog e a salvare su file i dati sperimentali corrispondenti,
oltre a inserire all’interno della classe principale e sull’interfaccia utente i
richiami alle classi corrispondenti.
192
Setup Sperimentale
Bibliografia
[1] S. C. of the IEEE Electron Devices Society, “IEEE standard definitions
and characterization of floating gate semiconductor arrays,” IEEE Std
1005-1998, 25 Jun 1998.
[2] K. Kahng and S. Sze, “A floating gate and its application to memory
devices,” IEEE Transactions on Electron Devices, vol. 14, no. 9, pp.
629–629, Sept. 1967.
[3] D.
Frohman-Bentchkowsky,
“A
fully-decoded
2048-bit
electrically-programmable MOS ROM,” IEEE International Solid-State
Circuits Conference. Digest of Technical Papers., vol. XIV, pp. 80–81,
Feb 1971.
[4] P. Salsbury, W. Morgan, G. Perlegos, and R. Simko, “High performance,
MOS EPROMs using a stacked-gate cell,” IEEE International
Solid-State Circuits Conference. Digest of Technical Papers., vol. XX,
pp. 186–187, Feb. 1977.
[5] W. Johnson, G. Perlegos, A. Renninger, G. Kuhn, and T. Ranganath,
“A 16Kb electrically erasable nonvolatile memory,” IEEE International
Solid-State Circuits Conference. Digest of Technical Papers., vol. XXIII,
pp. 152–153, Feb. 1980.
[6] E. Prinz, “The zen of nonvolatile memories,” 43rd ACM/IEEE Design
Automation Conference, pp. 815–820, July 2006.
[7] R. Bez and A. Pirovano, “Non-volatile memory technologies: emerging
concepts and new materials,” Materials Science in Semiconductor
Processing, vol. 7, pp. 349–355, 2004.
194
BIBLIOGRAFIA
[8] R. Muralidhar, R. Steimle, M. Sadd, R. Rao, C. Swift, E. Prinz,
J. Yater, L. Grieve, K. Harber, B. Hradsky, S. Straub, B. Acred,
W. Paulson, W. Chen, L. Parker, S. Anderson, M. Rossow, T. Merchant,
M. Paransky, T. Huynh, D. Hadad, K.-M. Chang, and J. White, B.E.,
“A 6 V embedded 90 nm silicon nanocrystal nonvolatile memory,”
Technical Digest of IEEE International Electron Devices Meeting., pp.
26.2.1–26.2.4, Dec. 2003.
[9] B. De Salvo, C. Gerardi, S. Lombardo, T. Baron, L. Perniola,
D. Mariolle, P. Mur, A. Toffoli, M. Gely, M. Semeria, S. Deleonibus,
G. Ammendola, V. Ancarani, M. Melanotte, R. Bez, L. Baldi, D. Corso,
I. Crupi, R. Puglisi, G. Nicotra, E. Rimini, F. Mazen, G. Ghibaudo,
G. Pananakakis, C. Compagnoni, D. Ielmini, A. L. Lacaita, A. Spinelli,
Y. Wan, and K. van der Jeugd, “How far will silicon nanocrystals push
the scaling limits of NVMs technologies?” Technical Digest of IEEE
International Electron Devices Meeting., pp. 26.1.1–26.1.4, Dec. 2003.
[10] S. R. Ovshinsky, “Reversible Electrical Switching Phenomena in
Disordered Structures,” Phys. Rev. Lett., vol. 21, no. 20, pp. 1450–1453,
Nov 1968.
[11] N. Yamada, E. Ohno, K. Nishiuchi, N. Akahira, and M. Takao,
“Rapid-phase transitions of GeTe-Sb2 Te3 pseudobinary amorphous thin
films for an optical disk memory,” Journal of Applied Physics, vol. 69,
pp. 2849–2856, Mar. 1991.
[12] A. V. Kolobov, P. Fons, A. I. Frenkel, A. L. Ankudinov, J. Tominaga, and
T. Uruga, “Understanding the phase-change mechanism of rewritable
optical media,” Nature Materials, vol. 3, pp. 703–708, Oct. 2004.
[13] R. Neale and J. Aseltine, “The application of amorphous materials to
computer memories,” IEEE Transactions on Electron Devices, vol. 20,
no. 2, pp. 195–205, Feb 1973.
[14] S. Lai and T. Lowrey, “OUM - A 180 nm nonvolatile memory cell element
technology for stand alone and embedded applications,” Technical Digest
of IEEE International Electron Devices Meeting., pp. 36.5.1–36.5.4,
2001.
BIBLIOGRAFIA
195
[15] M. Gill, T. Lowrey, and J. Park, “Ovonic unified memory a high-performance nonvolatile memory technology for stand-alone
memory and embedded applications,” IEEE International Solid-State
Circuits Conference, 2002. Digest of Technical Papers., vol. 1, pp.
202–459 vol.1, 2002.
[16] Y. Hwang, J. Hong, S. Lee, S. Ahn, G. Jeong, G. Koh, J. Oh, H. Kim,
W. Jeong, S. Lee, J. Park, K. Ryoo, H. Horii, Y. Ha, J. Yi, W. Cho,
Y. Kim, K. Lee, S. Joo, S. Park, U. Chung, H. Jeong, and K. Kim, “Full
integration and reliability evaluation of phase-change RAM based on
0.24 /spl mu/m-CMOS technologies,” Symposium on VLSI Technology,
2003. Digest of Technical Papers., pp. 173–174, June 2003.
[17] S. Ahn, Y. Song, C. Jeong, J. Shin, Y. Fai, Y. Hwang, S. Lee,
K. Ryoo, S. Lee, J. Park, H. Horii, Y. Ha, J. Yi, B. Kuh, G. Koh,
G. Jeong, H. Jeong, K. Kim, and B. Ryu, “Highly manufacturable high
density phase change memory of 64Mb and beyond,” IEEE International
Electron Devices Meeting, 2004., pp. 907–910, Dec. 2004.
[18] F. Pellizzer, A. Pirovano, F. Ottogalli, M. Magistretti, M. Scaravaggi,
P. Zuliani, M. Tosi, A. Benvenuti, P. Besana, S. Cadeo, T. Marangon,
R. Morandi, R. Piva, A. Spandre, R. Zonca, A. Modelli, E. Varesi,
T. Lowrey, A. L. Lacaita, G. Casagrande, P. Cappelletti, and R. Bez,
“Novel μtrench phase-change memory cell for embedded and stand-alone
non-volatile memory applications,” Symposium on VLSI Technology.
Digest of Technical Papers., pp. 18–19, June 2004.
[19] A. Pirovano, A. Redaelli, F. Pellizzer, F. Ottogalli, M. Tosi, D. Ielmini,
A. L. Lacaita, and R. Bez, “Reliability study of phase-change nonvolatile
memories,” IEEE Transactions on Device and Materials Reliability.,
vol. 4, no. 3, pp. 422–427, Sept. 2004.
[20] A. L. Lacaita, “Phase change memories: State-of-the-art, challenges and
perspectives,” Solid-State Electronics, vol. 50, no. 1, pp. 24–31, 2005.
[21] G. Atwood and R. Bez, “Current status of chalcogenide phase change
memory,” Device Research Conference Digest, 2005. DRC ’05. 63rd,
vol. 1, pp. 29–33, 2005.
196
BIBLIOGRAFIA
[22] A. Pirovano, A. Lacaita, A. Benvenuti, F. Pellizzer, S. Hudgens,
and R. Bez, “Scaling analysis of phase-change memory technology,”
Technical Digest of IEEE International Electron Devices Meeting, pp.
29.6.1–29.6.4, Dec. 2003.
[23] Y. Shin, “Non-volatile memory technologies for beyond 2010,”
Symposium on VLSI Circuits. Digest of Technical Papers., pp. 156–159,
June 2005.
[24] A. Pirovano, A. Lacaita, D. Merlani, A. Benvenuti, F. Pellizzer, and
R. Bez, “Electronic switching effect in phase-change memory cells,”
International Electron Devices Meeting, 2002., pp. 923–926, 2002.
[25] A. Pirovano, A. L. Lacaita, A. Benvenuti, F. Pellizzer, and R. Bez,
“Electronic switching in phase-change memories,” IEEE Transactions
on Electron Devices., vol. 51, no. 3, pp. 452–459, March 2004.
[26] I. Friedrich and V. Weidenhof and W. Njoroge and P. Franz and
M. Wuttig, “Structural transformations of ge[sub 2]sb[sub 2]te[sub 5]
films studied by electrical resistance measurements,” Journal of Applied
Physics, vol. 87, no. 9, pp. 4130–4134, 2000.
[27] Bong-Sub Lee and John R. Abelson and Stephen G. Bishop and
Dae-Hwan Kang and Byung-ki Cheong and Ki-Bum Kim, “Investigation
of the optical and electronic properties of ge[sub 2]sb[sub 2]te[sub 5]
phase change material in its amorphous, cubic, and hexagonal phases,”
Journal of Applied Physics, vol. 97, no. 9, p. 093509, 2005.
[28] Ho-Ki Lyeo and David G. Cahill and Bong-Sub Lee and John R.
Abelson and Min-Ho Kwon and Ki-Bum Kim and Stephen G. Bishop
and Byung-ki Cheong, “Thermal conductivity of phase-change material
ge[sub 2]sb[sub 2]te[sub 5],” Applied Physics Letters, vol. 89, no. 15, p.
151904, 2006.
[29] M. Kastner, D. Adler, and H. Fritzsche, “Valence-Alternation Model for
Localized Gap States in Lone-Pair Semiconductors,” Physical Review
Letters, vol. 37, no. 22, pp. 1504–1507, Nov 1976.
[30] C. Popescu, “The effect of local non-uniformities on thermal switching
and high field behaviour of structures with chalcogenide glasses,” Solid
State Electronics, vol. 18, pp. 671–681, Aug. 1975.
BIBLIOGRAFIA
197
[31] A. E. Owen, J. M. Robertson, and C. Main, “The threshold
characteristics of chalcogenide-glass memory switches,” Journal of
Non-Crystalline Solids, vol. 32, pp. 29–52, Mar. 1979.
[32] D. Adler, H. K. Henisch, and S. N. Mott, “The mechanism of threshold
switching in amorphous alloys,” Review of Modern Physics, vol. 50, no. 2,
pp. 209–220, Apr. 1978.
[33] D. Adler, M. S. Shur, M. Silver, and S. R. Ovshinsky, “Threshold
switching in chalcogenide-glass thin films,” Journal of Applied Physics,
vol. 51, pp. 3289–3309, Jun. 1980.
[34] M. Avrami, “Kinetics of Phase Change. I General Theory,” The Journal
of Chemical Physics, vol. 7, no. 12, pp. 1103–1112, 1939.
[35] ——, “Kinetics of Phase Change. II Transformation-Time Relations
for Random Distribution of Nuclei,” The Journal of Chemical Physics,
vol. 8, no. 2, pp. 212–224, 1940.
[36] ——, “Granulation, Phase Change, and Microstructure Kinetics of
Phase Change. III,” The Journal of Chemical Physics, vol. 9, no. 2,
pp. 177–184, 1941.
[37] F. Ottogalli, A. Pirovano, F. Pellizzer, M. Tosi, P. Zuliani, P. Bonetalli,
and R. Bez, “Phase-change memory technology for embedded
applications,” Proceeding of the 34th European Solid-State Device
Research conference, 2004. ESSDERC 2004., pp. 293–296, Sept. 2004.
[38] F. Bedeschi, R. Bez, C. Boffino, E. Bonizzoni, E. Buda, G. Casagrande,
L. Costa, M. Ferraro, R. Gastaldi, O. Khouri, F. Ottogalli, F. Pellizzer,
A. Pirovano, C. Resta, G. Torelli, and M. Tosi, “4-Mb MOSFET-selected
phase-change memory experimental chip,” Proceeding of the 30th
European Solid-State Circuits Conference, 2004. ESSCIRC 2004., pp.
207–210, Sept. 2004.
[39] ——, “4-Mb MOSFET-selected μtrench phase-change memory
experimental chip,” IEEE Journal of Solid-State Circuits., vol. 40,
no. 7, pp. 1557–1565, July 2005.
[40] F. Bedeschi, C. Resta, O. Khouri, E. Buda, L. Costa, M. Ferraro,
F. Pellizzer, F. Ottogalli, A. Pirovano, M. Tosi, R. Bez, R. Gastaldi,
198
BIBLIOGRAFIA
and G. Casagrande, “An 8Mb demonstrator for high-density 1.8V
Phase-Change Memories,” Symposium on VLSI Circuits. Digest of
Technical Papers., pp. 442–445, June 2004.
[41] F. Bedeschi, C. Boffino, E. Bonizzoni, O. Khouri, C. Resta, and
G. Torelli, “Bit-line biasing technique for phase-change memories,”
Proceedings of International conference on signals and electronic
systems., pp. 229–232, Sept. 2004.
[42] F. Bedeschi, E. Bonizzoni, O. Khouri, C. Resta, and G. Torelli, “A fully
symmetrical sense amplifier for non-volatile memories,” Proceedings of
the 2004 International Symposium on Circuits and Systems., vol. 2, pp.
625–628, May 2004.
[43] F. Bedeschi, E. Bonizzoni, G. Casagrande, R. Gastaldi, C. Resta,
G. Torelli, and D. ZelLa, “SET and RESET pulse characterization in
BJT-selected phase-change memories,” IEEE International Symposium
on Circuits and Systems., vol. 2, pp. 1270–1273, May 2005.
[44] F. Bedeschi, C. Boffino, E. Bonizzoni, C. Resta, G. Torelli, and
D. Zella, “Set-sweep programming pulse for phase-change memories,”
IEEE International Symposium on Circuits and Systems., pp. 967–970,
May 2006.
[45] A. Itri, D. Ielmini, A. Lacaita, A. Pirovano, F. Pellizzer, and
R. Bez, “Analysis of phase-transformation dynamics and estimation
of amorphous-chalcogenide fraction in phase-change memories,” IEEE
International Reliability Physics Symposium, no. 42, pp. 209–215, Apr.
2004.
[46] D. Ielmini, A. Lacaita, A. Pirovano, F. Pellizzer, and R. Bez, “Analysis
of Phase Distribution in Phase-Change Nonvolatile Memories,” IEEE
Electron Device Letters, vol. 25, no. 7, pp. 507–509, July 2004.
[47] G. Torelli and P. Lupi, “An improved method for programming a
worderasable EEPROM,” Alta Frequenza, vol. LII, no. 6, p. 487–494,
Nov./Dec. 1983.
[48] V. Niles Kynett, M. Fandrich, J. Anderson, P. Dix, O. Jungroth,
J. Kreifels, R. Lodenquai, B. Vajdic, S. Wells, M. Winston, and L. Yang,
BIBLIOGRAFIA
199
“A 90-ns one-million erase/program cycle 1-Mbit flash memory,” IEEE
Journal of Solid-State Circuits., vol. 24, no. 5, pp. 1259–1264, Oct. 1989.
[49] P. Fantini, A. Pirovano, D. Ventrice, and A. Redaelli, “Experimental
investigation of transport properties in chalcogenide materials through
1/f noise measurements,” Applied Physics Letters, vol. 88, no. 26, p.
263506, 2006.
[50] D. Ielmini and Y. Zhang, “Physics-based analytical model of
chalcogenide-based memories for array simulation,” International
Electron Devices Meeting., pp. 1–4, Dec. 2006.
[51] ——, “Evidence for trap-limited transport in the subthreshold
conduction regime of chalcogenide glasses,” Applied Physics Letters,
vol. 90, no. 19, p. 192102, 2007.
[52] A. Lacaita, “Physics and performance of phase change memories,”
Proceedings of International Conference on Simulation of Semiconductor
Processes and Devices (SISPAD 2005), pp. 267–270, Sept. 2005.
[53] W. D. Buckley and S. H. Holmberg, “Evidence for Critical-Field
Switching in Amorphous Semiconductor Materials,” Physical Review
Letters, vol. 32, no. 25, pp. 1429–1432, Jun 1974.
[54] F. Bedeschi, R. Fackenthal, C. Resta, E. Donze, M. Jagasivamani,
E. Buda, F. Pellizzer, D. Chow, A. Cabrini, G. Calvi, R. Faravelli,
A. Fantini, G. Torelli, D. Mills, R. Gastaldi, and G. Casagrande,
“A Multi-Level-Cell Bipolar-Selected Phase-Change Memory,” IEEE
International Solid-State Circuits Conference. Digest of Technical
Papers., pp. 428–625, Feb. 2008.
[55] A. Pirovano, F. Pellizzer, I. Tortorelli, R. Harrigan, M. Magistretti,
P. Petruzza, E. Varesi, D. Erbetta, T. Marangon, F. Bedeschi,
R. Fackenthal, G. Atwood, and R. Bez, “Self-aligned μTrench
phase-change memory cell architecture for 90nm technology and
beyond,” 37th European Solid State Device Research Conference., pp.
222–225, Sept. 2007.
[56] F. Pellizzer, A. Benvenuti, B. Gleixner, Y. Kim, B. Johnson,
M. Magistretti, T. Marangon, A. Pirovano, R. Bez, and G. Atwood, “A
200
BIBLIOGRAFIA
90nm Phase Change Memory Technology for Stand-Alone Non-Volatile
Memory Applications,” Symposium on VLSI Technology. Digest of
Technical Papers., pp. 122–123, 2006.
[57] A. Pirovano, F. Pellizzer, A. Redaelli, I. Tortorelli, E. Varesi,
F. Ottogalli, M. Tosi, P. Besana, R. Cecchini, R. Piva, M. Magistretti,
M. Scaravaggi, G. Mazzone, P. Petruzza, F. Bedeschi, T. Marangon,
A. Modelli, D. Ielmini, A. Lacaita, and R. Bez, “μtrench phase-change
memory cell engineering and optimization,” Proceedings of 35th
European Solid-State Device Research Conference., pp. 313–316, Sept.
2005.
[58] T. Nirschl, J. Phipp, T. Happ, G. Burr, B. Rajendran, M.-H.
Lee, A. Schrott, M. Yang, M. Breitwisch, C.-F. Chen, E. Joseph,
M. Lamorey, R. Cheek, S.-H. Chen, S. Zaidi, S. Raoux, Y. Chen, Y. Zhu,
R. Bergmann, H.-L. Lung, and C. Lam, “Write Strategies for 2 and
4-bit Multi-Level Phase-Change Memory,” IEEE International Electron
Devices Meeting., pp. 461–464, Dec. 2007.
Ringraziamenti
Voglio ringraziare innanzitutto il professor Torelli e Alessandro, per la
pazienza e la disponibilità che mi hanno dimostrato durante questi tre anni,
e soprattutto per gli inestimabili consigli che mi hanno dato.
Ringrazio inoltre Roberto e Ferdinando, per le preziose discussioni che
hanno contribuito alla realizzazione di questo lavoro.
Ringrazio la mia famiglia, e in particolare mia mamma, per avermi
sopportato e incoraggiato per tutto questo tempo.
Ringrazio i miei amici, per i bei momenti che abbiamo passato.
Ovviamente ringrazio anche Judith, che mi fa sentire la persona più
fortunata del mondo.