DISSENY BASIC VLSI
Disseny de transistors


 

L'objectiu d'aquesta pràctica és que us familiaritzeu amb les eines més bàsiques per dissenyar a nivell de transistors en l'entorn ALLIANCE en el que es desenvolupen les pràctiques de DVLSI. En concret en aquesta pràctica haureu de treballar amb el llenguatge SPICE estructural (.spi), i amb les eines yagle i spice.

1.1 - Llenguatge SPICE

SPICE es un llenguatge de descripció de transistors:

Mirem com exemple la manera de representar una porta NAND amb aquest format (veure el fitxer nand2.spi):

* net 6 = i1
* net 5 = i0
* net 4 = vdd
* net 2 = vss
* net 1 = f

.SUBCKT na2_y 1 5 6 4 2
M1 3 6 2 2 tn L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M2 1 5 3 2 tn L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M3 1 6 4 4 tp L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M4 4 5 1 4 tp L=1U W=12U AS=24P AD=24P PS=28U PD=28U

C1 1  2  0.0220PF
C2 4  2  0.0285PF
C3 5  2  0.0205PF
C4 6  2  0.0205PF

.ENDS na2_y

 

MXXXX ND NG NS NB MNAME <L=VAL> <W=VAL> <AD=VAL> <AS=VAL> <PD=VAL> <PS=VAL>

Els parametres de la descripcio del transistor indiquen:

 

Ara podem veure com contruir un component mes complexe, com per exemple un fulladder (veure el fitxer fulladder.spi):

A. Inicialment indicarem quins son els noms dels nodes que farem servir.

* net 6 = a
* net 5 = b
* net 4 = ci
* net 3 = s

* net 2 = co
* net 1 = vdd
* net 0 = vss
* net 7 = p

* net 8 = ng
* net 9 = o

B. Despres posarem la descripcio d'aquells components que volem fer servir. En aquest cas portes XOR, NAND i una capacitat.


.SUBCKT xr2_y 8 7 9 5 3
M1 1 8 3 3 tn L=1U W=6U AS=12P AD=12P PS=16U PD=16U
M2 3 7 1 3 tn L=1U W=6U AS=12P AD=12P PS=16U PD=16U
M3 2 7 3 3 tn L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M4 9 8 2 3 tn L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M5 3 1 9 3 tn L=1U W=6U AS=12P AD=12P PS=16U PD=16U
M6 4 8 1 5 tp L=1U W=23U AS=46P AD=46P PS=50U PD=50U
M7 5 7 4 5 tp L=1U W=23U AS=46P AD=46P PS=50U PD=50U
M8 5 7 6 5 tp L=1U W=23U AS=46P AD=46P PS=50U PD=50U
M9 6 8 5 5 tp L=1U W=23U AS=46P AD=46P PS=50U PD=50U
M10 9 1 6 5 tp L=1U W=23U AS=46P AD=46P PS=50U PD=50U

C1 8  3  0.0358PF
C2 7  3  0.0326PF
C3 9  3  0.0141PF
C4 5  3  0.0277PF
C5 1  3  0.0227PF
C6 6  3  0.0028PF
.ENDS xr2_y


.SUBCKT na2_y 5 6 1 4 2
M1 3 6 2 2 tn L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M2 1 5 3 2 tn L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M3 1 6 4 4 tp L=1U W=12U AS=24P AD=24P PS=28U PD=28U
M4 4 5 1 4 tp L=1U W=12U AS=24P AD=24P PS=28U PD=28U

C1 5  2  0.0184PF
C2 6  2  0.0184PF
C3 1  2  0.0141PF
C4 4  2  0.0189PF
.ENDS na2_y

C. Finalment conectarem les diferents instancies dels components.

.SUBCKT fulladder 6 5 4 3 2 1 0

xor1  6 5 7 1 0 xr2_y
xor2  7 4 3 1 0 xr2_y
Xna1  6 5 8 1 0 na2_y
Xna2  7 4 9 1 0 na2_y
Xna3  9 8 2 1 0 na2_y
.ENDS fulladder

Per poder realitzar una simulació cal que assignem valors a les entrades per poder analitzar si les sortides són les esperades. En el cas de l'entorn ALLIANCE, el simulador és asimut, però disposem d'una eina, genpat, que ens permet dissenyar la simulació mé fàcilment.

1.2 - Simulacio

Per podel simular els circuits es necesari tenir un model dels transistors NMOS i PMOS:

Llavors ja podem executar les comandes necesaries per poder fer sa simulacio: