113
Universidad de Concepción. Departamento de Ingeniería Eléctrica. Facultad de Ingeniería. Profesor Patrocinante Dr. Miguel Figueroa Toro. SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI Waldo Enrique Valenzuela Pinilla Informe de Memoria de Título Para optar al Título de Ingeniero Civil Electrónico Junio 2006

Waldo Valenzuela MemoriaT Eln

Embed Size (px)

Citation preview

Page 1: Waldo Valenzuela MemoriaT Eln

Universidad de Concepción.Departamento de Ingeniería Eléctrica.Facultad de Ingeniería.

Profesor PatrocinanteDr. Miguel Figueroa Toro.

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DESEÑALES EN VLSI

Waldo Enrique Valenzuela Pinilla

Informe de Memoria de TítuloPara optar al Título de

Ingeniero Civil Electrónico

Junio 2006

Page 2: Waldo Valenzuela MemoriaT Eln

2

A mi madre, por creer en mí siempre y apoyarme en todoslos proyectos que he realizado en mi vida

Page 3: Waldo Valenzuela MemoriaT Eln

3

Agradecimientos

Quiero agradecer a todas las personas que de una u otra forma estuvieron dando una mano de

apoyo y una palabra de alimento siempre que lo necesitaba. A mi profesor guía por la paciencia

demostrada, apoyo y la ayuda que me brindó. A mis amigos Gonzalo y Esteban con los cuales

compartimos grandes momentos juntos tanto en lo académico como en lo personal.

Page 4: Waldo Valenzuela MemoriaT Eln

4

ResumenEl procesamiento adaptivo de señales es una disciplina que busca solucionar los problemas

presentes en señales que actúan en ambientes cambiantes, a través del filtrado adaptivo o medianteredes neuronales (entre otras técnicas). En algunos ambientes se necesitan respuestas rápidas, lascuales no pueden ser obtenidas mediante la implementación de estas técnicas a través de algúnsoftware y por consiguiente resulta más útil implementar estos algoritmos en circuitos VLSI.

Para el diseño de circuitos VLSI existen distintos software CAD que permiten realizaresquemático y layout de cualquier tipo de circuito. Éstos por lo general no contemplan circuitosprediseñados para aplicaciones específicas, sino más bien nos proveen de bibliotecas estándar quecontienen una limitada cantidad de elementos disponibles para el diseño.

La presente memoria abordó este tema a través del diseño de una biblioteca de soporte CAD,la cual contiene elementos prediseñados necesarios para la implementación de algoritmos de redesneuronales LMS y GHA. Para esto se realizó un análisis de estos dos algoritmos desde el punto devista circuital, identificando las partes que los componen y los elementos necesarios para suimplementación. Posteriormente se da un pequeño vistazo al transistor de compuerta flotante, el cualse utiliza como parte fundamental dentro de las memorias que se diseñaron dentro de este trabajo.Luego se realiza una descripción general de los software utilizados en el diseño de la biblioteca(LTSpice y ELECTRIC). En seguida se muestra en forma detallada el diseño de cada uno de loselementos que la componen, así como también las funciones diseñadas en Matlab las cualespermiten realizar distintos análisis sobre los circuitos que pueden ser creados con esta biblioteca.Finalmente se muestra el funcionamiento de esta biblioteca y sus funciones, mediante laimplementación y simulación de una red neuronal de cuatro entradas.

Page 5: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

5

Índice General1. INTRODUCCIÓN. .......................................................................................................................................... 10

1.1. OBJETIVOS ................................................................................................................................................ 111.1.1 Objetivo General.................................................................................................................................. 111.1.2 Objetivos Específicos. ..........................................................................................................................11

1.2. ORGANIZACIÓN DEL INFORME. ................................................................................................................... 11

2. ALGORITMOS DE PROCESAMIENTO ADAPTIVO DE SEÑALES......................................................... 13

2.1. ALGORITMOS ............................................................................................................................................ 132.1.1 Método LMS ........................................................................................................................................132.1.2 Análisis de componentes principales (PCA)..........................................................................................15

2.2. ANÁLISIS DE ALGORITMOS PARA SU IMPLEMENTACIÓN EN VLSI. .................................................................. 18

3. INTRODUCCIÓN AL TRANSISTOR DE COMPUERTA FLOTANTE...................................................... 20

3.1. TÚNEL DE ELECTRONES (ELECTRON TUNNELING) ...................................................................................... 223.2. INYECCIÓN DE ELECTRONES (ELECTRON INJECTION). ................................................................................. 23

4. HERRAMIENTAS CAD PARA DISEÑO VLSI ............................................................................................25

4.1. EL DISEÑO FÍSICO...................................................................................................................................... 254.2. SIMULACIONES.......................................................................................................................................... 254.3. ELECTRIC ..............................................................................................................................................25

4.3.1 Creación de Celda ............................................................................................................................... 264.4. LTSPICE.................................................................................................................................................... 33

5. DISEÑO DE CELDAS DE LA BIBLIOTECA ............................................................................................... 38

5.1. DIODO CMOS. ............................................................................................................................................ 385.2. ESPEJO DE CORRIENTE. .............................................................................................................................. 395.3. PAR DIFERENCIAL. .................................................................................................................................... 405.4. DISEÑO DEL MULTIPLICADOR DE GILBERT. ................................................................................................ 42

5.4.1 Diseño Esquemático y layout en ELECTRIC.........................................................................................455.4.2 Simulación. .......................................................................................................................................... 46

5.5. DISEÑO AMPLIFICADOR OPERACIONAL ...................................................................................................... 485.5.1 Diseño Esquemático y layout en ELECTRIC......................................................................................... 535.5.2 Simulación. .......................................................................................................................................... 55

5.6. DISEÑO DE MEMORIA. ............................................................................................................................... 565.6.1 Transistor de Inyección. ....................................................................................................................... 565.6.2 Transistor de Tuneling. ........................................................................................................................ 605.6.3 Condensador........................................................................................................................................615.6.4 Diseño Esquemático y layout en ELECTRIC......................................................................................... 655.6.5 Simulación. .......................................................................................................................................... 67

5.7. CIRCUITO DIFERENCIAL. ............................................................................................................................ 695.7.1 Diseño Esquemático y layout en ELECTRIC......................................................................................... 705.7.2 Simulación. .......................................................................................................................................... 71

6. HERRAMIENTAS DE ANÁLISIS DE MONTECARLO. .............................................................................72

6.1. FUNCIÓN GENERA_STRUCT........................................................................................................................ 726.2. FUNCIÓN AGREGA_MODELOS. ................................................................................................................... 746.3. FUNCIÓN ESCRIBIR. ................................................................................................................................... 766.4. FUNCIÓN ASIGNACION_ALEATORIA. .......................................................................................................... 766.5. FUNCIÓN MODIFICA_SIZE. ......................................................................................................................... 776.6. FUNCIÓN BUSCAR. .................................................................................................................................... 796.7. FUNCIÓN AGREGAR_SUBCIRCUITOS. .......................................................................................................... 796.8. FUNCIÓN ASIGNACIÓN_SUBCIRCUITOS. ...................................................................................................... 816.9. SIMULACIÓN DE UN NETLIST BAJO ANÁLISIS DE MONTECARLO. ................................................................... 81

Page 6: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

6

7. IMPLEMENTACIÓN DE ALGORITMOS DE PROCESAMIENTO ADAPTIVO DE SEÑALES,UTILIZANDO BIBLIOTECA DISEÑADA............................................................................................................. 86

7.1. CONSTRUCCIÓN DEL ESQUEMÁTICO Y LAYOUT. .......................................................................................... 877.2. SIMULACIONES.......................................................................................................................................... 90

7.2.1 Simulación de red neuronal de cuatro entradas. ................................................................................... 907.2.2 Simulación sin calibración de la memoria. ........................................................................................... 917.2.3 Simulación con calibración y análisis de montecarlo sobre la memoria. ...............................................93

8. CONCLUSIÓN................................................................................................................................................ 96

8.1. CONCLUSIONES ......................................................................................................................................... 968.2. TRABAJOS FUTUROS .................................................................................................................................. 97

9. REFERENCIAS .............................................................................................................................................. 98

10. ANEXOS. .................................................................................................................................................... 99

10.1. ANEXO 1: REGLAS PARA CAPACITOR POLY1-POLY2..................................................................................... 9910.2. ANEXO 2: TABLA DE IDENTIFICACIÓN DE ELEMENTOS DENTRO DE UN NETLIST ........................................... 10010.3. ANEXO 3: FUNCIONES PARA ANÁLISIS DE MONTECARLO............................................................................ 100

10.3.1 Anexo 3(a): Función Genera_struct. .............................................................................................. 10010.3.2 Anexo 3(b): Función Agrega_modelos. .......................................................................................... 10310.3.3 Anexo 3(c): Función Escribir......................................................................................................... 10410.3.4 Anexo 3(d): Función asignacion_aleatoria..................................................................................... 10610.3.5 Anexo 3(e): Función Modifica_size. ............................................................................................... 10710.3.6 Anexo 3(f): Función Buscar. .......................................................................................................... 10910.3.7 Anexo 3(g): Función Agregar_subcircuitos. ................................................................................... 11110.3.8 Anexo 3(h): Función Asignación_subcircuito. ................................................................................ 112

Page 7: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

7

Índice de Figuras.2.1. APLICACIÓN DE MÉTODO LMS A REDES NEURONALES ........................................................................................ 132.2. EVOLUCIÓN DEL ERROR .................................................................................................................................. 142.3. EVOLUCIÓN DE LOS PESOS DE LA NEURONA ...................................................................................................... 152.4. APLICACIÓN DE MÉTODO GHA EN REDES NEURONALES ...................................................................................... 162.5. EVOLUCIÓN DE LOS PESOS DE LAS COMPONENTES 1 Y 2 ...................................................................................... 172.6. EVOLUCIÓN DE LOS PESOS DE LAS COMPONENTES 3 Y 4 ...................................................................................... 172.7. ESTRUCTURA DE DISTRIBUCIÓN EN REDES NEURONALES. .................................................................................... 183.1. VISTA FÍSICA DE UN TRANSISTOR DE COMPUERTA FLOTANTE ............................................................................... 213.2. VISTA LATERAL DEL TRANSISTOR DE COMPUERTA FLOTANTE ................................................................................ 213.3. TRANSICIÓN DE LA BANDA DE ENERGÍA EN LA CAPA DE OXIDO (SIO2). ................................................................. 223.4. DIAGRAMA DE BANDA DEL ELECTRÓN [10] ........................................................................................................ 234.1. VENTANA DE INICIO DE ELECTRIC..................................................................................................................... 264.2. VENTANA DE MANIPULACIÓN Y CREACIÓN DE CELDAS ......................................................................................... 274. 3. VENTANA DE CREACIÓN DE INSTANCIAS ............................................................................................................. 284.4. VENTANA DE CREACIÓN DE EXPORT. ................................................................................................................. 294.5. VENTANA DE ERRORES EN LVS ......................................................................................................................... 304.6. DISEÑO DE UN NOT EN SU PARTE ESQUEMÁTICA Y FÍSICA..................................................................................... 304.7. CONFIGURACIÓN EXTRACCIÓN SPICE. .............................................................................................................. 314.8. CIRCUITO LISTO PARA SIMULACIÓN SPICE.......................................................................................................... 324.9. PROGRAMA LTSPICE ....................................................................................................................................... 334.10. PROGRAMA LTSIPCE OPCIONES DE VISUALIZACIÓN ............................................................................................ 344.11. MENÚ DE VISUALIZACIÓN. ............................................................................................................................... 354.12. VISUALIZACIÓN DE FORMAS DE ONDA................................................................................................................ 364.13. ACTIVACIÓN DE CURSORES............................................................................................................................... 364.14. MEDICIÓN UTILIZANDO CURSORES.................................................................................................................... 375.1. DIODOS TIPO CMOS....................................................................................................................................... 385.2. ESPEJOS DE CORRIENTE TIPO CMOS ................................................................................................................ 395.3. ESPEJO DE CORRIENTE NMOS ........................................................................................................................... 395.4. PAR DIFERENCIAL PMOS .................................................................................................................................. 405.5. CURVA PAR DIFERENCIAL ................................................................................................................................ 425.6. VERSIÓN CMOS DEL MULTIPLICADOR DE GILBERT ............................................................................................ 435.7. CURVA DE TRANSFERENCIA DC DEL MULTIPLICADOR DE GILBERT [8] ................................................................. 445.8. ESQUEMÁTICO DEL MULTIPLICADOR DE GILBERT............................................................................................... 455.9. LAYOUT DEL MULTIPLICADOR DE GILBERT ........................................................................................................ 465.10. SIMULACIÓN DEL ESQUEMÁTICO DEL MULTIPLICADOR DE GILBERT ..................................................................... 465.11. SIMULACIÓN LAYOUT DEL MULTIPLICADOR DE GILBERT ..................................................................................... 475.12. ZOOM A LA CURVA DE TRANSFERENCIA DEL MULTIPLICADOR ............................................................................... 475.13. AMPLIFICADOR OPERACIONAL BÁSICO .............................................................................................................. 485.14. CURVAS CARACTERÍSTICAS DEL AMPLIFICADOR IDEAL......................................................................................... 485.15. MODELO EN PEQUEÑA SEÑAL DE LA RESISTENCIA ACTIVA .................................................................................... 495.16. FUENTES DE CORRIENTES TIPO CMOS.............................................................................................................. 505.17. CURVAS CARACTERÍSTICAS DE UNA FUENTE DE CORRIENTE TIPO CMOS............................................................... 505.18. CURVA CARACTERÍSTICA ESPEJO DE CORRIENTE ................................................................................................. 515.19. ESQUEMA DE UN AMPLIFICADOR DIFERENCIAL .................................................................................................. 515.20. AMPLIFICADOR OTA MILLER. .......................................................................................................................... 525.21. ESQUEMÁTICO DEL AMPLIFICADOR OTA MILLER .............................................................................................. 535.22. LAYOUT DEL AMPLIFICADOR OTA MILLER ....................................................................................................... 545.23. CURVA DEL AMPLIFICADOR OTA MILLER, ESQUEMÁTICO. ................................................................................. 555.24. CURVA DEL AMPLIFICADOR OTA MILLER, LAYOUT. ........................................................................................... 555.25. CELDA DE MEMORIA ....................................................................................................................................... 565.26. FUENTES DE CORRIENTE TRANSISTOR DE INYECCIÓN .......................................................................................... 585.27. CELDA DE INYECCIÓN, ESQUEMÁTICO .............................................................................................................. 58

Page 8: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

8

5.28. CELDA DE INYECCIÓN, LAYOUT......................................................................................................................... 595.29. PROPIEDADES DEL TRANSISTOR........................................................................................................................ 595.30. FUENTE DE CORRIENTE SPICE, CSTUN........................................................................................................... 605.31. TRANSISTOR DE TUNNELING ............................................................................................................................. 615.32. LAYOUT DE CAPACITOR DE 100[FF]................................................................................................................. 625.33. CELDA DE MEMORIA CON CIRCUITOS DE CALIBRACIÓN ....................................................................................... 635.34. GRÁFICOS DE CALIBRACIÓN DE CELDAS DE MEMORIA .......................................................................................... 645.35. ESQUEMÁTICO, CELDA DE MEMORIA CON CIRCUITOS DE CALIBRACIÓN. ............................................................... 655.36. SUB-CIRCUITO DE COMPUERTA FLOTANTE ........................................................................................................ 655.37. LAYOUT, CELDA DE MEMORIA CON CIRCUITOS DE CALIBRACIÓN........................................................................... 665.38. ESQUEMÁTICO, SIMULACIÓN CELDA DE MEMORIA CON CIRCUITOS DE CALIBRACIÓN .............................................. 675.39. LAYOUT, SIMULACIÓN CELDA DE MEMORIA CON CIRCUITOS DE CALIBRACIÓN........................................................ 675.40. CIRCUITO DIFERENCIAL. ................................................................................................................................. 695.41. CIRCUITO DIFERENCIAL, ESQUEMÁTICO. ........................................................................................................... 705.42. CIRCUITO DIFERENCIAL, LAYOUT. ..................................................................................................................... 705.43. SIMULACIÓN CIRCUITO DIFERENCIAL, ESQUEMÁTICO.......................................................................................... 715.44. SIMULACIÓN CIRCUITO DIFERENCIAL, LAYOUT. .................................................................................................. 716.1. ESTRUCTURAS PARA LA FUNCIÓN GENERA_STRUCT .............................................................................................. 746.2. DISTRIBUCIÓN DE LA ESTRUCTURA MODELOS_CAMBIAR..................................................................................... 756.3. DISTRIBUCIÓN DE LA ESTRUCTURA TIPOS, FUNCIÓN MODIFICA_SIZE. .................................................................. 786.4. DISTRIBUCIÓN DE LA ESTRUCTURA TIPOS, FUNCIÓN AGREGA_SUBCIRCUITOS. ...................................................... 806.5. ESQUEMÁTICO DE NOTS PARA ANÁLISIS DE MONTECARLO................................................................................... 826.6. ANÁLISIS DC DE NOTS SIN MODIFICACIONES .................................................................................................... 836.7. ANÁLISIS DC DE NOTS CON MODIFICACIONES ................................................................................................... 857.1. NEURONA DE CUATRO ENTRADAS ACTUALIZADA CON TREN DE PULSOS. ............................................................... 867.2. SINAPSIS DE LA PRIMERA ENTRADA, ESQUEMÁTICO ............................................................................................. 877.3. SINAPSIS DE LA PRIMERA ENTRADA, LAYOUT....................................................................................................... 887.4. LAYOUT RED NEURONAL DE CUATRO ENTRADAS ................................................................................................. 897. 5. SIMULACIÓN RED NEURONAL DE CUATRO ENTRADAS, ESQUEMÁTICO. ................................................................... 907.6. SIMULACIÓN RED NEURONAL DE CUATRO ENTRADAS, LAYOUT. ............................................................................. 907.7. SIMULACIÓN ESQUEMÁTICO MEMORIA Y DIFERENCIAL. ....................................................................................... 917.8. SIMULACIÓN LAYOUT MEMORIA Y DIFERENCIAL. ................................................................................................. 917.9. SIMULACIÓN MEMORIA Y DIFERENCIAL. ............................................................................................................. 927.10. SIMULACIÓN MEMORIA Y DIFERENCIAL CON CAMBIOS DE TAMAÑOS, SIN CALIBRACIÓN............................................ 937.11. SIMULACIÓN MEMORIA Y DIFERENCIAL CON CAMBIOS DE TAMAÑOS, CON CALIBRACIÓN. ......................................... 947.12. EVOLUCIÓN DE CADA UNA DE LAS COMPUERTAS FLOTANTES DEL CIRCUITO .......................................................... 94

Page 9: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

9

Índice de Tablas.2.1. ECUACIONES PRINCIPALES LMS Y GHA. ............................................................................................................... 182.2. ELEMENTOS NECESARIOS PARA LMS Y GHA........................................................................................................... 195.1. RESULTADOS DE LAS SIMULACIONES DE ESQUEMÁTICO Y LAYOUT. ............................................................................ 686.1. DESCRIPCIÓN DE LOS PARÁMETROS DE LA FUNCIÓN GENERA_STRUCT....................................................................... 736.2. DESCRIPCIÓN DE LOS PARÁMETROS DE LA FUNCIÓN AGREGA_MODELOS ................................................................... 756.3. DESCRIPCIÓN DE LOS PARÁMETROS DE LA FUNCIÓN ESCRIBIR.................................................................................. 766.4. DESCRIPCIÓN DE LOS PARÁMETROS DE LA FUNCIÓN ASIGNACIÓN_ALETORIA. ............................................................ 776.5. DESCRIPCIÓN DE LOS PARÁMETROS DE LA FUNCIÓN MODIFICA_SIZE. ....................................................................... 786.6. DESCRIPCIÓN DE LOS PARÁMETROS DE LA FUNCIÓN AGREGA_SUBCIRCUITOS. ........................................................... 806.7. DESCRIPCIÓN DE LOS PARÁMETROS DE LA FUNCIÓN ASIGNACION_SUBCIRCUITOS...................................................... 817.1. RESULTADOS DE LAS SIMULACIONES MEMORIA Y DIFERENCIAL. ................................................................................ 937.2. RESULTADOS DE LAS SIMULACIONES MEMORIA Y DIFERENCIAL DESPUÉS DE LA CALIBRACIÓN. ..................................... 95

Page 10: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

10

CAPITULO I.1. INTRODUCCIÓN.

La fabricación de circuitos integrados a gran escala (VLSI) basados en transistores comenzóa mediados de los años 80, producto del avance de las tecnologías de semiconductores. Estopermitió a los desarrolladores implementar en espacios cada vez más reducidos una mayor cantidadde transistores, lo que con el pasar de los años llevó al diseño de ordenadores portátiles para el usode la gente común que hasta esa fecha era casi imposible. Junto con esto, cada vez másuniversidades se fueron sumando a la enseñanza e investigación de esta tecnología, proveyendo asus alumnos tanto de los conocimientos como de las herramientas necesarias para el diseño decircuitos integrados.

En la actualidad, los grandes fabricantes de circuitos integrados como Intel, TexasInstruments, Samsung, ATI Technologies, Advanced Micro Devices (AMD), IBM, NEC, Toshiba,entre otras, utilizan distintos software CAD para el diseño de circuitos. Éstos consideran reglas dediseño según el proceso de fabricación que utilice la compañía, pero estas reglas no pueden serdivulgadas, por estar protegidas por acuerdos de confidencialidad. Esto trae consigo un problema enla enseñanza del diseño de circuitos, dado que para llevar a cabo una buena implementación de unalgoritmo en un chip es necesario conocer las reglas de diseño. Es por esto que para suplir estafalencia se crearon las reglas escalables, en la cual existe una medida única que se escala según elproceso de fabricación. Si bien este no representa en un 100% las reglas de cada fabricante, nospermite una aproximación bastante real del proceso de fabricación.

