Sei sulla pagina 1di 42

UNIVERSITA DEGLI STUDI DI PALERMO

FACOLTA DI INGEGNERIA
DIPARTIMENTO ENERGIA, INGEGNERIA DELLINFORMAZIONE E
MODELLI MATEMATICI

Electric VLSI Design System Tutorial

Redatto da:
Ing Gineuve Alieri

ANNO ACCADEMICO 2014/2015

Indice:
1

Introduzione .............................................................................................................................3

Download ed installazione .......................................................................................................5

2.1

Electric & plugins: ...........................................................................................................5

2.2

Controllo della Memoria:.................................................................................................6

2.3

LTSpice:...........................................................................................................................7

Circuit and Layout Design .......................................................................................................8


3.1

Esempio Nand a due ingressi:.......................................................................................9

Consigli utili per il Layout .....................................................................................................30

Creazione completa di una cella a partire dal VHDL ............................................................33

Come inserire una nuova tecnologia in Electric ....................................................................40

Introduzione

Electric VLSI Design System un software EDA (Electronic Design Automation) open-source che
permette il design di diversi tipi di circuiti (MOS, Bipolari, Hardware Description Language, etc.),
dotato di diversi strumenti utili alla progettazione e al design e permette linterfacciamento ai CAD
pi diffusi includendo i formati EDIF, LEF/DEF, VHDL, CIF, GDS.
Nella tabella seguente sono evidenziati i tools, le tecnologie e le interfacce di Electric.
Tabella 1: Tools, Tecnologie e Interfacce di Electric.

Tools

Technologies

Interfaces

Design Rule Checking (many options)


Electrical Rules Checking (many options)
Simulation
Simulation Interface (many options)
Layout Generation (many options)
Compaction
Placement (many options)
Routing (many options)
VHDL Compilation
Silicon Compilation
Network Consistency Checking (LVS)
Logical Effort Analysis
Project Management (2 options)

nMOS
CMOS (many variations)
Bipolar
BiCMOS
Thin film
Schematics
Printed Circuits
Digital Filters
FPGA

CIF I/O
GDS I/O
EDIF I/O
DXF I/O
SUE Input
VHDL I/O
Verilog Output
CDL Output
EAGLE Output
PADS Output
Applicon/860 Input
Bookshelf Input
ECAD Output
Gerber Input
HPGL Output
PostScript Output

Electric basato sulla connettivit per tutti i tipi di design, ICs (Integrated Circuits) compresi. Per
connettivit si intende il posizionamento dei componenti ed il loro collegamento, questi rimangono
collegati anche se vengono spostati. Questo tipo di approccio ha dei pro e dei contro brevemente
rappresentati nella tabella seguente, questi sono da tenere in considerazione in base al tipo di
lavoro/utilizzo che si vuol fare del software.
Tabella 2: Possibili vantaggi e svantaggi di Electric.

Connectivity Approach
Pro

Contro

Immediata visualizzazione dei collegamenti.


Ad esempio: cliccando su un nodo/filo si evidenziano tutti
quelli collegati.
Utile per il routing automatico.

Essendo obbligati alla connettivit spesso non si possono


utilizzare le strutture disegnate nei livelli gerarchici
sottostanti complicando il layout.
Richiede lavoro aggiuntivo per creare le singole strutture.

Esistono alcuni plugins che aumentano le funzionalit di Electric, in particolare al momento sono
disponibili i seguenti plugins:

Static Free Software extra, comprende il simulatore IRSIM e le interfacce per le opzioni di
animazione 3D.

Bean Shell, pu essere aggiunto a Electric per attivare gli script Java e la valutazione dei
parametri. Operazioni avanzate che fanno uso dei parametri di cella avranno bisogno di
questo plugin.

Jython pu essere aggiunto per attivare lo scripting Python.

3D, consente di visualizzare un circuito integrato in tre dimensioni, questo non un plugin,
ma piuttosto un accessorio allinstallazione di Java. Richiede il pacchetto Java3D.

Animazione, un altro extra che pu essere aggiunto alla struttura 3D l'animazione 3D.
Richiede Java Media Framework (JMF).

Le modalit di download e installazione dei plugins saranno specificate nei prossimi paragrafi.
Electric include due simulatori, ALS e IRSIM, e la possibilit di interfacciarsi con simulatori esterni
generando netlist (Tabella 3).
IRSIM un simulatore gate-level che usa modelli RC, sviluppato dallUniversit di Stanford
originariamente scritto in C, stato tradotto in Java in modo da poter essere inserito in Electric;
come detto precedentemente esso non nativo in Electric ma facilmente installabile attraverso il
plug-in Static Free Software.
ALS un simulatore gate-level in grado di simulare gli schemi, layout IC, o descrizioni VHDL.
L'utente deve essere consapevole che il simulatore ALS traduce il circuito in VHDL, poi compila il
VHDL in una netlist per la simulazione. Ci significa che quando un layout o schema viene
simulato, vengono create due nuove visioni di quella cella: {VHDL} e {net.als}.
Tabella 3: Tipi di Netlist generabili con Electric.

Simulator
CDL
COSMOS
ESIM/RNL
FastHenry
IRSIM
Maxwell
MOSSIM
PAL
RSIM
SILOS
Spice
Tegas
Verilog

Level
circuit
Switch
Switch
Inductance
Switch
Circuit
Switch
Gate
Switch
Functional
circuit
Functional
functional

