Creación de celdas digitales básicas usando Custom Designer
(Tutorial ASICs parte II)
Con las celdas
NOT y NAND creadas se procederá a la creación de testbenchs para su prueba, y a
utilizarlas en circuitos más complejos.
1- Arrancar una
terminal e ingresar el comando cdesigner &. Se procederá a crear un
testbench para la celda inversora. En el menú de la consola escoger File>New>Cellwview
e ingresar los siguientes datos (la librería escogida es la creada en el
tutorial anterior):
Fig. 1.
2- Con esto se
crea un nuevo esquemático para poder usar la compuerta inversora, presionar “i”
y escoger:
Fig. 2.
Con esto se habrá
introducido el símbolo de la compuerta inversora creada anteriormente. Si se
hace doble clic sobre el símbolo de la compuerta inversora entonces se abrirá
una ventana con el esquemático de los transistores CMOS colocados en el
tutorial anterior.
3- Si se ha
realizado doble clic sobre el símbolo del inversor se puede regresar al nivel
anterior escogiendo de la barra de menú la siguiente opción:
Fig. 3.
y después navegar
por los niveles:
Fig. 4.
Donde se puede observar
que se tienen los niveles del testbench y el inversor.
4- Se agregarán
los otros elementos necesarios para poder probar el circuito, para ello se
escogerán los siguientes dispositivos de la librería analogLib: Vsource,
Vpulse y Gnd.
Fig. 5.
5- El arreglo de
elementos ya conectados se muestra a continuación, con un pin de salida
colocado en el VOUT de la inversora, no olvidar colocar los nombres a las
líneas así como se muestra en la figura:
Fig. 6.
6- Ingresar las
siguientes propiedades para la fuente pulsante y para la fuente fija:
Fig. 7.
Fig. 8.
7- Guardar el
esquemático haciendo clic en el botón Save and check, si existe alguna
violación hay que arregrarla.
8- Ahora se
procederá a cargar el entorno de simulación (SAE- Simulation and Analysis
Environment). En la ventana del esquemático escoger de la barra de menús: Tools>SAE,
con ello aparece la ventana para realizar la configuración de la
simulación.
Fig. 9.
En esta ventana
se indica que el simulador, HSPICE, está listo para ser utilizado.
9- Se procede a
realizar la configuración del análisis. Primero se seleccionan los archivos de
los modelos en Setup>Models Files. En la ventana que aparece se debe
navegar hasta el archivo SAED90nm.lib. Que se encuentra en la siguiente
dirección: /home/usuario0/Synopsys/Libraries/SAED_PDK90nm/hspice/SAED90nm.lib.
Y se escoge el tipo de transistor como TT_12.
Fig. 10.
10- Después de
seleccionar el modelo, se ajustan los parámetros del análsis, se escoge el menú
Setup>Analysis. Y se selecciona tran, escogiendo las opciones
siguientes:
Fig. 11.
11- Y también se
escogerá el análisis DC (opción dc) para poder trazar la respuesta de la
compuerta inversora.
Fig. 12.
Se debe tener el
cuidado de escoger la fuente pulsante como la que se variará, ya que
necesitamos la respuesta de la entrada con respecto a los cambios en la salida.
Así que el nombre puede no ser necesariamente el mismo que aparece en la
imagen.
12- Se escogen
del esquemático aquellas entradas y salidas que se desean graficar, además se
indican los tipos de análisis que se desean para dichas entradas y salidas:
Fig. 13.
Los nombres que
aparecen bajo la columna Output, son simples indicadores, para poder escoger
las expresiones al hacer clic en la columna Expression se debe escoger la
opción para poder seleccionar desde el esquemático los elementos usando el
ratón, así solo se hace clic sobre las líneas VOUT y VIN.
Para la corriente
proporcionada por la fuente (Isupplied) se hace lo mismo, con la única
diferencia que se dará clic encima de la fuente fija para poder obtener la
corriente consumida del circuito en operación.
13- Se procede a
guardar la sesión (Session>Save State) para poder utilizarla después
y no tener que configurar todo de nuevo. Al momento de guardarla se debe
escoger OpenAccess, y colocarle un nombre adecuado. En Setup>Simulator
se puede escoger el directorio donde se desea guardar los resultados.
14- Ahora para
simular en el menú se selecciona: Simulation>Netlist and Run, con lo
que se crea el netlist del circuito y además se corre la simulación. Se
mostrará la ventana siguiente diciendo si hubo errores o todo salió bien en la
simulación:
Fig. 14.
Una vez simulado
se puede ver el netlist generado, en Simulation>Netlist>Display,
que será algo como lo mostrado a continuación:
* Generated for: HSPICE
* Design library name: LibreriaTutorialSynopsys
* Design cell name: inversor_tb
* Design view name: schematic
.option PARHIER =
LOCAL
.option ARTIST=2
PSF=2
.temp 25
.lib
'/home/usuario0/Synopsys/Libraries/SAED_PDK90nm/hspice/SAED90nm.lib' TT_12
*Custom Designer
(TM) Version J-2014.12-SP2
*Tue Sep 1 10:20:16 2015
.GLOBAL gnd!
********************************************************************************
* Library : LibreriaTutorialSynopsys
* Cell : inversor
* View : schematic
* View Search List
: hspice hspiceD schematic spice veriloga
* View Stop
List : hspice hspiceD
********************************************************************************
.subckt inversor
avdd avss vin vout
m0 vout vin avdd
avdd p12 w=0.5u l=0.1u nf=1.0 m=1
m1 vout vin avss
avss n12 w=0.25u l=0.1u nf=1.0 m=1
.ends inversor
********************************************************************************
* Library : LibreriaTutorialSynopsys
* Cell : inversor_tb
* View : schematic
* View Search
List : hspice hspiceD schematic spice veriloga
* View Stop
List : hspice hspiceD
********************************************************************************
xi0 avdd gnd! vin
vout inversor
v1 avdd gnd!
dc=1.2
v2 vin gnd! dc=0
pulse ( 0 1.2 100p 10p 10p 2n 4n )
.tran 10p 50n
start=0
.dc v2 0 1.2
0.005
.option opfile=1
split_dp=1
.probe tran i(v1)
.probe dc i(v1)
.end
15- Después de
realizar la simulación se abre de forma automática el Custom Wave View
mostrando las señales de salida:
Fig. 15.
16- Se pueden ver
las señales por separado haciendo clic sobre los nombres de las mismas y dando
clic derecho, se escoge la opción Ungroup, con ello se trazarán las
señales de forma separada.
17- En la parte
de abajo del graficador se muestran las pestañas dc y tran, la
figura mostrada anteriormente corresponde a la simulación de transiente, ahora
se presiona en la pestaña dc para poder ver el resultado del barrido DC:
Fig. 16.
18- Una de las
ventajas del Custom Wave View es la gran cantidad de herramientas de análisis
que posee, se explorarán algunas de las más comunes. Se comenzará por la
medición de frecuencia, hay que estar en la pestaña tran y darle clic a
una de las señales, la de Vout por ejemplo, y después se escoge del menú: Tools>Measurement
y se escogen las siguientes opciones:
Fig. 17.
Con lo que se
colocará la herramienta de medición de frecuencia encima de la señal
seleccionada:
Fig. 18.
19- Se puede ver
el retardo entre la señal de salida y la entrada, para ello hay que agrupar las
señales Vin y Vout. Y después desde el mismo menú de Measurements se
selecciona:
Fig. 19.
Fig. 20.
20- Ahora se verá
el tiempo de caída y de subida de la señal Vout, se debe desagrupar las señales
y desde Measurements escoger ahora:
Fig. 21.
Fig. 22.
En la figura
anterior se muestran dos mediciones, la de subida, en rojo, y la de caída, en
verde. Si se agregan varias mediciones es probable que necesite hacer clic
sobre el medidor y arrastrarlo para mostrar los otros, ya que todos caen en la
misma posición inicial.
21- Y en la
figura siguiente se muestra como obtener una medición de la corriente promedio:
Fig. 23.
Fig. 24.
22- Ahora se
realizarán los pasos para poder realizar la simulación de la celda NAND, se
seguirán unos pasos parecidos al caso de la NOT, pero para el caso de las NAND
se realizarán diferentes casos de simulación. Se realizará la simulación como
inversora, con una entrada fija, y con variaciones en las dos entradas.
23- Se crea una
nueva celda llamada nand2_tb:
Fig. 25.
24- Se inserta el
símbolo de la NAND2 y se le agregan los tierras y las fuentes Vsource y Vpulse,
además del pin para VOUT, tal como se muestra en la figura siguiente (no
olvidar añadir los nombres de las líneas de conexión):
Fig. 26.
25- Los valores
de las fuentes son los siguientes (son los mismos aplicados en el caso de la
NOT):
Fig. 27.
26- Se realiza un
Check and Save, y si no da errores se continua al paso siguiente.
27- Arrancar el
SAE (Tools>SAE).Y configurar los archivos de modelo (Setup>Model
Files) como aparece en la figura siguiente:
Fig. 28.
28- En Setup>Analisis,
para el análisis de transiente se realiza:
Fig. 29.
29- Se realizan
los ajustes para el barrido DC de la siguiente forma:
Fig. 30.
30- Se especifica
en Setup>Simulator la ruta:
/home/usuario0/Synopsys/MisLibrerias/LibreriaTutorialSynopsys/nand2_tb/Simulation
para guardar los resultados del análisis.
31- Se configuran
las entradas y salidas que se desean ver en el graficador, así como los
análisis que nos interesan para cada entrada:
Fig. 31.
32- Se guarda su
estado en Session>Save State, seleccionando OpenAccess de las
categorías disponibles.
33- Después del
menú se hace Simulation>Netlist and Run con lo que termina mostrando
las gráficas siguientes:
Fig. 32.
34- Cuya salida
es muy similar a la que se obtuvo del inversor, esto por el hecho de que la
compuerta NAND2 se está ocupando como inversor en esta configuración.
35- La frecuencia
obtenida se muestra a continuación, así como los retardos entre la entrada y la
salida:
Fig. 33.
36- Y el promedio
de la corriente consumida por el circuito:
Fig. 34.
37- También se
puede sacar el retardo de subida y bajada.
38- Abajo se
muestra el netlis obtenido para esta simulación:
* Generated for:
HSPICE
* Design library
name: LibreriaTutorialSynopsys
* Design cell
name: nand2_tb
* Design view
name: schematic
.option PARHIER = LOCAL
.option ARTIST=2 PSF=2
.temp 25
.lib '/home/usuario0/Synopsys/Libraries/SAED_PDK90nm/hspice/SAED90nm.lib'
TT_12
*Custom Designer (TM) Version J-2014.12-SP2
*Thu Sep 3
11:57:57 2015
.GLOBAL gnd!
********************************************************************************
* Library
: LibreriaTutorialSynopsys
* Cell
: nand2
* View
: schematic
* View Search List : hspice hspiceD schematic spice
veriloga
* View Stop List
: hspice hspiceD
********************************************************************************
.subckt nand2 avdd avss vina vinb vout
m1 vout vinb avdd avdd p12 w=0.5u l=0.1u nf=1.0 m=1
m0 vout vina avdd avdd p12 w=0.5u l=0.1u nf=1.0 m=1
m3 net13 vina avss avss n12 w=0.25u l=0.1u nf=1.0 m=1
m2 vout vinb net13 avss n12 w=0.25u l=0.1u nf=1.0 m=1
.ends nand2
********************************************************************************
* Library
: LibreriaTutorialSynopsys
* Cell
: nand2_tb
* View
: schematic
* View Search List : hspice hspiceD schematic spice
veriloga
* View Stop List
: hspice hspiceD
********************************************************************************
xi0 vdd gnd! vin vin vout nand2
v3 vdd gnd! dc=1.2
v4 vin gnd! dc=0 pulse ( 0 1.2 100p 10p 10p 2n 4n )
.tran 10p 50n start=0
.dc v4 0 1.2 0.05
.option opfile=1 split_dp=1
.probe tran i(v3)
.probe dc i(v3)
.end
No hay comentarios:
Publicar un comentario