Guida cadence virtuoso

34
MANUALE per L’USO di CADENCE DISEGNO del LAYOUT VIRTUOSO

description

Guida cadence virtuoso

Transcript of Guida cadence virtuoso

Page 1: Guida cadence virtuoso

MANUALE per L’USO di CADENCE DISEGNO del LAYOUT VIRTUOSO

Page 2: Guida cadence virtuoso

CAP 1 – CADENCE L’obiettivo di questo capitolo è utilizzare Cadence. Per fare ciò, l’ambiente di ciascun utente è stato settato in modo appropriato. Nella home di ogni utente, c’è infatti una cartella denominata CADENCE_AMS. Per vederla, cliccare con il tasto sinistro del mouse sul desktop e scegliere “Home” tra le “Applications”, come in figura.

La cartella CADENCE_AMS contiene dei file importanti di configurazione. Se si utilizza Cadence con tecnologie differenti, è bene creare una cartella contenente i file di configurazione per ogni tecnologia. Ogni utente troverà già il suo ambiente settato in modo corretto. Nella cartella CADENCE_AMS verrà salvato il lavoro svolto (layout, schematici, verifiche…). Tra i file già presenti, particolarmente importante è il cds.lib che contiene informazioni sulla tecnologia utilizzata e, come dice il nome, sulle librerie di Cadence che vengono caricate. Per lanciare Cadence, occorre aprire una schell: cliccare con il tasto sinistro del mouse sul desktop e scegliere “Terminal”. Nella shell, editare il comando “cd CADENCE_AMS” e premere invio. Editare poi il comando che lancia Cadence in tecnologia AMS:

ams_cds –tech c35b4 –newtech –mode fb &

Il comando vero e proprio in realtà è icfb e ams_cds è uno script, i cui attributi si usano la prima volta che si lancia Cadence da una particolare libreria (in questo caso dalla libreria CADENCE_AMS) e dicono al programma che tecnologia utilizzare (c35b4 significa che la lunghezza di canale è 0.35um e ci sono 4 livelli di metal…ma ogni tecnologia ha la sua nomenclatura), che è una nuova tecnologia (-newtech) e che si desidera sia disegnare/simulare schematici che layout (-mode fb).

Page 3: Guida cadence virtuoso

CAP 2 – DISEGNO DEL LAYOUT L’obiettivo di questo capitolo è il disegno del layout. Per farlo, dalla barra di icfb-log, cliccare su File->Create New->Library. Scegliere il nome della libreria (ad esempio: “prove_Layout”), “Attach to an existing techfile” e usare “TECH_C35B4”. In questo modo i layout disegnati nella libreria “prove_Layout” avranno i layer della tecnologia scelta. Per disegnare il layout di un circuito cliccare su File->Create New->Cellview e scegliere il tool “Virtuoso”: comparirà automaticamente la vista “layout”, come in figura.

Per disegnare il layout, prendiamo innanzitutto confidenza con gli strumenti principali di disegno. Sulla toolbar verticale della finistra di Virtuoso layout editor, compaiono

Page 4: Guida cadence virtuoso

gli strumenti: Save, Fit, Zoom, Stretch, Copy, Move, Delete, Undo, Properties, Instance, Path, Polygon, Label, Rect, Ruler. Tra questi, quello di gran lunga più utilizzato per disegnare il layout è Rect, perché consente di disegnare rettangoli (e quindi oltre alle strutture geometriche dei transistor, anche le piste di connessione). Ad esempio, per diesgnare un rettangolo con il layer diffusione, selezioniamo prima il layer Diff dalla LSW (Layer Selection Windows) – si veda il cerchio viola- e poi lo strumento Rect (cerchio arancio). Infine puntando il mouse e trascinando è possibile disegnare il rettangolo. Una volta disegnato il rettangolo di diffusione, si prenda confidenza con i comandi: Stretch, Copy e Move, che sono quelli più utilizzati nel disegno del layout. I comandi di Cadence sono particolarmente semplici da utilizzare. Basta cliccare sul comando desiderato e poi selezionare l’oggetto che si vuole copiare, cancellare, muovere e così via. Ma è possibile anche fare il contrario, cioè selezionare l’oggetto cliccandolo con il mouse e poi scegliere il comando. Infine, i comandi possono essere selezionati anche dalla toolbar orizzontale di cadence, selezionando il menù a tendina di Edit. CAP 3 – CELLE E VISTE Ogni utente può creare in Cadence (e verranno salvate in CADENCE_AMS) una o più librerie contenenti il lavoro svolto. Le librerie contengono le celle, “Cell”, che sono i singoli circuiti o blocchi circuitali disegnati. Poiché Cadence può essere utilizzato sia per la simulazione circuitale (come Spice) che per il disegno e la verifica del layout, ogni “cell” può avere più “view” cioè ogni cella può essere “vista” come schematico (cioè schema circuitale), oppure come layout, oppure come simbolo (cioè come scatola nera) e così via.

