Disseny Microelectrònic I. Pràctiques.

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

ANEXO 2.- GUIA DE REFERENCIA PARA MAGIC

    En este anexo se detallan las funciones realizadas en MAGIC por los botones del ratón, así como por los comandos entrados en modo texto (o macros asociadas, si las hay).

A2.1.- Ratón

    En la esquina inferior izquierda de la ventana los botones actúan: 

    El uso de los botones del ratón dentro de la ventana depende de la herramienta activa:

:tool [info]   "espacio" 

    Usando :tool se conmuta de una herramienta a otra. Usando :tool info se obtiene indicación de la herramienta actual y significado de los botones del ratón.

A2.1.1.- Box tool. El cursor posee la forma de una cruz

A2.1.2.- Wiring tool. Cursor en forma de flecha  A2.1.3.- Netlist tool 
A2.2.- Comandos

    Pueden emplearse abreviaturas para los comandos siempre y cuando sean no ambigüas. Cuando se especifica una lista de objetos, se separan con comas [ , ]. Para cada comando se indica su descripción y las macros asociadas.
 

A2.2.1.-Elementos especiales

    $    Pseudo layer que contiene la lista de todos los layers que se hallan bajo el cursor
 

A2.2.2.- Dibujar y borrar

    :paint [layers]    BCR (equivale a :paint $)
    Rellena el cuadro con el color indicado. Sobre el espacio vacío, borra todos los layers.

    :erase [layers]    ˆD (equivale a :erase $)
    Borra en el cuadro únicamente los layers seleccionados. Sobre el espacio vacío borra todos los layers.
 

A2.2.3.- Selección de elementos

    :select [more]
    :select [{more,less}] area [layers]
    :select clear
    :select help 

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

    Es posible seleccionar objetos que no se hallan en la célula activa, pero no podrán ser modificados.
 

A2.2.4.- Operaciones con la selección

    :delete
    Borra todo lo seleccionado.

    :move [direction [distance]]     t
    Mueve todos los objetos seleccionados. Si no se dan opciones mueve toda la selección de modo que la esquina inferior izquierda del cuadro se halle en la posición del cursor. Existen macros para mover un l la selección.  

q
:move left 1
w
:move down 1
e
:move up 1
r
:move right 1

    :copy    c
    Similar a :move pero creando una copia de los objetos.

    :stretch [direction [distance]]    T
    Modifica la forma mientras mueve ensanchando o borrando el material. Únicamente opera en una de las cuatro direcciones básicas, caso de tener que elegir, MAGIC elige la más próxima. Este comando, a parte de mover realiza dos acciones adicionales:

• Para cada objeto que mueve, :stretch borra su layer en toda la región que recorre mientras se mueve.

• Ensancha el material si es preciso para conservar la conectividad con otros layers. 
Q
:stretch left 1
W
:stretch down 1
E
:stretch up 1
R
:stretch right 1
    :upsidedown
    Reflexión especular arriba-abajo. El conjunto resultante ocupa la misma área que el original.

    :sideways
    Reflexión especular izquierda-derecha.

    :clockwise [grados]
    Rota la selección de modo que la esquina inferior izquierda de la nueva selección quede en la misma posición que la esquina inferior izquierda del original. grados ha de ser múltiplo de 90.

    :array xsize ysize
    Replica la selección hacia arriba y a la derecha. Las dimensiones del cuadro determinan las separaciones entre los elementos del array. El comando :array puede ser ejecutado sobre un array preexistente para modificar sus características.

    :array xlo xhi ylo yhi
    Crea un array con índices comprendidos entre [xlo,ylo] y [xhi,yhi]
 

