Disseny Microelectrònic I. Pràctiques.

Pràctica 3: Introducció a l'edició de layouts

4.- DESCRIPCIÓN DE MAGIC

    Mediante el uso del MAGIC podemos editar el layout de un circuito microelectrónico, verificar que se cumplen todas las reglas de diseño y extraer el circuito equivalente en lenguaje SPICE, para posteriormente simular este último y ver que se cumplen las especificaciones deseadas para el diseño.

    La herramienta MAGIC funciona bajo el sistema operativo UNIX. En las prácticas no será necesario, sin embargo, el conocimiento a fondo del sistema operativo UNIX. Bastará conocer los mínimos elementales descritos en la práctica 1 para poder desarrollar el trabajo.

    En este apartado se describirán las bases del uso de MAGIC. En un anexo de esta práctica se halla, además, una guia de referencia básica de MAGIC y una lista de macros. Algunos de los términos o indicaciones presentados contienen un enlace a este anexo. Es conveniente leer este apartado antes de llegar al laboratorio, y otra vez durante la práctica, realizando cada una de las acciones sugeridas en los textos señalados en negrita y color verde.

4.1.- Estructura de ficheros y subdirectorios

    MAGIC trata con diversos tipos de fichero, los cuales se diferencian por la extensión asociada a su nombre. En concreto podremos disponer de ficheros de los tipos:  

.magic Es un fichero especial de comandos que será ejecutado automáticamente cuando MAGIC arranca.
nombre.mag Se trata de un layout en el formato interno de MAGIC .
nombre.ext Se trata de un fichero de extracción que contiene el circuito equivalente de un layout, en un formato específico de MAGIC.
nombre.spice Fichero en notación SPICE obtenido a partir de un fichero de extracción con extensión .ext.
nombre.cmd Fichero de comandos. Contiene un conjunto de órdenes que MAGIC entiende.
nombre.tech* Donde * es un número. Se trata de un fichero tecnológico que describe una cierta tecnología. En nuestro caso SCMOS.
nombre.cif  Se trata de un layout en el formato estándar CIF.

Copiad el fichero /users/alumnes/temp/dmi/public/config/.magic en vuestro directorio raíz.

4.2.- Entrada al programa

    La entrada al programa MAGIC es muy fácil una vez que se ha entrado en el entorno FEDORA. Basta escribir "magic" desde un terminal cualquiera que podéis obtener desde un acceso directo en el escritorio o vía la estructura de menús de la barra superior. La sintaxis concreta para entrar a MAGIC es:

magic [nombre]

    Donde el parámetro opcional nombre es el nombre de un fichero de layout con extensión .mag. Caso de no existir, MAGIC crea un nuevo diseño en blanco con ese nombre.

Entrad en el entorno MAGIC de la manera indicada sin especificar ningún nombre de fichero.

4.3.- Estructura general

    Disponemos de dos ventanas asociadas a MAGIC:

• Ventana gráfica: La ventana que aparece después de llamar a MAGIC en el terminal, de color gris, será nuestra ventana de edición de layout, en la cual realizaremos todas las operaciones gráficas.

• Ventana de texto: El terminal desde el que se ha llamado a MAGIC será nuestra ventana de comunicación con MAGIC en modo texto. Todos los comandos que escribamos quedarán escritos en esta ventana, y todas las respuestas y mensajes de error de MAGIC en forma de texto aparecerán en esta ventana también.

    Ambas ventanas pueden redimensionarse y moverse de la manera común.

    La entrada de datos en MAGIC se realiza en base a dos sistemas: el teclado y el ratón. Todos los datos introducidos se realizarán en referencia a la ventana actualmente activa. Para efectos de edición del layout la ventana activa deberá ser siempre la gráfica (aunque el eco de la comunicación, comandos, respuestas,... aparezca en la de texto). Nunca seleccionaremos la ventana de texto para dar órdenes referentes al layout.  La introducción de datos en forma de texto posee dos variantes:

• Comandos: Los comandos son órdenes que suministran a MAGIC en modo texto. Todos comienzan por dos puntos ":", y nos permiten dar órdenes tales como dibujar en una determinada capa, grabar el diseño, extraer el circuito equivalente, etc.

• Macros: Las macros son teclas asociadas a comandos concretos. Al final de este documento se encuentra una lista de las que MAGIC proporciona por defecto. Mediante las macros es posible ejecutar comandos concretos sin precisar la pulsación de todas las letras de una orden, por ejemplo, es lo mismo escribir A que escribir la orden :select more area. Existen, así mismo, algunas macros concretas asociadas a alguno de los botones del ratón, tal y como se verá más adelante.

 

4.4.- El cursor y el cuadro

    La función que realice el ratón dentro de la ventana gráfica depende de una selección realizada mediante el comando de herramienta :tool (o mediante la macro que se genera al pulsar el espacio). Por defecto MAGIC empieza con la herramienta de dibujo de cuadros box tool. El resto del apartado asume que se trabaja con esta herramienta, que será la única que necesitaremos durante la realización de estas prácticas.

    A lo largo del apartado haremos referencia a los botones del ratón. En concreto usaremos los siguientes acrónimos para estos:

BIR      Botón izquierdo del ratón BCR      Botón central del ratón BDR      Botón derecho del ratón

    Si algún ratón no dispone de botón central, se podrá obtener la acción del BCR pulsando el BIR y BDR a la vez. Como es difícil pulsar a la vez los dos botones, hemos introducido una macro en la tecla "-" que permite simular la acción del BCR.

    Hay dos elementos que permiten seleccionar objetos dentro de la ventana gráfica: el cursor y el cuadro. El cursor posee inicialmente forma de cruz (si bien puede cambiar de forma en determinadas ocasiones) y siempre sigue el movimiento del ratón dentro de la pantalla. El cuadro es un objeto de forma rectangular cuya forma y posición viene determinada por el uso de los botones del ratón. Pulsando BIR se fija la posición de la esquina inferior izquierda del cuadro, y pulsando BDR se modifica su tamaño mediante el ajuste de la posición de la esquina superior derecha.

Moved y redimensionad el cuadro para observar el uso de BIR y BDR.


4.5.- Llamada a comandos: dibujo y borrado

    Tal y como se ha indicado antes, es posible invocar comandos de dos maneras: escribiendo el comando completo precedido de ":", o, si existe, empleando una macro asociada a una tecla o un botón del ratón.

    Como ejemplo vamos a utilizar el comando :paint para dibujar elementos de una máscara. El formato del comando es:

:paint [layer]

    Donde layer es un nombre válido para una máscara (ver información relativa a la tecnología SCMOS en el Anexo I). Este comando rellena todo el área encerrada por el cuadro empleando el color de la máscara indicada.

Dad al cuadro una forma rectangular y emplead el comando :paint poly  desde dentro de la ventana gráfica para  rellenad el cuadro con  la máscara de polisilicio (color rojo).

    Es importante tener en cuenta que los comandos asociados a la ventana gráfica se escriben el la ventana de texto, por lo que es conveniente que ambas estén a la vista al mismo tiempo.

Emplead ahora el comando :paint para dibujar una región  de la máscara ndiff que se solape  parcialmente con  el dibujo anterior. Es posible que aparezca una trama de puntos blancos en  el entorno de la nueva región. Se trata de una violación de las reglas de diseño, de la que hablaremos luego. Observad también que el área de solapamiento de las dos máscaras posee  el color asociado a la máscara nfet (ver Anexo I)

    Es posible emplear el ratón para simplificar el dibujo de máscaras. Para ello puede emplearse el BCR del ratón. Su pulsación hace que el área bajo el cuadro se llene con todas máscaras que se encuentren bajo el cursor. Si se pulsa BCR con el cursor sobre el espacio libre, serán borradas todas las máscaras que se hallen dentro del cuadro.