Passiamo al 2°

manuale!

Page 5: Guida cadence virtuoso

MANUALE per L’USO di CADENCE Disegno dello Schematico Uso di Analog Environment

Page 6: Guida cadence virtuoso

CAP 1 – DISEGNO DELLO SCHEMATICO L’obiettivo di questo capitolo è il disegno dello schematico. Lo schematico è il circuito che vogliamo dimensionare e simulare. Per procedere in modo ordinato, creiamo una cartella, detta anche libreria, in cui contenere tutti i circuiti che vogliamo disegnare. La cartella in Cadence si chiama “Library”. Per farlo, dalla barra di icfb-log, cliccare su File->Create New->Library, come illustrato nella figura sottostante.

Scegliere il nome della libreria (ad esempio: “prove_schematici”), “Attach to an existing techfile” e usare “TECH_C35B4”.

In questo modo gli schematici disegnati nella libreria “prove_schematici” saranno pronti per usare, nelle simulazioni, i modelli dei dispositivi della tecnologia AMS 0.35.

Page 7: Guida cadence virtuoso

Infatti lo schematico è composto dal simbolo grafico dei dispositivi, che possono essere ideali (come i generatori di tensione, i resistori e i condensatori ideali) oppure “reali”, cioè propri della tecnologia (come per esempio gli NMOS, i PMOS, etc..). Questi ultimi, per essere simulati, hanno bisogno dei corrispondenti modelli circuitali. Una volta creata la libreria che conterrà gli schematici, siamo pronti per disegnarne uno. Dobbiamo allora andare sulla barra dell’icfb-log e cliccare su File->Create New->Cellview, compilare Cell Name (che è il nome del circuito che vogliamo disegnare, ad esempio “inverter”) e scegliere il tool “Composer-Schematic”: comparirà automaticamente la vista (“View Name”) “schematic”, come in figura.

Le viste sono i modi per rappresentare un circuito. Ad esempio, noi ora siamo interessati a simulare un circuito per scegliere la dimensione ottima dei transistor o il valore opportuno della tensione di alimentazione; in altre parole siamo interessati allo schema elettrico. Ma dello stesso circuito possiamo anche creare il layout, cioè il disegno delle maschere che compongono il circuito integrato, oppure ne possiamo creare un simbolo per utilizzarlo all’interno di un circuito più complesso. Per distinguere lo schema elettrico dal layout, dalla rappresentazione simbolica e così via, si utilizzano le viste. Se ci interessa lo schema elettrico, la “View Name” sarà “schematic”, se vogliamo disegnare il layout della cella “inverter” invece la “View Name” sarà “layout”, e via dicendo. Una volta cliccato su “OK”, si aprirà la finestra con sfondo nero (del programma “Virtuoso Schematic Editing”) su cui ora possiamo disegnare lo schema circuitale della cella “inverter”. Per farlo possiamo usare la toolbar verticale della finestra, composta da varie icone che corrispondono ai comandi più utili e frequenti. Come suggerisce il nome, vogliamo disegnare un “inverter” che è composto da un NMOS e da un PMOS. Iniziamo a posizionare l’NMOS. Per farlo bisogna cliccare sull’icona corrispondente a “Instance”, come in figura.

Page 8: Guida cadence virtuoso

Cliccando su “Instance” si apre la finestra di dialogo “Add Instance” che ci consente di scegliere il dispositivo che vogliamo mettere, tra quelli contenuti nelle varie librerie. Clicchiamo quindi su “Browse” e sfogliamo le librerie per trovare il componente desiderato, che troviamo nella libreria PRIMLIB, alla voce “nmos4”. Ne scegliamo come vista “symbol”.

Page 9: Guida cadence virtuoso

Se ci servono componenti ideali, come ad esempio, generatori di tensione etc… li selezioniamo dalla libreria “analogLib” e scegliamo come vista “symbol”.

Da “analogLib”, per l’alimentazione clicchiamo su Category: Sources->Independent e scegliamo “Vdc”; per la massa Category:Sources->Global e scegliamo “gnd”. I MOS invece sono propri della tecnologia e quindi li dobbiamo prendere dalla libreria PRIMLIB. Una volta che abbiamo posizionato i componenti, per cambiarne le dimensioni (dei transistor) o i valori (dei generatori), dobbiamo selezionare il dispositivo e poi cliccare su “Properties” nella toolbar verticale di Virtuoso Schematic Editing.

Infine, una volta disposti tutti i componenti circuitali, li possiamo collegare usando il comando “Wire (narrow)” cliccando e trascinando il mouse. Quando abbiamo finito di disegnare lo schema elettrico e abbiamo impostato tutti i valori dei componenti discreti e le dimensioni dei transistor, dobbiamo ricordarci di salvare lo schematico, cliccando sul primo bottone dall’alto della toolbar verticale “Check and Save”.

Comando “Wire”

Page 10: Guida cadence virtuoso

CAP 2 – USO DI ANALOG ENVIRONMENT L’obiettivo di questo capitolo è il disegno dello schematico. Lo schematico è il circuito che vogliamo simulare. Consideriamo ad esempio lo schematico “inverter” che abbiamo disegnato nel cap. 1 e che è riportato in figura.

Per semplicità, le dimensioni dei transistor sono quelle di default, il condensatore in uscita è ideale (quindi si usa la libreria analogLib, componente “cap”, valore di default 1pF), l’alimentazione è tramite un generatore ideale “vdc” del valore di 2V, come la

Prima di simulare il circuito ricordarsi di fare “Check and Save” e non “Save” soltanto!

Page 11: Guida cadence virtuoso

polarizzazione dei gate, che è a 1V. Una volta terminato il disegno e cliccato su “Check and Save”, impariamo a simulare il circuito. Dalla toolbar orizzontale di Virtuoso Schematic Editing, selezioniamo: “Tools”->”Analog Environment”, come in figura:

La finestra di Analog Environment si presenta come nella figura in alto: compaiono il programma di simulazione (“spectre”), definito dalla tecnologia, e lo stato della simulazione (“ready” perché non ci sono simulazioni in corso). Sulla toolbar orizzontale ci sono i menù di “Session”, “Setup”, e così via. “Session” permette di salvare lo stato (cioè tutti i parametri settati, il tipo di simulazione, etc…) della simulazione e di

Page 12: Guida cadence virtuoso

ricaricarlo. “Setup” è importante soprattutto per definire i modelli dei transistor (essi sono già impostati se lo schematico è in una libreria legata -“attached”- ad un file di tecnologia) e per impostare le simulazioni di corner (*lo vedremo in dettaglio in seguito). “Analysis” permette di scegliere il tipo di simulazione (DC, AC, Transitorio, etc…). “Variables” consente di impostare alcuni parametri circuitali come variabili (in questo modo si possono, ad esempio, fare più simulazioni al variare, ad esempio, della tensione di alimentazione, o delle dimensioni dei transistor, e così via). “Output” serve a salvare le uscite (correnti, tensioni, espressioni …). “Simulation” è il comando per generare la netlist e fare le simulazioni; permette anche di controllare i file .log della simulazione. “Results” serve a visualizzare i risultati della simulazione, in formato numerico, oppure come forma d’onda, a seconda del tipo di simulazione. “Tools” mette a disposizione “calculator”, “parametric analysis”, “Monte Carlo”, …(*li vedremo con maggiore dettaglio in seguito). Per la cella “inverter”, ci interessa fare uno sweep in DC della tensione di ingresso (cioè la tensione con cui sono polarizzati i gate dei transistor) per vedere la trans caratteristica Vout=f(Vin). Per farlo, clicchiamo su “Analysis”->Choose->dc. Comparirà una finestra simile a quella sottostante:

2

1

3 4

Page 13: Guida cadence virtuoso

Scegliamo la simulazione “dc” (passo 1), salviamo il punto di lavoro (passo 2), impostiamo la variabile di cui vogliamo fare lo sweep (in questo caso è il parametro di un componente, infatti facciamo variare la tensione del generatore) (passo 3), selezionando il componente (il generatore di tensione) sulla finestra dello schematico (passo 4) e indicando qual’ è il parametro che vogliamo variare (dc vdc “DC voltage”), come nella finestra sottostante.