Netlist Command
Tools / Simulation (Spice) / Write CDL Deck...
Tools / Simulation (Others) / Write COSMOS Deck...
Tools / Simulation (Others) / Write ESIM/RNL Deck...
Tools / Simulation (Others) / Write FastHenry Deck...
Tools / Simulation (Others) / Write IRSIM Deck...
Tools / Simulation (Others) / Write Maxwell Deck...
Tools / Simulation (Others) / Write MOSSIM Deck...
Tools / Simulation (Others) / Write PAL Deck...
Tools / Simulation (Others) / Write RSIM Deck...
Tools / Simulation (Others) / Write SILOS Deck...
Tools / Simulation (Spice) / Write Spice Deck...
Tools / Simulation (Others) / Write Tegas Deck...
Tools / Simulation (Verilog) / Write Verilog Deck...

Download ed installazione

2.1 Electric & plugins:


Per scaricare la versione di Electric pi recente ed i relativi plugins bisogna accedere al sito della
staticfreesoft nella sezione Product-Code, http://www.staticfreesoft.com/productsFree.html.
Electric scritto in linguaggio Java (*.jar) dunque necessita di un software opportuno per essere
letto, quale OpenJDK, Apache Harmony, o Oracle Java (minima versione 1.6). Si consiglia il software
Oracle Java essendo il programma di sviluppo dello stesso Electric.
Dopo aver scaricato e salvato il file di Electric (electric-9.05.jar) per avviare il programma:

Windows: Doppio click sul file electric-9.05.jar salvato, questo avvier Electric con 64MB
di memoria. Vedremo di seguito come poter ampliare la memoria disponibile per poter
effettuare simulazioni e layout anche di grandi circuiti.

Linux-Unix: Apri un terminale, vai nella cartella dove hai salvato il file e scrivi java
Xmx512m jar electric-9.05.jar &, questo avvier Electric con 512MB di memoria.

Mac: Doppio click sul file electric-9.05.jar salvato, se non si avvia utilizzare le linee di
comando per Linux/Unix precedenti in un xterm.

Dopo aver scaricato i plugins, per avviarli insieme ad Electric bisogna creare una classpath. Per fare
questo devi aprire una finestra di comando, andare nella cartella dove hai salvato i file (electric e
plugins) e digitare java classpath electric-9_04.jar:electricSFS-9.04.jar:bsh-2.0b4.jar:jython2.5.3.jar com.sun.electric.Launcher. In Windows si deve usare ; per separare i file .jar e si
devono inserire le virgolette, la linea di comando sar dunque java -classpath "electric9_04.jar;electricSFS-9.04.jar;bsh-2.0b4.jar;jython-2.5.3.jar" com.sun.electric.Launcher.
La linea di comando precedente pu essere inclusa in un file *.bat avviabile con un doppio click, si
pu anche aggiungere lestensione della memoria ad 1GB inserendo il comando mx1000m.
Ricapitolando per windows: aprire il blocco note, scrivere java -classpath "electric9_04.jar;electricSFS-9.04.jar;bsh-2.0b4.jar;jython-2.5.3.jar" mx1000m com.sun.electric.Launcher
e salvare il file come .bat, inserirlo nella cartella dove sono racchiusi tutti i file .jar, avviarlo con il
doppio click.
Per verificare quali plug-ins sono installati, cliccare nel men in alto a destra Help poi About
Electric e infine plugins.

2.2 Controllo della Memoria:


La Java Virtual Machine ha un limite nella memoria utilizzabile, settata a 64MB. Per aumentare la
memoria utilizzabile da Electric, oltre ad inserire lopzione nella linea di comando come visto in
precedenza,

si

pu

modificare

lopzione

allinterno

del

programma

andando

in

File/Preferences/General/General, Figura 1.

Figura 1: Preferenze Generali di Eletric.

La sezione Memory ha due campi Maximum Memory e Maximum Permanent Space, il primo il
pi importante perch aumenta la memoria disponibile (nei sistemi windows a 32bit non pu essere
superiore a 1500) mentre il secondo una sezione di memoria addizionale che pu essere utilizzata
ad esempio per il design di Chip molto grandi (un valore di 200 sufficiente in questa sezione).

2.3 LTSpice:
Per poter simulare con Spice i circuiti progettati (schematic e layout) Electric ha bisogno di un
simulatore esterno a cui collegarsi, ne esistono diversi qui si prende in considerazione
linstallazione dellLTSpice (Linear Technology Spice).
LTSpice scaricabile dal seguente link http://www.linear.com/designtools/software/#LTspice,
dopo averlo installato si devono impostare alcune opzione allinterno di Electric come di seguito
riportato.
Aprire Electric ed andare in File/Preference/Tools/Spice-CDL, settare le impostazioni come
mostrato in Figura 2.
Nel campo Run Program inserire il path dove si trova il file di esecuzione dellLTSpice
C:\Program Files (x86)\LTC\LTspiceIV\scad3.exe
Nel campo with args (notare che questo campo case sensitive) inserire -i ${FILENAME} -r
${FILENAME_NO_EXT}.raw o ${FILENAME_NO_EXT}.out.

Figura 2: Preferenze Spice di Electric.

Per maggiori informazioni sul settaggio dellLTSpice in Electric possibile consultare il link:
http://cmosedu.com/cmos1/ltspice/ltspice_electric.htm.
7

Circuit and Layout Design

Il modo in cui Electric gestisce tutti i tipi di design circuitale rappresentandoli in un insieme di
nodi, archi e porte. I nodi sono componenti elettrici quali transistor, contatti e porte logiche; gli
archi sono invece i fili che collegano due componenti; mentre le porte sono i siti di connessione sui
nodi dove vengono collegati i fili.
Dato che Electric utilizza nodi ed archi importante che questi siano usati per creare tutte le
connessioni infatti, anche se nel layout (o schematico) pu sembrare che due componenti siano
collegati quando si toccano, ci deve sempre essere un filo (arco) ad interconnetterli per garantire la
connettivit in Electric.
Questo tipo di approccio richiede uno sforzo ed una attenzione maggiore nella fase di design ma
garantisce il corretto collegamento del circuito successivamente anche se si verificano, ad esempio,
degli spostamenti dei nodi (componenti); questi sono i famosi pro e contro a cui avevamo accennato
in precedenza.
Gli archi che formano i fili di collegamento possono contenere dei vincoli che aiutano a controllare
le modifiche geometriche (ad esempio un collegamento pu essere rigido o flessibile), questi vincoli
si propagano attraverso i livelli gerarchici del design.
Si definisce Cell (Cella) linsieme dei nodi e degli archi che descrive un circuito, ci possono essere
differenti viste di una stessa cella (schematic, layout, icon, vhdl, etc.) ed ogni vista pu avere
differenti versioni.
La gerarchia implementata instanziando una cella allinterno di unaltra, la cella instanziata ha un
livello gerarchico pi basso di quella che la contiene; da notare che la cella instanziata rappresenta
in questo caso un nodo per la cella che la contiene. Definendo gli exports allinterno di una cella
questi diventano i siti di connessione o porte (ports) sullistanza di tale cella.
Un insieme di celle costituisce una libreria (library) ed trattata sul disco come file singolo, un
circuito completo pu essere memorizzato in una libreria singola, o esso pu essere suddiviso in pi
librerie.
Introdurremo luso di Electric con un esempio: il design (schematic e layout) e la simulazione di
una porta nand a due ingressi.

3.1 Esempio Nand a due ingressi:


Aprire Electric, la schermata principale mostrata in Figura 3.

Figura 3: Schermata Principale di Electric.

Per modificare il colore dello sfondo andare al men Window / Color Scheme, si consiglia lo
sfondo bianco per una migliore visualizzazione ed eventuale stampa dei circuiti disegnati.
Settiamo adesso Electric per luso del processo tecnologico C5 della ON Semiconductors e
fabbricazione attraverso MOSIS, per fare questo aprire il menu File / Preference / Technology /
Tecnology e settare le impostazione come mostrato in Figura 4. Da notare che lopzione Analog
settata, questo permette la visualizzazione di resistenze e capacit nel men dei componenti.
Il processo C5 ha due layers di polisilicio (poly1 e poly2), tre livelli di metal (metal1, metal2,
metal3) e un layer hi-res per bloccare limpianto del poly2 in modo da creare resistenze di alto
valore in poly2.

Figura 4: Preferenze della Tecnologia in Electric.

Rimane solo da settare la scala (lambda), il processo C5 usa le regole di design sub micrometrico
(submicron design rules) della MOSIS Scalable CMOS (tecnologia mocmos in Electric) con
=300nm, per fare ci andare al men File / Preferences / Technology / Scale e settare la scala
della mocmos uguale a 300nm.
Adesso abbiamo settato lambiente di lavoro per fabbricare dispositivi con il processo C5 tramite
MOSIS, salviamo la libreria corrente con il nome di Tutorial andando in File / Save Library As
come mostrato in Figura 5.

Figura 5: Come salvare una Libreria in Electric.

10

Creiamo adesso una nuova Cella dove disegneremo il circuito della nand a due ingressi, andiamo in
Cell / New Cell, scegliamo la vista schematic e chiamiamo la nuova cella nand_2, come mostrato
in Figura 6.

Figura 6: Creazione di una nuova Cella.

Per mostrare la griglia nella pagina di editing si pu usare il comando rapido ctrl+G oppure nel
men Windows / Toggle grid.
Iniziamo a disegnare il circuito, la porta nand a due ingressi formata da due transistor nmos e due
transistor pmos, per inserire i transistor andare nella colonna Component e selezioniamo e
piazziamo un transistor nmos ed uno pmos a tre terminali, Figura 7. Per adattare lo zoom possibile
utilizzare il comando ctrl+9, oppure fare lo zoom-in con ctrl+7 o lo zoom-out con ctrl+0.

Figura 7: Inserimento componenti in Electric.

11

Per modificarne le dimensioni possiamo o fare doppio click sul componente, o utilizzare il comando
rapido ctrl+I oppure andare al men Edit / Properties / Object Properties, inserire W=10 (3m) e
L=2 (600nm), ricordando che la nostra scala 1 unit=300 nm. La W cos grande dovuta, come
vedremo nei prossimi paragrafi, al fatto che i nostri modelli Spice per effettuare le simulazioni
richiedono una Wmin pari a 3m.
A questo punto selezioniamo i due componenti ed effettuiamo un copia ed incolla, inseriamo
successivamente vdd e gnd e disponiamo i componenti come mostrato in Figura 8.
Per inserire il modello Spice ai transistor selezionare il componente e andare al men Tools /
Simulation (Spice) / Set Model Spice, successivamente evidenziare la scritta SPICE-Model
utilizzare il comando rapido ctrl+I oppure il men Edit / Properties / Object Properties e
modificare il testo in NMOS per i transistor di tipo n e PMOS per i transistor di tipo p (Figura 8).

Figura 8: Posizionamento componenti, vdd e gnd e inserimento Model in Electric.

Se si vuole modificare la dimensione di componente rispetto agli altri bisogna selezionare il


