1 Introduzione 2 Schematico - Dipartimento di ingegneria elettrica

Transcript

1 Introduzione 2 Schematico - Dipartimento di ingegneria elettrica
Università degli Studi di Cagliari
Dipartimento di Ingegneria Elettrica ed Elettronica
(processo CMOS 0.35um) e la CMOS90 (processo CMOS 90nm). Per prelevare un
componente da una libreria:
Laboratorio di Elettronica
Corso di Elettronica Digitale
Anno Accademico 2006/2007
1
Menu
Edit -> Component
Introduzione
In questo breve tutorial utilizzeremo il software di simulazione SwitcherCAD III (Linear
Technologies) per verificare la funzionalità di un inverter CMOS ed estrarne le
caratteristiche statiche e dinamiche. La maggior parte dei concetti utilizzati, tranne quando
esplicitamente indicato, valgono comunque anche nel caso di uso di altri simulatori basati
su SPICE, anche di diffusione industriale (pspice, hspice, eldo, microcap, tspice, etc.).
Insieme al software, comunque, è fornito un manuale in inglese con tutte le informazioni
aggiuntive.
Per potere replicare il tutorial è necessario installare i file personalizzati forniti insieme a
questo tutorial nella cartella INSTALL_LTSPICE. In particolare, tutta la cartella
ElettronicaDigitale dovrà essere copiata nella cartella C:\Programmi\LTC\SwCADIII\lib\sym
(il percorso esatto potrebbe essere leggermente differente a seconda di dove si è scelto di
installare il software), mentre il file standard.mos dovrà essere sostituito al file dello stesso
nome in C:\Programmi\LTC\SwCADIII\lib\cmp .
2
Pulsante barra strumenti
Schematico
2.1
Creazione di un nuovo schematico
Una volta avviato il software sarà necessario creare nuovo schematico (foglio di lavoro). Si
può fare dall’apposito menu oppure cliccando sul tasto della barra strumenti.
Menu
File -> New Schematic
Pulsante barra strumenti
Il nuovo schematico si presente come un foglio di lavoro vuoto. E’ opportuno salvare da
subito il nuovo schematico nella cartella dove si intende lavorare (in tale cartella, come si
vedrà in seguito, dovranno essere creati anche i file collegati a questo). Per salvare il
documento:
Menu
File -> Save As
Si aprirà una finestra di scelta come quella mostrata in Figura 1:
A sinistra, la finestra di scelta di un nuovo
componente:
a) il menu a tendina in alto (Top
Directory) consente di decidere se
prelevare il componente dalla libreria
del software o dalla cartella di lavoro
(dove
si
è
salvato
l’attuale
schematico)
b) in alto a sinistra il simbolo del
componente attualmente selezionato
c) in basso i componenti disponibili nella
libreria
d) in alto a destra una descrizione del
componente attualmente selezionato
Figura 1: Scelta del componente
Per default, la cartella da cui è possibile prelevare i componenti sarà quella del software
(C:\Programmi\LTC\SwCADIII\lib\sym) ma è possibile anche prelevare i componenti dalla
cartella di lavoro (dove è stato salvato lo schematico attuale), andando a selezionarla dal
menu a tendina Top Directory (Figura 1), il riquadro in alto a sinistra mostra il simbolo del
componente selezionato, mentre sotto il menu Top Directory compare una breve
descrizione del componente stesso. Per realizzare l’inverter dovremo selezionare, dalla
libreria ElettronicaDigitale\CMOS90 il transistor NMOS (nmos90). Per piazzare il
componente premere OK e poi scegliere dove posizionarlo, si possono continuare a
piazzare nuovi componenti dello stesso tipo fino a che non si preme il tasto ESC.
Pulsante barra strumenti
Una volta fatto per la prima volta il Save As ed assegnato così un nome ed una cartella di
lavoro allo schematico si può salvare normalmente con il comando Save:
Menu
Pulsante barra strumenti
File -> Save
2.2
Piazzamento dei componenti
Il primo passo della creazione dello schematico è il piazzamento dei componenti sul foglio
di lavoro. Per fare questo bisognerà prendere i componenti stessi da una libreria del
software stesso oppure una creata appositamente. Nel nostro caso utilizzeremo i
dispositivi della libreria ElettronicaDigitale che contiene due sottolibrerie, la CMOS350
Figura 2: Componente piazzato
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Una volta piazzato il componente, come mostrato in Figura 2, se ne possono modificare le
proprietà (i parametri). In particolare, è possibile scegliere il nome e, nel caso di un MOS,
le dimensioni geometriche (W, L, AD, PD, AS, PS).
Per modificare il nome, posizionare il cursore sul nome stesso (M1, in Figura 2) e premere
il tasto destro del mouse. Per modificare i parametri, invece, bisogna posizionare il cursore
sul componente e premere il tasto destro del mouse. Se il componente è un MOS si aprirà
una finestra come quella in Figura 3:
disegnare il wire bisogna arrivare ad un altro terminale oppure ciccare il tasto destro del
mouse.
Figura 4: Aggiunta di un wire (a), schematico completo (b)
Ad ogni filo disegnato è possibile assegnare un nome. E’ bene dare un nome significativo
ai nodi principali, in modo che sia poi semplice visualizzare ed interpretare le forme d’onda
generate dalla simulazione (che saranno etichettate col nome del file di cui si vuole
misurare la tensione). Per assegnare un nome ad un wire:
Menu
Figura 3: Modifica dei parametri di un MOS
I parametri obbligatori sono la L (Length) e la W (Width), gli altri sono opzionali. Nel
compilarli si tenga conto della sintassi di SPICE per gli ordini di grandezza che sono
esprimibili con le seguenti lettere (colonna 1 della Tabella 1, si tenga conto che SPICE è
case-insensitive), oppure con la notazione scientifica (colonna 2):
Pulsante barra strumenti
Edit -> Label Net
Lanciando questo comando si apre la finestra in Figura 5:
Tabella 1: sintassi ordini di grandezza
LETTERA FORMATO SCIENTIFICO VALORE
F (f)
E-15
Femto (10-15)
P (p)
E-12
Pico (10-12)
N (n)
E-09
Nano (10-9)
U (u)
E-06
Micro (10-6)
M (m)
E-03
Milli (10-3)
K (k)
E+03
Chilo (10+3)
MEG (meg)
E+06
Mega (10+6)
Figura 5: Assegnazione del nome ad un wire
2.3
Aggiunta dei fili di interconnessione
Dopo avere piazzato tutti i componenti si aggiungono i fili di interconnessione tramite il
comando:
Menu
Edit -> Draw Wire
Pulsante barra strumenti
Si clicca col tasto sinistro del mouse sul terminale da cui parte il filo (wire), ogni volta che
si vuole fare una curva a 90° si preme nuovamente il tasto sinistro. Per terminare di
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Il primo nome da assegnare è quello del nodo di massa (GND in Figura 5), questo perché
in ogni schematico deve sempre esistere un wire (un nodo) chiamato 0 che serva come
riferimento per la misura delle tensioni agli altri nodi. Selezionando la casella di spunto
GND possiamo andare a piazzare la massa, come mostrato in Figura 6:
Come è stato assegnato un nome alla massa, si può assegnare un nome ai terminali di
ingresso ed uscita andando a selezionare il Port Type (Figura 5). Gli ingressi saranno di
tipo Input, le uscite Output, le alimentazioni sono bidirezionali (Bi-Direct) mentre i nodi
interni, che non dovranno essere collegati ad altri oggetti, possono non avere tipo (None).
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Quando si definisce una direzione per il nome del filo (Input, Output, Bi-Direct) comparirà il
simbolo del terminale (una piccola freccia con l’orientazione determinata dalla direzione
del terminale), mentre se il nodo è interno e viene definito con direzione None allora
comparirà solo il nome.
Figura 7: Creazione dell’inverter di carico
3
Figura 6: Piazzamento della massa (a) e degli altri terminali (b)e creazione
dell’inverter di carico (c)
Il collegamento fra i terminali può avvenire disegnando tutto il wire oppure, per non
complicare troppo il disegno, usando la connessione per nome: due wire risultano
connessi fra loro se hanno lo stesso nome.
2.4
Editing
Il menu Edit fornisce la possibilità di modificare lo schematico, tramite comandi di
copia/incolla (Edit -> Duplicate), di cancellazione (Edit -> Delete) e di spostamento. In
particolare, esistono due tipologie di spostamento: il move e il drag:
Menu
Pulsante barra strumenti
Edit -> Move
Generatori
Per stimolare il circuito è necessario inserire i generatori. Nel nostro caso ci vorrà
sicuramente un generatore di alimentazione che fornisce l’alimentazione in continua ed un
generatore che fornisce lo stimolo di ingresso (applicato al nodo vin del circuito). A
seconda del tipo di analisi avremo bisogno di uno stimolo in continua, per stimare i
parametri statici, oppure uno che varia nel tempo (transitorio), per stimare i parametri
dinamici.
Per piazzare i generatori si procede come per un normale componente. Vanno però
prelevati dalla libreria del software, cartella principale (se, aprendo la finestra di scelta
componente, vi trovate nella libreria CMOS90 di ElettronicaDigitale, ciccate su [..] per
tornare alla cartella precedente). In particolare, i generatori di tensione sono i componenti
chiamati voltage.
I due generatori vanno piazzati nello schematico, collegati alla massa da un lato ed
all’opportuno terminale (vdd o vin) dall’altro. In Figura 8 è mostrata lo schematico con i
generatori, da notare che è stato modificato il nome di ciascun generatore per dargli un
valore significativo (VDD e VIN) e la connessione è stata fatta per nome anzi che
tracciando tutto il filo (ossia si è dato il nome vdd al pezzo di filo connesso al terminale
positivo del generatore VDD ed il nome vin al pezzo di filo connesso al terminale positivo
del generatore VIN).
Edit -> Drag
Il comando move sposta un componente staccando tutti gli eventuali collegamenti e
connessioni di fili, mentre il comando drag trascina il componente lasciando connessi i fili.
Nel nostro esempio utilizzeremo il comando Duplicate per copiare tutto l’inverter,
generandone una copia che rappresenta il carico. Quando si copia parte di uno
schematico i nomi dei componenti vengono aggiornati automaticamente (in modo che non
ci siano doppioni), ma non altrettanto viene fatto per i nomi dei nodi o dei terminali che
rimangono uguali e dovranno di conseguenza essere modificati manualmente (clic col
tasto destro del mouse sul nome da modificare).
Figura 8: Piazzamento dei generatori
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Di default, ogni generatore piazzato è inizialmente un generatore in continua. Per
impostarne il valore, come sempre, premere il tasto destro quando il cursore è sopra il
componente, si aprirà la finestra in Figura 9 (a) e si potrà inserire il valore (1V).
Tabella 2: corrispondenza parametri pulse
SINTASSI SPICE NOME SWITCHER CAD III
Vinitial
v1
Von
v2
Tdelay
delay
Trise
tr
Tfall
tf
Ton
width
Tperiod
period
La Figura 11 mostra lo schematico completo. Si noti come i valori dei generatori
compaiano vicino ai generatori stessi con la sintassi SPICE completa. Ogni oggetto sullo
schematico può essere spostato con move, quindi anche la sintassi del generatore
PULSE, che è molto ingombrante, può essere spostata per rendere lo schematico più
leggibile.
Figura 9: Impostazione generatore in continua (a) e generico (b)
Il generatore di ingresso è più complesso perché è un generatore di impulsi (pulse). Per
modificare il generatore inserito inizialmente (che è in continua per default), ciccare col
destro del mouse sopra il componente, si aprirà la finestra di Figura 9 (a), selezionare
Advanced (in basso a sinistra) ed otterrete la finestra di Figura 9 (b). Rispetto ai parametri
di sintassi SPICE che dovrebbe avere un generatore pulse (indicati in Figura 10) la
corrispondenza è quella di Tabella 2:
Figura 11: Modifica dei generatori (VIN è un generatore pulse)
4
Simulazione
4.1
Definizione del tipo di analisi
Definito il circuito e gli stimoli (i generatori) non resta che definire le analisi da compiere
per stimare i parametri di interesse. Nella nostra prima simulazione troveremo la
caratteristica di trasferimento in tensione (VTC: voltage transfer characteristic) dell’inverter
per potere valutare la soglia logica. Un’analisi di questo tipo richiede un’analisi in continua
(.dc) perché bisogna valutare il valore statico della tensione d’uscita per ogni possibile
valore della tensione d’ingresso.
Per definire il tipo di analisi richiesto :
Menu
Simulate -> Run
Figura 10: Generatore pulse
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Pulsante barra strumenti
Si aprirà una finestra che consente di scegliere uno dei possibili tipi di analisi (continua,
transistorio, alternata e così via). La finestra di scelta è mostrata in Figura 12, bisogna
selezionare la scheda (Tab) che corrisponde all’analisi desiderata (nel nostra caso, analisi
in continua, è DC Sweep).
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Figura 13: Scelta forme d’onda da visualizzare
4.3
Manipolazione dei risultati
Le forme d’onda ottenute sono mostrate in Figura 14. Una volta ottenuto il grafico è
possibile manipolare i risultati, ad esempio selezionando nuove forme d’onda da
visualizzare
Figura 12: Setup di una simulazione dc (continua)
I campi da compilare corrispondono esattamente alla sintassi SPICE, dove Name of 1st
Source to Sweep è ovviamente il nome del generatore che deve variare (nel nostro caso il
generatore di ingresso, VIN), Type of Sweep è la tipologia di scelta dei punti di analisi
(Linear, Decade, Ottave), Start Value è il valore (di tensione in questo caso) da cui parte
l’analisi, Stop Value l’ultimo valore assunto dal generatore e Increment è l’incremento
utilizzato per variare fra i due estremi il generatore. Nel caso dell’analisi del nostro inverter
stiamo facendo variare il generatore di ingresso (VIN) fra 0 (V) e 1 (V) a passi di 0.001 (V).
Da notare che nella riga in basso viene generata automaticamente la riga della netlist
SPICE definita dalla scelta dei parametrici analisi fatta compilando i campi. E’ anche
possibile fare variare più di un generatore alla volta (fino a 3), dove si intenderà, nel caso
di due generatori, che per ogni valore in DC del secondo generatore si fa variare il primo
fra i suoi estremi (usato ad esempio per tracciare le curve corrente/tensione di un MOS,
dove il secondo generatore sarà la VGS ed il primo la VDS).
Ciccando su OK si passa alla scelta delle forme d’onda da visualizzare.
4.2
Scelta della forme d’onda da visualizzare
Non appena cliccato su OK compare la finestra di scelta delle forme d’onda da
visualizzare, mostrata in Figura 13. Si posso fare selezioni multiple mantenendo premuto
Ctrl mentre si clicca sui nomi delle tensioni ai nodi di interesse (nel nostro caso vin e vout).
Inolte si possono anche costruire espressioni numeriche complesse usando le funzioni
algebriche integrate (tra cui le 4 operazioni fondamentali, la radice quadrata,
l’esponenziale e così via). Per inserire un’espressione mantenere premuto il tasto Alt e
fare doppio-clic sul nome della forma d’onda su cui si vuole costruire l’espressione.
Nell’esempio di viene inserita nel grafico anche la metà della tensione di alimentazione
per verificare quanto la soglia logica si discosti dal valore desiderato. Per un elenco
completo delle espressioni algebriche utilizzabile vedere il manuale del software (Help ->
Help Topics -> Waveform Viewer -> Waveform Arithmetic). Anche se ci si dimentica di
selezionare qualche forma d’onda in questa fase è sempre possibile aggiungerle in
seguito nel grafico.
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Menu
Plot Settings -> Visibile Traces
Pulsante barra strumenti
oppure modificando i colori con cui sono visualizzate le waveform (clic col tasto destro sul
nome della forma d’onda).
Figura 14: Risultati simulazione DC
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
E’ possibile anche visualizzare i punti di analisi (Plot Settings -> Mark Data Points), ossia
visualizzare i punti della curva i cui è stata effettivamente calcolata la soluzione (gli altri
punti sono interpolati). Infine, è possibile aggiungere dei cursori per misurare i valori della
curva in punti di interesse. Si possono piazzare fino a due cursori, nel nostro caso, per il
momento, ce ne serve uno per misurare la VM (soglia logica) che corrisponde al valore di
vin quando interseca la curva vout. Per aggiungere un cursore, clic col tasto destro sul
nome della curva dove voglio posizionare il cursore:
destro sopra la riga SPICE visualizzata precedentemente: si riaprirà la finestra di Figura
12 e sarà possibile selezionare la scheda Transient (analisi in transitorio).
Figura 15: Aggiunta di un cursore
Una volta piazzato il cursore lo si sposta fino al punto di interesse di cui verranno
visualizzate le caratteristiche in un’apposita finestra.
Figura 17: Analisi in transistorio
I campi da compilare sono sempre quelli della sintassi SPICE, basterebbe compilare il
campo Stop Time (che definisce la finestra temporale di analisi) ma si può definire anche il
massimo periodo di campionamento dei risultati (Maximum Timestep). Infatti l’algoritmo di
risoluzione numerica di SPICE è adattativo, ossia adatta il tempo di integrazione
(campionamento) in funzione della rapidità di variazione dei segnali: se i segnali restano
costanti a lungo il tempo di integrazione si allunga. Se si vuole salvare almeno un certo
numero di istanti di campionamento si può mettere un limite all’incremento del tempo di
integrazione.
Per lanciare la nuova simulazione:
Menu
Simulate -> Run
Figura 16: Identificazione della VM
4.4
Analisi in transistorio
L’altro tipo di analisi che useremo è quella in transitorio (.tran) che serve per valutare
l’evoluzione dei segnali di uscita nel tempo quando variano i segnali di ingresso. Questo
tipo di analisi viene ovviamente utilizzata per stimare i parametri dinamici (come il tempo di
propagazione). Per modificare il tipo di analisi tornare sullo schematico e fare clic col tasto
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Pulsante barra strumenti
I risultati sono quelli in Figura 18. Come si vede sono stati piazzati due cursori e la relativa
finestra mostra le differenze fra i valori di ascissa di tali cursori (Diff Horz) ed i valori di
ordinata (Diff Vert). Piazzando il cursore 1 all’inizio della commutazione (dove commuta
l’ingresso) ed il cursore 2 alla fine (dove l’uscita attraversa VDD/2), si può misurare il
tempo di propagazione guardando la differenza di ascissa dei due cursori. Da notare che
la finestra con i parametri dei cursori mostra le differenze di ascissa (per i tempi di
propagazione), di ordinata e anche il guadagno (lo slope, ossia la pendenza della curva).
Può quindi essere utilizzato nell’analisi in DC che visualizza la VTC dell’inverter per
misurare il guadagno g utilizzato per calcolare i margini di rumore.
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
In pratica, anzi che inserire un numero esatto si indica un nome di variabile racchiuso fra
parentesi graffe (in Figura 19 la W del PMOS è definita come parametrica, pari al valore di
una variabile chiamata WP). Per i nomi accettabili valgono le regole della sintassi SPICE
quindi non c’è differenza fra maiuscolo e minuscolo ed il parametro WP sarà uguale al
parametro wp. Nel nostro esempio bisogna modificare, rendendola parametrica, sia la W
di M2 che quella di M4.
A questo punto, una volta reso parametrico un valore, bisogna poterlo impostare. Per farlo
si inserisce nello schematico una direttiva SPICE:
Menu
Edit -> SPICE Directive
Pulsante barra strumenti
In questo modo si apre una finestra che ci consente di scrivere una direttiva SPICE e
piazzarla direttamente sullo schematico. La direttiva per la definizione di un parametro è:
.param WP=360n
Come mostrato in Figura 20.
Figura 18: Simulazione in transitorio
5
Analisi parametriche
E’ molto importante potere effettuare simulazioni parametriche, verificare cioè come
cambia il comportamento del circuito al cambiare del valore di alcuni parametri. Ad
esempio, nel caso dell’inverter, sarebbe interessante verificare come varia la VM al variare
delle dimensioni del PMOS, oppure come cambiano i tempi di propagazione (in questo
caso, se modifichiamo la W del PMOS dell’inverter dovremmo cambiare anche la W del
carico). Per definire un parametro si usa la sintassi mostrata in Figura 19.
Figura 20: Definizione di una direttiva SPICE per assegnare un valore al parametro
A questo punto basterà variare il valore del parametro per cambiare automaticamente la
W di tutti quei PMOS che abbiamo modificato rendendo parametrici (nel nostro caso, sia la
W di M2 che di M4 sono pari a WP).
Una simulazione parametrica viene eseguita tramite un’altra direttiva SPICE:
.step param WP 180n 540n 45n
Figura 19: Definizione di un parametro
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Il comando sopra definito esegue una simulazione parametrica, facendo variare il valore
del parametro WP fra 180n e 540n a step di 45n. In pratica, verrà ripetuta l’analisi definita
precedentemente (quella in DC o quella in transitorio) per tutti i possibili valori del
parametro in tale intervallo.
In generale, SwitcherCADIII consente di eseguire tutta una serie di direttiva SPICE, anche
più sofisticate, esattamente con lo stesso meccanismo, ossia piazzando una direttiva
direttamente sullo schematico. La sintassi delle direttiva è quella SPICE e può essere
reperite sul manuale del software (Help -> Help Topics –> LTspice -> Dot Commands).
Nel caso della direttiva .step, questa consente di effettuare la variazione di un parametro
(quella mostrata prima), oppure della temperatura (.step temp), o di un parametro di un
modello, e così via. Per maggiori informazioni fare riferimento al manuale.
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Nel nostro caso, se vogliamo verificare la variazione della VM al variare del parametro,
dobbiamo reimpostare come tipo di analisi quella in DC e aggiungere la direttiva .step
sullo schematico che risulterà come in Figura 21.
Figura 23: Risultati simulazione parametrica in transitorio
6
Figura 21: Schematico con direttive SPICE
Lanciando la simulazione in continua, anzi che ottenere una sola curva sene otterranno
tante quanti sono gli step definiti nell’analisi parametrica, come mostrato in Figura 22.
Gerarchia
E’ buona norma effettuare le simulazioni utilizzando un approccio gerarchico piuttosto che
piazzare tutto su un unico schematico come fatto finora. Lo schematico al top della
gerarchia conterrà semplicemente l’istanziazione del modulo da simulare e le direttive di
analisi e visualizzazione dei risultati. Il circuito vero e proprio sarà descritto in uno
schematico a parte che viene poi istanziato nel cosiddetto testbench. Per adottare un
approccio completamente gerarchico, il circuito può a sua volta essere composto da più
moduli, ciascuno dei quali è descritto come sottocircuito, comenmostrato in Figura 24. In
SPICE esiste la possibilità di definire dei sottocircuiti (.subckt), che definiscono una
gerarchia: un sottocircuito può essere definito una volta per tutte in un file ed essere poi
istanziato più volte. Ovviamente al termine di una gerarchia di sottocircuiti ci deve essere
un sottocircuito costituito da soli dispositivi (MOS, resistenze, capacità).
Figura 22: Risultati simulazione parametrica in DC
Come si vede si hanno tante curve quanti sono i valore di WP che varia da 180n a 540n a
step di 45n. Per distinguere le curve le une dalle altre si può scegliere di visualizzare solo
alcuni step dal menu del visualizzatore di waveform:
Menu
Plot Settings -> Select Steps
Pulsante barra strumenti
Analoga analisi parametrica può essere svolta nel caso dell’analisi in transitorio, come
mostrato in Figura 23. Osservando i risultati si può verificare che, all’aumentare della WP
aumenta il tempo di scarica (HL) perché lo stesso NMOS deve pilotare una capacità
parassita più grande (è più grande il PMOS). Viceversa, nel caso della commutazione LH,
all’aumentare di WP c’è un miglioramento dei tempi di carica, perché il PMOS è più
conduttivo. Il compromesso fra l’aumento di tpHL e la diminuzione di tpLH è dato dal
dimensionamento ottimo rispetto al tempo di propagazione, visto a lezione.
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Figura 24: Struttura gerarchica
Adottiamo un approccio gerarchico per la simulazione del nostro inverter, il che significa
definire lo schematico del singolo inverter (quindi solo l’inverter, senza i generatori ed il
carico), creare un nuovo simbolo da associare all’inverter e poi istanziare tale simbolo in
uno schematico a più alto livello di gerarchia, insieme ad i generatori ed al carico.
Innanzitutto, creiamo un nuovo schematico che conterrà solo l’inverter, come mostrato in
Figura 25.
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Figura 26: Creazione del simbolo
Una volta disegnato il simbolo bisogna inserire i terminali, ossia le porte di ingresso e di
uscita che abbiamo precedentemente definito per lo schematico. Per fare questo si usi il
comando:
Menu
Edit -> Add Pin Port
Figura 25: Inverter singolo
Notare come il nome del nodo di alimentazione sia stato modificato in $G_vdd. Questo
perché l’alimentazione è un terminale in comune fra tutte le celle di una libreria (qualsiasi
porta logica dovrà essere alimentata). Per tale motivo, si preferisce definire un nodo
globale (cioè visibile a qualsiasi livello della gerarchia) e collegare tutte le alimentazioni a
tale nodo. Per definire un nodo globale (in SwitcherCADIII, questo NON vale per ogni
versione di SPICE) si utilizza la sintassi indicata, ossia si fa precedere il nome vero e
proprio (vdd) dal prefisso $G_ . In questo modo, a qualsiasi livello di gerarchia, se un wire
viene chiamato $G_vdd sarà automaticamente cortocircuitato a qualsiasi altro wire con lo
stesso nome in qualsiasi altro schematico. Questo ci evita di dovere collegare un terminale
di alimentazione a qualsiasi circuito dovremo creare.
Una volta creato lo schematico, bisognerà creare il simbolo associato, per potere utilizzare
tale circuito come fosse un qualsiasi componente da inserire in un progetto più complesso.
Per creare il simbolo:
Menu
File -> New Symbol
Pulsante barra strumenti
Si aprirà al finestra mostrata in Figura 27 (a), che consente di inserire il nome del pin (che
coincide con uno dei terminali dello schematico) ed il numero d’ordine (Netlist Order, in
alto a sinistra) ossia il numero che indica l’ordine con cui tale pin comparirà nella netlist. La
Figura 27 (b) mostra il simbolo dopo il piazzamento dei pin. In questo caso dobbiamo
piazzare solo ilpin vin ed il pin vout, perché l’alimentazione ($G_vdd), essendo un nodo
globale, non ha bisogno di un pin perché è automaticamente cortocircuitata a tutti i wire
dello stesso nome.
Pulsante barra strumenti
Si aprirà un nuovo tipo di editor con i comandi per il disegno di simboli (quindi la possibilità
di disegnare forme geometriche come linee, cerchi, archi, quadrati, etc.). La Figura 26
mostra il simbolo dell’inverter, ottenuto tracciando le 5 linee ed un cerchio:
Figura 27: Aggiunta dei terminali al simbolo
Menu
Pulsante barra strumenti
Draw -> Line
Draw -> Circle
Simulazione di circuiti digitali – Uso di SwitcherCAD III
Il simbolo va salvato OBBLIGATORIAMENTE nella stessa cartella dove è stato salvato lo
schematico e deve avere esattamente gli stessi pin (sono esentati solo i pin definiti come
nodi globali che possono non comparire nel simbolo).
ED 2006/07 - Massimo Barbaro
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
A questo punto, è possibile inserire in uno schematico che contiene i generatori i simboli
dell’inverter al posto del circuito, come mostrato in Figura 28. Si noti che anche lo
schematico top (ad alto livello di gerarchia) deve essere salvato nella stessa cartella dove
si trovano lo schematico ed il simbolo del singolo inverter. Come si vede dalla figura, il
generatore di alimentazione pilota il nodo $G_vdd che, essendo globale, è anche il nodo
che si trova all’interno degli schematici dei due inverter. Per istanziare l’inverter (sia il
primo che il secondo) si deve procedere come per piazzare un componente (Figura 1), ma
lo si andrà a prelevare dalla cartella di lavora anzi che dalla libreria.
Come si vede, se il simbolo è stato personalizzato, ossia creato da noi, è possibile (tasto
destro) aprire il simbolo (Open Symbol), lo schematico (Open Schematic) oppure definire il
valore di eventuali parametri presenti nel sottocircuito. Nel nostro caso, come mostrato, si
deve definire il valore del parametro WP che è la larghezza del PMOS. In questo caso
impostiamo il valore di WP (parametro dell’inverter) pari al valore W1 che è invece un
parametro dello schematico ad alto livello (Figura 28) su cui stiamo lavorando, in modo da
potere replicare le analisi parametriche del Paragrafo 5. Per farlo dobbiamo compilare la
riga denominata PARAMS. Se ci fosse più di un parametro potremmo inserirli tutti in tale
riga separando ogni assegnazione con uno spazio. Per maggiori informazioni consultare il
manuale (Help -> Help Topics -> Schematic Capture -> Hierarchy).
Il circuito completo, una volta definite le WP di ciascun inverter, inserite le analisi (DC e
parametrica) e piazzato un cartiglio per la documentazione (Edit -> Text) risulta come in
Figura 30.
Figura 30: Circuito completo
Figura 28: Schematico ad alto livello di gerarchia per la simulazione
Da notare che lo schematico dell’inverter è parametrico, oramai, dunque nel momento in
cui si posiziona il simbolo bisogna anche definire il valore del parametro andando a
cliccare col tasto destro del mouse sul nuovo simbolo si otterrà la finestra mostrata in
Figura 29.
7
Creazione di una libreria
La gestione della gerarchia in SwitcherCADIII è semplice ma per certe esigenze poco
efficiente. In particolare, non è comodo essere costretti a salvare tutti gli schematici ed i
simboli di un progetto gerarchico nella stessa cartella per poterli utilizzare. In generale, si
vorrebbe potere creare una libreria di componenti una volta per tutte e poi potere utilizzare
tali componenti in qualsiasi schematico, salvandolo in qualsiasi cartella. Per fare questo
bisogna ricorrere ad una sintassi un poco più complessa di SPICE che è la definizione di
un sottocircuito.
7.1
Sottocircuiti
In una netlist, un sottocircuito viene definito con la seguente sintassi:
Figura 29: Proprietà di un simbolo personalizzato
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
.subckt nome_sottocircuito T1 T2 T3 T4
* .....
* netlist sottocircuito
* .....
.ends nomesottocircuito
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
I terminali di ingresso ed uscita del sottocircuito (T1, T2, T3, T4) vengono elencati subito
dopo il nome (nome_sottocircuito). Il sottocircuito viene poi richiamato nella netlist
inserendo un componente che inizia per lettera X.
Xaaaa n1 n2 n3 n4 nome_sottocircuito
L’assegnamento dei terminali è posizionale, quindi il nodo n1 è assegnato al terminale T1,
il nodo n2 al terminale T2 e così via. Da notare che mentre nella definizione del
sottocircuito compare prima il nome e poi l’elenco dei terminali, nella sua istanziazione
compare prima l’elenco dei nodi associati ai terminali e poi il nome.
7.2
Creazione del simbolo di un sottocircuito di libreria
Per creare una libreria in SwitcherCADIII bisogna fare uso di questi sottocircuiti. In
particolare si procede come per la creazione del singolo inverter e poi si passa alla
creazione del simbolo (ripetendo tutti i passi del Paragrafo 6). Una volta finita la
realizzazione del simbolo, ossia inseriti i pin, bisogna aggiungere uno step che consiste
nella definizione degli attributi del simbolo stesso. Per farlo, nell’editor del simbolo
scegliere la voce:
Menu
Edit -> Attributes -> Edit Attributes
Pulsante barra strumenti
Per definire un sottocircuito bisogna compilare i campi come indicato, ossia il Symbol Type
deve essere Cell, il Prefix deve essere X (la lettera indicativa di un sottocircuito), lo
SpiceModel deve contenere il nome del sottocircuito (che dovrebbe essere anche il nome
del simbolo), i campi Value2 e SpiceLine e SpiceLine2 possono contenere eventuale
definizioni di parametri (nel nostro caso c’è un solo parametro che è la W del PMOS, così
come la avevamo definitain modo parametrico), il campo Description contiene
semplicemente una descrizione testuale delle funzioni del componente mentre il campo
ModelFile contiene il nome file di libreria (ED.lib, nel nostro caso) che contiene tutte le
definizioni dei sottocircuiti (con percorso completo racchiuso fra apice singolo,come si
vede dalla Figura 31).
7.3
File della libreria
Adesso è necessario creare il file di libreria (ED.lib) che contiene la definizione del
sottocircuito in sintassi SPICE. E’ possibile crearlo in automaticamente partendo dalla
schematico.
Dalla finestra dello schematico si scelga:
Menu
View -> SPICE Netlist
Pulsante barra strumenti
verrà visualizzata la netlist del circuito, nel nostro caso quella di Figura 32.
Si aprirà la finestra in Figura 31.
Figura 32: Netlist dello schematico
Questa è la netlist completa del circuito con una serie di aggiunte di SwitcherCADIII che
servono per la simulazione. A questo punto si crei, con un Editor di testo (Notepad o
Writepad) un file di testo semplice vuoto che chiameremo ED.lib1. Copiare e incollare la
netlist del circuito nel file ED.lib provvedendo a cancellare tutte le righe che siano
commenti od inizino per punto (TRANNE la riga .lib). Ora si racchiuda la descrizione del
circuito fra le linee .subckt e .ends secondo la sintassi descritta precedentemente, come
mostrato in Figura 33. La riga .lib ossia (in Figura 33):
.lib C:\Programmi\LTC\SwCADIII\lib\cmp\standard.mos
Figura 31: Modifica degli attributi di un simbolo
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
1
Attenzione a salvare il file con estensione .lib e non .txt. Gli editor tendono ad aggiungere l’estensione txt di
default e spesso Windows è configurato per non mostrare le estensioni quindi non ci si accorge del
problema. Per risolvere, basta andare nella cartella dove si è salvato il file, deselezionare l’opzione
“Nascondi le estensioni per i tipi di file conosciuti” nel menu Strumenti -> Opzioni Cartella -> Visualizzazione
della finestra della cartella e poi verificare che il nome sia corretto. Se è stata aggiunta l’estensione
eliminarla o sostituirla con .lib in modo che il nome completo del file, compresa l’estensione, sia ED.lib.
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
deve essere fuori dalla definizione del sottocircuito e comparire una volta sola nel file.
Questo significa che se volessimo aggiungere altri sottocircuito non riscriveremmo
ulteriormente la definizione della libreria dei MOS.
Figura 35: Modifica dei parametri di un componente di libreria
Figura 33: File di libreria
Lo schematico completo risulta quello di Figura 34.
Tabella 3: Elenco dei file
FILE
inv1.asc
inv2.asc
inv2.asy
tb_inv2.asc
inv_lib.asy
tb_inv_lib.asc
ED.lib
DESCRIZIONE
Schematico completo, senza gerarchia
Schematico del solo inverter
Simbolo del solo inverter
Schematico per la simulazione di inv2
Simbolo dell’inverter definito tramite libreria
Schematico per la simulazione di inv_lib
File di libreria
Figura 34: Schematico completo ad alto livello
Si noti, in Figura 35, come si assegna il valore W1 al parametro WP dell’inverter, con un
clic del tasto destro sopra il componente.
ATTENZIONE: nel replicare il tutorial, si tenga conto che bisogna aggiornare, nel
simbolodell’inverter di libreria (inv_lib) il percorso completo al file ED.lib che dipende da
dove è stata salvata la cartella.
La Tabella 3 mostra l’elenco dei file utilizzati ed allegati a questo documento.
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro
Simulazione di circuiti digitali – Uso di SwitcherCAD III
ED 2006/07 - Massimo Barbaro