Lo “Sweep Range” da impostare è 0V-2V. Ora lanciamo la simulazione cliccando su “Simulation”->”Netlist and Run”, oppure cliccando sull’icona del semaforo verde. In questo modo verrà generata la netlist e poi sarà eseguita la simulazione. Ogni volta che si modifica lo schematico, occorre non solo rifare la simulazione ma anche rigenerare la netlist!

Page 14: Guida cadence virtuoso

Appena è finita la simulazione si può visualizzare il risultato: “Results->Direct Plot->DC”, come in figura:

Cliccando poi sul ramo della tensione di uscita, si otterrà un’immagine simile a questa:

Per simulare il circuito ricordarsi di fare “Netlist and Run” e non “Run” soltanto!

Page 15: Guida cadence virtuoso

La finestra che visualizza i risultati è caratterizzata da una toolbar orizzontale che permette di ottimizzare la visualizzazione e di accedere a tool utili, come calculator. Si prenda confidenza con i principali comandi della toolbar. CAP 3 – CREAZIONE DEL SIMBOLO L’obiettivo di questo capitolo la creazione del simbolo a partire dallo schematico. Ciò può essere utile per inserire l’inverter che abbiamo creato in un circuito più complesso o in un test bench. Per farlo dobbiamo togliere dall’inverter i generatori e inserire i pin. In questo caso avremo 4 pin: un pin di alimentazione, uno di ingresso, uno di uscita e uno di massa. Per inserire i pin, clicchiamo sul comando “pin” nella toolbar verticale di “Virtuoso Schematic Editing” e compiliamo la finestra di dialogo del comando “pin”, mettendo il tipo (ad esempio “input Output”) e il nome del pin (ad esempio “Vdd”), come in figura.

Page 16: Guida cadence virtuoso

Ecco lo schematico finale che deve essere salvato con il comando “Check and Save”, comprensivo dei 4 pin.

Siamo ora pronti a creare il simbolo. Dall’ Icfb-Log di Cadence, clicchiamo su “File->New->Cellview” e creiamo la cella “inverter”, view “symbol” utilizzando il tool Composer-Symbol.

Page 17: Guida cadence virtuoso

Si aprirà così la finestra di “Virtuoso Symbol Editing”, la cui toolbar orizzontale contiene i menù a tendina dei comandi “Tool”, “Design”, “Window”, “Edit”, “Add”, “Check”, “Options”. Per creare il simbolo, scegliere “Design”->”Create Cellview”->”From Cellview” e compilare la finestra di dialogo mettendo “From View Name: schematic” “To View Name: symbol”.

Dopo averla compilata come suggerito in figura, apparirà una domanda sibillina:

Rispondiamo con convinzione “Replace” (non Modify!, che a discapito del significato non modifica nulla). Ora, prima che compaia il simbolo, possiamo esprimere le nostre

Page 18: Guida cadence virtuoso

preferenze sulla collocazione dei pin, compilando la finestra di dialogo “Symbol Generation Options” riportata qui sotto.

Ed infine comparirà il simbolo del nostro inverter: una black-box con 4 pin. Per esercizio, si crei ora una cella (view “schematic”) che permette di simulare l’inverter (utilizzando il simbolo).

Page 19: Guida cadence virtuoso

MANUALE per L’USO di CADENCE Disegno del Layout DRC LVS RCX

Page 20: Guida cadence virtuoso