componente e utilizzare il comando rapido ctrl+B oppure tramite il men Edit / Size /
Interactively.
Per effettuare i collegamenti elettrici selezionare la porta del componente cliccando con il pulsante
sinistro del mouse, poi tenendo premuto il tasto destro disegnare il filo (arc connection), Figura 9.
Per inserire gli ingressi e luscita posizionare dalla sezione Component tre pin e collegarli come
mostrato in Figura 9. Per generare gli export, cio gli input e gli output della cella, bisogna cliccare
sul pin ed utilizzare o il comando rapido ctrl+E oppure il men Export / Create Export inserire il
nome dellinput/output (Export name) e la tipologia (Export characteristic), Figura 9.
12

Figura 9: Inserimento Pin e creazione Export della cella in Electric.

E bene creare sempre un export anche per vdd e gnd in modo da garantire il corretto collegamento
e funzionamento nelle gerarchie superiori.
Finito il circuito cerchiamo eventuali errori di design con il tool DRC (Design Rule Cheching)
tramite il comando rapido F5 oppure dal men Tools / DRC / Check Hierarchically, alla fine del
DRC compare una finestra con il numero di errori e warning (Figura 10); per vedere il tipo di errori
si devono usare i tasti > e < questi verranno mostrati nella finestra Electric Message.

Figura 10: Funzione DRC in Electric.

13

Spesso gli errori di DRC sono provocati da pin superflui creatisi durante la formazione dei
collegamenti elettrici (Figura 11), per pulire la cella da questi pin andare in Edit / Cleanup Cell /
Cleanup Pins.

Figura 11: Errore di DRC Unnecessary Pin.

Per generare la vista icona (icon view), cos da poter istanziare gerarchicamente il circuito, andare
nel men View/Make icon View; anche nella vista schematic troverete licona corrispondente al
vostro circuito, Figura 12.

Figura 12: Creazione della vista icona.

14

Per modificare licona si deve aprire la vista icona facendo doppio click in nand_2{ic}, dalla vista
icona si possono modificare le dimensioni dellicona stessa, del testo o dei pin, ruotare i pin
(comando ctrl+J) e molte altre funzioni grafiche. Se vogliamo, ad esempio, creare unicona che
rappresenti il simbolo della nand dobbiamo seguire i passi (Figura 13):

Selezionare il rettangolo e cancellarlo;

Disegnare un cerchio. Andando nelle propriet del cerchio (ctrl+I) in degrees of circle
scrivere 180, cos otterremo un semicerchio. Ruotarlo (ctrl+J) fino alla posizione verticale
destra.

Disegnare un altro cerchio e modificarne le dimensioni x=1 e y=1, sar il pallino della
negazione. Posizionarlo successivamente al semicerchio.

Disegnare adesso la spezzata per chiudere il simbolo. Nella sezione component selezionare
ed istanziare lopened polygon. Per cambiarne la forma selezionarlo e premere y oppure
andare in Edit/Modes/Edit/Toggle Outline Edit. Modificarlo in modo da ottenere il
rettangolo aperto a completamento del semicerchio.

Muovere i pin cos da posizionarli in modo corretto. Si ricorda che per evidenziare pi di un
elemento si deve tenere premuto il tasto shift, mentre per passare dalla selezione di un
elemento ad un altro sovrapposti bisogna tenere premuto il tasto ctrl.

Figura 13: Disegno del simbolo della nand (icon view).

15

Prima di procedere con il layout verifichiamo il funzionamento del nostro schematic con una
simulazione spice. Per inserire un codice spice andare nella sezione component, nellicona misc,
selezionare spice code ed istanziarlo nello schematic; adesso comparir una scritta text,
selezionarla e andare in propriet (ctrl+I), spuntare la Multi-Line Text (in alto a destra) e scrivere i
comandi spice come in Figura 14. Il comando .include deve contenere il percorso dove salvato il
file

con

modelli

spice,

scaricabili

al

seguente

link

http://cmosedu.com/cmos1/electric/C5_models.txt.

Figura 14: Comandi Spice.

Avendo preventivamente settato lLTSpice in Electric, come mostrato nel paragrafo precedente, si
pu simulare. Per avviare la simulazione andare nel men Tools/Simulation (Spice)/Write Spice
Deck oppure utilizzare il comando rapido alt+S. Avviando la simulazione si aprir in automatico il
programma LTSpice, la cui schermata riportata in Figura 15. Per scegliere le tensioni/correnti da
plottare (Va, Vb, Vy) andare al men Plot Settings/Visible Traces oppure cliccare licona
evidenziata in Figura 15.

16

Figura 15: LTSpice - Plotting delle forme donda.

Dalle forme donda visualizzate, Figura 16, si evince il corretto funzionamento del circuito con
queste sollecitazioni; ovviamente in fase di simulazione bisogna verificare tutte le combinazioni di
ingresso possibili.
Se nelle opzioni del men Tools/Control Panel/Operation non settata la cancellazione
automatica dei *.raw file, quando LTSpice viene chiuso si apre automaticamente il visualizzatore di
forme donda di Electric cos da poter continuare a vedere la simulazione effettuata.

Figura 16: Simulazione Spice del circuito nand_2.

17

Passiamo adesso alla creazione del layout del circuito progettato.


Per prima cosa dobbiamo creare la vista layout della nostra cella, per fare questo andare al men
Cell/New Cell ed in name inserire lo stesso nome della cella fin qui utilizzata (nand_2) e in view
selezionare layout. Avremo adesso una vista layout del nostro circuito e nella sezione component
tutte le strutture per poterlo costruire, vedi Figura 17.