A2.2.5.- Etiquetas

    Las etiquetas son textos asociados a objetos que pueden ser rectángulos, líneas o puntos.

    :label text [position [layer]]
    Pone una etiqueta en una posición dada. Si el texto contiene espacios, se ha de cerrar entre comillas ["]. La posición indica donde se ha de poner el texto en relación al cuadro. Puede ser : north, south, east, west, top, bottom, left, right, up, down, center, northeast, ne, southeast, se, southwest, sw, northwest, nw. layer indica a que capa se fija la etiqueta. Por defecto la etiqueta se fija a la capa que la cubre completamente. Es conveniente poner etiquetas donde sólo hay una capa. Para seleccionar sólo etiquetas puede emplearse el cuadro en forma de punto. El pseudo-layer labels permite borrar las etiquetas que se hallan dentro del cuadro mediante:

  :erase labels

    Dos nodos electricamente independientes no pueden tener la misma etiqueta dentro de su rango, sin embargo, un nodo puede tener más de una etiqueta. Las etiquetas no deben contener carácteres /$@!ˆ excepto en los casos especiales en que se usan estos carácteres:

    Para emplear el router estàndar de MAGIC :route , las etiquetas deben situarse en el borde de la célula y ser de tipo línea vertical u horizontal.
 

A2.2.6.- Presentación de pantalla

    :grid [spacing]    g (grid)  G (grid 2)
    :grid xSpacing ySpacing
    :grid xSpacing ySpacing xOrigin yOrigin
    :grid off 
    Sin parámetros conmuta de on a off (por defecto grid de 1 unidad)

    :zoom factor
    Cambia el factor de zoom conservando el centro de la pantalla. Factores mayores que 1 alejan, mientras que los menores acercan.

    :findbox [zoom]    B (:findbox)     z (:findbox zoom)
    Cambia la vista de acuerdo con el cuadro. En general centra la pantalla en el rectángulo. Si se emplea la opción zoom, se amplia además la vista.

    :view    v
    Hace que toda la celda sea visible en pantalla.
 

A2.2.7.- Miscelánea

    .
    El punto permite repetir el último comando.

    :help [subject]
    Ayuda general o sobre un comando. q finaliza la presentación de ayudas.

    :undo   u
    Deshace el último comando ejecutado. Puede repetirse varias veces.

    :redo    U
    Vuelve a ejecutar el comando deshecho por undo.

    :box    b
    Muestra el tamaño y posición del cuadro.

    :what
    Muestra información sobre lo que se halla seleccionado.

    :macro [caracter] command
    Muestra el comando asociado a una macro. Si no se indica el caracter, se muestran todas. Si se especifica un comando, se modifica la macro asociada. Si el comando contiene espacios se ha de encerrar entre comillas ["]

    :layers
    Muestra los layers disponibles
 

A2.2.8.- Formato cif

    :cif see
    Permite ver el aspecto que tendrá el diseño en las máscaras de fabricación.
 

A2.2.9.- Acceso al sistema

    :load [fichero]
    Carga el fichero MAGIC indicado. Si no se indica ningún nombre, empieza de cero. Load sólo entra la nueva célula en modo de edición si no hay otra activa.

    :writeall
    Salva todas las células en curso. Opciones:  

write (defecto) Salva en disco
autowrite Salva si se ha modificado
Flush Vuelve a cargar desde disco borrando cambios
Skip Salta la célula
Abort Aborta el comando

    :save [name]
    Salva la celula que se está editando con el nombre indicado. La extensión .mag se añade automáticamente.

    :select save file
    Salva los objetos seleccionados como una nueva célula file.mag

    :dump cellname [labelname]
    Copia el contenido de la célula indicada dentro de la célula en edición, de manera que coincidan las esquinas inferior izquierda de ésta y del cuadro.

    :flush [cellname]
    Se descartan todas las modificaciones hechas en la célula, recuperándose los datos desde el disco. Si no se indica ninguna célula, se aplica a la que se edita actualmente.

    :path [searchpath]
    Indica los directorios en los que se buscarán las células. Por defecto ".". Caso de indicarse varios directorios, se han de separar con dos puntos ":". Si no se indican argumentos, se indica el path actual.

    :addpath [directory]
    Añade un directorio al path

    :source
    Ejecuta un fichero de comandos

    :quit
    Retorna al sistema operativo
 

A2.2.10.- Cableado

    El cableado se realiza con el material seleccionado, y con la anchura indicada por el cuadro.

    :wire {horizontal,vertical}
    Fuerza que la próxima línea de cableado sea horizontal o vertical.

    :wire type layer width
    Selecciona el layer y la anchura de cableado.

    :fill direction [layers]
    Extiende un bus en la dirección indicada. Halla todos los objetos que tocan un extremo del cuadro, y los extiende hasta el otro extremo. Si se indica una lista de layers, sólo estos serán extendidos.

    :corner direction1 direction2 [layers]
    Similar a :fill, pero traza un codo desde la dirección 1 a la 2.
 

A2.2.11.- Plowing

    :plow direction [layers]
Mueve los bordes de los objetos contenidos en el cuadro en la dirección indicada, respetando las reglas de diseño.
Direction ha de ser una de las cuatro básicas.
Layers permite seleccionar que layers son afectados.

    :plow selection direction [layers]
Similar al anterior, pero trabaja con los objetos seleccionados en lugar de emplear el cuadro.

    :plow {nojogs,jogs}
Permite seleccionar si se desean pocos codos en los cables durante el plowing.

    :plow {straighten,nostraighten}
Permite selecciónar si se desean eliminar codos durante el plowing.

    :plow {boundary,noboundary}
Emplea el cuadro para indicar un área fuera de la cual no debe y tener efecto el plowing.
 

A2.2.12.- Diseño celular

    Nombres que se hallan en una célula:

• Superior:  Nombre genérico de la subcélula
• Inferior:  Nombre concreto de la instancia

    Es conveniente que las células se solapen lo mínimo posible, y, si lo hacen, no está permitido que los layers se solapen de modo que aparezcan nuevos dispositivos. Las células que forman parte de un array se tratan como una sola instancia, esto es, todos los comandos que afectan a un elemento del array, afectan a todos los demás.

    :select cell    f
    Permite seleccionar la célula que se halla bajo el cursor. Los comandos que operan sobre selecciones pueden emplearse con las células seleccionadas.

    :expand [toggle]    x ( :expand)  ˆX  ( :expand toggle )
    Expande las células seleccionados, si se emplea toggle, conmuta su estado de expansión.

    :unexpand    X  ( :unexpand )
    Esconde las células seleccionadas.

    :getcell name
    Busca la célula name.mag en el disco y crea una instancia de ésta con su esquina inferior izquierda alineada con la misma esquina del cuadro.

    :edit
    Selecciona una célula como la de edición, de modo que el resto de células quedan bloqueadas.

    :identify newid
    Permite modificar el nombre particular de una instancia de una célula.

    :see {allSame,no allSame}
    Permite que todos los objetos se vean en color brillante con independencia de si se hallan en la célula activa.
 

A2.2.13.- Reglas de diseño

    Las reglas de diseño se verifican automáticamente y de forma contínua.  Las violaciones de las reglas se indican mediante un área punteada.

:drc why    y Indica las violaciones de reglas de diseño dentro del cuadro.
:drc find [number] Posiciona el rectángulo sobre un error e imprime su motivo. Si se indica un número va directamente a este error.
:drc count Rastrea cada célula bajo el rectángulo e imprime el número de errores que contiene.
:see {no errors,errors} Permite no mostrar las violaciones de las reglas de diseño.
:drc {off,on} Desactiva el verificador de reglas de diseño (o lo activa)
:drc catchup Pone al día todas las violaciones de reglas de diseño si el drc está off
:drc check Fuerza la revisión completa de las reglas de diseño. Útil si el diseño se ha importado de fuera de MAGIC.

A2.2.14.- Router estàndar

    Únicamente puede conectar puntos que pertenecen a células distintas.

    Las etiquetas deben cumplir:

 • Poseer al menos la anchura del material de routing
 • Deben ser una línea o rectángulo a lo largo del borde de la célula
 • El material asociado debe ser metal1 o metal2
 • Si poseen el mismo nombre deben estar interconectadas

    :specialopen netlist
    Abre una ventana para la creación de un fichero netlist. Mediante el menú se pueden posicionar etiquetas y crear el fichero de nodos. Las etiquetas se ponen con referencia al cuadro.

    Para el caso de búsqueda puede usarse el comando :feedback
 

: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

    La parte inferior del menú se refiere a la edición de la lista de nodos (Ver comandos del
ratón en modo netlist ). Los ficheros netlist son de tipo texto y accesibles a la edición normal. El campo más grande permite seleccionar el nombre del fichero netlist

 BIR Se pregunta un nombre para el fichero
 BDR Usa el nombre de la célula como netlist

    Los siguientes comandos son accesibles desde el menú

    :verify
    Comprueba que el cableado cumpla el netlist

    :print
    Imprime los nombres de todos los terminales del nodo actual

    :showterms
    Pone áreas de feedback para identificar todos los terminales del nodo actual.

    :cleanup
    Comprueba que no hayan etiquetas perdidas ni nodos con un sólo terminal

    :dnet
    Borra el nodo seleccionado

    :shownet
    Muestra el material conectado al objeto bajo el rectángulo.

    Por último, para realizar el trazado del routing

    :route
    Realiza el routing. Conviene comprobar luego con :verify. Los lugares donde el routing falla se muestran con áreas de feedback.

    :route [options...]
    Realiza opciones especiales para el routing. Algunas antes y otras después de hacer el routing. Estas son:

    :channel
    Muestra el canal de routing en forma de áreas de feedback

    :extract
    Genera un "net" a partir del cableado existente que conecta con la región bajo el cuadro.

    :ripup [netlist]
    Borra todo el material eléctricamente conectado al que se halla bajo el cuadro. Si se emplea la opción netlist permite eliminar el routing existente.

    :trace [name]
    Ilumina todos los objetos conectados a los terminales que contienen "name". Si no se especifica "name", se muestra la red actual.
 

A2.2.15.- Extracción de circuitos

    :extract [all]
    Extrae el circuito equivalente de todas las células modificadas, creando un fichero .ext para cada una. Empleando la opción all, fuerza la extracción de todas las células.

    :extract cell name
    Extrae únicamente una célula seleccionada, y crea el fichero name a partir de ella.

    :extract {showparents,parents}
    En el primer caso se muestra la ascendencia de la célula seleccionada. En el segundo caso se extraen todas las células de la ascendencia.

    :extract warn option
    Indica que gestión se hará con los "warnings" que se produzcan. Option puede ser:

    Los posibles tipos de warnings son:     :extract unique
    Crea etiquetas únicas en las células, renombrando las duplicadas.

    :extract [do] length [option]
    Extracción de longitudes de pistas. Mediante :extract do length se habilita este tipo de extracción.  Las posibles opciones para ":extract length option" son:

    De este modo se computan las distancias entre todas las fuentes y todos los destinos. Cuando hay varios caminos se elige el más corto.

    :extresis
    Extracción de resistencias importantes. El circuito debe estar ya extraído (ver manual).
 

A2.2.16.- Multiples ventanas

    Cada ventana representa una célula raíz, que es la indicada al abrirla. Varias ventanas pueden asociarse a la misma célula en distintas posiciones y con distintos factores de zoom. La inscripción sobre la ventana es del tipo:

    :openwindow [cellname]    o
    Abre una nueva ventana para la célula cellname. Si no se da argumentos la ventana se refiere a la célula que contiene el cursor de selección y hace zoom del rectángulo.

    :closewindow     O
    Cierra la ventana activa.

    :underneath
    Pone la ventana activa debajo de todas las otras

    :over
    Pone la ventana activa sobre las otras

    :scroll
    Scrolling de la ventana activa

    :center 
    Centra la ventana en el cursor

    :windowpositions filename
    Guarda en un fichero un conjunto de comandos que guardan información de las ventanas.

    :specialopen type [args]
    Abre una ventana de tipo especial. Posibles tipos:

A2.2.17.- Comandos en color windows

    :color [number]
    Pasa a editar el color indicado

    :save [techStyle displayStyle monitorType]
    Salva el mapa de color en un fichero

    :load [techStyle displayStyle monitorType]


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