Otro de los grandes problemas que surgió fue la fabricación de pequeñas cantidades de chips.En este caso, dado que las grandes empresas fabrican sólo a gran escala, para las pequeñas empresaso institutos resultaba casi imposible mandar a fabricar. Es por esto que a partir de 1981 surgeMOSIS, empresa que sirve de intermediario entre las grandes industrias de fabricación de chips y laspequeñas firmas comerciales, agencias gubernamentales, universidades e institutos de investigacióna través del mundo. Esta empresa es la encargada de reunir todos los diseños en un solo Wafer(plantilla donde van alojados todos los chips diseñados) y mandarlo a fabricar a las distintasempresas. De esta forma se logra poner mas a la mano la fabricación de chips, permitiendo que losdiseños creados por las mentes de estudiantes o investigadores se conviertan en realidad. Gracias a todo este proceso de investigación y desarrollo en VLSI se ha logrado que hoy endía sea más común el diseño de dispositivos menor tamaño y portátiles, como son los teléfonoscelulares y PDA. Sin embargo, dada la gran cantidad de señales y ruido presente en el ambiente quenos rodea hace necesario que técnicas de procesamiento adaptivo de señales como: filtros adoptivoso redes neuronales (técnicas que se especializan en solucionar problemas de señales presentes enambientes cambiantes o con ruido) se encuentren implementadas físicamente dentro de estosdispositivos. Si bien al ser implementadas mediante software seria económicamente mas barato, entérminos de respuesta seria bastante mayor, provocándose una disminución en el rendimiento delaparato.

Si bien los fabricantes de circuitos integrados utilizan software CAD diseñadosespecialmente para la empresa y cuentan con bibliotecas según el tipo de circuito o algoritmo que sedesee implementar (como los antes mencionados), existen distintas alternativas comerciales dedistintos precios y programas libres.

Generalmente, este tipo de programas sólo provee bibliotecas con componentes estándar parael diseño y algunos circuitos más complejos de uso general, pero no circuitos pre-diseñados que

Page 11: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

11

faciliten la implementación de grandes algoritmos de procesamiento adaptivo. La falencia de estetipo de bibliotecas trae como consecuencia perdida de tiempo en el diseño de circuitos de usogeneral para este tipo de algoritmos tales como: multiplicadores, memorias, sumadores, etc.desviando la atención del diseñador del problema real que desea solucionar.

Tomando en consideración lo anterior, vemos que surge la necesidad de contar conbibliotecas especializadas que contengan los componentes necesarios para la implementación dealgoritmos de procesamiento adaptivo de señales, dado que el simple hecho de diseñar una y otravez los distintos sub-circuitos de uso general dentro de un proyecto genera pérdidas de tiempo ydesvía la atención del diseñador del problema general por un especifico, el cual se podría solucionarde manera fácil si el software CAD contara con este tipo de bibliotecas.

1.1. OBJETIVOS

1.1.1 Objetivo General

El objetivo principal de la presente memoria es hacer una biblioteca de soporte CADutilizado el software ELECTRIC para el diseño e implementación de algoritmos de procesamientosadaptivos de señales en VLSI y además proveer una gama de funciones que permitan probar elfuncionamiento de dichos algoritmos sometidos a distintas variaciones.

1.1.2 Objetivos Específicos.

• Estudio de elementos necesarios para la implementación de algoritmo como LMS yGHA.

• Descripción de los programas utilizados para el diseño de la biblioteca y simulación delos distintos circuitos.

• Desarrollo de los distintos elementos que componen la biblioteca.

• Desarrollo de funciones en Matlab para la variación y modificación del netlist obtenidosde los circuitos diseñados.

• Diseñar y simular utilizando la biblioteca y funciones creadas.

1.2. ORGANIZACIÓN DEL INFORME.

Este informe está estructurado de la siguiente manera:

• El Capítulo 2 analiza los algoritmos de procesamiento adaptivo LMS y GHA desde elpunto de vista de la cantidad y tipo de elementos que son necesarios para suimplementación en VLSI.

• El Capítulo 3 presenta una breve descripción del transistor de compuerta flotante, el cuales un elemento fundamental dentro de las memorias que se diseñarán en esta biblioteca.

• El Capítulo 4 describe el uso y funcionamiento de los dos software utilizados,ELECTRIC y LTSpice Switcher CAD TM III.

• El Capítulo 5 describe en forma detallada el diseño y funcionamiento de cada uno de loselementos que componen esta biblioteca.

• El Capítulo 6 describe el funcionamiento de cada una de las funciones creadas en Matlaby que se utilizaran para el manejo del archivo netlist.

Page 12: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

12

• El Capítulo 7 describe la implementación y simulación de una red neuronal de cuatroentradas utilizando la biblioteca diseñada.

Page 13: Waldo Valenzuela MemoriaT Eln

13

CAPITULO II2. ALGORITMOS DE PROCESAMIENTO ADAPTIVO DE SEÑALES.

Hoy existen una gran cantidad de algoritmos para el procesamiento adaptivo de señales, delos cuales hemos escogidos dos que representan dos líneas de investigación dentro del área de redesneuronales, LMS y GHA.

Estos algoritmos clasifican las redes neuronales en dos tipos (según la forma de actualizaciónde los pesos): las supervisadas, que utilizan una referencia durante el periodo de aprendizaje, y lasno supervisadas que no la necesitan.

A continuación se presentara una breve descripción de estos dos algoritmos.

2.1. ALGORITMOS

2.1.1 Método LMS

La Red Neuronal de la figura 2.1 LMS (Least Mean Squared) o regla del mínimo cuadrado(también se conoce como regla delta o de Widrow-Hoff), trata de minimizar un delta o diferenciaentre el valor observado y el deseado en la salida de la red [1].

La regla aprendizaje de los mínimos cuadrados es un método a través del cual se buscar elvalor deseado de los pesos W (figura 2.1) mediante la adaptación de los pesos a medida que se vayanpresentando los patrones de entrenamiento y salidas deseadas para cada uno de ellos; cadapresentación del set de patrones a la entrada a la red la llamaremos iteración.

Para cada combinación entrada-salida se realiza un proceso automático de pequeños ajustesen los valores de los pesos hasta que se obtienen las salidas correctas.

Figura N° 2.1. Aplicación de Método LMS a redes neuronales

Page 14: Waldo Valenzuela MemoriaT Eln

14

La regla de aprendizaje LMS minimiza el error cuadrado medio obtenido entre la salidadeseada para una entrada determinada y la salida que realmente se esta obteniendo en ese momentoproducto de dicha entrada [5].

La mayoría de las redes neuronales consta de una etapa de mapeo dada por la ecuación 1.1.Aquí la salida de la red es la resultante de las ponderaciones hechas por cada una de las entradas.

∑=

=⋅=n

kkjj

Tkk xwWXY

0( 1.1 )

Durante el período de aprendizaje se lleva a cabo la modificación del valor de los pesos através de la minimización del error entre la salida y la entrada deseada. Cada delta de actualizaciónesta dado por la ecuación 1.2.

( ) ( ) ( ) kkdkkkki XYYXEXEw ⋅−=⋅=⋅−=∆ ηηη ( 1.2 )

De aquí podemos ver que el valor del peso en la siguiente iteración esta dado por la ecuación1.3.

( ) ( ) kkii XEtwtw ⋅⋅+=+ η1 ( 1.3 )

siendo η la constante de proporcionalidad o tasa de aprendizaje.

Esta expresión representa la modificación de pesos obtenida al aplicar el algoritmo LMS. Latasa η es el parámetro que determina la estabilidad y la velocidad de convergencia del algoritmo.

Para graficar de manera más clara la funcionalidad de este algoritmo lo aplicamos a unapequeña red de neuronal de cuatro entradas. Los resultados obtenidos fueron los siguientes:

Figura N° 2.2. Evolución del Error

Page 15: Waldo Valenzuela MemoriaT Eln

15

Figura N° 2.3. Evolución de los Pesos de la Neurona

La figura 2.2 muestra la evolución del error a medida que se presenta el set completo deentradas a la neurona. El error entre la salida deseada y la salida de la neurona va disminuyendohasta llegar aproximadamente a cero. La figura 2.3 confirma lo anterior, aquí vemos tanto laevolución de los pesos como el valor que deberían llegar a tener. De esta forma, a medida queaumentamos las muestras del set completo de entradas a la red los pesos van convergiendo al valordeseado.

2.1.2 Análisis de componentes principales (PCA)El análisis de componentes principales o conocido por su sigla en ingles PCA, es una técnica

estadística que nos permite reducir un conjunto de datos multidimensional a una dimensión menor.Esto se logra encontrando las direcciones de los vectores que maximizan la varianza.

Esta técnica es utilizada principalmente en compresión, extracción de características yvisualización de datos de elevada dimensionalidad, siendo aplicadas en campos tales comoreconocimiento de patrones y compresión de imágenes.

Existe una gran cantidad de algoritmos de PCA para redes neuronales, clasificados en dosgrupos: algoritmos de reestimación (solo con conexiones hacia delante y sus pesos actualizados deuna manera Hebbiana) y algoritmos de decorrelacion (estos poseen conexiones en ambos sentidos).Para el desarrollo de nuestra biblioteca nos centraremos en el Algoritmo Hebbiano Generalizado(GHA) el cual está enmarcado dentro del grupo de los algoritmos de reestimación.

Page 16: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

16

Figura N° 2.4. Aplicación de método GHA en redes neuronales

En la etapa de mapeo de este tipo de red es igual a la mostrada en la figura 2.1, la diferenciaestriba en el cálculo de los pesos, figura 2.4

Este algoritmo utiliza la regla de hebb [5] para el entrenamiento de las redes neuronales nosupervisadas. Sus ecuaciones principales son:

∑=

⋅=n

iii XWY

1( 1.4 )

( ) ( ) ( ) ( )∑−

=

⋅−=1

1

j

iii

T kWkykxkx ( 1.5 )

( ) ( ) ( ) ( ) ( ) ( )[ ]kWkykXkykWkW iiii ⋅−⋅⋅+=+ η1 ( 1.6 )

En las figuras 2.5 y 2.6 se muestran la evolución de los pesos de cuatro componentesprincipales Éstos fueron obtenidos al aplicar el algoritmo GHA a una red neuronal de cuatroentradas y cuatro salidas.

La convergencia de los pesos de las distintas componentes están relacionadas entre si através de la ecuación 1.5. Debido a lo anterior, la convergencia de los pesos de la componente 2depende de la convergencia de los pesos de la componente 1 y así sucesivamente. Lo anterior lopodemos verificar en la figuras 2.5 y 2.6, donde cada línea del eje x representa 1200 iteraciones.

Page 17: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

17

Figura N° 2.5. Evolución de los pesos de las componentes 1 y 2

Figura N° 2.6. Evolución de los pesos de las componentes 3 y 4

Page 18: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

18

2.2. ANÁLISIS DE ALGORITMOS PARA SU IMPLEMENTACIÓN EN VLSI.

Figura N° 2.7. Estructura de distribución en redes neuronales.Tabla 2.1. Ecuaciones Principales LMS y GHA.

Estructura LMS GHA

Mapeo ∑=

⋅=n

iii XWY

1∑

=

⋅=n

iii XWY

1

Aprendizaje( )kdk YYE −= ( ) ( ) ( ) ( )∑

=

⋅−=1

1

j

iii

T kWkykxkx

( ) ( ) kkii XEtwtw ⋅⋅+=+ η1 ( ) ( ) ( ) ( ) ( ) ( )[ ]kWkykXkykWkW iiii ⋅−⋅⋅+=+ η1

En esta sección haremos un pequeño análisis de los algoritmos antes vistos desde el punto devista de su implementación circuital, tomando en consideración el tipo de elementos necesarios quese requieren para su diseño.

Los dos algoritmos antes mencionados los podemos dividir en dos secciones principales:Mapeo o Forward Path, donde se realiza el mapeo de entrada-salida a través de los pesos sinápticosde la red y el Aprendizaje o Feedback Path, donde se realiza la actualización de los pesos mediantelas dos técnicas de actualización ya mencionadas. De esta forma podemos agrupar estas redes en dossecciones (figura 2.7).

Una vez conocido las distintas secciones que conforman una red neuronal (mapeo yaprendizaje), debemos identificar cada una de ellas. De esta forma podremos ver de manera masclara la cantidad de elementos (multiplicadores, sumadores, etc.) necesarios para el diseño eimplementación de una red neuronal.

La tabla 2.1 clasifica cada una de las ecuaciones de los dos algoritmos antes vistos, demanera de identificar las secciones de mapeo y aprendizaje.

Page 19: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

19

Tabla 2.2. Elementos necesarios para LMS y GHA.

Elementos LMS GHA

Multiplicadores n 2·n

Memorias n /por neurona n

n: cantidad de entradas de la red.

Como podemos apreciar en la tabla 2.1, se necesitan solo memoria y multiplicadores para laimplementación de cada uno de estos algoritmos. En el caso de los sumadores, al trabajar en VLSIanálogo, la suma se realiza utilizando la ley de corriente de Kirchhoff, donde la corriente de salidade un nodo es la suma resultante de las corrientes de entradas a él. La tabla 2.2 muestra la cantidadde elementos necesarios para el diseño de las distintas redes según el tipo de algoritmo deactualización.

En resumen:

• La cantidad de multiplicadores necesarios por red depende tanto de la cantidad deentradas a la red como del numero de neuronas del sistema.

• En el caso de las memorias, estas solo dependen de la cantidad de entradas a la red.

Page 20: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

20

CAPITULO III3. INTRODUCCIÓN AL TRANSISTOR DE COMPUERTA FLOTANTE.

El objetivo principal de esta biblioteca es implementar los algoritmos de aprendizaje demaquina en circuitos análogos; dada la precisión que se logra con este tipo de tecnología esnecesario contar con una memoria que almacene los valores análogos resultantes de los cálculosrealizados por estos algoritmos. De aquí la importancia del transistor de compuerta flotante utilizadopara diseñar esta memoria.

La característica principal de este tipo de transistor es la capacidad de mantener en el tiempoun valor determinado de voltaje en el GATE sin necesidad de estar energizado.

Esto se logra aislando el GATE del transistor (poly1) y colocando un segundo poly (poly2)para formar un condensador [2] (figura 3.1). Producto del aislamiento del poly1 los electronesalmacenados en él no se pierden, logrando mantener un valor fijo de voltaje. Modificando lacantidad de electrones en el poly1 podemos aumentar o disminuir el voltaje en el GATE deltransistor [6] [10].

Esté es el principio básico del funcionamiento de un transistor de compuerta flotante. En laactualidad algunos circuitos digitales como las memorias EPROM utilizan este tipo de tecnología.Existen distintas técnicas para extraer o ingresar electrones a la compuerta flotante. En el caso de lasEPROM, se programan mediante impulsos eléctricos y su contenido se borra exponiéndolas a la luzultravioleta (de ahí la ventanita que suelen incorporar este tipo de circuitos), de manera tal que estosrayos atraen los elementos fotosensibles modificando su estado. Cada transistor dentro de lamemoria tiene una compuerta flotante de SiO2 (sin conexión eléctrica) que en estado normal seencuentra apagado y almacena un 1 lógico. Durante la programación, al aplicar una tensión (10 a25V) la región de la compuerta queda cargada eléctricamente, haciendo que el transistor seencienda, almacenando de esta forma un 0 lógico. Este dato queda almacenado de formapermanente, sin necesidad de mantener la tensión en la compuerta ya que la carga eléctrica puedepermanecer por un período aproximado de 10 años.

En el caso de la memoria a implementar en la biblioteca, ésta ocupa dos métodos distintos alos antes mencionados para realizar la inyección y extracción de electrones dentro del GATE, estosson:

• Túnel de Electrones (Electrón Tunneling).

• Inyección de Electrones (Electrón Injection).Una de las ventajas de estos métodos con respecto al anterior radica en la cantidad de

electrones que se extraen o inyectan en la compuerta flotante. De esta forma podemos almacenarvalores intermedios al 1 o 0 lógico, lo cual es fundamental dentro de una memoria análoga.

Al implementar este tipo de transistor en el diseño de algoritmos de aprendizaje de máquina,se logran las siguientes ventajas [2]:

• Almacenamiento no volátil de los pesos análogos.

• Actualización bidireccional de los pesos.

• Escritura y lectura simultanea de memoria.

Page 21: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

21

Figura N° 3.1. Vista Física de un transistor de compuerta flotante

Figura N° 3.2. Vista lateral del transistor de compuerta flotante

Page 22: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

22

3.1. TÚNEL DE ELECTRONES (ELECTRON TUNNELING)

Como muestra la figura 3.1, el transistor de compuerta flotante esta compuesto por dostransistores pmos, uno de ellos se encuentra cortocircuitado formando un condensador en el cualocurre el fenómeno de túnel de electrones. Este fenómeno se logra debido a que el transistorutilizado para el condensador consta con una capa de oxido entre el canal y el poly1 mas delgadaque en un transistor normal. De esta manera facilita el traspaso de electrones a través del oxido,como muestra la figura 3.2.

El fenómeno de túnel de electrones, se produce en la capas de SiO2 muy delgadas que estánexpuestas a cambios de voltaje, corriente o temperatura, en el análisis de Fowler-NordheimTunneling (FNT) [7] [12] explica en forma mas detallada este fenómeno.

Los electrones que conforman el SiO2 cambian sus características al estar expuestos avariaciones de voltaje. En el caso del transistor, esto se lleva a cabo al cambiar el valor del voltaje(Vtun) en el condensador formado por el transistor pmos (el pmos cortocircuitado en figura 3.2).Debido a esta variación de voltaje, se provoca una ruptura en el campo magnético de la capa deSiO2, lo que provoca un cambio en las bandas de energía (figura 3.3) facilitando el paso deelectrones a través de él. Esta diferencia potencial formada entre el n-well del transistor y poly1hace que se reduzca el grueso del oxido (SiO2) facilitando que el electrón se desplace hacia el n-wellformando un túnel de electrones entre estas dos partes. De esta forma logramos sacar electrones delcondensador, como lo muestra la figura 3.2.

Al formarse el túnel debido al fenómeno de fowler-nordheim tunneling se genera unacorriente a través del pmos cortocircuitado, la cual depende del voltaje a través del oxido del GATEen el pmos al n-well, así como del tamaño del transistor (ancho W y largo L). La magnitud de lacorriente que circula a través de la capa de SiO2 esta gobernada por la ecuación 3.1 [6]:

−⋅⋅⋅−=

ox

ftuntun V

VLWII exp0 ( 3.1 )

Donde 0tunI es una corriente pre-exponencial inicial, oxV es el Voltaje a través del oxido, y

fV es una constante que varia con el ancho del oxido. W y L son el ancho y el largo del túnel en elpmos (en micrones) respectivamente.

Figura N° 3.3. Transición de la Banda de Energía en la capa de oxido (SiO2).

Page 23: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

23

3.2. INYECCIÓN DE ELECTRONES (ELECTRON INJECTION).

El fenómeno de inyección de electrones o como su sigla en ingles IHEI (impact-ionized hot-electron injection [2] [6]) lo utilizamos para aumentar el número de electrones en el poly1 y de estaforma logramos que el voltaje en el GATE disminuya, este fenómeno ocurren el pmos que no estacortocircuitado (transistor del lado izquierdo en la figura Nº 3.2).

Según lo demostrado en el diagrama de Banda-Energía de figura Nº 3.4 [2], los huecos delcanal formado entre el DRAIN-SOURCE son acelerados en la región de agotamiento (Depletion)del transistor chocando contra el enrejado del semi-conductor. Cuando el campo eléctrico formadoen el canal es grande una parte de los hueco que chocan contra el enrejado generan un par deelectrón-hueco adicional, estos electrones ionizados y llevados a la banda de conducción por lacolisión son expelidos del canal por el campo eléctrico producido cuando el voltaje supera los 3.1[eV] debido a su energía cinética. Si el electrón es expelido hacia el óxido de la puerta y superar ladiferencia 3.1 [eV] que separa las bandas de conducción entre el Si y el SiO2 este es inyectado en elSiO2, el cual una vez allí es recogido por el GATE [2].

Los electrones que son inyectados en el GATE generan una corriente hacia el canal formadoentre el SOURCE-DRAIN, pero en la literatura no existe un modelo simple que explique elfenómeno de inyección de electrones (IHEI), es por esto que se utilizara el modelo [2] el cualdescribe este fenómeno en términos de voltaje, esta es una ecuación semi-empírica:

( )

⋅+

+−⋅⋅= sd

gdsinj V

VII λ

δβ

α 2exp ( 3.2 )

Donde Is es la corriente en el SOURCE, Vgd es el voltaje entre el GATE-DRAIN en elpFETs, y Vsd es el voltaje entre el SOURCE y el DRAIN. , , y son parámetros ajustables. Elparámetro = 1 que incluimos en la ecuación (3.2) para la consistencia de las unidades.

Figura N° 3.4. Diagrama de banda del electrón [10]

Page 24: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

24

El par adicional de electrón-hueco generado por la ionización por impacto en el canal através del DRAIN en la región de empobrecimiento son recogidos por el terminal del well/source ypor el DRAIN del pFET, respectivamente, generando una corriente adicional a través del WELL,para incluir esta corriente dentro del modelo se uso una expresión semi-empírica basada en modelosPMOS de corriente en el sustrato [2]:

( )

+⋅−⋅−⋅+⋅−⋅⋅=

tsgsdtsgsdsb VVV

VVVIIκγλ

κγη exp ( 3.3 )

Donde Ib y Is son las corrientes en el WELL y el SOURCE, y Vsd y Vsg son los voltajes entreel SOURCE-DRAIN y SOURCE-GATE, respectivamente. , , y son parámetros ajustables.

Page 25: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

25

CAPITULO IV4. HERRAMIENTAS CAD PARA DISEÑO VLSI

Para realizar una biblioteca que nos permita poder implementar de manera correcta ycoherente todo tipo de algoritmos, primero que todo, es necesario tener plena seguridad que elsoftware CAD que se utilice para diseñar los circuitos implementen fielmente las reglas de diseño, yademás las simulaciones asociadas a los distintos circuitos sean coherentes con el modelo diseñado.

Los software escogidos para la realización de esta biblioteca son: ELECTRIC, el cual nospermite realizar el diseño esquemático y físico de cualquier tipo de circuito y LTSpice, programaencargado de simular el netlist extraído de ELECTRIC ya que este no cuenta con esta característica.

4.1. EL DISEÑO FÍSICO

El diseño de un circuito en VLSI consiste en dos pasos fundamentales una vez fijado elalgoritmo que deseamos implementar: el diseño del esquemático del circuito y posteriormente eldiseño del layout el cual es el que finalmente se envía para su fabricación.

Existen distintas empresas dedicadas a la fabricación de chips, así como distintas reglasasociadas a los distintos procesos de fabricación, es por esto, que para evitar rehacer las reglas porcada proceso de fabricación, se utilizaran procesos con reglas escalables donde solo existe una únicaunidad de medida. Esta unidad la llamaron LAMBDA ( ), la cual permite escalar las distinta reglas,el valor de LAMBDA corresponde a la mitad del ancho mínimo del canal, dependiendo de procesode fabricación con el que se este trabajando. En nuestro caso, trabajaremos con las reglas MOSISTSMC 0.35 m [3] y el valor de LAMBDA es 0.2 [ m].

Es por lo anterior que para un buen diseño físico el software CAD que se utilice debemanejar correctamente las reglas y el valor de LAMBDA de esta manera evitaremos sorpresasdespués de la fabricación generadas por alguna regla no considerada o por haber considerado otrovalor de LAMBDA (estas dos razones pueden implicar que dentro de la pastilla se genere un cortocircuito no deseado entre dos elementos al haber roto o no considerado una regla, ya sea: metal,poly, etc…).

4.2. SIMULACIONES

La simulación de los distintos circuitos es fundamental, ya que nos permiten verificar si losalgoritmos implementados cumplen exactamente con nuestros requerimientos, como por ejemplocantidad de corriente que circula, amplitudes, voltajes, etc. Debido al problema que presentaELECTRIC como lo habíamos mencionado, se busco otro software que complementara estafalencia, es por esto que encontramos el LTSPICE en su versión gratuita. Este software cumple contodas nuestras necesidades, dentro de las cuales permite leer y simular el Netlist1 que se extrae desdeELECTRIC.

4.3. ELECTRIC

Este es un software CAD Open Source [4], trabaja con elementos físicos previamentediseñado y los cuales para beneficio nuestro pueden ser modificados, tanto físicamente como laspropias reglas de diseño: distancias, traslape, tipos de materiales, contactos, etc. Nuestra única

Page 26: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

26

desventaja dentro de este software, no permite realizar las simulaciones de SPICE, pero permiteextraer el Netlist que puede ser utilizado en otro software que realice esta acción.

A continuación se realizara una descripción general del programa, y como utilizar cada unode sus componentes en la diseño de un circuito.

4.3.1 Creación de CeldaLa celda es la base sobre la cual se realizara el circuito, sobre esta van todos los elementos,

conexiones, nodos, nombre que identifican y caracterizan el circuito. Cuando el software es iniciadoeste no contiene esta celda (esto lo verificamos dado que la ventana de trabajo dice No cell in thiswindow, figura Nº 4.1), esta debe ser creada.

La Celda va alojada dentro de la biblioteca, esta es la que el usuario guarda en el disco duro.Una biblioteca puede contener todos los tipos de celdas permitidos por el software tales como:Celdas de esquemáticos, layout, iconos, etc.

Figura N° 4. 1. Ventana de inicio de Electric

Page 27: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

27

Figura N° 4.2. Ventana de manipulación y creación de celdasEn la Figura Nº 4.1 el campo (1) identifica el menú de acceso a las distintas funciones del

software, en la segunda parte tenemos los botones de acceso rápido (2) dentro de los cuales se ubicalos botones tales como Abrir, guardar, Zoom, medición de distancias, aumento e incremento deldesplazamiento en LAMBDA, tipo de selección de objetos, deshacer, rehacer, vistas y visualizacióndentro de jerarquías. En el campo (4) vemos un menú de acceso rapdio, este contiene tres pestañaslas cuales cumplen funciones, tales como, Explorador de biblioteca, tipo de tecnología que se estausando, explorador de capas visibles (muestra que capas son las que se visualizan en la celda), en elcampo (5) vemos la pantalla de mensajes, tanto de errores como de sucesos que se realicen.

Para crear una celda debemos ir al menú Cell y presionar New Cell… una vez ejecutada estaacción aparece el dialogo mostrado en la figura Nº 4.2.

La ventana mostrada en la figura Nº 4.2 se ocupa para distintos propósitos dentro de lacreación de una nueva celda. En esta figura vemos que el campo (1) nos indica el nombre de lalibrería donde será creada la celda, en el campo (2) colocamos en nombre de la celda, en el campo(3) escogimos el tipo de celda que va trabajar, dentro de la cuales tenemos layout (diseño físico),schematic (diseño esquemático) e iconos (estas tres son las que utilizaremos para el diseño de labiblioteca), y otras que por el momento no son de importancia. El campo (4) nos indica el tipo detecnología que se utilizara, el campo (5) se escoge si queremos que la celda se visualice en unaventana distinta de la principal este botón se utiliza cuando queremos tener la visión de dos celdasen forma simultanea. Finalmente luego de haber escogido las opciones presionamos OK, ya hemoscreado nuestra celda de trabajo. Es importante mencionar que los elementos que se van a utilizar seseleccionan en forma automática de pendiendo del tipo de celda que se deseé crear, por ejemplo siseleccionamos una celda layout en el campo (3), automáticamente aparecerán los distintoselementos necesarios para crear una celda de layout, en el lado izquierdo de la figura 4.1 campo (4). Ya tenemos creada una celda ahora necesitamos crear un circuito. Bueno para esto debemosseleccionar los elementos de la barra izquierda de la ventana principal (figura Nº 4.1, campo (4)) yposteriormente con un click del mouse sobre la ventana creada aparecerá el elemento creado. Paraunir los distintos elementos creados en la celda debemos seleccionar el elemento verificando que seresalte el EXPORT (mas adelante se explicara esta función) de la puerta que queremos unir, luegoun click con el botón derecho del mouse sobre el EXPORT del siguiente elemento a unirautomáticamente se crea la una unión entre el elemento que seleccionamos primero y el queacabamos de seleccionar con el botón derecho, el tipo de unión se selecciona automáticamente

Page 28: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

28

según los tipos de elementos que hemos unido, para el caso de la celda Layout puede ser de variostipos, así como por ejemplo metal1, poly1, poly2, etc. Esto depende del tipo de conexión quepermita el elemento dado que un elemento puede tener mas de una conexión, si la conexión que escolocada automáticamente por el programa no es la que deseamos debemos previamente seleccionarel tipo de conexión en la barra figura 4.1 campo (4) y posteriormente realizar la unión. En el casodel esquemático solo existe un tipo de conexión así que no tendremos este problema.

Dentro de las características de ELECTRIC existe la posibilidad de unir distintas celdasdentro de una celda base, de tal forma de realizar un circuito mas complejo utilizando celdasprediseñadas, para introducir una celda contenida en otra biblioteca o en la misma que estamostrabajando debemos llamar la función que se ubica en el menú principal, en Cell.. → Place CellInstante… una vez escogido esto, podemos visualizar la creación de instancias, figura 4.3.

Como vemos en la figura 4.3 la ventana de creación de instancias consta de 3 camposfundamentales de los cuales el primero (1) identifica la biblioteca donde se desea buscar la celda acolocar, el segundo (2) nos indica que tipo de celdas queremos ver (tipo de vista, celdas de layout,esquemático, etc.) y el tercero (3) nos indica las celdas disponibles de la biblioteca seleccionada y dela vista seleccionada, posteriormente se presiona New Instance para crear la instancia en la celdabase dejando la posibilidad de escoger otra para colocar o New Instante &Close para seleccionar lacelda y cerrar la ventana.

Ahora bien para realizar la unión entre estas distintas celdas se debe contar con un puente deconexión encargado de unir las distintas partes del circuito. Esto lo podemos realizar creando unainstancia en un nodo de conexión dentro del circuito él cual se denomina Export (como antes lohabíamos mencionado), la función fundamental de esta puerta es crear un nexo de conexión para launión de varias celdas visualizadas dentro de otra celda.

Para crear un Export primero debemos seleccionar el nodo del elemento donde se quierecolocar un Export y posteriormente ir a Menú Export → Create Export… , inmediatamente despuésaparece la ventana de la figura 4.4.

Figura N° 4. 3. Ventana de creación de Instancias

Page 29: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

29

Figura N° 4.4. Ventana de creación de export.

En el campo (1) colocamos el nombre que deseamos darle al Export y en el campo (2) el tipode Export que deseamos, dentro de los cuales puede ser Export de entrada Input o salida Out, entreotros. Esta característica es importante debido a que facilita el diseño, por ejemplo, un circuito queno tenga tierra con el solo hecho de que tenga un Export con esta característica el programa asumiráque esta es la tierra sin necesidad de colocar un elemento de tierra que esta disponible en loscomponentes del esquemático.

Bueno ya hemos visto en su forma básica la conexión y creación de un circuito, ahoratenemos que ver si el elemento que hemos creado cumple con las normas de conexión. Para realizaresta verificación debemos ir a Menú Tools → DRC → Check Hierarchically, luego si existe algúnerror en las conexiones en la ventana de mensajes de la parte inferior de la figura 4.1 campo (5)aparecerá le mensaje de error indicando que regla no se esta cumpliendo, si presionamos las teclas <o > podemos ir verificando los distintos errores, si hay mas de uno en el circuito, los cuales seresaltan dentro del esquemático o layout que los contenga.

Una vez realizada las verificaciones de las reglas podemos chequera si el diseño físico esigual al diseño esquemático. La mayoría esta familiarizado con el diseño esquemático y la forma quetienen cada uno de sus elementos, y no con su forma real dentro de un chip, es por esto que Electricnos permite realizar de manera rápida y concisa esta verificación. De esta forma estar 100% segurosque el diseño físico es igual al diseño esquemático (LVS: es la sigla en ingles, Layer v/sSchemaquic, es decir comparación entre diseño físico y el diseño esquemático).

Dentro de electric existen dos maneras de verificar el LVS, estas son:

• Celdas con Igual nombre:En este caso, las celdas que tienen igual nombre y distintas vistas, ELECTRIC las agrupa en

una sub-categoría con el mismo nombre de la celda.

Para realizar la verificación LVS debemos ir a Menú Tools → NCC → Schematic andLayout View of Cell in Current Windows. Este comando realiza el LVS a la celda que se estevisualizando en la ventana principal del programa.

• Celdas con Distinto Nombre:Existen ocasiones en que tenemos dos celdas con distintos nombres y vistas para circuitos

iguales, en este caso para realizar el LVS a las celdas se deben visualizar en distintas ventanas cadauna de las celdas mediante el comando Menú View → Edit… View, posteriormente utilizamos elcomando que se encuentra en Menú Tools → NCC → Cell from two Windows.

Si la comprobación es correcta en la ventana de mensajes, figura 4.1 campo (5), aparecerá:Hierarchical NCC every cell in the design: cell 'Prueba_2{sch}' cell 'Prueba_1{lay}'

Page 30: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

30

Comparing: Prueba:Prueba_2{sch} with: Prueba:Prueba_1{lay}

exports match, topologies match, sizes match in 0.0 seconds.

Summary for all cells: exports match, topologies match, sizes match

NCC command completed in: 0.015 seconds.

En el caso contrario que estas no sean iguales veremos la ventana que se muestra en la figura4.5. En el campo (1) vemos si error es en los export o en la conexión, en los campos (2) y (3)vemos en que parte del layout y esquemático se encuentran estos errores, respectivamente.

Finalmente aplicando todo lo anterior podremos lograr un diseño, tanto en su parteesquemática como en su layout. La Figuran 4.6 muestra el diseño final de una compuerta NOT ensus dos vistas, esquemático y Layout.

Figura N° 4.5. Ventana de errores en LVS

Figura N° 4.6. Diseño de un not en su parte esquemática y física

Page 31: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

31

Figura N° 4.7. Configuración Extracción Spice.

Posterior al diseño de cualquier compuerta debemos configurar ELECTRIC para podersimular nuestro circuito.

En primera instancia debemos configurar los parámetros de simulación, tales como, libreríasadicionales, resistencias y capacitancias parásitas, modelos, tipos de modelo, tipo de motor spice,etc. Para realizar esto debemos presionar el botón de preferencias en la barra de acceso rápido figura4.1 o en Menú Files → Preferences..., luego aparecerá la ventana mostrada en la figura 4.7.

Dentro de la figura 4.7 vemos marcados cinco campos importantes, el campo (1) se utiliza paradefinir el Nivel spice del Netlist, tipo de motor spice y el forma del formato de salida, el campo (2)es utilizado cuando queremos incluir los parasiticos dentro del netlist (estos son colocados cuando lacelda que estamos extrayendo es de tipo Layout) a través de esta característica podemos ver cuantoinfluyen los parasiticos en la simulación y realizar una simulación mas real del proceso, el campo(3) es para incluir el programa de simulación, si el programa de simulación spice corre en línea decomando entonces ELECTRIC crea el Netlist se lo pasa como parámetro al programa de simulación,sin tener la necesidad de hacer esto en forma manual. Los campo (4) y (5) son utilizados para incluirmodelos, librerías o sub-circuitos que se encuentren en un archivo de texto. Estos quedan incluidosen el Netlist como un .INCLUDE. Al colocar este archivo en el campo (4) el

Page 32: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

32

Figura N° 4.8. Circuito listo para simulación Spice.

INCLUDE se coloca en la cabecera del netlist y al colocarlo en el campo (5) queda incluido en finaldel netlist.

Una vez configuradas las preferencias de simulación debemos agregar a nuestra celda losdistintos elementos SPICE necesarios para la simulación, tales como fuentes de poder, análisistransiente, análisis DC, fuentes de pulso, etc. estos elementos los encontramos en la parte izquierdade la ventana principal figura 4.1 campo (4) en la pestaña que dice SPICE, como lo muestra la figura4.8.

Luego de haber configurado y alimentado nuestro circuito procedemos a extraer el Netlistpara su posterior simulación, para esto vamos a Menú Tools → Simulation (SPICE) → WriteSPICE deck...OBS:

El desarrollo antes mostrado muestra la forma básica de cómo utilizar el programa, paramayores referencias ir al manual del programa.

Page 33: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

33

4.4. LTSPICE

LTspice es un software de simulación de descarga gratuita que encontramos enhttp://www.linear.com/company. Es un simulador de alto rendimiento enfocado a simulación decircuitos SPICE III, además nos permite visualizar, capturar y guardar distintas formas de ondasobtenidas de la simulación de circuitos, tanto de esquemáticos realizados en el propio programacomo de netlist obtenidos de otros programas. Su versatilidad y fácil manejo nos permite realizarsimulaciones rápidas y con baja complejidad en la configuración del software.

Como se muestra en la figura 4.9 existen 4 campos de interés, en el primero (1) vemos elmenú de acceso a las distintas características, tales como preferencias, herramientas, tipos de vista,etc. en el campo (2) vemos un menú de acceso directo el cual puede ser configurado en el panel decontrol según la necesidad del usuario, además provee de elementos prediseñado en el caso quedeseemos realizar un circuito esquemático en este programa, el campo (4) es la ventana principaldonde se aloja tanto el netlist como los gráficos de las distintas simulaciones.

Un punto importante a considerar antes de la simulación es configurar bien los parámetrosSPICE, es por esto que en la figura 4.9 se muestra el campo (3) (panel de control), en la parte deconfiguración SPICE. Aquí podemos apreciar parámetros de configuración importante a la hora dela simulación, tales como el Reltol, este parámetro me indica la tolerancia del error dentro de lasimulación, la calidad con que quiero que se realicen los cálculos en mi simulación. Ademástenemos parámetros como el Trtol el cual para la mayoría de los simuladores comerciales utiliza unparámetro 7, en el caso de LTspice viene por defecto 1, este parámetro afecta directamente al tiempode muestreo y por ende en la calidad de la simulación, un valor mayor de 1 en Trtol puede llevarmas rápido a una solución, pero este podría aumentar la inexactitud del resultado.

Figura N° 4.9. Programa LTSpice

Page 34: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

34

Una vez realizadas las configuraciones anteriores podemos proceder a cagar nuestro netlistproveniente de ELECTRIC, para cargar este tipo de archivo se debe ir a Menú Open y seleccionartipo de archivo Netlist. Una vez cargado el archivo procedemos a correrlo en la opción SimulationRun.

Al correr la simulación nos podemos encontrar con dos casos: El archivo netlist contieneerrores, en cuyo caso debemos ir a menú Views → SPICE error log... aquí aparecerá un archivodescribiendo el tipo de error y la parte donde se genero, y si nuestro netlist esta correcto apareceráun menú de dialogo que nos muestra los voltajes y corriente disponibles para este circuito, figura4.10.

Cada uno de los voltajes y corrientes trae sus correspondientes nombres asociados a losdiferentes export que se crearon en ELECTRIC. Una vez escogido la o las formas de onda quequeremos visualizar se despliega un grafico como se muestra en la figura 4.12, parte superior.Además situándonos con el cursor sobre el grafico y presionando el botón derecho del mousepodemos desplegar el menú que se muestra en la figura 4.11.

Figura N° 4.10. Programa LTSpice opciones de visualización

Page 35: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

35

Figura N° 4.11. Menú de visualización.

En la figura 4.11 lado izquierdo vemos un menú con distintas opciones: zoom, adición deplot, grid, adición de curvas, etc. en esta ultima nos detendremos un poco (Add Trace). Estacaracterística nos provee de una herramienta fundamental en el momento de la visualización de laforma de onda deseada, al presionar sobre Add Trace aparece el menú que se encuentra a la derechade la figura 4.11, aquí visualizamos tres campos importantes: Ventana superior, nos sirve paravisualizar en Avilable data solo las ondas que nosotros deseemos, por ejemplo, si escribimos Vautomáticamente en la sección Avilable data aparecerán solo las variables que contengan la letra V.Ventana Expression(s) to add, aquí podemos realizar formulas donde incluyan las distintas corrientey o voltajes del circuito, como por ejemplo, ( ) ( ) ( )( )sIxoutVinV exp⋅+ .

Cada vez que corremos la simulación del netlist nos aparece la ventana que se muestra en lafigura 4.10 y posteriormente debemos elegir el tipo de onda que deseamos visualizar, ahora bien, siestamos modificado el netlist y queremos ver la evolución de la misma forma de onda una y otravez, es una perdida de tiempo estar escogiendo la forma de onda cada vez que corrimos lasimulación. Para evitar esto debemos escoger la forma de onda, luego seleccionar el grafico o laventana donde se encuentran los gráficos, automáticamente en el menú superior aparecerá unaopción llamada Plot Settings, luego tienes que ir a Save plot settings y guardar la configuración enun archivo con el mismo nombre del netlist pero con extensión PLT, ahora cada vez que corras esenetlist aparecerá en forma automática las formas de onda escogidas para la visualización. Si deseasescoger otras formas de onda, puedes eliminar el archivo con extensión PLT o bien seleccionar otrasformas de onda y volver a guardarlas, rescribiendo el archivo antiguo.

Hemos presentado en forma clara y concisa la manera de utilizar LTspice para la simulaciónde netlist extraídos desde ELECTRIC. A continuación presentaremos un ejemplo de simulación deuna compuerta NOT realizada en ELECTRIC y cuyos resultados son presentados en la figura 4.11,además veremos otras características de LTspice de gran utilidad dentro de la obtención deresultados.

Page 36: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

36

Figura N° 4.12. Visualización de formas de onda

Figura N° 4.13. Activación de cursoresLTspice permite visualizar valores en forma instantánea sobre las curvas obtenidas en la

simulación, esto se realiza colocando el Mouse sobre el valor deseado y presionando con el botónderecho nos muestra la figura 4.13.

En el campo (1), muestra el color de la línea, el cual podemos cambiar, en el campo (2) lacantidad de cursores que colocaremos sobre la onda (como máximo dos). Estos cursores permitenmedir tanto valores de voltaje, corriente y tiempo, así como también deltas de tiempo y amplitud,pendiente, frecuencias, figura 4.14.

Page 37: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

37

Figura N° 4.14. Medición utilizando cursores

Page 38: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

38

CAPITULO V5. DISEÑO DE CELDAS DE LA BIBLIOTECA

Dentro del diseño de las distintas partes que conforman la biblioteca, existen pequeñoscircuitos o mejor dicho sub-circuitos que son de gran importancia al momento de realizar el diseñode un circuito. Estos sub-circuitos se utilizan para completar circuitos de mayor tamaño comoamplificadores operacionales o multiplicadores análogos

Dentro de estos sub-circuitos tenemos: espejos de corrientes, pares diferenciales, diodosformados con transistores CMOS, entre otros. Es por esto que previo al diseño de los elementosfundamentales que conforman nuestra biblioteca daremos un pequeño vistazo a estos circuitos.

5.1. DIODO CMOS.

Para diseñar un diodo con utilizando un transistor CMOS se debe unir el GATE con elDRAIN o SOURCE según el tipo de transistor como se muestra la figura 4.1 (a) y 4.1 (b), de estaforma obtenemos una la curva característica de I v/s V del transistor similar a la de la juntura PN deldiodo, como se muestra en la figura 4.1 (c).

Esta curva característica mostrada en la figura 4.1 (c), al unir el GATE con el DRAIN, estoasegura que el transistor trabaje en la región de saturación y por lo tanto la corriente que circula através del DRAIN esta dada por la ecuación 4.1 [9]:

( ) ( )22

22'

TGSTGSD VVVVLWKII −⋅=−⋅

⋅⋅

==β

( 5.1 )

βD

DSDSGSIVVVV ⋅+=== 2 ( 5.2 )

A este diodo a demás se le llama resistencia activa, utilizado generalmente para polarizar ofijar un valor de voltaje determinado en un circuito.

Figura N° 5.1. Diodos tipo CMOS. (a) Transistor canal n. (b) Transistor canal p.(c) curvacaracterística Iv/sV.

Page 39: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

39

5.2. ESPEJO DE CORRIENTE.

Figura N° 5.2. Espejos de corriente tipo CMOS. (a) Espejo de corriente NMOS. (b) Espejode corriente PMOS.

Figura N° 5.3. Espejo de corriente nmos El espejo de corriente es utilizado para fijar la corriente que circula a través del un transistorCMOS por medio de una corriente de referencia, los modelos típicos de espejos de corriente semuestran en la figura 5.2.

Como muestra la figura 5.2 (a) y (b), el espejo de corriente esta compuesto por un transistory un diodo CMOS; la corriente I0 o corriente reflejada que circula por el transistor CMOS escontrolada por la corriente que circula a través del diodo CMOS, para lograr que I0 sea igual oaproximadamente igual a la corriente IREF, el tamaño de los transistores debe ser igual o parecido, deaquí vemos que M1 está en la saturación porque VDS1 = VGS1 y si asumimos que VDS2 VGS2-VT2,esto permite que utilicemos las ecuaciones en la región de la saturación de los transistores CMOS.En el caso más general, el cuociente de I0 a IREF está dado por la ecuación 5.3 [9].

⋅+⋅+

−−

= '

1

'2

1

2

2

1

2

21

210

11

KK

VV

VVVV

LWWL

II

DS

DS

TGS

TGS

REF λλ

( 5.3 )

De la ecuación 5.3 y asumiendo que los transistores M1 y M2 son iguales, podemos ver quela corriente I0 IREF debido que el voltaje fijado en el GATE de ambos transistores es el mismo.

