Esercitazione 3: pilotaggio di linee RC con buffer...
Transcript of Esercitazione 3: pilotaggio di linee RC con buffer...
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
1
Esercitazione 2: pilotaggio di linee RC con buffer CMOS
Obiettivi 1. Studio e comprensione della propagazione di un segnale digitale lungo una linea RC
distribuita
2. Utilizzo dei cursori
3. Le goal function
4. I sottocircuiti
5. Le sezioni
6. Ottimizzazione di un circuito (manuale e automatica)
1. Introduzione
Nei circuiti integrati si pone il problema di trasferire i segnali digitali che rappresentano il risultato
di particolari elaborazioni da un sottocircuito all’altro. A tal fine i segnali vengono fatti propagare
lungo apposite linee di interconnessione.
Nella tecnologia planare, molto spesso le interconnessioni su chip presentano resistenza e capacità
parassita che dominano gli effetti induttivi. In questi casi la linea di interconnessione si comporta
come una linea RC distribuita e viene indicata con il seguente simbolo.
Fig. 1. Simbolo utilizzato per indicare una linea RC distribuita.
Una linea distribuita si può approssimare con un certo numero di stadi a parametri RC concentrati. I
singoli stadi RC possono essere di tre tipi: L, T, .
Fig. 2. Tre tipi di stadi utilizzabili per approssimare una linea RC distribuita.
Il grado di accuratezza che il modello ha nel descrivere la linea reale aumenta con il numero delle
sezioni utilizzate. Ad esempio, in generale, con 3 stadi , l’errore di approssimazione risulta essere
minore del 3% rispetto al caso reale.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
2
2. Esempio di modello a 4 stadi, calcolo del ritardo di propagazione
Poniamoci quindi il problema di studiare la propagazione di un segnale digitale lungo una linea RC
distribuita. Consideriamo una linea di interconnessione di alluminio con una resistenza Rtot=3700
e una capacità Ctot=8pF.
Proviamo ad utilizzare un modello a 4 stadi a L e osserviamo la propagazione del segnale ai vari
nodi. La pianificazione dell’esperimento ci porta a disegnare il circuito mostrato in Fig. 3.
Fig. 3. Pianificazione del circuito che modella una linea RC distribuita.
dove C1=C2=C3=C4=Ctot/4=2pF e R1=R2=R3=R4=Rtot/4=925.
Come segnale di ingresso si consideri l’impulso di Fig. 4.
Fig. 4. Forma d’onda Vin.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
3
L’implementazione in SPICE del circuito di Fig. 3 è la seguente (file circuito1.cir)
* Studio di una linea RC distribuita * modello a 4 stadi a L R1 3 4 925 R2 4 5 925 R3 5 7 925 R4 7 8 925 C1 4 0 2p C2 5 0 2p C3 7 0 2p C4 8 0 2p vin 3 0 PWL(0 0 9.95n 0 10.05n 3.3 69.95n 3.3 70.05n 0) .tran 100p 150n .probe .end
Fig. 5. Forme d’onda di ingresso e di uscita (nodo 8).
La Fig. 5 mostra che il segnale in uscita da una linea RC distribuita non è più un segnale
perfettamente quadrato. Di conseguenza nasce il problema della corretta interpretazione del segnale
da parte dei circuiti logici a valle della linea.
Calcolare il ritardo di propagazione fra ingresso e uscita. Il ritardo di propagazione è definito
come la distanza temporale fra l’istante di tempo in cui il segnale di ingresso alla linea raggiunge il
50% del valore logico alto (50% di 3.3V, e cioè 1.65V) e l’istante di tempo in cui il segnale al nodo
di uscita dalla linea si porta al 50% del valore logico alto (cioè sempre 1.65V).
Il ritardo può essere calcolato utilizzando i cursori disponibili nell’interfaccia grafica del Probe
oppure utilizzando le goal function.
Vediamo prima l’utilizzo dei cursori. I cursori si selezionano dal pulsante indicato in Fig. 6.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
4
Fig. 6 Pulsante di selezione dei cursori.
Selezionando i cursori appare una finestra nella quale è possibile leggere i valori x e y dei due
cursori disponibili (vedi Fig.7).
Fig. 7. Finestra dalla quale è possibile leggere i valori della forma d’onda selezionata.
Il cursore deve essere prima ‘agganciato’ alla forma d’onda desiderata. Per farlo basta cliccare con
il tasto sinistro, se si vuole usare il cursore 1, (o destro se si vuole usare il cursore 2) sul simbolo
della forma d’onda che si trova in basso a destra nel grafico.
Fig.8 Selezione della forma d’onda che si intende seguire con il cursore.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
5
E’ possibile muovere il cursore 1 lungo la curva selezionata tenendo premuto il tasto sinistro del
mouse (destro per il cursore 2). Il ritardo di propagazione può essere letto direttamente nella finestra
dei cursori alla riga “diff” che è la differenza fra i due cursori. Ad esempio nella Fig. 9 si può
leggere un ritardo di circa 14ns.
Fig. 9. Calcolo manuale attraverso i cursori, del ritardo di propagazione fra ingresso e uscita.
Il ritardo può essere calcolato anche automaticamente attraverso l’utilizzo delle goal function.
Una goal function è una funzione predefinita o definibile dall’utente che consente di elaborare
opportunamente i dati delle forme d’onda.
Le goal function sono selezionate cliccando sul tasto come indicato in Fig. 10.
Fig. 10. Tasto da selezionare per la selezione delle goal function.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
6
Dopo aver cliccato sul tasto indicato appare un menù come indicato in Fig.11. Sulla destra vi è una
lista di variabili che SPICE ha calcolato (tensioni e correnti ai vari nodi). Sulla sinistra vi è una lista
di funzioni predefinite (Functions or Macros). In basso vi è la Trace Expression, dove va inserita
l’espressione desiderata selezionando le opportune variabili e funzioni dalle due liste.
Fig. 11. Menù di selezione o definizione della goal function.
Il calcolo del ritardo può avvenire utilizzando la goal function predefinita XatNthY come indicato
in Fig.11. Questa funzione calcola il valore della x (ovvero l’istante temporale) corrispondente
all’n-esimo attraversamento di un predefinito valore da parte della variabile indicata.
Il risultato del calcolo è indicato in Fig.12 e ritorna un valore prossimo a quello calcolato
manualmente (14ns).
Fig. 12. Risultato del calcolo della goal function.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
7
Si noti infine che più ci si allontana dalla sorgente più i ritardi ai vari nodi aumentano. Si provi ad
esempio a calcolare il ritardo ai nodi 4, 5 e 7.
3. Verifica dell’accuratezza del modello a 4 stadi
E’ possibile verificare il grado di accuratezza del modello della linea reale RC distribuita variando il
numero degli stadi RC. Per effettuare velocemente il confronto fra modelli con numero diverso di
stadi si farà uso delle sezioni di Spice.
Cosa sono le sezioni. Il file di ingresso in Spice è suddiviso in sezioni. Ogni sezione comprende
tutto ciò che sta fra la riga di titolo (la prima nel file.cir o quella successiva al comando .end della
sezione precedente) e una linea .end. Sullo stesso file di input è quindi possibile scrivere più
sezioni che vengono risolte da Spice in maniera sequenziale.
Si modifichi il file di input come segue (file circuito2.cir)
* Studio di una linea RC distribuita (sezione 1) * modello a 4 stadi a L R1 3 4 925 R2 4 5 925 R3 5 7 925 R4 7 8 925 C1 4 0 2p C2 5 0 2p C3 7 0 2p C4 8 0 2p vin 3 0 PWL(0 0 9.95n 0 10.05n 3.3 69.95n 3.3 70.05n 0) .tran 100p 150n .probe .end * modello a singolo stadio (sezione 2) R1 3 8 3700 C1 8 0 8p vin 3 0 PWL(0 0 9.95n 0 10.05n 3.3 69.95n 3.3 70.05n 0) .tran 100p 150n .probe .end
Si noti che nella sezione 2 si sono utilizzati gli stessi identificativi del nodo di uscita e ingresso della
sezione 1. In questo modo, visualizzando la V(8) con “Add trace” si ottengono in un colpo solo
entrambe le V(8) delle due sezioni che corrispondo entrambe all’uscita della linea.
Facendo girare la simulazione compare la finestra di Fig. 13.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
8
Fig.13 Finestra di selezione delle sezioni da simulare. Cliccare su “All” per selezionarle tutte.
Scegliere di simulare entrambe le sezioni e di non eliminare alcuna sezione dei risultati (Do not skip
sections). Il risultato del confronto fra i due modelli è mostrato in Fig. 14.
Fig. 14. Confronto fra le due uscite delle due sezioni, cioè tra un modello a 4 stadi e uno a stadio
singolo.
Supponiamo ora di voler migliorare l’accuratezza del modello della linea utilizzando una
approssimazione a 7 stadi. A questo punto, assegnare i valori di 14 elementi potrebbe diventare un
lavoro ripetitivo e noioso. Si può sfruttare la caratteristica di Spice che consente di definire dei
sottocircuiti. Ogni stadio della linea può essere definito una volta per tutte per poi poter essere
utilizzato come blocco a se stante. L’istruzione che consente la definizione dei sottocircuiti è la
.SUBCKT. Ogni sottocircuito deve avere un nome e dei nodi identificativi che permettano la
comunicazione fra mondo interno al sottocircuito e mondo esterno. Gli identificativi di nodo che
vengono utilizzati nella definizione del sottocircuito hanno validità locale alla definizione e non
entrano in conflitto con i nodi definiti nella sezione all’interno della quale è contenuta la definizione
del sottocircuito.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
9
Lo stadio a L che vogliamo trasformare in sottocircuito è indicato in Fig 15. Come con tutti i
circuiti, prima dell’implementazione è necessario procedere alla pianificazione (disegno del circuito
e assegnazione di nodi, valori etc..).
Fig. 15. Sottocircuito RC del singolo stadio. I nodi di ingresso e uscita sono stati definiti con 1 e 2.
Il file di input seguente (circuito3.cir) mostra come aggiungere una terza sezione in cui si modella la
linea con 7 stadi attraverso l’utilizzo dei sottocircuiti.
* Studio di una linea RC distribuita (sezione 1) * modello a 4 stadi a L R1 3 4 925 R2 4 5 925 R3 5 7 925 R4 7 8 925 C1 4 0 2p C2 5 0 2p C3 7 0 2p C4 8 0 2p vin 3 0 PWL(0 0 9.95n 0 10.05n 3.3 69.95n 3.3 70.05n 0) .tran 100p 150n .probe .end * modello a singolo stadio (sezione 2) R1 3 8 3700 C1 8 0 8p vin 3 0 PWL(0 0 9.95n 0 10.05n 3.3 69.95n 3.3 70.05n 0) .tran 100p 150n .probe .end * modello a 7 stadi (sezione 3) .subckt RC 1 2 R 1 2 528.57 C 2 0 1.14p .ends X1 3 4 RC
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
10
X2 4 5 RC X3 5 6 RC X4 6 7 RC X5 7 20 RC X6 20 21 RC X7 21 8 RC vin 3 0 PWL(0 0 9.95n 0 10.05n 3.3 69.95n 3.3 70.05n 0) .tran 100p 150n .probe .end
Il sottocircuito viene utilizzato attraverso l’identificativo X seguito dai nodi e dal nome
assegnatogli.
In termini di circuito equivalente, la sezione 3 implementa il circuito di Fig. 16 che mostra
l’assegnazione dei nodi.
Fig. 16. Modello a 7 stadi della linea RC distribuita.
Il risultato del confronto fra le uscite delle tre sezioni, che volontariamente sono state identificate
con lo stesso nodo V(8) in modo da permetterne un confronto agevole, è mostrato in Fig. 17.
Fig. 17. Confronto fra uscite dei tre modelli.
La Fig. 17 riporta anche l’andamento dell’ingresso V(3) uguale per tutte e 3 le sezioni.
Le forme d’onda delle uscite differiscono a causa dell’errore di approssimazione ad un numero
finito di stadi.
Provare ad aumentare il numero di stadi e verificare la convergenza della forma d’onda in uscita.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
11
4. Esempio di ottimizzazione di un circuito
Si piloti la linea finora considerata mediante un invertitore CMOS. Si modelli la linea con 4 stadi
RC.
Fig. 18. Pilotaggio della linea RC distribuita mediante invertitore CMOS.
La pianificazione del circuito di Fig. 18 è mostrata in Fig. 19.
Fig. 19. Circuito di pilotaggio pronto per l’implementazione su Spice.
La forma d’onda di Vin è mostrata in Fig. 20.
Fig. 20. Forma d’onda di ingresso.
Il file di input (circuito4.cir) è il seguente
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
12
pilotaggio di linea RC .model mosp pmos LEVEL=1 VTO=-1 KP=50U TOX=9E-9 + CGDO=3.5E-10 CGSO=3.5E-10 CGBO=4.5E-10 .model mosn nmos LEVEL=1 VTO=1 KP=100U TOX=9E-9 + CGDO=3.5E-10 CGSO=3.5E-10 CGBO=4.5E-10 M1 1 2 3 1 mosp L=0.5u W=1u M2 3 2 0 0 mosn L=0.5u W=0.5u Vdd 1 0 3.3V Vin 2 0 PWL(0 0 9.95n 0 10.05n 3.3) .subckt RC 1 2 R1 1 2 925 C1 2 0 2p .ends X1 3 4 RC X2 4 5 RC X3 5 7 RC X4 7 8 RC .tran 100p 350n 0 100p .probe .end
La Fig. 21 mostra il ritardo (57ns) tra forma d’onda d’uscita (V(8)), e ingresso (V(2)).
Fig. 21. Forma d’onda d’uscita (V(8)) e ritardo di propagazione rispetto al segnale di ingresso
(V(2)).
Si vuole ora dimensionare opportunamente l’invertitore in modo da garantire un ritardo di
propagazione minore di 15ns. Si vuole inoltre che l’invertitore opportunamente dimensionato
occupi area minima. Il progettista può infatti agire sulle dimensioni L e W dei due transistori che
costituiscono l’invertitore. Per ridurre il numero delle variabili si supponga che il fattore di forma
(W/L) del canale di tipo p (pMOS M1) sia 2 volte quella del canale n (nMOS M2).
Si ipotizzi inoltre di poter agire sulle dimensioni a passi di 0.5m.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
13
L’analisi del circuito suggerisce che per raggiungere l’obiettivo della riduzione del ritardo di
propagazione conviene aumentare W anziché L. Dunque, per ottenere l’obiettivo, conviene tenere L
al minimo ed aumentare W a passi di 0.5m fino a che il ritardo non si è ridotto a 15ns come
richiesto. Conviene procedere a tentativi.
Con il seguente dimensionamento
… M1 1 2 3 1 mosp L=0.5u W=20u M2 3 2 0 0 mosn L=0.5u W=10u
…
Si ottiene il risultato di Fig. 22 che mostra un ritardo di 15.4ns circa.
Fig. 22. Forme d’onda d’uscita e di ingresso che mostrano un ritardo di 15ns circa per M1
dimensionato con W=20m e L=0.5m.
Siamo dunque già vicini alla soluzione ottima. La Fig. 23 mostra il risultato della simulazione con il
seguente dimensionamento … M1 1 2 3 1 mosp L=0.5u W=40u M2 3 2 0 0 mosn L=0.5u W=20u …
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
14
Fig. 23. Forme d’onda d’uscita e di ingresso che mostrano un ritardo di 14.6ns circa per M1
dimensionato con W=40m e L=0.5m.
La soluzione ottima si trova dunque con un W (di M1) fra 20m e 40m e procedendo per tentativi
si trova W=26m.
Vi è la possibilità di determinare automaticamente l’ottimo.
La .PARAM permette di definire un parametro (Wr) che può essere utilizzato nella definizione di
alcuni valori del circuito (in questo caso la larghezza del canale).
La .STEP permette di fare una analisi in cui si fa variare un parametro definito con la .PARAM.
Si modifichi il file di ingresso come segue (circuito5.cir)
*pilotaggio di linea RC .model mosp pmos LEVEL=1 VTO=-1 KP=50U TOX=9E-9 + CGDO=3.5E-10 CGSO=3.5E-10 CGBO=4.5E-10 .model mosn nmos LEVEL=1 VTO=1 KP=100U TOX=9E-9 + CGDO=3.5E-10 CGSO=3.5E-10 CGBO=4.5E-10 .param Wr=0.5u M1 1 2 3 1 mosp L=0.5u W={2*Wr} M2 3 2 0 0 mosn L=0.5u W={Wr} Vdd 1 0 3.3V Vin 2 0 PWL(0 0 9.95n 0 10.05n 3.3) .subckt RC 1 2 R1 1 2 925 C1 2 0 2p .ends
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
15
X1 3 4 RC X2 4 5 RC X3 5 7 RC X4 7 8 RC .step param Wr 0.5u 20u 0.5u .tran 100p 350n 0 100p .probe .end
La .STEP specifica di calcolare il transitorio per ogni valore del parametro Wr che varia da 0.5m a
20m a passi di 0.5m.
Dopo aver fatto girare la simulazione appare la finestra indicata in Fig. 24.
Fig. 24. Finestra di selezione delle analisi generate dalla .STEP.
Continuare semplicemente cliccando su OK. Selezionare “Performance Analysis” (vedi Fig. 25).
Fig. 25. Selezione del comando “Performance Analysis”.
Questo comando permette di sostituire l’asse delle x con la variabile parametrica indicata nella
.STEP (nel nostro caso la Wr). Attraverso la “Add Trace”, si inserisca la funzione di cui si vuole
seguire l’andamento in funzione del parametro Wr. Nel nostro caso ciò che interessa è il ritardo di
propagazione calcolabile come XatNthY(V(8),1.65,1)- XatNthY(V(2),1.65,1). La Fig. 26 mostra
l’andamento del ritardo di propagazione in funzione del dimensionamento dei transistori
dell’invertitore. Su tale grafico è possibile determinare immediatamente il dimensionamento ottimo.
Università degli studi di Ferrara, Dipartimento di Ingegneria, A.A.2013-2014
16
Fig. 26. Ritardo di propagazione in funzione del dimensionamento dei transistori (parametro Wr).