LDIM‎ > ‎

ams035

 Laboratorio de Microelectrónica

Notas prácticas de la herramienta Cadence para diseño Full custom

Claudio Passerone, Mª Luisa López Vallejo

Versión Web: Pablo Ituero

Actualizado en febrero de 2010


Introducción

El laboratorio de Micro electrónica constituye el complemento práctico de la asignatura Microelectrónica (cuarto curso, P94). Tiene como objetivo introducir al alumno en el conjunto de herramientas CAD habitualmente empleadas en el diseño full-custom de circuitos integrados.

La meta final consiste en ser capaces de acometer la realizacion práctica de un diseño completo de un circuito sencillo empleando herramientas CAD comerciales para el diseño full custom, todas ellas de Cadence Design Systems. Con estas herramientas se pueden realizar los circuitos tanto a nivel de esquemático como de trazado, simularlos, etc. Para llegar a este diseño final se irán realizando ejercicios de menor a mayor complejidad, comenzando con el diseño y simulación de la puerta más sencilla, para teminar con la completa realización de un circuito de complejidad baja.

A continuación se describirá de forma somera el funcionamiento de las herramientas de Cadence involucradas en el ciclo de diseño full-custom. Estas notas se complementan perfectamente con la ayuda de Cadence o con el manual de referencia de las herramientas. Para un mayor detalle de información respecto a las librerías tecnológicas que se utilizan en este curso, se encuentra disponible en las estaciones de trabajo del laboratorio la documentación en hipertexto que proporciona el fabricante. Se trata de AMS (Austria Mikro Systeme Int.), y la documentación está disponible en:

 

   /usr/local/ams/ams_v3.70/www/index.html

 


Utilización de las herramientas de Cadence

Las herramientas de diseño de circuitos presentan una gran complejidad en general. Mediante estas notas se pretende facilitar el trabajo del alumno, resumiéndose en ellas los puntos básicos para utilizar Cadence en el laboratorio de Microelectrónica. Para aclarar cualquier duda sobre los procedimientos aquí descritos se puede consultar el manual de ayuda de Cadence, que se encuentra disponible en las estaciones de trabajo del laboratorio.

Antes de ejecutar el programa hay que preparar un directorio en el que trabajaremos. Cada diseño se ve como una librería que se añade a las librerías ya existentes en el sistema. Dentro de cada librería están las células, cuya unidad constituye el proyecto final. Las células se componen de vistas, que como su nombre indica, son formas diferentes de ver el mismo bloque. A nosotros nos interesan dos en particular: las vistas de esquemático (schematic) y de trazado (layout). Representan dos niveles de abstracción diferentes del circuito que se está diseñando. Una célula a su vez puede contener más células constituyendo un diseño jerárquico.

Lo primero que hay que hacer es crear el directorio de trabajo. Se recomienda elegir un nombre sensato, que facilite en el futuro el reconocimiento del circuito de que se trata. Hacemos:

 

   mkdir nombre_diseño

   cd nombre_diseño

 

En este punto se puede llamar a CadenceIntegrated Circuit Frontend Backend (icfb), desde una ventana con intérprete de comandos. En concreto, para la tecnología que utilizamos se debe llamar de la siguiente forma:

 

   ams_cds -tech c35b4 -mode fb &

 

Tras un período de inicialización en el que se muestran mensajes en el terminal, aparece una ventana como la de la figura 1, la ventana principal de comandos. Se utilizará para crear los diseños o para seleccionar los ya existentes con el fin de modificarlos o realizar nuevas simulaciones. Aparecerá también otra ventana llamada Library Manager (ver la figura 2) que permite ver el contenido de las librerías y de las células, así como las vistas disponibles de estas últimas.

 

Figura 1: Ventana principal de icfb

En este manual se describirá sólo una pequeña parte de los comandos disponibles en icfb, aquellos fundamentales para la realización del laboratorio. Para más información acerca de la herramienta se puede pulsar el botón Help o recurrir a la ayuda de Cadence, que se invoca desde una ventana con intérprete de comandos con la orden:

 

   cdsdoc &

 

Figura 2: Ventana Lybrary Manager

En la figura 3 se ve una de las ventanas de ayuda que presenta este manual.

Figura 3: Ayuda de Cadence

Esquemáticos

Nuestro objetivo será diseñar y simular circuitos electrónicos, cuya representación mediante esquemáticos se realizará utilizando el editor de esquemáticos (Schematic Entry). Colocaremos todos los componentes que constituyan el circuito de forma manual en el espacio de trabajo, conectándolos adecuadamente. Podremos también modificar los diferentes parámetros que caracterizan los elementos o conservar sus valores por defecto. Finalmente, utilizado el simulador se puede verificar gráficamente el correcto funcionamiento del circuito, comprobando la respuesta que se obtiene en las salidas frente a los estímulos que se aplican en las entradas.

A continuación se describen las utilidades básicas de la herramienta para edición de esquemáticos, que se muestra en la figura 4 en la que se puede ver un inversor. En la sección 3 se detallará el procedimiento de simulación de un circuito.

 

Figura 4: Editor de esquemáticos Schematic Entry de icfb

Apertura de un esquemático

Recordamos que para cada diseño se debe crear una librería que contendrá las células.

Para crear una nueva librería se debe seleccionar del menú File de la ventana principal (icfb) o del Library Manager el comando New y aquí Library.... Aparecerá una ventana (ver figura 5, izquierda) en la que se debe escribir el nombre de la nueva librería y aceptar con OK. En este punto, si se selecciona la opción Attach to an existing techfile, se nos pide el fichero tecnológico (Technology File) que se va a utilizar en el diseño, en nuestro caso hay que seleccionarTECH_C35B4. En este fichero de describen tanto las características de las máscaras que se utilizarán en el proceso de fabricación como las reglas geométricas que se deben cumplir al realizar el trazado. De momento no nos van a preocupar especialmente, volveremos sobre este fichero en la sección de trazados.

Una vez se ha creado la nueva librería hay que crear las células necesarias para el diseño. Para ello seleccionamos de la ventana del icfb o del Library Manager el menú File -> New -> Cellview.... Aparecerá la ventana que se muestra en la parte derecha de la figura 5, en en la que se puede seleccionar la libreria en la que creamos la célula, darle nombre y escribir el tipo de vista que se va a crear (en nuestro caso schematic). Aceptamos todos los datos introducidos pulsando OK.

 

  

Figura 5: Ventana de creación de librería (nuevo diseño)

Para abrir un trabajo que se ha guardado en una sesión anterior basta con seleccionar del Lybrary Manager la librería y la célula deseada y hacer doble click en el tipo de vista que se quiere abrir. Otra forma de hacer lo mismo es mediante el comandoOpen... del menú File de icfb o del Lybrary Manager.

El resultado de las operaciones previas es en cualquier caso a apertura de la ventana del editor de esquemáticos (o de trazados si ésta es la vista elegida) similar a la que se ve en 4. Se distinguen cuatro áreas diferentes:

•    La barra de menú, aparece horizontal en la parte superior de la ventana.
•    La barra de iconos de instrumentos, en vertical al lado izquierdo.
•    La zona de trabajo, en negro, ocupa la mayor parte del espacio disponible.
•    La línea de estado, en la parte de abajo.