Page 40: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

40

5.3. PAR DIFERENCIAL.

Figura N° 5.4. Par diferencial pmos El par diferencial es un sub-circuito utilizado en distintos circuitos dada sus distintasaplicaciones, en la figura 5.4 se muestra un par diferencial construido con transistores NMOS.

De la figura 5.4, vemos claramente que este tipo de circuito relaciona la corriente que circulapor M1 y M2 con el voltaje aplicado en V1 y V2, así como también por ley de Kirchhoff la corrienteque circula por Iss es la resultante de la suma de las corrientes I1 e I2. A continuación se muestra eldesarrollo matemático de las ecuaciones que gobiernan al Par Diferencial; como en los casosanteriores asumimos que M1 y M2 son iguales. Para comenzar definimos:

21

12

IIIVVV

ss

d

+=−=

( 5.4 )

Dado que los transistores M1 y M2 son iguales, podemos definir las corrientes I1 y I2,mediante la siguiente ecuación.

( )

( )22

'

2

21

'

1

2

2

TGS

TGS

VVL

WKI

VVL

WKI

−⋅≈

−⋅≈( 5.5 )

Desarrollando las ecuaciones 5.5 obtenemos lo siguiente:

( )

( )TGS

TGS

VVL

WKI

VVL

WKI

−⋅≈

−⋅≈

2

'

2

1

'

1

2

2( 5.6 )

Aplicando un pequeño desarrollo matemático y utilizando lo descrito en la ecuación 5.4obtenemos:

Page 41: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

41

dVL

WKII ⋅⋅≈−2

'

21 ( 5.7 )

Finalmente utilizando las ecuaciones 5.7 y 5.4, podemos redefinir las corrientes I1 e I2 enfunción del voltaje aplicado en los transistores M1 y M2 así como de la fuente corriente Iss.

LWK

I

VVI

LWKII

LWK

I

VVI

LWKII

d

d

d

d

−⋅

⋅⋅⋅−≈

−⋅

⋅⋅⋅+≈

'

2

'

2

'

2

'

1

21222

21222

( 5.8 )

De las ecuaciones 5.8 vemos que si Vd = 0, entonces:

GSGSGS VVV

III

==

==

21

21 2 ⇒ ( )2'

22 TGS VVL

WKI−⋅= ( 5.9 )

Ahora bien utilizando la ecuación 5.9 podemos re definir las ecuaciones 5.8, de esta forma lacorriente que circula por I1 e I2 queda dependiente solo de voltajes aplicados a los transistores M1 yM2 respectivamente.

( ) ( )

( ) ( )2

2

2

2

2

1

2122

2122

TGS

d

d

TGS

TGS

d

d

TGS

VV

VV

VVIII

VV

VV

VVIII

−⋅

−−≈

−⋅

−+≈

( 5.10 )

De las ecuaciones antes mencionadas podemos ver que para pequeños valores de Vd, lasecuaciones 5.10 pasan a comportarse de la siguiente manera.

( )

( )

−−≈

−+≈

22

22

2

1

d

TGS

d

TGS

VVV

III

VVV

III( 5.11 )

Page 42: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

42

Figura N° 5.5. Curva Par diferencial

De aquí podemos ver que cuando 0, 21 == III ss , o viceversa, además el valor máximo de Vd

esta dado por:

( )TGSd VVV −⋅≈ 2max ( 5.12 )

Ahora con las ecuaciones 5.11 y 5.12 podemos graficar el comportamiento del pardiferencial.

Como se aprecia en la figura 5.5 existe una dependencia lineal entre la corriente por lasramas del par diferencial y el voltaje aplicado en los transistores, pero esta deja de ser línea a medidaque se aumenta el voltaje producto del termino cuadrático en la ecuación 5.10.

5.4. DISEÑO DEL MULTIPLICADOR DE GILBERT.

Un poco de historia, en 1968 el ingeniero de Tektronix, Barrie Gilbert, trabajando en unoscilador de alta frecuencia fue el primero en demostrar que se pueden usar transistores bipolarespara obtener señales de alta calidad en un multiplicador análogo de cuatro cuadrantes o celda deGilbert. Posteriormente en 1982 las ideas y topologías fueron aplicadas en el diseño del mismomultiplicador pero ahora con transistores NMOS, figura 4.6. El multiplicador de Gilbert, satisface laexpresión Z = const · X · Y.

Escogimos este multiplicador para incluirlo en nuestra biblioteca debido a sus característicasy su sencillez en el diseño de compuertas análogas.

Page 43: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

43

Figura N° 5.6. Versión CMOS del multiplicador de Gilbert

El la figura 5.6 se muestra el esquemático de la celda básica de Gilbert o multiplicador decuatro cuadrantes. Se denominan multiplicadores de cuatro cuadrantes a aquellos que aceptanseñales en su entrada de ambas polaridades y conservan la polaridad correcta en la señal de salidadel multiplicador. Esto se logro utilizando un par diferencial para el diseño del circuito demultiplicación, dado que la matemática involucrada en el desarrollo de las ecuaciones del pardiferencial arroja un termino no deseable en la multiplicación de señales, se implemento un circuitocomo se muestra en la figura 5.6 el cual cuenta con dos etapas de multiplicación simples y cuyassalidas se restan de manera de eliminar los términos indeseables en el resultado de la multiplicación.A continuación se presentara una descripción básica de la matemática involucrada en elmultiplicador de Gilbert.

Asumiendo que todos los transistores son polarizados en la región de saturación y son de lamedida, y sus parámetros de transconductancia satisfacen K1 = K2 = K3 = K4 = Ka y K5 = K6 =Kb,podemos definir la corriente de salida como I0 = I2 – I1 = – (I2b + I2a) – (I1a + I1b) [8], se redefinió lacorriente I0 de la siguiente forma:

⋅⋅

−⋅−⋅⋅

−⋅⋅⋅⋅=4

2

43

2

30 21

212

IVKI

IVKIVKI xaxa

xa ( 5.13 )

Asumiendo que:

12 3

2

<<⋅⋅IVK xa y 1

2 4

2

<<⋅⋅IVK xa

Podemos redefinir la ecuación 5.13 de la siguiente manera donde I0 depende linealmente deVx:

( ) xa VIIKI ⋅−⋅⋅≅ 430 2 ( 5.14 )

Las corrientes I3, I4 pueden ser expresadas por Vy, dado que Vy esta dada por:

Page 44: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

44

( )431 IIK

Va

y −⋅= ( 5.15 )

Reemplazando (4.3) en la ecuación (4.2), obtenemos la siguiente expresión:

yxba VVKKI ⋅⋅⋅⋅≅ 20 ( 5.16 )

Finalmente vemos que la ecuación (5.16) representa la corriente de salida en unmultiplicador análogo ideal.

La ecuación 5.16 se obtuvo a partir del supuesto que los voltajes xV y yV , son pequeñosmenores a 100[mV], caso contrario esto voltajes pierden su linealidad pasando a constituir unafunción tangente hiperbólica, como muestra la ecuación 5.17, donde la ecuación 5.16 quedaríaexpresada por:

( ) ( )yxba VVKKI tanhtanh20 ⋅⋅⋅⋅≅ ( 5.17 )

Es por esto que la curva de multiplicación en un multiplicador de gilbert esta dada por lafigura 5.7.

Figura N° 5.7. Curva de transferencia DC del multiplicador de Gilbert [8]

Page 45: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

45

5.4.1 Diseño Esquemático y layout en ELECTRIC

Figura N° 5.8. Esquemático del multiplicador de Gilbert

En la figura 5.8 se muestra el diseño final del esquemático obtenido a partir de la figura 5.6.Como se aprecia en la figura 5.8 la fuente de corriente mostrada en la figura 5.6 es diseñada por untransistor NMOS (M8) controlada por un espejo de corriente M7 el cual a su vez cuenta con undiodo CMOS M11 que fija el valor de corriente que circula a través de M7, además las corriente I1 eI2 están distribuidas en forma igualitaria por un espejo de corriente PMOS formado por lostransistores M9 y M10.

Una vez diseñado el esquemático final del multiplicador figura 5.8, obtenemos el diseño finalde Layout del multiplicador de Gilbert, figura 5.9.

Page 46: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

46

Figura N° 5.9. Layout del multiplicador de Gilbert

5.4.2 Simulación.

Figura N° 5.10. Simulación del esquemático del multiplicador de Gilbert

Una vez obtenidos el esquemático y layout del multiplicador de Gilbert, procedimos aobtener su respuesta DC al cambio en las entradas del multiplicador, los resultados se muestran enlas figuras 5.10 y 5.11.

Page 47: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

47

Figura N° 5.11. Simulación Layout del multiplicador de Gilbert

Figura N° 5.12. Zoom a la curva de transferencia del multiplicador Se aprecia que tanto las curvas obtenidas por el esquemático Fig. 5.10 y layout Fig. 5.11 soncasi iguales, y se comportan tal como esperábamos, como se demostró en la figura 4.7. Se veclaramente que para voltajes más pequeños aumenta el rango de linealidad del multiplicador. Esto seaprecia en las curvas de más al centro y lo podemos verificar en la figura 5.12, la cual es un zoom alos gráficos anteriores.

Al apreciar con mas detenimiento la figura 5.12 vemos claramente que existen curvas que nopasan por el centro del grafico, esto se debe al offset que se genera producto de los voltajes mayoresen la entrada, como vemos a medida que el voltaje disminuye las curvas son más lineales y eltérmino de offset es despreciable.

Page 48: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

48

5.5. DISEÑO AMPLIFICADOR OPERACIONAL

Figura N° 5.13. Amplificador operacional básico. (a) Amplificador básico con transistorNMOS (b) Modelo en pequeña señal.

Figura N° 5.14. Curvas características del amplificador ideal. En el diseño de nuestra biblioteca hemos considerado incluir el diseño de un

amplificador operacional, debido a que como veremos más adelante este es de suma importancia enel diseño del circuito de memoria de la biblioteca.

A continuación presentaremos una breve introducción y diseño de los amplificadoresoperacionales.

La forma mas básica de diseñar un amplificador es utilizando un transistor, donde la entradadel amplificador es el voltaje colocado en el GATE y la salida esta situada en el SOURCE o DRAINdependiendo de que tipo de transistor (PMOS o NMOS).

De la figura 5.13 podemos obtener la ecuación característica que rige el funcionamiento deeste tipo de amplificador.

( )00 ,VVi

RVV

IDD

DD =−

( 5.18 )

Las curvas que rigen el funcionamiento de este tipo de transistor se muestran en figura 4.15.

Page 49: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

49

Como se aprecia en la figura 5.14 la función de transferencia del amplificador (a la derecha)muestra claramente el punto de operación donde debe operar el amplificador, donde la ecuación querige la corriente que circula por el amplificador depende claramente tanto del voltaje de entrada VIcomo del voltaje de salida V0.

El punto de operación del transistor es el punto en el cual se logra el mejor rendimiento delamplificador a un rango de voltajes determinados en la entrada. Para lograr un punto de operaciónóptimo se debe polarizar el amplificador, existen distintas técnicas de polarización dependiendo deltipo de amplificador, tipo de circuito, así como del tipo de transistor que se utilice en el diseño. Através de la polarización además logramos situar nuestro amplificador en la zona de amplificación,obtener el valor de ganancia deseado y disminuir la distorsión.

Existen parámetros que caracterizan los amplificadores, estos son su ganancia (AV),impedancia de entrada (ZI), impedancia de salida (Z0) (ecuación 5.19), entre otros.

00

00

0

=

=

=

=

IV

I

II

IV

IVZ

IVZ

VVA

( 5.19 )

En el diseño de circuitos integrados en VLSI se evita el uso de resistencia para polarizar losdistintos tipos de amplificadores, es por esto que existen dos formas básicas de polarizar unamplificador, con resistencias activas o con fuentes de corriente.

Las resistencias activas o también denominadas diodos CMOS como ya lo habíamosmencionado, son resistencias nolineales donde la corriente que circula a través de la resistencia estadada por la ecuación 5.20.

La figura 5.15 muestra el modelo en pequeña señal del la resistencia activa, de aquí podemosobtener el valor teórico de la resistencia, el cual esta dado por:

mDSm

DS

grgr

ivR 1

1≈

⋅+== ( 5.20 )

Las fuentes de corriente utilizadas para la polarización de los amplificadores, se puedendiseñar de distintas maneras. Generalmente una fuente de corriente es un transistor CMOStrabajando en saturación, donde la corriente que circula a través del transistor esta regulada según elvoltaje que sea aplicado en GATE del transistor, figura 5.16.

Figura N° 5.15. Modelo en pequeña señal de la resistencia activa

Page 50: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

50

Figura N° 5.16. Fuentes de corrientes tipo CMOS. (a) Fuente de corriente NMOS (b) Fuentede corriente PMOS.

Figura N° 5.17. Curvas características de una fuente de corriente tipo CMOS. (a) Curvacaracterística NMOS (b) Curva característica PMOS.

La figura 5.16 muestra los dos tipos de fuente de corriente, según el tipo de transistor que seutilice.

Las curvas que relacionan la corriente que circula a través del transistor con el voltajeaplicado se muestra en la figura 5.17.De la curva 5.17, vemos que la resistencia de salida para cada una de las fuentes de corriente enpequeña señal esta dada por:

BIASBIAS

DSDS II

Vrr⋅

≈⋅

⋅+==

λλλ 11

0 ( 5.21 )

Generalmente para fijar una corriente determinada en la fuente de corriente se utilizan,espejos de corriente o configuraciones mejoradas de estos, tales como Cascode, Wilson o Wilsonmejorado, de esta manera la resistencia de salida genera una corriente lo mas constante posible, asícomo se muestra en la figura 4.19.

Page 51: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

51

Figura N° 5.18. Curva característica espejo de corriente

Figura N° 5.19. Esquema de un amplificador diferencial

Dentro de la gama de distintos amplificadores que existe, escogimos un amplificadordiferencial con carga activa tipo OTA Millar (amplificador de transconductancia), este tipo deamplificador esta basado en un par diferencial polarizado con una fuente de corriente controlada porun espejo de corriente. En un amplificador diferencial la entrada esta dividida en dos voltajes y salida es única,como se muestra en la figura 4.20.

Las ecuaciones que rigen el amplificador diferencial de la figura 5.19, son:

( )

22110

21

21

2VkVkV

VVV

VVV

cm

d

⋅−⋅=

+=

−=

( 5.22 )

Utilizando las ecuaciones 5.22 podemos redefinir el voltaje de salida V0.

( ) ( )( )cmd

cmd

cmd VkkVkkVVkVVkV 2121210 222 −+

+=

+−⋅−

+⋅= ( 5.23 )

Agrupando los términos de la ecuación 5.23, podemos definir dos ganancias, Ad como laganancia diferencial y Acm como la ganancia de modo común.

Page 52: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

52

( )

( )21

21

2kkA

kkA

cm

d

−=

+=

( 5.24 )

Utilizando las ecuaciones 5.24, redefinimos la ecuación 5.23.

cmcmdd VAVAV ⋅+⋅=0 ( 5.25 )

El amplificador OTA Miller con par PMOS y espejo NMOS como carga, se muestra en lafigura 4.17.

Del modelo en pequeña señal de la figura 5.20, obtenemos las ecuaciones que rigen lasdistintas ganancias en el amplificador.

( )333

24

52

0

1

1

24

1

2

mdsmm

mdsds

dsdscm

dsds

m

idd

gggg

gggggA

ggg

VVA

≈+=

⋅+⋅⋅

−≈

+

−−≈=

( 5.26 )

Figura N° 5.20. Amplificador OTA Millar. (a) Amplificador OTA Miller (b) Modelo enpequeña señal.

Page 53: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

53

5.5.1 Diseño Esquemático y layout en ELECTRIC.

Figura N° 5.21. Esquemático del Amplificador OTA Miller

Tomando el modelo de amplificador OTA Miller mostrado en la figura 5.20 (a), se obtuvo elesquemático mostrado en la figura 5.21.

Como vemos la fuente de corriente formada por el transistor M5 a través del cual circula unacorriente de 1 [ A] se fija mediante un espejo de corriente externo fijada por una fuente de corrienteDC.

Page 54: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

54

Una vez obtenido el esquemático final del amplificador operacional OTA Miller, se procedióal diseño final de layout mostrado en la figura 4.23.

Figura N° 5.22. LayOut del Amplificador OTA Miller

Page 55: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

55

5.5.2 Simulación.

Figura N° 5.23. Curva del Amplificador OTA Miller, Esquemático.

Figura N° 5.24. Curva del Amplificador OTA Miller, Layout.

Después de tener el diseño del esquemático y el layout procedemos a simular la curva detransferencia DC, los resultados se muestran en las figuras 5.23 y 5.24.

Dado que se esta trabajando con transistores iguales tanto en el par diferencial como elespejo de corriente y estos no se ven afectados por procesos de fabricación ya que el software nopermite agregar estas anomalías obtenemos curvas similares entre el esquemático y layout. Estassimulaciones se obtuvieron haciendo un análisis DC. Se fijo un voltaje de referencia de 2.5 [V] en laentrada y se barrio el voltaje de entrada de 0 a 5 [V] con incrementos de 0.01 [V], de esta forma lascurvas mostradas en las figuras 5.23 y 5.24 tienen el mismo comportamiento ya previsto en la figura5.14.

Page 56: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

56

5.6. DISEÑO DE MEMORIA.

c

Figura N° 5.25. Celda de Memoria Como lo habíamos mencionado la memoria análoga diseñada esta formada por un transistorde compuerta flotante, dado que se logra mejor control sobre el valor almacena, así comoactualización y lectura de los pesos en línea. En la figura 4.26 se muestra el modelo de memoria quese utilizara para esta biblioteca

Esta celda de memoria (figura 5.25) esta formada por un transistor de compuerta flotante yun amplificador, M1 es el transistor principal donde sucede el fenómeno de inyección y M2 es eltransistor cortocircuitado donde sucede el fenómeno de Tunneling. La compuerta flotante estarepresentada por el condensador Cw, él cual representa al condensador que se forma entre el poly1de M1 y M2, y el poly2. Como se muestra en la figura 5.25 la celda contiene además unamplificador operacional su función es amplificar las diferencias de voltaje que se producen en lacompuerta flotante y compensar los cambios a través de la salida conectada al condensador, de estaforma el voltaje la compuerta flotante permanece casi constante y la salida del amplificador reflejalos cambios de voltaje producidos en ella.

Dentro del diseño de la celda de memoria se debe considerar todas las ecuaciones que rigenel funcionamiento del transistor de compuerta flotante, todas las ecuaciones mencionadas en elcapitulo 3, de esta forma nos aseguramos que el diseño de la celda se lo mas aproximado a la celdade memoria real. Para realizar lo anterior debemos diseñar cada uno de los cuatro elementos de lacelda de memoria, estos son:

• Transistor de Inyección.

• Transistor de Tunneling

• Condensador.

• Amplificador Operacional.

A continuación describiremos el diseño de los primeros tres elementos mencionadosanteriormente, en cuanto al amplificador operacional, se utilizara el amplificador OTA Millerdescrito en el capitulo 5.5.

5.6.1 Transistor de Inyección.El transistor de inyección es el encargado de inyectar electrones dentro de la compuerta

flotante disminuyendo el voltaje almacenado en la compuerta. Este transistor debe cumplir con lasecuaciones propuestas en el capitulo 3.2 ecuaciones 3.2 y 3.3. De estas dos ecuaciones mencionadasvemos que la ecuación 3.2 describe la corriente que se genera entre el canal formado entre elSOURCE-DRAIN y el GATE del transistor M1 de la figura 5.25, es por esto que el transistor debellevar una fuente de corriente conectada del DRAIN al GATE [2]. La ecuación 3.3 muestra lacorriente generada por el exceso de electrones que no pasan hacia el GATE y que con recogidos porel WELL, debido a esto el transistor M1 de llevar una fuente de corriente adicional regida por estaecuación y que se encuentre conectada entre el GATE y el WELL del transistor [2] [6].

Page 57: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

57

Para llevar acabo una buena implementación de las ecuaciones debemos incluir losparámetros reales que permitan un correcto funcionamiento de las ecuaciones, es por esto queutilizamos los parámetros descritos en [6] aquí se utilizaron parámetros empíricos y semi-empíricospara la simulación del transistor de compuerta flotante en su modelo SPICE. Las ecuaciones finalesson:

( )

+

+−⋅⋅⋅= sd

gdsinj V

VII 2

5-

0.702155.75exp101.30 ( 5.27 )

( )

−⋅−⋅−⋅⋅−⋅⋅=

0.7197031.9852.98594.85exp0.719703-1.9852.9851.127

sgsdsgsdsb VV

VVII ( 5.28 )

Dado que no existen estas fuentes de corriente que se rijan por estas ecuaciones se crearondos fuentes de corrientes SPICE. Para esto se crearon dos iconos dentro de la biblioteca connombres CSINY y CSWELL, cada uno de estos iconos contiene un “template” que identifica el tipode fuente y sus características. Al extraer el Netlist, ELECTRIC lee el template que esta dentro delicono y lo escribe en el archivo netlist. Un template no es más que una línea de comando queELECTRIC interpreta dentro del circuito y lo escribe en el netlist. El template para la ecuación 3.2es:

SPICE_template= B$(node_name) B D I=(1.127*Is(Minj))*((2.985 *V(S,D))-(1.985*V(S,G))-0.719703)*exp(-(94.85 /((2.985 *V(S,D))-(1.985*V(S,G))-0.719703))) ( 5.29 )

ELECTRIC interpreta de la siguiente forma esta línea de comando (5.29): la primera letra, Bes el tipo de fuente de corriente (no lineal), todo lo que viene encerrado entre “$( )”, ELECTRIC leeel comando y coloca el nombre asociado a el, una vez que se exporte el netlist, estos comandos son,node_name identifica el nombre que se le coloca a la fuente de corriente, B identifica el nombre dela red donde esta conectada el terminal positivo de la fuente, así como la D identifica el nombre dela red del circuito donde esta conectado el terminal negativo de la fuente, de esta misma forma serealizo el icono que representa a la ecuación 3.3.

El resultado final del diseño de las fuentes de corriente que rigen la inyección se muestra enla figura 5.26.

Page 58: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

58

Figura N° 5.26. Fuentes de corriente transistor de inyección. (a) Icono CSINY (b) IconoCSWELL.

Figura N° 5.27. Celda de Inyección, EsquemáticoLuego de haber creado las fuentes de corriente SPICE se creo la celda que identifica el

transistor de inyección en su forma esquemática y layout (figura 4.28 y 4.29), el cual identifica eltransistor M1 de la figura 5.25.

Page 59: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

59

Figura N° 5.28. Celda de inyección, layout

Figura N° 5.29. Propiedades del Transistor

Existe una pequeña diferencia entre la celda de esquemático y la de layout, si vemos la figura5.27, existe dos numero los cuales son propiedades de la celda, en cualquier celda que se crea enELECTRIC existe la posibilidad de pasar parámetros que modifiquen elementos dentro de la celda,de tal forma se crearon dos elementos de nombre W y L que modifican en forma automática elancho y el largo del transistor de nombre inj de la figura 5.27, y sus valores por defecto son 3 y 2respectivamente. Para que se realice la modificación se debe colocar código de ejecución Java en elelemento y donde se colocan los parámetros se debe colocar @ seguido del nombre del parámetro(propiedades del elementos, en este caso transistor) automáticamente ELECTRIC verifica que elnombre del parámetro esté dentro de la celda y coloca su valor en el netlist que se extrae, así comoen el elemento. Para el caso del transistor PMOS la ventana de configuración se muestra en la figura5.29, esto solo es posible en las celdas de tipo esquemático.

Page 60: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

60

5.6.2 Transistor de Tunneling.El transistor de Tunneling, como ya lo habíamos mencionado en el capitulo 3 es el

encargado de sacar los electrones del interior de la compuerta flotante de esta forma se lograaumentar el valor de voltaje en el GATE de transistor. El fenómeno de Tunneling que ocurre alvariar el voltaje en la entrada del transistor M2 figura 5.25 genera una corriente que va desde elDRAIN del transistor al GATE del mismo que esta caracterizada por la ecuación 5.30.

Obtenidos los parámetros [6] la ecuación final a utilizar en la biblioteca es la siguiente.

−⋅⋅⋅⋅−=

oxtun V

LWI 04.368exp1035.9 8 ( 5.30 )

Para implementar la ecuación 5.30 se creo una fuente de corriente que se rige esta ecuaciónde la misma forma que se diseñaron las fuentes de corriente que rigen la inyección. Para este caso secreo un icono de nombre CSTUN, el cual además de llevar el símbolo de fuente de corriente lleva sucorrespondiente template, como se muestra en 5.31.

SPICE_template= B$(node_name) Tun G I=9.35e8*exp(-368.04/V(Tun,G))*$(W)*$(L)*0.2*0.2 ( 5.31 )A diferencia de las dos fuentes creadas anteriormente, esta fuente lleva los parámetros W y

L, estos parámetros se deben pasar automáticamente una vez definido el ancho y el largo deltransistor. Es por esto que dentro del icono se crearon dos atributos adicionales a la celda icono de lafuente CSTUN, estos atributos llevan como nombre W y L, su valor es @W y @L, respectivamente,y su código de evolución es Java igual que en el caso anterior, además en la ecuación estosparámetros están encerrados en $(…) permitiendo a ELECTRIC colocar el valor contenido en estosparámetros en la ecuación.

El resultado final del diseño del transistor de Tunneling tanto en su forma esquemática comoen su forma de layout se muestran en la figura 5.31.

Figura N° 5.30. Fuente de corriente SPICE, CSTUN

Page 61: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

61

Figura N° 5.31. Transistor de tunneling. (a) Transistor de Tunneling, Esquemático (b)Transistor de Tunneling, Layout.

Dentro de la figura 4.32, vemos que acompañado a la L y W, esta la palabra not found, estoindica que como se extrajo estas celdas directamente, no se le a pasada ningún parámetro a ella, espor esto que java interpreta @W y @L colocando este nombre.

5.6.3 Condensador.

En la figura 5.25 se muestra un condensador conectado entre el GATE del transistor M1 y lasalida del amplificador operacional, este condensador representa el condensador formado entre elpoly1 del transistor M1 y el poly2.

Dentro de la biblioteca que provee ELECTRIC existe el condensador para ser utilizado enceldas del tipo esquemático, pero no existe ningún condensador formado por poly1 y poly2 para labiblioteca de layout. Es por esto que se creo una celda layout que contenga un capacitor formado porpoly1 y poly2.

Dado que estamos trabajando con proceso de fabricación de 0.35 [ ], Mosis [3] nos indicaque la capacitancia obtenida entre poly1 y poly2 para este tipo de proceso de fabricación es 879 [aF/

m2], en el Anexo 1 adjuntamos las reglas mosis para capacitores poly1-poly2.

Para que ELECTRIC interprete de manera correcta de que tipo de elemento se trata cuandose extrae el netlist a la celda del capacitor se agrego un template (5.32) que identifica el capacitor.

Page 62: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

62

Como la capacitancia es 879 [aF/ m2], para diseñar un capacitor de 100 [fF] se debe tener un poly2de 53x53 [ ]. La figura 4.33 muestra un layout del capacitor de 100[fF].

SPICE_template= C$(node_name) $(P2) $(P1) 100f ( 5.32 )

Definidos todos los elementos que componen la celda de memoria, podemos implementar eldiseño final del esquemático, pero existe otro problema que debemos considerar en el diseño de lacelda. Cuando implementamos un algoritmo de aprendizaje adaptivo se necesitan tantas memoriascomo entradas tenga nuestra red, debido a que los procesos de fabricación no son perfectos, existediferencia entre cada celda de memoria, ahora bien, este tipo de memoria se modifican con pulsos,para aumentar la cantidad de electrones almacenados en la compuerta flotante debemos ingresar unacierta cantidad de pulsos dependiendo del valor que deseamos almacenar, pero como lomencionamos, debido a la inexactitud del proceso de fabricación entre las distintas celdas dememoria una misma cantidad de pulsos no generan un mismo valor de actualización dentro de cadauna de las celdas. Esto provoca que los algoritmos implementados no funcionen de forma correcta. Para solucionar el problema anterior se agrego a la memoria dos sub-circuitos adicionales loscuales están formados también con transistores de compuerta flotante [10]. De esta forma podemoscalibrar nuestras celdas de memorias de manera que se comporten de la misma forma. La figura 5.33muestra la celda de memoria con estas modificaciones.

Figura N° 5.32. Layout de Capacitor de 100[fF]

Page 63: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

63

Figura N° 5.33. Celda de memoria con circuitos de calibración

El diseño de la celda de memoria con los circuitos de calibración mostrados en la figura 4.33(a) y (b), fueron obtenidos del paper [10], donde se demuestra el efecto de los circuitos decalibración en la implementación del algoritmo LMS. El funcionamiento básico de esta nueva celda de memoria con circuitos de calibración, es elsiguiente. El sub-circuito (b) de la figura 5.33, es el encargado de ecualizar las tasas de Tunneling enlas distintas celdas de memoria, el aumento del voltaje FGdec incrementa el voltaje en el DRAIN yreduce el voltaje en la juntura del GATE y Túnel del transistor M1, de esta manera incrementamosla eficiencia de la inyección y reducimos la fuerza del Tunneling. Para ecualizar todas las celdas dememoria primero se debe disminuir el voltaje FGdec, mediante la línea Dec- de la figura 5.33 (b) yposteriormente se procede a aumentar por separado el voltaje de FGdec de cada una de las celdaspor medio de la línea Dec+, logrando ecualizar cada una de las celdas [10].

El sub-circuito (a) de la figura 5.33 se encarga de controlar la taza de inyección de lasdistintas celdas de memoria, para esto se coloco una fuente de corriente formada por el transistor M3el cual controla la corriente que circula a través del transistor M1 logrando controlar la fuerza de la

Page 64: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

64

inyección. La cantidad de corriente que circula por M3 esta controlada por otro transistor decompuerta flotante FGinc, la ecualización se realiza de la misma forma que para el sub-circuito (b),disminuyendo todos los voltajes FGinc y aumentando por separado cada uno de los voltajesmediante las líneas Dec- y Dec+¸ respectivamente.

A continuación se muestra dos gráficos obtenidos del paper [10] donde se demuestra elefecto del circuito de calibración en relación al voltaje de actualización v/s cantidad de pulsos, para8 celdas de memoria.

En la figura 5.34, se ve claramente que con circuito de calibración se logra una mismapendiente para las 8 celdas de memoria.

Figura N° 5.34. Gráficos de calibración de celdas de memoria [10]. (a) Sin Circuito de Calibración. (b) Con Circuitode Calibración.

Page 65: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

65

5.6.4 Diseño Esquemático y layout en ELECTRIC.

Figura N° 5.35. Esquemático, celda de memoria con Circuitos de Calibración.

Figura N° 5.36. Sub-Circuito de compuerta Flotante

Después de haber definido cada uno de los elementos de la memoria y sus respectivosesquemáticos se diseño el esquemático y layout figuras 5.35 y 5.36, basados en la celda de memoriacon circuitos de calibración, figura 5.33.

Dentro de la figura 5.35 vemos que existen tres iconos en forma de circulo con un trianguloen el centro, estos iconos se crearon para poder realizar la simulación SPICE una vez extraído elnetlist de la celda de memoria.

Los nodos FG, FGdec y FGinc no se encuentran conectados a ningún elemento que los asocie a latierra del circuito, es por esta razón que SPICE ve estos nodos como nodos flotantes lo cual generaun problema para la simulación. Para solucionar esto se creo un sub-circuito formado por unaresistencia y una fuente de voltaje controlada por voltaje, como muestra la figura 5.36. La resistenciade este circuito de 100K impide la fuga de corriente a tierra de esta manera perdida de electrones enla compuerta flotante es nula, además el voltaje en la fuente es igual al voltaje que existe en el nodoG de la figura 5.36, de esta manera se anulan los voltaje entre la resistencia y la fuente V(G).

Page 66: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

66

Figura N° 5.37. Layout, celda de memoria con circuitos de calibración. Para optimizar los espacios en la celda de layout se crearon 2 capacitores de 100 [fF] comolo mencionamos anteriormente, la forma de los capacitores difiere de lo mostrado en la figura 5.33,debido que al utiliza ese capacitor existirían muchos espacios no ocupados en la celda de memoria ypor ende aumentaría innecesariamente el tamaño de esta, es por esto que se vario la forma delcondensador manteniendo un área de 2844,1 [ 2] lo cual equivale a 100 [fF] de capacitancia entrepoly1 y poly2.

Page 67: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

67

5.6.5 Simulación.Las simulaciones obtenidas para las celdas de esquemático y layout mostradas

anteriormente, las podemos ver en las figuras 5.38 y 5.39, respectivamente.El circuito de esquemático y layout se conectaron dos fuentes de pulsos las cuales

permitieron mostrar el fenómeno de inyección como Tunneling, de esta forma la salida de lamemoria (salida del amplificador) muestra un descenso en el voltaje de salida y posteriormente unaumento en dicho voltaje, la tabla 5.1 muestra las variaciones de voltaje obtenida al aplicar 250pulso de inyección y 250 pulsos de Tunneling.

Figura N° 5.38. Esquemático, Simulación celda de memoria con circuitos de calibración

Figura N° 5.39. Layout, Simulación celda de memoria con circuitos de calibración.

Page 68: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

68

Tabla 5.1. Resultados de las simulaciones de esquemático y layout.

Estructura Esquemático Layout

Voltaje Inicial 637.835 [mV] 1.11658 [V]

Voltaje Final 636.550 [mV] 1.11755 [V]

DiferenciaInyección -112.237 [mV] -106.997 [mV]

DiferenciaTunneling

110.953 [mV] 107.972 [mV]

PulsosInyección 250 250

PulsosTunneling 250 250

De la tabla podemos ver que al generar 250 pulsos de inyección el voltaje de salida cae en -112.237 [mV] en relación a su voltaje inicial y al generar tunneling el voltaje aumenta en 110.953[mV]. Al aplicar los mismos pulsos de voltaje tanto para la inyección como para el tunneling elvoltaje inicial de la salida de la memoria es casi idéntico al voltaje final, las variaciones entre elvoltaje inicial y final se controlan utilizando los circuitos de calibración.

Page 69: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

69

5.7. CIRCUITO DIFERENCIAL.

Figura N° 5.40. Circuito Diferencial.

Este circuito se creo debido al problema que se presenta en el multiplicador de gilbertcuando los voltajes de entradas Vy+ y Vy- (figura 5.3) no se mueven en forma simétrica y ademásnuestra memoria tiene como salida un solo voltaje. Es por esto que se diseño un circuito cuya salidade voltaje estuviera formada por un diferencial de voltaje y que el promedio de los cambios dedichos voltajes fuera constante. Para esto se utilizo el circuito de la figura 5.40.

Los voltajes Vin y Vref de la figura 5.40 son los voltajes de entrada al circuito y los voltajesVoutp y Voutm, representan los voltajes de salida, los cuales se mueven en forma simétrica, cuandoun voltaje aumenta el otro disminuye con la misma intensidad que aumento el otro, de esta maneralogramos un diferencial constante en la salida del circuito.

Para realizar el esquemático final a partir de la figura 5.40 se debe considerar que cadatransistor es doble, exceptuando los transistores PM1 y PM3; cada uno de los transistores estaformado por dos transistores conectados en paralelo, de esta forma podemos reducir el tamaño delos transistores y ocupar menos espacio en el layout, así como disminuir la resistencia asociada aellos.

Page 70: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

70

5.7.1 Diseño Esquemático y layout en ELECTRIC.El diseño esquemático y de layout obtenido a partir de la figura 5.40 son los siguientes:

Figura N° 5.41. Circuito diferencial, esquemático.

Figura N° 5.42. Circuito diferencial, layout.

Page 71: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

71

5.7.2 Simulación.

Figura N° 5.43. Simulación circuito diferencial, esquemático.

Figura N° 5.44. Simulación circuito diferencial, layout.

Para realizar la simulación del esquemático y de layout se hizo mediante un análisis DC en elcual variamos la entrada de 0 a 5 [V] y se mantuvo un voltaje en la referencia de 2.5 [V], losresultados se muestran en las figuras 5.43 y 5.44.

Lo primero que se aprecia es el comportamiento similar tanto para curvas de esquemáticocomo de layout. Como podemos ver que los voltajes Voutm y Voutp se mueven de la misma forma,a medida que uno aumenta el otro disminuye y viceversa, generando un diferencial constante.

Page 72: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

72

CAPITULO VI6. HERRAMIENTAS DE ANÁLISIS DE MONTECARLO.

En los capítulos anteriores se describieron todos los elementos que forman parte de nuestrabiblioteca, pero estos no consideran los defectos de fabricación que sufren los distintos componentesdentro del chip, así como también las variaciones que ahí presente en los distintos modelos. Parasolucionar esta falencia nos vimos en la necesidad de crear funciones que manipulen el netlistextraído de ELECTRIC permitiendo realizar un análisis de montecarlo al circuito.

Se llama análisis de montecarlo a todo algoritmo o función utilizada para analizar losdistintos efectos que sufriría un elemento, función, Algoritmo, etc. al estar expuesto a una variaciónaleatoria de sus características y parámetros. En nuestro caso, como se comportaran nuestroscircuitos al someterlos a cambios aleatorios, tanto a los parámetros que rigen los distintos modeloscomo a los tamaños de los distintos elementos que componen el circuito.

Para realizar todas estas variaciones se diseñaron distintas funciones en matlab que operandirectamente sobre el netlist obtenido de ELECTRIC. Las funciones diseñadas fueron las siguientes.

• Genera_struct.

• Agrega_modelos.

• Escribir.

• Asignación_aleatoria.

• Modifica_Size.

• Buscar.

• Agregar_SubCircuitos.

• Asignación_SubCircuitos.Para realizar cada una de estas funciones se utilizaron funciones que matlab trae

incorporadas especializadas en el manejo de archivos y expresiones regulares (cadenas de caracteresque define cierto patrón). Estas funciones se utilizan para buscar caracteres o cadenas de caracteresdentro de un texto permitiendo modificar o remplazar este.

A continuación describiremos el funcionamiento de las distintas funciones creadas yfinalmente aplicaremos dichas funciones a un netlist sencillo obtenido de ELECTRIC, verificando elcomportamiento de dicho circuito.

6.1. FUNCIÓN GENERA_STRUCT.

Lo primero que debemos analizar cuando deseamos intervenir sobre todos los elementos quecontiene un archivo netlist, es si en el archivo están incluidos todos los elementos y modelos queutiliza SPICE para la simulación. En el caso de ELECTRIC, como ya lo habíamos mencionado en elcapitulo 4.3 utiliza dos secciones donde el usuario puede incluir modelos o sub-circuitos que seutilizaran para la generación y simulación del circuito, es por esto que lo primero que debemos hacerantes de realizar nuestro análisis de montecarlo sobre nuestro netlist, es asegurarnos que en elarchivo netlist estén escritos todos los modelos y sub-circuitos que se necesitan para la simulación.Es por esto que se crearon las tres primeras funciones genera_struct, agrega_modelos y escribir.

Page 73: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

73

La función genera_struct se creo para analizar el netlist en busca de funciones SPICE talescomo .include y .lib, estas funciones SPICE se utilizan para incluir en el archivo netlist sub-circuitoso modelos que se utilizan en el circuito de esta manera podemos reutilizar distintos modelos y sub-circuitos sin necesidad de crearlos cada vez que creemos un circuito. En el caso del .include esutilizado para incluir partes de modelos o sub-circuitos, el compilador SPICE lee el archivoadjuntado por esta línea e incluye todo el contenido de este archivo en el Netlist temporal que utilizapara la simulación. En el caso .lib, también se utiliza para incluir modelos así como sub-circuitoscon una pequeña diferencia con el anterior, el compilador lee solo los modelos y sub-circuitos queesta utilizando el circuito y con estos genera el netlist temporal, de esta manera el compilador utilizamenos memoria. La forma general de estos dos comandos SPICE se muestra en 6.1.

.LIB C:\spice\common\bipolar.lib.INCLUDE C:\spice files\wattmeter.cir.

( 6.1 )

La función genera_struct es una función recursiva, si dentro de un archivo .include existieraotro, esta función se llama así misma hasta que encuentra todos los archivos relacionados. Sufuncionamiento es simple, el usuario pasa como parámetro el nombre del archivo netlist, si este estaen el mismo directorio de la función o la ruta completa con el nombre del archivo donde se localizael netlist, posteriormente la función devuelve tres elementos: dos estructuras, la primera contienetodos los modelos encontrados y la segunda contiene todos los sub-circuitos encontrados y un arrayde caracteres con el nombre netlist_temporal, la cual contiene todo el archivo netlist que el usuarioentrego a la función, de esta forma el usuario puede tener el archivo en esta variable para realizarcualquier modificación sobre el. La forma de llamar a la función se muestra en 6.2.

[Modelos,SubCircuitos,Netlist_temporal]=Genera_Struct(Netlist) ( 6.2 )

Es importante mencionar la forma que esta constituida cada una de estas estructurasgeneradas por esta función. En el caso de los modelos, cada modelo contiene un nombre, un tipo demodelo y los parámetros del modelo, en la figura 6.1 (a) se muestra la forma como esta constituidala estructura. Para los sub-circuitos, estos tienen tres campos fundamentales, el nombre del sub-circuitos, los nodos de entrada al sub-circuitos y el contenido de este, en la figura 6.1 (b) se muestraclaramente la forma como esta constituida esta estructura.

Tabla 6.1. Descripción de los parámetros de la función genera_struct.

Parámetro Tipo Función

Netlist Parámetro de entrada Nombre del archivo netlist que deseamos analizar.

Modelos Parámetro de salida Estructura que contiene todos los modelos encontradosdentro del netlist.

SubCircuitos Parámetro de salida Estructura que contiene todos los sub-circuitosencontrados dentro del netlist.

Netlist_temporal Parámetro de salida Variable que contiene un array de caracteres con elnetlist.

Page 74: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

74

Figura N° 6. 1. Estructuras para la función Genera_struct. (a) Distribución de la estructura Modelos (b) Distribuciónde la estructura SubCircuito.

Tanto para la figura 6.1 (a) como para la (b) se muestra la forma como están distribuidos loscampos en las estructuras seguido por un ejemplo. Aquí los nombre que están entre paréntesissignifican que puede variar, no así los que están sin paréntesis, lo mismo sucede para la estructuraSubCircuitos aquí los campos nodos y contenido son fijos, lo único que puede variar es el nombre yel contenido de nodos y contenido.

6.2. FUNCIÓN AGREGA_MODELOS.

Esta función se creo para modificar los parámetros dentro de la estructura llamada Modelosque entrega la función genera_struct, además permite agregar más modelos dentro de esta estructuraa partir de los modelos existentes y además permite variar el valor de los parámetros en formaaleatoria con una desviación estándar determinada.

De esta forma podemos crear distintos modelos a partir de los existentes y posteriormenteasignarlos a los distintos elementos que utilicen estos modelos dentro de nuestro circuito. Su formageneral es:

[Modelos,Nombres_generados] = agrega_modelos(Modelos_Cambiar,Modelos) ( 6.3 )

Page 75: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

75

La tabla 6.2 describe cada uno de los parámetros y su función.Para utilizar esta función el usuario debe crear una estructura que contenga el formato

mostrado por la figura 6.2 y pasarlo como parámetro a la función donde dice modelos_cambiar.En la parte superior de la figura 6.2 se muestra la forma como debe ser generada la estructura

indicando la cual indica el tipo de parámetro cambiar y cuantos modelos generar. En la parte inferiorde esta figura vemos un ejemplo para esta estructura, aquí se crea una estructura con el nombre Tipoen la cual indicamos el tipo modelo a buscar NMOS, con el nombre P, dado que cantidad es 4 secrearan 4 modelos con los parámetros TNOM y VERSIÓN modificados en forma aleatoria con unadesviación estándar de 0.1 y 1, respectivamente.

Tabla 6.2. Descripción de los parámetros de la función agrega_modelos

Parámetro Tipo Función

Modelos_Cambiar Parámetro de entrada Estructura que contiene los nombres de losmodelos a cambiar, la cantidad de modelos agenerar y la desviación estándar.

Modelos Parámetro de entrada Estructura que contiene todos los modelosencontrados dentro del netlist, por la funcióngenera_struct.

ModelosParámetro de salida Estructura que contiene todos los modelos

generados a partir de la estructuramodelos_cambiar.

Nombres_generados Parámetro de salida Array de caracteres con los nombres generadospor la función para los distintos modelos.

Figura N° 6. 2. Distribución de la estructura Modelos_Cambiar

Page 76: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

76

6.3. FUNCIÓN ESCRIBIR.

Tabla 6.3. Descripción de los parámetros de la función Escribir.