CAP 1 – DISEGNAMO UN NMOS L’obiettivo di questo capitolo è imparare a disegnare il layout di un MOS. Per farlo dobbiamo innanzitutto conoscere i layer che vengono utilizzati; in generale, alcuni di questi sono standard e intuitivi, altri dipendono dal processo tecnologico utilizzato e possono servire per distinguere i vari dispositivi (si pensi ad esempio ad una tecnologia che mette a disposizione transistor con soglia regolare, con soglia bassa, con soglia nulla e così via). Esistono tre modi per cimentarsi nel disegno del MOS: il primo consiste nel disegnare il MOS seguendo la documentazione fornita dalla tecnologia (layer utilizzati, regole di disegno, etc…), il secondo consiste nell’osservare una cella parametrica, il terzo consiste nell’usare direttamente la cella parametrica. Dal punto di vista didattico è utile considerare per ora i primi due metodi e, in particolare, il secondo. Il primo modo è quello infatti più lungo e complesso: un esempio di documentazione è fornito dal documento CMOS035_DR in cui sono elencati i layer, le strutture (cioè i dispositivi integrabili) e le regole di disegno. Con un po’ di fortuna, però, la fonderia che produrrà il nostro circuito ci metterà a disposizione le celle parametriche. Cosa sono le celle parametriche? Sono i dispositivi integrabili (MOS, condensatori, resistori, etc…), rappresentati nelle varie viste (schematic, symbol o spectre, layout), e con dimensioni impostabili. Per capire meglio, apriamo la cella parametrica “nmos4”, vista “layout”, che troviamo nella libreria PRIMLIB. La cella rappresenta il layout di un transistore NMOS, avente W=10um e L=0.35um. E’ una cella parametrica e questo significa che quando viene richiamata come “istance” in un progetto, il progettista può settare le dimensioni (W, L e numero di finger, cioè di gate->per fare i transistor interdigitati) e il layout si modifica automaticamente, ottimizzando anche il numero di contatti di source e di drain.

Page 21: Guida cadence virtuoso

Vediamo come è fatta la cella parametrica di un NMOS. Per farlo, clicchiamo su Design->Summary, come in figura, e osserviamo che sia apre una finestra di dialogo contenente l’elenco di tutti i layer che compongono la cella. Apprendiamo quindi che l’NMOS è composto dai layer: NPLUS, DIFF, CONT, MET1, POLY1. Il gate è in POLY1, source e drain sono fatti con NPLUS e DIFF e contengono i contatti, già cortocircuitati tra loro con una striscia di MET1. Osserviamo che manca il contatto di gate e il contatto di substrato. Può essere utile zoomare sulla figura e lo si può fare anche disegnando un rettangolo con il tasto destro del mouse. Inoltre può essere comodo visualizzare di volta in volta i layer, selezionando/deselezionando AV (all visible) e NV (not visible) nella finestra LSW (layer selection window). Ora potremmo divertirci a misurare la cella parametrica, in particolare possiamo controllare se vengono rispettate alcune regole di disegno. Nel file CMOS035_DR è riportata anche la griglia minima per disegnare il layout, che è di 0.025um. Per visualizzare e modificare i disegni in modo corretto occorre perciò modificare la griglia di Virtuoso Layout Editing e impostarla a 0.025um. Lo si fa cliccando sulla toolbar orizzontale di Virtuoso e scegliendo Options->Display. Apparirà una finestra di dialogo così:

A questo punto possiamo utilizzare lo strumento righello (“Rules”) dalla tolbar verticale di Virtuoso e misurare l’estensione della NPLUS su DIFF per controllare che la regola “NP.E.1 Minimum NPLUS extension of DIFF 0.25” sia rispettata. Altre regole facili da verificare sono quelle riguardanti i contatti, il metal1 e il polisilicio. Nella cella parametrica l’area su silicio è ottimizzata e dunque le regole di disegno sono rispettate scegliendo i valori minimi. Ora proviamo a disegnare un NMOS di dimensioni: W=3um e L=0.35um, “imitando” la cella “nmos4”, che però ha dimensioni W=10um e L=0.35um.

Page 22: Guida cadence virtuoso

Innanzitutto, partiamo dalle dimensioni del canale e disegnamo un rettangolo di polisilicio di dimensioni 3um X 0.35um, che rappresenta il gate del transistor. Prima però sistemiamo la griglia di visualizzazione da Options->Display (come spiegato precedentemente). Oltre al rettangolo di POLY per avere l’NMOS dovremmo usare anche i layer DIFF e NPLUS. Inoltre poiché le aree di source e drain devono avere i contatti, il layer DIFF dovrà essere sufficientemente ampio da contenere un contatto e le regole dicono “CO.C.1 Minimum DIFFCON to GATE spacing 0.3”, “CO.W.1 Fixed CONT width 0.4”, “CO.E.1 Minimum DIFF enclosure of DIFFCON 0.15”. Quindi quanto deve estendersi il layer DIFF? Di almeno 0.85um, di cui 0.3um servono per tenere il contatto distante dal polisilicio del gate, 0.4um servono per realizzare il contatto vero e proprio e 0.15um servono per estendere attorno al contatto la diffusione. Vediamo nella figura il nostro MOS che si sta formando…