Para cerrar la ventana de esquemáticos al terminar el trabajo hay que ejecutar el comando Close dentro del menú Window.

Operaciones en la ventana de esquemáticos

Para realizar una esquemático disponemos de una serie de comandos que se pueden ejecutar de diversas maneras:

•    a través del menú,
•    mediante iconos de instrumentos,
•    utilizando el ratón y haciendo click en la zona de trabajo,
•    pulsando una tecla (hotkey).

En el último caso hay que prestar atención a las mayúsculas y minúsculas, que tienen diferente significado. Muchos comandos al ejecutarse se mantienen activos por un tiempo indefinido, interrumpiéndose su ejecudión en general pulsando ESC.

Si para un comando en particular es necesario operar sobre un objeto o varios habrá que seleccionarlos. La selección se puede hacer antes o después de activar el comando. Para ello se puede pulsar el botón izquierdo del ratón sobre el objeto o mantener pulsado el botón y arrastrar el ratón encerrando la zona que se desea seleccionar. Para añadir nuevos objetos a una selección ya existente se hace igual que se ha descrito hasta ahora pero oprimiendo simultáneamente la tecla SHIFT.

En los próximos apartados se describirán las operaciones principales que se pueden realizar en la edicion de esquematicos y sus características. Finalmente, como ejemplo se realizará la construcción del esquemático de un inversor.

Inserción de componentes de librería

 

Permite añadir un componente en el esquemático. Al activarse aparece una ventana, denominada Add Instance, mediante la cual se selecciona la librería del elemento que se va a insertar. Si se pulsa Browse aparece el Library Browser[1] que permite seleccionar el componente mediante el ratón: en la librería PRIMLIB, por ejemplo, se pueden encontrar transistores MOS o bipolares[2]; en la librería analogLib la alimentación y la masa, además de múltiples tipos de fuentes. Para todos los componentes se puede especificar en general una serie de parámetros que definen las características del componente presentando unos valores por defecto. El tipo de vista de los elementos que se instancien debe ser symbol. Al pulsar con el botón izquierdo del ratón un punto de la zona de trabajo aparecerá en esa posición una instancia del componente que se ha seleccionado.

Realización de conexiones

 

Consiste en conectar mediante un hilo fino[3] dos terminales. Se pulsa con el botón izquierdo del ratón en el punto donde se quiere realizar la conexión. Se suelta el botón y se desplaza el ratón hasta el punto final: hacer click de nuevo. Si se desea terminar aquí la conexión hay que pulsar de nuevo. Si no, continuaremos realizando conexiones.

Al trazar los hilos aparecerá un rombo pequeño en las cercanías del puntero del ratón, en general en los terminales de los componentes. Si se pulsa la tecla s, se obtendrá el mismo efecto que si se hace click sobre el punto en donde está el rombo, facilitando con ello el trazado de la red.

Inserción de pines de entrada y salida

Para poder excitar el circuito con señales es necesario insertar pines que comuniquen el circuito con el exterior. Al activar el comando se abre una ventana en la que hemos de especificar el nombre y el tipo de pin (inputoutput, …), que se sitúa en el esquemático con el ratón, al pulsar el botón izquierdo. Es posible especificar más de un nombre, con lo que varios pines serán insertados en el esquemático consecutivamente.

Los pines son útiles en dos casos particulares:

•    cuando se quiere introducir un estímulo o ver una salida en una simulación;
•    cuando se va a realizar un diseño jerárquico, pues se hace a través de símbolos con pines de entrada y salida (2.3).

En el primer caso el nombre de los pines serán los nodos que se utilizarán en el fichero de estímulos para indicar la posición de los generadores utilizando la sintaxis de SPICE. En el segundo caso el símbolo generado a partir de la vista esquemática tendrá terminales de entrada y salida parejos a los pines definidos como input y output; se podrá utilizar el símbolo como cualquier otro componente de librería.

Edición de las propiedades de los componentes

 

Cuando se instacia un componente se pueden elegir los valores de los parámetros que lo caracterizan en la ventana de inserción de componentes de librería. Para poder modificarlos una vez han sido creados, se utiliza este comando. Para ello hay que seleccionar el componente en cuestión (antes o después de activar el comando) y modificar los valores oportunos en el cuadro de diálogo que aparece. Los cambios se hacen efectvos al pulsar Apply o OK (si se utiliza Apply se puede continuar con el comando en otros componentes que se vayan seleccionando sucesivamente).

Guardar el diseño

 

Siempre es conveniente ir guardando el trabajo que se ha realizado por lo que pueda suceder (aunque UNIX es un sistema muy robusto, puede producirse una caida del sistema o la alimentación en cualquier momento). Hay tres opciones disponibles: Check and Save realiza antes de salvar el diseño un test del circuito que permite detectar posibles fuentes de error (por ejemplo, terminales sin conectar). Save salva simplemente el trabajo en la librería o célula seleccionada. Finalmente, Save As... permite cambiar el nombre de la librería o de la célula.

Modificación del esquemático

 

Este conjunto de comandos permite modificar el esquemático de diferentes formas. A continuación se describen brevemente:

Stretch : modifica las dimensiones de un objeto o mueve un símbolo manteniendo las conexiones.
Copy : duplica un objeto ya existente.
Move : mueve un objeto.
Delete : borra un objeto. Se puede anular con Undo.
Rotate : rota un objeto.
Undo : anula el efecto del último comando ejecutado.
Redo : repite el último comando.

Muy interesante es que durante la ejecución de estas operaciones es posible girar el objeto obteniendo imagen especular del mismo tanto en sentido vertical como horizontal. Para ello hay que pulsar la tecla F3, y en la ventana que aparece se pulsa Sideways(reflexión horizontal) o Upsidedown (reflexión vertical).

Zoom y Pan

 

Los comandos zoom y pan sirven para ampliar o reducir la parte del esquemático que se visualiza. Si se selecciona Pan hay que apuntar con el ratón al punto de la pantalla que se desea pase a ser el centro. Un efecto similar se puede conseguir con las teclas de dirección del teclado (flechas). Con los distintos comandos de zoom se puede ampliar o reducir la parte del esquemático que se puede observar en la zona de trabajo. Finalmente, el comando Zoom To Fit, permite permite ver el circuito completo en la zona de trabajo.

Creación de símbolos para diseños jerárquicos

El diseño de circuitos complejos resulta más fácil realizando bloques básicos que se utilicen posteriormente como componentes de un nivel jerárquico superior. El procedimiento de creación de símbolos es el siguiente:

1.  Crear una célula básica (vista schematic) (por ejemplo, un inversor). Para que sea útil, debe tener al menos un pin de entrada y/o salida, que constituirán los terminales del símbolo que se va a generar.
2.  Crear la vista symbol para la célula que se acaba de diseñar: para ello utilizamos el comando Design -> Create Cellview -> From Cellview... y pulsamos OK en las dos ventanas que aparecen sucesivamente.
3.  Se abre una ventana que presenta el símbolo que se acaba de generar. Éste se puede modificar (comandos Stretch y Move), teniendo cuidado de no eliminar los terminales (cuadrados rojos).
4.  Crear otra célula (con otro nombre, por ejemplo top_inv) a un nivel jerárquico superior, con la vista schematic.
5.  Insertar el componente que se acaba de crear con el comando Add Instance, buscándolo en la librería que lo contiene y eligiendo la vista symbol.