Parámetro Tipo Función

Netlist Parámetro de entrada Nombre del archivo netlist que se deseamodificar.

Modelos Parámetro de entrada Estructura que contiene todos los modelosencontrados dentro del netlist, por la funcióngenera_struct y generados por la funciónagrega_modelos.

SubCircuitosParámetro de entrada Estructura que contiene todos los sub-circuitos

encontrados dentro del netlist, por la funcióngenera_struct.

archivo_modificado Parámetro de salida Nombre del archivo netlist que se genero apartir de los modelos y sub-circuitos.

Esta función es la encargada de generar el netlist final el cual simularemos. La forma generalde llamar a esta función se presenta en (6.4).

La función se encarga de copiar el archivo tal cual se encuentra y elimina todos los .include y.lib, que existieren en el netlist incluyendo los modelos y SubCircuitos en la parte donde seencontraban estos comandos. La tabla 6.3 describe cada uno de los parámetros y su función.

archivo_modificado = Escribir(Netlist,Modelos,SubCircuitos) ( 6.4 )

Una característica importante de esta función es que no necesariamente podemos generar elnetlist después de utilizar la función agrega_modelos, sino que podemos usarla una vez encontradoslos modelos y sub-circuitos del netlist a través de la función genera_struct. De esta formageneraremos un nuevo netlist con estos elementos sin modificaciones o bien hacer nuestras propiasestructuras con modelos y sub-circuitos para este nuevo el netlist. El nombre del archivo modificadono es el mismo que el del netlist, debido a que estaríamos perdiendo el contenido de nuestro archivooriginal, para ello generamos otro archivo que contiene el nombre del netlist original al cual se leagrega la palabra “_modificado”, por ejemplo, si nuestro archivo netlist se llamaba “Archivo.spi”, elarchivo modificado se llamara “Archivo_modificado.spi”.

6.4. FUNCIÓN ASIGNACION_ALEATORIA.

Hasta el momento hemos construido funciones que modifican los modelos que ocupan loscircuitos y que generan un nuevo netlist a partir de los modelos modificados. Dado que ya contamoscon estas funciones, ahora lo que necesitamos asignar en forma aleatoria estos nuevos modelos a loselementos que forman el nuevo netlist.

archivo_final=Asignacion_Aleatoria(Netlist,Modelos) ( 6.5 )

Page 77: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

77

Tabla 6.4. Descripción de los parámetros de la función Asignación_aletoria.

Parámetro Tipo Función

Netlist Parámetro de entrada Nombre del archivo netlist que se deseamodificar.

Modelos

Parámetro de entrada

Estructura que contiene todos los modelosencontrados dentro del netlist, por la funcióngenera_struct y generados por la funciónagrega_modelos.

archivo_final Parámetro de salida

Nombre del archivo netlist que se genero apartir de la asignación en forma aleatoria deestos modelos el cual contiene al final delnombre la palabra “_final” y posteriormente suextensión respectiva.

Esta función lee el tipo de modelo y busca donde esta el elemento que utiliza este modelo,luego asigna un nombre aleatorio dentro de los que se generaron en la estructura de modeloscorrespondiente al tipo de modelo y remplaza el nombre original por este. La búsqueda del elementoen cuestión la realiza a través de su letra inicial; dado que en SPICE [11] cada elemento tieneasignado una letra inicial según el modelo y tipo de elemento, por ejemplo todos los transistores deltipo NMOS o PMOS comienzan con la letra M, de esta manera la función primero identifica la letraque pertenece al tipo de modelo y posteriormente procede a buscar línea por línea dentro del archivonetlist donde se encuentra el elemento que utiliza este modelo.

6.5. FUNCIÓN MODIFICA_SIZE.

Con las herramientas creadas hasta ahora podemos realizar un análisis de montecarlovariando en forma aleatoria los parámetros de los modelos y posteriormente asignarlos en formaaleatoria a cada uno de los elementos que los utilicen.

Dentro de cada proceso existen errores en la fabricación exacta de los tamaños de cada unode los elementos, así sean valores de resistencia, capacitancia, ancho de los transistores o de losdiodos, etc. cada elemento esta sujeto a este tipo de errores en el momento de la fabricación. Es poresto que creamos la función Modifica_size. Esta es la encargada de cambiar el tamaño de cualquierelemento dentro del netlist, por ejemplo si un transistor NMOS es diseñado de un ancho de 2 [ ],nosotros podemos asignarle un error de tamaño en forma aleatoria con una desviación estándardeterminada.

Su forma general es:

[archivo_modificado]=Modifica_size(Netlist,Tipos) ( 6.6 )

Page 78: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

78

Tabla 6.5. Descripción de los parámetros de la función Modifica_size.

Parámetro Tipo Función

Netlist Parámetro de entrada Nombre del archivo netlist que se deseamodificar.

Tipos Parámetro de entrada Estructura que contiene la letra inicial queidentifica el tipo de elemento que se deseamodificar, sea resistencia, capacitancia,transistor, etc.

archivo_final

Parámetro de salida Nombre del archivo netlist que se genero apartir de la modificación en forma aleatoria delos tamaños. El nombre generado contiene lapalabra “_size” al final del nombre original yposteriormente su extensión.

Figura N° 6.3. Distribución de la estructura Tipos, función Modifica_size.

Dado que “tipos” es una estructura se requiere que el usuario cree esta estructuraidentificando, que tipo de elemento desea modificar y con que desviación estándar, para esto en lafigura 6.3 se muestra la forma de la estructura.

En la parte superior de la figura 6.3 se muestra la configuración básica de la estructura denombre Tipo, el primer campo seguido del nombre Tipo es variable, aquí va alojado la letra delelemento que deseamos modificar, como en el ejemplo (figura 6.3 parte inferior) vemos que lleva elletra M esto quiere decir que busque todos los transistores NMOS o PMOS y modifique su ancho Wy su largo L con una desviación estándar de 0.1 y 0.5 respectivamente.

En el Anexo 2 se adjunto una tabla que muestra la primera letra que identifica cada elementodentro de un netlist.

Page 79: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

79

6.6. FUNCIÓN BUSCAR.

TABLA 5.6. Descripción de los parámetros de la función Buscar.

Parámetro Tipo Función

Netlist Parámetro de entrada Nombre del archivo netlist donde se deseabuscar.

Modelos Parámetro de entrada Estructura que contiene todos los modelosencontrados por la función genera_struct.

SubCircuito Parámetro de entrada Estructura que contiene todos los sub-circuitosencontrados por la función genera_struct.

Modelos Parámetro de salida Estructura que contiene todos los modelosencontrados por la función genera_struct y losencontrados por la función buscar.

SubCircuito Parámetro de salida Estructura que contiene todos los sub-circuitosencontrados por la función genera_struct y losencontrados por la función buscar.

Netlist_2Parámetro de salida Variable que contiene el netlist completo, al

cual se han eliminado los modelos y sub-circuitos que contenía el netlist original.

En la creación de un netlist generalmente se incluyen tanto modelos como sub-circuitosdentro del netlist, sin necesidad de incluirlos en los .include o .lib, lo mismo sucede con los modelosutilizados. Dado que nuestra función genera_struct, solo busca modelos y sub-circuitos en los.include o .lib existentes en el circuito, creamos la función buscar cuya función es encontrar los sub-circuitos y modelos dentro del netlist y agregarlos a los ya encontrados por la función genera_struct,es una función complementaria que depende del usuario si la utiliza o no, ya que es él el que sabe siexisten modelos o sub-circuitos adicionales dentro del netlist, no se incluyo esta función dentro de lafunción genera_struct para evitar una búsqueda innecesaria en caso que no existieran dichoselementos.

[Modelos,SubCircuito,Netlist_2]=Buscar(Netlist,Modelos,SubCircuito) ( 6.7 )La forma de las estructuras que se deben pasar a esta función son las mismas mencionadas en

la función genera_struct.

6.7. FUNCIÓN AGREGAR_SUBCIRCUITOS.

Unas de las características de ELECTRIC dentro de la creación de circuitos es la capacidadde utilizar celdas dentro de otras celdas, lo que es reflejado en la extracción del netlist como un sub-circuito. Un sub-circuito no es más que una celda que podemos reutilizar dentro de nuestro netlistsin necesidad de estar creando este circuito. En nuestro caso esto representa un problema cuandohablamos de analizar el funcionamiento de un circuito a la variación de parámetros ya que, porejemplo la memoria, se debe utilizar en muchas ocasiones, pero como esta es un sub-circuito cadamemoria que se utilizara dentro del circuito final será la misma lo que no permitiría tener distintasmemorias con distintos tamaños, al menos claro esta, que se crearan distintas memorias en la

Page 80: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

80

biblioteca, lo que resultaría contraproducente. Es por esto que creamos la función agrega sub-circuitos la cual es la encargada de duplicar cuantas veces sea necesario los sub-circuitos queindique el usuario.

[SubCircuitos_modificados] = agrega_SubCircuitos(cantidad,SubCircuitos) ( 6.8 )

En esta función existe una pequeña variación en la forma de la estructura que devuelve estafunción, la cual esta estructurada de la siguiente manera.

La forma de esta estructura se diseño pensando en la función encargada de la asignación delos distintos sub-circuitos dentro del netlist, de esta manera el primer campo de la estructura indicael nombre original del sub-circuito y con el cual se debe buscar y el segundo campo contiene todoslos nombres alternativos para este sub-circuito.

Tabla 6.6. Descripción de los parámetros de la función agrega_subcircuitos.

Parámetro Tipo Función

cantidad Parámetro deentrada

Cantidad de sub-circuitos que se desea crearpor cada sub-circuito que se ingrese a lafunción.

SubCircuito Parámetro deentrada

Estructura que contiene todos los sub-circuitosque se desean duplicar.

SubCircuitos_modificados Parámetro de salida Estructura que contiene todos los sub-circuitosduplicados.

Figura N° 6.4. Distribución de la estructura Tipos, función Agrega_subcircuitos.

Page 81: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

81

6.8. FUNCIÓN ASIGNACIÓN_SUBCIRCUITOS.

Tabla 6.7. Descripción de los parámetros de la función asignacion_SubCircuitos.

Parámetro Tipo Función

Netlist Parámetro de entrada Nombre del netlist al cual se desean asignarlessub-circuitos en forma aleatoria.

SubCircuito Parámetro de entrada Estructura que contiene todos los sub-circuitosque se desean asignar.

archivo_final Parámetro de salida Nombre del archivo final, el cual contiene lossub-circuitos asignados.

Como su nombre lo indica esta función es la encargada de buscar dentro del netlist losnombres de los sub-circuitos que son utilizados y ver si existen sub-circuitos con dichos nombresdentro de la estructura que se pasa como parámetro a la función y posteriormente asignarlo dichosnombres en forma aleatoria.

archivo_final=Asignacion_SubCircuitos(Netlist,SubCircuitos) ( 6.9 )Dentro de los modelos SPICE [11] la letra “X” al comienzo de cada línea dentro del netlist

indica que el elemento en esa línea es un sub-circuito. Mediante esta característica la función buscaesta letra y posteriormente el nombre de sub-circuito que esta asignado a esa línea, el nombre delsub-circuito se encuentra al final, sino al final de la siguiente línea. Considerando que cuando losnodos de un sub-circuitos son demasiados estos continúan en la siguiente línea, en SPICE lacontinuación de una línea es identificada por el signo “+” como primera carácter de una línea dentrodel netlist, mediante esto nuestra función busca el fin de los nodos del sub-circuito y luego elnombre de este. En el Anexo 3 (a-h) se adjunta el código completo realizado en matlab de cada una de lassiete funciones antes mencionadas.

6.9. SIMULACIÓN DE UN NETLIST BAJO ANÁLISIS DE MONTECARLO.

Una vez descrita cada una de las funciones se realizo un análisis de montecarlo a un pequeñocircuito formado por NOT como se muestra en la figura 6.4.

Este circuito se modifico en forma aleatoria sus parámetros de temperatura y voltaje umbralpara ambos modelos (NMOS y PMOS), además se modifico en forma aleatoria sus tamaños con unapequeña desviación estándar y se realizo un análisis DC de dicho circuito para ver sucomportamiento.

Page 82: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

82

Figura N° 6.5. Esquemático de NOTs para análisis de montecarlo. El netlist original obtenido del circuito mostrado en la figura 5.5 (sin modificaciones) semuestra a continuación.

*** SPICE deck for cell note{sch} from library noname

*** Created on dom may 21, 2006 19:34:19

*** Last revised on dom may 21, 2006 19:40:48

*** Written on dom may 21, 2006 19:48:14 by Electric VLSI Design System,

*version 8.03

*** UC SPICE *** , MIN_RESIST 4.0, MIN_CAPAC 0.1FF

.OPTIONS NOMOD NOPAGE

* Model cards are described in this file:

.include D:\RESPALDO\Mis Documentos\Temp\models.sp

*** TOP LEVEL CELL: note{sch}

MN1 Out1 In gnd gnd N L=0.4U W=0.6U

MN2 Out2 In gnd gnd N L=0.4U W=0.6U

MN3 Out3 In gnd gnd N L=0.4U W=0.6U

MN4 Out4 In gnd gnd N L=0.4U W=0.6U

MP1 vdd In Out1 vdd P L=0.8U W=1.2U

MP2 vdd In Out2 vdd P L=0.8U W=1.2U

MP3 vdd In Out3 vdd P L=0.8U W=1.2U

MP4 vdd In Out4 vdd P L=0.8U W=1.2U

.DC Vin 0 3.3 0.01

VPower vdd gnd DC 4V

Vin In gnd DC 0V

* Trailer cards are described in this file:

.END

Page 83: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

83

Figura N° 6.6. Análisis DC de NOTs sin modificaciones

Mediante el netlist mostrado anteriormente se generaron las cuatro curvas de transferenciaDC sin modificaciones, los resultados se muestran en la figura 6.6.

Se realizaron dos pruebas con el siguiente código matlab:clear all

clc

Netlist='note.spi'

Tipos=struct();

Tipos.PMOS.P.Cantidad=4;

Tipos.PMOS.P.VTH0=0.5

Tipos.PMOS.P.TNOM=0.1;

Tipos.NMOS.N.Cantidad=4;

Tipos.NMOS.N.VTH0=0.5

Tipos.NMOS.N.TNOM=0.8;

Modifica.M.W=0.08;

Modifica.M.L=0.05;

[Modelos,SubCircuitos,Netlist_temporal] = Genera_Struct(Netlist)

[Modelos_midificados,Nombres_generados] = agrega_modelos(Tipos,Modelos)

archivo_modificado = Escribir(Netlist,Modelos_midificados,SubCircuitos)

archivo_modificado = Asignacion_Aleatoria(archivo_modificado,Modelos_midificados)

archivo_modificado = Modifica_Size(archivo_modificado,Modifica)

Page 84: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

84

A través de este código se realizaron dos prueba la primera con el código mostradoanteriormente, y la segunda cambiando la desviación estándar del valor aleatorio de la temperaturade operación (TNOM) para el transistor PMOS a 0.5. Como se muestra en código matlab primero se crean dos estructura llamada Tipos yModifica, la primera es utilizada para cambiar los valores de los parámetros en los modelosutilizados y la segunda se utiliza para cambiar el valor de los ancho y largo de los transistores queexistieran en el circuito. Uno de los netlist utilizados se muestra a continuación.

*** SPICE deck for cell note{sch} from library noname*** Created on dom may 21, 2006 19:34:19*** Last revised on dom may 21, 2006 19:40:48*** Written on dom may 21, 2006 19:48:14 by Electric VLSI Design System,*version 8.03*** UC SPICE *** , MIN_RESIST 4.0, MIN_CAPAC 0.1FF.OPTIONS NOMOD NOPAGE* Model cards are described in this file:** ********************************************* **********MODELOS A UTILIZAR***************.MODEL N NMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.0605 TOX = 7.8e-009+ XJ = 1e-007 NCH = 220000000000000000 VTH0 = 0.68971 K1 = 0.59397+ K2 = 0.0081007 K3 = 100 K3B = -8.3133 W0 = 2.8605e-005+ PRDSW = -97.0588 PK2 = 0.0040021 WKETA = -0.0016946 LKETA = -0.0010853)*.MODEL N1 NMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.4185 TOX = 7.8e-009+ XJ = 1e-007 NCH = 220000000000000000 VTH0 = 1.1361 K1 = 0.59397+ PRDSW = -97.0588 PK2 = 0.0040021 WKETA = -0.0016946 LKETA = -0.0010853)*.MODEL N2 NMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.1971 TOX = 7.8e-009+ XJ = 1e-007 NCH = 220000000000000000 VTH0 = 0.8171 K1 = 0.59397+ PRDSW = -97.0588 PK2 = 0.0040021 WKETA = -0.0016946 LKETA = -0.0010853)*.MODEL N3 NMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.4933 TOX = 7.8e-009+ XJ = 1e-007 NCH = 220000000000000000 VTH0 = 0.80589 K1 = 0.59397+ PRDSW = -97.0588 PK2 = 0.0040021 WKETA = -0.0016946 LKETA = -0.0010853)*.MODEL P PMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.0805 TOX = 7.8e-009+ XJ = 1e-007 NCH = 85200000000000000 VTH0 = -0.25222 K1 = 0.43192+ PRDSW = 62.7439 PK2 = 0.0019812 WKETA = 0.0036759 LKETA = -0.0037934)*.MODEL P1 PMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.1037 TOX = 7.8e-009+ XJ = 1e-007 NCH = 85200000000000000 VTH0 = -0.13257 K1 = 0.43192+ PRDSW = 62.7439 PK2 = 0.0019812 WKETA = 0.0036759 LKETA = -0.0037934)*.MODEL P2 PMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.0855 TOX = 7.8e-009+ XJ = 1e-007 NCH = 85200000000000000 VTH0 = -0.21303 K1 = 0.43192+ PRDSW = 62.7439 PK2 = 0.0019812 WKETA = 0.0036759 LKETA = -0.0037934)**.MODEL P3 PMOS(LEVEL = 49+ VERSION = 3.1 TNOM = 27.1446 TOX = 7.8e-009+ XJ = 1e-007 NCH = 85200000000000000 VTH0 = -0.15678 K1 = 0.43192+ PRDSW = 62.7439 PK2 = 0.0019812 WKETA = 0.0036759 LKETA = -0.0037934)** ******FIN DE MODELOS A UTILIZAR************** TOP LEVEL CELL: note{sch}MN1 Out1 In gnd gnd N2 L=0.4356U W=0.66525UMN2 Out2 In gnd gnd N L=0.43343U W=0.70322UMN3 Out3 In gnd gnd N1 L=0.33988U W=0.69527UMN4 Out4 In gnd gnd N3 L=0.39216U W=0.59842UMP1 vdd In Out1 vdd P1 L=0.81287U W=1.0717UMP2 vdd In Out2 vdd P3 L=0.87076U W=1.1155UMP3 vdd In Out3 vdd P2 L=0.82644U W=1.1356UMP4 vdd In Out4 vdd P L=0.7539U W=1.2175U.DC Vin 0 3.3 0.01VPower vdd gnd DC 4VVin In gnd DC 0V* Trailer cards are described in this file:.END

Page 85: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

85

Por razones de espacio y dado que no es necesario mostrar, se quitaron parámetros a cadauno de los modelos generados. Como se aprecia en cada uno de los modelos tanto para PMOS comoNMOS los parámetros TNOM y TVH0 están modificados con valores aleatorios, además vemos quelos tamaños de los transistores varían claramente de los mostrados del netlist original, además seasigno en forma aleatoria cada uno de los modelos a los distintos transistores. Los resultadosobtenidos para cada una de las pruebas se muestran en la figura 6.7.

De los gráficos obtenidos a partir de un mismo circuito sometido a distintos cambios deparámetros a través de las funciones hechas para análisis de montecarlo nos damos cuentaclaramente que bajo distintas condiciones un circuito puede variar drásticamente su operación.

Figura N° 6.7. Análisis DC de NOTs con modificaciones

Page 86: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

86

CAPITULO VII7. IMPLEMENTACIÓN DE ALGORITMOS DE PROCESAMIENTO ADAPTIVO DE

SEÑALES, UTILIZANDO BIBLIOTECA DISEÑADA.

Figura N° 7.1. Neurona de Cuatro entradas actualizada con Tren de Pulsos.

Después de haber analizado los algoritmo básicos que son utilizados en procesamientoadaptivo de de señales en VLSI, haber mostrado el funcionamiento de la tecnología detrás deltransistor de compuerta flotante, analizado las herramientas que se utilizaron para crear la bibliotecadescrita en esta memoria y finalmente haber construido todas las partes que conforman dichabiblioteca de VLSI junto con las funciones necesarias para realizar un buen análisis de montecarlonos disponemos a mostrar el funcionamiento de estas herramienta realizando una neurona de cuatroentradas actualizada por pulsos.

Para llevar a cabo esta implementación tomaremos la red mostrada en la figura 6.1, la cual muestrauna neurona de 4 entradas.

Como se muestra en la figura 7.1 para implementar esta red de 4 entradas necesitaremos,cuatro memorias, cuatro multiplicadores y un sumador. A partir de esta figura construiremos nuestroesquemático, posteriormente realizaremos el layout y finalmente simularemos dichos circuitosmostrando el resultado final de la implementación de esta biblioteca.

Page 87: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

87

7.1. CONSTRUCCIÓN DEL ESQUEMÁTICO Y LAYOUT.

Figura N° 7.2. Sinapsis de la primera entrada, esquemáticoEl esquemático obtenido tomando como modelo de neurona mostrada en la figura 6.1, esta

constituido por cuatro sinapsis, cada una de ellas contiene:

• Una memoria.

• Un Circuito diferencial.

• Un multiplicador de Gilbert.Como anteriormente lo habíamos mencionado el sumador mostrado en la figura 7.1 se implementafácilmente en circuitos análogos mediante la unión de las líneas de salida de cada uno de losmultiplicadores, de esta forma construimos un nodo en el cual la corriente de salida de un nodo esigual a la sumatoria de las corriente de entrada a este (Ley de Kirchhoff).

La figura 7.2 muestra la sinapsis de la primera entrada que esta constituida de izquierda aderecha por: una memoria, circuito diferencial y un multiplicador. Cada una de las cuatro sinapsis dela neurona esta constituida por este mismo esquema de circuitos, es por esto que no se mostró la redcompleta. Como lo mencionamos cada una de las salidas Vout+ mostrada en la figura son unidaspara formar el sumador, de la misma forma las salidas Vout-, además podemos apreciar que laentrada X1 se constituye mediante un diferencial de dos entradas VX1+ y VX1-, estas son conectadasdirectamente a la entrada superior del multiplicador (circuito del lado derecho de la figura 7.2). Después de haber diseñado nuestro esquemático procedemos a diseñar la parte de layout dedicho esquemático. El resultado final de nuestro layout se muestra claramente en la figura 7.3, de lamisma forma que se hizo para el esquemático este layout esta conformado por los tres circuitos.