Ovviamente mancano ancora parecchie cose: i contatti di source e drain, i contatti di gate (che in realtà non ci sono nemmeno nella cella parametrica ma che ovviamente vanno aggiunti), l’informazione che si tratta di un “N” (servirà il layer NPLUS) e i contatti di bulk (anche questi assenti nella cella parametrica, per questioni di comodità). Innanzitutto diamo l’informazione che si tratta di un NMOS, usando il layer NPLUS, che stando alla regola “NP.E.1 Minimum NPLUS extension of DIFF 0.25” dovrà estendersi di 0.25um oltre il layer DIFF, come in figura:

Page 23: Guida cadence virtuoso

Proseguiamo poi con la sistemazione dei contatti di source e drain. Esistono due modi per disegnare il contatto: utilizzare singolarmente i layer CONT e MET1, dimensionandoli manualmente, oppure usare il comando (dalla toolbar orizzontale di Virtuoso) Create->Contact e selezionando “ND_C” che significa contatto di NDIFF.

Page 24: Guida cadence virtuoso

Osserviamo che il contatto disegnato in questo modo è una vera e propria cella parametrica: infatti dalla finestra di dialogo vediamo che è possibili creare in modo automatico array o matrici di contatti, semplicemente modificando il numero di righe e di colonne (“Rows” e “Columns”). Le dimensioni del singolo contatto e la distanza tra contatti sono invece già impostate in modo corretto, rispettando le regole di disegno “CO.W.1 Fixed CONT width 0.4” e “CO.S.1 Minimum CONT spacing 0.4”. I contatti così creati sono inoltre completi, perché la cella contiene tutti i layer (anche se ridondanti, cioè già presenti nel layout): CONT, MET1, DIFF e NPLUS. I layer ridondanti non si sovrappongono, come erroneamente si può pensare guardando il disegno che risulta a “rattoppi”. Il contatto va posizionato in modo da soddisfare la regola di vicinanza con il polisilicio: “CO.C.1 Minimum DIFFCON to GATE spacing 0.3”. Inoltre, considerata la dimensione W=3um del transistor c’è spazio per mettere 3 contatti, cortocircuitati tra loro, come si vede in figura.

Ora dobbiamo soddisfare la regola “PO.O.1 Minimum POLY1 extension of GATE 0.4” e allungare il layer di polisilicio di 0.4um. La dimensione complessiva del rettangolo di POLY1 sarà perciò di 3.8um X 0.35um. A questo punto, abbiamo realizzato un transistor NMOS con W=3um e L=0.35um perfettamente uguale alla corrispondente cella parametrica e decidiamo perciò di controllare il nostro layout con il tool Assura DRC (Design Rule Check), Il MOS da noi disegnato è uguale a quello delle celle della libreria PRIMLIB e dunque ci aspettiamo di non aver fatto nessun errore…giusto?

Page 25: Guida cadence virtuoso

CAP 2 – ASSURA DRC Per eseguire il controllo delle regole di disegno, dalla toolbar orizzontale di Virtuoso, clicchiamo su Assura->Run DRC e vediamo aprirsi una finestra di dialogo simile a questa:

E’ importante verificare che la tecnologia sia c35b4c3 e che file di regole sia quello giusto (drc.rul) e che il percorso sia corretto. Il risultato che otteniamo è:

Gli errori elencati sono: mancanza dei contatti di substrato, mancanza del contatto di gate, regole di densità non rispettate. In realtà perciò non sono dei veri e propri

Page 26: Guida cadence virtuoso

errori di DRC ma sono errori di ERC (electrical check rule), alcuni inoltre non sono errori ma warning, come ad esempio “minimum density”. Aggiungiamo il contatto di gate (da Create->Contact scegliendo P1_C, perché è il contatto di POLY1), rispettando la regola “PO.C.1 Minimum POLY1 to DIFF spacing 0.2” e i contatti di substrato (si usa il contatto PD_C perché il substrato è di tipo p) rispettando la regola “OD.S.1 Minimum DIFF spacing 0.6”. Il layout ottenuto è:

Gli errori residui segnalati dal DRC sono errori “fittizi” cioè sono errori di “density” oppure di ERC, dovuti al fatto che la cella non è collegata ad altre celle (gate, source e drain sono, perciò, flottanti). Supponiamo ora di collegare il gate con il drain del nostro mos (in configurazione a diodo) e il source con il substrato. Per farlo basta aggiungere delle piste di MET1, larghe almeno 0.5um (“M1.W.1 Minimum MET1 width 0.5”). In questo modo abbiamo eliminato anche gli errori di ERC, perché non abbiamo più terminali flottanti.

Page 27: Guida cadence virtuoso

E’ utile inoltre mettere delle etichette (Label) e dei pin per meglio comprendere i risultati dell’LVS (confronto layout-schematico) e dell’ RCX (estrazione dei dispositivi e dei parassiti). Si usa perciò il comando “Label” dalla toolbar orizzontale di Virtuoso.

Si sceglie il layer PIN della pista su cui si vuole mettere la label, si clicca su “Label”, si dà il nome e si posiziona la label sulla pista. Per attribuire alla label creata un pin (cioè un terminale che verrà letto anche da LVS e RCX) occorre usare il comando Create->Pins from Labels dalla toolbar orizzontale di Virtuoso Layout Editing.

I pin possono anche essere creati dopo aver posizionato tutte le label necessarie. Per controllare di aver inserito il numero corretto di label e di pin (e in generale per fare

Page 28: Guida cadence virtuoso

molti altri tipi di controlli) è utile il comando “Edit”->”Search” della toolbar orizzontale di Virtuoso.

Con il posizionamento dei pin, possiamo considerare finito il layout, che salviamo! CAP 3 - ASSURA LVS Un tool utilissimo quando si disegnano circuiti integrati è l’LVS. Esso infatti ci permette di verificare se il layout disegnato corrisponde effettivamente al circuito che vogliamo. Può essere banale quando si tratta di un solo transistor, ma è sempre meglio controllare passo per passo ciò che si sta disegnando per non ritrovarsi alla fine con errori di difficile comprensione. Per fare il confronto dobbiamo avere ovviamente uno schematico a disposizione. Per comodità lo scegliamo con lo stesso nome del layout (“provaMOS”, ad esempio), ma con view name “schematic”. Ora se controlliamo nel Library Manager, osserviamo che la cella “provaMOS” ha due view: layout e schematic. Anche nello schematico, abbiamo messo gli stessi pin che abbiamo usato nel layout. Sarà più comprensibile così il risultato dell’LVS. Per inserire i pin nello schematico, si usa:

Page 29: Guida cadence virtuoso

Osserviamo che nello schematico, abbiamo editato le proprietà del transistor per farlo uguale a quello del layout (cioè con W=3um e L=350nm). Una volta disegnato lo schematico, lo salviamo con “check and save” e torniamo alla view “layout” per usare il tool LVS. Come per il DRC, dobbiamo cliccare sulla toolbar orizzontale di Virtuoso Layout Editing e scegliere Assura-> Run LVS. Compare una finestra di dialogo con già impostato tutto ciò che serve: non ci resta, perciò, che dare l’OK:

Pin…

Page 30: Guida cadence virtuoso

Incrociamo le dita… Il messaggio che vorremmo vedere è questo:

Cosa succede se la sibilla dell’LVS ci dice “Schematic and Layout don’t Match”? Non scoraggiamoci, succede sempre almeno una volta nella vita del Layoutista! Premendo “yes” nella finestra di dialogo sopra riportata comparirà il risultato dettagliato dell’LVS. Riassumendo e semplificando moltissimo, esistono due tipi di errori: errori veri e errori di forma. Nei primi rientrano: corto circuiti, circuiti aperti, numero diverso di dispositivi tra layout e schematico, dimensioni e parametri diversi nei dispositivi, nodi collegati in modo sbagliato. Nei secondi rientrano ad esempio i mismatch tra i pin. Alcuni dei più comuni sono: nel layout abbiamo chiamato la pista di massa “gnd”, nello schematico l’abbiamo chiamata “GND”; ci siamo dimenticati di mettere tutti i pin, i pin sono di tipo diverso (input, output o input/output?), oppure abbiamo disegnato label e pin con un layer sbagliato o che non viene riconosciuto. Come sistemare tutto in modo che l’LVS dia il risultato positivo? Ovviamente se ci sono errori veri si devono controllare le piste e i dispositivi. Il consiglio principale però è uno solo: non facciamo un unico LVS alla fine di tutto il disegno, quando ormai la complessità è troppo alta! CAP 4 – ESTRATTO (RCX) E SIMULAZIONE DELL’ESTRATTO Il DesignKit (DK) fornisce un altro strumento di tortura per il Layoutista masochista: l’estratto. Come tante cose brutte, è molto utile, specialmente quando il circuito che vogliamo disegnare è delicato e pretenzioso. Il primo passo da compiere è l’LVS. Senza aver eseguito un LVS (non importa se con esito positivo o negativo) non possiamo fare l’estratto. Possiamo poi fare l’estrazione dal layout dei dispositivi e dei parassiti (capacitivi-sempre-, resistivi-nei DK evoluti, induttivi-non mi sono mai capitati DK così evoluti!). Che differenza c’è tra i “dispositivi” e i “parassiti”? La domanda è banale solo all’apparenza. In pratica i “dispositivi” riconosciuti tali dal DK sono quelli presi dalla Libreria della Tecnologia (ad esempio, il nostro transistor, ma anche un condensatore o un resistore) e “visti” anche dall’LVS, mentre i parassiti sono elementi circuitali creati dalla sovrapposizione o accostamento di opportuni layer.