Figura 17: Vista Layout in Electric.

Iniziamo il disegno del nostro layout inserendo un transistor pmos (P-Transistor) ed uno nmos (NTransistor), selezionare il transistor pmos ed entrare nelle propriet (ctrl+I), modificarne le
dimensioni W=10 (vedi schematic), Figura 18, eseguiamo le stesse operazioni per il transistor
nmos.

Figura 18: Inserimento transistor nella vista layout e modifica della W.

18

Per creare gli altri due mos necessari selezioniamo l nmos ed il pmos gi disegnati (tasto shift) e
facciamo un copia e incolla (ctrl+c, ctrl+v, oppure dal men edit) otterremo cos i transistor gi con
le giuste dimensioni.
Dobbiamo adesso creare le contattature di source e drain dei vari transistor, per fare questo inserire
un quadrato di nAct (per il pmos) e uno di pAct (per lnmos), adattiamo adesso le dimensioni
selezionando i contatti, entrando nelle propriet (ctrl+I) e in Y size inserire 10 (come la W del mos),
Figura 19.

Figura 19: Inserimento contatti di source e drain (pActive e nActive).

Selezionare entrambi i contatti e fare un copia ed incolla due volte cos da ottenere il circuito come
in Figura 20, adesso selezionare il primo source/drain e collegarlo al contatto come mostrato in
Figura 21, ricordiamo che per effettuare i collegamenti bisogna selezionare il componente cliccando
con il pulsante sinistro del mouse, poi tenendo premuto il tasto destro disegnare il filo (arc
connection).

19

Figura 20: Mos e contatti della porta nand a due ingressi.

Figura 21: Collegamento fra contatto e source/drain.

Selezionare larco (collegamento) appena creato, aprire le propriet (ctrl+I) e modificarne la fine
dellestensione in neither end, Figura 22, questo serve a non far proseguire larco oltre i punti di
collegamento iniziale e finale cos da evitare corto circuiti non voluti. Questa procedura sempre da
applicare nei collegamenti di source e drain per evitare sovrapposizioni sul canale, nei normali
collegamenti bisogna fare molta attenzione e selezionare lend extension pi opportuno.

Figura 22: Selezione delle propriet del collegamento (arco).

20

Effettuare i restanti collegamenti come mostrato in Figura 23, ed inserire il modello Spice ai
transistor. Ricordiamo che per inserire il modello Spice bisogna selezionare il componente ed
andare al men Tools / Simulation (Spice) / Set Model Spice, successivamente evidenziare la
scritta SPICE-Model utilizzare il comando rapido ctrl+I oppure il men Edit / Properties /
Object Properties e modificare il testo in NMOS per i transistor di tipo n e PMOS per i transistor di
tipo p.

Figura 23: Collegamenti circuitali e inserimento modelli Spice nel layout della Nand a 2 ingressi.

Effettuati i collegamenti ed inseriti i modelli Spice controlliamo che tutte le regole di layout siano
state rispettato avviando il DRC (tasto F5 oppure dal men Tools / DRC / Check Hierarchically),
se il DRC viene superato avviciniamo il pi possibile le strutture rispettando lallineamento cos da
compattare il layout, Figura 24, ed inseriamo unarea di pwell e una di nwell per i contatti di vdd e
gnd.
Man mano che avviciniamo le strutture o creiamo nuovi componenti consigliabile effettuare il
DRC cos da individuare eventuali problemi passo passo.
Allarghiamo le strutture nwell e pwell appena inserite cos da essere leggermente pi grandi dei
MOS sottostanti, in questo caso con il layout minimo inseriamo una X=27, ed effettuiamo lexport.
Come spiegato precedentemente per la versione schematic bisogna cliccare sulla struttura ed
utilizzare o il comando rapido ctrl+E oppure il men Export / Create Export inserire il nome
dellinput/output (Export name), nel nostro caso vdd e gnd, e la tipologia (Export characteristic),
nel nostro caso power e ground. Per ingrandire il testo degli export creati, cos da essere facilmente
visibili, selezionare il testo (eventualmente aiutarsi con il comando ctrl) ed aumentare il text size a 6
units, Figura 24.

21

Figura 24: Creazione nwell e pwell ed export per le alimentazioni.

Creiamo adesso, seguendo lo schematic, i collegamenti in Metal 1, Figura 25, e i collegamenti fra le
gate in polisilicio, Figura 26.

Figura 25: Collegamenti in Metal 1.

Figura 26: Collegamenti in Polisilicio tra le gate.

22

Aggiungiamo adesso due contatti Metal 1-Poly che serviranno per gli ingressi a e b e creiamo i
collegamenti con le gate, Figura 27. Avviamo il DRC, ci dar sicuramente errore sulla distanza fra
le Metal-1 (per la tecnologia C5 On-Semi devono essere ad una distanza minima di 3 unit),
modifichiamo allora il circuito per soddisfare le regole di layout date dalla tecnologia in uso, Figura
28.

Figura 27: Inserimento contatti Metal 1-Poly e collegamenti.

Figura 28: Spostamento contatti per rispettare le regole tecnologiche.

23

Per completare il circuito manca ancora il contatto per luscita del circuito y (vedi schematic) e il
relativo esport degli input/output. Inseriamo quindi un Pin in Metal 1, Figura 29, e creiamo il
collegamento con la Metal 1 al source del PMOS (drain dellNMOS; vedi schematic), Figura 30.
Ricordiamo sempre di avviare il DRC ad ogni modifica/inserimento nel circuito.

