viernes, 11 de septiembre de 2015

DESARROLLO DE CELDAS EN EDA's

DESARROLLO DE CELDAS EN EDA's

El proceso de creación de un ASIC (Application Specific Integrated Circuit), inicia con la creación de los bloques funcionales de diseño de la solución final del microcircuito, estos bloques se conocen como celdas y están formados por componentes básicos, como BJT, MOS, resistencias, diodos, entre otros, todos ellos con modelos para procesos de nodos tecnológicos particulares: 180nm, 130nm, 90nm, 65nm, entre otros.
En esta entrada se describira el proceso de la creación de las celdas usando dos EDA's (Electronic Design Automation) de marcas muy típicas en la industria del diseño de microcircuitos: Cadence y Synopsys.

Proceso de desarrollo de la celda
Como ejemplo se ilustrara el desarrollo de una celda con las herramientas: Virtuoso de Cadence para tecnología de 180nm y Custom Designer de Synopsys con tecnología de 90nm.
Figura 1: Esquemático general de un inversor con CMOS

El esquema de la celda a desarrollar se presenta en la figura 1 y esta compuesta por dos CMOS complementarios, una sola entrada y una salida, además de su alimentación de potencia; los pasos para la creación de la celda se describen a continuación:
Paso 1:
Lanzar el entorno de trabajo, esta tarea puede diferir en función de las características de instalación de cada herramienta, sin embargo una vez lanzada la misma se debe llegar a la ventana de interfaz de comandos con un menú como el que muestra la figura 2.
(a)
(b)
Figura 2: (a)Consola de trabajo de Virtuoso, (b) Consola de trabajo de Custom Designer

Paso 2:
Ahora crearemos nuestra propia librería donde registraremos cada una de las celdas que se diseñen, es conveniente crear una carpeta general o relacionada por proyecto para que sirva de referencia, para hacer esta tarea se hace lo siguiente:
Cadence: Tools>Library Manager
Synopsys: Tools>Library Manager
Con ello se lanzara el directorio de librerías donde se muestran todas a las que tenemos acceso, el directorio muestra tres espacios comunes a ambas herramientas: el de las librerías, el de las celdas donde presentara todas las que están incluidas según la librería que se marque y el de las vistas que están disponibles para cada celda (ver figura 3)

(a)
(b)
Figura 3: Administrador de librerías (a)Virtuoso, (b)Custom Designer

A partir de aquí creamos la librería con las opciones siguientes:
Cadence: File>New>Library
Synopsys: File>New>Library
Agregamos el nombre que se le quiere dar a la librería y la carpeta donde se alojara la misma, para el ejemplo usaremos el nombre "pruebalib", para el caso de virtuoso al presionar <Apply> se lanzara una nueva ventana donde preguntara si se desea asociar una librería del nodo tecnológico, se marca y se presiona "ok", luego se selecciona la librería de nodo tecnológico para este caso usaremos la librería de 180nm "UMC_18_CMOS" en la figura 4 se muestran las imágenes de este proceso.
Figura 4: Creación de librería y asociación de nodo tecnológico con Virtuoso

Para el caso de Custom Designer el proceso se completa en una sola ventana, donde además del nombre y la ruta, se puede asociar la librería de nodo tecnológico, para el caso usaremos la librería de 90nm "SAED_PDK_90" como muestra la figura 5
Figura 5: Creación de librería y asociación de nodo tecnológico con Custom Designer

Una vez completo el proceso la librería aparecerá en el árbol del administrador de librerías, donde se le podrán agregar todas las celdas que se diseñen relacionadas con la naturaleza de la librería

Paso 3:
Para crear la celda sobre el administrador de librerías efectuamos lo siguiente:
Cadence: File>New>Cell View
Synopsys: File>New>Cell View
Esto lanzara una ventana donde se deberán de agregar los campos relacionados con el nombre de la celda, el tipo de vista, la librería donde estará contenida la celda y la herramienta para la composición del esquemático, para el ejemplo llamaremos la celda "invert", la figura 6 muestra el proceso para cada herramienta.
   (a)

                                                                  (b)

Figura 6: Nueva vista de celda (a)Virtuoso, (b)Custom Designer

Una vez completo este paso se lanzara la herramienta de edición de esquemáticos, donde se desarrollara el diseño de la celda con los componentes disponibles en la librería de nodos tecnológicos.

