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.