UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Indirizzo Elettronico Tesi di Laurea Caratterizzazione di memorie non volatili BipFlash tramite sistema automatico di misura controllato con calcolatore Relatore: Laureando: Chiar.mo Prof. Ing. Luca Selmi Patrick Toffoletti Correlatori: Prof. Ing. David Esseni Ing. Francesco Driussi Anno Accademico 2003-04 Indice Introduzione 1 1 La cella Bipflash 1.1 Generazione dei portatori caldi . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Channel Hot Electron (CHE) . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Impact Ionization Feedback (IIF) e CHannel Initiated Secondary Electron (CHISEL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 La cella BipFlash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Principio di funzionamento della cella . . . . . . . . . . . . . . . . . . . 1.2.2 Espressione analitica per l’efficienza d’iniezione . . . . . . . . . . . . . . 1.3 Criteri per l’ottimizzazione della cella . . . . . . . . . . . . . . . . . . . . . . . 1.4 Prestazioni previste della cella . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1 Simulazioni numeriche dell’efficienza d’iniezione . . . . . . . . . . . . . . 1.4.2 Simulazioni numeriche delle caratteristiche di programmazione . . . . . 1.5 Layout della cella e organizzazione a matrice . . . . . . . . . . . . . . . . . . . 11 . 12 . 13 . . . . . . . . . 16 18 18 19 21 24 24 25 28 2 Setup automatici di misura e strumenti utilizzati 2.1 Strumenti utilizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Agilent 4156 C - Precision Semiconductor Parameter Analyzer . . . 2.1.2 Tektronix TDS520B - Oscilloscopio 2Ch, 500MHz, 1GSymbol/s . . . 2.2 Programmi in IBASIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Setup per la programmazione . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Interfaccia GPIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Il programma “Lab-04” . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Ambiente di sviluppo utilizzato per la realizzazione di Lab-04 . . . . 2.3.4 Applicazioni implementate dal programma Lab-04 . . . . . . . . . . 2.3.5 Lab-04. Setup per la caratterizzazione dinamica delle celle BipFlash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 32 34 35 36 36 40 40 49 62 3 Misure sperimentali 3.1 Dispositivi utilizzati . . . . . . . . . . . . . . . . . 3.1.1 Lotti e split . . . . . . . . . . . . . . . . . . 3.2 Caratterizzazione statica dei dispositivi BipFlash . 3.2.1 Tensione di soglia Vth e trasconduttanza gm 3.2.2 Gummel plot . . . . . . . . . . . . . . . . . 3.2.3 Giunzioni . . . . . . . . . . . . . . . . . . . 3.2.4 Iniezione . . . . . . . . . . . . . . . . . . . . 3.2.5 Rapporti Ig/Ie e Ig/Ib in funzione di Vg . . . . . . . . . . . . . . . . . . . . . . . . . . 65 65 67 70 70 74 77 78 82 I . . . . . . . . . . . . . . . . . . delle celle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BipFlash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 3.2.6 Rapporto Ig/Ib in funzione di Ie . . . . 3.2.7 Tabella riassuntiva wafer funzionanti . . Caratterizzazione dinamica delle celle BipFlash 3.3.1 Curve di programmazione . . . . . . . . 3.3.2 Curve di cancellazione . . . . . . . . . . 4 Conclusioni e sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 86 87 87 91 93 A Datasheet degli strumenti 95 A.1 Agilent 4156 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 A.2 Oscilloscopio Tektronix 520 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 B Programmi in IBasic 97 B.1 Programma “isoglia.txt” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 B.2 Programma “vsoglia.txt” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 C Programma “Lab-04” 105 C.1 File “main.c” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 C.2 File “callbacks.h” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 C.3 File “callbacks.c” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 II Elenco delle figure 1 2 3 4 5 Struttura di un transistor MOS a canale n . . Le memorie a semiconduttore . . . . . . . . . Struttura di una cella di memoria FLASH . . variazione della tensione di soglia nella Flash Struttura di una cella di memoria BIPFLASH . . . . . . . . . . 3 4 5 6 8 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 . . . . . . . . 14 14 15 17 18 19 21 22 . . . . . . . . . . 22 23 23 24 24 25 26 26 27 27 1.22 1.23 CHE: iniezione di elettroni di canale attraverso l’ossido . . . . . . . . . . . . . . CHE: corrente di gate e di bulk al variare della tensione di gate . . . . . . . . . CHE: generazione di coppie elettrone-lacuna . . . . . . . . . . . . . . . . . . . . CHISEL: iniezione di elettroni terziari attraverso l’ossido . . . . . . . . . . . . . Correlazione tra correnti di gate e di substrato, in regime CHE e CHISEL . . . Sezione della cella BipFlash durante la fase di programmazione . . . . . . . . . Incremento di efficienza della BipFlash . . . . . . . . . . . . . . . . . . . . . . . Sezione verticale del transistor equivalente della BipFlash . . . . . . . . . . . . Curva, attorno all’emettitore, lungo la quale è stata calcolata la densità di corrente delle lacune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulazioni-BipFlash, corrente di lacune lungo il perimetro dell’emettitore . . . Simulazioni-BipFlash, resistenza serie della zona n-, in funzione del drogaggio . Transistor pMOS parassita nella cella Biplflah . . . . . . . . . . . . . . . . . . . Simulazioni-BipFlash, transistor pMOS parassita . . . . . . . . . . . . . . . . . Simulazioni-BipFlash, efficienza d’iniezione in funzione di VD = VS . . . . . . . Simulazioni-BipFlash, efficienza d’iniezione in funzione di VF G . . . . . . . . . . Simulazioni-BipFlash, correnti di gate e velocità di programmazione . . . . . . Simulazioni-BipFlash, comparazione fra efficienze. . . . . . . . . . . . . . . . . Simulazioni-BipFlash, proporzionalità tra corrente di gate e di bulk . . . . . . . Simulazioni-BipFlash, Curve di programmazione, IE = 10 µA, VD = 2, 5 V e VB = 0 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulazioni-BipFlash, Curve di programmazione, IE = 10 µA, VD = 3, 0 V e VB = 2, 0 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulazioni-BipFlash, Curve di programmazione, IE = 10 µA, VD = 3, 3 V e VB = 0 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Layout della cella di memoria della BipFlash. . . . . . . . . . . . . . . . . . . . Organizzazione a matrice delle celle BipFlash . . . . . . . . . . . . . . . . . . . 2.1 2.2 2.3 Foto della probe station, manipolatore e delle micropunte . . . . . . . . . . . . . 32 Foto dello strumento Agilent 4156 C . . . . . . . . . . . . . . . . . . . . . . . . . 33 Setup per la determinazione delle caratteristiche dinamiche. . . . . . . . . . . . . 36 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 . 29 . 29 . 30 . 30 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 Bit dell’indirizzo GPIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ambiente di lavoro del programma Glade . . . . . . . . . . . . . . . . . . . . . . Ambiente di lavoro dl programma Anjuta . . . . . . . . . . . . . . . . . . . . . . Glade: widget, signal, callback . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anjuta: wizard relativo alla configurazione del progetto . . . . . . . . . . . . . . Collegamento del driver NI488.2 al programma Lab-04 . . . . . . . . . . . . . . . Lab-04. Menù principale del programma . . . . . . . . . . . . . . . . . . . . . . . Lab-04. Menù per l’invio diretto di comandi . . . . . . . . . . . . . . . . . . . . . Lab-04. Menù Oscilloscopio TDS 520 B . . . . . . . . . . . . . . . . . . . . . . . Lab-04. Menù principale dell’Agilent 4156C . . . . . . . . . . . . . . . . . . . . . Lab-04. Funzionalità d’aiuto tramite il widget tooltip . . . . . . . . . . . . . . . . Lab-04. Menù di gestione della coda degli errori per l’Agilent 4156C . . . . . . . Lab-04. Finestra avviso misurazione per l’Agilent 4156C . . . . . . . . . . . . . . Lab-04. Menù Spreadsheet per l’Agilent 4156C . . . . . . . . . . . . . . . . . . . Lab-04. Menù Channel Definition per l’Agilent 4156C . . . . . . . . . . . . . . . Lab-04. Menù User Function and Variables per l’Agilent 4156C . . . . . . . . . . Lab-04. Menù Sweep Setup per l’Agilent 4156C . . . . . . . . . . . . . . . . . . . Lab-04. Menù Measure Setup and Output Setup per l’Agilent 4156C . . . . . . . Lab-04. Menù Analysis Setup per l’Agilent 4156C . . . . . . . . . . . . . . . . . Lab-04. Menù Display Setup per l’Agilent 4156C . . . . . . . . . . . . . . . . . . Lab-04. Menù Stress per l’Agilent 4156C - configurazione per la programmazione Lab-04. Menù Stress per l’Agilent 4156C - configurazione per la cancellazione . . Lab-04: finestra relativa al menù che consente la gestione di diverse sessioni di misura finalizzate alla caratterizzazione dinamica delle celle BipFlash . . . . . . . Foto di wafer e particolare del die . . . . . . . . . . . . . . . . . . . . . . . . . . Foto di wafer, die, teg e dispositivi BipFlash . . . . . . . . . . . . . . . . . . . . Distribuzione delle locazioni (die) all’interno del wafer . . . . . . . . . . . . . . Layout dei pad delle teg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratt. statica: Tensione di soglia Vth e trasconduttanza gm in funzione della tensione di substrato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratt. statica: Tensione di soglia Vth e trasconduttanza gm in funzione del livello di drogaggio di canale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratt. statica: Variazione della tensione di soglia provocata dall’effetto body . Caratt. statica: Gummel plot Wafer W3, primo lotto . . . . . . . . . . . . . . . Caratt. statica: Gummel plot Wafer V3, secondo lotto . . . . . . . . . . . . . . Caratt. statica: Gummel plot Wafer V6, con diffusione HALO, secondo lotto . Caratt. statica: Giunzioni SB, DB, secondo lotto . . . . . . . . . . . . . . . . . Meccanismo di iniezione da band to band tunneling: BBISHE . . . . . . . . . . Caratt. statica: Iniezione, IG , IB in funzione di VG per VB = −3V , primo lotto, wafer W3: basso drogaggio di canale . . . . . . . . . . . . . . . . . . . . . . . . Caratt. statica: Iniezione, IG , IB in funzione di VG per VB = −4V , wafer W3, primo lotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratt. statica: Iniezione, IG , IB in funzione di VG per VB = −5V , wafer W3, primo lotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratt. statica: Iniezione, IG , IB in funzione di VG per VB = −4V , secondo lotto, wafer V3: basso drogaggio di canale . . . . . . . . . . . . . . . . . . . . . IV . . . . 37 43 44 45 46 47 49 50 51 52 54 55 55 56 57 57 58 58 59 59 60 61 64 65 66 67 68 . 71 . . . . . . . 72 73 75 76 76 77 78 . 79 . 80 . 80 . 81 3.17 Caratt. statica: Iniezione, IG , IB in funzione di VG per VB = −5V , wafer V3, secondo lotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.18 Caratt. statica: Iniezione, IG , IB in funzione di VG per VB = −5V , primo lotto, wafer W12: medio drogaggio di canale . . . . . . . . . . . . . . . . . . . . . . . . 3.19 Caratt. statica: Efficienza, IG /IB in funzione di VG per VB = −5V , V3: secondo lotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.20 Caratt. statica: Efficienza, IG /IE in funzione di VG per VB = −5V , V3: secondo lotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.21 Caratt. statica: Efficienza, IG /IB in funzione di IE , V6: secondo lotto . . . . . . 3.22 Caratt. statica: Efficienza, IG /IB in funzione di IE , W3: primo lotto . . . . . . . 3.23 Caratt. statica: Efficienza, IG /IB in funzione di IE , W12: primo lotto . . . . . . 3.24 Diagramma della temporizzazione degli impulsi di programmazione . . . . . . . . 3.25 Programmazione della cella BipFlash . . . . . . . . . . . . . . . . . . . . . . . . . 3.26 Caratt. dinamica: Curve di programmazione di celle del wafer W20 - primo lotto 3.27 Caratt. dinamica: Curve di programmazione di celle del wafer W3 - primo lotto 3.28 Curve di programmazione di celle del wafer V3 - secondo lotto . . . . . . . . . . 3.29 Tunneling Fowler-Nordheim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.30 Cancellazione per FN della cella BipFlash . . . . . . . . . . . . . . . . . . . . . . 3.31 Curve di cancellazione di celle di wafer del primo e del secondo lotto . . . . . . . V 81 82 83 83 84 85 85 88 88 89 89 90 91 92 92 VI Introduzione Negli ultimi cinquant’anni la microelettronica, o elettronica dei semiconduttori, è stata caratterizzata da enormi innovazioni in termini di prodotto e di tecnologia di processo. La continua ricerca in termini di nuove soluzioni tecnologiche e di processi produttivi più efficienti ha portato all’introduzione di nuovi dispositivi elettronici in grado di poter essere utilizzati in un sempre maggior numero di applicazioni. Inoltre la nascita di tecnologie in grado di poter essere utilizzate in molteplici settori ha determinato un aumento sia del numero dei potenziali fruitori che del numero di aziende interessate allo sviluppo di tali tecnologie. Negli ultimi anni la ricerca si è indirizzata verso dispositivi sempre più miniaturizzati e più veloci, oltre che in grado di ridurre il consumo di energia; tutto ciò ha permesso la realizzazione di circuiti integrati (IC) con un numero crescente di transistor per unità d’area ed in grado di realizzare funzioni via via sempre più complesse. L’aumento delle prestazioni assolute dei dispositivi realizzati (dimensioni, velocità, consumi) è stata così regolare negli anni che già nel 1975 Gordon E. Moore propose la sua omonima “legge”, dopo aver osservato che il numero di transistor per circuito integrato era aumentato, dalla data della loro invenzione, di un fattore due ogni anno su un arco temporale di 16 anni [1]. L’iniziale analisi di Moore aveva indicato, quali fattori concorrenti allo sviluppo esponenziale della complessità1 , l’aumento dell’area del chip, la riduzione delle dimensioni delle strutture elementari che componevano i circuiti integrati, il miglioramento della capacità di progettare i dispositivi (fossero essi transistori bipolari o di tipo MOS) e la realizzazione di circuiti più efficienti. Moore stesso riconosceva che alcuni di questi fattori avrebbero avuto negli anni seguenti un impatto limitato e quindi l’evoluzione ulteriore sarebbe dipesa essenzialmente dal solo ridursi delle dimensioni critiche, rallentando, di conseguenza, il suo ritmo. L’analisi è stata sostanzialmente confermata dagli sviluppi successivi: – l’area del chip è aumentata di un fattore quattro dal 1965 al 1975, grazie a un generale miglioramento della qualità dei materiali, ma è poi stata limitata dalla necessità di garantire un costo accettabile dei prodotti (il costo per unità d’area dei circuiti integrati, espresso in dollari/cm2 , è rimasto sostanzialmente stabile nel tempo); – la dimensione lineare minima definita sulle strutture MOS si è ridotta di un fattore tre ogni dieci anni ed ha fornito il contributo principale; – il miglioramento nella capacità di progettare dispositivi complessi si è concentrato essenzialmente sul tempo di progettazione, con l’introduzione di tecniche automatizzate (librerie di funzioni logiche, sintesi logica), a scapito della densità dei circuiti; 1 La complessità è rappresentata dal numero di componenti necessari alla realizzazione di una funzione all’interno di un circuito integrato. 1 – nel caso delle memorie, tecniche di auto-allineamento e di sviluppo tridimensionale dei dispositivi hanno permesso di ridurre ulteriormente l’ingombro. Tabella 1: La legge di Moore. Area IC Dimensione minima Transistor/IC Frequenza di CK Costo/transisitor Costi fabbricazione Legge di Moore nel 2004 1,5x ogni 3 anni -30% ogni 3 anni 2x ogni 1,5 anni 1,5 ogni 3 anni -50% ogni 3 anni 2,3x ogni 3 anni 6,5 cm2 0,13 µm 4 Gb Dram 1 GHz micro 0,01 cent 8 Bil $ Di conseguenza comprendere le cause di uno sviluppo quasi esponenziale non è difficile. L’elemento base su cui si è fondata la rivoluzione della microelettronica e che costituisce la maggior parte dei circuiti integrati, è il transistor MOSFET 2 il quale si basa sulla tecnologia MOS. I principali fattori che hanno permesso alla tecnologia MOS di avere un enorme successo sono: – la semplicità della struttura; – la scalabilità intrinseca del transistor, che ha reso possibile l’aumento della complessità senza richiedere innovazioni significative della struttura base del dispositivo; – la possibilità, grazie all’ architettura CMOS3 , di realizzare circuiti integrati che dissipano solo durante il funzionamento e non in quiescenza, con evidenti risparmi di energia. In termini elementari, la scalabilità consiste nel fatto che, se un transistor di certe dimensioni funziona, è possibile costruirne uno di dimensioni ridotte e funzionante allo stesso modo scalando opportunamente le sue dimensioni fisiche. Lo scaling [2] dei dispositivi è motivato dal presupposto che un transistore più piccolo è in grado di offrire prestazioni migliori rispetto ad uno più grande in termini di velocità, consumo, affidabilità e spazio occupato, nonché del costo del circuito elettronico che si andrà a costruire. Essendo il MOSFET la struttura base dell’elettronica digitale è opportuno sin d’ora descriverne a grandi linee il funzionamento. Come illustrato in Fig. 1, il transistor MOSFET (nel caso specifico un nMOSFET) è composto da quattro elettrodi; due, il source ed il drain sono realizzati attraverso due tasche fortemente drogate di tipo n4 , ricavate tramite diffusione o impiantazione ionica, su un substrato di silicio monocristallino drogato di tipo p. Le zone di source e drain sono in contatto ohmico con le relative metallizzazioni, per cui è possibile stabilire una differenza di potenziale tra queste ultime e il substrato (detto anche body o bulk). Il terzo elettrodo, il gate, ricopre il substrato di tipo p, da cui è separato tramite un sottile 2 MOSFET: Metal Oxide Semiconductor Field Effect Transistor Complementary MOS 4 Il drogaggio (iniezione di “impurità” con caratteristiche elettriche opportune) permette di alterare le proprietà elettriche dei materiali semiconduttori. Un semiconduttore si definisce di tipo n quando il drogaggio fornisce caratteristiche conduttive dovute alla presenza di cariche negative (elettroni) libere; di tipo p quando il drogaggio fornisce caratteristiche conduttive equivalenti alla presenza di cariche positive (chiamate lacune) libere; n+ (p+) rappresentano semiconduttori di tipo n (p) molto drogati percui le loro caratteristiche elettriche si avvicinano a quelle dei metalli. 3 CMOS: 2 LG VG VD VS SiO2 canale Source n+ Drain n+ WD x WS Xj tox Gate Ossido - SiO2 SiO2 y Leff p Substrato (Bulk) VB Figura 1: Sezione verticale di un transistor MOS a canale n strato isolante (tipicamente ossido di silicio), ed è costruito in modo da sovrastare la zona di substrato che separa il source dal drain (detta zona di canale). Il gate può essere di metallo (ad es. alluminio) oppure, come nella maggior parte dei casi, di silicio policristallino molto drogato (detto poly). Variando la tensione del gate (VG ) è possibile richiamare portatori minoritari all’interfaccia ossido-semiconduttore e quindi creare un canale conduttivo tra source e drain che altrimenti risulterebbero isolati tra di loro. Variando VG è possibile modulare la conducibilità del suddetto canale. Se il substrato è di tipo p i portatori minoritari sono gli elettroni e si crea dunque un canale di tipo n, da cui la denominazione nMOSFET. Alzando dunque la tensione di gate al di sopra di un valore limite detto tensione di soglia gli elettroni vengono attirati alla superficie formando il canale tra source e drain, tra i quali può quindi fluire una corrente elettrica in presenza di una tensione tra i due elettrodi. La struttura caratteristica di un MOSFET è rappresentata in Fig. 1: LG è la lunghezza di gate, Lef f è la lunghezza effettiva del canale, tox è lo spessore dell’ossido di gate, xj è la profondità di giunzione e Ws e Wd sono gli spessori delle zone svuotate (zone prive di portatori liberi), rispettivamente di source e di drain. Se da un lato la progettazione di transistor sempre più piccoli porta a innegabili vantaggi in termini di densità di integrazione, velocità e bassi consumi, dall’altro enfatizza problematiche connesse alla realizzazione pratica; infatti le lunghezze d’onda dei raggi ultravioletti impiegati nei processi litografici utilizzati nella definizione della struttura MOSFET diventano confrontabili con le dimensioni caratteristiche del transistor e generano problemi nella definizione stessa. Inoltre la riduzione delle dimensioni influisce anche sull’affidabilità del dispositivo, in quanto l’impossibilità di ridurre le tensioni d’esercizio di un fattore uguale alla riduzione delle dimensioni geometriche (come vorrebbe la teoria dello scaling a campo costante) portano all’aumento dei campi elettrici e all’insorgere di un insieme di problemi che prendono il nome di effetti di 3 canale corto (SCE5 ); tra questi possiamo citare il punch-through6 ed il DIBL7 . Tali effetti vengono ridotti aumentando il drogaggio del substrato (si riducono gli spessori delle zone svuotate) e diminuendo lo spessore dell’ossido tox e le profondità di giunzione xj . L’aumento dei drogaggi però induce un aumento dei campi elettrici all’interno della struttura, che risultano problematici dal punto di vista dell’affidabilità del dispositivo a causa di quelli che vengono chiamati effetti di portatori caldi (HCE8 ). I due principali effetti del riscaldamento dei portatori (elettroni e lacune acquistano molta energia) sono l’intrappolamento di carica nell’ossido, con un conseguente aumento della tensione di soglia e una diminuzione della trasconduttanza dovuta alla saturazione della velocità dei portatori di carica e danneggiamento dell’interfaccia tra ossido e silicio. L’aumento del campo elettrico può essere contrastato riducendo il gradiente di concentrazione di drogante nel passaggio da drain a canale (LDD9 ). Una categoria di dispositivi la cui evoluzione è stata fondamentale per tutte le applicazioni Memorie a semiconduttore Memorie Volatili SRAM Memorie Non Volatili DRAM ROM EPROM OTP EEPROM FLASH Figura 2: Memorie a semiconduttore - tecnologia CMOS portatili (cellulari, PC portatili, etc.) sono le memorie non volatili (NVM10 ), elementi capaci di mantenere un dato memorizzato per molto tempo anche in assenza di alimentazione del componente. Inoltre le performance raggiunte, negli ultimi anni, in termini di densità, velocità, affidabilità e costi, hanno permesso alle NVM di occupare nuovi segmenti di mercato e di poter competere nel settore dei supporti magnetici ove è richiesto un basso consumo ed una elevata robustezza 5 SCE: Short Channel Effects zone svuotate di drain e di source si avvicinano sino a toccarsi 7 DIBL: Drain Induced Barrier Lowering. Un incremento della tensione di drain determina una riduzione della barriera di potenziale source-canale, provocando un incremento della corrente di drain; l’effetto può essere modellato come una riduzione della tensione di soglia Vth causato dall’aumento della tensione di drain Vds . 8 HCE: Hot Carrier Effects 9 LDD: Lightly doped drain 10 NVM: Not Volatile Memory 6 Le 4 meccanica. Un primo gruppo di memorie non volatili (Fig. 2) è costituito dalle EPROM11 in cui la cancellazione avviene tramite irraggiamento UV dell’intero chip montato in un package dotato di una finestrella di quarzo ed il meccanismo di programmazione invece risulta essere selettivo. I costi e, soprattutto, la mancanza di flessibilità rendono obsoleto questo tipo di memoria. Nelle EEPROM12 , invece è possibile scrivere e cancellare in modo selettivo una singola cella (o un byte di celle). Purtroppo l’utilizzo di due transistor per cella (selezione e memorizzazione), con conseguente calo di densità, relegano le EEPROM ad essere usate solo per specifici utilizzi. VS VG VD Control Gate PolySi n + Ossido interpoly - ONO Floating Gate PolySi n + Ossido di tunnel - SiO2 SiO2 Source + n canale SiO2 Drain + n p Substrato (Bulk) VB Figura 3: Sezione verticale di una cella di memoria FLASH a gate flottante La tipologia di NVM che in assoluto rappresenta il miglior compromesso in termini di prestazioni è quella delle memorie FLASH. caratteristiche quali le ridotte dimensioni della cella, la semplicità della struttura, l’alimentazione singola, la programmazione a singolo bit e la cancellazione veloce a blocchi, permettono di creare settori di memoria ad alta densità, particolarmente adatti ad essere integrati in sistemi logici (es. NVM embedded13 ). Le applicazioni delle memorie FLASH sono principalmente due: 1. l’integrazione in sistemi logici, principalmente microprocessori. Possibili utilizzi: software aggiornabili (es. firmware), memorizzazione di codici d’identificazione (SN, PIN, etc.), smart card, riconfigurazioni del sistema on the fly. 2. la creazione di memorie di massa di stato solido (ad es. banchi di memoria, o dispositivi standalone quali hard disk allo stato solido). Vantaggi: portabilità, piccole dimensioni, consumo ridotto, nessun componente mobile e quindi maggiore robustezza. 11 EPROM: Electrically Programmable Read Only Memory Erasable Electrically Programmable Read Only Memory 13 Con NVM embedded ci si riferisce ad un circuito integrato che contiene un microcontrollore o un microprocessore e una memoria non volatile di tipo FLASH, EPROM, o EEPROM 12 EPROM: 5 Le FLASH combinano la capacità di ritenzione delle ROM con il tempo d’accesso delle DRAM, permettendo così l’esecuzione diretta di microcodici. Interessanti applicazioni si trovano nella gestione dei personal computer o nella telefonia dove i programmi possono essere memorizzati in flash chip, e quindi eseguiti direttamente, senza la necessità di dover essere continuamente caricati/scaricati. Le memorie FLASH standard attualmente in commercio sono quelle a gate flottante con architettura NOR (Fig. 3). Esse sono costituite da un transistor MOSFET in cui sono presenti due metallizzazioni di gate, una superiore contattata ed una isolata posta tra la prima e l’ossido che sovrasta il canale; questa seconda metallizzazione, che prende il nome di floating gate, è separata dalla prima attraverso un altro strato di ossido isolante e può schermare gli effetti sul canale della prima metallizzazione, chiamata control gate. La capacità di mantenere un dato è dovuto al fatto che, se nel floating gate viene introdotta della carica, essa vi rimane facendo traslare la soglia del transistor visibile dal control gate (Fig. 4). CG FG ID e- CARICO “0” NEUTRO “1” DVT= - QFG/CPP VT0 Vread VT VCG Figura 4: Tensione di soglia in una cella Flash programmata ed in una cancella. Applicando al gate la tensione di lettura (Vread ), il valore della corrente di drain discrimina tra stato “1” e stato “0”. Esistono diverse soluzioni per trasferire la carica nel e dal floating gate; il problema è fare in modo che la carica passi attraverso la barriera di energia creata dallo strato di materiale isolante, evitando di danneggiare o alterare la struttura del reticolo dell’ossido. Allo stato dell’arte le memorie FLASH di uso più comune sono: — cancellate per effetto tunnel (FN14 ); — programmate per CHE15 ). Il CHE (§1.1.1)[3] è un meccanismo di iniezione di elettroni verso il gate, che utilizza il “riscaldamento” dei portatori di canale. Applicando una differenza di potenziale tra drain e source gli 14 FN: Fowler-Nordheim. Indica il passaggio, mediante fenomeni quantistici di tunneling, di cariche elettriche attraverso una barriera di potenziale (generalmente creata dall’ossido). 15 CHE: Channel Hot Electron 6 elettroni vengono accelerati (scaldati) dal campo longitudinale in tal modo viene loro fornita un’energia sufficiente al superamento della barriera tra substrato ed ossido (3,15 eV); il campo verticale contribuisce ad iniettare la carica nel floating gate attraverso il sottile strato di ossido. La scalabilità, a tensioni di alimentazione di 3,3 V o inferiori, è resa difficile dal drammatico calo di efficienza di iniezione, che si verifica quando la tensione applicata al drain scende al di sotto di quella corrispondente all’energia di barriera tra silicio ed ossido. Nelle FLASH moderne, aventi tecnologie aggiornate, l’efficienza (definita come rapporto tra la corrente utile per la programmazione e la corrente massima nel dispositivo) raggiunge, per una tipica cella di tecnologia 0, 3 µm polarizzata con VDS = 4, 5 V , solo valori prossimi a η = (1 ÷ 4) × 10−5 . La necessità di avere tensioni elevate al drain porta a dover realizzare opportune circuiti a pompa di carica in grado di fornire tensioni maggiori di quelle dell’alimentazione. Queste tecniche circuitali, oltre allo svantaggio in termini di area occupata, pongono un limite massimo alla corrente che può essere assorbita dal drain. Se ne deduce che bassi valori di corrente di drain (ID ) ed alti valori d’efficienza d’iniezione16 [4] sono importanti figure di merito per la cella di memoria. Recentemente, per aumentare l’efficienza d’iniezione è stato proposto l’utilizzo di un meccanismo d’iniezione detto CHISEL17 [5][6] che viene attivato dall’applicazione di una tensione di substrato durante l’operazione di scrittura. Nel CHISEL l’iniezione di elettroni caldi attraverso l’interfaccia ossido-silicio è dovuta a portatori terziari. Il campo elettrico laterale lungo il canale accelera gli elettroni, i quali, una volta acquisita un energia maggiore di 1,6 eV, possono generare per ionizzazione da impatto (II18 ) coppie elettrone-lacuna. Le lacune prodotte vengono attirate verso il bulk ed acquistano, grazie al campo verticale generato dalla tensione di bulk, sufficiente energia per poter generare un’ulteriore coppia elettrone-lacuna (IIF19 ). Questi elettroni generati in profondità nel bulk, detti anche elettroni terziari, vengono accelerati dal campo elettrico verticale verso l’interfaccia e possono essere in grado di superare la barriera energetica tra ossido e silicio. L’iniezione di elettroni terziari, se incentivata dall’applicazione di una tensione negativa al substrato, può arrivare a dominare completamente il processo di iniezione [7] [8]. Dunque nel CHISEL il processo di iniezione è il frutto di tre processi distinti in cascata: 1) la generazione delle lacune secondarie per II da parte degli elettroni di canale. 2) la generazione degli elettroni terziari (IIF) in profondità nel substrato della cella da parte delle lacune in moto verso il substrato. 3) il riscaldamento degli elettroni terziari in moto verso l’interfaccia e loro iniezione nel gate attraverso l’ossido di tunnel. Ognuno di questi processi ha un’efficienza che influisce sull’efficienza totale del meccanismo di CHISEL. In passato sono state proposte diverse soluzioni alternative di celle in cui, per aumentare l’efficienza, si utilizza l’iniezione di elettroni caldi da substrato. Queste tecniche si basano sull’integrazione di opportuni iniettori di elettroni nel substrato e sulla raccolta di tali portatori all’interno della regione svuotata sotto il gate della cella. Questi iniettori possono essere realizzati o tramite diffusioni sepolte o tramite transistori bipolari laterali. 16 Per una FLASH a gate flottante con architettura NOR, l’efficienza d’iniezione tramite CHE è definita come η = [IG /ID ] 17 CHISEL: CHannel Initiated Substrate ELectron 18 II: Impact Ionization 19 IIF: Impact Ionization Feedback 7 Tuttavia queste soluzioni presentano uno o più dei seguenti svantaggi: – la regione svuotata sotto il gate raccoglie in modo poco efficiente i portatori iniettati, in quanto molti di essi vengono raccolti direttamente dalle regioni di source e di drain; – l’efficienza cala con lo scaling del transistore, in quanto l’area del source e del drain diventa una frazione percentualmente più rilevante dell’area totale del dispositivo; – il processo d’iniezione è poco o punto selettivo. Un nuovo tipo di cella NVM con architettura NOR avente alta efficienza d’iniezione è la BipFlash 20 . L’idea di base è quella di implementare un meccanismo che, diminuendo da tre a due i processi elementari necessari per l’iniezione di elettroni, consenta di ottenere, a parità di tecnologia e tensioni acceleranti, un’efficienza d’iniezione molto superiore a quella del CHISEL, mantenendo al tempo stesso la selettività dell’operazione di scrittura. VS VG VEM Control Gate PolySi n VD IEM + ID Ossido interpoly - ONO Floating Gate PolySi n + Ossido di tunnel - SiO2 SiO2 Source n+ SiO2 p+ canale PB Drain n- n+ (Mp-1) p Substrato (Bulk) VB IB Figura 5: Sezione verticale della cella di memoria BipFlash Come illustrato in Fig. 5, alla classica cella FLASH sono state aggiunte due diffusioni che hanno permesso di ricavare un transistore bipolare PNP all’interno della struttura: una diffusione di tipo n (base) è posta in contatto lateralmente alla la regione di drain, ed un’altra, molto sottile e di tipo p+ (emettitore), è ricavata all’interno della stessa regione. L’operazione di scrittura della BipFlash avviene polarizzando la giunzione p+/n in diretta. Le lacune provenienti dall’emettitore, dopo aver evitato la ricombinazione in base, vengono accelerate verso il collettore e generano per II elettroni secondari nella regione di carica spaziale associata alla giunzione tra regione n e substrato. Gli elettroni secondari vengono a loro volta accelerati verso l’interfaccia e alcuni di essi possono arrivare al gate con un meccanismo di iniezione simile al CHISEL. Nella cella BipFlash l’inefficiente generazione di lacune da parte degli elettroni di canale (II) viene quindi sostituita quindi da un’iniezione diretta delle lacune nella regione d’interesse. In questo modo non vi è più la necessità di una corrente di canale durante l’operazione di programmazione, essendo sufficiente mantenere il source e il drain allo stesso potenziale. Con 20 BipFlash: Bipolar Flash 8 una tensione di floating gate maggiore di quella della base si otterrà un elevato valore d’iniezione di elettroni secondari. Maggiori informazioni a riguardo della struttura, del funzionamento, dei criteri per l’ottimizzazione e delle prestazioni previste della cella BipFlash verranno fornite nel capitolo 1. Si anticipa solamente che l’efficienza della cella si stima essere due ordini di grandezza superiore a quella ottenibile dall’iniezione CHISEL. Il vantaggio in termini di efficienza in scrittura può essere utilizzato per ottenere basse tensioni di alimentazione, bassi consumi o minori tempi di programmazione. Scopo del presente lavoro è quello di indagare sperimentalmente il comportamento statico e dinamico dei dispositivi Bipflash appartenenti a diversi lotti di fabbricazione. In particolare si è proceduto a caratterizzare due diversi lotti di fabbricazione di celle BipFlash forniti dalla ST Microelectronics. Il paragrafo introduttivo del capitolo 1 è dedicato alla descrizione dei metodi di programmazione delle celle di memoria Flash standard: il CHE (§1.1.1) ed il CHISEL (§1.1.2). La parte restante è dedicata interamente alla Bipflash della quale vengono descritti in dettaglio: la struttura (§1.2), il funzionamento (§1.2.1), l’efficienza (§1.2.2), i criteri per l’ottimizzazione della cella (§1.3) ed il layout (§1.5). Si riportano inoltre, mediante grafici, i dati (efficienza, caratteristiche di programmazione, etc.) ottenuti tramite simulazione numerica (§1.4). Per la parte sperimentale della tesi si è proceduto alla realizzazione di un setup automatico di misura (descritto nel capitolo 2) che sfrutta lo standard IEEE488.2 ed alcune librerie UNIX e che consente di pilotare tramite computer gli strumenti utilizzati durante le misurazioni. Per la caratterizzazione statica dei dispositivi si è utilizzato lo strumento Agilent 4156C (§2.1.2), che ha permesso l’esecuzione in locale di diversi programmi scritti in linguaggio IBASIC. Per realizzare il controllo automatico degli strumenti in fase di misurazione e non, si è realizzato un programma in linguaggio C dotato di interfaccia grafica (GUI21 ) che consente, in modo modulare, l’eventuale realizzazione di altri setup di misura automatici ed il controllo in remoto dei singoli strumenti. La descrizione dell’ambiente di sviluppo utilizzato (Anjuta, Glade), delle diverse librerie (gtk+ per la grafica, gpib per il protocollo 488.2, glib per il C) e della parte di codice atti a ricavare le caratteristiche dinamiche della BipFlash è riportata nel capitolo 2. La modularità, l’espandibilità, ma soprattutto la logica con cui è stata realizzata la GUI rendono il programma suscettibile di futuri ampliamenti e revisioni. L’inizio del capitolo 3 è dedicato alla descrizione dei dispositivi utilizzati (celle BipFlash e transistor equivalenti), e dei motivi che hanno portato alla realizzazione di diversi lotti e split di celle BipFlash. Segue poi un analisi delle caratteristiche statiche dei transistor equivalenti (soglie, iniezione, gummel plot) e delle caratteristiche dinamiche delle celle di memoria (curve di programmazione e cancellazione) in relazione ai diversi dispositivi utilizzati. Il capitolo 4 è dedicato alle conclusioni e ai possibili sviluppi futuri. In appendice sono riportati i listati delle parti più significative dei codici sorgente. 21 GUI: Graphical User Interface 9 10 Capitolo 1 La cella Bipflash L’efficienza d’iniezione o di programmazione di una memoria Flash, intesa come rapporto tra la corrente utile per la programmazione (IG ) e la corrente assorbita dall’alimentazione (nel CHE e nel CHISEL è la corrente di canale IDS ), è un parametro molto importante perché determina i consumi della memoria e il numero di celle che possono essere programmate allo stesso tempo. Esprimendo l’efficienza come η = IG /IDS , è possibile definire come la larghezza di banda rapporto tra il numero di celle programmabili in parallelo e il tempo necessario per programmarle: BW = Npr . Tpr (1.1) Npr = max IDS cell IDS (1.2) Essendo max cell dove IDS è la corrente massima assorbibile dall’alimentazione, mentre IDS è la corrente necessaria per programmare la cella, e Tpr = ∆VT · Cpp IG (1.3) dove ∆VT è la variazione di soglia tra stato programmato e stato cancellato, mentre Cpp è la capacità tra il floating gate e il control gate della cella, si può anche scrivere: ¸ · · ¸ max IG IDS · cell . BW = (1.4) ∆VT · Cpp IDS max Nel caso di una tipica cella Flash con architettura NOR, la corrente di canale IDS , che corri1 sponde in genere alla corrente della bit-line , è limitata, in quanto fornita da pompe di carica che generano una tensione di drain (per il CHE deve essere maggiore di 3,2V) superiore a quella dell’alimentazione [9] [10]; ∆VT tipicamente è 2 V; Cpp che rappresenta la capacità associata allo strato di dielettrico tra control gate e floating gate (ossido interpoly) ed è quindi un parametro tecnologico. 1 In una memoria Flash NOR le celle sono disposte secondo un arrangiamento matriciale, ove: il source è comune a tutto il settore; le celle che costituiscono una colonna presentano il drain in comune (bitline); le celle che formato una riga hanno, invece, il gate in comune. Questo tipo di struttura permette di selezionare, leggere e programmare (per CHE) la singola cella. Ad es. per scrivere una cella si alza la sua wordline a 9V e la sua bitline a 5V con source e bulk a massa. 11 Si deduce che l’efficienza d’iniezione è proporzionale alla bandwidth della memoria (η ∝ BW ). Nel caso specifico di una cella di tecnologia 0, 3 µm con: VDS = 4, 5 V e |VB | = 1, 0 V : IG ≈ (1 ÷ 2) nA per [∆VT /∆t] ≈ (1 ÷ 2) V /µs cell cell IDS ≈ (50 ÷ 150) µA ⇒ η = [IG /IDS ] ≈ (1 ÷ 4) · 10−5 Per aumentare l’efficienza d’iniezione del CHE (§1.1.1) e del CHISEL (§1.1.2) sono state proposte in letteratura altre strutture di cella che fanno uso dell’iniezione di elettroni da substrato e della raccolta di tali portatori all’interno della regione svuotata sotto il gate. Questi iniettori possono presentarsi sotto forma di: • strati sepolti (N-Well), i cui svantaggi sono – la non selettività del meccanismo di iniezione degli elettroni (schemi di cancellazione per celle DINOR con “tripla well ” 2 , o celle VIPMOS con scrittura ottenuta tramite punchtrough della tasca sepolta), – le problematiche di efficienza con lo scaling del dispositivo (source e drain sono collettori parassiti); • transistori bipolari (npn) laterali (proposti da Eitan fin dal 1984), i cui svantaggi sono: – la bassa efficienza di collettore che viene, inoltre, drammaticamente ridotta dallo scaling del dispositivo, – la non selettività del meccanismo di iniezione degli elettroni. In questo capitolo viene presentata una nuova architettura di cella NVM chiamata bipolar flash (BipFlash) [11] [12] [13] [14] che utilizza l’iniezione di elettroni caldi generati nella regione svuotata grazie alla ionizzazione da impatto di lacune opportunamente iniettate. Questo meccanismo evita i problemi derivanti dall’implementazione di iniettori da substrato ed utilizza un fenomeno di Impact Ionization Feedback (IIF - §1.1.2) simile al meccanismo sfruttato nel CHISEL (§1.1.2), ma con una sorgente di lacune totalmente diversa. Gli alti valori di efficienza, che emergono dalle simulazioni numeriche, rendono la cella BipFlash particolarmente adatta per utilizzi dove sono richiesti bassi valori di tensione. Lo svantaggio in termini di occupazione d’area rispetto ad una tipica Flash a gate flottante, derivante dal dover realizzare un transistore bipolare dentro la regione di drain, viene parzialmente controbilanciato dal risparmio di spazio ottenuto eliminando, o quantomeno riducendo, il numero delle pompe di carica. La riduzione della corrente assorbita da ciascuna bit-line permette di aumentare il parallelismo delle operazioni di programmazione. Tutte queste caratteristiche privilegiano un possibile impiego della cella BipFlash in applicazioni embedded rispetto a quelle stand-alone. 1.1 Generazione dei portatori caldi Nei due successivi paragrafi vengono descritti brevemente i meccanismi di iniezione utilizzati della programmazione nelle memorie Flash tradizionali. Le considerazioni possono essere applicate indistintamente alla cella di memoria Flash a gate flottante o al transistor MOSFET equivalente. É sufficiente considerare il floating gate della 2 Processo tecnologico che rende disponibile il contatto di bulk della cella. 12 memoria alla stregua del gate di un transistor, ricordando, però, che nella cella Flash la tensione del floating gate dipende anche dal potenziale applicato al drain. Per semplicità, ci riferiremo al caso del transistor nMOSFET, in cui i portatori nel canale sono elettroni. Applicando una tensione di drain maggiore di (VG −Vth ) si manda in saturazione il transistor e la regione di canale ad esso più vicina viene “strozzata” per cui viene detta zona in pinch-off. Questa zona del canale presenta un’alta resistività (poca carica libera disponibile) che provoca una caduta di potenziale tale da generare un picco localizzato del campo elettrico laterale (εk ). É qui che gli elettroni vengono accelerati (scaldati) in modo tale da acquisire un’energia molto superiore a quella che normalmente hanno all’equilibrio termico. Durante il loro moto gli elettroni urtano il reticolo cristallino (fononi), cedendo solo una piccola frazione dell’energia posseduta. Se il campo laterale è sufficientemente alto, l’energia acquisita dagli elettroni supera facilmente il valore di 1,6 eV, valore oltre il quale l’elettrone può generare per ionizzazione da impatto (II) coppie elettrone–lacuna. Le lacune prodotte fluiscono, spinte dal campo elettrico verticale, attraverso il morsetto di substrato, generando la corrente IBulk , la quale può dunque essere considerata un buon indicatore del riscaldamento subito dagli elettroni nel canale. Nella regione di canale vicina al drain alcuni elettroni possiedono un’energia media superiore all’energia di barriera tra substrato e ossido (3,15 eV) e quindi, se il campo elettrico trasversale ai capi dell’ossido di gate è favorevole, attraversano lo strato di ossido dando origine alla corrente di gate (IG ). La barriera Si − SiO2 vista dagli elettroni dipende dai potenziali applicati e può dunque variare lungo la zona di pinch-off. Per le lacune, invece, il gap tra ossido e substrato è maggiore, pari a circa 4,8 eV, inoltre la loro massa è superiore a quella degli elettroni ed è quindi più difficile che riescano ad ottenere energie così elevate. L’efficienza d’iniezione verso l’ossido degli elettroni è quindi maggiore rispetto a quella delle lacune. 1.1.1 Channel Hot Electron (CHE) Il Channel Hot Electron (CHE) è di gran lunga il meccanismo d’iniezione più utilizzato per la programmazione nelle celle di memorie Flash standard. L’iniezione tramite CHE utilizza il fenomeno di riscaldamento, appena descritto, che subiscono gli elettroni durante l’attraversamento del canale dal source al drain, dovuto al campo elettrico laterale (εk ) prodotto dalla differenza di potenziale applicata tra drain e source (VDS ). Le tensioni applicate al gate ed al drain modulano i campi elettrici (laterale εk e verticale ε⊥ ) nella regione vicino al drain ove è maggiore la quantità di portatori caldi ed è più probabile la loro iniezione verso il gate (Fig. 1.1). Un elevato campo elettrico laterale (ovvero un’elevata VDS ), aumenta la popolazione di elettroni aventi valori di energia superiori a 3,15 eV (la condizione più favorevole si verifica quando parte della regione del canale risulta essere in pinch-off). Dunque, l’incremento della tensione di drain determina un aumentano del numero di portatori caldi favorendone l’iniezione verso il gate; inoltre, valori elevati di tensione (VDS > VG − Vth ) portano il transistor in forte saturazione, creando dei picchi nel profilo del campo elettrico; ne consegue che la corrente di gate aumenta in modo esponenziale all’aumentare del potenziale di drain. La tensione di gate (VG ) deve essere elevata per creare la carica libera nel canale e per rendere il campo nell’ossido favorevole all’iniezione di elettroni, ma tale da non portare il transistor a lavorare in zona lineare (deve essere VG < VD + Vth ). 13 VG (5V) IS VD(5V) IG VS (0V) ID e1 Gate Ossido - SiO2 SiO2 Source n+ SiO2 E e1 e1 Drain n+ E p Substrato (Bulk) IB VB (0V) Figura 1.1: CHE: gli elettroni che viaggiano dal source al drain guadagnano energia per effetto del campo elettrico laterale. La zona di canale che consente una maggiore iniezione di portatori caldi attraverso l’ossido si colloca all’inizio della zona in pinch-off, ove molti elettroni hanno energia superiore a 3,2 eV ed il campo elettrico verticale è in direzione favorevole. Dalle considerazioni appena fatte si evince che la corrente di gate e quella di bulk presentano un andamento a “campana” al variare della tensione di gate (Fig. 1.2 e 1.3). Log (IG) IB Log (IB) IG VG Figura 1.2: In regime di CHE la IB e la IG hanno un tipico andamento a campana al variare della tensione di gate. Come detto nella sezione precedente, la barriera vista dalle lacune è più alta, inoltre quest’ultime, avendo massa maggiore, difficilmente raggiungono elevati valori di energia cinetica; di conseguenza l’iniezione delle lacune è molto meno efficiente. Il campo trasversale (ε⊥ ) è l’ele14 VG (5V) IS VD(5V) IG VS (0V) ID e1 e2 Gate Ossido - SiO2 SiO2 Source n+ SiO2 E e1 M1 e2 Drain n+ E h2 p Substrato (Bulk) IB VB (0V) Figura 1.3: Generazione di coppie elettrone-lacuna e iniezione di portatori caldi verso il gate. La IG è costituita dagli elettroni caldi che direttamente oltrepassano l’ossido (e1) e dagli elettroni secondari (e2) generati per impact ionization. Le lacune secondarie (h2) generano la IB e, alcune di esse, hanno energia sufficiente da raggiungere il gate. mento che più discrimina tra iniezione di lacune ed iniezione di elettroni. I due tipi di iniezioni hanno lo stesso ordine di grandezza solo per bassi valori di tensione applicata al gate. A causa del trade-off riscaldamento dei portatori e la probabilità di iniezione legata alla tensione di gate la corrente di gate è massima per un valore di VG ≈ VD /2. L’efficienza d’iniezione, come appena descritto, dipende molto dal campo elettrico laterale (εk ), che accelera gli elettroni nel canale, e dal campo elettrico nell’ossido (εox ) in prossimità del drain, che influenza la probabilità di tunneling (Pini (εox )) dei portatori caldi. La riduzione di VD riduce il campo elettrico εk e quindi la quantità di elettroni caldi disponibili e quindi la IG . Inoltre, durante la programmazione della cella di memoria, il potenziale del floating gate (VF G ) diminuisce progressivamente riducendo VOX e di conseguenza anche Pini (εox ). La riduzione di VF G provoca, inoltre, il calo della corrente nel canale (IDS ) andando ulteriormente ad ostacolare la velocità di programmazione. Per tali motivi l’efficienza d’iniezione del CHE risulta piuttosto bassa ed è dell’ordine di 10−5 . Dall’analisi dell’iniezione di elettroni nell’ossido incentivata dall’applicazione di una tensione di substrato, si è evidenziata una correlazione tra la corrente relativa di gate (IGR = IG /ID ) e la corrente relativa di bulk (IBR = IB /ID )3 , che è possibile modellare con [15][16][17]: · ¸α(εox ) IB IG = P (εox ) · , ID ID 3I G (1.5) e IB sono correlate perché entrambe dipendono in modo diretto dalla distribuzione dei portatori caldi generati nel canale dal campo elettrico laterale. 15 con: · α(εox ) = ¸ ΦB (εox ) , ΦII (1.6) dove εox rappresenta il campo elettrico nell’ossido nel punto di massima iniezione, P è un coefficiente dipendente dal campo elettrico, ΦB (εox ) è l’energia della barriera dell’ossido e Φk è l’energia di attivazione del processo di ionizzazione da impatto. L’esponente α è il rapporto tra le due energia di soglia e vale ' 2, 5, che è la pendenza della retta che si ottiene in un grafico bilogaritmico avente come assi IGR e IBR (Fig. 1.5). 1.1.2 Impact Ionization Feedback (IIF) e CHannel Initiated Secondary Electron (CHISEL) Nella cella di memoria Flash, nella zona vicino al drain dove il campo elettrico laterale è massimo, il campo elettrico verticale (ε⊥ ) diventa sfavorevole (VF G < VD ) provocando una diminuzione dell’efficienza di programmazione. Un aumento significativo della corrente di gate si può ottenere applicando una tensione negativa al substrato. L’applicazione della tensione al bulk ha i seguenti effetti: – aumenta la tensione di soglia del dispositivo effetto body e quindi riduce la carica di canale mandando ancor più in saturazione il transistor e favorendo l’insorgere di un campo elettrico più elevato che aumenta il numero di portatori caldi; – aumenta la differenza di potenziale tra canale e substrato e quindi il campo elettrico verticale (ε⊥ ), il quale innesca fenomeni alternativi di riscaldamento di portatori secondari e terziari [15]. Il campo elettrico laterale lungo il canale accelera gli elettroni i quali, una volta acquisita sufficiente energia, possono generare per Impact Ionization (II) coppie elettrone-lacuna. Le lacune prodotte, dirigendosi verso il bulk, possono acquisire, grazie al campo verticale, sufficiente energia [18] per poter impattare e generare un’ulteriore coppia elettrone-lacuna (Impact Ionization Feedback, IIF). Questi elettroni generati, detti anche elettroni terziari, possono essere accelerati dal campo verticale verso l’interfaccia acquisendo notevole energia e quindi, possono essere in grado di superare la barriera energetica tra ossido e silicio. Facendo riferimento alla Figura 1.4, M1 ed M2 rappresentano i due eventi di ionizzazione. La probabilità che un elettrone sia iniettato verso il gate è proporzionale alla probabilità PM 2 (ε⊥ ) che esso sia generato da una lacuna calda, ma poiché quest’ultima nasce da una ionizzazione da impatto (M1), tale probabilità dipendente a sua volta dalla probabilità PM 1 (εk ) di accadimento di questo primo evento. La corrente di gate IG può quindi essere espressa come il prodotto della corrente di drain ID (che rappresenta la quantità di cariche libere disponibili) per le due funzioni di probabilità dipendenti dai due campi elettrici presenti e per la probabilità di passare attraverso l’ossido Pini (ε⊥ ): IG = ID · PM 1 (εk ) · PM 2 (ε⊥ ) · Pini (ε⊥ ) (1.7) La corrente di bulk è formata dalle lacune secondarie generate al drain dopo l’evento di ionizzazione M1 (§1.1.1); si può quindi esprimere come: IB = ID · PM 1 (εk ) 16 (1.8) VG (5V) IS VD(4V) IG VS (0V) ID e3 Gate Ossido - SiO2 SiO2 Source n+ SiO2 E M1 e1 h2 M2 Drain n+ E p Substrato (Bulk) VB (-1V) IB Figura 1.4: CHISEL: iniezione di elettroni terziari attraverso l’ossido. l’elettrone di canale genera per II (evento di ionizzazione M1) coppie elettrone-lacuna. La lacuna generata viene riscaldata dal campo elettrico verticale e genera a sua volta per II (evento di ionizzazione M2) ulteriori coppie elettrone-lacuna. Gli elettroni generati (detti anche terziari o da substrato) vengono attratti verso l’interfaccia; quelli che riescono ad avere energie sufficienti possono oltrepassare l’ossido contribuendo alla corrente di gate. Utilizzando il coefficiente di moltiplicazione delle lacune nel substrato (Mp ) si ottiene una funzione che evidenzia la proporzionalità esistente, in regime CHISEL, tra corrente di gate e corrente di substrato: IG = IB (εk ) · [Mp (ε⊥ ) − 1] · Pini (ε⊥ ) (1.9) In generale, la corrente di gate è la somma dei contributi apportati dal CHE e dal CHISEL: IGR = P (εox ) · IBR α(εox ) + CB (ε⊥ ) · IBR (1.10) Come si può vedere, i due termini dipendono da IBR in modo diverso. In Fig. 1.5 sono riportate le correnti IG e IB misurate al variare di VB . Applicando tensioni di bulk via via più elevate, il passaggio dal regime di CHE a quello di CHISEL si esplica in una variazione della pendenza della retta IGR − IBR , la quale parte da un valore prossimo a 2,5 (corrente dominata dal CHE) fino ad arrivare gradatamente ad un valore di 1,0 (corrente dominata dal CHISEL). 17 .5 -11 CHISEL =2 VB=0 |VB|=1.5 |VB|=2.0 |VB|=2.5 IG [A] 10 -10 pe 10 10 slo 1.0 e= slop -12 VG =3.5 VD=4.0 CHE 10 VS=-0.3 ¸ 0.3 -13 10 -5 10 -4 IB [A] Figura 1.5: Correlazione tra correnti di gate e di substrato in un transistor nMOS polarizzato in regime di CHE (cerchi) e di CHISEL (simboli pieni). Si nota che, aumentando la VB la pendenza della retta IGR − IBR varia da un valore prossimo a 2,5 (CHE) fino ad arrivare gradatamente ad un valore di 1,0 (CHISEL). 1.2 La cella BipFlash La figura 1.6 mostra una sezione della cella BipFlash4 ; si nota subito che la struttura corrisponde a quella di una classica cella Flash a gate flottante ove è stata aggiunta, nella diffusione di drain, una sottile regione p+ (emettitore) utile a creare un transistore bipolare pnp. L’operazione di scrittura di questa cella risulta cambiare notevolmente, mentre Le operazioni di cancellazione e di lettura restano sostanzialmente invariate, a condizione di lasciare il contatto dell’emettitore o flottante o cortocircuitato con quello di drain. 1.2.1 Principio di funzionamento della cella Come già descritto nell’introduzione, la cella BipFlash utilizza un nuovo meccanismo di scrittura. In programmazione il source ed il drain sono collegati assieme e polarizzati in inversa rispetto al substrato (VS = VD > VB ); la tensione di gate applicata deve essere sufficientemente alta da portare il potenziale del floating gate ad un valore maggiore di quello di drain (VF G > VD ). L’emettitore deve essere polarizzato in diretta rispetto al drain (VEM − VD = Vγ ≈ (0, 4 ÷ 0, 6)V ) cosicché le lacune si possano diffondere dall’emettitore alla regione di drain e, se la zona è sufficientemente stretta (ossia minore della lunghezza di diffusione delle lacune), possano evitare la ricombinazione in base e raggiungere il substrato (collettore); tutto ciò in accordo con la teoria del transistor bipolare (BJT) [19] [20]. Una frazione delle lacune attraversa la zona di svuotamento sotto il canale della cella e, per mezzo dell’elevato campo elettrico verticale generato dall’applicazione di una tensione di substrato, acquisisce sufficiente energia da creare 4 Le considerazioni, le simulazioni, i grafici, i riferimenti riguardanti la cella BipFlash riportati qui di seguito sono tratti da [11][12][13][14]. 18 VG VS=Vd VEM Control Gate VD IEM PolySi n+ Floating Gate SiO2 Source n+ VEM ID Ossido interpoly - ONO IEM VD ID PolySi n+ SiO2 Ossido di tunnel - SiO2 canale p+ PB Drain n- n+ (Mp-1) p Substrato (Bulk) VB IB IB VB Figura 1.6: Sezione della cella BipFlash durante la fase di programmazione. PB è la probabilità d’iniezione nel gate degli elettroni secondari generati nel bulk; Mp è il coefficiente di moltiplicazione delle lacune nel substrato. Il transistor bipolare pnp è formato dalla zona p+ (emettitore), dalla regione n-, estensione della zona di drain (base), e dal substrato p (collettore). coppie elettrone-lacune per ionizzazione da impatto. Gli elettroni generati vengono a loro volta accelerati verso l’interfaccia Si − SiO2 , ed alcuni di essi riescono a superare la barriera creata dall’ossido ed ad arrivare al gate; in questo caso la corrente di gate è generata da elettroni secondari. É evidente che con queste condizioni di programmazione non vi è corrente di canale nella cella; la corrente più elevata è quella di substrato, somma della componente dovuta alle lacune iniettate nel substrato con quella generata dalle lacune provenienti dalla II. Tabella 1.1: Valori tipici delle tensioni in lettura ed in programmazione per la cella BipFlash. Programmazione Lettura 1.2.2 VCG [VD − VS ] [VD − VB ] VEM − VD 8–12 V 5–6 V 0V 1,0 V 2,5–5 V 1,0 V Vγ 0 o EM flot. Espressione analitica per l’efficienza d’iniezione Facendo riferimento alla Fig. 1.6 e trascurando il termine di corrente dovuto alla ricombinazione, possiamo esprimere la corrente d’emettitore come la somma di un termine dovuto alla diffusione (EM ) delle lacune Ih e di uno generato dalla ricombinazione degli elettroni che si diffondono dal drain all’emettitore (zona p+) [21] [20]: (EM ) IEM = Ih 19 (EM ) + Irec ; (1.11) Essendo Mp il coefficiente di moltiplicazione delle lacune iniettate nel substrato, possiamo scrivere la componente di corrente di lacune generata da II nella regione svuotata come: (EM ) Ih,ion = (Mp − 1) · Ih (1.12) così le correnti di drain e di substrato possono essere riscritte come: (EM ) IB = M p · Ih (1.13) (EM ) (EM ) − (Mp − 1) · Ih ID = Irec . (1.14) Trascurando la corrente associata al movimento degli elettroni minoritari che dal collettore si muovono verso la base (corrente inversa della giunzione), il guadagno di corrente di base comune del transistore è: (EM ) hF B = I Icoll = (EM )h (EM ) IEM Ih + Irec (1.15) (EM ) Usando le equazioni 1.13 e 1.15 e scrivendo IEM = Ih /hF B si osserva che IB è la corrente −1 più elevata nel dispositivo solo se Mp < hF B . Se indichiamo con PB la probabilità di iniezione per gli elettroni secondari (come illustrato in Fig. 1.6), la corrente di gate è: (EM ) IG = PB · (Mp − 1) · Ih . (1.16) Possiamo esprimere l’efficienza della cella, definita come rapporto tra la corrente di gate e la più elevata tra le correnti agli altri morsetti: IG = PB · η= IB µ Mp − 1 Mp ¶ (1.17) valida nel caso in cui IB sia la corrente più elevata, cioè per Mp > h−1 F B . In queste condizioni l’efficienza è indipendente dal guadagno del BJT, inoltre IG /IB aumenta di poco con Mp > 1, 2. Abbiamo visto (Eq. 1.9) che l’efficienza di iniezione in regime CHISEL vale IG /ID = [Mp (ε⊥ ) − 1]· PB (ε⊥ ) · IB /ID . Il rapporto tra le due efficienze vale quindi [Mp · (IB /ID )]−1 . Poiché per i tipici valori di Mp compresi tra 1 e 2 si ha certamente Mp · (IB /ID ) ¿ 1 la cella BipFlash ha un’efficienza di iniezione sicuramente superiore a quella di una cella CHISEL. Per valori tipici di IB /ID ≈ 10−2 si osserva (Fig. 1.7) che, a parità di PB , l’efficienza di iniezione della BipFlash è molto più alta di quella del meccanismo di CHISEL per tutti i valori di MP di interesse pratico. Invece, se hF B è così basso che Mp < h−1 F B la corrente più elevata è IEM , e l’efficienza diventa: 20 0 (Mp-1)/Mp or (Mp-1)x[IB/ID] 10 -1 10 [IB/ID]=1x10 -2 10 -2 -3 10 (Mp-1)/Mp (BipFlash) (Mp-1)x[IB/ID] (CHISEL) -4 10 1.0 1.1 1.2 1.3 1.4 1.5 Mp Figura 1.7: Incremento di efficienza della BipFlash η= 1.3 IG = PB · (MP − 1) · hF B . IEM (1.18) Criteri per l’ottimizzazione della cella Le considerazioni fatte sono semplificate; l’aver assunto solo due parametri (MP e PB ) ed averli usati per confrontare le efficienze dei vari regimi di iniezione potrebbe risultare non corretto. In [11][12][13][14] sono state eseguite simulazioni numeriche 2D (modello Monte Carlo [22]) del trasporto degli elettroni e delle lacune, che mostrano valori più attendibili per la corrente di gate e per l’efficienza d’iniezione . Le simulazioni numeriche 2D sono state svolte utilizzando il transistor equivalente della cella, la cui geometria è illustrata in Fig. 1.8. Come si nota dall’equazione (1.16) la frazione della corrente di emettitore utile all’iniezione (EM ) di elettroni caldi è IH , inoltre, al fine di ottenere un’elevata efficienza d’iniezione della cella ed anche una maggiore selettività dell’operazione di scrittura, il flusso delle lacune dev’essere diretto il più possibile verso il canale del transistore. A tale scopo è stata utilizzata una doppia diffusione n-/n+ (Figg. 1.6 e 1.8) in grado di generare un gradiente laterale di doping, e quindi di tensione di built-in, al di sotto dell’emettitore; viene così favorito il passaggio delle lacune attraverso la zona n-, a discapito di quella n+. La Fig. 1.10 riporta l’integrale della densità della corrente di emettitore, calcolato tramite simulazione, lungo il suo perimetro (come indicato in Fig. 1.9) e illustra anche l’effetto dell’aumento della concentrazione nella regione n- sulla distribuzione spaziale della corrente sotto l’emettitore, dimostrando come concentrazioni di n- inferiori a 1019 cm−3 consentano di confinare più dell’80% della corrente nella regione a basso drogaggio, mentre concentrazioni di nsuperiori a circa 1018 cm−3 appaiono invece auspicabili al fine di limitare la resistenza serie 21 VG Ljp+ VS Ljn+ VEM VD Floating Gate Source Drain n- n+ p+ Xjn+ Xjn- tox Xjp+ SiO2 n+ Ljn- Lmett Substrato (Bulk) Tipo-P: Na VB tox (nm) Na (cm-3) Xjn+ (µm) Xjn(µm) Xjp+ (µm) Lmett (µm) Ljn+ (µm) Ljp+ (µm) Ljn(µm) 10 1018 0,33 0,3 0,15 0,4 0,3 0,3 0,15 Figura 1.8: Sezione verticale del transistor equivalente usato per le simulazioni numeriche della cella BipFlash. VEM VD SiO2 p+ Drain nn+ Figura 1.9: Curva, attorno all’emettitore, lungo la quale è stata calcolata la densità di corrente delle lacune. della regione n- e quindi la riduzione della corrente di lettura della cella (Fig. 1.11). Un’altro punto critico della struttura della BipFlash deriva dalla possibile formazione di un transistor pMOS parassita, che come source/drain l’emettitore e il collettore e come substrato, la diffusione di drain della cella. Se il floating gate sovrasta interamente la diffusione della base (Fig.1.12) e se VD > VF G , il pMOS parassita passa in conduzione, cortocircuitando il transistor BJT. Al fine di evitare l’accensione del pMOS è importante che l’elettrodo di floating gate non si sovrapponga totalmente alla regione della base. Ciò potrebbe richiedere la realizzazione dell’emettitore a valle della formazione di un opportuno spacer, in grado di distanziarlo rispetto al bordo del floating gate. Queste considerazioni sono state confermate da simulazioni numeriche (Fig. 1.13) [11][12][13][14]. 22 Normalized Intergral of Hole Current 1.0 VB=2.0 VG=7.0 0.8 VS=VD=3.0 VEM=3.8 NA,ch=8e17 0.6 N+ NN- peak: 1e18 N- peak: 3e18 N- peak: 6e18 N- peak: 1e19 0.4 0.2 0.0 0.0 Corner 0.1 0.2 0.3 0.4 Distance along the Emitter 0.5 Figura 1.10: La curva rappresenta l’integrale della densità di corrente delle lacune (normalizzata alla IE totale), calcolato lungo il perimetro dell’emettitore, in funzione del drogaggio della regione n-. Si nota che per N − ' 7 · 1018 cm−3 un’elevata frazione (> 80%) della IE è iniettata attraverso la zona di contatto p+n-. 250 VDS=1.0 VB=0 NA,ch=8e17 IDS [mA] 200 150 100 N- peak: 1e18 N- peak: 3e18 N- peak: 6e18 N- peak: 1e19 50 0 0.0 1.0 2.0 VG [V] 3.0 4.0 Figura 1.11: La concentrazione di drogante nella zona n- rappresenta un trade-off tra elevata direzionalità di iniezione per le lacune (zona n- poco drogata), e bassa resistenza serie (zona nmolto drogata). L’inserimento dell’estensione n- ed il vincolo imposto dal dover evitare la sovrapposizione tra l’elettrodo floating gate e la diffusione n-, giustificano la struttura della cella illustrata in Fig. 1.6. 23 VEM VD p+ Drain nn+ Zona n- con il gate sovrapposto Figura 1.12: Se il floating gate sovrasta completamente la zona n- (FG tratteggiato), si crea un transistor pMOS parassita in grado di cortocircuitare il BJT. -4 Non-Fully Overl.: VD=3.0 Fully Overl. N-=1e19: VD=3.5 Fully Overl.. N-=1e18: VD=3.5 10 IEM [A] -5 10 -6 10 0.0 2.0 4.0 VG [V] 6.0 8.0 Figura 1.13: Se il floating gate sovrasta la regione n-, a bassi valori di VF G , il transistor parassita pMOS cortocircuita il bipolare dando origine ad una corrente di emettitore. Viceversa, nel caso di diffusione n- non sovrastata dal floating gate, la corrente IEM è completamente assente. 1.4 Prestazioni previste della cella Le simulazioni [11][12][13][14] hanno mostrato che Mp > h−1 F B , quindi, in accordo con l’equazione (1.17), l’efficienza della BipFlash, a cui si farà riferimento nel prosieguo del capitolo, può essere rappresentata da η = IG /IB . 1.4.1 Simulazioni numeriche dell’efficienza d’iniezione La Fig. 1.14 mostra l’efficienza in funzione della VD = VS ; come si può vedere, per una data (VF G − VD ), η è unicamente funzione di VDB = VD − VB . Viene inoltre dimostrata la possibilità di ottenere efficienze superiori a 10−4 con tensioni VD = VS inferiori a 3,3 V anche in assenza di tensione di substrato. Si noti infine che, anche per basse tensioni VDB , l’efficienza della cella è molto più alta di quella tipica del CHE (≈ 10−5 con VD ' 4). 24 Efficiency [IG/IBULK] 10 -2 10 -3 10 -4 10 -5 10 -6 10 -7 VG=7.0 [IG/IBULK] at |VB|=2.0 [IG/IBULK] at |VB|=0.0 1.0 2.0 3.0 4.0 VS=VD [V] Figura 1.14: Efficienza d’iniezione in funzione di VD = VS . Per un dato (VF G −VD ), l’efficienza dipende unicamente da (VF G − VD ). Le Figg. 1.15 e 1.16 dimostrano che diminuendo la VG è possibile ottenere un drastico calo dell’efficienza d’iniezione e quindi è possibile sopprimere completamente la programmazione nelle celle sulla medesima bit-line per mezzo di una tensione nulla sulle word-line non indirizzate. Il calo di IG /IB per bassi valori di VF G si può spiegare nel seguente modo: se VF G cala al di sotto di VD + VT , ove VT rappresenta la tensione di soglia a cui è stato sommato l’eventuale contributo apportato dall’effetto body, il potenziale all’interfaccia Si − SiO2 diminuisce, riducendo la differenza di potenziale tra substrato ed interfaccia, che è fondamentale per l’iniezione degli elettroni. Siccome VB apporta un notevole contributo al salto di potenziale, nelle curve con VB = 0 (Fig. 1.15), il calo dell’efficienza per VF G < VD è molto più repentino. Assumendo una corrente d’iniezione di IB = 10 µA (Fig. 1.16) queste efficienze si traducono in velocità di scrittura da frazioni di volt a decine di volt per microsecondo. In Fig. 1.17 viene comparata l’efficienza d’iniezione con quella di una Flash convenzionale. Si può notare come, per una data struttura della cella, la programmazione della BipFlash sia circa cento volte più efficiente del CHE. Dalle equazioni (1.13), (1.14) e (1.16) è evidente che sia IG (e quindi la velocità di programmazione) che IB sono proporzionali ad IEM , per ogni valore di IEM ove hF B risulta essere costante. Simulazioni hanno confermato questa proporzionalità [11][12][13][14]. La Fig. 1.18 mostra la corrente di gate al variare della corrente di bulk; come si può notare IG è proporzionale a IB , e quindi, per una data efficienza, si possono ottenere differenti velocità di programmazione al variare di IG . 1.4.2 Simulazioni numeriche delle caratteristiche di programmazione Una volta ricavate, tramite simulazione numerica, le caratteristiche di IG = f (VF G ), si possono calcolare le curve di programmazione. Durante l’operazione di scrittura della cella, dove VD , VB e quindi IEM sono costanti, l’equazione che governa il transitorio della tensione del floating gate è data da [23][24]: 25 Efficiency [IG/IBULK] 10 -2 10 -3 10 -4 10 -5 10 -6 10 -7 10 -8 10 -9 10 |VB|=2.0 VS=VD=3.0 |VB|=0.0 VS=VD=3.3 |VB|=0.0 VS=VD=2.5 -10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 VFG [V] 10 2 10 2 10 1 10 1 10 0 10 0 10 -1 10 -1 10 -2 10 -2 10 -3 10 -4 Ibulk=10mA 1.0 2.0 3.0 4.0 |VB|=2.0 VS=VD=3.0 -3 |VB|=0.0 VS=VD=3.3 10 |VB|=0.0 VS=VD=2.5 -4 10 5.0 6.0 [DVT/Dt] [V/ms] for Cpp=1fF IG [nA] Figura 1.15: Efficienza d’iniezione in funzione di VF G . Il calo della IG per bassi valori di VF G dimostra la possibilità di sopprimere l’iniezione, tramite la tensione della word-line (VG ), nelle celle non selezionate. 7.0 VFG [V] Figura 1.16: Elevate efficienze si traducono in elevate velocità di scrittura. IG [VF G (t)] dVF G = −αCG , dt Cpp (1.19) dove Cpp è la capacità inter-poly ed αCG è il coefficiente di accoppiamento [25] tra control e floating gate. L’equazione (1.19) è del tipo differenziale e può essere risolta numericamente con il metodo di Runge-Kutta con un valore iniziale per la tensione di floating-gate di: VF G0 |t=0 = VTF G + αCG (VCG − VT0 ) + αD VD + αS VS . 26 (1.20) Efficiencies: [IG/ID] or [IG/IBULK] 10 -2 10 -3 10 -4 10 -5 10 -6 10 -7 10 -8 10 -9 10 Convent. Cell [IG/ID] BipFlash [IG/IBULK] |VB|=2.0 VD=3.0 |VB|=0.0 VD=3.3 -10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 VG [V] IG [nA] Figura 1.17: Comparazione fra efficienze simulate: BipFlash Vs. cella convenzionale. Si può notare che, per una data struttura di cella, la BipFlash è molto più efficiente di una Flash convenzionale. 10 2 10 1 10 0 10 VS=VD=3.0 |VB|=2.0 NA,ch=1e18 VG=7.0 VG=2.0 -1 10 0 1 10 Ibulk=[Iem+Iionh] [mA] 10 2 Figura 1.18: La corrente di gate e quindi la velocità di programmazione siano proporzionali alla corrente iniettata dall’emettitore. Nell’equazione (1.20) VTF G è la tensione di soglia vista al floating gate, αD (αS ) sono i coefficienti di accoppiamento tra floating gate e drain (source), e se con QF G0 indichiamo la carica presente al floating gate al tempo zero, allora la tensione iniziale è VT0 = VTF G /αCG − QF G0 /Cpp . La soluzione del’equazione (1.19) fornisce anche il valore, in funzione del tempo, della corrente di gate IG [VF G (t)]. La tensione di soglia può essere calcolata come: 27 VT (t) = VT0 QF G (t) 1 − = VT0 + Cpp Cpp Z t IG [VF G (η)] dη (1.21) 0 Le Figg. 1.19, 1.20, 1.21 rappresentano curve di programmazione calcolate relativamente a diverse condizioni di polarizzazione e per valori tipici dei parametri caratteristici. Esse dimostrano la possibilità di ottenere tempi di programmazione decisamente inferiori al microsecondo in applicazioni ad alta velocità, o tempi di programmazione di (1 ÷ 10) µs in assenza di tensioni di substrato e con tensioni di drain di (2, 5 ÷ 3, 3) V . Questo schema di polarizzazione consentirebbe di derivare la tensione di bitline di scrittura direttamente dall’alimentazione del chip riducendo quindi il numero di pompe di carica necessarie per il funzionamento della memoria. Cpp=1fF VT-fg=2.0 afg=0.6 afd=0.1 VS=VD=2.5 |VB|=0.0 5.0 [VT-VT0] [V] 4.0 3.0 Ibulk=10mA 2.0 VCG=11 VCG=11.5 VCG=12 1.0 0.0 0 1 10 10 Time [ms] Figura 1.19: Curve di programmazione, IE = 10 µA, VD = 2, 5 V e VB = 0 V . Con αCG = 0, 6, αD = 0, 1, Cpp = 1 f F 1.5 Layout della cella e organizzazione a matrice La struttura della cella BipFlash è stata realizzata cercando di ottimizzare l’occupazione di spazio, e cercando di mantenere la compatibilità con i processi della tecnologia standard delle celle Flash. In Fig. 1.22 è rappresentato il layout fisico della cella BipFlash e come si può notare, la struttura è stata realizzata accoppiando due celle aventi in comune il contatto di drain. Si nota inoltre come la diffusione p+ dell’emettitore sia stata ricavata all’interno della regione di drain. La forma “ad S” dell’area attiva permette di realizzare una matrice di celle aventi in comune, alternativamente, il contatto di drain o quello di source, ottimizzando così lo spazio occupato da ciascuna cella all’interno della matrice di memoria. In generale, affinché un nuovo tipo di struttura di cella possa trovar impiego nella realizzazione di memorie, deve esistere anche un’architettura circuitale in grado di permetterne 28 Cpp=1fF afg=0.6 VT-fg=2.0 afd=0.1 VS=VD=3.0 |VB|=2.0 5.0 [VT-VT0] [V] 4.0 3.0 Ibulk=10mA 2.0 VCG=8.0 VCG=9.0 VCG=10 1.0 0.0 -2 -1 10 0 10 10 Time [ms] Figura 1.20: Curve di programmazione, IE = 10 µA, VD = 3, 0 V e VB = 2, 0 V . Con αCG = 0, 6, αD = 0, 1, Cpp = 1 f F Cpp=1fF VT-fg=2.0 afg=0.6 afd=0.1 VS=VD=3.3 |VB|=0.0 5.0 [VT-VT0] [V] 4.0 3.0 Ibulk=10mA 2.0 VCG=9.0 VCG=10 VCG=11 1.0 0.0 -1 10 10 0 1 10 Time [ms] Figura 1.21: Curve di programmazione, IE = 10 µA, VD = 3, 3 V e VB = 0 V . Con αCG = 0, 6, αD = 0, 1, Cpp = 1 f F l’indirizzamento e la programmazione, e di evitare, nel contempo, l’alterazione dello stato di celle della stessa riga o colonna. Per la cella BipFlash un’architettura con tali requisiti è proposta in Fig. 1.23. Rispetto alla tipica configurazione a matrice, realizzata solamente con bit-line e word-line, in questa soluzione è stata aggiunga una emitter-line che collega le diffusioni p+ delle celle appartenenti ad una medesima word-line. Inoltre una source-line, parallela alla bit-line, mette in contatto le diffusioni di source delle celle. Questa struttura a matrice assicura la selettività della 29 programmazione, infatti, permette di polarizzare in diretta solamente gli emettitori delle celle indirizzate per la programmazione. La struttura della cella BipFlash permette di mantenere un’elevata compatibilità con i processi tecnologici relativi alle Flash ed ai MOS, e quindi risulta essere una memoria particolarmente adatta ad applicazioni di tipo embedded. Rispetto alla tecnologia Flash standard, la realizzazione della cella BipFlash richiede solamente due maschere aggiuntive: la prima per creare la diffusione p+ dell’emettitore, e la seconda per aumentare il livello di drogaggio della regione di drain e realizzare la regione n+ utile a confinare la corrente di lacune iniettata nella zona del canale (Fig. 1.9). i-ma cella Source Poly 2 - Word line p+ Drain Source Figura 1.22: Layout della cella di memoria della BipFlash. Figura 1.23: Organizzazione a matrice delle celle BipFlash 30 Capitolo 2 Setup automatici di misura e strumenti utilizzati La caratterizzazione sperimentale dei dispositivi BipFlash forniti su wafer dalla ST Microelectronics ha richiesto l’utilizzo di strumenti e setup di misura estremamente accurati. In particolare ha necessitato: • l’utilizzo di opportuni strumenti di misura, quali l’analizzatore di parametri Agilent 4156C (§2.1.2); • lo sviluppo di programmi in linguaggio IBASIC (§2.2) da far girare in locale sull’Agilent 4156C per la determinazione delle caratteristiche statiche (§3.2) della cella; • lo sviluppo di un software (§2.3.2), chiamato “Lab-04”, su calcolatore, per il controllo in remoto degli strumenti e la gestione semiautomatica dei setup di misurazione finalizzati alla determinazione delle caratteristiche dinamiche della cella (§3.3.1). 2.1 Strumenti utilizzati ST Microelectronics ha fornito celle e transistor equivalenti realizzati direttamente su wafer, quindi per effettuare le misurazioni si è utilizzato un manipolatore micrometrico (probe station) Cascade Microtech Summit 12000, totalmente schermato tramite una cassa metallica (shielding box ) per evitare che l’ambiente esterno pregiudicasse l’attendibilità delle misure. Il manipolatore è dotato di microscopio ottico mediante il quale è possibile posizionare le micropunte (niddle) schermate e contattare i pad dei dispositivi da caratterizzare (DUT1 ). Tutte le punte sono dotate di connettori per poterle collegare agli strumenti e misurare il segnale. In Fig. 2.1 sono mostrate alcune foto relative alla probe-station e alle micropunte (niddle). Per la caratterizzazione statica si sono quindi utilizzati la probe-station e l’analizzatore di dispositivi a semiconduttore Agilent 4156C; invece per la determinazione delle caratteristiche dinamiche dei dispositivi si è reso necessario l’utilizzo di un calcolatore e di un software in grado sia di gestire in modo interattivo e in parte automatico diversi setup di misura, che di elaborare istantaneamente i dati. In Fig. 2.3 viene riportata una foto della configurazione degli strumenti utilizzati nelle due fasi di lavoro. 1 DUT: Device Under Test 31 Figura 2.1: Da sinistra verso destra: foto della probe station, si può notare la shielding box ove viene inserito il wafer; foto di sei manipolatori micrometrici; foto di tre tipi di micropunte (niddle) usate per mettere in contatto i pad dei dispositivi realizzati su wafer. 2.1.1 Agilent 4156 C - Precision Semiconductor Parameter Analyzer L’Agilent 4156C (Fig. 2.2) è stato utilizzato sia per la determinazione delle caratteristiche statiche che di quelle dinamiche ed è quindi stato uno strumento fondamentale per la parte sperimentale del presente lavoro. L’Agilent 4156C è uno strumento di precisione per la determinazione dei parametri dei dispositivi a semiconduttore; permette la misurazione di tensioni e correnti, l’analisi, l’elaborazione e la visualizzazione grafica delle caratteristiche di una grande varietà di dispositivi elettrici a più terminali (ad esempio diodi, transitor bipolari, FET, MOS, ...). Lo strumento rende disponibili quattro unità sorgenti e di misura programmabili (SMU2 ), due unità di pilotaggio in tensione (VSU3 ), due unità di misura di tensione (VMU4 ), due unità per la generazione d’impulsi (PGU5 ) ed una unità sorgente di tensione a 0 V (GNDU6 ). Tra tutte le unità dello strumento utilizzabili per le misurazioni, le SMU sono di gran lunga le più importanti in quanto possono essere programmate nei seguenti modi: • come generatori di tensione e contemporaneamente misuratori di corrente; • come generatori di corrente e contemporaneamente misuratori di tensione; • come connessioni a massa (COM). Inoltre le SMU possono svolgere diverse funzioni, ad esempio possono essere sorgenti di tensione o di corrente costante (rispetto ad un riferimento fisso o variabile) o fatte variare linearmente o logaritmicamente in un range programmabile (Sweep Mode), in modo da poter misurare, in modo parametrico, le caratteristiche statiche dei dispositivi. Quest’ultime possono essere immediatamente analizzate, elaborate, visualizzate su display lcd o trasferite ad una qualunque delle periferiche collegabili allo strumento. Lo strumento può essere utilizzato per effettuare misurazioni o per imporre delle condizioni di “stress”. In particolare l’Agilent consente di fare io seguenti tipi di misurazione: • Sweep measurements. In questa modalità di misurazione alcuni canali impongono correnti o tensioni variabili in modo lineare o logaritmico; altri canali vengono utilizzati per 2 SMU Source Measurement Unit Voltage Source Unit 4 VMU Voltage Monitor Unit. Le due VMU permettono la misura o di due tensioni riferite a massa o di una differenziale (VMU1±VMU2). 5 PGU Pulse Generator Unit 6 GNDU Ground unit 3 VSU 32 Figura 2.2: Foto dello strumento Agilent 4156 C. misurare, per ogni incremento delle grandezze imposte, altre correnti o tensioni. Le caratteristiche statiche dei dispositivi BipFlash sono state ricavate utilizzando lo strumento in questa modalità di misurazione. Nel programma LAB-04 (§2.3.2) vengono completamente emulati tutti i menù dello strumento relativi a questa tipologia di misurazione. • Knob Sweep measurements. É una tipologia simile alla precedente ma si differenzia per il fatto che la grandezza indipendente viene fatta variare mediante la rotazione di una manopola. Questo tipo di modalità può essere utile per la realizzazione di misurazioni rapide. • Sampling measurements. Permette il campionamento di correnti e di tensioni nel DUT, provocate o da una polarizzazione costante o dall’applicazione d’impulsi di corrente o di tensione. • Quasi-static C-V measurements. In questo tipo è possibile fare misure di capacità tramite rampe di tensione. In modalità stress invece lo strumento permette di imporre per un determinato tempo, una polarizzazione costante oppure un treno d’impulsi di tensione o di corrente. Questa modalità è stata utilizzata per la scrittura e la cancellazione delle celle di memoria BipFlash. Nel programma Lab-04 sono riprodotti tutti i menù relativi anche a questo tipo di funzionamento. Le unità SMU, VSU, VMU e parte delle PGU sono disponibili su cavo triassiale che garantisce un’elevatissima immunità alle perdite rispetto ai normali cavi biassiali. Lo strumento misura correnti dell’ordine del femto ampere, inoltre è dotato di diversi sistemi di sicurezza che impediscono di danneggiare il DUT e preservano da eventuali errori di misura determinati da errori di setup. Lo strumento offre molteplici possibilità d’interfacciamento con altri strumenti o periferiche; ad esempio tramite connettore RJ45 è possibile inserire l’Agilent 4156C in una rete ethernet. In questo modo, tramite server NFS, è possibile salvare in rete o stampare, se in rete è presente una periferica di stampa, i setup delle misurazioni, i dati letti e le configurazioni dello strumento. In assenza del collegamento di rete questi dati possono essere comunque salvati in locale su floppy disk. Un’altro caratteristica di rilievo dello strumento, è la possibilità di editare ed eseguire programmi in linguaggio IBASIC. La programmazione è facilitata dall’integrazione di diverse funzioni d’aiuto e di debugging, quali il richiamo della sintassi di tutti i comandi disponibili, l’editing di microcodici associabili in modo rapido ai tasti multifunzione dello strumento e l’esecuzione dei programmi con avanzamento riga per riga. Infine i listati dei programmi possono essere salvati e caricati in locale su floppy o in una directory in rete. 33 Lo strumento possiede un controller GPIB (§2.3.1) programmabile, quindi può essere collegato ad altri strumenti grazie al bus GPIB, sia come semplice listener che come system controller, ciò gli permette un controllo autonomo sugli altri strumenti presenti sul BUS. É dunque possibile tramite programmi IBASIC impostare i parametri del sistema (scheda controller, stato del BUS, indirizzi primari e secondari, tempi di timeout, etc.) ed automatizzare le misurazioni degli strumenti utilizzando trigger fisici e/o software e/o stati particolari in cui si trovano gli strumenti stessi (ad es. stato di fine misurazioni, stato di timeout, risposte di polling). Pur potendo lo strumento svolgere direttamente il ruolo di system controller, i programmi IBASIC utilizzati in tale configurazione per gestire gli altri strumenti ed elaborare i dati risultano avere una complessità logica limitata, è dunque preferibile optare per un BUS GPIB ove il controller è implementato dalla scheda inserita in un calcolatore; in questo caso infatti le possibilità di pilotare ed automatizzare setup di misura molto complessi offerte dai diversi linguaggi di programmazione risultano notevolmente superiori. In Appendice A.1 si riportano le caratteristiche elettriche delle unità. 2.1.2 Tektronix TDS520B - Oscilloscopio 2Ch, 500MHz, 1GSymbol/s Il Tektronix TDS520B è un oscilloscopio digitale a memoria a 2 canali con larghezza di banda di 500 MHz. Siccome la programmazione e la cancellazione delle celle di memoria avviene tramite l’invio di impulsi di tensione ai vari terminali della cella, l’oscilloscopio è stato utilizzato per visualizzare le forme d’onda delle tensioni presenti effettivamente ai pad dei dispositivi e per assicurarsi della qualità degli impulsi di corrente applicati all’emettitore dall’Agilent 4156C durante la fase di programmazione. Tramite il programma Lab-04 è stato possibile importare, elaborare e salvare i dati relativi sia alle forme d’onda visualizzate dallo strumento che alle misure selezionate. In Appendice A.2 si riportano le caratteristiche tecniche dello strumento. 34 2.2 Programmi in IBASIC Vengono di seguito elencati, a titolo di esempio, due programmi scritti in linguaggio IBASIC utilizzati per la determinazione di alcune caratteristiche statiche tramite lo strumento Agilent 4156C. • Il programma isoglia.txt permette di determinare le variazioni di soglia Vth e della trasconduttanza gm del transistor equivalente della BipFlash, in funzione della corrente d’iniezione IE e della tensione di substrato VB . Valori elevati di corrente di emettitore (IE ) e di tensione al substrato (VB ) innescano meccanismi di iniezione di portatori attraverso l’ossido di gate; questi elettroni, e lacune, aventi generalmente elevate energia, possono deteriorare la struttura del SiO2 in diversi modi, ad esempio creando nuovi stati energetici detti stati trappola. Questi fenomeni, alterando il profilo della barriera di potenziale dell’ossido, modificano parametri caratteristici del transistor MOSFET, in particolare provocano un incremento della tensione di soglia (Vth ) ed una riduzione della trasconduttanza (gm). Il programma, dopo aver inizializzato le opportune variabili ed aver carico in memoria i file di configurazione delle misurazioni, esegue una prima misura della tensione di soglia (Vth0 ) e della trasconduttanza (gm0 ) con VB = 0 V e IE = 0 A; dopodiché, reiterando il procedimento, imposta un valore inferiore per VB (ad es. -1V) ed esegue misure di Vth e gm al variare della corrente di emettitore. Il ciclo viene interrotto non appena la variazione della tensione di soglia (∆Vth = Vth − Vth0 ) risulta maggiore di un determinato valore. Con questo programma è stato possibile ricavare, nell’ambito della caratterizzazione statica, i grafici relativi all’iniezione (§3.2.4) e alla sua efficienza (§3.2.6 e §3.2.5) permettendo inoltre di conoscere il limite di iniezione oltre il quale il transistor equivalente inizia a dar segni di degrado. Ulteriori dettagli a riguardo delle misurazioni verranno esposti nel Cap. 3. Può essere utile analizzare la sequenza delle funzioni implementate in questo programma per poi poter fare un confronto con il software LAB-04. • Il programma vsoglia.txt permette di determinare le variazioni di soglia Vth e della trasconduttanza gm del transistor equivalente della BipFlash, in funzione della tensione di substrato (VB ). Applicando una tensione al substrato si modifica, per effetto body, la tensione di soglia (Vth ) del transistor; di norma tale fenomeno non deteriora in modo permanente né la struttura né i parametri del dispositivo. Nel corso delle misurazioni si è notato, invece, che in alcuni tipi difettosi di transistor equivalenti, sicuramente a causa di problemi tecnologici di fabbricazione, i parametri di Vth e di gm si alteravano in modo permanente durante la misurazione della stessa Vth in funzione di VB . Questo programma ha dunque permesso, sempre nell’ambito della caratterizzazione statica, una cernita iniziale dei tipi di transistor equivalenti funzionanti da quelli difettosi. Ulteriori informazioni verranno riportate sempre nel Cap. 3. In Appendice B si riportano i listati dei programmi. 35 2.3 Setup per la programmazione Il setup per l’estrazione delle caratteristiche di programmazione e di cancellazione è costituito da: • probe station Cascade Microtech Summit 12000; • analizzatore di parametri per dispositivi a semiconduttore Agilent 4156C; • interfaccia GPIB; • programma “Lab-04” per la gestione del setup di misurazione. Figura 2.3: Setup per la determinazione delle caratteristiche dinamiche. 2.3.1 Interfaccia GPIB La prima interfaccia GPIB per la comunicazione tra strumenti è stata progettata nel 1965 dall’Hewlett-Packard (il nome originale era HP-IB7 ) allo scopo di poter connettere e controllare i propri strumenti programmabili tramite computer. Grazie all’elevata velocità di trasferimento dati (transfer rate di 1MB/s), la GPIB ha guadagnato rapidamente popolarità sino a venir accettata, nel 1975, come standard IEEE 488 e successivamente, nel 1987, come standard ANSI/IEEE 488.1. Quest’ultimo standard ha semplificato le interconnessioni tra gli strumenti definendo le specifiche meccaniche, elettriche e dei protocolli hardware che consentono a strumenti di differenti produttori di essere collegati tra di loro usando un unico tipo di cavo; purtroppo, non avendo specificato nulla in merito ai comandi di comunicazione, tale standard ha portato alla realizzazione di strumenti aventi set d’istruzioni diversi e quindi incompatibili tra di loro. Solo la revisione successiva la IEEE 488.2, chiamata anche GPIB8 , ha reso possibile la standardizzazione del software anche in termini di formati, protocolli e comandi usati da diversi costruttori. Lo standard IEEE 488 descrive un’interfaccia in grado di realizzare un collegamento di tipo intra-instrument 9 , con topologia party-line 10 nella quale gli indirizzi di selezione vengono trasmessi mediante le stesse linee (bus multiplexato). La trasmissione è asincrona, in particolare 7 HP-IB: Hewlett-Packard Interfacce Bus General Purpose Interface Bus 9 É realizzato tra diversi strumenti installati in uno spazio fisico limitato. 10 Indica un’architettura in cui tutte le periferiche sono collegate in parallelo su di un unico bus di tipo bidirezionale. 8 GPIB: 36 gli otto bit che costituiscono un carattere vengono inviati (in formato ASCII) in maniera parallela tramite un bus dati a otto linee; i diversi caratteri costituenti il messaggio sono trasmessi uno dopo l’altro in modo seriale (trasmissione byte seriale-bit parallela). Il bus di collegamento è costituito da un cavo multipolare a ventiquattro linee e consente il collegamento di quindici periferiche. I dispositivi costituenti il sistema vengono solitamente suddivisi, in base alle funzioni che possono realizzare, in tre categorie: talker, listener e controller. Le periferiche sono dette talker se sono in grado di trasmettere dati ad altre periferiche o al controller mediante il bus; sono invece definite listener quelle che, sempre mediante il bus di comunicazione, possono ricevere informazioni o caratteri di controllo. Il controller è quel componente del sistema che presiede al funzionamento di tutte le periferiche collegate al bus stabilendo, in base ad un apposito programma, la seguenza delle azioni da compiersi. Esso è usualmente costituito da una scheda inserita nel computer ed è dotato di un’interfaccia in grado di trasmettere sia i comandi necessari per controllare l’occupazione del bus da parte dei talker e dei listener, sia per attivare particolari funzioni delle interfacce delle periferiche collegate al bus. Tutte le periferiche sono collegate in maniera parallela alle linee del bus; per evitare conflitti durante la trasmissione e per garantire il corretto flusso dei dati è pertanto necessaria una funzione che permetta di selezionare sia le interfacce che devono ricevere i dati, sia quella che deve trasmetterli. La procedura con cui viene effettuata la selezione prende il nome d’indirizzamento in quanto basata sull’uso di un codice identificativo, detto indirizzo primario (PAD11 ), assegnato all’interfaccia di ogni periferica dall’operatore tramite dip-switch o tramite software ed è rappresentato, tramite cinque bit, da un numero da 0 a 30. Alcune periferiche consentono, in modo opzionale, l’utilizzo di un indirizzo secondario (SAD12 ), rappresentato da un numero compreso tra 96 e 126. Il controller utilizza l’indirizzo primario per formare un indirizzo di comunicazione per colloquiare con uno strumento; l’indirizzo è costruito come in Fig. 2.4, dove TA significa Talk Active e LA Listen Active, nel caso in cui il controller voglia rispettivamente ricevere dati o inviarli. Bit Position 7 6 5 Meaning 0 TA LA 4 3 2 1 0 HPIB Primary Address (0-30) Figura 2.4: Bit dell’indirizzo GPIB Quando viene impostato l’indirizzo secondario, il controller invia l’indirizzo primario di talk o listen del dispositivo seguito da quello secondario. La comunicazione tra il controller e gli strumenti avviene, come già detto, tramite un bus a 24 linee, in cui: • 8 linee costituiscono il data bus e vengono utilizzate per trasferire i dati e i comandi; • 3 linee di handshake governano la temporizzazione delle comunicazioni ed informano sullo stato dello strumento (pronto / non pronto a ricevere, dato accettato / non accettato e dato valido / non valido); 11 PAD: 12 SAD: Primary ADress Secondary ADress 37 • 5 linee servono per il trasferimento dei messaggi e per la gestione delle interfacce e vengono dette General Interface Management; • 8 linee sono connesse a massa (7 linee per i segnali, 1 linea per la schermatura generale del bus cable). Per rendere agevole l’utilizzo dell’interfaccia GPIB per il controllo degli strumenti tramite computer, esiste una libreria di comandi in ambiente LINUX chiamata NI-488.2M direttamente utilizzabile in programmi di alto livello (ad esempio in linguaggio C). I comandi vengono usati come le normali funzioni che sono disponibili in altre librerie del linguaggio C e permettono di inviare, tramite l’interfaccia, semplici istruzioni agli strumenti, come la lettura di un dato o la scrittura di un parametro programmabile. Queste librerie sono di un livello molto basso e, come si è detto, permettono di eseguire solo comandi molto semplici; per far eseguire ad uno strumento una data operazione bisogna comunque inviargli il codice adatto, il quale cambia a seconda dello strumento; risulta quindi poco agevole la compilazione di programmi piuttosto complessi. In particolare i driver NI-488.2M, sviluppati per l’ambiente LINUX e necessari per il funzionamento della scheda GPIB, rendono disponibili all’utente due tipi di librerie: • Funzioni NI-488. Questa libreria comprende tre classi di funzioni: – Funzioni a livello scheda. Interessano l’intero bus e sono di livello molto basso. Nel programma Lab-04 ne sono state utilizzate due: ∗ int ud = ibfind (char *udname) inizializza lo strumento avente nome udname (durante l’installazione del driver tramite il programma ibconf si crea un file di configurazione in cui vengono esplicitamente dichiarati, per ogni strumento, diversi parametri, tra cui il PAd, SAd, udname, timeout13 , ...) e restituisce un valore numerico definito UD14 . Se l’inizializzazione fallisce la funzione ibfind ritorna un numero negativo. ∗ ibonl (int ud, int bool) pone la scheda controller o lo strumento in stato di online/offline a seconda del valore assunto dalla variabile intera bool. – Funzione a livello del dispositivo. Possono essere utilizzate solo dopo aver inizializzato (con ibfind) lo strumento a cui si tenta di inviare il comando. Tra queste, nel programma Lab-04 sono state molto utilizzate: ∗ int ibrd (int ud, char *stringa, unsigned long cnt) permette la lettura dal dispositivo ud di una stringa di byte lunga cnt. ∗ int ibwrd (int ud, char *stringa, unsigned long cnt) consente l’invio di comandi tramite la variabile stringa allo strumento UD. La variabile cnt rappresenta sempre la lunghezza della stringa di caratteri. ∗ int ibclr (int ud) esegue un reset dello strumento UD trasmettendo il comando multilinea CLR. – Funzioni di utilità. Permettono ad es. la variazione della configurazione o comunque l’esecuzione di comandi particolari. Ad esempio: 13 Il controller dopo aver inviato un comando ad uno strumento aspetta la risposta per un periodo pari al tempo di timeout, dopodiché emette un segnale di errore. 14 UD: Unit Descriptor 38 ∗ int ibconfig (int ud, int option, int value) consente di variare i settaggi pre impostati per lo strumento UD. • Routine NI-488.2. Queste funzioni vengono definite routine in quanto permettono di svolgere compiti più complessi tramite un unico comando inviato ad uno o più strumenti (l’insieme degli strumenti viene definito tramite il vettore numerico Addr4882_t); ad esempio è possibile l’inizializzazione contemporanea di tutti gli strumenti collegati al bus. Come si può notare molte funzioni restituiscono un valore numerico. Infatti la loro chiamata provoca l’aggiornamento di tre variabili globali: IBSTA, IBERR e IBCNT, che rappresentano nell’ordine: lo stato del sistema, il tipo di un eventuale errore, il numero di byte trasferiti nelle operazioni di I/O. Per utilizzare queste librerie nei programmi di linguaggio C è necessario collegare i file: • ugpib.h contenete le dichiarazioni delle variabili e delle costanti, • cib.o contenente la libreria delle funzioni NI488.2Come si è visto questo driver mette a disposizione delle funzioni che permettono lo scambio, tra computer e strumenti, di stringhe di caratteri contenenti dei comandi. Sino a qualche anno fa, purtroppo, ogni azienda utilizzava un proprio set di comandi rendendo complessa la scrittura dei software per la gestione degli strumenti. Nel 1990 è stata costituita un’associazione comprendente i maggiori produttori di strumentazione elettronica che ha definito lo standard SCPI15 . Questo consiste in un set di comandi atti alla programmazione degli strumenti che i progettisti si impegnano ad implementare nelle proprie apparecchiature. Lo standard, inoltre, specifica le regole di composizione e di abbreviazione per i comandi e per i parametri. Il risultato di questo continuo sforzo verso la standardizzazione è che ora l’utente finale può utilizzare strumenti di produttori diversi senza doversi preoccupare di adattare i programmi alla mutata situazione dell’hardware. I comandi SCPI sono basati su una struttura gerarchica, o ad albero, in cui i comandi associati tra loro sono raggruppati sotto ad un nodo o radice comune formando in tal modo dei sottoinsiemi. Tutti gli strumenti conformi a questo standard possiedono un certo numero di registri interni e di code di messaggi che registrano lo stato dello strumento ed il verificarsi di determinati eventi. I comandi SCPI possono accedere a tali registri e a tali code per leggerne il contenuto e in alcuni casi per modificarlo. Esempi di comandi SCPI sono: *IDN? per chiedere allo strumento la sua stringa identificativa; *RST? per resettare lo strumento; *OPC? per chiedere se ci sono operazioni da completare; :MEASure:VOLTage:AC? 20, 0.001 chiede ad un multimetro la misura in AC della tensione specificando il range di 20V con una risoluzione di 0.001V. Da quanto esposto, emerge in modo evidente la necessità di impostare il software per la gestione degli strumenti su più livelli. Ad esempio è possibile realizzare una libreria di comandi elementari (lettura/scrittura) basata sulle funzioni NI488, una di livello superiore contenente i comandi specifici di ogni strumento ed infine una di livello ancora più alto contenente delle macro funzioni di uso applicativo. 15 SCPI: Standard Command for Programmable Instruments 39 2.3.2 Il programma “Lab-04” La necessità di controllare tramite calcolatore la gestione di un setup di strumenti atto all’estrazione delle caratteristiche dinamiche delle celle di memoria BipFlash, ha portato alla realizzazione del programma Lab-04. L’idea che sta alla base di questo software è quella di rendere disponibili in modo semplice ed intuitivo sia le funzioni relative ai singoli strumenti sia, ad un livello superiore, macro funzioni di uso applicativo. La scelta di creare un software con interfaccia grafica è giustificata dal fatto che questa, oltre a dare una veste grafica migliore, permette a colui che utilizza il programma di gestire la complessità dei comandi degli strumenti in modo più intuitivo e immediato. Come si nota dalla Fig. 2.10 il programma si presenta diviso in due parti: una preposta al controllo dei singoli strumenti l’altra all’esecuzione di programmi (le macro funzioni di uso applicativo) di gestione delle misurazioni, raggruppati in funzione del dispositivo a cui si riferiscono. Nel caso specifico, nella parte relativa agli strumenti sono state scritte diverse funzioni per l’analizzatore di parametri e per l’oscilloscopio; in particolare sono state create delle finestre che riproducono fedelmente tutti i menù di misurazione e di stress dell’Agilent permettendo così di editare, caricare, salvare, importare ed esportare diverse configurazioni di misurazione e di stress. Nella parte relativa ai dispositivi è stato realizzato un menù che permette la gestione della programmazione e della cancellazione delle celle BipFlash utilizzando file di configurazione editati tramite i menù messi a disposizione dal programma relativi all’analizzatore di dispositivi. Nel paragrafo §2.3.3 verrà ampiamente descritto l’ambiente di sviluppo utilizzato per la generazione del programma, mentre la descrizione delle funzioni del programma Lab-04 verrà discussa nel paragrafo §2.3.4. Il menù relativo alla gestione della programmazione e della cancellazione delle celle BipFlash sarà infine discusso in (§2.3.5). 2.3.3 Ambiente di sviluppo utilizzato per la realizzazione di Lab-04 La maggior parte dei sistemi operativi è dotata di un ambiente grafico che permette di interagire in modo più immediato con la macchina; a differenza dei più diffusi sistemi Windows, nel caso di Linux tale interfaccia non costituisce una parte integrante del sistema, essendo invece strutturata come un’applicazione separata, che funge da server per un certo numero di client. Lab-04 è stato scritto in linguaggio C utilizzando le librerie di uso più comune in ambiente Linux; in particolare, per la realizzazione dell’interfaccia grafica sono state adoperate le stesse librerie (le gtk+ e le glib) su cui si basa l’ambiente desktop Gnome 16 di Linux. Siccome questo sistema operativo gestisce la grafica in modo abbastanza articolato, ed essendo le stesse librerie gtk+, glib e gnome interdipendenti tra di loro, può essere utile iniziare con una trattazione sequenziale degli elementi che costituiscono il motore grafico di Linux. Linux è dotato di un ambiente grafico che permette di interagire in modo più immediato con la macchina, esso tuttavia, diversamente dai più diffusi sistemi Windows, non è una parte incorporata nel sistema, ma è formato da un applicazione server e da molti client. Si fa carico della parte server l’X-Server, che si trova su una macchina che possiede capacità di input (tastiera, mouse, ...) e di output (monitor, scheda grafica,...), mentre le richieste possono provenire da qualsiasi programma. E’ da notare che X-Server non ha ancora capacità di visualizzare finestre, è piuttosto un puro e semplice visualizzatore in attesa di comandi specifici. Le finestre sono 16 GNOME: Gnu Network Object Model Environment - www.gnome.org 40 gestite da un Window Manager, che è un client del X-Server (chiamato X-Window); a titolo di esempio, nel momento in cui muoviamo una finestra a video, X-Server riceve l’input dal mouse, lo passa al Window Manager e rimane in attesa di istruzioni sul da farsi; X-Window, ricevuti i dati da X-Server, chiede a questo di visualizzare la finestra e l’ambiente X-Server, secondo le direttive del manager, passa alla nuova visualizzazione. Un’architettura di questo tipo non obbliga ad avere un particolare X-Server, infatti ne esistono vari; quello standard di Linux è XFree86. Anche il gestore di finestre non è unico; i più diffusi sono: Kwm (il window manager dell’interfaccia grafica KDE17 ), ed Enlightment (quello dell’interfaccia grafica Gnome). Per quanto concerne l’interfaccia grafica, il livello più alto, cioè quello più vicino all’utente, è rappresentato dal Desktop Environment, ossia da un software che offre tutti i servizi classici dell’ambiente desktop, quali l’utilizzo dell’area desktop per creare collegamenti ad altri programmi i menù a barra, etc. Il programma LAB-04 è stato scritto tramite le librerie GTK+, le stesse su cui si base Gnome, ma può essere eseguito da qualsiasi Desktop Environment. Desktop Environment Gnome Gnome è un progetto di sviluppo di software libero iniziato nel 1997 da Miguel de Icaza dell’Università Nazionale Autonoma del Messico e cresciuto in breve tempo grazie all’apporto di un gruppo di programmatori sparsi in tutto il mondo. Gnome è caratterizzato da due aspetti fondamentali: 1) dal punto di vista utente è un ambiente di lavoro integrato ed una suite di applicazioni. Tutte queste applicazioni sono costituite da righe di comando UNIX dietro ad un’interfaccia grafica facile da utilizzare; 2) dal punto di vista del programmatore è invece una potente struttura per lo sviluppo di applicazioni composta da un insieme di utili librerie. Tutte le applicazioni scritte con le librerie di Gnome funzionano anche sotto altri ambienti (ad es. il Desktop Environment KDE) e non sono quindi legate necessariamente all’uso dell’ambiente Gnome. La struttura di Gnome per lo sviluppo di applicazioni si concretizza in una suite di librerie scritte in ANSI C. Le librerie che coinvolgono l’uso della grafica si appoggiano direttamente al sistema X Window. Gnome utilizza anche molte librerie che sono state sviluppate indipendentemente. Queste librerie fanno parte della struttura di sviluppo di Gnome e sono incluse nel pacchetto gnome-libs, che comprende quindi: • librerie Gnome: libgnome, libgnomeui, libgnorba, libzvt, libart_lgpl ; • librerie non-Gnome: glib, Gtk+, ORBit, Imlib; • altre librerie: Gnome-print, Gnome-xml, Guile, Bonobo. Le librerie glib e Gtk+ La glib è la base dell’infrastruttura Gnome e viene utilizzata anche da Gtk+. É una libreria C che mette a disposizione funzioni per creare e manipolare strutture di dati comuni, inoltre fornisce sostituti per molti costrutti C standard (int, long, char, etc.). La glib fornisce funzioni che sostituiscono, in particolare, quelle che possono risultare non sicure in caso di buffer overflow. I tipi e le funzioni di GLib sono preceduti dalla lettera ’g’, la quale indica una sorta di 17 KDE: K Desktop Environment - www.kde.org 41 namespace proprio della libreria. Gtk+ è un set di strumenti per creare interfacce grafiche utente, originariamente nato per GIMP18 (software per la elaborazione di immagini), ma divenuto in seguito una libreria per utilizzo generale. Anche Gtk+ è, come Gnome, dipendente dalla libreria Glib ed include GDK19 , che è un’astrazione delle librerie di basso livello del sistema X-Window. Dato che Gtk+ utilizza GDK, piuttosto che chiamare direttamente le primitive di X-Window, è possibile utilizzare Gtk+ su altri sistemi con relativamente poche modifiche. La libreria Gtk+ mette quindi a disposizione del programmatore una serie di elementi grafici (detti widget), quali ad esempio finestre, menù, bottoni etc., per disegnare l’interfaccia grafica dell’applicazione che verrà poi gestita per mezzo di segnali (signals). I widget infatti emettono dei segnali in risposta al verificarsi di determinati eventi (ad es. quando l’utente preme un bottone o chiude una finestra) ai quali l’applicazione può rispondere associandovi una funzione (detta callback ). Le GTK+, come le GDK e ovviamente le GLib, usano un prefisso che precede i rispettivi identificatori. Per fare un esempio g_malloc() richiama e, volendo, rimpiazza la malloc() standard. Da quanto esposto, le principali differenze e interrelazioni tra GNOME e GTK+ si possono così riassumere: 1. le applicazioni Gnome girano su X-Window e sono indipendenti dall’ambiente Gnome; 2. Gtk+ è nato indipendentemente da Gnome come libreria per creare interfacce grafiche utente, rimane indipendente da Gnome e può essere quindi usato da solo per dotare di interfaccia grafica le proprie applicazioni (anche scritte in linguaggi diversi dal C); 3. Gtk+ è l’interfaccia grafica delle applicazioni Gnome; se si include Gnome nelle proprie applicazioni non c’è quindi bisogno di includere Gtk+; Gnome tuttavia fornisce una serie di widget grafici ulteriori e migliorati che si pongono come estensioni del Gtk+, inoltre fornisce uno standard coerente ed una serie di funzionalità ulteriori per gestire il suono, la stampa, l’internazionalizzazione, i file di configurazione etc. I programmi Anjuta e Glade Per la realizzazione del programma LAB-04 è stato utilizzato, come ambiente integrato di sviluppo, il programma Anjuta (http://anjuta.sourceforge.net) . Quest’ultimo è un IDE20 completo dedicato alla programmazione in C/C++ che integra al suo interno Glade ( http://glade.gnome.org), un software per la realizzazione di interfacce grafiche. Entrambi girano in ambiente grafico e gestiscono applicazioni Gnome/Gtk+. Glade, tramite un ambiente a finestre e palette, permette la costruzione del frontend (o GUI21 ) del programma, ossia l’interfaccia grafica che l’utente vede e con cui interagisce, mentre Anjuta viene utilizzato per realizzare il backend, ossia la parte dell’applicazione, che gestisce l’input, lo elabora e fornisce l’output. Glade permette la realizzazione dell’interfaccia di programmi Gtk+ e Gnome; il codice può essere generato in linguaggio C, C++, Ada95, Python e Perl; inoltre i file della descrizione 18 GIMP: GNU Image Manipulation Program Gimp Drawing Kit 20 IDE: Integrated Development Environment 21 GUI: Graphical User Interface 19 GDK: 42 Figura 2.5: L’ambiente di lavoro di Glade. Si possono notare le diverse finestre usate per editare i widget dell’applicazione: a sinistra la palette degli oggetti grafici (detti widget), in alto il menù principale di Glade e a destra le finestre di editing e l’albero gerarchico dei widget. L’interfaccia grafica al centro, in fase di costruzione, è il menù “Channel Definition” relativo allo strumento Agilent. dell’interfaccia sono in formato XML. Purché vi siano installate le librerie Gtk+ e/o Gnome, Glade può essere utilizzato in qualsiasi ambiente desktop di Linux in due modi diversi: 1. per creare la GUI (utilizzando solo Glade); 2. per caricare, tramite libglade, i file di descrizione *.glade (che sono in formato XML) e creare la GUI on the fly. La costruzione dell’interfaccia avviene tramite l’utilizzo dei widget e tramite la dichiarazione delle varie callback associate a determinati segnali. Ad esempio il widget pulsante, se l’utente vi clicca sopra, emette il segnale “click”, mentre la callback (anche chiamata signal hander ) è la funzione che risponde a tale segnale. La gestione dei segnali viene implementata dalla funzione gtk_main() chiamata alla fine del file sorgente principale del programma. La Fig. 2.5 mostra l’ambiente grafico di Glade; si possono notare le finestre di uso più comune: la palette dei widget, l’albero gerarchico delle strutture, la finestra per editare le proprietà e le callback dei diversi oggetti e la finestra principale per la gestione del progetto. In Fig. 2.7 è illustrato un esempio che evidenzia la correlazione esistente tra widget, segnale e 43 Figura 2.6: Una tipica schermata dell’ambiente di lavoro dell’IDE Anjuta. Si possono notare sulla destra l’albero gerarchico dei file che costituiscono il progetto, in basso la parte relativa al debug, alle variabili, allo stack della memoria, etc. callback. Al widget di tipo “entry”, nominato “entry_CH_Smu1VN”, viene associato il segnale “changed” alla funzione (o callback) “on_entry_changed_MEAS”; quindi, in fase di esecuzione del programma, ogni volta che l’utente modifica il testo contenuto in questo oggetto viene emesso il segnale “changed” che a sua volta richiama la callback “on_entry_changed_MEAS”. Anjuta, come gran parte dei software IDE, offre un editor avanzato con funzioni di highlighting, incorpora funzioni di debugging e permette un’avanzata gestione dei moduli logici e del progetto nel suo complesso. L’interfaccia grafica con cui si presenta l’ambiente di lavoro di Anjuta è mostrata in Fig. 2.8. Come si può notare essa è composta da diverse finestre: al centro l’editor per il codice, a sinistra la struttura gerarchica dei file che costituiscono il progetto, in basso la parte relativa al debug, alle variabili ed allo stack della memoria ed infine in alto la barra di controllo principale di Anjuta. Struttura del programma Lab-04 Il progetto del software Lab-04 è un applicazione Gtk+ (Fig. 2.8) composta dai seguenti file (la struttura del progetto in Fig. 2.6): – main.c: è il file sorgente principale; ha una struttura molto semplice; all’avvio del programma chiama le funzioni di inizializzazione e di creazione degli oggetti dei menù, e rende visibile la finestra principale di Lab-04. Al suo interno vi sono anche, obbligatoria44 Figura 2.7: Si può notare la relazione tra widget, segnale e callback. Quando, in fase di esecuzione del programma, il campo di nome “entry_CH_Smu1VN” viene editato, viene emesso un segnale “changed” che richiama la funzione (callback) “on_entry_changed_MEAS”. mente, le chiamate alle funzioni principali di ogni applicazione Gtk+: gtk_init (&argc, &argv), che inizializza le librerie Gtk+, e gtk_main (), che aspetta l’arrivo degli eventi dal server X e chiama l’oggetto interessato per fargli emettere il segnale corrispondente; – interface.c e interface.h: sono generati da Glade e contengono il codice relativo all’interfaccia grafica del programma; – support.c e support.h: contengono funzioni di supporto. Ad esempio: GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name); permette di richiamare un widget, attraverso il suo nome e ad un’oggetto a lui imparentato, ed è in assoluto la funzione più utilizzata nel programma; – callback.c e callback.h: contengono le funzioni callback, ossia la logica con cui il programma risponde al verificarsi di un evento. La quasi totalità del codice sorgente editato è compreso in questi due file. La struttura del programma è object oriented quindi gran parte delle funzioni scritte nel file callback.c gestiscono eventi quali l’apertura e la chiusura delle finestre, la pressione di pulsanti, la modifica o il riempimento di campi, etc. Altre funzioni, invece, sono indipendenti dall’interfaccia grafica e possono essere utilizzate per la realizzazione di altri setup di misura o per implementare funzionalità appartenenti ad altri strumenti. 45 Figura 2.8: I diversi tipi di progetti che Anjuta permette di creare tramite wizard. Lab-04 è un programma Gkt+. Si riportano, a titolo di esempio, alcune di queste funzioni implementate nel programma. Funzioni a livello scheda GPIB: • void scrivi (int ud, char *c, int echo): invia la stringa c allo strumento UD; echo abilita o meno la gestione di un log (stampa a terminale e/o su un file di log i comandi inviati allo strumento) utile in modalità di debug; • int leggi (int ud, char *string, int dim_buf): legge dallo strumento UD un set di caratteri di lunghezza massima dim_buf salvandoli in string. La funzione restituisce il numero di caratteri ricevuti; • gdouble domanda (int ud, char *comando, char *risposta, int dim_risposta, int echo, int anumero): invia allo strumento UD la stringa comando e successivamente chiede allo strumento l’invio della stringa di risposta e la salva in risposta. La variabile echo abilita o meno la funzionalità di log. Se la variabile anumero è positiva, la funzione restituisce il valore numerico ottenuto dalla conversione della stringa di risposta in numero; • int inizializza_strumento (char* ibconf_strum, int modo, int strumento): inizializza lo strumento indicato dalla variabile strumento, utilizzando la stringa ibconf_strum 46 e secondo la modalità indicata da modo (lo strumento può essere inizializzato attraverso diverse funzioni 488.1 e 488.2) Il numero restituito dalla funzione indica il tipo di errore che eventualmente si è verificato durante il tentativo di inizializzazione. Si ricorda che per utilizzare le funzioni fornite dal driver NI488.2 è stato necessario collegare al programma Lab-04 il file header ugpib.h ed il file oggetto cib.o (Fig. 2.9) Figura 2.9: Il collegamento al progetto del file cib.o, fornito con la scheda GPIB, necessario all’utilizzo delle funzioni della libreria NI488.2. L’asterisco indica che la libreria è sotto forma di un file oggetto. Funzioni a livello strumento: • gint Ag4156_Invia_Comando (gchar* comando, gint modo, gint pausa); permette l’invio dei comandi base dello strumento Agilent 4156C, ad esempio i comandi: “Single”, “Append”, “Repeat”, “Stress”, “Stop”, “Reset”. La variabile pausa permette l’inserimento di un periodo di attesa alla fine di ogni comando. Altre funzioni implementate per l’Agilent 4156C sono: • gint Ag4156_Importa_Dati ( gchar* parametro, gint colonna, gint modo); • void invia_stress (...) ; • void leggi_stress (...) ; • void invia_measurement (...) ; • void leggi_measurement (...) ; • void Apri_Measurement (...) ; • void Apri_Stress (...) ; • void Salva_Measurement (...) ; • void Salva_Stress (...) ; Inoltre sono state implementate funzioni per estrapolare i parametri caratteristici dei transitor MOSFET dai dati importati dallo strumento Agilent 4156C: 47 • gdouble math_Vth ( gint x, gint y, gint gm): estrae il valore della tensione di soglia del transistore; • gdouble math_Gm ( gint x, gint y, gint gm): calcola la trasconduttanza del dispositivo. 48 2.3.4 Applicazioni implementate dal programma Lab-04 Figura 2.10: Menù principale del programma Lab-04. La finestra principale del programma Lab-04 (Fig. 2.10) è costituita essenzialmente da due parti, una relativa agli strumenti, l’altra ai setup di misura. Questa struttura è stata realizzata tramite due widget notebook, rendendo così il layout simile ad un’agenda ed estremamente flessibile ed espandibile. Ogni strumento, a sua volta, viene gestito mediante un altro notebook creando così un’ampia e razionale struttura di menù. Tramite i pulsanti in alto al centro è possibile far scomparire una delle due parti della finestra e continuare a lavorare solo con l’altra. Infine nella finestra principale troviamo, nella parte bassa, tre barre di stato. Selezionando “Config” si accede al menù di configurazione. Esso permette: – di sbloccare (tramite password) alcune modalità particolari del programma (debug, abilitazione file di log, simulazione strumenti collegati, possibilità di ignorare errori dati dalla scheda gpib); – di scegliere il tipo di separatore decimale (punto, virgola, tabulazione, etc.) per l’inserimento ed il salvataggio su file dei dati; Controllo degli Strumenti É possibile pilotare uno strumento semplicemente selezionandolo dal menù principale. Nei campi sotto le foto degli strumenti è possibile visualizzare e modificare i valori22 con cui gli strumenti sono indirizzati sul bus Gpib. 22 Il Primary ADdress ed il nome dello strumento impostati dal driver gpib tramite il programma ibconf. 49 Menù di invio comandi Figura 2.11: Menù per l’invio di comandi e la ricezione di dati a quattro diversi strumenti collegati al bus Gpib. Selezionando “Utility” si accede ad un menù che permette l’invio di comandi e la ricezione di dati a quattro diversi strumenti (Fig 2.11). Si possono così inviare direttamente delle sequenze di comandi agli strumenti per realizzare velocemente semplici setup di misura. Questa utility può essere anche utilizzata per testare i comandi SCPI degli strumenti o semplicemente per acquisirne familiarità. In particolare, per ciascuno strumento è possibile: – impostare il PAD per poter indirizzare lo strumento; – impostare l’EOS23 della stringa di comando; – inviare stringhe, sotto forma di comandi o interrogazioni SCPI, allo strumento; – visualizzare e memorizzare il log della comunicazione; Come detto quindi, utilizzando più strumenti ed iterando i comandi è possibile implementare velocemente un setup di misura. 23 EOS: End Of String 50 Strumenti - TDS 520 B Figura 2.12: Menù dell’oscilloscopio Tektronix TDS 520 B Questo menù consente di pilotare direttamente l’oscilloscopio TDS 520B e quindi di poter: – selezionare l’ingresso dell’oscilloscopio; – selezionare i tipi di misurazione (massimo quattro); – acquisire i valori delle misurazioni; – acquisire i dati relativi alla forma d’onda presente sull’oscilloscopio; – modificare i valori relativi alla forma d’onda in modo tale da poter importare il file salvato direttamente in un foglio di calcolo; – salvare i dati relativi alle misure ed alla forma d’onda in un file di testo. 51 Strumenti - Agilent 4156 C Figura 2.13: Finestra di controllo dell’Agilent 4156C. Tramite Lab-04 è possibile richiamare i menù relativi alla configurazione di misura e di stress e gestire eventuali errori di comunicazione e acquisizione dei dati; è inoltre possibile inviare i comandi principali dello strumento e visualizzarne le variabili di stato. In Lab-04 sono stati riprodotti fedelmente (a livello grafico e logico) il pannello di controllo e i menù di misura e di stress dell’analizzatore di parametri 4156C; inoltre, tramite un menù dedicato, il programma permette l’acquisizione selettiva ed il salvataggio dei dati e dei parametri presenti sullo strumento. Tramite il pannello di controllo (Fig. 2.13) è possibile: 52 • caricare, salvare, importare, esportare la configurazione dei parametri relativi alle misure (file .mes). Quest’ultima viene editata tramite i menù: Channel Definition, Sweep Setup, Measure Setup and Output Setup, User Function and Variables, Analysis Setup e Display Setup; • caricare, salvare, importare, esportare la configurazione relativa alla modalità stress (file .str) • richiamare il menù per l’acquisizione guidata dei dati e dei parametri presenti sullo strumento; • richiamare la finestra di gestione degli errori di comunicazione; • editare, importare ed esportare le variabili di stato dello strumento (stand-by, autocalibrazione, etc.); • inviare i comandi principali dello strumento (Single, Append, Repeat, Stress, Zero Offset, Stop, Trigger alto/basso, Trigger positivo/negativo); • resettare lo strumento. In pratica sul programma Lab-04 è stato riprodotto l’intero set di finestre di configurazione in modo da rendere equivalenti l’utilizzo del programma su calcolatore e la gestione delle misure direttamente sullo strumento. L’emulazione dei menù di misurazione e di stress dello strumento Agilent 4156C è stata implementata nel programma Lab-04 nei minimi dettagli; sono state inoltre scritte diverse funzioni al solo scopo di rendere più immediato l’utilizzo delle varie finestre di gestione dei menù e di aiutare l’utente durante l’inserimento dei parametri nei campi selezionati, sia mediante l’utilizzo di brevi commenti descrittivi, le tooltip (Fig. 2.14), sia mediante funzioni in grado di interpretare la sintassi delle stringhe digitate nei campi numerici. Ad esempio, l’inserimento della stringa “1,3mm ” in un campo ove viene richiesto un valore di corrente viene corretto in “1,3 mA” informando, tramite le barre di stato, l’utente di tale correzione con un messaggio “1,3mm corretto in 1,3 mA pari a 1,3E-3”. La compilazione dei campi avviene in modo dinamico, ossia in funzione di cosa e di come si editano i parametri nei diversi menù; in particolare, il programma rende visibili o invisibili, selezionabili o non selezionabili tutti i widget (campi, pulsanti, liste a tendina, etc.) correlati in modo logico al campo che si sta editando. Ad esempio, impostando nel menù Channel Definition la SMU2 come variabile1, le unità SMU1, SMU3 e VSU1 come costanti (Fig. 2.18), il programma istantaneamente modifica tutti i widget correlati presenti nei menù successivi. In particolare, nel menù Sweep Setup (Fig. 2.20) vengono resi modificabili i soli campi relativi alla variabile 1 e i campi delle unità impostate come costanti (SMU1, SMU3, VSU1). Anche in Fig. 2.22 in cui viene presentato il menù Analysis Setup, si nota come il programma guidi la compilazione dei campi rendendo visibili o meno gli oggetti relativi ai parametri correlati. Le variabili relative allo strumento Agilent 4156C sono state implementate nel programma LAb-04 tramite quattro vettori di dati (due per le variabili della modalità di misura, due per quelle relative alla modalità stress) aventi le seguenti strutture: var_n per i parametri numerici, var per i parametri alfanumerici: struct var { 53 Figura 2.14: Tutti gli oggetti che permettono l’inserimento di dati sono commentati mediante tooltip, l’utilizzo del programma risulta così molto più semplice. gchar* nome; gchar* valore; //** nome variabile, ad es. "ChanSmu1VN" //** valore, ad es. "Vgate", compilato tramite il relativo campo gchar* comando; //** comando SCPI associato, ad es.":PAGE:CHAN:SMU1:VNAME?" guint flag; //** flag, tipicamente 1 gchar* cella; //** nome del widget corrispondente, ad es. "entry_CH_Smu1VN" }; struct var_n { gchar* nome; gchar* valstr; gdouble valnum; gdouble valmin; gdouble valmax; gdouble passo; gchar* modo; gchar* guint gchar* //** //** //** //** //** //** //** nome variabile, ad es. "MeasConstSmu1Source" valore STRINGA della variabile, ad es. "100 mA" valore NUMERICO della variabile, ad es. "100e-3" valore minimo consentito, ad es. 0 valore massimo consentito, ad es. 2 valore della risoluzione modalit\‘{a}, per indicare l’unit\‘{a} di misura della variabile, ad. es. "A" comando;//** comando SCPI associato, ad es. "PAGE:MEAS:SWE:CONS:SMU1?" flag; //** flag cella; //** nome del widget corrispondente, ad es."entry_SW_s1source" }; Questo consente di controllare i valori numerici inseriti da parte dell’utente (range, risoluzione e unità di misura) per ogni singolo parametro, inoltre il programma gestisce in modo dinamico le variazioni di range, risoluzione e unità di misura provocate dai cambiamenti di configurazione 54 (ad. es. quando si imposta una SMU costante in corrente, e poi la si cambia in tensione, il programma gestisce il cambiamento di range, risoluzione e unità di misura dei campi numerici corrispondenti); Inoltre, modificando un campo tra quelli relativi ai nomi delle unità (di tensione: VNAME, o di corrente: INAME, Fig. 2.18) o alle variabili/funzioni utente (Fig. 2.19), il programma crea o aggiorna in tempo reale una variabile di tipo lista che viene utilizzata nei campi a discesa nei menù successivi (ad es. nell’impostazione della sequenza di misura (Output Sequence) nel menù Measure and Output setup riportato in Fig. 2.21); Il programma consente la gestione degli Figura 2.15: Agilent 4156C: Menù di gestione della coda degli errori errori di comunicazione in quanto sono stati codificati tutti gli errori relativi alla comunicazione gpib o allo strumento Agilent 4156C. A seconda della modalità di esecuzione del programma, in caso di errori appare o meno una finestra (Fig. 2.15) ove vengono riportati tutti gli errori verificatesi durante la comunicazione con lo strumento; Figura 2.16: Agilent 4156C: lo strumento permette di interrompere la misurazione in ogni istante. Inoltre, durante una misurazione (o un ciclo di stress) il programma permette di inviare un comando di “Stop” allo strumento (Fig. 2.16) per fermare la fase di misura (stress) e successivamente di importare i parametri e i dati presenti sullo strumento. Tramite il menù Spreadsheet (Fig. 2.17) è possibile interrogare lo strumento sul numero e sul tipo di parametri disponibili, importare in modo selettivo i dati relativi ai parametri e alle variabili e salvare i dati in un file utilizzando il cartiglio pre-configurato tramite il menù. Sono inoltre state scritte delle funzioni che permettono di rilevare errori nel flusso di dati facendo controlli sul numero dei parametri, sul numero dei dati, sulla lunghezza totale della stringa importata, sulla lunghezza della stringa del singolo dato, etc. Nelle figure seguenti vengono riportati: • i menù tramite i quali è possibile editare la configurazione di misurazione. In particolare, nelle figure, i dati inseriti si riferiscono alla configurazione relativa alla misura della tensione di soglia Vth : 55 Figura 2.17: Menù Spreadsheet della parte di programma relativa al controllo dell’Agilent 4156C. tramite questa finestra è possibile interrogare lo strumento sul numero e sul tipo di parametri disponibili, importare in modo selettivo i dati relativi ai parametri e alle variabili, salvare i dati in un file utilizzando il cartiglio pre-configurato tramite il menù. – Menù Channel Definition — Fig. 2.18 – Menù User Function and Variables — Fig. 2.19 – Menù Sweep Setup — Fig. 2.20 – Menù Measure Setup and Output Setup — Fig. 2.21 – Menù Analysis Setup — Fig. 2.22 – Menù Display Setup — Fig. 2.23 • il menù di Stress tramite il quale è possibile editare i parametri per la modalità di stress. In particolare vengono mostrate due figure in cui i dati inseriti si riferiscono alla configurazione relativa all’invio di impulsi per la programmazione delle celle BipFlash (Fig. 2.24) e per la cancellazione delle stesse (Fig. 2.25). 56 Agilent 4156 C - Menù Channel Definition e Menù User Function and Variables Figura 2.18: Menù Channel Definition per l’Agilent 4156C. Figura 2.19: Menù User Function and Variables per l’Agilent 4156C. 57 Agilent 4156 C - Menù Sweep Setup e Menù Measure Setup and Output Setup Figura 2.20: Menù Sweep Setup per l’Agilent 4156C. Figura 2.21: Menù Measure Setup and Output Setup per l’Agilent 4156C. 58 Agilent 4156 C - Menù Menù Analysis e Menù Display Setup Figura 2.22: Menù Analysis Setup per l’Agilent 4156C. Figura 2.23: Menù Display Setup per l’Agilent 4156C. 59 60 Figura 2.24: Menù Stress per l’Agilent 4156C – configurazione utilizzata per la programmazione di celle BipFlash. 61 Figura 2.25: Menù Stress per l’Agilent 4156C – configurazione utilizzata per la cancellazione di celle BipFlash. 2.3.5 Lab-04. Setup per la caratterizzazione dinamica delle celle BipFlash Il menù illustrato in Fig. 2.26 ha permesso la gestione automatizzata del setup degli strumenti utilizzati nelle misure di programmazione e cancellazione delle celle BipFlash ed in particolare dell’Agilent 4156C. Tramite questa parte del programma è possibile: • editare, caricare e salvare le configurazioni di sessioni di misura automatiche ed in particolare: i dati identificativi della cella; i file per la verifica della tensione di soglia; i parametri di ampiezza e di durata degli impulsi relativi alle operazioni di scrittura e di cancellazione; • salvare le misure in un file di output; • eseguire singole misurazioni di soglia e di trasconduttanza; • inviare singoli o treni di impulsi di programmazione o di cancellazione di durata costante o crescente; • visualizzare immediatamente tutti i dati importati attraverso lo strumento; • visualizzare in una finestra diversa un file con lo schema elettrico delle connessioni; • inviare treni di impulsi di cancellazione o di programmazione ottimizzati per raggiungere velocemente valori di tensioni di soglia preimpostati; • eseguire delle sessioni di misura atte alla determinazione delle curve di programmazione e di cancellazione, le cui fasi operative possono essere riassunte in: – selezione del tipo di ciclo di misura (programmazione o cancellazione); – caricamento dei file necessari, impostazione dei parametri di scrittura e di cancellazione ed invio della configurazione allo strumento Agilent 4156C; – selezione di opzioni quali: la pausa dopo l’invio del singolo impulso (in modo da verificare la correttezza delle operazioni di programmazione e cancellazione), il numero di impulsi inviati consecutivamente, l’incremento automatico della durata degli impulsi applicati e il valore della tensione di soglia a cui interrompere le operazioni di programmazione o cancellazione; – esecuzione di un ciclo completo di misurazioni con l’eventuale possibilità di variare in qualsiasi istante i parametri di scrittura/cancellazione e le opzioni utilizzate. Di seguito vengono elencate ed illustrate le fasi operative di messa in atto di un ciclo di misurazioni per la determinazione della curva di programmazione di una cella in modo da descrivere in maniera semplice ed efficace tutte le caratteristiche e peculiarità di questa parte del programma di Lab-04. In particolare durante la programmazione di una cella la sequenza di misure prevede che: • in una fase preliminare, tramite i menù di Lab-04 relativi all’editing dei parametri di misurazione e di stress dell’Agilent 4156C, vengano creati i file: – BipFlash_Misurazione_Soglia.MES; contenente i parametri relativi alla misura, tramite l’Agilent 4156C, della tensione di soglia; 62 – BipFlash_programmazione.STR; contenente i parametri di stress per l’invio di impulsi di programmazione tramite l’Agilent 4156C (in Fig. 2.24 è riportato il menù compilato con i parametri relativi a questa configurazione); – BipFlash_cancellazione.STR; contenente i parametri di stress per l’invio di impulsi di cancellazione tramite l’Agilent 4156C; (in Fig. 2.25 è riportato il menù compilato con i parametri relativi a questa configurazione); • si compilino i campi relativi ai dati della cella (numero di wafer, die, etc.); il programma inoltre permette di immettere velocemente valori predefiniti come data, ora, temp, etc. semplicemente premendo invio all’interno del campo vuoto; • si richiamino poi i tre file di configurazione (rispettivamente di misurazione soglia, scrittura e cancellazione), precedentemente editati e salvati con i menù di Lab-04 relativi all’Agilent 4156C. A questo punto si seleziona anche un file di destinazione per i dati importati; se il file selezionato esiste già, il programma aggiungerà alla fine di tale file i dati relativi alla sessione di lavoro (dati cella, selezione dei file, dati importati ed estrapolati, parametri di scrittura e di lettura); • si selezioni il tipo di sessione di misurazioni (programmazione o cancellazione); • si impostino i parametri relativi agli impulsi di scrittura (cancellazione). In questo caso, in osservanza dei range possibili e delle risoluzioni massime e minime dello strumento e dei vincoli esistenti tra le varie temporizzazioni, il programma automatizza l’inserimento di alcuni dati compilando tutti i campi dipendenti. In particolare è possibile impostare le tensioni di gate, drain, bulk, source e la corrente di emettitore, mentre la durata degli impulsi devono rispettare i valori limite delle SMU e PGU utilizzate. Il programma impedisce di inserire valori che siano in contrasto con le specifiche dello strumento; • si selezioni il tasto “inizia” con cui vengono, in ordine, resettate le variabili (ad esempio il tempo cumulato di programmazione), eventualmente resettato lo strumento, inviati i file di configurazione allo strumento ed inizializzato il file per il salvataggio delle misure; • si selezioni l’abilitazione o meno di una pausa dopo l’invio di ciascun impulso; tale opzione consente di correggere successivamente i parametri di scrittura permettendo di variare le configurazioni di misura durante la sessione; • si selezioni se abilitare o meno l’incremento automatico della durata degli impulsi, facilitando così la generazione dei tipici grafici logaritmici per le curve di programmazione/cancellazione; • nel caso in cui si voglia automatizzare un ciclo di misure (pausa disabilitata), si impostino delle condizioni per l’arresto dell’invio degli impulsi, al fine di tutelare il dispositivo da eventuali danni. Si possono dunque impostare un numero massimo di impulsi da inviare e/o un valore di tensione di soglia limite a cui fermarsi; • infine si selezioni il tasto “esegui” per comandare l’inizio del ciclo di misurazioni. Ovviamente alla fine di tale ciclo se ne possono inviare altri, reiterando la scelta dei parametri e delle opzioni. Nel file di destinazione delle misure viene salvato anche il tempo accumulato di programmazione (cancellazione), ciò permette una rapida generazione delle curve di programmazione (cancellazione). A questo punto, l’eventuale selezione del tasto “fine” permette di terminare la sessione di misura chiudendo il file di output relativo alle misure. 63 64 Figura 2.26: Finestra relativa al menù che consente la gestione di diverse sessioni di misura finalizzate alla caratterizzazione dinamica delle celle BipFlash, in particolare permette di ricavare, in modo automatico, le curve di programmazione di cancellazione. Capitolo 3 Misure sperimentali Nel presente capitolo si riportano i grafici delle caratteristiche sperimentali relative al comportamento statico e dinamico dei dispositivi BipFlash appartenenti a due lotti di fabbricazione forniti dalla ST Microelectronics; il primo appartenete al periodo maggio 2002, il secondo all’anno 2003. Ciascun lotto è partizionato in gruppi di wafer, chiamati nel prosieguo split, che si differenziano l’uno dall’altro per una o più varianti costruttive, inoltre su ciascun wafer vi sono circa un centinaio di dispositivi BipFlash (tra celle e transistor equivalenti) replicati per decine di volte. Il primo paragrafo del capitolo è dedicato ad una breve descrizione, tramite tavole e prospetti grafici, della ripartizione dei dispositivi all’interno dei wafer, delle loro dimensioni geometriche e alle differenze costruttive che caratterizzano i vari split. 3.1 Dispositivi utilizzati Figura 3.1: Foto di un wafer in cui si riescono a distinguere i die; queste unità, tutte uguali tra di loro, vengono replicate su tutta la superficie del wafer. Ogni wafer è costituito da unità elementari, uguali fra di loro, dette die (o frame), replicate secondo una struttura a matrice sull’intera superficie (Fig. 3.1). Il die, a sua volta, è costituito da blocchi, detti teg, ovvero insiemi di dispositivi simili o di circuiti dedicati. 65 Figura 3.2: Sintesi della struttura di un wafer. Le quattro colonne di dispositivi BipFlash sono state ricavate all’interno del teg ZZ86A, appartenente al die AB341. Quest’ultimo è replicato su tutta la superficie del wafer. Tabella 3.1: Dispositivi BipFlash contenuti in ciascuna colonna Teg 1 Celle senza N+ Teg 2 Teg 3 Celle con N+ Transistor senza N+ Teg 4 Transistor con N+ In particolare, come illustrato in Fig. 3.2, i wafer contenenti i dispositivi BipFlash (di entrambi i lotti) sono costituiti dal die contrassegnato “AB341”; esso è composto da dodici teg; 66 tra questi il teg “ZZ86A” in cui sono state ricavate quattro colonne1 di dispositivi Biplash; nello specifico, da sinistra verso destra: celle di memoria senza diffusione N+2 , celle di memoria con diffusione N+, transitor equivalenti senza diffusione N+, transistor equivalenti con diffusione N+. Nella tabella 3.1 è schematicamente riassunto il legame colonna (o teg)–dispositivo. Per poter identificare i dispositivi BipFlash all’interno di ciascun wafer, ai die sono state attribuite delle coordinate secondo lo schema riportato in Fig. 3.3. La disposizione dei pad delle celle e dei transistor e i riferimenti alle loro dimensioni geometriche è riportata in Fig.3.4. Per la caratterizzazione statica sono stati adoperati i transistor equivalenti del teg n. 3 (senza diffusione N+) di geometria 0, 72 × 0, 60 (W × L)3 e 50 × 0, 6 (W × L); mentre per la caratterizzazione dinamica le celle del teg 1 (senza diffusione N+) di geometria 0, 72 × 0, 60 (W × L). 1 2 3 4 5 6 7 8 9 M L I H G F E D C B A Figura 3.3: Coordinate attribuite ai die dei wafer per identificare le locazioni utilizzate nelle prove sperimentali. 3.1.1 Lotti e split I wafer caratterizzati nel presente lavoro appartengono, come già detto, a due diversi lotti di fabbricazione; il primo relativo al periodo maggio 2002, il secondo all’anno 2003. Il primo lotto è costituito da dodici wafer, ripartiti in tre gruppi, o split, caratterizzati da diversi livelli di drogaggio di canale. Per ciascun split è stato scelto un wafer su cui eseguire le misurazioni. Nella tabella 3.2 sono riportati i wafer suddivisi per split di appartenenza. Da una precedente ricerca effettuata sui wafer del primo lotto è emerso che: • per tensioni di bulk elevate, si misura una corrente di substrato significativa (anche con il drain lasciato flottante) che aumenta in modo considerevole con la tensione di gate. Tale 1 Di seguito chiamate anch’esse teg, in quanto insiemi di dispositivi simili. N+ aggiuntiva creata all’interno di quella di drain. 3 Width x Length: larghezza della cella x lunghezza del canale. 2 Diffusione 67 Pad delle TEG 1 e 2 (celle) Pad delle TEG 3 e 4 (transitor eq.) 1 Bulk 1 Bulk 2 Gate 2 Gate 3 Source 3 Source Transistor W 0,72 - L 0,6 Cella W 0,72 - L 0,6 4 Drain 4 Drain 5 Emettitore 5 Emettitore 6 Gate 6 Gate 7 Source 7 Source Transistor W 0,72 - L 1 Cella W 0,72 - L 1 8 Drain 8 Drain 9 Emettitore 9 Emettitore 10 Gate 10 Gate 11 Source 11 Source Drain Transistor W 50 - L 0,6 Cella W 50 - L 0,6 12 Drain 12 13 Emettitore 13 Emettitore 14 Gate 14 Gate 15 Source 15 Source Transistor W 50 - L 1 Cella W 50 - L 1 16 Drain 16 Drain 17 Emettitore 17 Emettitore 18 Gate 18 Gate 19 Source 19 Source Transistor W 0,72 - L 0,6 Cella W 0,72 - L 0,6 20 Drain Emettitore 21 Emettitore 22 Gate 22 Gate 1 23 Source 23 Gate 2 24 Source 1 20 Drain 21 P+ disallineato P+ disallineato Cella W 50 - L 0,6 P+ disallineato 24 Drain 25 Emettitore 25 Source 2 26 Gate 26 Drain 2 27 Source 27 Drain 1 28 Emettitore 2 29 Emettitore 1 Matrice di celle W 0,72 - L 0,6 Transistor W 50 - L 0,6 28 Drain 29 Emettitore P+ disallineato 30 30 31 31 32 32 Figura 3.4: Disposizione dei pad delle TEG. La colonna di sinistra rappresenta la disposizione dei pad delle celle (TEG 1 e 2, corrispondenti alla prima e alla seconda colonna di dispositivi). La colonna di destra rappresenta la disposizione dei pad dei transistor equivalenti (TEG 3 e 4, corrispondenti alla terza e alla quarta colonna di dispositivi). 68 Tabella 3.2: Split dei dispositivi BipFlash apparteneti al primo lotto (maggio 2002) Wafer disponibili Wafer utilizzato Wafer del primo lotto 1,2,3,4,5 11,12,13,14 split 1: W3 split 2: W12 19,20,21 split 3: W20 2 × 7, 5 · 1013 , 220 keV , tilt 7 2 × 5 · 1013 , 35 keV , tilt 7 drogaggio drain e source (As) 2, 7 · 1013 , 30 keV , tilt 7 2 · 1013 , 140 keV , tilt 7 1, 4 · 1013 , 50 keV 2, 8 · 1013 , 50 keV drogaggio standard di canale (B11) drogaggio supp. di canale (B11) corrente è probabilmente dovuta a meccanismi di band to band tunneling [26][27][28][29] che si generano all’interno del canale e che aumentano all’aumentare del doping del canale stesso. A tale corrente di substrato si associa poi una corrente di gate che, per elevati doping di canale, può dominare completamente la corrente di gate. • la diffusione n+: 1. riduce visibilmente le resistenze serie nelle misure di trasconduttanza lineare; 2. aumenta il leakage alle giunzioni ed anche il fenomeno di band to band tunneling. Per tali motivi si è realizzato un nuovo lotto di wafer con diverse varianti tecnologiche e con un doping di canale pari a quello più basso del primo lotto (che presenta minori effetti legati al BBT). Nella tabella 3.3 sono riportati i wafer relativi al secondo lotto, in funzione delle diverse varianti costruttive. Tabella 3.3: Split dei dispositivi BipFlash appartenenti al secondo lotto (2003) Wafer disponibili Wafer utilizzati drogaggio drain (As) Wafer del secondo lotto (1), 2, 3 (4), 5, 6 (7), 8, 9 split 1: V2, V3 split 2: V5, V6 split 3: V8, V9 2 × 1 · 1014 , 35 keV , tilt 7 2 × 4 · 1013 , 220 2 × 5 · 1013 , 220 2 × 3 · 1013 , 180 drogaggio drain post spacer (As) drogaggio HALO (P) (10), 11, 12 split 4: V11, V12 13 2 × 3 · 10 , 220 2 × 1, 5 · 1013 , 70 2 × 5 · 1013 , 180 2 × 5 · 1013 , 220 2 × 1, 5 · 1013 , 70 2, 7 · 1013 , 30 keV , tilt 7 drogaggio di canale (B11) 2 · 1013 , 140 keV , tilt 7 Come si nota dalla tabella 3.3, nei wafer del secondo lotto sono state introdotte le seguenti varianti rispetto al precedente: • riduzione del livello di drogaggio del drain (-30%, diffusione N+) allo scopo di aumentare il guadagno del transistor bipolare (β = Icoll /Ibase ) [20]; 69 • negli split 3 e 4 è stato spostato l’impianto di arsenico profondo del drain dopo gli spacer, con una maggiore inclinazione dell’impiantazione ionica (tilt) per favorire l’iniezione nella zona sotto il gate; • negli split 2 e 4 è stato inserito un impianto di boro tipo HALO (p-pocket) solo sul drain per recuperare il campo verticale perso riducendo il doping di canale. 3.2 Caratterizzazione statica dei dispositivi BipFlash La prima parte dell’indagine sperimentale è stata basata sulla caratterizzazione statica è stata realizzata su diversi transistor equivalenti presi, a campione, da ciascun wafer, sia del primo lotto che del secondo lotto. Poiché la struttura della cella BipFlash risulta dall’inclusione di un transistor bipolare pnp all’interno un MOSFET, sono state effettuate misure indirizzate ad analizzare il comportamento disgiunto delle due strutture. Le misurazioni delle tensioni di soglia e delle trasconduttanze al variare della tensione di substrato hanno permesso di effettuare una primissima analisi del comportamento della struttura MOSFET della BipFlash, mentre le misure di gummel plot, di guadagno (β) e delle caratteristiche delle giunzioni in inversa hanno reso possibile l’analisi del funzionamento del transistor bipolare sepolto. Infine, i grafici di iniezione hanno permesso la descrizione del comportamento della struttura BipFlash nel suo complesso, consentendo l’analisi del meccanismo di iniezione separando l’efficienza di iniezione degli elettroni secondari generati nel substrato (IG /IB ) (§ 1.2) dall’efficienza globale della struttura (IG /IE ). 3.2.1 Tensione di soglia Vth e trasconduttanza gm delle celle BipFlash In un transistor nMOSFET di tipo enhancement 4 , per VG = 0 la zona di canale è parzialmente svuotata ed è caratterizzata da una zona di carica spaziale negativa (dunque fissa), detta Qd . All’aumentare di VG , aumenta la zona svuotata e di conseguenza Qd ; incrementando ulteriormente VG , nella zona di canale accanto all’interfaccia Si − SiO2 la concentrazione di portatori minoritari (quindi di elettroni per un semiconduttore di tipo p) aumenta, superando quella dei portatori maggioritari. Il valore della tensione di gate per cui la concentrazione di minoritari (Qn ) all’interfaccia è uguale alla concentrazione delle lacune nel bulk (condizione detta di soglia naturale) viene assunto convenzionalmente come il valore della tensione di soglia V th. Un transistor MOSFET in queste condizioni viene detto “in inversione”. Ne consegue che: 1. aumentando il drogaggio del substrato (Na ) aumenta la tensione di soglia naturale; infatti, per svuotare ed invertire una regione con più atomi droganti occorre applicare una tensione di gate superiore; 2. applicando una tensione negativa al substrato aumenta la tensione di soglia naturale; come già detto, tale fenomeno viene nominato effetto body. In condizione di equilibrio, la carica sull’elettrodo di gate (QG ) eguaglia la carica nel substrato (Qn + Qd ). A parità di QG polarizzando il substrato con VB < 0 si aumenta la quantità di carica spaziale e di conseguenza di diminuisce la carica libera (Qn ); per cui la tensione di gate da applicare per raggiungere la condizione di soglia naturale risulta maggiore. 4 Normalmente spento; in un nMOSFET il canale conduttivo viene ottenuto per VG > Vth > 0. 70 VTH- gm - Wafer 3 - 2002 Die H4 - 0.72x0.6 - no N+ 10 m 10 m VB = 0 V 9m 9m VB = -1 V VB = -2 V 8m 8m VB = -3 V VB = -4 V VB = -5 V IDS IDS [A] 6m 7m gm 6m 5m 5m 4m 4m 3m 3m 2m 2m 1m 1m 0 1 2 3 4 5 6 gm [S] 7m 7 VG [V] Figura 3.5: Tensione di soglia Vth e trasconduttanza gm in funzione della tensione di substrato in un wafer del primo lotto con basso drogaggio di canale. La Vth aumenta, per effetto body, al diminuire della tensione di substrato. Analiticamente, la tensione di soglia può essere espressa come [20]: Vth = VF B + VC + 2|ϕp | + 1 · Cox q 2εSi qNa (2|ϕp | + VC − VB ) (3.1) ove: VF B è la tensione di flat band 5 , ϕp è definito come ϕp (Na ) = −VT ln(Na /ni ) (dove VT è la tensione termica), εSi è la costante dielettrica del silicio e VC è il potenziale del canale. Nel calcolo della tensione di soglia si considera VC = VS e VC − VB = VSB , inoltre, riferendo le tensioni rispetto al potenziale di source (VS = 0), la tensione di soglia nel caso in cui VB = 0 (Vth0 ) è: √ Vth0 = Vth (VS = VB = 0) = VF B + 2|ϕp | + il termine γ(Na ) = Vth0 come: √ 2εSi qNa · Cox q 2|ϕp | (3.2) 2εSi qNa /Cox viene detto fattore di body e permette di riscrivere la Vth e Vth = Vth0 µq ¶ q +γ· 2|ϕp | + VSB − 2|ϕp | (3.3) q Vth0 = VF B + 2|ϕp | + γ · 5É 2|ϕp |. (3.4) la tensione di gate che rende neutra la zona di canale; risulta essere funzione dei materiali della struttura MOS e del livello di drogaggio del substrato. 71 In Fig. 3.5 è mostrata la transcaratteristica di un transistor equivalente di un wafer, appartenente al primo lotto, avente il minore drogaggio di canale. Dai grafici si nota come il transistor funzioni correttamente e la realizzazione del transistor pnp all’interno della diffusione di drain non ne pregiudichi il funzionamento. Inoltre, si può osservare l’effetto body, ossia un aumento della tensione di soglia al diminuire della tensione di substrato. In Fig. 3.7 sono riportate le Vth e gm, in funzione di VB , di transistor equivalenti di due wafer diversi, ma appartenenti p entrambi al primo split; si osserva chiaramente la relazione Vth ∝ |VB |. VTH- gm - Wafer 3,12, 20 - 2002 Die H4, I3, G4 - 0.72x0.6 - no N+ 10 m 10 m W3 9m 9m W 12 W 20 8m 8m VB= 0 V 7m IDS 7m gm 6m 6m 5m 5m 4m 4m 3m 3m 2m 2m 1m 1m 0 1 2 3 4 5 6 gm [S] IDS [A] doping di canale 7 VG [V] Figura 3.6: Tensione di soglia Vth e trasconduttanza gm in funzione del livello di drogaggio di canale nei tre split del primo lotto. Si nota come la Vth aumenti all’aumentare del livello del drogaggio. In Fig. 3.6, invece, sono riportate le transcaratteristiche di tre transistor equivalenti appartenenti a tre diversi split del primo lotto ed aventi diverso drogaggio di canale; si nota come all’aumentare di quest’ultimo aumenti la tensione di soglia. Mentre tutti i transistor dei wafer del primo lotto risultavano funzionanti, la determinazione della caratteristica della tensione di soglia, pur essendo una misurazione elementare, ha fatto emergere delle irregolarità di funzionamento nei transistor equivalenti del secondo lotto. In particolare tutti i dispositivi del terzo e quarto split, caratterizzati da un impianto profondo di arsenico spostato dopo gli spacer e con più tilt (variante costruttiva finalizzata a localizzare l’iniezione sotto il gate), sono risultati difettosi, forse danneggiati da questo tipo di impianto. 72 73 Vth gm VB [V] 3 4 5 1 2 3 4 5 -300 n 0 VB [V] -200 n 50 m -100 n 100 m 0 0 0 0 2m 2 1m 3m 3 1 4m 4 2 5m 5 1 6m 6 0 7m 7 Vth gm 8m Wafer 3 - Die H4 - 0.72x0.6 0 Vth gm 1 4 5 1 2 3 4 5 0 -200 n -300 n 50 m 0 VB [V] -100 n 0 3 100 m VB [V] 1m 2m 0 Vth [V] 150 m 0 1 2 2 4m 4 Vth gm 5m 5 3m 6m 6 3 7m 7 Wafer 2 - Die F4 - 0.72x0.6 Variazione soglia Vth in funzione di VB gmmax [s] DVth [V] Dgmmax [S] Figura 3.7: Variazione della tensione di soglia provocata dall’effetto body (grafici in alto). Ripetendo le misure di soglia per varie VB si nota che il wafer V2 presenta un degrado di VT H0 e gm indicando un malfunzionamento del dispositivo (grafico in basso a destra). Il wafer V3, appartenente allo stesso split del wafer V2, presenta, invece, un comportamento corretto con VT H0 e gm, in media, costanti (grafico in basso a sinistra). DVth [V] 8 gmmax [s] 150 m Vth [V] Variazione soglia Vth in funzione di VB Dgmmax [S] Ad esempio i wafer V2 e V5, appartenenti rispettivamente al primo e al secondo split del secondo lotto, hanno mostrato anomalie di funzionamento durante la misurazione della tensione di soglia. In particolare, si è notato che applicando al transistor equivalente valori di tensione tipici per la determinazione della transcaratteristica (VS =0 V, VD =100 mV, VG da 0 a 7 V, VB da 0 a -5 V) i parametri del dispositivo (Vth e gm), si alterano in modo permanente al ripetere della misura per varie tensioni di substrato (Fig. 3.7 in basso a destra) indicando un degrado della struttura del dispositivo. In Fig. 3.7 viene comparato il comportamento di due transistor, uno appartenente al wafer V3 l’altro al wafer V2, entrambi del primo split del secondo lotto, quindi, in via teorica, con le stesse caratteristiche costruttive. Il grafico di ∆Vth0 relativo al wafer V3 mostra un comportamento normale per un transistor: la Vth0 e la gm rimangono pressoché costanti; invece il grafico relativo al wafer V2 evidenzia l’anomalia: misurando la tensione di soglia al variare di VB (grafico in alto a destra), la Vth0 aumenta e la gm diminuisce indicando un degrado del dispositivo (grafico in basso a destra). Un’analisi delle caratteristiche delle tensioni di soglia, svolta su un campione di transitor per ciascun wafer, ha confermato i problemi costruttivi per i wafer V2, V5 e per quelli del terzo e quarto split. La tabella 3.4 riassume quali sono i wafer con i dispositivi funzionanti. 3.2.2 Gummel plot Il grafico di Gummel, o Gummel plot, è il grafico in scala semilogaritmica delle correnti di base (Ibase ) e di collettore (Icoll o IC ) in funzione della tensione emettitore-base (VEB ) di un transistor bipolare. Tale grafico è riferito ad una tensione VCE (VC − VE ) fissata ad un valore tale da garantire che il transistor sia in piena zona attiva. Idealmente entrambe le curve di corrente (Ibase e Icoll ) devono essere linee rettilinee con la pendenza di 60 mV/dev [20]; generalmente in basso le curve deviano dalla teoria in seguito a correnti di ricombinazione nella zona di svuotamento della giunzione base-emettitore e alla corrente inversa di saturazione della giunzione base-collettore (ICB0 ); in alto, invece, intervengono effetti di alta iniezione e la caduta di tensione sulla resistenza serie di base provocano il piegamento delle bande. Se ICB0 è trascurabile, il rapporto Icoll /Ibase per una data VEB permette di costruire il grafico di β(VEB ); in via teorica, se Ibase e Icoll sono parallele, se ne deduce che β(VEB ) deve essere costante. Un esempio di Gummel plot e di estrazione del guadagno β sono riportati in Fig. 3.8. I Gummel plot dei transistor equivalenti misurati per ciascun tipo di wafer hanno portato alle seguenti considerazioni: • indipendentemente dal tipo di lotto, di split o di wafer, le pendenze delle curve delle correnti sono sempre: – Icoll = 60 mV/dec; – Ibase = 120 mV/dec; • le correnti scalano correttamente al variare della profondità W (Fig. 3.8) escludendo l’eventuale contributo di effetti di bordo alla corrente iniettata; • i gummel plot relativi ai tre doping di canale del primo lotto sono, entro le tolleranze, uguali; • l’efficienza β è sempre inferiore all’unità; in particolare nel secondo lotto diminuisce di un ordine di grandezza (Fig. 3.9); 74 Gummel plot - Wafer 3 - 2002 Die F7 - no N+ 3 1 10 10 Icoll/W 0,72x0,6 Ibase/W 0,72x0,6 Icoll/W 50x0,6 Ibase/W 50x0,6 2 10 1 10 0 VCB=0 b=IC/IB -1 10 -1 10 -2 10 -3 10 IBASE za en nd e p -4 10 60 b Current/W [A/m] 10 0 10 c de V/ m -2 10 -5 10 ICOLL -6 10 -3 10 -7 10 -8 10 -4 0 0,1 0,2 0,3 0,4 0,5 VEB [V] 0,6 0,7 0,8 0,9 1 10 Figura 3.8: Gummel plot wafer W3 (primo lotto). Sono raffigurate le correnti di base e di collettore, normalizzate rispetto W, di due transistor equivalenti (W50×L0,60 e W0,72×L0,60). I Gummel plot relativi ai tre diversi split del primo lotto ed aventi diverso drogaggio di canale, risultano, in pratica, uguali tra di loro. Si nota che: l’efficienza assume valori bassi (β < 1); le correnti scalano correttamente al variare della profondità W, escludendo fenomeni di bordo. • nel secondo lotto, i wafer con la HALO presentano un efficienza β inferiore rispetto a quelli senza (Fig. 3.10). Una pendenza della corrente maggiore di 70 mV/dec, generalmente, indica un dispositivo avente trappole (ossia stati energetici permessi, all’interno del gap tra banda di conduzione e di valenza, creati da impurità) in corrispondenza della giunzione; inoltre la giunzione base emettitore è quella più delicata all’interno della struttura della cella BipFlash ed è caratterizzata da elevati valori di drogaggio che possono far insorgere problemi, come ad esempio di clustering, ossia atomi droganti sparati nel silicio vanno ad occupare la stessa posizione, formando una unità (cluster ) che a livello elettronico si comporta come un singolo atomo, oppure di attivazione, ovvero non tutti gli atomi di drogante apportano il loro contributo a livello elettronico. I valori di scarsa efficienza sono imputabili quindi all’utilizzo di processi non ottimizzati per la realizzazione del transistor bipolare (dovuti all’intrinseca complessità tecnologica della cella BipFlash), per cui i transistor bipolari sepolti risultano avere un funzionamento non ottimale con conseguente perdita di efficienza nell’iniezione di lacune nel substrato. 75 Gummel plot - Wafer 3 - 2003 Die H5 - no N+ 3 1 10 10 Icoll/W 0,72x0,6 Ibase/W 0,72x0,6 Icoll/W 50x0,6 Ibase/W 50x0,6 2 10 1 10 0 VCB=0 b=IC/IB -1 10 -1 IBASE -2 10 a nz de n pe -3 10 60 10 c de V/ m b Current/W [A/m] 10 0 10 -2 10 -4 10 ICOLL -5 10 -3 10 -6 10 -7 10 -8 10 -4 0 0,1 0,2 0,3 0,4 0,6 0,5 VEB [V] 0,7 0,8 0,9 1 10 Figura 3.9: Gummel plot wafer V3 (secondo lotto). Sono raffigurate le correnti di base e di collettore, normalizzate rispetto W, di due transistor equivalenti (W50xL0,60 e W0,72xL0,60). Si nota che: i valori di efficienza sono inferiori a quelli del prim lotto. (β < 0, 1); le correnti scalano correttamente al variare della larghezza W del dispositivo. La pendenza della corrente di collettore è correttamente di 60 mV/dev, mentre quella relativa alla corrente di base è di 120 mV/dec. Gummel plot - Wafer 6 - 2003 Die H5 - no N+ 3 1 10 10 Icoll/W 0,72x0,6 Ibase/W 0,72x0,6 Icoll/W 50x0,6 Ibase/W 50x0,6 2 10 1 10 0 VCB=0 b=IC/IB -1 10 IBASE -1 -2 10 a nz de n pe -3 10 60 10 c de V/ m b Current/W [A/m] 10 0 10 -2 10 -4 10 -5 10 ICOLL -6 -3 10 10 -7 10 -8 10 -4 0 0,1 0,2 0,3 0,4 0,5 VEB [V] 0,6 0,7 0,8 0,9 1 10 Figura 3.10: Gummel plot wafer V6 (secondo lotto). Questo wafer si differenzia da V3 (Fig. 3.9) unicamente per la presenza di HALO e, come si può facilmente notare, presenta valori di efficienza β inferiori. 76 3.2.3 Giunzioni Polarizzando in inversa una giunzione pn si crea, teoricamente, una corrente costante di minoritari; in particolare il campo elettrico favorisce il movimento di elettroni dalla zona p alla zona n, e di lacune in direzione contraria. Siccome il quantitativo di portatori minoritari è esiguo e costante a causa dello scarso numero di questi ultimi nelle due zone drogate, ne deriva una corrente modesta e costante al variare della tensione applicata ai capi della giunzione. Ampliando ulteriormente la differenza di potenziale, i campi elettrici interni aumentano piegando le bande energetiche dei semiconduttori sino a dare origine ad un effetto detto Zener e ad una corrente di scarica a valanga per ionizzazione da impatto. Entrambi provocano un brusco aumento del valore di corrente. La tensione per la quale si verifica prima almeno uno dei due fenomeni, viene detta tensione di breakdown. Giunzioni - pol. inversa - Wafer 5 Die C5 - 0.72x0.6 - no N+ -5 10 10 IDB ISB -6 10 10 -7 10 10 -8 ID - IS [A] 10 10 -9 10 10 -10 10 10 10 -11 10 -12 10 10 -13 10 10 -14 10 0 1 2 3 4 5 6 VDB - VSB [V] 7 8 9 10 10 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 Figura 3.11: Giunzioni SB, DB polarizzate in inversa ed appartenenti ad un transistor equivalente del wafer V5, secondo lotto. Si possono notare un buon valore della tensione di breakdown, di circa 7 V, ed il contributo di corrente per band to band tunneling generato da stati energetici intermedi creati dalle impurità. In Fig. 3.11 sono riportate le caratteristiche delle giunzioni source-bulk e drain-bulk di un transistor equivalente del secondo lotto. Si nota un buon valore della tensione di breakdown di circa 7 V. La corrente non è costante perché si sommano contributi di corrente probabilmente dovuti a effetti di band to band tunneling generati da stati energetici intermedi creati da impurità. 77 3.2.4 Iniezione Il programma isoglia.txt (§2.2), scritto in IBbasic ed eseguito direttamente sull’Agilent 4156C, ha consentito di determinare i valori della corrente di iniezione IG in funzione della corrente IE e della tensione di substrato VB nei transistor equivalenti dei wafer del primo e del secondo lotto; inoltre queste misurazioni, potenzialmente dannose per la struttura del dispositivo, sono state eseguite documentando le variazioni di soglia Vth e della trasconduttanza gm, recate da ciascuna misurazione. Le misurazioni svolte sui wafer relativi ai tre split del primo lotto hanno VG >0 A IS VD>0 IG VS (0V) ID e2 Gate Ossido - SiO2 SiO2 SiO2 (1) E Source n+ (3) (2) E Drain n+ II p Substrato (Bulk) IB VB <0 3 II 2 A VB<0 VB<0 1 VB=0 VB=0 VG>0 VG>0 substrato poco drogato substrato molto drogato Figura 3.12: Schema di iniezione da substrato di elettroni caldi, indotto da band to band tunneling BBISHE. Sotto sono riportati i diagrammi a bande della struttura lungo la sezione verticale AA. Il forte campo elettrico verticale, indotto dalla tensione di substrato (VB < 0), piega le bande favorendone l’attraversamento alle lacune in prossimità dell’interfaccia Si−SiO2 (1), queste lacune vengo accelerate verso il substrato e possono generare per ionizzazione da impatto coppie elettrone-lacuna (2). Gli elettroni secondari prodotti, attirati verso il gate, possono superare la barriera dell’ossido inducendo una corrente la gate. confermato quanto già emerso da un precedente studio, ossia che esiste una corrente di substrato significativa (anche con il drain lasciato flottante) che aumenta in modo considerevole con la tensione di gate. Tale corrente è probabilmente dovuta a meccanismi di band to band tunneling 78 (BBT) generati nel canale [26][27][28][29], chiamati BBISHE6 , ed aumenta sensibilmente nei dispositivi con n+. A tale corrente di substrato si associa poi una corrente di gate che, per elevati doping di canale, può dominare completamente la corrente di gate. La Fig. 3.12 mostra il diagramma a bande relativo all’iniezione BBISHE. Il forte campo elettrico verticale, indotto dalla tensione di substrato (VB < 0), piega le bande favorendo l’attraversamento delle lacune in prossimità dell’interfaccia Si − SiO2 (1), queste lacune vengo accelerate verso il substrato dal campo elettrico verticale e possono generare per ionizzazione da impatto coppie elettrone-lacuna (2). Gli elettroni secondari prodotti, attirati verso il gate, possono superare la barriera dell’ossido contribuendo alla corrente di gate. Sempre facendo riferimento ai diagrammi a bande di Fig. 3.12 è importante ricordare che un aumento del drogaggio di substrato, a parità di VG e VB , provoca un aumento del meccanismo di band to band tunneling di lacune e quindi della corrente di gate IG a causa del maggior piegamento delle bande in presenza di un canale più drogato. Per elevati valori della corrente di emettitore la corrente di iniezione prodotta attraverso il transistor bipolare copre la corrente spuria generata dal BBT. Iniezione - |VB|=3V - Wafer 3 - 2002 Die G4 - 0.72x0.6 - no N+ -9 10 10 -4 IEM=0 IEM=1mA 10 IEM=2mA 10 -5 IEM=5mA -10 IEM=10mA 10 IEM=20mA -6 IEM=50mA IGate 10 IBulk IG [A] -11 10 10 10 -12 10 10 -13 10 10 -14 0 1 2 3 4 5 6 7 10 -7 -8 IB [A] IEM=100mA 10 -9 -10 -11 -12 VG [V] Figura 3.13: Iniezione, IG , IB in funzione di VG per VB = −3V , primo lotto, wafer W3: basso drogaggio di canale. Già per VB = −3, IE = 0 si può notare il contributo significativo apportato dall’iniezione per BBT alla corrente di gate. 6 BBISHE: Band to Band tunneling Induced Substrate Hot Electron 79 Iniezione - |VB|=4V - Wafer 3 - 2002 Die G4 - 0.72x0.6 - no N+ -9 10 10 -4 IEM=0 IEM=1mA 10 IEM=2mA 10 -5 IEM=5mA -10 IEM=10mA 10 IEM=20mA -6 IEM=50mA IGate 10 IBulk 10 10 10 -12 10 10 -13 10 10 -14 0 1 2 3 4 5 6 7 10 -7 -8 IB [A] -11 IG [A] 10 -9 -10 -11 -12 VG [V] Figura 3.14: Iniezione, IG , IB in funzione di VG per VB = −4V , wafer W3, primo lotto. Si nota un aumento vistoso del contributo alla IG da parte del BBT. Iniezione - |VB|=5V - Wafer 3 - 2002 Die G4 - 0.72x0.6 - no N+ -9 10 10 -4 IEM=0 IEM=1mA 10 IEM=2mA 10 -5 IEM=5mA -10 IEM=10mA 10 IEM=20mA -6 IEM=50mA 10 IBulk IG [A] IGate 10 10 10 -12 10 10 -13 10 -14 10 0 1 2 3 4 5 6 7 10 -7 -8 -9 -10 -11 -12 VG [V] Figura 3.15: Iniezione, IG , IB in funzione di VG per VB = −5V , wafer W3, primo lotto. 80 IB [A] -11 10 Iniezione - |VB|=4V - Wafer 3 - 2003 Die H6 - 0.72x0.6 - no N+ -9 10 10 -4 IEM=0 IEM=1mA 10 IEM=2mA 10 -5 IEM=5mA -10 IEM=10mA 10 IEM=20mA -6 IEM=50mA 10 IBulk IG [A] IGate 10 10 10 -12 10 10 -13 10 10 -14 0 1 2 3 4 5 6 7 10 -7 -8 IB [A] IEM=100mA -11 10 -9 -10 -11 -12 VG [V] Figura 3.16: Iniezione, IG , IB in funzione di VG per VB = −4V , secondo lotto, wafer V3: basso drogaggio di canale. La componente di corrente IG , dovuta presumibilmente al BBT, risulta notevolmente diminuita. Iniezione - |VB|=5V - Wafer 3 - 2003 Die H6 - 0.72x0.6 - no N+ -9 10 10 -4 IEM=0 IEM=1mA 10 IEM=2mA 10 -5 IEM=5mA -10 IEM=10mA 10 IEM=20mA -6 IEM=50mA IGate 10 IBulk IG [A] 10 10 10 10 -12 10 10 -13 10 10 -14 0 1 2 3 4 5 6 7 10 -7 -8 IB [A] IEM=100mA -11 -9 -10 -11 -12 VG [V] Figura 3.17: Iniezione, IG , IB in funzione di VG per VB = −5V , wafer V3, secondo lotto. 81 Nelle Figg. 3.13, 3.14, 3.15 sono riportati i grafici di iniezione IG , IB in funzione di VG e IE per VB = −3V, −4V, −5V , relativi al wafer W3 appartenente allo spilt con meno drogaggio di canale del primo lotto. Si nota il contributo di corrente IG apportato dal meccanismo di iniezione BBT per bassi valori di IE . Mettendo a confronto i grafici riportati in Fig. 3.14 e Fig. 3.18 si può notare, come previsto, che il meccanismo di iniezione per band to band tunneling è maggiore nel transistor con un valore di drogaggio di canale più elevato (wafer W12). Nelle Figg. 3.16, 3.17, sono mostrati, invece, i grafici di iniezione relativi al secondo lotto di wafer. In questi dispositivi si è riusciti ad eliminare la componente spuria, dovuta al BBT, di corrente di gate. Iniezione - |VB|=4V - Wafer 12 - 2002 Die H3 - 0.72x0.6 - no N+ -9 10 10 10 10 -4 -5 IEM=0 -10 IEM=1mA 10 IEM=2mA -6 IEM=5mA 10 IBulk IG [A] IGate 10 10 10 -12 10 10 -13 10 10 -14 0 1 2 3 4 5 6 7 10 -7 -8 IB [A] IEM=10mA -11 10 -9 -10 -11 -12 VG [V] Figura 3.18: Iniezione, IG , IB in funzione di VG per VB = −5V , primo lotto, wafer W12: medio drogaggio di canale. 3.2.5 Rapporti Ig/Ie e Ig/Ib in funzione di Vg Dai grafici precedenti si riescono ad estrapolare i rapporti IG /IE e IG /IB in funzione di VG in modo da analizzare le efficienze dei meccanismi coinvolti nella generazione della corrente IG . In Fig. 3.19, si può notare com aumentando VG cresca l’efficienza di iniezione degli elettroni secondari per effetto dell’aumento della probabilità di iniezione. La 3.20 mostra come IG /IE cali all’aumentare di IE , a causa della diminuzione di IG /IB , ma questo calo è potenzialmente compensato dall’aumento di β con IE . 82 Iniezione - |VB|=5V - Wafer 3 - 2003 Die H6 - 0.72x0.6 - no N+ -2 10 -2 10 IEM=1mA IEM=2mA IEM=5mA -3 10 IEM IEM=10mA -3 10 IEM=20mA IEM=50mA IEM=100mA -4 -4 IG\ IBulk 10 10 -5 -5 10 10 -6 -6 10 10 -7 -7 10 10 -8 10 -8 4 5 6 7 10 VG [V] Figura 3.19: Efficienza, IG /IB in funzione di VG per VB = −5V , secondo lotto, wafer V3: basso drogaggio di canale. Iniezione - |VB|=5V - Wafer 3 - 2003 Die H6 - 0.72x0.6 - no N+ -5 -5 10 10 IEM=1mA IEM=2mA IEM=5mA IEM=10mA -6 10 IEM -6 IEM=20mA 10 IEM=50mA IG\ IE IEM=100mA -7 -7 10 10 -8 -8 10 10 -9 10 -9 4 5 6 7 10 VG [V] Figura 3.20: Efficienza, IG /IE in funzione di VG per VB = −5V , secondo lotto, wafer V3: basso drogaggio di canale. 83 3.2.6 Rapporto Ig/Ib in funzione di Ie Come descritto nel paragrafo §1.2.2, variando la corrente di emettitore (IE ) ci si aspetta che la corrente di gate sia proporzionale alla corrente di bulk (IG ∝ IB ). Utilizzando i grafici dell’iniezione ed estrapolando i rapporti (IG /IB ) per determinati valori di VG e VB , in funzione di IE si ottengono dei grafici in cui si può verificare la proporzionalità tra IG e IB ; in particolare si deve ottenere una curva possibilmente orizzontale. Confrontando la Fig. 3.22 con la Fig. 3.23 si nota che l’efficienza aumenta al crescere di VG e VB , inoltre aumentando il drogaggio di canale si ottiene un aumento del campo elettrico verticale, accrescendo la probabilità di iniezione degli elettroni secondari; mentre diminuisce all’aumentare della corrente di IE , infatti per elevati valori di VB , e bassi di IE e quindi di IB , la IG è costituita anche dalla componente dovuta ai meccanismi di BBT, e dunque il rapporto IG /IB risulta influenzato da questa componente addizionale. In Fig. 3.21 si riporta il grafico dell’efficienza per un transistor del secondo lotto con HALO. Probabilmente questa diffusione devia l’iniezione e quindi si ottengo valori di efficienza minori per correnti più elevate in quanto questo aumento di corrente probabilmente avviene in una zona non utile all’iniezione nel gate. Iniezione - IG\ IB (IE) - Wafer 6 - 2003 Die F3 - 0.72x0.6 - no N+ -2 10 VB= -3 V VB= -4 V VB= -5 V -3 10 VG = 5 V VG = 6 V VG = 7 V -4 IG\ IB 10 -5 10 -6 10 -7 10 -8 10 1 10 IE [ µΑ] 100 Figura 3.21: Efficienza, IG /IB in funzione di IE , secondo lotto, wafer V6: basso drogaggio di canale. 84 Iniezione - IG\ IB (IE) - Wafer 3 - 2002 10 Die G4 - 0.72x0.6 - no N+ -3 VB= -3 V VB= -4 V VB= -5 V IG\ IB 10 10 10 10 VG= 5 V VG= 6 V VG= 7 V -4 -5 -6 -7 1 10 IE [ µΑ] 100 Figura 3.22: Efficienza, IG /IB in funzione di IE , primo lotto, wafer W3: basso drogaggio di canale. Iniezione - IG\ IB (IE) - Wafer 12 - 2002 10 Die H3 - 0.72x0.6 - no N+ -3 VB= -3 V VB= -4 V VB= -5 V IG\ IB 10 10 10 10 VG= 5 V VG= 6 V VG= 7 V -4 -5 -6 -7 1 10 IE [ µΑ] 100 Figura 3.23: Efficienza, IG /IB in funzione di IE , primo lotto, wafer W12: medio drogaggio di canale. 85 3.2.7 Tabella riassuntiva wafer funzionanti L’analisi delle caratteristiche statiche, in particolare delle tensioni di soglia e d’iniezione, svolta su un campione di transitor per ciascun wafer, ha confermato i problemi costruttivi per i wafer V2, V5 e per tutti quelli del terzo e quarto split del lotto 2003. Per la caratterizzazione dinamica si sono dunque utilizzati i soli wafer rimasti, ossia V3 e V6, appartenenti, rispettivamente, al primo ed al secondo split. La tabella 3.4 riassume quali sono i wafer con i dispositivi funzionanti. Tabella 3.4: Wafer del secondo lotto Wafer del secondo lotto con anomalie di funzionamento Wafer disponibili (1), 2, 3 (4), 5, 6 (7), 8, 9 (10), 11, 12 Wafer utilizzati split 1: V2, V3 split 2: V5, V6 split 3: V8, V9 split 4: V11, V12 drogaggio drain (As) 2 × 1 · 1014 , 35 keV , tilt 7 2 × 4 · 1013 , 220 2 × 5 · 1013 , 220 drogaggio drain post spacer (As) 2 × 5 · 1013 , 180 2 × 3 · 1013 , 220 2 × 5 · 1013 , 220 2 × 1, 5 · 1013 , 70 drogaggio HALO (P) 2 × 1, 5 · 1013 , 70 2, 7 · 1013 , 30 keV , tilt 7 drogaggio di canale (B11) Test Vth Test ∆Vth0 2 × 3 · 1013 , 180 2 · 1013 , 140 keV , tilt 7 Ok Ok solo V3 Ok Ok solo V6 86 Difettosi — Difettosi — 3.3 3.3.1 Caratterizzazione dinamica delle celle BipFlash Curve di programmazione In una fase preliminare alla determinazione sperimentale delle curve di programmazione, sono state controllate, tramite l’oscilloscopio, le forme d’onda effettive che raggiungono i pad delle celle BipFlash e le relative temporizzazioni. Il diagramma delle forme d’onda è illustrato in Fig. 3.24. A causa dei ritardi (di circa 170µs) generati da cavi e capacità parassite sulla forma d’onda dell’impulso di corrente dell’emettitore, gli impulsi di gate e di bulk sono stati applicati sempre dopo almeno 300µs rispetto all’inizio del’impulso dell’emettitore in modo che questo raggiunga un valore stabile di corrente. La configurazione completa dei parametri di stress per la programmazione, editata tramite il programma Lab-04 ed usata nel menù di gestione del setup per la caratterizzazione dinamica (§2.3.5) è riportata in dettaglio in Fig. 2.24 e schematicamente in Fig. 3.25. La prima verifica svolta sui dispositivi è stata quella di accertarsi che il meccanismo di programmazione risultasse interdetto per VG = 0 V e per IE = 0 A, cioè che la cella si scrivesse solo durante il tempo di programmazione fissato dall’orizzonte temporale dell’impulso di gate (TG ) e che non venisse programmata per correnti di emettitore nulle (indice di una programmazione spuria non dipendente dal meccanismo di programmazione della BipFlash). Di seguito si è verificato che le curve di programmazione fossero replicabili; in Fig. 3.26 si può notare come le curve, relative a tre cicli identici di programmazione (VG = 10V , VB = 3, 5V , IE = 10µA) siano perfettamente sovrapponibili (curve con cerchietto semi-pieno). Dalle curve di programmazione, ottenute per diverse configurazioni di VG , VB , IE e per ciascun tipo di split di wafer di entrambi i lotti, è emerso che: • il nuovo meccanismo di programmazione risulta funzionante (Fig. 3.26), ma con valori prestazionali inferiori rispetto a quelli teorici simulati, a causa della modesta efficienza del transistor bipolare; in particolare, l’ulteriore riduzione del guadagno del bipolare nei dispositivi del secondo lotto provoca una notevole diminuzione della velocità di programmazione rispetto a quella ottenuta nelle celle dei wafer del primo lotto (Fig. 3.28); • le curve di programmazione sono sostanzialmente indipendenti dal valore della tensione di gate (in Fig. 3.26 le tre curve a sinistra, ottenute per VB = 3, 5V , IE = 100µA, VG = 10, 12, 14 V , risultano quasi coincidenti); • la velocità di programmazione delle celle BipFlash aumenta all’aumentare della corrente di emettitore (Fig. 3.26) e al diminuire della tensione di bulk (Fig. 3.27); • la velocità di programmazione è maggiore nei wafer con elevato drogaggio di canale (si confrontino le curve di Fig. 3.27 con quelle di Fig. 3.26); infatti quest’ultimo favorisce il meccanismo di iniezione di portatori nel gate come già visto nelle curve di iniezione presentate nel paragrafo §3.2.4; • per IE = 0 e VB < 0 le celle possono venire programmate per fenomeni di BBT, ma l’iniezione risulta essere di due ordini di grandezza inferiore rispetto a quella ottenuta con IE > 0 (Fig. 3.27) e quindi questi effetti risultano trascurabili rispetto al meccanismo di programmazione delle BipFlash. 87 TG VG da 0V a 14V VD=VS=0V TE>500us IEM da 0A a 100uA t 0V -1V VB da 0V a -5V TB ~ TG Figura 3.24: Diagramma della temporizzazione degli impulsi di programmazione della cella BipFlash. L’impulso che governa la durata della programmazione è quello di gate (TG ). Al di fuori dell’impulso, la tensione di gate, viene mantenuta ad un valore negativo (tipicamente -1V) per evitare correnti spurie dovute al BBT. da 0 a 14 V VS=0V -1 V VG da 0A a 100uA 0A IG 0 Control Gate PolySi n VD=0V IEM + Ossido interpoly - ONO Floating Gate PolySi n + Ossido di tunnel - SiO2 SiO2 SiO2 p+ canale Source n+ PB Drain n- n+ (Mp-1) p Substrato (Bulk) 0V VB IB da 0 V a -5 V Figura 3.25: Polarizzazione per la programmazione della cella BipFlash: l source e drain sono a massa; all’emettitore viene inviato (tramite una SMU) un impulso in corrente della durata minima di 500 µA; al bulk viene inviato un impulso (tramite la PGU1) di ampiezza compresa tra 0 e -5V e di durata uguale, o di poco superiore, a quella di gate; a quest’ultimo, infine, viene inviato un impulso (tramite la PGU2) di ampiezza compresa tra 0 e +14V e di durata pari al tempo di programmazione prestabilito. 88 Programmazione - Wafer 20 - 2002 Die A5 - Cella 0,72x0,60 - no N+ VG=10,12,14 V VB=-3,5 V IE =100 uA ∆Vth [V] 1 1 VG=10 V (3 cicli) VB=-3,5 V IE =10 uA Vg=10 Vb=3,5 Ie=100uA Vg=12 Vb=3,5 Ie=100uA Vg=14 Vb=3,5 Ie=100uA Vg=10 Vb=3,5 Ie=10uA 0,1 1µ 10 µ 100 µ Tempo programmazione [s] 0,1 1m Figura 3.26: Curve di programmazione sul wafer W20, primo lotto, alto drogaggio di canale. Le curve a destra si riferiscono a tre cicli di programmazione consecutivi; si può notare come le misurazioni siano ripetibili. Come si osserva invece dalle curve a sinistra, la programmazione delle celle BipFlash è indipendente dalla tensione di gate; da un confronto dei parametri delle curve emerge che la velocità di programmazione dipende dalla corrente di emettitore. Programmazione - Wafer 3 - 2002 Die I5 - Cella 0,72x0,60 - no N+ VB=-5V 1 1 DVth [V] VB=-3,5V 0,1 0,1 I5: Vg 10 - Vb -5 - Ie 0 I5: Vg 8 - Vb -3,5 - Ie 100u I5: Vg 10 - Vb -3,5 - Ie 100u I5: Vg 12 - Vb -3,5 - Ie 100u I5: Vg 8 - Vb -5 - Ie 100u I5: Vg 10 - Vb -5 - Ie 100u I5: Vg 12 - Vb -5 - Ie 100u 0,01 -6 10 -5 10 -4 10 Tempo programmazione [s] -3 0,01 10 Figura 3.27: Curve di programmazione di celle del wafer W3, primo lotto, basso drogaggio di canale. Si può osservare che: la velocità di programmazione delle celle BipFlash è indipendente dalla tensione di gate, mentre diminuendo la tensione di bulk si incrementa la velocità di programmazione; per IE = 0 e VB < 0 la cella si programma per fenomeni di BBT, ma l’iniezione risulta essere di due ordini di grandezza inferiore a quella intrinseca della cella BipFlash e quindi trascurabile. 89 Programmazione - Wafer 3 - 2003 Die G5 - Cella 0,72x0,60 - no N+ G5 Vg 8 - Vb 0 - Ie 0 G5 Vg 8 - Vb -3,5 - Ie 0 G5 Vg 8 - Vb -3,5 - Ie 100u 1 ∆Vth [V] 1 0,1 0,01 -6 10 0,1 -5 10 -4 10 -3 -2 10 10 Tempo programmazione [s] -1 10 0,01 0 10 Figura 3.28: Curve di programmazione di celle del wafer V3, secondo lotto, basso drogaggio di canale. Anche nei wafer del secondo lotto il meccanismo di iniezione della BipFlash permette la programmazione delle celle; purtroppo la minore efficienza del transistor bipolare provoca una notevole diminuzione della velocità di programmazione. 90 3.3.2 Curve di cancellazione Per cancellare una memoria Flash NOR standard, ossia per togliere elettroni dal floating gate, viene utilizzato l’effetto tunnel Fowler-Nordheim (FN) che sfrutta la probabilità non nulla che hanno gli elettroni di attraversare una barriera di potenziale, pur non avendo l’energia sufficiente per scavalcarla7 . Questo comportamento non si può spiegare tramite la fisica classica, ed è un effetto di natura quantistica: la funzione d’onda associata all’elettrone, quando incontra la barriera di potenziale, viene in parte riflessa ed in parte trasmessa; se lo spessore dell’isolante è abbastanza sottile, l’onda trasmessa può raggiungere il catodo dando luogo ad una corrente apprezzabile. La probabilità di attraversare l’ossido dipende dal campo elettrico presente al suo interno, in quanto questo modifica la barriera di potenziale. Applicando una differenza di potenziale ∆V sufficientemente elevata tra le armature di un condensatore MOS è possibile piegare le bande in modo tale da ottenere nell’ossido una barriera di potenziale triangolare attraverso la quale la probabilità di tunneling risulta molto superiore. Si ottiene così una corrente di gate con la quale è possibile alterare lo stato di carica di un gate flottante e quindi cancellare (o scrivere) una memoria non volatile (Fig. 3.29). eox VG<0 VB=0 N+ poly ossido silicio Figura 3.29: Tunneling Fowler-Nordheim; la differenza di potenziale piega la banda di conduzione e favorisce il tunneling degli elettroni attraverso la barriera di potenziale. La densità di corrente di tunneling FN ha una forte dipendenza esponenziale rispetto al valore assunto dal campo elettrico nell’ossido, e può essere espressa mediante [30]: |JF N | = AF N · ε2ox µ ¶ BF N · exp − εox (3.5) ove εox è il campo elettrico nell’ossido, mentre AF N e BF N sono due costanti che possono essere ricavate per via sperimentale. La configurazione dei parametri di stress, editata tramite il programma Lab-04 ed usata nel menù di gestione del setup per la caratterizzazione dinamica (§2.3.5) per inviare impulsi alle celle BipFlash e ricavarne le curve di cancellazione, è riportata in dettaglio in Fig. 2.25 e schematicamente in Fig. 3.30. In Fig. 3.31 vengono mostrate le curve di cancellazione di celle di wafer del primo e del secondo lotto. Si può notare come nella cancellazione per Fowler-Norheim a tensioni costanti la velocità di cancellazione diminuisca esponenzialmente nel tempo, poiché il campo elettrico sull’ossido decresce al diminuire della soglia della cella; per superare questo limite si possono sfruttare schemi alternativi, quali la cancellazione a tensione crescente. 7 Nei meccanismi di programmazione CHE (§1.1.1) e CHISEL (§1.1.2) i portatori a più alta energia (caldi) superano la barriera di potenziale dell’ossido. 91 VG 0V VS=0V IG -14 V VD=0V E flot. Control Gate PolySi n + Ossido interpoly - ONO Floating Gate PolySi n + Ossido di tunnel - SiO2 SiO2 SiO2 p+ Source n+ Drain n- n+ p Substrato (Bulk) VB=0V Figura 3.30: La cancellazione per FN delle celle BipFlash è stata ottenuta lasciando flottante l’elettrodo di emettitore e collegati a massa il drain, il source ed il bulk ed inviando un impulso negativo di tensione al gate. Cancellazione - Wafer 2002: 3, 12, 20; 2003: 3, 6 Vth(0) = 6 V Cella 0,72x0,60 - No N+ V3: Vg = -14V V6: Vg = -14V W3: Vg = -14V W12: Vg = -14V W20: Vg = -14V 6 5 Vth [V] 4 3 2 1 0 -6 10 -5 10 -4 10 -3 -2 10 10 Tempo cancellazione [s] -1 10 0 10 Figura 3.31: Curve di cancellazione di celle di wafer del primo e del secondo lotto. Si può notare come nella cancellazione per Fowler-Norheim a tensioni costanti la velocità di cancellazione diminuisca esponenzialmente nel tempo, poiché il campo elettrico sull’ossido decresce al diminuire della soglia della cella. 92 Capitolo 4 Conclusioni e sviluppi futuri L’obiettivo del lavoro svolto nella presente tesi è stato quello di indagare sperimentalmente il comportamento statico e dinamico di dispositivi BipFlash appartenenti a due diversi lotti di fabbricazione forniti dalla ST Microelectronics. Sfruttando un differente meccanismo di scrittura ed un differente layout, le celle di memoria BipFlash, di recente concezione, dovrebbero, perlomeno sulla scorta di studi e simulazioni preliminari, raggiungere livelli di efficienza di molto superiori rispetto alle memorie Flash tradizionali. Un primo lotto era stato già sottoposto a preliminari test di verifica nel corso di una precedente ricerca; i risultati mettevano in evidenza alcuni problemi: • una bassa efficienza del transistor bipolare; • la presenza di fenomeni di iniezione spuri su celle con doping di canale molto elevato, dovuti a meccanismi di band to band tunneling, innescati dall’applicazione di una tensione di substrato. Al fine di correggere le problematiche sopra menzionate è stato realizzato un nuovo lotto di dispositivi, dei quali è stata effettuata nel presente lavoro una caratterizzazione statica e dinamica delle prestazioni. Dalle misure ottenute per la caratterizzazione statica, confrontate con quelle del primo lotto di dispositivi, è emerso che: 1. nel nuovo lotto non tutti gli split realizzati sono risultati in celle funzionanti, ed anche per quelli funzionanti non sempre le misure sono risultate rieseguibili; inoltre, i valori di efficienza rimangono modesti e spesso inferiori a quelli del lotto precedente; ciò è probabilmente imputabile all’utilizzo di processi produttivi non ancora ottimizzati per la realizzazione del transistor bipolare; 2. i fenomeni di iniezione tramite meccanismi di band to band tunneling appaiono eliminati; ciò è con ogni probabilità dovuto alla riduzione del drogaggio della zona di canale in questo nuovo lotto di fabbricazione. Si è a questo punto proceduto, al fine di completare l’analisi sperimentale dei dispositivi, ad una caratterizzazione dinamica degli stessi. Poiché la determinazione delle curve di programmazione e cancellazione è più complessa rispetto alla caratterizzazione statica e richiede una gestione sequenziale dei setup di misura, è apparso subito opportuno automatizzare la procedura di test tramite un programma realizzato su calcolatore, sviluppato in ambiente Linux e 93 chiamato Lab-04. Nella sua prima versione, realizzata per le finalità del presente lavoro ma suscettibile di estensioni e perfezionamenti, il programma permette di gestire due strumenti: un oscilloscopio e un analizzatore di parametri di dispositivi a semiconduttore, l’Agilent 4156C. Quest’ultimo è stato implementato in modo che il software replicasse i vari menù dello strumento, consentendo quindi l’editing delle configurazioni di misura e di invio impulsi. Il programma ha permesso di gestire un setup che permette di impostare sullo strumento, secondo la sequenza voluta, una configurazione di misura, una di invio impulsi per la programmazione del dispositivo ed una di invio impulsi per la cancellazione. In tal modo, in maniera completamente automatica, sono stati ricavati i dati utili alla costruzione delle curve di programmazione e cancellazione delle BipFlash sottoposte a test. Dai risultati ottenuti si può concludere che il nuovo meccanismo di programmazione risulta funzionante, ma con valori prestazionali inferiori rispetto a quelli teorici simulati, a causa della modesta efficienza del transistor bipolare. Nella sua forma attuale, il programma Lab-04 potrebbe essere impiegato su nuovi lotti di celle BipFlash realizzate impiegando processi ulteriormente perfezionati. Inoltre, essendo concepito per essere un’applicazione versatile ed espandibile, questo software potrà essere ampliato: 1. introducendo nuove funzioni per la gestione di altri strumenti; 2. creando nuovi menù per la gestione di altri setup di misura. Sembra consigliabile in tal caso una revisione del codice, al fine di usare i file XML, generati dal programma di creazione di interfaccia grafica Glade, direttamente nel programma di misura. 94 Appendice A Datasheet degli strumenti A.1 Agilent 4156 C Caratteristiche elettriche delle unità: SMU (4) Range di misura: Tensione: 2 µV/200 V Corrente: 1 fA/1 A Risoluzione di misura: Tensione: 2 µV Corrente: 1 fA Precisione di misura: Tensione: 200 µV Corrente: 20 fA larghezza impulso: 500 µs/100 ms VSU (2) Range: ±20 V Risoluzione: 1 mV VMU (2) precisione: 200 µV risoluzione: 2 µV in modalità differenziale: precisione: 10 µV risoluzione: 0,2 µV PGU (2) - disponibili con l’estensione Agilent 41501A/B range: ± 40V corrente in uscita: ± 200 mA larghezza minima dell’impulso: 1 µs periodo minimo: 2 µs GNDU (1) - disponibile con l’estensione Agilent 41501A/B corrente massima in uscita: ± 1,6 A 95 A.2 Oscilloscopio Tektronix 520 B Le principali caratteristiche tecniche dello strumento sono: – acquisizione InstaVu (100,000 wfms/sec frequenza di campionamento); – larghezza di banda di 500MHz; – frequenza di campionamento sino a 2 GS/s; – 2 canali d’ingresso; – 1 mV/div - 10 V/div sensibilità; – display a memoria con effetto di persistenza; – memoria dati sino a 50,000 punti (estendibile a 250K); – risoluzione verticale a 8-bit, 12 bits in modalità di acquisizione HiRes; – tolleranza verticale 1%; – processore DSP Tek TriStar; – zoom, doppia finestra di visualizzazione; – Channel Deskew; – 25 misurazioni automatiche; – piena compatibilità GPIB; – connettore di uscita video VGA. 96 Appendice B Programmi in IBasic Vengono di seguito riportati, a titolo di esempio, i listati di due programmi scritti in linguaggio IBASIC utilizzati per la determinazione di alcune caratteristiche statiche tramite lo strumento Agilent 4156C. B.1 Programma “isoglia.txt” Il programma isoglia.txt permette di determinare le variazioni di soglia VT H e della trasconduttanza gm del transistor equivalente della BipFlash, in funzione della corrente d’iniezione (IE ) e della tensione di substrato (VB ). 10 COM @Hp415x 20 ASSIGN @Hp415x TO 800 30 DIM Dvb(20),Dgm(20) 40 DIM Vth(20),Gmmax(20),Vg(71),Ig(71) 50 DIM Ie(8) 60 ! 70 DATA 0,0 80 DATA 1E-6,2E-6,5E-6 90 DATA 10E-6,20E-6,50E-6 100 DATA 100E-6 110 READ Ie(*) 120 DIM Par$(1:8)[8] 130 DIM Dati(1:1000,0:8) 140 DIM Dato(1:1000) 150 DIM Rigaparametri1$[50],Rigaparametri2$[50],Rigaparametri$[100] 160 ! 170 !**** Parametri da estrarre **** 180 ! 190 Par$(1)="VG" 200 Par$(2)="IG" 210 Par$(3)="VE" 220 Par$(4)="IE" 230 Par$(5)="ID" 240 Par$(6)="VB" 250 Par$(7)="IB" 97 260 270 271 272 280 " 290 " 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 760 Par$(8)="" Parametri=0 Cont=0 Flag=0 Rigaparametri1$="N "&" 1:"&Par$(1)&" 2:"&Par$(2)& 3:"&Par$(3)&" 4:"&Par$(4) Rigaparametri2$=" 5:"&Par$(5)&" 6:"&Par$(6)& 7:"&Par$(7)&" 8:"&Par$(8) Rigaparametri$=Rigaparametri1$&Rigaparametri2$ FOR I=1 TO 8 IF LEN(Par$(I))>0 THEN Parametri=Parametri+1 NEXT I PRINT Parametri OUTPUT @Hp415x;":DISP ON" OUTPUT @Hp415x;":PAGE:GLIS" OUTPUT @Hp415x;":DISP:ALL BST" ! ! **** carico i file .MES in memoria **** ! INPUT "Vuoi caricare i file .MES? (Si/No)",B$ IF B$="s" OR B$="S" THEN OUTPUT @Hp415x;":MMEM:DEST INT" OUTPUT @Hp415x;":MMEM:LOAD:STAT 0,’M1SOGLIA.MES’,’DISK’" OUTPUT @Hp415x;":MMEM:STOR:STAT 0,’MEM1.MES’,’MEMORY’" OUTPUT @Hp415x;":MMEM:LOAD:STAT 0,’M2INIEZ.MES’,’DISK’" OUTPUT @Hp415x;":MMEM:STOR:STAT 0,’MEM2.MES’,’MEMORY’" END IF ! ! **** Setto Vb e leggo numero misure **** ! REPEAT REPEAT INPUT "Valore per Vb (da 0 a -5) ",Vb UNTIL Vb>-5.1 AND Vb<.1 OUTPUT @Hp415x;":MMEM:LOAD:STAT 0,’MEM2.MES’,’MEMORY’" OUTPUT @Hp415x;":PAGE:MEAS:CONS:SMU3 ";Vb OUTPUT @Hp415x;":MMEM:STOR:STAT 0,’MEM2.MES’,’MEMORY’" OUTPUT @Hp415x;":PAGE:MEAS:SWE:VAR1:STOP?" ENTER @Hp415x;Stop OUTPUT @Hp415x;":PAGE:MEAS:SWE:VAR1:STAR?" ENTER @Hp415x;Start OUTPUT @Hp415x;":PAGE:MEAS:SWE:VAR1:STEP?" ENTER @Hp415x;Step Misure=INT((Stop-Start)/Step)+1 PRINT Start,Stop,Step,Misure REDIM Dati(1:Misure,0:8) FOR I=1 TO Misure Dati(I,0)=I NEXT I REDIM Dato(1:Misure) ! 98 770 ! *** misuro la soglia Vth per Vb=0 *** 780 ! 790 OUTPUT @Hp415x;":MMEM:LOAD:STAT 0,’MEM1.MES’,’MEMORY’" 800 OUTPUT @Hp415x;":PAGE:MEAS:MSET:ITIM:MODE MED" 810 OUTPUT @Hp415x;":PAGE:SCON:MEAS:SING" 820 OUTPUT @Hp415x;"*OPC?" 830 ENTER @Hp415x;Complete 840 OUTPUT @Hp415x;":DATA? ’VTH’ " 850 ENTER @Hp415x;Vthzero 860 OUTPUT @Hp415x;":DATA? ’GMMAX’ " 870 ENTER @Hp415x;Gmmaxzero 880 ! OUTPUT @Hp415x;":DISP:ALL BAS" 890 PRINT "*** Valori per Vb=0 ***"; 900 PRINT "Vth= ";Vthzero;" GmMax= ";Gmmaxzero 910 INPUT "Valore per Delta Vth (in mV): ",Diffv 920 Diff=Diffv/1000 930 DISP "Per Vb=0 Vth= ";Vthzero;" GmMax= ";Gmmaxzero 940 IF Cont<>1 THEN 950 INPUT "Vuoi Salvare i Dati? ",R$ 960 IF R$="s" OR R$="S" THEN 970 Flag=1 980 REPEAT 990 INPUT "Codice Wafer e Die (Max 5 caratteri):",Nome$ 1000 UNTIL LEN(Nome$)<6 1010 Cella$="VTY"&Nome$ 1020 CREATE Cella$,1 1030 ASSIGN @File TO Cella$;FORMAT ON 1040 OUTPUT @File;"*** Misure di Iniezione a diversi Vb e variazione soglia Vth ***" 1050 OUTPUT @File;"Cella: ";Nome$ 1060 OUTPUT @File;"" 1070 END IF 1080 END IF 1081 IF Flag=1 THEN 1082 OUTPUT @File;"Vb: ";Vb 1083 OUTPUT @File;Rigaparametri$ 1084 END IF 1090 ! 1100 ! *** inietto Ie e rimisuro la soglia *** 1110 ! 1120 I=0 1130 REPEAT 1140 I=I+1 1150 ! OUTPUT @Hp415x;":DISP OFF" 1160 OUTPUT @Hp415x;":MMEM:LOAD:STAT 0,’MEM2.MES’,’MEMORY’" 1170 OUTPUT @Hp415x;":PAGE:MEAS:CONS:SMU1:SOUR";Ie(I) 1180 OUTPUT @Hp415x;":PAGE:MEAS:MSET:ITIM:MODE LONG" 1190 OUTPUT @Hp415x;":PAGE:SCON:MEAS:SING" 1200 OUTPUT @Hp415x;"*OPC?" 1210 ENTER @Hp415x;Complete 1220 ! OUTPUT @Hp415x;"PAGE:GLIS:MARK:SKIP" 99 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1381 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1595 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 ! OUTPUT @Hp415x;"PAGE:GLIS:AAN" ! !**** Estrazione Datasheet **** ! FOR J=1 TO Parametri OUTPUT @Hp415x;":DATA? ’"&Par$(J)&"’" ENTER @Hp415x;Dato(*) PRINT Dato(*) FOR M=1 TO Misure Dati(M,J)=Dato(M) NEXT M NEXT J ! !**** Rimisurazione soglia **** ! OUTPUT @Hp415x;":MMEM:LOAD:STAT 0,’MEM1.MES’,’MEMORY’" OUTPUT @Hp415x;":PAGE:MEAS:MSET:ITIM:MODE MED" OUTPUT @Hp415x;":PAGE:SCON:MEAS:SING" OUTPUT @Hp415x;"*OPC?" ENTER @Hp415x;Complete ! OUTPUT @Hp415x;"PAGE:GLIS:MARK:SKIP" OUTPUT @Hp415x;"PAGE:GLIS:AAN" OUTPUT @Hp415x;":DATA? ’VTH’ " ENTER @Hp415x;Vth(I) OUTPUT @Hp415x;":DATA? ’GMMAX’ " ENTER @Hp415x;Gmmax(I) ! PAUSE Dvb(I)=ABS(Vthzero-Vth(I)) Dgm(I)=ABS(Gmmaxzero-Gmmax(I)) DISP "dopo Ie=";Ie(I);" Vth=";Vth(I);"Delta Vth=";Dvb(I);" GmMax=";Gmmax(I) PRINT "dopo Ie=";Ie(I);" Delta Vth=";Dvb(I);Diff;" Delta GmMax=";Dgm(I) ! !**** Salvo datasheet relativo alla singola Ie **** ! IF Flag=1 THEN OUTPUT @File USING "9(#,K,10X),L";Dati(*) OUTPUT @Hp415x;"*OPC?" ENTER @Hp415x;Complete BEEP 700,1 END IF UNTIL Dvb(I)>Diff OR Ie(I)>5.E-5 ! !**** Salvo variazioni soglia relative alle iniezioni per un dato Vb **** ! IF Flag=1 THEN OUTPUT @File;"Ie, Delta Vth, Delta GmMax, Vth(Vb=0), GmMax(Vb=0)" OUTPUT @File;"0, ";Vthzero,Gmmaxzero FOR N=1 TO I OUTPUT @File;Ie(N),Dvb(N),Dgm(N),Vth(N),Gmmax(N) NEXT N END IF 100 1711 1720 1721 1730 1740 1750 1760 1770 1780 BEEP 1500,2 INPUT "Altra misura per Vb diverso? (S/N) ",T$ Cont=0 IF T$="s" OR T$="S" THEN Cont=1 UNTIL Cont<>1 ASSIGN @File TO * DISP "*** FINE Programma ***" BEEP 2000,1 END 101 B.2 Programma “vsoglia.txt” Il programma vsoglia.txt permette di determinare le variazioni di soglia VT H e della trasconduttanza gm del transistor equivalente della BipFlash, in funzione della tensione di substrato (VB ). 10 15 22 23 24 26 27 28 29 30 31 32 33 35 40 50 55 60 70 71 80 81 85 90 100 110 120 121 125 130 133 135 136 137 140 141 150 160 170 171 180 190 200 201 COM @Hp415x ASSIGN @Hp415x TO 800 DIM Vthb(50),Gmmaxb(50),Dvb(50),Dgm(50) DIM Vth(50),Gmmax(50) DIM Vb(19) DATA 0,-0.5,-1,-1.5, DATA -2,-2.2,-2.4,-2.6,-2.8 DATA -3,-3.2,-3.4,-3.6,-3.8 DATA -4,-4.2,-4.4,-4.6,-4.8,-5 READ Vb(*) OUTPUT @Hp415x;":DISP ON" OUTPUT @Hp415x;":PAGE:GLIS" OUTPUT @Hp415x;":DISP:ALL BST" OUTPUT @Hp415x;":PAGE:SCON:stan on" OUTPUT @Hp415x;":PAGE:MEAS:CONS:SMU3 0" OUTPUT @Hp415x;":PAGE:SCON:MEAS:SING" OUTPUT @Hp415x;"*OPC?" ENTER @Hp415x;Complete OUTPUT @Hp415x;":DATA? ’VTH’ " ENTER @Hp415x;Vthzero OUTPUT @Hp415x;":DATA? ’GMMAX’ " ENTER @Hp415x;Gmmaxzero ! PAUSE ! OUTPUT @Hp415x;":DISP:ALL BAS" PRINT "*** Valori per Vb=0 ***"; PRINT "Vth= ";Vthzero;" GmMax= ";Gmmaxzero INPUT "Valore per Delta Vth (in mV): ",Diffv Diff=Diffv/1000 DISP "Per Vb=0 Vth= ";Vthzero;" GmMax= ";Gmmaxzero ! OUTPUT @Hp415x;":DISP:ALL BST" I=0 REPEAT I=I+1 OUTPUT @Hp415x;":DISP OFF" OUTPUT @Hp415x;":PAGE:MEAS:swe:CONS:SMU3:sour ";Vb(I) ! OUTPUT @Hp415x;":DISP ON" OUTPUT @Hp415x;":PAGE:SCON:MEAS:APP" OUTPUT @Hp415x;"*OPC?" ENTER @Hp415x;Complete ! OUTPUT @Hp415x;":DISP OFF" OUTPUT @Hp415x;"PAGE:GLIS:MARK:SKIP" OUTPUT @Hp415x;"PAGE:GLIS:AAN" OUTPUT @Hp415x;":DATA? ’VTH’ " ENTER @Hp415x;Vthb(I) 102 210 211 220 340 350 360 370 380 390 400 410 420 430 440 500 520 530 535 540 550 551 560 800 1000 1001 1010 1020 1021 1022 1023 1024 1025 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1122 1125 1126 1127 1129 1130 1131 1132 1134 OUTPUT @Hp415x;":DATA? ’GMMAX’ " ENTER @Hp415x;Gmmaxb(I) DISP "Vb=";Vb(I);" Vth=";Vthb(I);" GmMax=";Gmmaxb(I) OUTPUT @Hp415x;":PAGE:MEAS:swe:CONS:SMU3:sour 0" OUTPUT @Hp415x;":PAGE:SCON:MEAS:APP" OUTPUT @Hp415x;"*OPC?" ENTER @Hp415x;Complete OUTPUT @Hp415x;"PAGE:GLIS:MARK:SKIP" OUTPUT @Hp415x;"PAGE:GLIS:AAN" OUTPUT @Hp415x;":DATA? ’VTH’ " ENTER @Hp415x;Vth(I) OUTPUT @Hp415x;":DATA? ’GMMAX’ " ENTER @Hp415x;Gmmax(I) ! PAUSE ! OUTPUT @Hp415x;":DISP:ALL BAS" Dvb(I)=ABS(Vthzero-Vth(I)) Dgm(I)=ABS(Gmmaxzero-Gmmax(I)) DISP "dopo Vb=";Vb(I);" Vth=";Vth(I);"Delta Vth=";Dvb(I);" GmMax=";Gmmax(I) PRINT "Per Vb=";Vb(I);" Vth= ";Vthb(I);" GmMax= ";Gmmaxb(I) PRINT " Vb=0 ";Vth(I);" Delta Vth=";Dvb(I);Diff PRINT " Vb=0 ";Gmmax(I);" Delta GmMax=";Dgm(I) ! PAUSE UNTIL Dvb(I)>Diff OR Vb(I)<-4.8 OUTPUT @Hp415x;":PAGE:SCON:stan off" OUTPUT @Hp415x;":DISP ON" INPUT "Vuoi Salvare? (Si/No)",A$ IF A$="s" OR A$="S" THEN REPEAT INPUT "Codice Wafer e Die (Max 5 caratteri):",Nome$ UNTIL LEN(Nome$)<6 Nome_save$="VTZ"&Nome$ Nome_dat$=Nome_save$&".DAT" DISP "Salvo file ASCII" CREATE "VEG"&Nome$,1 ASSIGN @File TO "veg"&Nome$;FORMAT ON OUTPUT @File;"/ Wafer e cella: ";Nome$ OUTPUT @File;"Vb, Vth, GmMax, Delta Vth, Delta GmMax, Vth(Vb=0), GmMax(Vb=0)" OUTPUT @File;"0,";Vthzero,Gmmaxzero FOR N=1 TO I OUTPUT @File;Vb(N),Vthb(N),Gmmaxb(N),Dvb(N),Dgm(N),Vth(N),Gmmax(N) NEXT N ASSIGN @File TO * PAUSE DISP "Salvo Foglio dati e File .DAT" PRINT Nome_save$ OUTPUT @Hp415x;":MMEM:DEST INT" OUTPUT @Hp415x;":MMEM:STOR:SSH:DEL TAB" OUTPUT @Hp415x;":MMEM:STOR:SSH ’"&Nome_save$&"’" OUTPUT @Hp415x;"*OPC?" ENTER @Hp415x;Complete PRINT Nome_dat$ 103 1140 1150 1160 1170 1181 9990 OUTPUT @Hp415x;":MMEM:STOR:TRAC DEF,’"&Nome_dat$&"’,’DISK’" OUTPUT @Hp415x;"*OPC?" ENTER @Hp415x;Complete END IF DISP "*** FINE Programma ***" END 104 Appendice C Programma “Lab-04” Vengono di seguito riportati i listati dei file main.c, callbacks.h e callbacks.c scritti in linguaggio C e utilizzati per la gestione delle funzioni di callback del programma Lab-04. C.1 File “main.c” #ifdef HAVE_CONFIG_H # include <config.h> #endif #include <gtk/gtk.h> #include "interface.h" #include "support.h" extern void inizializza (void); GtkWidget *window_Main; GtkWidget *window_ChDef; GtkWidget *fileselection1; GtkWidget* window_Fun_Var; GtkWidget* window_Sweep; GtkWidget* window_Measure; GtkWidget* window_Analysis; GtkWidget* window_Graphics; GtkWidget* window_Stress; GtkWidget* window_Schema; GtkWidget* window_Errors; GtkWidget* window_Spreadsheet; int main (int argc, char *argv[]) { gtk_set_locale (); gtk_init (&argc, &argv); add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); add_pixmap_directory ("/root/Projects/test_pulsanti/pixmaps"); add_pixmap_directory ("/home/gpib/prove_pat/test_pulsanti/pixmaps"); 105 /* * The following code was added by Glade to create one of each component * (except popup menus), just so that you see something after building * the project. Delete any components that you don’t want shown initially. */ //inizializza(); window_Main = create_window_Main (); window_ChDef=create_window_ChDef(); window_Fun_Var=create_window_Fun_Var (); window_Sweep=create_window_Sweep (); window_Measure=create_window_Measure(); window_Analysis=create_window_Analysis(); window_Graphics=create_window_Graphics(); window_Stress=create_window_Stress(); window_Schema=create_window_Schema(); window_Errors=create_window_Errors(); window_Spreadsheet=create_window_Spreadsheet(); //fileselection1=create_fileselection1(); gtk_widget_show (window_Main); /* gtk_widget_show (window_Fun_Var); gtk_widget_show (window_Sweep); gtk_widget_show (window_Measure); gtk_widget_show (window_Analysis); gtk_widget_show (window_Graphics); gtk_widget_show (window_Stress);*/ gtk_main (); return 0; } 106 C.2 File “callbacks.h” #include <gtk/gtk.h> /****** #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define DEFINE delle variabili dello strumento Agilent 4156C *******/ CC 0 CM 1 CS1V 2 CS2V 3 CS3V 4 CS4V 5 CS1I 6 CS2I 7 CS3I 8 CS4I 9 CS1M 10 CS2M 11 CS3M 12 CS4M 13 CS1F 14 CS2F 15 CS3F 16 CS4F 17 CS1S 18 CS2S 19 CS3S 20 CS4S 21 CS1R 22 CS2R 23 CS3R 24 CS4R 25 CV1V 26 CV2V 27 CV1M 28 CV2M 29 CV1F 30 CV2F 31 CV1S 32 CV2S 33 CVm1V 34 CVm2V 35 CVm1M 36 CVm2M 37 CVm1C 38 CP1V 39 CP2V 40 CP1M 41 CP2M 42 CP1S 43 CP2S 44 CGV 45 CGM 46 FINEChDef 47 //fine ChDef INIZIOsweep 47 // Inizio variabili sweep MV1M 47 MV1LL 48 MSS 49 MPI1 50 MPI2 51 107 #define #define #define #define #define #define #define #define #define FINEsweep 52 // Fine variabili sweep INIZIOanalysis 52 // Inizio variabili analisi AL1M 52 AL1L 53 AL1G 54 AL1P1M 55 AL1P2M 56 AL1P1F 57 AL1P1V 58 #define AL1P1FA 59 #define AL1P1VA 60 #define AL1P2F 61 #define AL1P2V 62 #define AL1P2FA 63 #define AL1P2VA 64 #define #define #define #define #define #define #define #define #define #define AL1P1A 65 AL1P2A 66 AL1P1P 67 AL1P2P 68 AL1P1AS 69 AL1P2AS 70 AL1P1X 71 AL1P1Y 72 AL1P2X 73 AL1P2Y 74 #define #define #define #define AL1TF 75 AL1TV 76 AL1TFA 77 AL1TVA 78 #define AL1TA 79 #define AL1TP 80 #define AL1TAS 81 #define #define #define #define #define #define #define AL2M 82 //linea 2 AL2L 83 AL2G 84 AL2P1M 85 AL2P2M 86 AL2P1F 87 AL2P1V 88 #define AL2P1FA 89 #define AL2P1VA 90 #define AL2P2F 91 #define AL2P2V 92 #define AL2P2FA 93 #define AL2P2VA 94 #define AL2P1A 95 108 #define #define #define #define #define #define #define #define #define AL2P2A 96 AL2P1P 97 AL2P2P 98 AL2P1AS 99 AL2P2AS 100 AL2P1X 101 AL2P1Y 102 AL2P2X 103 AL2P2Y 104 #define #define #define #define AL2TF 105 AL2TV 106 AL2TFA 107 AL2TVA 108 #define #define #define #define #define #define AL2TA 109 AL2TP 110 AL2TAS 111 AMI 112 AMF 113 AMV 114 #define AMFA 115 #define AMVA 116 #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define AMA 117 AMP 118 AMAS 119 FINEanalysis 120 // Fine variabili analisi INIZIOgraphics 120 // Inizio variabili graphics DDR 120 DGG 121 DGLP 122 DGNX 123 DGNY1 124 DGNY2 125 DGSX 126 DGSY1 127 DGSY2 128 DDM 129 DDV1 130 DDV2 131 DDV12 132 DP1 133 DP2 134 DP3 135 DP4 136 DP5 137 DP6 138 DP7 139 DP8 140 DP18 141 FINEgraphics 142 // Fine variabili graphics display INIZIOmeasure 142 // Inizio variabili measure MOTS 142 MOTF 143 MOTP 144 109 #define #define #define #define #define #define #define MSZC 145 MSRMS1 146 MSRMS2 147 MSRMS3 148 MSRMS4 149 MSRMV1 150 MSRMV2 151 #define #define #define #define #define #define MSRS1 MSRS2 MSRS3 MSRS4 MSRV1 MSRV2 152 153 154 155 156 157 #define #define #define #define #define #define MSZC1 MSZC2 MSZC3 MSZC4 MSZC5 MSZC6 158 159 160 161 162 163 #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define MOU1 164 MOU2 165 MOU3 166 MOU4 167 MOU5 168 MOU6 169 MOU7 170 MOU8 171 MOUS 172 FINEmeasure 173 // Fine variabili measure INIZIOmenu4156 173 // Inizio menu 4156 SCS 173 SCSB 174 CALAU 175 MSIT 176 FINEmenu4156 177 // Fine menu 4156 INIZIOspreadsheet 177 // Inizio parametri letti PL1 177 PL2 178 PL3 179 PL4 180 PL5 181 PL6 182 PL7 183 PL8 184 VL1 185 VL2 186 #define FINEspreadsheet 187 // FINE parametri letti #define TEMP1 187 #define TEMP2 188 /****** Measure numeri ******/ 110 #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define MCS1S 0 MCS2S 1 MCS3S 2 MCS4S 3 MCS1C 4 MCS2C 5 MCS3C 6 MCS4C 7 MCV1S 8 MCV2S 9 MCP1S 10 MCP2S 11 MV1Sta 12 MV1Sto 13 MV1Ste 14 MV1NSte 15 MV1Co 16 MV1PCo 17 MV2Sta 18 MV2Ste 19 MV2NSte 20 MV2Sto 21 MV2Co 22 MV2PCo 23 MV1DO 24 MV1DR 25 MV1DCo 26 MV1DPCo 27 MVPBa 28 MVPPe 29 MVPWi 30 MHT 31 MDT 32 MPU12P 33 MPU12C 34 MPU1W 35 MPU1D 36 MPU1K 37 MPU1B 38 MPU1L 39 MPU1T 40 MPU2W 41 MPU2D 42 MPU2P 43 MPU2B 44 MPU2L 45 MPU2T 46 FINEsweepNum 47 // Fine variabili numeriche sweep INIZIOgraphicsNum 47 // Inizio variabili numeriche graphics MGXA 47 MGXB 48 MGY1A 49 MGY1B 50 MGY2A 51 MGY2B 52 FINEgraphicsNum 53 // Fine variabili numeriche graphics INIZIOMeasOutNum 53 // Inizio variabili numeriche Meas-Output MOWT 53 111 #define #define #define #define #define #define #define #define #define #define #define #define #define #define MOTT 54 MOST 55 MOSNT 56 MOMT 57 MOMNT 58 MOLT 59 MOLNT 60 MORS1 61 MORS2 62 MORS3 63 MORS4 64 MORV1 65 MORV2 66 FINEMeasOutNum 67 // Fine variabili numeriche Meas-Output #define NTEMP1 67 #define NTEMP2 68 /****** Stress ******/ #define SC 0 #define SS1N 1 #define SS2N 2 #define SS3N 3 #define SS4N 4 #define SS1M 5 #define SS2M 6 #define SS3M 7 #define SS4M 8 #define SS1F 9 #define SS2F 10 #define SS3F 11 #define SS4F 12 #define SV1N 13 #define SV2N 14 #define SV1M 15 #define SV2M 16 #define SV1F 17 #define SV2F 18 #define SP1N 19 #define SP2N 20 #define SP1M 21 #define SP2M 22 #define SP1F 23 #define SP2F 24 #define SGN 25 #define SGM 26 #define SGF 27 #define S1M 28 #define S2M 29 #define S3M 30 #define S4M 31 #define S1S 32 #define S2S 33 #define S3S 34 #define S4S 35 #define STP 36 #define STS 37 #define SSM 38 #define SSF 39 112 #define #define #define #define /****** #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define SSS 40 SPI1 41 SPI2 42 FINEstress 43 // Fine variabili stress Stress numeri ******/ SCS1S 0 SCS2S 1 SCS3S 2 SCS4S 3 SCS1C 4 SCS2C 5 SCS3C 6 SCS4C 7 SCV1S 8 SCV2S 9 SCP1S 10 SCP2S 11 SPU1P 12 SPU1W 13 SPU1D 14 SPU1K 15 SPU1B 16 SPU1L 17 SPU1T 18 SPU2W 19 SPU2D 20 SPU2K 21 SPU2B 22 SPU2L 23 SPU2T 24 SDU 25 SPC 26 SHT 27 SAT 28 SFAT 29 FINEnumstress 30 // Fine variabili numeriche stress //*** BIPFLASH define ******* #define BF1WAF 0 #define BF1CEL 1 #define BF1DIE 2 #define BF1NOT 3 #define BF1DAT 4 #define BF1ORA 5 #define BF1TEM 6 #define BF1FMS 7 #define BF1FSS 8 #define BF1FSC 9 #define BF1FOUT 10 #define FINEBF1 11 // Fine BipFlash P1 //*** BIPFLASH numeri define ******* #define BF1VBV 0 #define BF1VGV 1 #define BF1VEV 2 #define BF1VDV 3 113 #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define BF1VSV 4 BF1VBD 5 BF1VGD 6 BF1VED 7 BF1VDD 8 BF1VSD 9 BF1VNC 10 BF1CBV 11 BF1CGV 12 BF1CEV 13 BF1CDV 14 BF1CSV 15 BF1CBD 16 BF1CGD 17 BF1CED 18 BF1CDD 19 BF1CSD 20 BF1CNC 21 FINEBF1N 22 // Fine BipFlash P1 //**** Costanti per i campi **** #define VMIN -200 #define VMAX 200 #define VPAS 1e-4 #define IMIN -1 #define IMAX 1 #define IPAS 1e-14 //**** Costanti per i campi **** #define MAXDATI 10000 /**** Funzioni Logiche per le variabili *****/ void conta_var12d (void); //**************************************** struct var_n { gchar* nome; gchar* valstr; gdouble valnum; gdouble valmin; gdouble valmax; gdouble passo; gchar* modo; gchar* comando; guint flag; gchar* cella; }; //******* GPIB *********** void gpiberr (char *msg); void scrivi (int ud, char *c, int echo); int leggi (int ud, char *string,int dim_buf); 114 gdouble domanda void (int ud,char *comando,char *risposta,int dim_risposta,int echo,int numero); ricerca (void); int inizializza_strumento (char* ibconf_strum,int modo,int strumento); //_______________________ void file_ok_sel void on_but_res_smu1_clicked void on_but_res_smu2_clicked void on_but_res_smu3_clicked void on_but_res_smu4_clicked void on_but_res_vsu1_clicked void on_but_res_vsu2_clicked void on_but_res_vmu1_clicked void on_but_res_vmu2_clicked void on_but_res_pgu1_clicked void on_but_res_pgu2_clicked void on_but_res_gndu_clicked (GtkWidget gpointer *fs, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); gboolean 115 on_window_Main_destroy_event gboolean on_fileselection1_delete_event void on_cancel_button1_clicked void on_entryFN_changed void on_entryVN_changed void on_entryVU_changed void on_entryFU_changed void on_entryFD_changed void on_entryVS_changed void display_window gboolean on_window_delete_event void on_button_MM_stru_clicked void on_button_MM_mem_clicked (GtkWidget GdkEvent gpointer *widget, *event, user_data); (GtkWidget GdkEvent gpointer *widget, *event, user_data); (GtkButton gpointer *button, user_data); (GtkEditable gpointer *editable, user_data); (GtkEditable gpointer *editable, user_data); (GtkEditable gpointer *editable, user_data); (GtkEditable gpointer *editable, user_data); (GtkEditable gpointer *editable, user_data); (GtkEditable gpointer *editable, user_data); (GtkButton gpointer *button, user_data); (GtkWidget GdkEvent gpointer *widget, *event, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); void var1nstep (void); 116 void var2stop (void); gchar* coerenza_numero (gchar* gchar* stringa2numero ( gint gchar* testo, gdouble min, gdouble max, gdouble passo, gchar* unit, gint opzione ); stringa); n, void on_entry_conf_num_activate void on_entry_check_num_changed void on_entry_conf_numStr_activate void on_entry_ST_Name_changed void Apri_Measurement void Apri_Stress void Salva_Measurement void Salva_Stress (GtkEntry gpointer *entry, user_data); (GtkEditable gpointer *editable, user_data); (GtkEntry gpointer *entry, user_data); (GtkEditable gpointer *editable, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); gint visualizza_stress (void); gint visualizza_measurement (void); void cancella_stress void on_chbut_ST_toggled void on_button_clicked_azzera_ChDef (GtkToggleButton *togglebutton, gpointer user_data); (GtkButton gpointer 117 *button, user_data); void on_button_clicked_azzera_FunVar void on_button_clicked_azzera_Sweep void on_button_clicked_azzera_MeasOutSeq void on_button_clicked_azzera_DispVar void on_button_clicked_azzera_Analysis void on_entry_changed_MEAS gboolean confronta_lista *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkEditable gpointer *editable, user_data); (GList* tmp, gchar* dato); void crea_lista (void); void metti_in_lista GtkWidget *window, gchar *combo, gchar *entry); void setta_modo (GtkButton gpointer (GList *glist, (gint num, gchar modo, gboolean flag); void on_chbut_MEAS_toggled void on_entry_P1_changed void on_button_AN_Reset_clicked (GtkToggleButton *togglebutton, gpointer user_data); (GtkEditable gpointer *editable, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); void azzera_linea1 (void); void azzera_linea2 (void); void on_button_DG_clicked void on_button_4156_clicked 118 void on_togglebutton_4156_toggled gpointer user_data); (GtkToggleButton *togglebutton, gint pc_to_4156 (gint i, gchar* modo, gchar* separa, gint controllo_errori, gint modo_errori); void invia_stress void leggi_stress void invia_measurement void leggi_measurement (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); void visualizza_warning (gchar*testo); gint visualizza_warning_permanente (gchar*testo,gchar*simbolo); void Ag4156_MO_nome_ordine_uscite (void); void Ag4156_MO_Setta_Range (gchar* unit, gchar* modo, gboolean abilita_modo, gchar* range, gchar* valore_range, gboolean abilita_range, guint ZeroCancel,//0=falso, 1=vero, 2=invariato guint abilita_ZeroCancel, //0=falso, 1=vero, 2=invariato gchar* label_ZeroCancel, gboolean cambia_variabili ); void Ag4156_AN_visualizza gchar* roba2, gchar* roba3, gchar* roba4, gchar* roba5, gboolean stato); ( gchar* roba1, void Ag4156_Stress_Function ( gint n, gchar* buf); int Ag4156_Stress_Controllo_Parametri (); int Ag4156_Meas_Controllo_Parametri (); gint Ag4156_Controllo_Errori (gint modo); gint Ag4156_to_pc ( gint i, gchar* modo, gchar* separa, gint controllo_errori, 119 gint modo_errori, gchar* udm); void Ag4156_Stress_Visibilita_Stop_Condition (void); gint Ag4156_Importa_Dati gint colonna, gint modo); ( gchar* parametro, gint Ag4156_Calcola_Numero_Step_Var1 ( gdouble gdouble v1stop, gdouble v1step, gint spacing); gint Ag4156_Invia_Comando ( gchar* comando, gint modo, gint errore); v1start, //_________funzioni TDS520___________________________________ void TDS520_on_togglebutton_toggled (GtkToggleButton *togglebutton, gpointer user_data); void TDS520_on_combo_entry_changed (GtkEditable gpointer *editable, user_data); void TDS520_on_button_clicked (GtkButton *button, gpointer user_data); //_____________ fine TDS520____________________________________ //_____________ funzioni matematiche ___________________ gdouble math_Vth ( gint x, gint y, gint gm); gdouble math_Gm ( gint x, gint y, gint gm); //________BIPFLASH Programma 1 ___________________void BF_P1_on_entry_activate (GtkEntry gpointer void BF_P1_visualizza(); void BF_P1_on_spinbutton_changed void BF_P1_on_button_clicked void BF_P1_on_radiobutton_toggled void laboratory_on_entry_activate //_______ UTILITY ___________________ void UT1_on_togglebutton_toggled *entry, user_data); (GtkEditable *editable, gpointer user_data); (GtkButton gpointer *button, user_data); (GtkToggleButton *togglebutton, gpointer user_data); (GtkEntry gpointer *entry, user_data); (GtkToggleButton *togglebutton, gpointer user_data); 120 void UT1_on_button_clicked void ERR_on_button_clicked (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkButton gpointer *button, user_data); (GtkWidget GdkEventFocus gpointer *widget, *event, user_data); (GtkButton gpointer *button, user_data); (GtkEntry gpointer *entry, user_data); gchar* virgola2punto (gchar* testo); void MM_button_clicked gboolean FV_CH_on_window_focus_out_event void SP_on_button_clicked void SP_on_entry_activate void SP_on_checkbutton_toggled void SP_on_entry_changed void on_stopbutton_clicked (GtkToggleButton *togglebutton, gpointer user_data); (GtkEditable gpointer *editable, user_data); (GtkButton gpointer *button, user_data); 121 122 C.3 File “callbacks.c” 123 124 Bibliografia [1] G.E. Moore, “Progress in digital integrated electronics,” in IEDM Technical Digest, pp. 11– 13, Dec 1975. [2] R.H.Dennard, F.H.Gaensslen, L.Kuhn, N.Y.Yu, V.L.Ridout, E.Bassous, and A.LeBlanc, “Design of Ion-Implanted MOSFETs with Very Small Physical Dimensions,” IEEE Jou.of Solid State Circuits, vol. SC-9, p. 256, 1974. [3] S.Tam, P.K.Ko, and C.Hu, “Lucky-Electron Model of Channel Hot-Electron Injection in MOSFETs,” IEEE Trans.on Electron Devices, vol. 31, no. 9, p. 1116, 1984. [4] F.Masuoka, “Technology Trend of Flash-EEPROM - Can Flash-EEPROM overcome DRAM?,” in Proc.Symp.on VLSI Technology, p. 6, 1992. [5] Y.Nakagome, E.Takeda, H.Kume, and S.Asai, “New observation of hot-carrier injection mechanism,” Japanese Journal of Applied Physics, vol. 19, no. Supplement 19-1, p. 85, 1983. [6] L.Selmi and D.Esseni, “A Better Understanding of Substrate Enhanced Gate Current in MOSFETs and Flash Cells, Part II: Physical Analysis,” IEEE Trans.on Electron Devices, vol. 46, no. 2, p. 376, 1999. [7] J. D.Bude, A.Frommer, M.R.Pinto, and G.R.Weber, “EEPROM/Flash Sub 3.0 V DrainSource Bias Hot Carrier Writing,” in IEDM Technical Digest, p. 989, 1995. [8] J.D.Bude, M.Mastrapasqua, M.R.Pinto, R.W.Gregor, P.J.Kelley, R.A.Kohler, C.W.Leung, Y.Ma, R.J.McPartland, P.K.Roy, and R.Singh, “Secondary Electron Flash - a High Performance, Low Power Flash Technology for 0.35 µm and Below,” in IEDM Technical Digest, p. 279, 1997. [9] J.Dickson, “On-chip high-voltage generation in NMOS integrated circuits using an improved voltage multiplier technique,” IEEE Jou.of Solid State Circuits, vol. SC-11, pp. 374–378, June 1976. [10] T. Tanzawa and T. Tanaka, “A dynamic analysis of the Dickson Charge Pump Circuit,” IEEE Jou.of Solid State Circuits, vol. 33, pp. 1231–1240, Aug. 1997. [11] D.Esseni and L.Selmi, “BipFLASH: A Novel Non-Volatile Memory Cell Concept for High Speed - Low Power Applications,” in Microelectronic Engineering, vol. 59, pp. 231–236, Elsevier Science Publishing, 2001. [12] D. Esseni and Luca Selmi and R. Bez and A. Modelli, “A new high inijection efficiency non-volatile memory cell: Bipflash,” Solid State Electronics, vol. 46, pp. 1739–1747, 2002. 249 [13] D.Esseni and L.Selmi and R.Bez and A.Modelli, European patent application n. 00830546.8-2203, filing date 31/07/2000. [14] D.Esseni and L.Selmi, “BipFLASH: A Novel Non Volatile Memory Cell Concept for High Speed - Low Voltage Applications,” in Proc.INFOS, p. 83, 2001. [15] D.Esseni and L.Selmi, “A Better Understanding of Substrate Enhanced Gate Current in MOSFETs and Flash Cells,” IEEE Trans.on Electron Devices, vol. 46, no. 2, 1999. [16] D.Esseni, L.Selmi, A.Ghetti, and E.Sangiorgi, “The Scaling Properties of CHISEL and CHE Injection Efficiency in MOSFETs and Flash Memory Cells,” in IEDM Technical Digest, p. 275, 1999. [17] H.Hu, J.Jacobs, J.E.Chung, and D. Antoniadis, “The Correlation Between Gate Current and Substrate Current in 0.1µm NMOSFETs,” IEEE Electron Device Letters, vol. 15, p. 418, 1994. [18] M. Pavesi, L. Selmi, M. Manfredi, E. Sangiorgi, M. Mastrapasqua, and J. Bude, “Evidence of Substrate Enhanced High-Energy Tails in the Distribution Function of Deep Submicron MOSFET’s by Light Emission Measurements,” IEEE Electron Device Letters, vol. 20, pp. 595–597, 1999. [19] S.M.Sze, Physics of Semiconductor Devices. J.Wiley, 1981. [20] R.Pierret, Semiconductor Device Fundamentals. Addison-Wesley Publishing Company, Inc., March 1996. [21] de Graaf HC, Slotboom JW, Schmitz A., “The emitter efficiency of bipolar transistors: theory and experiments,” Solid State Electronics, vol. 20, p. 515, 1977. [22] P.Palestri, C.Fiegna, L.Selmi, F.Hurkx, J.Slotboom, and E.Sangiorgi, “A Better Insight in the Performance of Silicon BJT’s Featuring Highly Non-Uniform Collector Doping Profiles,” IEEE Trans.on Electron Devices, vol. 47, no. 5, p. 1044, 2000. [23] Wu C-Y, Chen C-F., “Physical model for characterizating and simulating a FLOTOX EEPROM device.,” Solid State Electronics, vol. 35, no. 5, pp. 705–16, 1992. [24] D.Esseni, A. Della Strada, P.Cappelletti, and B.Riccò, “A New and Flexible Scheme for Hot-Electron Programming of Non-Volatile Memory Cells ,” IEEE Trans.on Electron Devices, vol. 46, no. 1, pp. 125–133, 1999. [25] R.Bez, E.Camerlenghi, D.Cantarelli, L. Ravazzi, and G.Crisenza, “A Novel Method for the Experimental Determination of the Coupling Ratios in Submicron EPROM and FLASH EEPROM Cells,” in IEDM Technical Digest, p. 99, 1990. [26] I.C.Chen, D.J.Coleman, and C.W.Teng, “Gate Current Injection Initiated by Electron Band to Band Tunneling in MOS Devices,” IEEE Electron Device Letters, vol. 10, p. 297, 1989. [27] I.C.Chen, C.Kaya, and J.Paterson, “Band-to-Band Tunneling Induced Substrate HotElectron (BBISHE) Injection: A New Programming Mechanism for Non-Volatile Memory Devices,” in IEDM Technical Digest, p. 263, 1989. 250 [28] D.Shum, C.T.Swift, J.M.Higman, W.J.Taylor, K.T.Chang, K.M.Chang, and J.R.Yeargain, “A Novel Band-to-Band Tunneling Induced Convergence Mechanism for Low-Current High Density FLASH EEPROM Applications,” in IEDM Technical Digest, p. 41, 1994. [29] I.C.Chen and C.W.Teng, “A quantitative physical model for the B2B tunneling induced substrate hot electron injection in MOS devices,” IEEE Trans.on Electron Devices, vol. 39, no. 7, p. 297, 1992. [30] L. Selmi and C.Fiegna, “Physical Aspects of Cell Operation and Reliability,” in Flash Memories (P.Cappelletti, C.Golla, P.Olivo and E.Zanoni, ed.), Kluwer, 1999. 251 Ringraziamenti Desidero porgere i miei ringraziamenti al relatore Chiar.mo Prof. Luca Selmi, al correlatore Prof. David Esseni ed all’ ing. Francesco Driussi per l’aiuto ed il sostegno datomi in questi mesi durante lo svolgimento di questa mia tesi, dimostratasi esperienza interessante e gratificante dal punto di vista umano e professionale. Patrick Toffoletti 253