Page 88: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

88

Figura N° 7.3. Sinapsis de la primera entrada, layout

El diseño de layout de los tres componentes que conforman la sinapsis (memoria, circuitodiferencial y multiplicador) se hizo pensando en un mismo ancho para los tres, de esta manera alunir los tres circuitos no quedan espacios libres que aumentarían innecesariamente el tamaño de lacelda. Además si deseamos diseñar una red de mas de 4 entradas únicamente tenemos que copiareste circuito cuantas veces lo necesitemos, en la figura 7.4 se muestra el diseño final de layout denuestra neurona de 4 entradas en el cual todas las entradas se encuentran a la izquierda del circuito yla salida de la neurona se encuentra a la derecha.

Como se muestra en este layout el ruteo interno se realizo en metal 1 y metal dos (celeste ymagenta), y las uniones superiores se realizaron en metal 3, amarillo.

Page 89: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

89

Figura N° 7.4. Layout red neuronal de cuatro entradas

Page 90: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

90

7.2. SIMULACIONES.

7.2.1 Simulación de red neuronal de cuatro entradas.

Figura N° 7. 5. Simulación red neuronal de cuatro entradas, esquemático.

Figura N° 7.6. Simulación red neuronal de cuatro entradas, layout.

Para realizar la simulación de la neurona de cuatro entradas sometimos la red a pulsos deactualización y posteriormente fue sometida a cuatro entradas sinusoidales de distinta frecuencia.Los resultados obtenidos se muestran en las figuras 7.5 y 7.6.

Page 91: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

91

De las figuras 7.5 y 7.6 apreciamos claramente que después de someter nuestra red a distintos pulsosde actualización, estos logran valores determinados de voltajes según la combinación de pulsos deTunneling e inyección. Durante este proceso la salida de la red se mantiene en 0 [V] dado que lasentradas se encuentran en 0 [V], lo que nos comprueba que nuestro multiplicador esta funcionado deforma correcta, al ver que la sumatoria de los nn WX ⋅ es cero.

7.2.2 Simulación sin calibración de la memoria.Como lo habíamos mencionado en el capitulo 5.6 el modelo de memoria que

implementamos cuenta con dos circuitos adicionales, los cuales se utilizan para calibrar la memoria.Esto se debe principalmente a la variación que se genera después del proceso de fabricación, tantoen el tamaño de los transistores que existen entre las distintas celdas de memoria, así como lavariación en los distintos parámetros del modelo de transistor de cada uno de ellos.

Para reproducir este fenómeno utilizaremos las herramientas de análisis de montecarlocreadas y explicadas en el capitulo 6. Lo primero que haremos es tomar el modelo de memoria quese utilizo para la simulación mostrada en las figuras 5.35 y 5.37 y agregar el circuito diferencial,tanto en el layout como esquemático, creando los circuitos de las figuras 7.7 y 7.8, posteriormentesimularlo y analizar lo sucedido.

Figura N° 7.7. Simulación esquemático memoria y diferencial.

Figura N° 7.8. Simulación layout memoria y diferencial.

Page 92: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

92

Figura N° 7.9. Simulación memoria y diferencial.

Para realizar la simulación se crearon dos memorias como las mostradas en las figuras 7.7 y7.8, y se sometieron a la misma cantidad de pulsos de inyección y de Tunneling. El resultado sinvariar sus parámetros se muestra en la figura 7.9.

La figura 7.9 muestra la salida del diferencial al someter las dos memorias a 250 pulsos deTunneling y 250 pulsos de inyección. Como podemos ver dado que las memorias están sometidas alos mismos voltajes y no existe ningún parámetro distinto dentro del modelo que utilizan lostransistores, además no hay ningún cambio en el tamaño de los transistores que diferencie estas dosmemorias, como era de esperar los delta generados por los pulsos de Tunneling e inyección sonidénticos, tanto para la memoria N° 1 como para la memoria N° 2. Esto implicaría que los circuitosde calibración fueran innecesarios; esto sucedió tanto en la simulación del circuito de layout comopara la simulación en el circuito esquemático. En los procesos de fabricación no es posible obtener dos memorias idénticamente igualescomo lo mostrado anteriormente, debido a esto la misma cantidad de pulsos de Tunneling noprovoca el mismo delta entre las distintas memorias, de la misma forma sucede con los pulsos deinyección, es por esto que se necesitan calibrar cada una estas memorias. Para realizar nuestro proceso de calibración de estas dos memorias, lo primero que debemoshacer es modificar los parámetros y modelos de los transistores para obtener deltas distintos, ysometer las memorias a las mismas condiciones de voltajes de entradas de manera de reproducir elfenómeno mencionado.

Sometimos el netlist utilizado para realizar la simulación mostrada en la figura7.9 a losdistintos algoritmos diseñados anteriormente, variando tanto el modelo de los transistores como los

Page 93: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

93

tamaños de estos. En la figura 7.10 se muestran los resultados obtenidos de las simulaciones despuésde someter el netlist a estos cambios.

Figura N° 7.10. Simulación memoria y diferencial con cambios de tamaños, sin calibración.

Tabla 7.1. Resultados de las simulaciones memoria y diferencial.

Estructura Memoria N°1 Memoria N°2

Pulsos Inyección 250 250

Pulsos Tunneling 250 250

Voltaje Inicial salida del diferencial 323.211 [mV] 301.935 [mV]

Voltaje Final salida del diferencial 409.983 [mV] 269.311 [mV]

Diferencia Inyección -41.7306 [mV] -150.345 [mV]

Diferencia Tunneling 128.502 [mV] 117.721 [mV]

Delta inyección salida del amplificador -48.6493 [mV] -189.199 [mV]

Delta Tunneling salida del amplificador 153.209 [mV] 143.529 [mV]

De la simulación mostrada en la figura 7.10 obtuvimos la siguiente tabla de datos, la cualmuestra los valores de voltaje de las distintas etapas de la simulación.Después de haber sometido nuestro circuito a la variación de parámetros en forma aleatoria a travésde montecarlo, vemos claramente en la tabla 7.1 que se obtuvieron respuestas diferentes en losdeltas de voltaje tanto en la salida del circuito diferencial como en la salida del amplificadoroperacional contenido en la memoria, además se aprecia, dada la cantidad de transistoresinvolucrados en el circuito diferencial y al ser sometidos a cambios aleatorios en los tamaños yparámetros de estos que cada uno de los deltas de voltaje presente en la entrada del circuito no sonreflejados en forma simétrica a la salida de este.

7.2.3 Simulación con calibración y análisis de montecarlo sobre la memoria.

Page 94: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

94

La variación de parámetros producida netlist mostrada en la figura 7.10 y verificada en latabla 7.1, demuestra las diferencias en los voltajes podríamos obtener en el proceso de fabricaciónde un chip, es por esto que debemos utilizar los circuitos de calibración de la celda de memoria paralograra que tanto los delta de inyección como los de Tunneling sean iguales bajo la misma cantidadde pulsos.

Después de llevar a cabo la calibración se obtuvieron los siguientes resultados:

Figura N° 7.11. Simulación memoria y diferencial con cambios de tamaños, con calibración.

Figura N° 7.12. Evolución de cada una de las compuertas flotantes del circuito

Page 95: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

95

Como se muestra en la figura 7.11 después de calibrar las distintas compuertas flotantes denuestro circuito, se logro igualar tanto los deltas de Tunneling como los de inyección mostrados enla figura 7.10. La calibración se llevo a cabo a través de los siguientes pasos.

• Se aumento la pendiente en la memoria 1, de manera igualamos la pendiente de inyección dela memoria 2. Estos se llevo acabo aumento la corriente que circula por el transistor deinyección, para esto se aplicaron pulsos de Tunneling para disminuir el voltaje FGinc1 deesta manera aumentamos la corriente que circula por el transistor de inyección principal de lamemoria 1, en la figura 7.12 se demuestra la disminución del voltaje FGinc1.

• Se disminuyo la pendiente de inyección de la memoria 2 para equiparar las dos memorias.Para esto disminuimos la corriente que circula por el transistor de inyección de la memoriados aumentando el voltaje FGinc2, parte inferior figura 7.12.

• Para igualar los dos deltas de las memorias 1 y 2, disminuimos el voltaje FGdec2, a través depulsos de inyección en el circuito de calibración 2.

Los datos finales obtenidos de la figura 7.11, se muestran en la tabla 7.2. Si bien losresultados no fueron exactos son casi iguales, con una diferencia de 1 [mV] entre el delta deinyección entre las dos memorias, lo cual es aceptable, el resto de los resultados demuestradiferencias del orden de los V, lo cual es bueno.

Tabla 7.2. Resultados de las simulaciones memoria y diferencial después de la calibración.

Estructura Memoria N°1 Memoria N°2

Voltaje Inicial salida del diferencial 323.211 [mV] 301.935 [mV]

Voltaje Final salida del diferencial 323,721 [mV] 302,025 [mV]

Diferencia Inyección -118.472 [mV] -117.635 [mV]

Diferencia Tunneling 117.982 [mV] 117.725 [mV]

Delta inyección salida del amplificador -143.99 [mV] -143.404 [mV]

Delta Tunneling salida del amplificador 143.373 [mV] 143.523 [mV]

Page 96: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

96

8. CONCLUSIÓN

8.1. CONCLUSIONES

Durante el desarrollo de esta memoria de titulo se logro identificar y describir elfuncionamiento de cada uno de los elementos que componen los algoritmos de procesamientoadaptivo de señales, LMS y GHA.

Aquí logramos apreciar la simplicidad de loas ecuaciones que conforman el algoritmo LMS,la cual nos permite una fácil implementación en hardware. El algoritmo GHA por otro lado, nospresenta un nivel un poco mas complejo en el diseño de hardware, pero no es una traba para lediseño, debido a que el tipo de elementos requeridos para su implementación es el mismo que seutiliza en LMS.

Se describieron en forma clara y concisa los programas que se necesitan para la utilizar labiblioteca diseñada mostrando sus virtudes, defectos y demostrando que se complementanmutuamente en la implementación y simulación de circuitos en VLSI.

Si bien el diseño de la biblioteca quedó condicionado a la utilización de ELECTRIC, noocurre lo mismo con el programa que se utilice para la simulación, permitiéndonos de esta formabuscar y probar distintos programas de simulación SPICE que nos permitan disminuir el tiempo queser requiere para la simulación de circuitos.

Se ha logrado diseñar y demostrar la funcionalidad de la biblioteca, mediante lassimulaciones de cada uno de los elementos que la componen. Además se lograron crear lasfunciones necesarias para genera las variaciones en los tamaños de los transistores y los parámetrosde los modelos. De esta manera, podemos contra con una herramienta que permita acocarnos cadavez mas a las variaciones generadas en los procesos de fabricación de un circuito e implementarlasen nuestras simulaciones.

A través de las distintas pruebas que se realizaron a los circuitos diseñados utilizando lasfunciones creadas en Matlab, nos dimos cuenta la importancia de contar con este tipo deherramientas. Las cuales nos muestran de manera más clara y concisa el funcionamiento real de loscircuitos, al estar expuestos a variaciones en sus parámetros. De esta forma el diseñador puede ver eltipo de problemas que se podrían llegar a presentar y generar soluciones en forma anticipada adichos problemas.

Finalmente logramos demostrar el funcionamiento de todas las herramientas creadas tanto enELECTRIC como en Matlab, lo que nos permiten llevar a buen puerto el diseño de algoritmo deprocesamiento adaptivo de señales.

Después de haber enfrentado los distintos problemas e interrogantes, junto con haberanalizado la tecnología y métodos de diseño presente en esta nueva área dentro de nuestra carrera, lacual nos abre un universo lleno de posibilidades dentro del diseño de VLSI análogo, podemosconcluir que sen logrado los objetivos impuesto.

Todos los elementos diseñados en esta biblioteca quedaron almacenados en el archivo denombre “Biblioteca_VLSI”, con extensión “elib”. Para poder utilizar dicha biblioteca en otrosoftware, es necesario verificar que este lea este tipo de extensión y además debe soportar el diseñoescalable. La utilización de la biblioteca en ELECTRIC es sencilla, solo se debe cargar el archivo yautomáticamente queda lista para ser utilizada.

Page 97: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

97

Durante las simulaciones con el software LTSpice, nos dimos cuenta que es propenso agenerar errores de simulación. Esto se debe, a las ecuaciones utilizadas en el diseño de las fuentes decorriente. El software utiliza una matemática muy rudimentaria para el cálculo de las condicionesiniciales de los circuitos, así como también durante la simulación. Debido a esto es muy importantefijar de manera correcta las condiciones iniciales dentro del circuito, de esta forma evitaremos loanterior.

Dentro del diseño de las distintas celdas de layout que componen la biblioteca, se tomoespecial cuidado en el ruteo interno de las celdas. Este debe ser realizado en metal1 y metal2,dejando metal 3 y metal4 para ser utilizado en la unión de las distintas celdas. De esta forma nosaseguramos de no provocar cortocircuitos en la unión de dos o más celdas.

8.2. TRABAJOS FUTUROS

En este trabajo guardan cimentadas las bases para seguir diseñado elementos que completencada vez más esta biblioteca y de esta manera permitir la posibilidad de crear diferentes algoritmosde procesamiento adaptivo de señales en VLSI análogo, como análisis de componentesindependientes (ICA) o redes de decorrelacion, entre otras. Se debe hacer un estudio acabado de losdistintos algoritmos identificando claramente su funcionamiento del punto de vista circuital y loselementos que se necesitaran para su implementación en VLSI. Dentro del diseño VLSI para algunos algoritmos es necesario contar con multiplicadores depulsos, es por esto que queda como tarea diseñar este tipo de multiplicadores. Dado que el condensador que se diseñó en layout es de 100 [fF], queda como tarea diseñardistintos condensadores según la capacidad que se requiera para futuros diseños. El manejo automático de los tamaños en los distintos elementes que componen las celdas delayout es bastante limitado. Es importante mencionar que el transistor de tunneling fue diseñadopara un ancho de 1.2 [ ] y un largo de 0.8 [ ]. En el cado del transistor de inyección este fuediseñado para un ancho de 1 [ ] y un largo de 1 [ ]. Debido a tipo de memorias que se utilice en unfuturo, el diseñador deberá agregar otros transistores de tunneling e inyección según corresponda sunecesidad. No así para el diseño de esquemático, ya que como lo habíamos mencionado al pasar losparámetros de ancho y largo de la celda, esta automáticamente cambia de tamaño los transistores, noasí en el diseño de layout, donde el diseñador debe modificar manualmente dichos transistores.

Page 98: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

98

9. REFERENCIAS

[1] B. Widrow and M. Lehr, “30Years of Adaptive Neuronal Networks: Perceptron, Madaline,and Backpropagation”, Proceeding of the IEEE, vol. 78, no. 9, 1990.

[2] C. Diorio, D. Hsu and M. Figueroa, “Adaptive CMOS: From Biological Inspiration toSystems-on-a-Chip”, Proceeding of the IEEE, vol. 90, no. 3, pp. 345-347, 2002.

[3] http://mosis.org/Technical/Testdata/tsmc-035-prm.html.[4] http://www.staticfreesoft.com/index.html.

[5] S. Haykin, Neural Networks a comprehensive foundation, Prentice Hall, 1999.[6] K. Rahimi, C. Diorio, C. Hernandez, C. Brockhausen, “A simulation model for floating-

gate MOS synapse transistors”, Proceedings of the IEEE, vol. 2, 2002.[7] M. Figueroa, S. Bridges, “A 19.2 GOPS Mixed-Signal Filter With Floating-Gate

Adaptation”, Proceeding of the IEEE, vol. 39, no. 7, 2004.[8] A. Sharon, A. Zentner, Z. Sharvit and Y. Goldberg “VLSI Work Gilbert Multiplier”,

School of Engineering and Computer Science, The Hebrew University, Jerusalem.[9] P. E. Allen and D. R. Holberg, CMOS Analog Cuircuit Design, Oxford University Press,

2002.[10] M. Figueroa, S. Bridges and C. Diorio, “On- Chip Compensation of Divece-Mismathch

Effects in Analog VLSI Neural Network”, University of Washington, 2004.[11] WinSpice3 User’s Manual. 5 January, 2006. Mike Smith. Copyright©2003 Mike Smith.

[12] M. Lenzlinger and E. H. Snow, “Fowler-Nordheim tunneling into thermally grown SiO2”,J. of Applied Phys., vol. 40, no. 6, 1969.

[13] R. Brause, J. W, “A VLSI-Design of the minimum entropy neuron”, Goethe-University,Frankfurt a. M., Alemania.

[14] K. I. Diamantaras, “Principal Component Neural Networks Theory and Applications”,Aristotly University Thessaloniki.

[15] D. T. M. Slock, “On the Convergence Behavior of the LMS and Normalized LMSAlgorithms”, Proceedings of the IEEE, vol. 41, no. 9, 1993.

[16] B. Widrow, J. M. McCool, M. G. Larimore and C. R. Johnson, “Stationary andNonstationary Learning Characteristics of the LMS adaptive Filter ”, Proceedings of theIEEE, vol. 64, no. 8, 1978.

[17] S. Fiori, “An Experimental Comparison of Three PCA Neural Networks”, Dept. ofElectronics and Automatics, University of Ancona, Ancona, Italy.

[18] J. Killens, “Utilizing Standard CMOS Process Floating Gate Devices for Analog Design”,Mississippi State University, 2001.

[19] S. C. Douglas and T. Meng, “Normalized Data Nonlinearities for LMS Adaptation”, IEEETransactions on Signal Processing, vol. 42, no. 6, 1994.

Page 99: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

99

10. ANEXOS.

10.1. ANEXO 1: REGLAS PARA CAPACITOR POLY1-POLY2.

SCMOS Layout Rules - Poly2 for CapacitorThe poly2 layer is a second polysilicon layer (physically above the standard, or first, poly layer).The oxide between the two polys is the capacitor dielectric. The capacitor area is the area ofcoincident poly and electrode.

LambdaRule Description

SCMOS SUBM DEEP

11.1 Minimum width 3 1 7 2 n/a

11.2 Minimum spacing 3 3 3 4 n/a

11.3 Minimum poly overlap 2 5 5 6 n/a

11.4 Minimum spacing to active or well edge(not illustrated) 2 2 n/a

11.5 Minimum spacing to poly contact 3 6 n/a

11.6 Minimum spacing to unrelated metal 2 2 n/a

Exceptions for AMIS C30 0.35 micron process:1 Use lambda=8 for rule 11.1 only when using SCN4ME2 Use lambda=10 for rule 11.1 only when using SCN4ME_SUBM3 Use lambda=4 for rule 11.2 only when using SCN4ME4 Use lambda=4 for rule 11.2 only when using SCN4ME_SUBM5 Use lambda=5 for rule 11.3 only when using SCN4ME6 Use lambda=6 for rule 11.3 only when using SCN4ME_SUBM

Page 100: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

100

10.2. ANEXO 2: TABLA DE IDENTIFICACIÓN DE ELEMENTOS DENTRO DE UN NETLIST

Letter DescriptionR Resistor

C Capacitor

L Inductor

K Coupled inductor

S Voltage-controlled switch

W Current-controlled switch

I Independent current source

G Linear voltage-controlled current source

E Linear and non-linear voltage-controlled voltagesource

F Linear and non-linear current-controlled currentsource

H Linear current-controlled voltage source

B Non-linear dependent voltage or current source

T Lossless transmission line

O Lossy transmission line

U Uniform distributed RC transmission lines

D Diode

Q Bipolar Junction Transistor (BJT)

J Junction Field-Effect Transistor (JFET)

M MOSFET

Z MESFET

10.3. ANEXO 3: FUNCIONES PARA ANÁLISIS DE MONTECARLO.

10.3.1 Anexo 3(a): Función Genera_struct.function [Modelos,SubCircuitos,Netlist_temporal]=Genera_Struct(Netlist)extension = Netlist(findstr(Netlist,'.'):end);nombre_archivo = Netlist(1:findstr(Netlist,'.')-1);puntero_Netlist=fopen(Netlist);SubCircuitos=0;

Page 101: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

101

Modelos=0;Netlist_temporal='';%=========================GENERACION DE MODELOS Y ESTRUCTURAS ======================while ~feof(puntero_Netlist) linea_netlist=fgetl(puntero_Netlist); if ~isempty(findstr(linea_netlist,'.include'))|~isempty(findstr(linea_netlist,'.include'))|... ~isempty(findstr(linea_netlist,'.lib'))|~isempty(findstr(linea_netlist,'.LIB')) vacios = findstr(linea_netlist,' '); Direccion = linea_netlist(vacios(1)+1:end); Modelo_ant=Modelos; SubCircuito_ant=SubCircuitos; [Modelos,SubCircuitos]=modelos(Direccion); if isstruct(Modelos) Modelos=Agrega(Modelos,Modelo_ant); elseif Modelos==0 Modelos=Modelo_ant; end if isstruct(SubCircuitos) SubCircuitos=Agrega(SubCircuitos,SubCircuito_ant); elseif SubCircuitos==0 SubCircuitos=SubCircuito_ant; end end Netlist_temporal=strvcat(Netlist_temporal,linea_netlist);endfclose(puntero_Netlist);%=========================FUNCIÓN GENERACION DE ESTRUCTURAS ======================function [Modelos,SubCircuito]=modelos(Archivo)puntero_archivo=fopen(Archivo);if puntero_archivo<0 clc disp('La Direccion o el Nombre del Archivo no Existen') disp(strcat('Direccion Invalida: ',Archivo)) Modelos=0; SubCircuito=0; pause returnendSalir_Model=1;Salir_Circuito=1;SubCircuito=0;contador=1Modelos=0;Direcciones=0;Contenido=cell(2,1);while ~feof(puntero_archivo) linea=fgetl(puntero_archivo); if ~isempty(findstr(linea,'.include'))|~isempty(findstr(linea,'.include'))|... ~isempty(findstr(linea,'.lib'))|~isempty(findstr(linea,'.LIB')) vacios = findstr(linea,' '); Direccion = linea(vacios(1)+1:end); Modelo_ant=Modelos;

Page 102: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

102

