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.
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. |
Como ejemplo vamos a utilizar el comando :paint para dibujar elementos de una máscara. El formato del comando es:
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. |
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.
|
|
|
Función |
| :select |
|
Selecciona únicamente el objeto bajo el cursor |
| :select more |
|
Añade a la selección actual el objeto bajo el cursor |
| :select area |
|
Selecciona únicamente los objetos dentro del área del cuadro |
| :select more area |
|
Añade a la selección los objetos dentro del área del cuadro |
| :select clear |
|
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 ] ] ]
|
|
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. |
|
|
Indica donde se escribe la etiqueta respecto a la región que tiene asociada. Si no se indica ninguna, magic escoge una por defecto. |
|
|
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. |
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
4.9.- Reglas de diseño
: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
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 |
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.