Situad el cuadro en un área vacía de la ventana gráfica, y pulsad BCR sobre la máscara nfet. Observareis que el área del cuadro queda relleno con esta máscara. Emplead  BCR tal y como se ha indicado antes para borrar un trozo de la máscara de poly.

    Interesa también disponer de comandos para borrar una o varias máscaras dentro de una región. El comando :erase permite borrar las máscaras indicadas en la zona que se encuentra bajo el cuadro.

:erase [layers]

    Si no se indica ninguna máscara, :erase borra todas las que se hallan bajo el cuadro.

    Igual que en el caso de paint, erase posee también una macro asociada, en este caso a una tecla. ^D (Ctrl+D) borra todos las máscaras que se hallen bajo el cursor en el área encerrada por el cuadro. Se ha habilitado también la macro Shift+"-" que permite borrar todo lo que hay dentro del cuadro.

Situad el cuadro de modo que cubra todo el área de una de las regiones nfet  y pulsad  ^D con el cursor sobre un área roja (poly). Observareis que  únicamente se borra el polisilicio, quedando la máscara ndiff inalterada.


4.6.- Selección de objetos

    Para poder trabajar con diseños complejos resulta muy interesante poder trabajar con varios objetos, repetirlos, moverlos, etc. Para ello disponemos de las opciones de selección.

    Mediante éstas podemos disponer de uno o varios objetos (rectangulares) seleccionados, de modo que después puedan ejecutarse comandos que afecten a toda la selección. El comando :select es el encargado de la selección y deselección de objetos. A continuación se describen los distintos modos de uso junto con sus macros asociadas. 

Comando select
 Macro
Función
:select
s
Selecciona únicamente el objeto bajo el cursor
:select more
S
Añade a la selección actual el objeto bajo el cursor
:select area
a
Selecciona únicamente los objetos dentro del área del cuadro
:select more area
A
Añade a la selección los objetos dentro del área del cuadro
:select clear
C
Deselecciona todos los objetos
:select less
Deselecciona el objeto que se halla bajo el cursor
:select help
Ayuda del comando

    Existen diversas operaciones que pueden realizarse con los objetos seleccionados (copiar, girar, mover, etc.) y se describen en la guia de referencia de MAGIC que se halla en el Anexo II de este manual.

Practicad con la selección de objetos, y aplicad después algunas operaciones con los objetos seleccionados empleando para ello la información del apartado "Operaciones con la selección" del anexo II.


4.7.- Etiquetas

    Durante el diseño de un bloque es conveniente asociar etiquetas a regiones particulares del layout. En concreto a los raíles alimentación y a las entradas y salidas del bloque, además de los nodos del circuito que queramos identificar fácilmente en su simulación. Para ello emplearemos el comando :label que asocia la región ocupada por el cuadro a una etiqueta.

:label [ text [position [ layer ] ] ]

    Donde:

text
Es la cadena asociada a la etiqueta. En el anexo II se detallan las restricciones asociadas a la etiqueta. En concreto una etiqueta normalmente es local, esto es, sólo es visible dentro de la célula actual. Cuando una etiqueta acaba con el carácter "!" se dice que es global por lo que es visible a nivel de todo el diseño del chip. Para el diseño que nos atañe, sólo las etiquetas asociadas a los railes de alimentación Vdd! y Gnd! serán globales. 
position
Indica donde se escribe la etiqueta respecto a la región que tiene asociada. Si no se indica ninguna, magic escoge una por defecto.
layer
Indica a que máscara será asociada la etiqueta. Si no se indica ninguna se escoge la máscara debajo de la zona asociada a la etiqueta. En general no es conveniente asociar etiquetas a regiones ocupadas por más de una máscara a la vez. 

 
    Aunque es posible asociar etiquetas a regiones rectangulares genéricas, nosotros emplearemos etiquetas asociadas a puntos, esto es, cuadros de tamaño cero. El cuadro puede reducirse a un punto sin más que pulsar en sucesión BIR y BDR.

    Si se desea borrar una etiqueta, puede usarse el pseudolayer labels, por ejemplo, el comando :erase labels borra todas las etiquetas que se hallen dentro del cuadro.

Practicad con el uso de etiquetas en varias regiones de la pantalla. Borrad después alguna de ellas.

4.8.- Gestión de ficheros

    MAGIC permite tratar con ficheros de layout de diversos formatos, nosotros, sin embargo, únicamente emplearemos el formato .mag propio de MAGIC. El comando necesario para salvar todo el trabajo en disco es:

:writeall

    MAGIC preguntará para cada ventana gráfica si se desea salvar la celda que se está editando. La respuesta write (o pulsando sólo return) dará lugar a salvar la celda en disco. El resto de opciones, así como otros comandos de gestión de ficheros, se hallan descritos en el Anexo II.

 

4.9.- Reglas de diseño

    MAGIC realiza una verificación incremental de las reglas de diseño de la tecnología empleada (ver Anexo I). Esto es, se indica en tiempo real cada violación de las reglas de diseño. MAGIC indica que se produce una violación de las reglas de diseño mediante el dibujo de una trama de puntos blancos alrededor del área afectada. Después de corregir el error, MAGIC automáticamnete hace desaparecer la señalización. El comando :drc descrito en el anexo II permite tratar con las reglas de diseño, en concreto:

:drc why Asociado a la macro y. Indica en la ventana de texto que violaciones de las reglas de diseño se han producido bajo el rectángulo de selección.

:drc find Localiza la próxima violación de reglas de diseño e indica el motivo.

Forzad la violación de alguna regla de diseño y comprobad el mensaje de error asociado a ella.


 4.10.- Extracción del circuito equivalente

    El comando :extract realiza la extracción automática del circuito equivalente de todos los diseños modificados. En el anexo II se describe este comando de una manera más detallada.

    Durante la extracción de un circuito pueden aparecer errores, los cuales serán señalizados mediante áreas de feedback en el dibujo del layout. El comando :feedback permite obtener información de estos errores ( Ver apartado Router Standard del Anexo II) , en concreto:

:feedback find Busca la siguiente área de feedback
:feedback clear Borra la información de feedback
:feedback help Ayuda sobre feedback
:feedback why Informa del mensaje asociado a un área de feedback

    El fichero con extensión .ext generado por MAGIC no posee formato SPICE, se ha de invocar al comando ext2spice desde fuera del entorno MAGIC (otra ventana de terminal cualquiera) para convertir el fichero extraido con formato EXT a un circuito equivalente SPICE. La sintaxis para llamar a ext2spice es a través del comando "tospice" que llama a su vez a ext2spice ordenándole que genere ficheros aptos para Spice3:

tospice nombre

    Se ha de tener en cuenta que MAGIC no puede obtener el modelo de los dispositivos activos, por lo que deberán suministrarse a parte.
 

4.11.- Otros comandos

    Existen muchos otros comandos en MAGIC que no han sido descritos todavía. Algunos de ellos serán descritos en prácticas futuras, y otros se hallan suficientemente descritos en el Anexo II. Se recomienda la lectura de las siguientes secciones del anexo II, para tener una visión más global de los comandos fundamentales:

Elementos especiales Selección de elementos Etiquetas Miscelánea Reglas de diseño
Dibujar y borrar Operaciones con la selección Presentación de pantalla Acceso al sistema Extracción de circuitos


1.- Presentació   2.- Procés CMOS   3.- Tecnologia i disseny celular   4.- Tutorial MAGIC    5.- Anàlisi i disseny
Annex 1.- Tecnologia   Annex 2.- Guia de MAGIC   Annex 3.- Llista de macros

ETSETBUPCDEE