Se puede generar el símbolo de una célula formada de otras células, creando diseños jerárquicos con un número arbitrario de niveles en la jerarquía. Lo que no se puede hacer es instanciar el símbolo de una célula dentro de sí misma, cosa que es de lo más lógica.

Se puede recorrer la jerarquía de un diseño desde el nivel más alto haciendo uso del comando del menú Design -> Hierarchy. Con él se puede abrir para lectura (Read) o escritura (Edit) el contenido del símbolo, retornando al nivel anterior (Return) o al nivel inicial directamente (Return To Top).

Ejemplo

A modo de ejemplo vamos a describir la creación de un esquemático que represente un inversor. Este esquemático contendrá transistores, conexiones, pines de entrada/salida y alimentación. Se debe realizar lo siguiente:

1.  En la ventana principal de icfb hacer click en File; en el menú que aparece seleccionar New y aquí Library. Aparece una ventana para la creación de una librería.
2.  Escribir el nombre de la nueva librería (por ejemplo labo1) y pulsar OK. Aparecerá una ventana para seleccionar el fichero tecnológico (Technology File), seleccionamos TECH_C35B4 y pulsamos OK.
3.  Seleccionar la nueva librería con el Library Manager y crear una nueva célula mediante el comando File -> New -> Cellview...; se introduce el nombre de la célula (por ejemplo: inversor) y la vista schematic (si se elige la herramienta de edición de esquemáticos automáticamente aparece el tipo de vista schematic). Al aceptar con el OK aparecerá la ventana de edición de esquemáticos.
4.  Para insertar los transistores MOS vamos al menú Add y seleccionamos Instance: se abre la ventana Add Instance, pulsamos en Browse y seleccionamos la librería PRIMLIB. De todos los componentes que aparecen utilizaremos nmos4de la categoría mosfets (si está activa la opción que muestra categorías), siempre con la vista symbol y situamos el ratón en la hoja de trabajo, pulsando con el botón izquierdo en la posición deseada.
5.  Repetimos la operación precedente eligiendo pmos4 en lugar de nmos4; pulsando ESC finalizamos la ejecución del comando de inserción.
6.  Para colocar los pines de E/S podemos volver al menú Add y seleccionar Pin; tecleamos el nombre del pin de entrada, por ejemplo in en la línea que aparece a la deracha de Pin Names; llevamos el ratón de nuevo a la zona de trabajo y pulsamos en la posición deseada; volvemos a la ventana Add Pin, escribimos el nombre del pin de salida y seleccionamos la dirección del mismo: cambiamos de input (valor por defecto) a output; nos volvemos a situar en la zona de trabajo para insertar el nuevo pin. Pulsando ESC terminamos este comando.
7.  Para insertar en el esquemático la alimentación y la masa se opera como en el punto 4, escogiendo del browser analogLib-> Sources -> Globals y seleccionando la vista symbol de gnd y vdd.
8.  Para realizar las conexiones volvemos al menu Add y seleccionamos Wire (narrow): nos situamos en el punto donde se desea comenzar la conexión y pulsamos el botón izquierdo; al soltarlo aparecerá un hilo que sigue al ratón; situarse en la posición final y pulsar nuevamente.
9.  Para escoger los parámetros de los transistores vamos a Edit -> Properties -> Objects y seleccionamos uno de los transistores; hay que modificar si es preciso los valores de las reglas (Width y Length) o el modelo de simulación; pulsamos Apply, volvemos al esquemático, seleccionamos otro transistor y procedemos sucesivamente con todos.
10.  Guardamos el trabajo realizado: Design -> Check and Save.

Simulación

  Cadence permite realizar simulaciones relativas a los esquemáticos creados, visualizando la variación con el tiempo de las magnitudes (tensiones y corrientes) que se pretende analizar frente a las entradas que se aplican en particular (ver la sección 3.1). El simulador que vamos a utilizar es Spectre, una versión propietaria y mejorada del conocido simulador SPICE. Cada componente se simula tomando como base un modelo del mismo (que define sus características) y los parámetros parásitos (se pueden estimar utilizando la información proporcionada al diseñador del esquemático o calculados a partir del trazado del circuito). A continuación se describe el procedimiento que se debe seguir para simular un circuito sencillo, partiendo de su especificación a nivel esquemático. La sección 4.8 explicará qué modificaciones habrá que efectuar cuando la fuente de datos del modelo sea el mismo trazado.

Descripción de estímulos y las cargas

La descripción de los estímulos de entrada y de las cargas en las salidas se pueden realizar de dos formas:

•    mediante un fichero de texto descrito con la sintaxis de SPICE,
•    mediante la utilización de bloques de librería.

La primera es más cómoda si se quieren simular situaciones muy diversas, pues basta con escribir diferentes ficheros y anotar el comportamiento de todas las simulaciones. La segunda forma de descripción presenta la ventaja de no requerir un conocimiento profundo de la sintaxis de SPICE, pues basta con configurar los bloques de librería. Por supuesto, se puede utilizar una forma de descripción mixta. En ambos casos, los estímulos y las cargas de las salidas constituyen el entorno (testbench) de la simulación del circuito que se estudia.

Fichero de estímulos

Este fichero permite describir en modo texto el testbench; el nombre del fichero se pasa como parámetro al simulador (ver el apartado 3.2). Simplificando mucho, hay que escribir una línea por cada entrada o salida presente en el esquemático del circuito, siguiendo la forma:

 

nombre nodo1 nodo2 comando valor

 

A continuación hacemos una breve descripción de cada uno de estos cinco elementos para el caso de que queramos especificar tensiones:

nombre : se puede poner cualquiera siempre que empiece por la letra v para las tensiones o la letra i para las corrientes.
nodo1 nodo2 : representan los extremos en los que se aplica la tensión que se está especificando. Generalmente nodo1 representa el nombre del pin de entrada y nodo2 la masa, indicada símplemente con el número 0. Para especificar un nodo se encierra entre corchetes y se precede del símbolo #. El nodo de alimentación vdd debe escribirse siempre seguido del carácter .
comando valor : indica el tipo de tensión que se desea aplicar. Puede ser constante o variable con forma seleccionable. Para crear un valor constante utilizamos:

 

dc valor

 

Para crear una forma de onda lineal a trazos utilizamos:

 

pwl ( t1 v1 t2 v2 t3 v3 ... )

 

A continuación se presenta un ejemplo en el que se especifican las formas de onda de entrada, el valor de la alimentación y una capacidad de carga de 10 pF situada a la salida del circuito.

 