Paso 4:
Ahora se agregaran los componentes individuales de la celda, para ello se pueden usar los menús disponibles o combinaciones de teclas rápidas para cada una de las tareas a desarrollar; describiremos las tareas usando el conjunto de teclas rápidas:
Colocación de componentes (Pulsar la tecla <i>)
(Cadence: Create>Instance)
(Synopsys: Add>Instance)
Para Cadence seleccionaremos de la librería de 180nm, los CMOS N_33_MM y P_33_MM respectivamente como se ilustra en la figura 7, una vez hecho esto se puede arrastrar el componente sobre la malla de conexiones para ubicarlo donde mejor convenga.

Figura 7: Agregar componente en Cadence

Para el caso de Synopsys de la librería de 90nm seleccionamos los CMOS nmos4t_33 y pmos4t_33, como se ilustra en la figura 8.


Figura 8: Agregar componente en Synopsys

Además de los CMOS es necesario agregar las conexiones de energía "vdd" y tierra "gnd", para ello usamos la librería "analogLib" en ambos EDA para incorporar estos dos nuevos componentes genéricos.
Conectar los componentes (Pulsar la tecla <w>)
(Cadence: Create>Wire(narrow) )
(Synopsys: Add>Wire )
Ahora podemos arrastrar las conexiones haciendo click en los puntos que necesitamos interconectar, para liberar se presiona <esc>
Agregar los conectores (Pulsar la tecla <p>)
(Cadence: Create>Pin )
(Synopsys: Add>Pin  )
Los conectores representan los pines de nuestra celda y son los puntos que tendremos disponibles al usarla en el desarrollo de sistemas mas complejos, para el inversor solo sera necesario agregar un pin de entrada y otro de salida, esta condición se establece en la ventana que resulta de ejecutar el comando.
Una vez completa estas tareas el circuito se vera como ilustra la figura 9.

Figura 9: Esquemático del inversor completamente conectado

Una vez terminamos ejecutamos la opción de chequeo y guardado del esquema de nuestra celda, si se presentaran errores la herramienta lo informara en la ventana de linea de comandos o con una ventana emergente.
Verificar y Guardar (Pulsar la tecla <Shift+x>)
(Cadence: File>Check and Save )
(Synopsys: Design>Check and Save )  

Terminada la edición del esquemático es aconsejable probar su funcionamiento a nivel de simulación, para este caso omitiremos este paso que sera discutido en otra entrada.
El ultimo de los procesos para terminar la celda es la creación de un símbolo relacionado con sus características y funcionamiento, para el caso de un inversor el símbolo es bastante conocido; a continuación se ejecutara el proceso para crear y/o editar el símbolo de la celda.
La creación de símbolos se puede efectuar de forma manual o automática, para la finalidad de este escrito sera desarrollada de forma automática.

Paso 5:
Desde la ventana de esquemáticos seleccionamos las opciones siguientes segun la herramienta que estamos usando.
(Cadence: Create>Cellview>From cellview )
(Synopsys: Design>New cellview>From cellview )
Esto nos disparara la ventana que muestra la figura 10, donde podemos indicar los parámetros generales del símbolo a crear, el esquemático relacionado y la librería a la que pertenece.

(a)
 
(b)
 Figura 10: Ventana de parámetros del simbolo (a)Virtuoso, (b)Custom Designer

Se dejan las opciones con los parámetros recomendados presionando el botón de <OK>, esta acción lanzara el editor de símbolos con uno recomendado que usualmente es un rectángulo, el cual puede ser editado a conveniencia, el editor de símbolos cuenta con herramientas similares al editor de esquemáticos con lo que podemos usar opciones equivalentes para su edición.
Completamos la edición del símbolo hasta obtener la representación que muestra la figura 11.
 (a)
 (a)
Figura 11: Representación final del símbolo (a)Virtuoso, (b)Custom Designer

Con este proceso se completa la creación del símbolo es conveniente que se compruebe y guarde la representación, la cual se podrá reutilizar como componente de nuestras librerías para posteriores diseños.
Según la preferencia se podrían dejar las terminales de alimentación y tierra como pines, adicionales a los de entrada y salida, normalmente estos pines son nodos globales que no necesitan conectarse explícitamente por lo que nunca se incluyen.
La creación de la celda constituye el primer proceso a ejecutar cuando se diseñan los ASIC's, ya que nos permite definir todos los bloques funcionales que se usaran en diseños mas complejos, como se indicó anteriormente es recomendable que cada bloque se pueda simular como verificación de forma individual, para ir garantizando que cumpla con las especificaciones definidas, al establecer el modelo de concepto del chip que se quiere diseñar.

No hay comentarios.:

Publicar un comentario