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