Page 31: Guida cadence virtuoso

Per estrarre il Layout, dalla toolbar orizzontale di Virtuoso Layout Editing dobbiamo cliccare su Assura-> Run RCX. La finestra che compare è la seguente:

Nel “Setup”, risulta già tutto impostato correttamente. Per l’output invece abbiamo diverse possibilità: può essere salvato come “extracted view” oppure come “netlist”. In entrambi i casi possiamo poi simularlo. Se abbiamo più dimestichezza con l’ambiente grafico di Analog Environment, però, è più comodo salvarlo come “extracted view”. Nell’ “Extraction” possiamo scegliere se estrarre solo i parassiti capacitivi o anche resistivi. Ad esempio, possiamo mettere “C only”, “coupled” e poi mettere il nodo di massa “Ref Node”, che nel nostro layout si chiama “Gnd”. In questo modo dall’estratto avremo i dispositivi e le capacità parassite, viste da ogni nodo verso il nodo di Gnd.

Page 32: Guida cadence virtuoso

Vediamo ora come si presenta l’ “Extracted view”.

Ora che abbiamo l’estratto, può essere utile rifare su di esso le simulazioni fatte sullo schematico. Per farlo, occorre innanzitutto salvare la vista “av_extracted” come “schematic”. Ovviamente dobbiamo cambiare il nome alla cella se non vogliamo sovrascrivere lo schematico vero e proprio. Ad esempio, se la cella “provaMOS” possiede la vista “layout”, “schematic” e “av_extracted”, potremmo salvare “provaMOS” “av_extracted” come “provaMOSext” (ext dovrebbe ricordarci che si tratta di un estratto) “schematic”. Perché stiamo copiando un estratto come schematico? Perché in questo modo possiamo creare un simbolo associato all’estratto,

Page 33: Guida cadence virtuoso

cioè una “scatola” con pin di ingresso e uscita, che poi possiamo simulare nell’ambiente Analog Environment.

Ora, per creare il simbolo, dalla toolbar di icfb-log clicchiamo su File->New->Cellview e impostiamo “provaMOSext” “symbol”. Dalla toolbar orizzontale di Virtuoso symbol editing, clicchiamo su Design->Create->Cellview->From Pin List, come abbiamo già visto precedentemente (cap.3 del manuale sull’uso di Analog Environment, pag. 15). Alla fine possiamo inserire il simbolo, che è associato all’estratto del nostro layout, in un normale schematico (ad esempio “provaMOSext-sim”, vista “schematic”) per fare le simulazioni.

Page 34: Guida cadence virtuoso

Nello schematico per le simulazioni tratteremo questo simbolo come gli altri che abbiamo usato finora, cioè attaccheremo i pin ai “wire”, useremo generati di tensione e corrente, etc… A seconda della complessità del circuito che simuliamo, potremmo accorgerci che le simulazioni con l’estratto sono più lente di quelle con lo schematico soltanto. Questo è dovuto al fatto che nella netlist ci sono molti più nodi, a causa dell’estrazione dei parassiti. L’estrazione può essere “filtrata”, cioè si può suggerire all’RCX di considerare solo parassiti grossi e pericolosi!

FINE