P.Toffoletti (Laurea Specialistica) - diegm

annuncio pubblicitario
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
Scarica