Figura 29: Inserimento Pin in Metal 1 per il contatto duscita y.

Figura 30: Collegamento in Metal 1 del Pin al circuito.

24

Spostiamo il Pin appena creato e collegato sopra il contatto di drain, e facciamo lexport degli
ingressi a e b e delluscita y, Figura 31.
Per fare lexport, come spiegato precedentemente, cliccare sul contatto/Pin da esportare ed usare il
comando rapido ctrl+E oppure il men Export / Create Export inserire il nome dellinput/output
(Export name) e la tipologia (Export characteristic). Per ingrandire il testo degli export creati, cos
da essere facilmente visibili, selezionare il testo (eventualmente aiutarsi con il comando ctrl) ed
aumentare il text size a 4 units.

Figura 31: Creazione export degli input/output nel layout.

Avviare il DRC, in caso di esito negativo correggere gli errori evidenziati, successivamente
effettuare lNCC (Network Consistency Checking), chiamato anche in altri tools LVS (Layout
Versus Schematic).
Come potrete vedere lNCC segnala un errore, Figura 32, si aprir in automatico una finestra
contenente le informazioni sul tipo di errore, mismatch nella topologia relativa ad un NMOS,
riguardando con attenzione lo schematic ed il layout e facendone il paragone ci accorgiamo di aver
scambiato gli ingressi a e b. In questo caso lerrore non varia la funzionalit del circuito, scambiare
gli ingressi di una nand non provoca variazioni, ma la funzionalit dellNCC proprio quella di
evidenziare qualsiasi discrepanza fra schematic e layout.
Scambiamo dunque gli ingressi, cancellandoli e ricreando lexport con i nomi opportuni, e
riavviamo DRC ed NCC, come si pu vedere dalla Figura 33 adesso il circuito ha superato lNCC.

25

Figura 32: Failed NCC - Network Consistency Checking.

Figura 33: Passed NCC.

26

Se avete precedentemente installato il plug-in 3D e il necessario software Java3D potete


visualizzare tridimensionalmente la struttura del vostro layout andando in Window/3D
Window/3D View, il mouse usato per ruotare la vista mentre la rotellina per lo zoom-in e zoomout, in Figura 34 mostrata la struttura 3D.

Figura 34: 3D Layout View.

Come per lo schematic anche il layout di una cella simulabile con Spice seguendo le stesse
procedure viste prima cio inserendo i modelli, il testo per la simulazione Spice ed avviando la
simulazione stessa.
Vediamo adesso come poter instanziare una cella gi costruita in tutte le sue parti (schematic,
layout, icon, etc.) allinterno di unaltra, per fare questo useremo la cella nand_2 appena terminata.

27

Creiamo con ctrl+N oppure dal men Cell/New Cell una nuova cella con vista schematic la
chiamiamo Sim_nand_2. Instanziamo adesso la cella creata in precedenza utilizzando il comando
rapido N oppure il men Cell/Place Cell Instance, si aprir una finestra dove bisogna scegliere la
libreria da cui vogliamo instanziare la cella (Tutorial), ricordiamo che in Electric si possono creare
celle/sistemi utilizzando librerie diverse, la vista che vogliamo utilizzare (schematic), selezioniamo
la cella (nand_2) ed infine diamo il comando New Instance & Close, Figura 35. Il programma in
automatico vi aprir una finestra in cui vi chiede se volete instanziare la vista icona, Figura 35,
cliccare si. Avrete adesso nello schematic licona della nand che avevamo creato prima, se volete
vedere il circuito che sta allinterno cliccate sul componente e poi utilizzate il comando rapido
ctrl+D oppure dal men Cell/Down Hierarchy/Down Hierarchy per tornare al livello gerarchico
superiore utilizzate il comando rapido ctrl+U oppure il men Cell/Up Hierarchy/Up Hierarchy.

Figura 35: Livelli Gerarchici Instanziare una cella allinterno di unaltra.

28

Creiamo la vista layout di questa nuova cella, sempre con ctrl+N oppure dal men Cell/New Cell,
e la chiamiamo Sim_nand_2, instanziamo adesso il layout della nand_2 utilizzando il comando
rapido N oppure il men Cell/Place Cell Instance. Come potete notare dalla Figura 36 quando
instanziate una cella con vista layout non vedrete il layout interno della cella, ma solamente gli
export precedentemente creati con i relativi nomi.
Quando allinterno del layout dobbiamo effettuare il routing delle strutture instanziate o inserire
nuove strutture bene poter vedere il layout dei livelli gerarchici inferiori cos da ottimizzare gli
spazi ed i collegamenti ed evitare soprattutto collegamenti involontari e non voluti, per fare questo
bisogna selezionare il componente e cliccare sullicona dellocchio aperto in alto a destra nella barra
dei men oppure dal men Cell/Expand Cell Instance/One Level Down, per tornare al livello
gerarchico superiore cliccare sullicona dellocchio chiuso oppure dal men Cell/Expand Cell
Instance/One Level Up, Figura 37.

Figura 36: Livelli gerarchici - Instanziare una cella con vista layout.

Figura 37: Vista del layout allinterno dei livelli gerarchici.

29

Consigli utili per il Layout

Per creare un buon layout, facilmente utilizzabile gerarchicamente, bene seguire alcune piccole
regole.
Vediamo allora come si pu modificare il layout appena creato per renderlo migliore, innanzitutto
creiamo una nuova vista layout andando nel men Explorer sulla vista layout clicchiamo il tasto
destro del mouse e selezioniamo Create New Version of Cell, Figura 38, avremo adesso una
nuova cella di layout identica alla precedente denominata nand_2;1{lay}.