SubCircuito_ant=SubCircuito; [Modelos,SubCircuito]=modelos(Direccion); if isstruct(Modelos) Modelos=Agrega(Modelos,Modelo_ant); elseif Modelos==0 Modelos=Modelo_ant; end if isstruct(SubCircuito) SubCircuito=Agrega(SubCircuito,SubCircuito_ant); elseif SubCircuito==0 SubCircuito=SubCircuito_ant; end end if ~isempty(findstr(linea,'.MODEL'))|Salir_Model==0 if ~isempty(findstr(linea,'.MODEL')) Salir_Model=0; expr='.MODEL+\s+(?<Nombre>\w+)\s+(?<Tipo>\w+)'; [modelo mat] = regexp(linea, expr, 'names', 'match'); Modelo_Nombre=strcat(modelo.Tipo,'.',modelo.Nombre); TYP=modelo.Tipo NAM=modelo.Nombre end expr_nombre='\w*[a-zA-Z0-9]+\s+='; expr_valor='\<=+\s+[-0-9.eE]+\>'; mat_nombre = regexp(linea, expr_nombre, 'match'); mat_valor = regexp(linea, expr_valor, 'match'); if ~isempty(mat_nombre)&~isempty(mat_valor) for i=1:length(mat_valor) valor_real=mat_valor{i} valor_real=valor_real(2:end) nombre = regexp(mat_nombre(i), '\w*[a-zA-Z0-9]', 'match') modelo_creado = strcat('Modelos.',Modelo_Nombre,'.',nombre{1},'=',valor_real); eval(modelo_creado{1}); end end if ~isempty(findstr(linea,')')) Salir_Model=1; end end if ~isempty(findstr(linea,'.SUBCKT'))|Salir_Circuito==0 if ~isempty(findstr(linea,'.SUBCKT')) Salir_Circuito=0; expr_circ='\<[.a-zA-Z0-9_-]\w*'; Circuito = regexp(linea, expr_circ, 'match'); Circuito_Nombre=strcat(Circuito{2},'.'); nodos=cell(1,length(Circuito)-2); for i=3:length(Circuito) nodos{i-2}=Circuito{i}; end SubCircuito.(Circuito{2}).Nodos=nodos; elseif isempty(findstr(linea,'.ENDS')) Contenido{contador} = linea;

Page 103: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

103

contador=contador+1; SubCircuito.(Circuito{2}).Contenido=Contenido; end if ~isempty(findstr(linea,'.ENDS')) contador=1; Salir_Circuito=1; end endendfclose(puntero_archivo);%=========================FUNCIÓN JUNTA ESTRUCTURAS ======================function Nuevo = Agrega(Nuevo,Antiguo)if isstruct(Antiguo) Nombres = fieldnames(Antiguo) for i=1:length(Nombres) Nuevo.(Nombres{i})= Antiguo.Nombres{i} endend

10.3.2 Anexo 3(b): Función Agrega_modelos.%=========================FUNCIÓN AGREGA MAS MODELOS ======================function[Modelos,Nombres_generados] = agrega_modelos(Modelos_Cambiar,Modelos);Model_Tipos_Cambiar = fieldnames(Modelos_Cambiar)Model_Tipos_Actual = fieldnames(Modelos)for h=1:length(Model_Tipos_Actual) for j=1:length(Model_Tipos_Cambiar) Tipo_Cambiar = Model_Tipos_Cambiar{j} Tipo_Actual = Model_Tipos_Actual{h} if strcmp(Tipo_Cambiar,Tipo_Actual) Model_Tipo_Nombres_Actuales = fieldnames(Modelos_Cambiar.(Tipo_Cambiar)) Model_Tipo_Nombres_Cambiar = fieldnames(Modelos.(Tipo_Actual)) for NA=1:length(Model_Tipo_Nombres_Actuales) for NC=1:length(Model_Tipo_Nombres_Cambiar) Nombre_Cambiar = Model_Tipo_Nombres_Cambiar{NC}; Nombre_Actual = Model_Tipo_Nombres_Actuales{NA}; if strcmp(Nombre_Cambiar,Nombre_Actual) cantidad=Modelos_Cambiar.(Tipo_Cambiar).(Nombre_Cambiar).Cantidad; for u=1:cantidad if u==1 NOMBRE=Nombre_Actual; almacena{u}=NOMBRE; Nombres_generados.(Tipo_Actual)=almacena; else NOMBRE=strcat(Nombre_Actual,num2str(u-1)); almacena{u}=NOMBRE; Nombres_generados.(Tipo_Actual)=almacena; end Modelos.(Tipo_Actual).(NOMBRE)=Modelos.(Tipo_Actual).(Nombre_Actual); Model_Tipo_Nombres_Parametro_Actuales =fieldnames(Modelos.(Tipo_Actual).(NOMBRE)); Model_Tipo_Nombres_Parametro_Cambiar =fieldnames(Modelos_Cambiar.(Tipo_Cambiar).(Nombre_Cambiar));

Page 104: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

104

for PA=1:length(Model_Tipo_Nombres_Parametro_Actuales) for PC=2:length(Model_Tipo_Nombres_Parametro_Cambiar) Parametro_Actual = Model_Tipo_Nombres_Parametro_Actuales{PA}; Parametro_Cambiar = Model_Tipo_Nombres_Parametro_Cambiar{PC}; if strcmp(Parametro_Cambiar,Parametro_Actual) valor=Modelos.(Tipo_Actual).(NOMBRE).(Parametro_Actual);

modificacion=Modelos_Cambiar.(Tipo_Cambiar).(Nombre_Cambiar).(Parametro_Cambiar); valor_nuevo=valor+rand*modificacion; Modelos.(Tipo_Actual).(NOMBRE).(Parametro_Actual)= valor_nuevo; end end end end clear almacena; end end end end endend

10.3.3 Anexo 3(c): Función Escribir.function archivo_modificado = Escribir(Netlist,Modelos,SubCircuitos)extension = Netlist(findstr(Netlist,'.'):end);nombre_archivo = Netlist(1:findstr(Netlist,'.')-1);puntero_Netlist=fopen(Netlist);archivo_modificado=strcat(strcat(nombre_archivo,'_modificado'),extension);destino=fopen(archivo_modificado,'w');cont_includ=1;while ~feof(puntero_Netlist) linea_netlist=fgetl(puntero_Netlist); if (~isempty(findstr(linea_netlist,'.include'))|~isempty(findstr(linea_netlist,'.include'))|... ~isempty(findstr(linea_netlist,'.lib'))|~isempty(findstr(linea_netlist,'.LIB')))&cont_includ<=1 cont_includ=cont_includ+1; if isstruct(Modelos) destino = escribir_modelos(destino,Modelos); end if isstruct(SubCircuitos) destino = escribir_subcircuito(destino,SubCircuitos); end linea_netlist=''; elseif (~isempty(findstr(linea_netlist,'.include'))|~isempty(findstr(linea_netlist,'.include'))|... ~isempty(findstr(linea_netlist,'.lib'))|~isempty(findstr(linea_netlist,'.LIB')))&cont_includ>1 linea_netlist=''; end fwrite(destino,linea_netlist); fprintf(destino,'\n');endfclose(puntero_Netlist);fclose(destino);%===============FUNCIÓN ESCRIBE MODELOS EN ARCHIVO DESTINO ======================

Page 105: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

105

function destino = escribir_modelos(destino,Modelos)fprintf(destino,'** *******************************************\n');fprintf(destino,'** **********MODELOS A UTILIZAR***************\n');fprintf(destino,'** *******************************************\n');Tipos=fieldnames(Modelos)for T=1:length(Tipos) Nombres=fieldnames(Modelos.(Tipos{T})); for N=1:length(Nombres) Parametros=fieldnames(Modelos.(Tipos{T}).(Nombres{N})); contador=1; for P=1:length(Parametros) Valor_parametro=Modelos.(Tipos{T}).(Nombres{N}).(Parametros{P}); Valor_parametro=num2str(Valor_parametro); if P==1 linea_modelos=strcat(['.MODEL' ' ' Nombres{N} ' ' Tipos{T} '(' Parametros{P} ' = 'Valor_parametro]); fwrite(destino,linea_modelos); fprintf(destino,'\n'); linea_modelos='+'; elseif contador <= 3 linea_modelos=strcat([linea_modelos ' ' Parametros{P} ' = ' Valor_parametro ' ']); contador=contador+1; else fwrite(destino,linea_modelos); fprintf(destino,'\n'); linea_modelos='+'; linea_modelos=strcat([linea_modelos ' ' Parametros{P} ' = ' Valor_parametro ' ']); contador=1; end if P==length(Parametros) linea_modelos=strcat(linea_modelos,')'); fwrite(destino,linea_modelos); fprintf(destino,'\n'); end end fprintf(destino,'\n'); fprintf(destino,'\n'); endendfprintf(destino,'** ******************************************\n');fprintf(destino,'** ******FIN DE MODELOS A UTILIZAR***********\n');fprintf(destino,'** ******************************************\n');

%========== FUNCIÓN ESCRIBE SUBCIRCUITOS EN ARCHIVO DESTINO ====================function destino = escribir_subcircuito(destino,SubCircuitos)clcfprintf(destino,'** *******************************************\n');fprintf(destino,'** *******SUBCIRCUITO A UTILIZAR**************\n');fprintf(destino,'** *******************************************\n');Nombres=fieldnames(SubCircuitos);for N=1:length(Nombres) Nodos = SubCircuitos.(Nombres{N}).Nodos;

Page 106: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

106

Contenido = SubCircuitos.(Nombres{N}).Contenido; linea_subcircuito=strcat(['.SUBCKT' ' ' Nombres{N} ]); for Nod=1:length(Nodos) linea_subcircuito=strcat([linea_subcircuito ' ' Nodos{Nod}]); end fwrite(destino,linea_subcircuito); fprintf(destino,'\n'); for C=1:length(Contenido) linea_subcircuito=Contenido{C}; fwrite(destino,linea_subcircuito); fprintf(destino,'\n'); end linea_subcircuito=strcat(['.ENDS' ' ' Nombres{N} ]); fwrite(destino,linea_subcircuito); fprintf(destino,'\n'); fprintf(destino,'\n');endfprintf(destino,'** ******************************************\n');fprintf(destino,'** ****FIN DE SUBCIRCUITO A UTILIZAR*********\n');fprintf(destino,'** ******************************************\n');

10.3.4 Anexo 3(d): Función asignacion_aleatoria.function archivo_final=Asignacion_Aleatoria(Netlist,Modelos)Tipos_Modelos={'R';'C';'SW';'CSW';'URC';'LTRA';'D';'NPN';'PNP';'NJF';'PJF';... 'NMOS';'PMOS';'NMF';'PMF'};Nombre_Modelos={'R';'C';'S';'W';'U';'O';'D';'Q';'Q';'J';'J';'M';'M';'Z';'Z'};%-----------------------------------------------------------------------extension = Netlist(findstr(Netlist,'.'):end);nombre_archivo = Netlist(1:findstr(Netlist,'.')-1);archivo_final=strcat(strcat(nombre_archivo,'_final'),extension);anterior=fopen(Netlist,'r');modifica=fopen(archivo_final,'w');%-----------------------------------------------------------------------TYPE=fieldnames(Modelos);clcwhile ~feof(anterior) linea_netlist=fgetl(anterior); if ~isempty(linea_netlist) primera_letra=linea_netlist(1) for i=1:length(Nombre_Modelos) if primera_letra==Nombre_Modelos{i} linea_netlist=reemplaza(linea_netlist,Modelos,i); break; end end end fwrite(modifica,linea_netlist); fprintf(modifica,'\n');endfclose(anterior);fclose(modifica);%================FUNCIÓN REEMPLAZA MODELOS ALETORIOS =====================

Page 107: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

107

function linea_netlist=reemplaza(linea_netlist,Modelos,Tipo_elemento)clcexpr='\<\w*[0-9@a-zA-Z=._-]+\>';Palabras = regexp(linea_netlist, expr, 'match');TYPES=fieldnames(Modelos);Comienzo_elemento={3;3;3;3;4;6;3;4;4;4;4;5;5;4;4};inicio = Comienzo_elemento{Tipo_elemento}

if length(Palabras)>=4 for T=1:length(TYPES) NAMES=fieldnames(Modelos.(TYPES{T})) for P=4:length(Palabras) if strcmp(Palabras{P},NAMES{1}) linea_netlist=remplaza_dos(linea_netlist,Palabras , NAMES,inicio,P); end end endendfunction linea_netlist=remplaza_dos(linea_netlist,Palabras , NAMES,inicio,P)% Me eseguro que el numero generado aletoriamente este dentro de la% cantidad de elementos de NAMES

while true numero=length(NAMES); numero=round(rand*numero); if (numero>=1)&(numero<=length(NAMES)) break; endendPalabras{P}=NAMES{numero};temp=Palabras{1};for i=2:length(Palabras) temp=strcat([temp ' ' Palabras{i} ' ']);endlinea_netlist=temp;

10.3.5 Anexo 3(e): Función Modifica_size.function [archivo_modificado]=Modifica_Size(Netlilst,Tipos)clc% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %extension = Netlilst(findstr(Netlilst,'.'):end);nombre_archivo = Netlilst(1:findstr(Netlilst,'.')-1);puntero=fopen(Netlilst);archivo_modificado=strcat(strcat(nombre_archivo,'_size'),extension);destino=fopen(archivo_modificado,'w');names_tipos = fieldnames(Tipos);parametros_transistor={'AD';'AS';'PD';'PS'};while ~feof(puntero) linea=fgetl(puntero); if isempty(linea) linea='*';

Page 108: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

108

end if(linea(1)~='*'|linea(1)~='.') for i=1:length(names_tipos) if ~isempty(findstr(linea(1),names_tipos{i})) if names_tipos{i}=='C'|names_tipos{i}=='R'|names_tipos{i}=='L'|names_tipos{i}=='D' if names_tipos{i}=='D' buscar='[0-9.]+[0-9]'; [m s e] = regexp(linea,buscar, 'match', 'start', 'end'); prefijo=''; numero=str2num(linea(s(1):e(1))); else buscar='[0-9.]+[a-zA-Z]'; [m s e] = regexp(linea,buscar, 'match', 'start', 'end'); prefijo=linea(e(1)); numero=str2num(linea(s(1):e(1)-1)); end numero=numero+randn*(Tipos.(names_tipos{i})); if numero<0 numero=numero*-1; end linea=regexprep(linea, buscar, strcat(num2str(numero),prefijo)); elseif isstruct(Tipos.(names_tipos{i})) names_variables=fieldnames(Tipos.(names_tipos{i})); if ~isempty(findstr(linea(1),'M')) [m s e] = regexp(linea,'W=[0-9.]+[a-zA-Z]', 'match', 'start', 'end'); W=str2num(linea(s(1)+2:e(1)-1)); [m s e] = regexp(linea,'L=[0-9.]+[a-zA-Z]', 'match', 'start', 'end'); L=str2num(linea(s(1)+2:e(1)-1));

for j=1:length(names_variables) variable=names_variables{j}; if findstr(linea,variable) buscar=strcat(variable,'=[0-9.]+[a-zA-Z]'); [m s e] = regexp(linea,buscar, 'match', 'start', 'end'); numero=str2num(linea(s(1)+2:e(1)-1)); prefijo=linea(e(1)); numero=numero+randn*(Tipos.(names_tipos{i}).(names_variables{j})); if numero<0 numero=numero*-1; end linea=regexprep(linea, buscar, strcat(variable,'=',num2str(numero),prefijo)); end if variable=='W' W=numero; elseif variable =='L' L=numero; end end end end end for k=1:length(parametros_transistor)

Page 109: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

109

if ~isempty(findstr(linea,parametros_transistor{k})) buscar=strcat(parametros_transistor{k},'=[0-9.]+[a-zA-Z]'); [m s e] = regexp(linea,buscar, 'match', 'start', 'end'); if ~isempty(s) numero=str2num(linea(s(1)+3:e(1)-1)); prefijo=linea(e(1)); numero=numero*(W/L); if numero<0 numero=numero*-1; end linea=regexprep(linea, buscar,strcat(parametros_transistor{k},'=',num2str(numero),prefijo)); end end end end end fwrite(destino,linea); fprintf(destino,'\n');endfclose(puntero);fclose(destino);

10.3.6 Anexo 3(f): Función Buscar.function [Modelos,SubCircuito,Netlist_2]=Buscar(Netlist,Modelos,SubCircuito)salir=size(Netlist);Salir_Circuito=1;Salir_Model=1;contador=1;Circuito=0;Netlist_2='';si=0;Circuito_Nombre='';Contenido='';for cuenta=1:salir(1) linea=Netlist(cuenta,1:end); if si==1&linea(1)=='+' linea=''; si=0; end if ~isempty(findstr(linea,'.MODEL'))|Salir_Model==0 if ~isempty(findstr(linea,'.MODEL')) Salir_Model=0; expr='.MODEL+\s+(?<Nombre>\w+)\s+(?<Tipo>\w+)'; [modelo mat] = regexp(linea, expr, 'names', 'match'); TYP=modelo.Tipo NAM=modelo.Nombre end expr_nombre='\w*[a-zA-Z0-9]+\s+='; expr_valor='\<=+\s+[-0-9.eE]+\>'; mat_nombre = regexp(linea, expr_nombre, 'match'); mat_valor = regexp(linea, expr_valor, 'match');

Page 110: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

110

if ~isempty(mat_nombre)&~isempty(mat_valor) for i=1:length(mat_valor) valor_real=mat_valor{i}; valor_real=valor_real(2:end); valor_real=str2num(valor_real); nombre = regexp(mat_nombre(i), '\w*[a-zA-Z0-9]', 'match') nom=nombre{1}; nom=nom{1}; Modelos.(TYP).(NAM).(nom)=valor_real; end end if ~isempty(findstr(linea,')')) Salir_Model=1; end linea=''; end if ~isempty(findstr(linea,'.SUBCKT'))|Salir_Circuito==0 if ~isempty(findstr(linea,'.SUBCKT')) clear Circuito_Nombre; clear Contenido; linea_2=Netlist(cuenta+1,1:end); if linea_2(1)=='+' Circuito_2=genera(linea_2); si=1; else si=0; end Salir_Circuito=0; Circuito=genera(linea); Circuito_Nombre=Circuito{2}; if ~isempty(findstr(Circuito_Nombre,'-')) Circuito_Nombre=regexprep(Circuito_Nombre, '-', '_') end

if si==1 con=1; nodos=cell(1,(length(Circuito)-2)+length(Circuito_2)); for i=3:length(Circuito) nodos{con}=Circuito{i}; con=con+1; end for i=1:length(Circuito_2) nodos{con}=Circuito_2{i}; con=con+1; end else nodos=cell(1,length(Circuito)-2); for i=3:length(Circuito) nodos{i-2}=Circuito{i}; end end SubCircuito.(Circuito_Nombre).Nodos=nodos;

Page 111: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

111

elseif isempty(findstr(linea,'.ENDS')) Contenido{contador,1} = linea; contador=contador+1; SubCircuito.(Circuito_Nombre).Contenido=Contenido; end if ~isempty(findstr(linea,'.ENDS')) contador=1; Salir_Circuito=1; end linea=''; end Netlist_2=strvcat(Netlist_2,linea);end

function palabras = genera(linea)palabra='';con=1;for i=length(linea):-1:1 if linea(i)~=' ' fin=i+1; break; endend

for i=1:fin if linea(i)~=' ' letra=linea(i); if letra=='+'&i==1 letra=''; end palabra=strcat(palabra,letra); else palabras{con}=palabra; palabra=''; con=con+1; endend

10.3.7 Anexo 3(g): Función Agregar_subcircuitos.function[SubCircuitos_modificados] = agrega_SubCircuitos(cantidad,SubCircuitos)Nombres = fieldnames(SubCircuitos)for Nom=1:length(Nombres) for Cant=1:cantidad new_name=strcat(Nombres{Nom},'_',num2str(Cant)); SubCircuitos_midificados.(Nombres{Nom}).(new_name).Nodos =SubCircuitos.(Nombres{Nom}).Nodos; SubCircuitos_midificados.(Nombres{Nom}).(new_name).Contenido=SubCircuitos.(Nombres{Nom}).Contenido; endend

Page 112: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

112

10.3.8 Anexo 3(h): Función Asignación_subcircuito.function archivo_final=Asignacion_SubCircuitos(Netlist,SubCircuitos)%-----------------------------------------------------------------------global modificaglobal anteriorextension = Netlist(findstr(Netlist,'.'):end);nombre_archivo = Netlist(1:findstr(Netlist,'.')-1);archivo_final = strcat(strcat(nombre_archivo,'_SubCircuitos'),extension);anterior = fopen(Netlist,'r');modifica = fopen(archivo_final,'w');%-----------------------------------------------------------------------while ~feof(anterior) linea_netlist=fgetl(anterior); if ~isempty(linea_netlist) primera_letra=linea_netlist(1) if primera_letra=='X' linea_netlist=reemplaza(linea_netlist,SubCircuitos); end fwrite(modifica,linea_netlist); fprintf(modifica,'\n'); else fprintf(modifica,'\n'); endendfclose(anterior);fclose(modifica);% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %%================FUNCIÓN REEMPLAZA SUBCIRCUITOS ALETORIOS =====================function linea=reemplaza(linea,SubCircuitos)global modificaglobal anteriorNombres=fieldnames(SubCircuitos);while(1) for i=1:length(Nombres) nombre_corto=Nombres{i}; nombre_corto=nombre_corto(1:round(length(nombre_corto)*3/4)); if ~isempty(findstr(linea,nombre_corto)) linea=reemplaza_nombre(linea,Nombres{i},SubCircuitos) break end end fwrite(modifica,linea); fprintf(modifica,'\n'); linea=fgetl(anterior); if linea(1)~='+' if linea(1)=='X' linea=reemplaza(linea,SubCircuitos); end break endend

Page 113: Waldo Valenzuela MemoriaT Eln

SOPORTE CAD PARA PROCESAMIENTO ADAPTIVO DE SEÑALES EN VLSI.

113

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %function lin = reemplaza_nombre(linea,nombre,SubCircuitos)NAMES=fieldnames(SubCircuitos.(nombre));total=length(NAMES);while true numero=round(rand*total); if (numero>=1)&(numero<=total) break; endendnombre = encuentra(linea)lin=regexprep(linea, nombre, NAMES{numero})% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %function nombre = encuentra(linea)palabra='';con=1;for i=length(linea):-1:1 if linea(i)~=' ' fin=i; break; endend

for i=fin:-1:1 if linea(i)==' ' comienzo=i+1; break; endendnombre=linea(comienzo:fin);