vin [#in] 0 pwl (0 0 1n 0 3n 3.3 8n 3.3)

vvdd [#vdd!] 0 dc 3.3

cl [#out] 0 10p

 

Es importante destacar que no es necesario escribir las unidades de las magnitudes (voltios, segundos, faradios, etc.), aunque sí se deben anotar los múltiplos o submúltiplos de las mismas. Dichos submúltiplos se escriben seguidos del valor sin dejar espacios en blanco, como se ve en el ejemplo anterior (10 pF se escribe 10p).

Bloques de librería

Como ya se ha dicho, se pueden seleccionar los generadores de forma de onda y las cargas directamente de la librería analogLib. Se deben tratar exactamente como los componentes insertados en el esquemático, conteniendo una serie de parámetros que describen su comportamiento. Volviendo al ejemplo de fichero de estímulos que se acaba de describir, para reproducir estos estímulos tendremos que seleccionar para la entrada in el generador vpwl, para la alimentación el generador vdc, y para la salidaout el condensador cap.

Dado que estos componentes no son en realidad parte del circuito, sino que son externos al mismo, se sugiere utilizarlos a un nivel jerárquico superior respecto a la célula que representa el propio circuito. Esto es especialmente recomendable si vamos a confrontar la vista schematic y la vista layout para verificar su correspondencia (ver el apartado de LVS 4.7 al respecto).

Por ejemplo, si se quiere diseñar un inversor y se quiere verificar su comportamiento con una onda cuadrada a la entrada y una capacidad de carga, se puede estructurar la librería de la siguiente forma: una célula denominada inverter que contiene los transistores y pines de E/S, con alguna de las vistas schematic o layout y la vista symbol; otra célula llamada test con los generadores, las cargas y el símbolo del inversor. La figura 6 ilustra gráficamente el ejemplo. Como se ve en la figura, existe una vista adicional denominada extracted cuya generación se describe en el apartado LVS 4.7.

 

Figura 6: Ejemplo de diseño jerárquico con utilización de generadores y cargas

Preparación de la simulación

  Antes de realizar la simulación es necesario especificar un cierto número de parámetros (con hacerlo una vez antes de empezar es suficiente). La selección de las variables que se visualizan y los gráficos que se generan se pueden repetir múltiples veces en una única sesión.

Cómo lanzar Analog Artist / Spectre

El simulador Spectre se utiliza desde la herramienta Analog Artist, que se puede lanzar desde la ventana de esquemáticos seleccionando el comando Analog Environment del menú Tools. Se abrirá una nueva ventana (como la que se ve en la figura 7) a través de la cual se selecciona la configuración deseada, se lanzan las simulaciones y se observan los resultados.

 

Figura 7: Ventana principal del simulador Analog Artist

Configuración de Analog Artist

A partir del menú Setup podemos configurar el entorno de simulación como se detalla a continuación.

Selección del diseño

  Cuando se ha lanzado Analog Artist se supone que el esquemático que se va a simular es aquél desde el que se ha invocado. Si se desea simular un circuito diferente se puede seleccionar mediante el menú Setup -> Design... o pulsando uno de los iconos situados a la derecha de la ventana del Analog Artist. Un cuadro de diálogo permitirá elegir la librería y la célula deseada. A la izquierda de la ventana de Analog Artist aparecerá el nombre del diseño en la sección Design.

Selección del simulador

  Es muy importante seleccionar el simulador que vamos a utilizar. Esto se hace ejecutando el comando Setup -> Simulator/Directory/Host.... Para nuestro laboratorio vamos a utilizar el simulador spectre, disponible en la primera línea de la ventana.

Selección de la temperatura

  El resultado de la simulación depende en gran medida de la temperatura de funcionamiento del circuito. El valor normal utilizado es el de la temperatura ambiente  C, pero se puede modificar ejecutando el comando Setup -> Temperature.

Selección del fichero de estímulos

  Esta opción se debe seleccionar sólo si se quiere utilizar un fichero de estímulos para describir los estímulos de entrada y las cargas. Si se van a emplear los componentes de librería se debe ignorar esta opción de configuración.

El nombre del fichero de estímulos se debe escribir en el cuadro de diálogo que se obtiene mediante el comando Setup -> Environment..., en la última línea, que tiene la etiqueta Stimulus File. La ubicación del fichero se debe especificar completamente. Hay que indicar también la sintaxis utilizada en la descripción de los estímulos. En nuestro caso cdsSpice.

Selección del tipo de simulación

  Hay varios tipos de simulaciones, seleccionables mediante el menú Analyses y la opción Choose..., siendo los tres análisis principales:

•    el transitorio,
•    el régimen sinusoidal,
•    el régimen continuo.

El análisis transitorio (Transient) necesita un estudio previo en continua para encontrar el punto de trabajo y seguir el análisis transitorio propiamente dicho. Es fundamental introducir el tiempo que se quiere que dure la simulación (Stop Timeatención, por defecto el valor se da en segundos). El régimen sinusoidal (AC) realiza un análisis en frecuencia. Requiere tres parámetros principalmente: la frecuencia mínima (Start), la máxima (Stop) y el tipo de paso (lineal, logarítmico o automático). Alternativamente se puede elegir una frecuencia fija, y hacer variar la temperatura, un parámetro de un componente o un parámetro de un modelo. El análisis en continua (DC) es similar al de alterna, para el caso obvio de frecuencia nula. También en este caso es posible variar la temperatura o parámetros en intervalos fijados de antemano. De nuevo hemos de insistir en lo importante que es especificar los órdenes de magnitud de las unidades de todos los campos: si se introduce 10 en un tiempo estamos especificando 10 segundos; si se quieren poner nanosegundos hay que teclear 10n (sin espacio en medio).

El algoritmo de cálculo que se utiliza en alguna de las posibles simulaciones (en particular en el transitorio) puede ser más o menos preciso, pudiéndose variar el compromiso precisión-tiempo de cálculo. Hay tres posibilidades: conservative,moderate y liberal, seleccionables mediante botones. Tal y como se han enumerado se va de la opción más precisa y lenta a la menos precisa pero más veloz. Las variaciones en tiempo de ejecución se aprecian significativamente en los circuitos de tamaño medio o grande. Para el laboratorio se recomienda comenzar con el tipo liberal y verificar los resultados con precisión conservative sólo al final del diseño.

Ejecución de la simulación

  Una vez se ha configurado el entorno de simulación se ha de proceder a la selección de las magnitudes para visualización y simulación.

Guardar las magnitudes de la simulación

Durante la simulación se realizan cálculos de las tensiones y corrientes del circuito. Sólo algunas de éstas resultan de interés para comprender el funcionamiento del circuito, por lo que es muy interesante seleccionarlas para reducir el tiempo de ejecución de la simulación y el espacio de disco para los datos. Esto es especialmente útil cuando simulamos esquemáticos complejos con un gran número de nodos.

Por defecto el simulador está configurado para salvar todas las tensiones y ninguna corriente. Para cambiar esto vamos al menú Outputs, escogemos To Be Saved y Select On Schematic. Nos vamos a la ventana con el esquemático y seleccionamos las señales de la siguiente forma:

•    tensiones: hacemos click con el botón izquierdo en el nodo (hilo) correspondiente;
•    corrientes: hacemos click con el botón izquierdo en el terminal del componente que nos interese; la corriente se considera positiva si es entrante y negativa si es saliente.

Para anular alguna selección se pulsa nuevamente sobre el nodo o el terminal correspondiente[4]. Las tensiones seleccionadas aparecerán con diferentes colores, mientras que los terminales cuya corriente queremos guardar aparecerán circundados por una elipse. Si el diseño es jerárquico podemos seleccionar también los nodos y terminales del interior de los símbolos. Para ello descendemos en la jerarquía con el comando Design -> Hierarchy -> Descend Edit... y retornamos con Design -> Hierarchy -> Return.

Desde el menú Outputs se puede seleccionar también la opción Save All...: aparecerá una ventana que permite guardar todas las tensiones (opción por defecto), todas las corrientes (para el análisis del transitorio marcar Select all DC/Transient terminal currents), tanto tensiones como corrientes o ninguna magnitud. En el caso de circuitos pequeños siempre podemos guardar todo, pues el impacto será mínimo en el tiempo de simulación.

Selección de la representación gráfica

Vamos a seleccionar las salidas que se van a representar graficamente tras la simulación. Podemos proceder de forma análoga a lo descrito anteriormente seleccionando de la barra menú la opción Outputs -> To Be Plotted -> Select On Schematic.

Puesta en marcha de la simulación

Lo hacemos mediante el comando Simulation -> Run, o mediante el icono con el semáforo verde. Durante la simulación aparecerán en la ventana del Analog Artist y en la principal (icfb) una serie de mensajes que informan del transcurrir de la simulación.

Para la simulación del transitorio se puede visualizar periódicamente el tiempo transcurrido y el porcentaje de simulación que se ha completado. Para detener la simulación pulsaremos en el icono con el semáforo rojo o elegimos el comando Simulation -> Stop.

Visualización de resultados

Al terminar la simulación aparecerá automáticamente una ventana con todas las señales seleccionadas representadas en un único diagrama, como se ve en el ejemplo de la figura 8, obtenida para un inversor nMOS.

 

Figura 8: Visualización gráfica del resultado

Si queremos obtener las gráficas separadas hay que elegir en esta ventana el menú Axes y ejecutar el comando To Strip. Si queremos volver al diagrama único seleccionamos To Composite. Esto mismo se puede realizar de forma más rápida pulsando el icono denominado Switch Axis Mode, en la parte izquierda de la ventana. También se puede ampliar una zona particular del gráfico (menú Zoom), u obtener la evolución de una señal en función de otra y no en función del tiempo (seleccionamos Axes -> X Axis... y escogemos la variable que se desea utilizar en el eje de abscisas, indicándola en la parte denominada Plot vs.). La herramienta de representación gráfica es muy robusta y completa. Se recomienda echar un vistazo a las múltiples opciones que ofrece.

Si se ha cerrado la ventana gráfica (con Window -> Close), se puede volver a abrir desde el Analog Artist eligiendo el tipo de simulación efectuada (transitorio, continua, etc…) en el menú Results -> Plot Outputs. Además, si una salida no se había elegido se la puede mostrar con Results -> Direct Plot que permite indicarla mediante el ratón en el esquemático.

Ejemplo

A continuación se enumeran los pasos para simular un esquemático suponiendo que los estímulos y cargas se han realizado mediante bloques de librería. Las operaciones que se deben realizar son las siguientes:

1.  Abrimos el esquemático que queremos simular escogiendo la vista schematic en el Library Manager, y seleccionando el comando File -> Open....
2.  En la ventana del esquemático que aparece, llamamos al simulador con Tools -> Analog Artist. Aparecerá la ventana del simulador en la que ya se ha seleccionado el diseño correcto.
3.  Configuramos el entorno de simulación (Setup -> Simulator... es SPECTRE, etc…)
4.  Elegimos el tipo de análisis mediante Analyses -> Choose.... Escogemos por ejemplo un análisis transitorio de 50 ns (la duración efectiva dependerá de los generadores elegidos).
5.  Escogemos las señales que vamos a guardar con el comando Select On Schematic del menú Outputs -> To Be Saved, haciendo click sucesivamente en los nodos o terminales que nos interesan.
6.  Escogemos las señales que queremos representar gráficamente con Outputs -> To Be Plotted -> Select On Schematic; estas deben ser un subconjunto o coincidir con las señales que salvamos.
7.  Lanzamos la simulación con Simulation -> Run.
8.  Examinamos los resultados en la ventana gráfica que se abre automáticamente.

Trazados

Especificar un circuito a nivel de esquemático no es suficiente para su realización en silicio. Al fabricante hay que proporcionarle el esquema físico de las áreas activas, conexiones, etc. Es decir, el conjunto de máscaras que ha de utilizar en el proceso de fabricación y que constituyen lo que denominamos trazado. El trazado se puede realizar de forma automática a partir del esquemático utilizando herramientas de generación de trazado. Este es el denominado estilo de diseño basado en células estándar. Sin embargo, en este laboratorio nos vamos a centrar en el denominado estilo full custom, en el cual el diseñador ha de realizar hasta los últimos detalles del trazado del circuito que se está diseñando. Dado que esta implementación es “manual”, se debe controlar la corrección del diseño de forma exhaustiva, confrontando la simulación realizada a nivel de esquemático con nuevas simulaciones más precisas. Por ejemplo, se pueden incorporar los efectos de las capacidades parásitas, que son desconocidas en las conexiones hasta esta etapa de diseño y sólo se han podido estimar de forma más o menos imprecisa.

El flujo de diseño de un trazado se presenta en la figura 9. El primer paso es el dibujo de las geometrías que implementarán el circuito. El resto de pasos se dedicarán a verificar la correcta realización de este trazado. Se comienza con la verificación de las reglas de diseño (DRC) que nos da el fabricante. A continuación se realiza la extracción del circuito, que consiste en identificar los elementos que lo constituyen y reconstruir el esquemático del circuito. El siguiente paso hace una correspondencia entre el circuito extraído y el esquemático original para comprobar que se ha hecho lo que realmente se quería hacer (Layout Vs. Schematic, LVS). Finalmente la etapa de backannotation transmite información adicional (capacidades parásitas, resistencia de pistas, etc.) al esquemático extraído. Con esta información se pueden realizar simulaciones más precisas. Evidentemente, cualquier error detectado en cualquiera de las etapas de verificación del trazado nos hará volver hacia atrás y rediseñar la parte afectada por el error en el trazado.

 

Figura 9: Flujo de diseño de un trazado

Las máscaras y las reglas de diseño

El proceso de fabricación de un circuito consiste en plasmar, en diferentes fases, estructuras particulares sobre el silicio, indicando qué zonas se deben dopar, atacar, oxidar, etc. Esto se hace mediante las máscaras utilizando técnicas de fotolitografía. El número de máscaras varía dependiendo del proceso de fabricación particular que se siga. Para que todo el proceso se lleve a cabo correctamente es necesario cumplir los márgenes de tolerancia que imponen las máquinas involucradas en la fabricación de un circuito integrado. El fabricante facilita las denominadas reglas de diseño (Design Rules) que el diseñador del trazado debe cumplir de forma exacta para garantizar la correcta implementación del circuito.

El diseño de un trazado consiste en dibujar las máscaras necesarias para las sucesivas realizaciones del chip. Como veremos en seguida, el programa de trazados (Virtuoso) permite escoger las máscaras con que se dibuja, y visualizarlas superpuestas y alineadas. Antes de comenzar el diseño de un trazado es importante conocer el proceso de fabricación que se va a utilizar y las reglas que impone. Nos invocarán generalmente cuáles son las dimensiones mínimas de las figuras geométricas que se pueden hacer con cada máscara y qué distancias ha de haber entre los distintos objetos, ya sean de la misma máscara o de diferentes.

Cada máscara se identifica con un nombre nemónico y un color o patrón diferente. Por ejemplo, en la tabla 1 se han descrito algunas de las máscaras principales que se utilizarán en el proceso tecnológico que se usa en el laboratorio. El que una capa sea negativa quiere decir que el proceso tecnológio asociado se aplica al exterior de la geometría dibujada en la máscara.   

 

Tabla 1: Algunas máscaras disponibles en el proceso AMS


Las reglas de diseño se expresan mediante números, como se ve en el ejemplo de la figura 10. En esta figura se ilustran las reglas relacionadas con el polisilicio de primer nivel (la capa más clara) y su interacción con las difusiones en un proceso de fabricación determinado.

 

 

4.3.1

Distancia mínima POLY1 - DIFF

0.2mm

4.3.2

Extensión mínima POLY1 en puerta (GATE)

0.4mm

4.3.3

Extensión mínima DIFF en puerta (GATE)

0.5mm

  

Figura 10: Ejemplo de reglas de diseño


La violación de las reglas de diseño hace imposible el proceso de fabricación, por lo que resulta fundamental utilizar la herramienta de verificación de las reglas de diseño DRC (Design Rule Check, ver sección 4.4). La utilización de esta herramienta y de transistores de librería parametrizables simplifica notablemente la labor del diseñador, puesto que no necesita memorizar las reglas de diseño.

Apertura de un trazado

Vamos a seguir utilizando la ventana principal de Cadence (icfb) y trabajar con la herramienta de forma similar a lo realizado hasta ahora. Para abrir un célula con el fin de editar su trazado se procede de forma análoga a la apertura de un esquemático, con la única diferencia que la vista sea de tipo layout.

Una vez creada la vista layout, aparecera en el entorno de trabajo una ventana del editor de trazados, el Layout Editor, como se ve en la figura 11. Esta ventana es muy similar a la de edición de esquemáticos. Dispone igualmente de barra de menú, barra de herramientas, área de trabajo y línea de estado. Adicionalmente, encima de de la barra de manú aparecen una serie de indicadores con información acerca de la posición del cursor respecto al origen o distancias respecto a un punto de referencia (medidas en micras).

 

  

Figura 11: Ventanas de Layout Editor y Layer and Selection Window de icfb

Junto al editor de trazados aparece siempre otra ventana, la Layer and Selection Window, visible a la izquierda de la figura 11 con el título LSW. En esta ventana se listan todas las capas que se pueden utilizar al dibujar el trazado y permite su manipulación: selección de la capa con la que trabajar, visibilidad, etc. Esta ventana no se puede cerrar, al contrario que la de edición de trazado, que dispone de la opción Close en el menú Window.

Operaciones en la ventana de trazado

Al igual que sucedía en el entorno Schematic Entry, el Layout Editor permite activar los comandos de cuatro formas: mediante el menú, los iconos de herramientas, el ratón o el teclado. Recordamos que para anular una operación no hay más que pulsar Esc. Resulta interesante seguir la línea de estado, porque informa de la operación en curso o de qué acciones se pueden realizar con el ratón.

Podemos seleccionar tres tipos de objetos:

•    figuras geométricas
•    bordes
•    ángulos

Situando el ratón sobre alguna de estas entidades, ésta se resalta con un borde a trazos: un click con el botón izquierdo la selecciona, y el borde se resalta con línea continua. Por otro lado, al trazar un rectángulo teniendo pulsado el botón izquierdo del ratón, se seleccionan todos los objetos contenidos completamente en el rectángulo. Para “deseleccionar” se debe pulsar con el ratón en cualquier punto vacío del trazado o teclear CTRL-d. Como en el caso de los esquemáticos, la selección puede precede o seguir la activación de un comando.

Selección de la máscara

Antes de dibujar una forma es necesario seleccionar la máscara con la que se quiere trabajar. Para ello utilizamos la ventana selección de capas LSW, haciendo click con el botón izquierdo en el nombre elegido, que se trasladará inmediatamente a la parte superior de la ventana de selección de capas. La capa aparece con una extensión que puede ser:

dg: drawing aquella que se utiliza para dibujar el circuito y que servirá para la fabricación física del circuito.
pn: pin Identifica los nombres de los pines (ver también la sección 2.2) sobre polisilicio, difusiones, contactos y metales.
nt: net No utilizada en el laboratorio.

En general se utilizan las máscaras de tipo dg, mientras que las de tipo pn, se reservan para la especificación de los terminales de entrada y salida, y cuyo nombre debe ser idéntico al utilizado en el esquemático.

Haciendo click con el botón central en la ventana LSW se vuelve una capa invisible en la zona de trabajo; haciendo click una segunda vez se vuelve visible de nuevo. El efecto no es inmediato, se ve al redibujar la ventana de trabajo mediante el comandoWindow -> Redraw, o pulsando f6.

Realización de formas geométricas

 

En casi la totalidad de los casos las formas geométricas se realizarán mediante la composición de uno o más rectángulos. Una vez se ha activado el comando, pulsamos con el botón izquierdo del ratón en la zona de trabajo en uno de los vértices del rectángulo que se va a crear. Se lleva el ratón hasta el vértice opuesto y hacemos click de nuevo. Aparecerá un rectángulo con el color y patrón de la capa seleccionada.

Un polígono se puede conseguir de dos formas:

1.  Utilizando el comando para crear polígonos. Insertamos de uno en uno los vértices del polígono pulsando con el botón izquierdo del ratón, terminando por el que fue primero.
2.  Creando tantos rectángulos adyacentes (o superpuestos) como sean necesarios para formar la figura deseada. Seleccionamos todos y activamos el comando Merge (Edit -> Merge, o tecleamos M). Se obtendrá el polígono a partir de los rectángulos, apareciendo seleccionado. Para deseleccionarlo tecleamos CTRL-d.

Se pueden dibujar otras formas como elipses o formas con ángulos no rectos, pero no tiene sentido utilizarlas para nuestro trabajo.

Medida de distancias

Para respetar las reglas de diseño es preciso conocer con exactitud las dimensiones de las figuras geométricas y sus distancias. La línea que está por encima de la barra de menú proporciona la posición del cursor del ratón respecto al origen, con una resolución de 0.1mm, apareciendo con la denominación X: y Y:. También se puede ver en dX:dY: y Dist: la distancia respecto al último punto de referencia que se ha indicado, siendo respectivamente la longitud en el eje X, en el eje Y y de la recta que une el punto de referencia y el actual.

Aunque son útiles, los datos de posición del ratón no son permanentes y hacen falta operaciones algebraicas para obtener el resultado buscado. Podemos obtener una indicación permanente de distancia en el trazado mediante el uso de reglas (Ruler), que proporcionan la distancia en micras entre dos puntos elegidos por el diseñador. Una vez se activa el comando, el primer click del ratón selecciona el origen, y el segundo el extremo opuesto. La regla sigue el movimiento del ratón tras la selección del punto.

Una vez se ha enlazado, la regla no se puede eliminar con el comando habitual de borrado. Hay que llamar al comando Clear Rulers. No se pueden borrar las reglas de forma selectiva.

Modificación del trazado

 

Todos estos comandos, excepto Undo y Redo, actúan sobre uno o más objetos de una o más capas. Como se ha explicado previamente, la selección se puede realizar antes o después de activar el comando.

Undo : anula la última operación realizada, devolviendo el trazado a su estado anterior.
Redo : repite el último comando.
Move : mueve uno o más objetos
Copy : copia uno o más objetos
Stretch : modifica las dimensiones de uno o más objetos. Si se activa el comando y después se selecciona un área rectangular, todos los objetos incluidos completamente en ese perímetro serán movidos, mientras que los bordes y ángulos que sean cortados por el perímetro se acortarán/alargarán.
Reshape : modifica la forma de un objeto.
Delete : borra uno o más objetos.

Asignacion de nombres a los pines

Como se verá en la sección 4.7, par poder verificar automáticamente la correspondencia trazado-circuito es preciso especificar en el trazado el nombre de los pines. Para ello utilizamos las máscaras que no tenían significado en el proceso tecnológico (capas tipopn).

En la ventana que aparece cuando se invoca el comando especificamos el nombre del pin (o de los pines, pues se pueden insertar más de uno por comando) y seleccionamos el tipo (input, output, …) igual que hacíamos con el esquemático. Puede resultar también interesante activar la opción Display Pin Name para mostrar el nombre del pin. El pin puede ser bien de tipo simbólico (tipo por defecto) o bien se le puede elegir la forma ( shape pin). En el primer caso hay que indicar el tipo (Pin Type) y las dimensiones (opción manual pin), y basta con situar el pin en la posición deseada. En el segundo caso, una vez nos aseguramos que en la ventana LSW se ha seleccionado una máscara de tipo pn, hay que trazar los rectángulos que correspondan a las líneas de metal o polisilicio asociadas a las entradas o salidas del circuito. Es importante no tocar líneas diferentes con el mismo pin, pues se produciría un error en fases posteriores.

Modificación de las propiedades

 

Es posible modificar las propiedades de cualquier forma geométrica dibujada. Para ello invocamos el comando de edición de propiedades, seleccionamos el objeto y aparecerá una ventana que muestra el tipo de máscara y los extremos de la forma: para los rectángulos las esquinas (LeftRightBottom y Top), y para los polígonos la lista de vértices que tienen. Para los pines se añade información de conexiones (Connectivity), con la dirección del terminal (input o output). Las modificaciones realizadas se confirman con el botón OK o Apply, mientras que el Cancel anula la operación.

Si se seleccionan varios objetos, aunque sean de máscaras diversas, las propiedades se muestran individualmente, siendo posible pasar de un elemento a otro a través de Next y Previous.

Pan y Zoom

 

En la vista trazado estas operaciones funcionan exactamente igual que en el caso del esquemático. Recordamos por su utilidad el comando Fit All, que hace que todo el circuito sea visible en la zona de trabajo.

Guardar

 

De vez en cuando conviene salvar el trazado que se está creando. La operación Save utiliza la información de la librería y célula que se abrieron al principio del trabajo. Save As permite modificar estos datos.

DRC

  El procedimiento de Design Rule Check permite verificar de forma automática las reglas de diseño, señalando en cada caso de violación la posición y el número identificativo de la regla violada. Cualquier diseño listo para fabricación debe pasar este test sin errores, pudiendo entonces proseguir con sucesivos controles y simulaciones.

Para activar el comando seleccionamos la opción DRC... del menú Verify en la ventana del trazado. Aparecerá una ventana que permite modificar varios parámetros. En nuestro caso es suficiente verificar que el fichero tecnológico sea TECH_C35B4y activar el switch no_coverage. Pulsamos OK y comprobamos el funcionamiento del test en la ventana principal icfb. Al final del mismo se mostrará un resumen de los errores encontrados, o en caso afortunado la frase:

 

Total errors found: 0

 

En el caso desafortunado, las violaciones serán evidentes en el trazado al aparecer destacadas y parpadeando, con marcadores (Markers) que delimitan la zona errónea. Para cada marca se puede solicitar aclaración del error seleccionando el menúVerify -> Markers -> Explain. Aunque se corrijan los errores, los marcadores no serán eliminados hasta que no se ejecute de nuevo el DRC. Como alternativa se puede utilizar el comando Verify -> Markers -> Delete, Delete All....

Ejemplo

En esta sección vemos a describir paso a paso las operaciones necesarioas para crear un inversor.

1.  En la ventana principal de icfb hacemos click en File; en el menú que aparece elegimos New -> Cellview ....
2.  Insertamos en la ventana que se abre los datos Library NameCell Name y View Name, suponemos que se ha creado previamente la librería. En nuestro caso, utilizamos la librería del primer ejercicio (labo1) seleccionamos la célulainversor y tecleamos la vista layout (o elegimos la herramienta virtuoso que nos elige esta vista directamente). Aparecerá la ventana LSW y el Layout Editor.
3.  Comenzamos dibujando el transistor nMOS. Para ello seleccionamos la máscara DIFF (dg), pulsando la tecla r y trazar un rectángulo que será de color verde. Este rectángulo representa la zona activa del transistor (tanto para los nMOS como para los pMOS). Hacemos un segundo rectángulo separado o junto al primero que nos servirá para polarizar el substrato. Ahora hay que hacer que la zona activa dibujada corresponda a una difusión n+. Para ello elegimos la capa NPLUS (dg) y dibujamos un rectángulo superpuesto al primer rectángulo DIFF dibujado anteriormente. Este nuevo rectángulo ha de ser más grande, sobrepasando al verde en todo su perímetro.
4.  Para hacer el transistor seleccionamos la máscara POLY1 (dg) y trazamos un tercer rectángulo, que se superpone al primero de DIFF (dg) y es más estrecho y sobresale a los lados de la difusión. Es de color rojo y constituirá la puerta del transistor. Justamente los límites de la intersección de la zona activa y el polisilicio nos darán las dimensiones L y W del transistor.
5.  Siguiendo con la misma máscara, dibujamos una zona más grande en el exterior de la zona activa y parcialmente superpuesta a la puerta. Este rectángulo será el contacto de la puerta.
6.  Vamos a hacer los contactos para acceder con metal al drenador y la fuente del transistor. Seleccionamos la máscara CONT (dg) y dibujamos dos cuadrados de color verde claro sobre la zona activa del transistor, plenamente contenidos en la difusión pero en la parte que no es puerta. Los contactos en esta tecnología tienen un tamaño fijo: 0.4 mm x 0.4 mm. Trazamos un tercer rectángulo en la parte de polisilicio que dibujamos en el punto anterior para hacer el contacto de la puerta. Finalmente, nos falta el contacto del substrato, que lo hacemos en el rectángulo de difusión que tenemos separado del transistor.
7.  Nos falta hacer que la difusión del contacto de substrato sea de tipo p+. Seleccionamos primero la máscara PPLUS (dg) para dibujar un rectángulos alrededor de la difusión de polarización del sustrato.
8.  Para hacer los contactos seleccionamos la máscara MET1 (dg) y trazamos tres rectángulos: el primero debe unir el contacto de substrato con uno de los dos terminales del transistor (será en contacto a masa del transistor nMOS). El segundo y el tercero deben cubrir completamente los otros contactos que permanecían descubiertos. Esta máscara es azul.
9.  El transistor pMOS se realiza de forma análoga, con las siguientes diferencias. En primer lugar, la difusión tiene que ser de tipo p, por lo que hay que recubrir la zona activa con la implantación PPLUS (dg) de forma similar a como se hizo el contacto de substrato en el punto 7. En segundo lugar, el contacto de substrato de este transistor ha de ser n+, por lo que es necesaria la correspondiente capa de implantación. Para terminar, dado que la tecnología es de substrato p, es necesario introducir el transistor pMOS (y su contacto de substrato) dentro del pozo n, seleccionando la máscara NTUB (dg) y rodeando con ella todo lo anterior.
10.  Finalmente hay que introducir los terminales simbólicos del transistor. Seleccionamos la máscara MET1 (pn) (¡Ojo!  es (pn), no (dg)); llamamos el comando Create -> Pin..., escribimos los nombres que queremos asignar a los terminales, seccionamos shape pin marcando la opción rectangle, y dibujamos un rectángulo que corresponda al contacto de la entrada, la salida, la alimentación y masa[5]. Si se ha activado la opción Create Label, aparecerá la etiqueta con el nombre junto al terminal insertado.
11.  Antes de guardar el trabajo, verificamos las reglas de diseño ejecutando Verify -> DRC[6]. Si se ha cometido algún error es el momento de corregirlo.

Extracción

  Antes de poder verificar si el trazado es correcto respecto al esquemático que se diseñó, es preciso identificar entre las geometrías dibujadas cuáles son los elementos activos, los pasivos, las capacidades parásitas, conexiones y terminales de entrada/salida. Esta operación también se realiza automáticamente en Cadence. Para activarla seleccionamos Verify -> Extract.... En la ventana de icfb se muestran las pasadas que va realizando la herramienta de extracción, finalizando con el resultado de la operación.

Terminada esta fase, y para poder continuar, hay que cargar la vista Extracted. Para ello seleccionamos del menú Design la opción Load..., y en la ventana Open File que se abre seleccionamos para View Name la palabra extracted(o utilizamos el Library Browser. En la zona de trabajo aparecerá el trazado omitiendo alguna de las máscaras, y con la identificación del transistor en las zonas de las puertas.

LVS

  Cargada la vista extracted se puede proceder a la comprobación automática de la correspondencia trazado-esquemático (en inglés Layout versus Schematic, LVS), que continuará con la fase de Back Annotation (ver sección 4.8).

 

Figura 12: La ventana de control de LVS

A partir del menú Verify, seleccionamos LVS...: aparece la ventana que se ve en la figura 12, que servirá también para la fase de Back Annotation. En general la herramienta proporciona los parámetros necesarios para la verificación de forma automática, pero nunca está de más comprobar el nombre de la librería y de la célula, o el tipo de vista. El proceso LVS se inicia pulsando el botón Run, situado en la parte baja. En la ventana principal del icfb aparecerán mensajes, que acaban con:

 

LVS job is now started...

 

El procedimiento continúa trabajando en background, o lo que es lo mismo, en paralelo con el resto del programa. Cuando termina aparecerá un mensaje que informa de la finalización o no de la comprobación. Que haya terminado no significa que el diseño esté libre de errores de correspondencia, sino que quiere decir que no se ha bloqueado completamente por errores muy graves.

Recibido el mensaje de éxito del LVS, hemos de comprobar la correspondencia efectiva pulsando el botón Output de la ventana de la figura 12. Con esto se puede ver el texto que facilita los datos y confronta el trazado con el esquemático, poniendo en evidencia eventuales diferencias. En interesante observar que las dimensiones de un transistor pueden ser diferentes en las dos vistas. Esto se señala en el informe, pero no perjudica los pasos sucesivos. En este caso la simulación tras la Back Annotation se realizará con las dimensiones procedentes del trazado. Se recomienda intentar que el procedimiento LVS no finalice con ningún aviso de problema o discrepancia.

Backannotation

  La backannotation es el proceso a través del cual las informaciones que se extraen del trazado se utilizan para realizar una simulación más fiel que la realizada con el esquemático. De hecho, los valores de las capacidades parásitas y de las resistencias de las pistas y dispositivos no se conocen a nivel de esquemático, sino que se recogen del trazado.

A continuación se describen los dos modos en que se puede realizar la backannotation. El primer modo es muy veloz, pero poco flexible, mientras que el segundo es más lento, pero permite simulaciones más sofisticadas.

Backannotation a través de la vista extracted

  Este método consiste en utilizar los datos relativos a magnitudes parásitas extrayéndolos directamente de la vista extracted, siendo muy fácil de realizar.

Una vez hemos salvado la vista extracted de la célula que queremos simular, volvemos a llamar al simulador Analog Artist como se describió en la sección 3. Procedemos exactamente como se hizo en la simulación del esquemático con una sola excepción: seleccionamos el comando Setup -> Environment... y añadimos dentro de la llamada Switch View List la palabra extracted antes que schematic. La simulación que sigue utilizará los parámetros parásitos para todas aquellas células que tienen una vista extracted, y se dejará la vista schematic para las demás.

Este procedimiento, de hecho muy sencillo, tiene dos inconvenientes importantes:

1.  Si dos células juntas tienen la vista extracted no es posible simular una con parámetros parásitos y la otra sin ellos simultáneamente.
2.  No es posible observar gráficamente la corriente de los terminales si pertenece a una célula con la vista extracted.
Backannotation a través de la vista analog_extracted

  Este segundo método resuelve las desventajas del anterior, pero requiere mucho tiempo para su preparación. No vamos a entrar en detalles del mismo pues está fuera del alcance del laboratorio.



[1]Muy parecido al Lybrary Manager.

[2]Si se pulsa el botón de clasificación en categorías (Show Categories) los componentes aparecen agrupados por familias: mosfets, bipolares, diodos, etc.

[3] Existe un comando para conectar hilos gruesos, cuyo funcionamiento es similar.

[4] A veces puede resultar complicado seleccionar un terminal para visualizar la corriente, dado que la herramienta se empeña en seleccionar el nodo que tiene conectado el terminal. En esta caso se puede poner un filtro a los objetos que se pueden seleccionar, de forma que sólo se pueda pinchar en terminales, si es este nuetro deseo. Para ello ejecutamos el comando Edit -> Select -> Filter... y en el cuadro de diálogo marcamos los objetos que nos interesa seleccionar (son muy útiles los botones de none yall). Se vuelve al esquemático, y una vez se ha seleccionado podemos regresar al cuadro de diálogo del filtro de selección para dejar todo como estaba.

[5]Para alimentación utilizaremos la etiqueta vdd!  y para masa gnd!

[6]No se debe olvidar activar el switch no_coverage.

Comments