Figura 38: Creazione di una nuova vista layout della Cella nand_2.

La prima accortezza da dover tenere quando si disegna un layout, cos come quando si crea un
circuito stampato, riguarda le linee di alimentazione e massa. Queste, infatti, devono sempre essere
di dimensioni maggiori rispetto agli altri contatti/metal. Per modificare il nostro layout clicchiamo
sul contatto di vdd e poi su quello di gnd e aumentiamo la Y size da 5 a 9, abbiamo cos ottenuto
delle linee di alimentazione/massa pi grandi.

30

Unaltra regola generale nel disegno del layout quella di mantenersi al livello metal pi basso
possibile, questo influisce direttamente negli export (input/output) della nostra cella. Dunque se non
strettamente necessario o direttamente richiesto buona norma non creare contatti o pin su livelli
metal superiori (es. metal1/metal2 contact, metal1 pin, etc.).
Nel nostro layout, ad esempio, avevamo creato per luscita y un pin in metal1 su cui poi avevamo
creato lexport, cos facendo al livello superiore abbiamo limitato larea di contatto. Selezioniamo
quindi il pin in metal1 delluscita y e cancelliamolo, selezioniamo il metal1/n active contact ed
eseguiamo lexport direttamente, in questo modo abbiamo aumentato larea di contatto per il
routing al livello gerarchico superiore.
In Figura 39 mostrato il nuovo layout della cella nand_2 (nand_2;1{lay}) con le modifiche appena
effettuate.

Figura 39: Layout modificato della cella nand_2.

31

In Figura 40 mostrata la vista al livello gerarchico superiore del nuovo layout della cella nand_2
(nand_2;1{lay}) da cui di evince laumento dellarea di contatto sia delle alimentazioni (vdd, gnd)
sia delluscita y.

Figura 40: Vista al livello gerarchico superiore della cella nand_2;1{


{lay}
}.

32

Creazione completa di una cella a partire dal VHDL

Un'altra importante funzione di Electric quella di poter accettare listati VHDL di tipo strutturale,
potere di questo fare simulazioni e riuscire, grazie a delle celle primitive, a generare il layout
automatico della cella, ma analizziamo tutto con ordine, proviamo a creare un tipico circuito che si
utilizza per gestire le abilitazioni esclusive, un decoder 2 ingressi 4 uscite.
Per creare una cella VHDL come fatto precedentemente utilizziamo il comando ctrl+N oppure dal
men Cell/New Cell e la chiamiamo DEC_2x4 con vista VHDL, Figura 41.

Figura 41: Creazione della cella DEC_2x4 con vista VHDL.

Per generare il VHDL di tipo strutturale del decoder dobbiamo conoscerne lo schema logico
circuitale; per ricavarlo creiamo prima la tabella di verit del circuito, Figura 42, tramite questa
otteniamo le espressioni funzionali delle singole uscite e con esse possiamo disegnare il circuito
logico, Figura 43.

Input
EN
0
1
1
1
1

Output

Sel<1> Sel<0> Output<3> Output<2> Output<1> Output<0>


X
0
0
1
1

X
0
0
0
0
0
1
0
0
0
0
1
1
1
0
Figura 42: Tabella di verit del DEC_2x4.

0
0
1
0
0

0
1
0
0
0

33

Figura 43: Schema logico circuitale del DEC_2x4.

Grazie allo schema logico circuitale e alle primitive previste da Electric, che analizzeremo in
dettaglio successivamente, possiamo scrivere il listato VHDL strutturale che viene riportato nella
Figura 44.

Figura 44: Listato VHDL di tipo strutturale del DEC_2x4.

34

A partire dal listato VHDL di tipo strutturale, grazie alla libreria sclib parte integrante di electric, si
pu generare automaticamente il layout della cella tramite il comando Tools/Silicon
Compiler/Convert Current Cell to Layout con le impostazioni riportate in File/Preference/Silicon
Compiler, Figura 45, prima di fare il layout automatico verificare che le impostazioni nel vostro
PC siano uguali a quelle riportate in figura.

Figura 45: Impostazioni del Silicon Compiler per il Layout automatico.

Utilizzando le impostazioni standard si ottiene il layout automatico riportato in Figura 46, si nota
che esso non ottimizzato (Area Minima) questo un limite del layout automatico, si pu per
agendo sulle impostazioni del Silicon Compiler migliorare il layout risultante.

35

Figura 46: Layout Automatico con impostazioni standard.

36

Il principale parametro su cui si pu agire il Number of row of Cell (default=4), se modifichiamo


questo parametro ponendolo pari a 2 e riavviamo il Silicon Compiler per il layout automatico si pu
vedere dalla Figura 47 che abbiamo ottenuto un layout pi compatto ma ancora migliorabile.
In particolare notiamo che le linee di alimentazione e massa sono della stessa dimensione delle
altre, che i pin di input/output sono annidati allinterno, che i contatti fra metal 1 e metal 2 delle
linee di alimentazione sono singoli ed infine per una maggiore intelligibilit dovremmo aumentare,
come fatto in precedenza, le scritte degli export di input/output.
Per modificare la dimensione delle linee di alimentazione dal men delle preferenze bisogna
modificare i valori del Power wire width e del Main power wire width e porli uguali a 9, tutte le
altre modifiche bisogna farle manualmente direttamente sul layout, in particolare la dimensione dei
contatti fra metal 1 e metal 2 deve essere 9x9 e la dimensione del testo degli export pari a 8 units;
il layout completo di tutte le modifiche riportato in Figura 48.

Figura 47: Layout automatico con impostazioni modificate.

37

Figura 48: Layout Automatico con successive modifiche manuali per lottimizzazione.

38

Analizziamo adesso con maggiore dettaglio la libreria sclib, questa comprende 15 primitive:

Inverter;

And a 2, 3 e 4 ingressi;

Nand a 2, 3 e 4 ingressi;

Or a 2, 3 e 4 ingressi;

Nor a 2, 3 e 4 ingressi;

Xor a 2 ingressi;

Flip Flop di tipo D.

Per le dichiarazioni di tali primitive si rimanda alla guida di Electric (capitolo 9, paragrafo 12),
come esempio si riporta la dichiarazione della and a 3 ingressi utilizzata in precedenza: component
and3 port(a1, a2, a3 : in bit; y : out bit); end component; .
La libreria sclib non n completa, n ottimizzata, infatti comprende solamente il layout non
ottimizzato delle celle primitive elencate in precedenza, mancando di schema elettrico e simbolo;
tale libreria inserita in Electric per permettere la comprensione del Silicon Compiler.
Per poter sfruttare appieno le potenzialit di Electric si deve creare una propria libreria di celle
standard completa di tutte le viste (schematic, symbol e layout), se la cella non completa in tutte le
viste quando la instanziamo in un livello gerarchico superiore dar sempre un errore di NCC non
facilmente comprensibile, questo ci che avviene se provate ad utilizzare la sclib preinstallata in
Electric.
Per creare una propria libreria di Standard Cell dopo aver creato le celle con tutte le viste per
identificarle come standard cell si deve andare nel men Cell/Cell Properties e selezionare
Standard cell in a cell library.
Avendo una libreria di Standard Cell completa si possono facilmente utilizzare senza errori dal
men View il comando Make Schematic View che crea lo schematico a partire dal layout.
In conclusione riportiamo i paragrafi della guida ufficiale di Electric dove poter trovare gli
argomenti affrontati:

3.11.2 Breve descrizione della vista VHDL e del comando Make VHDL View;

4.9 Spiegazione della finestra di testo, editor del VHDL, ed esempio di listato;

9.5.2 Spiegazione del simulatore ALS che simula a partire dal VHDL, spiegazione di
come creare una nuova primitiva in VHDL/Verilog;

9.12 Silicon Compiler, creazione del layout partendo dal VHDL strutturale.

39

Come inserire una nuova tecnologia in Electric

Quando vogliamo produrre i nostri progetti dobbiamo utilizzare una tecnologia specifica che
scegliamo fra quelle previste dalla foundry a cui ci rivolgiamo (OnSemi; TSMC; IMEC; IBM),
nasce dunque lesigenza di inserire una nuova tecnologia o modificare una tecnologia esistente,
Electric prevede entrambe le possibilit.
Per poter creare una nuova tecnologia bisogna innanzitutto avere i file tecnologici, questi sono
distribuiti dalle foundries previa registrazione, identificazione e richiesta; i file tecnologici possono
essere di tipo testuale (*.pdf), librerie geometriche (*.gds; *.gds2; *.lef sempre leggibili tramite
notepad o word), etc.
Dopo aver ricevuto i file tecnologici per creare una nuova tecnologia utilizziamo il Technology
Creation Wizard, per avviarlo andiamo in Edit/Technology Editing/Tecnology Creation Wizard,
Figura 49, questo tool prevede la creazione di una nuova tecnologia tramite linserimento di alcuni
semplici parametri.

Figura 49: Tecnology Creation Wizard.

Il primo pannello, denominato General, descrive le caratteristiche generali della tecnologia:

Nome della Tecnologia;

Eventuale breve descrizione;

La Unit Size (nm) il numero di nanometri per quadrato della griglia;

La Resolution la pi piccola grandezza caratteristica permessa;

Il Psubstrate process controlla la generazione delle well;

LHorizontal transistor controlla l'orientamento dei transistor.


40

Gli altri pannelli descrivono le dimensioni di ogni tipo di layer, ad esempio la regione attiva
(Active) riportata in Figura 50, il polisilicio (Poly), le metal, etc; tutte le dimensioni possono essere
trovate nei file tecnologici.

Figura 50: Technology Creation Wizard, dimensioni dellActive Layer.

I valori scritti possono essere salvati in un file di testo effettuando il Save Parameters, tali parametri
possono essere ricaricati effettuando il Load Parameters, quando si completato tutto il
Technology Creation Wizard si pu finalmente scrivere il file tecnologico vero e proprio
utilizzando il comando Write XML, questo scriver un file *.xml.
Nota Bene: Il file *.xml deve riportare lo stesso nome del Technology Name che si inserito nel
pannello General, altrimenti generer un errore in fase di caricamento del file stesso.
Generato il nuovo file tecnologico *.xml possiamo caricarlo allinterno di Electric andando in
File/Preference/Technology/Added Technologies e cliccare su Add, Figura 51.

Figura 51: Add Technology.

41

Per modificare una libreria esistente bisogna utilizzare il Technology Editing, in particolare si deve
prima convertire la tecnologia in libreria con il comando Edit/Tecnology Editing/Convert
Technology to Library for Editing, successivamente modificare la libreria e poi riconvertire la
libreria in tecnologia con il comando Edit/ Tecnology Editing/Convert Library to Technology.
Per maggiori dettagli si rimanda alla guida di Electric Capitolo 8 Paragrafi 1 e 2.

42

Potrebbero piacerti anche