Full text
Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Trabajo Fin de Máster Máster Universitario en Ingeniería de Telecomunicación Diseño Back-end VLSI para Redes Neuronales Convolucionales basadas en Computación Estocástica en Tecnología de 40 nm Autor: Iván Díez de los Ríos Luis Tutores: M. Mar Elena Pérez Alejandro Barriga-Rivera Tutor externo: Luis A. Camuñas Mesa Dptos. Ingeniería Electrónica y Física Aplicada III Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2023
Trabajo Fin de Máster Máster Universitario en Ingeniería de Telecomunicación Diseño Back-end VLSI para Redes Neuronales Convolucionales basadas en Computación Estocástica en Tecnología de 40 nm Autor: Iván Díez de los Ríos Luis Tutores: M. Mar Elena Pérez Profesora contratada doctora y Alejandro Barriga-Rivera Profesor contratado doctor interino Tutor externo: Luis A. Camuñas Mesa Profesor contratado doctor interino Dptos. Ingeniería Electrónica y Física Aplicada III Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2023
Trabajo Fin de Máster: Diseño Back-end VLSI para Redes Neuronales Convolucionales basadas en Computación Estocástica en Tecnología de 40 nm Autor: Iván Díez de los Ríos Luis Tutores: M. Mar Elena Pérez y Alejandro Barriga-Rivera Tutor externo: Luis A. Camuñas Mesa El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha:
Agradecimientos Cerrar otra etapa de estudios, suele ser un momento ansiado y deseado, en especial, cuando el último paso parece no tener fin. Por eso, me es muy gratificante terminar este trabajo, el cual no habría podido realizar solo. En primer lugar, quiero agradecer a Macarena que ha estado día a día a mi lado y que me ha dado las fuerzas necesarias para sentarme a escribir cada una de estas páginas. Es ella la que es capaz de conseguir la mejor versión de mí mismo y que cada día siga progresando. A mis padres, que me han dado todo para que sea quien soy. Agradecer también al resto de mi familia, tanto a los de siempre como a los nuevos. También quiero recordar a mis amigos a los que tantas veces les he pospuesto algún plan por falta de tiempo. Agradezco también a aquellos que han recorrido este camino al mismo tiempo que yo, José Manuel, Pablo, Eykis, Ángela, Edgardo y Francisco, que fueron grandes compañeros y amigos cuando, además, nos encontramos en la tesitura de tener que afrontar la carga del máster desde casa. Por supuesto, también quiero recordar a los profesores que nos guiaron y acompañaron durante ese período y en especial a mis tutores en este trabajo, Mar y Alejandro, sin cuyo apoyo y confianza hubiese tomado un camino diferente a este. Ellos me descubrieron el mundo de la investigación y abrieron una ventana de oportunidades. A mis compañeros de trabajo tanto de Applus como del GRVC de los cuales guardo buenos recuerdos y amistad. Aunque este trabajo cierra un ciclo dentro de mi vida académica, aún me quedan caminos por recorrer. En este trayecto me acompañan un buen número de grandes compañeros y compañeras, algunos con los que comparto edificio y otros que estoy conociendo a través del mundo. Destacar, sin duda, a las personas que me han dado la oportunidad y me ayudan a sacar lo mejor de mí, Luis, Teresa y Bernabé, y a todo el Instituto de Microelectrónica de Sevilla. Si bien muchas personas me acompañan y me han acompañado en muchos ámbitos de mi vida, también quiero dedicar un pensamiento hacia una parte muy importante de mi vida que ha sido, es y será la música. A todas las notas que han sonado mientras estaba pensando frente al ordenador y los buenos momentos que paso fantaseando en el mundo de las 88 teclas rodeado de compases y acordes. Por último, agradecer a todas las personas que pudieran estar leyendo estas líneas, pues son ellas las que hacen que estas palabras encerradas entre páginas, o documentos digitales, broten fuera de su medio y cobren algún valor. Iván Díez de los Ríos Luis Investigador Predoctoral IMSE,CNM,CSIC-US Sevilla, 2023 I
Resumen Para la implementación de circuitos integrados digitales se requiere un complejo proceso que abarca desde el planteamiento del problema a alto nivel, continuando con el diseño a nivel de comportamiento y el diseño de Back-end, para dar paso al proceso de fabricación, donde se convierte un pequeño trozo de silicio en un dispositivo capaz de procesar enormes cantidades de datos a altas velocidades. Una de las fases que se requieren para obtener un microchip digital es el proceso de síntesis. En este trabajo se expone cómo se sintetizaron una serie de diseños digitales para redes neuronales convolucionales y los resultados que se obtuvieron de la solución de alto nivel previamente propuesta. Asimismo, se pretende explicar el contexto donde se enmarca el circuito planteado y el proceso de fabricación de un microchip digital Application-Specific Integrated Circuit (ASIC) con tecnología de 40 nm de TSMC. Por último, se explican los pasos realizados, los resultados obtenidos y la ventaja del uso de estas técnicas para conseguir elaborar diseños digitales de forma mucho más rápida y eficiente. III
XÍndice Abreviado Apéndice B Tabla comparativa 45 Apéndice C Código TCL para síntesis 47 Apéndice D Algunos reportes 51 Índice de Figuras 59 Índice de Tablas 61 Índice de Códigos 63 Bibliografía 65 Índice alfabético 69 Glosario 71
Índice Resumen III Abstract V Prólogo VII Índice Abreviado IX 1 Introducción 1 1.1 Sobre Inteligencia Artificial 1 1.1.1 Redes Neuronales 2 1.1.2 Deep Learning 4 1.1.3 Redes Neuronales Convolucionales 4 1.1.4 LeNet-5 5 1.1.5 Datasets 5 MNIST 5 CIFAR-10 5 1.2 Sobre Hardware para Inteligencia Artificial 6 1.3 Sobre Computación Estocástica 8 1.3.1 Ejemplo de cómputo 8 Unipolar 8 Bipolar 9 1.4 Sobre este trabajo 9 2 Flujo de trabajo en diseño digital de circuitos integrados 11 2.1 Introducción 11 2.2 Front-end 11 2.2.1 Especificaciones del sistema 12 2.2.2 Diseño arquitectónico 12 2.2.3 Diseño lógico 12 2.3 Back-end 12 2.3.1 Síntesis 12 2.3.2 Diseño físico 13 Floorplanning 14 Place and Route 14 2.3.3 Verificación física y Aprobación 15 2.3.4 Preparación de Máscaras 16 2.3.5 Fabricación de obleas 16 2.3.6 Empaquetado 17 2.3.7 Test y Documentación 17 2.4 Procesos de fabricación de semiconductores 17 3 Objetivos 19 3.1 Introducción 19 XI
XII Índice 3.2 Objetivos 19 4 Desarrollo 21 4.1 Introducción 21 4.2 Flujo básico de síntesis 22 4.3 Ejecución 22 4.3.1 Estructura de carpetas 22 4.3.2 Cargando librerías y diseños 23 4.3.3 Lectura de los archivos HDL 23 4.3.4 Elaboración 23 4.3.5 Inicialización del diseño 23 4.3.6 Restricciones de tiempo y diseño 24 4.3.7 Directivas de optimización 24 4.3.8 Síntesis 24 Genérica 24 Mapping 25 Optimización 25 4.3.9 Reportes y analisis 25 Información de áreas 25 Información de tiempos 25 Información de potencias 27 4.3.10 Evaluación del diseño y reajuste, si es necesario 28 4.4 Entorno de ejecución 29 5 Resultados 31 5.1 Red neuronal de 64 neuronas 31 5.1.1 No-opt 31 5.1.2 Optimized 32 5.2 LeNet-5 32 5.2.1 2 bits 32 5.2.2 4 bits 32 5.3 CNN para CIFAR-10 33 5.3.1 4 bits 33 Primera capa convolucional 33 Segunda capa convolucional 34 Tercera capa convolucional 34 Cuarta capa convolucional 34 Primera capa FC 35 Segunda capa FC 35 5.3.2 8 bits 35 Primera capa convolucional 35 Segunda capa convolucional 35 Tercera capa convolucional 36 Cuarta capa convolucional 36 Primera capa FC 36 Segunda capa FC 37 5.3.3 Estimación CIFAR-10 completo 37 4 bits 37 8 bits 37 5.4 Comparativas 38 5.4.1 LeNet-5: 2 vs 4 bits 38 5.4.2 CIFAR-10: 4 vs 8 bits 38 5.4.3 LeNet-5 4bits vs CIFAR-10 4bits 38 6 Conclusiones 41
Índice XIII 6.1 Sobre el diseño electrónico 41 6.2 Líneas futuras 41 6.2.1 Otras líneas de investigación 42 Apéndice A Publicaciones 43 Apéndice B Tabla comparativa 45 Apéndice C Código TCL para síntesis 47 Apéndice D Algunos reportes 51 Índice de Figuras 59 Índice de Tablas 61 Índice de Códigos 63 Bibliografía 65 Índice alfabético 69 Glosario 71
1 Introducción Los grandes conocimientos engendran las grandes dudas. Aristóteles Desde hace muchos años, el ser humano viene soñando y fantaseando con la Inteligencia Artificial o Artificial Intelligence (AI) en inglés. Son muchas las novelas que se han redactado a lo largo de los años que describen un tipo de vida artificial que intenta imitar al ser humano. Ya en la antigüedad, Herón de Alejandría escribió un tratado titulado Los Autómatas, considerado los inicios de la robótica. Basta pensar un poco para encontrar muchos ejemplos de seres artificiales que intentan imitar al homo sapiens, seres construidos a base de madera, metal u otros organismos vivos. Seres inanimados que transgreden las normas de la naturaleza para convertirse en “seres vivos”. Si bien se han planteado muchas formas para crear estas “vidas”, una parte de las mismas ha acaparado más la atención del ser humano durante mucho tiempo. Son múltiples los tipos de seres vivos, ya sean del reino vegetal, animal, protoctistas, hongos o móneras, sin embargo, uno de los más intrigantes misterios acerca de esos seres que cobran vida es su inteligencia, su mente o su espíritu. Precisamente el punto que más nos separa del resto de animales, la inteligencia, la capacidad de hablar, razonar o tomar decisiones, es el tema más tratado dentro de los seres artificiales. Tal vez sea la soledad de la especie humana, en cuanto a inteligencia se refiere, la fuente de motivación de la que beben todos estos relatos. 1.1 Sobre Inteligencia Artificial Aunque muchos escritores gustan dejándose llevar por sus sueños y fantasías, el mundo de la investigación tiende más a la búsqueda del entendimiento del mundo que le rodea y aprovechar esos conocimientos para intentar moldearlo. La biología y la medicina han dedicado un arduo trabajo a la comprensión del sistema nervioso. Desde los primeros estudios fisiológico hasta la comprensión de las neuronas destacan nombres como Ramón y Cajal, Sherrington, Hodgkin y Huxley[15], entre otros. El nacimiento de lo que se conoce a día de hoy como AI ocurre en 1958 con Frank Rosenblatt y la creación del Perceptrón[ 37 ]. Este invento intenta imitar el funcionamiento de las neuronas reales. Visto desde una perspectiva del funcionamiento y la transmisión de información, la neurona se divide en tres partes: el cuerpo de la célula, llamado soma; las dendritas, que son las entradas de la neurona; y el axón, que es la salida de la neurona [4]. Véase la figura 1.1 donde se muestran las dendritas, el soma y el axón. Las neuronas son células especializadas que forman el sistema nervioso y son responsables de la transmisión de información. El funcionamiento de una neurona biológica se puede describir, de forma simplificada, en tres etapas: recepción, integración y transmisión. En la etapa de recepción, la neurona recibe señales eléctricas y químicas de otras neuronas o de células sensoriales a través de sus dendritas, que son prolongaciones ramificadas que se conectan con las terminales de otras neuronas. Las señales eléctricas son transformadas en señales químicas mediante la liberación de neurotransmisores en la sinapsis. En la etapa de integración, la neurona procesa y suma la información recibida para determinar si debe enviar una señal eléctrica a otras neuronas o músculos. Esta integración se lleva a cabo en el soma de la 1
2Capítulo 1. Introducción Dendrita Soma Terminal del Axon Axon Figura 1.1 La neurona y sus partes. Principalmente, las partes más destacadas a nivel funcional son las dendritas, el axón y el soma. Imagen modificada, original obtenida de Wikimedia Commons bajo licencia CC BY-SA 3.0. Fuente: https://commons.wikimedia.org/ wiki/ File:Neurona.svg. neurona, donde se concentran las dendritas y se produce el potencial de acción, que es la señal eléctrica que viaja a lo largo del axón. Finalmente, en la etapa de transmisión, la señal eléctrica se propaga por el axón de la neurona, que es una prolongación larga y delgada que se conecta con otras neuronas o músculos. La transmisión de la señal se lleva a cabo mediante la liberación de neurotransmisores en las terminales axónicas, que activan o inhiben a las neuronas o músculos conectados. Si bien el comportamiento del Perceptrón y lo que aquí se explica difiere un poco del funcionamiento real, existe otra rama de la AI, los Sistemas Neuromórficos[ 41 , 21 , 59 , 13 , 11 , 55 ], que sí trabaja de forma más análoga a los sistemas orgánicos mediante redes neuronales de spiking conocidas como Spiking Neural Network (SNN). Ahora bien, si las neuronas reales reciben y emiten pequeños pulsos eléctricos, el Perceptrón recibe y devuelve números, y las sinapsis neuronales son modeladas mediante unos pesos wi . La salida que se produce en el Perceptrón, y[n], responde a las ecuaciones siguientes: g[n] = w0+w1·x1[n]+w2·x2[n]+ ···+wi·xi[n](1.1) y[n] = fact (g[n]) (1.2) donde w0 es un término que no depende de ninguna entrada y se conoce como sesgo o bias, las xi son los valores de entrada en cada dentrita i, y fact es llamado la función de activación. La función de activación es de especial importancia y su principal atractivo es producir no linealidades en la salida. El lector puede comprobar que el resultado de g[n] es lineal para (1.1) , sin embargo las neuronas biológicas tienen salidas que no lo son, la función de (1.2) es modular este efecto, para ello pueden usarse un gran número de funciones no lineales entre las que destacan funciones Rectified Linear Unit (ReLU), que se define como fact (x) = max(0,x) , cuya salida es igual a x para cualquier valor de x>0 y 0 en otro caso, la tangente hiperbólica tanh(x), la función sigmoide σ(x)o la función escalón u(x). 1.1.1 Redes Neuronales Como ocurriría en un organismo vivo, una neurona aislada no podría considerarse inteligente, la capacidad de aprender, pensar o tomar decisiones reside en el conjunto de todas las neuronas interconectadas entre sí. Dentro del Machine Learning (ML) y la AI también existe la interconexión entre varias neuronas (perceptrones), para crear una red, la cual recibe comúnmente el nombre de Artificial Neural Network (ANN). En los diseños más sencillos la red se estructura en una serie de capas, cada una con un número diferente o no de neuronas, un ejemplo se muestra en la figura 1.2. La interconexión se genera entre una capa y la posterior, de forma que, en principio, la salida de cada neurona de una capa irá conectada a cada una de las neuronas de la siguiente
1.1 Sobre Inteligencia Artificial 3 Figura 1.2 Esquema de una red neuronal con 5 neuronas de entrada y tres de salida. La red se organiza por capas que pueden tener distinto número de neuronas y entre cada capa, todas las neuronas de una capa están conectadas con todas las de la siguiente. capa. Existen redes mucho más complejas donde las neuronas no están conectadas por capas, pero en este trabajo se simplifica a este modelo. Gracias a los pesos de cada neurona puede ajustarse la importancia que cada entrada representa para la salida de dicha neurona. Se considera la primera capa de neuronas a los mismos sensores o dispositivo que recoge el valor. Visto desde el punto de vista del sistema, si se considerase una imagen, cada uno de los píxeles de dicha imagen formarían la primera capa, la cual recibiría el nombre de capa de entrada. En la última capa puede haber diferentes configuraciones, pero una de las más sencillas podría ser usar una sola neurona que discrimine si el resultado de la red neuronal es afirmativo o positivo, lo cual podría traducirse con que exista salida mayor que cero o no1. Las ANN representan una de las arquitecturas más sencillas de implementar y son capaces de generar el resultado de una regresión de funciones no lineal con alto nivel de complejidad, tareas de clasificación u obtener la probabilidad de que una imagen de entrada represente un número, por ejemplo. Pero lo más importante de este paradigma de computación es la forma de conseguir el resultado, pues las ANN pueden aprender estas tareas a base de entrenamiento. Existen diferentes métodos de entrenamiento o aprendizaje en ML, pero aquí sólo se hablará de aprendizaje supervisado yaprendizaje no supervisado. En el primero se realiza de forma que la red recibe unas entradas y una etiqueta de salida, la etiqueta puede ser equivalente a la salida de la ANN. Por ejemplo, si se entrenase el sistema para que detecte si una imagen muestra un globo rojo o verde, dicha etiqueta podría indicar si esa imagen concreta tiene un globo de un color u otro. Por tanto, en esta modalidad la red recibe las entradas y las salidas, el proceso de entrenamiento debe ayudarle a ser capaz de generar dicha salida con unas entradas similares. En entrenamiento no supervisado no es necesario entregar ninguna etiqueta de salida, este tipo de entrenamiento suele utilizarse para tareas de clusterización, entre otras. Para conseguir entrenar las redes neuronales usando entrenamiento supervisado, es necesario definir una función de coste que medirá el error de la predicción y se intentará minimizar dicho error en base a formulas de optimización de forma reiterativa. Los parámetros a optimizar serán los pesos de cada sinapsis. Una vez entrenadas, se llama inferencia al proceso de obtener una predicción por la ANN ya entrenada. 1Puede el lector observar que esta salida es equivalente a la de la función ReLU comentado con anterioridad.
4Capítulo 1. Introducción Redes neuronales con unas pocas capas son capaces de inferir con una alta precisión en una gran cantidad de entornos diferentes. 1.1.2 Deep Learning Muchas técnicas de AI fueron desarrolladas hace varias décadas, sin embargo, la capacidad de cómputo del momento no permitía que pudieran explotarse adecuadamente. Es por ello que la explosión en el desarrollo y uso de todas estas tecnologías ha florecido en los últimos años[27]. Las mejoras en cuánto a capacidad de procesamiento no sólo han permitido el uso de dichas técnicas, sino que han facilitado que crezcan de forma exponencial, dando lugar al Deep Learning[ 25 , 39 ]. Esta rama del ML y la AI comprende modelos de redes neuronales de un cierto tamaño con capacidad para obtener un aprendizaje más profundo. Actualmente, existen redes neuronales con miles de millones de parámetros2. Figura 1.3 Imágenes generada por Inteligencia Artificial. A la izquierda Stable Diffusion y a la derecha DALL·E. Estas AI generan imagenes a partir de un texto dado, en este caso se ha usado el título de este trabajo como entrada para cada una de las AI. La tecnología permite que existan AIs capaces de reconocer personas en una imagen, generar imágenes a partir de texto, o generar códigos de programación en base a la descripción de las especificaciones. La figura 1.3 han sido obtenidas con dos redes distintas y usando el título de este trabajo como entrada. Sin duda puede hablarse de que todas estas AI están causando una revolución tecnológica. 1.1.3 Redes Neuronales Convolucionales Dentro del Deep Learning, una de las primeras arquitecturas que aparecieron fueron las redes neuronales convolucionales o Convolutional Neural Network (CNN). Este tipo de redes han sido desarrolladas para procesar información con muchas entradas 3 , la CNN implementa unas técnicas de convolución de imágenes que permite reducir su tamaño y obtener características de la misma, dichas características podrían ser los bordes de los objetos que aparecen en la imagen, determinadas formas geométricas y un sin fin de otras posibilidades. Por tanto, se consigue una reducción del número de conexiones neuronales en las primeras capas y un mayor entendimiento de las entradas. Además de las CNN, existen otras arquitecturas diferentes en el mundo de las redes neuronales, tales como redes neuronales recurrentes, en inglés Recurrent Neural Network (RNN)[ 20 , 19 ], redes generativas adversarias, en inglés Generative Adversarial Network (GAN)[ 18 ], o las llamadas Transformer[ 52 ] responsables de muchos de los avances actuales, como pueden ser los modelos de procesamiento de lenguaje natural (NLP) como GPT o LaMDA. La figura 1.3 muestra dos ejemplos de las capacidades de estas tecnologías, que a partir de un simple texto, son capaces de generar imágenes propias. La imagen de la izquierda se obtuvo con Stable Diffusion[ 42 ] y muestra algo parecido a una placa de circuito impreso con algunos integrados. 2Los parámetros o pesos pueden considerarse equivalentes a las sinapsis neuronales en los sistemas nerviosos de los seres vivos. 3 Véase una imagen como ejemplo. Una imagen con una resolución FullHD tiene 1920x1080 píxeles y al menos tres capas de colores, para una red neuronal podrían suponer más de 6.000.000 neuronas de entrada.
1.1 Sobre Inteligencia Artificial 5 A su derecha, imagen generada con DALL·E[ 31 ], que parece intentar representar un chip con anotaciones ininteligibles. 1.1.4 LeNet-5 En 1998, Yan LeCun y sus colegas plantearon la arquitectura de una CNN llamada LeNet-5[ 26 ]. Esta red está compuesta por siete capas: tres capas convolucionales, dos capas de submuestreo o Max-Pooling (MP) y dos capas completamente conectadas o Fully Connected (FC). Esta arquitectura fue utilizada para detectar números escritos de forma manual. Para ello se utilizó el dataset Modified National Institute of Standards and Technology (MNIST). Figura 1.4 Arquitectura de LeNet-5, imagen tomada del artículo original de Yann LeCun et al[ 26 ]. La arquitectura está formada por siete capas, tres de ellas convolucionales: C1, C3 y C5, dos de submuestreo: S2 y S4, y dos FC: F6 y Output. 1.1.5 Datasets Una de las partes más importantes del aprendizaje supervisado es el entrenamiento. Para ello se optimizan los pesos de forma reiterada, pero para ello se necesita de un conjunto de entradas y salidas de referencia de la que el modelo debe de aprender. Este conjunto es llamado dataset y suelen estar formada por una enorme cantidad de entradas, cuánto mayor y más representativo sea el dataset, mayor será la capacidad para generalizar. Además de las entradas de entrenamiento, existe otro subconjunto de datos usados para testear el sistema. Estas entradas son únicas y no están incluidas en las muestras de entrenamiento, pues la red podría ser capaz de adaptarse a los datos de entrenamiento y sin embargo no tener un buen funcionamiento con otros datos no incluidos. A este fenómeno se le conoce como sobreentranamiento u overfitting. Existen muchos datasets diferentes, de naturalezas totalmente diversas. Aquí se tratará sólo un par de ellos, ya que fueron utilizados por los colaboradores de este proyecto en el diseño de redes neuronales. MNIST Algunas de las muestras contenidas en este dataset se han mostrado en la figura 1.5. En cada una de las filas se representan los 10 dígitos usados para representar los números en el sistema occidental, cada columna muestra diferentes escrituras, puede apreciarse que las muestras del dataset son bastante diversas. En concreto, esta compilación está formada por 60.000 muestras de entrenamiento y 10.000 de test, cada muestra tiene una resolución de 28x28 píxeles y han sido manuscritas por distintas personas. Este dataset es de libre acceso: http://yann.lecun.com/exdb/ mnist/ . En su página se explican más detalles así como resultados obtenidos y publicados con diferentes arquitecturas. CIFAR-10 Otro dataset destacado y mucho más complejo es CIFAR-10 elaborado por el Canadian Institute For Advanced Research, que puede encontrarse en la dirección: https:// www.cs.toronto.edu/ ~kriz/ cifar.html. Al igual que en el caso anterior, son conjuntos sencillos de utilizar porque sólo tienen diez clases para clasificar. El conjunto está formado por 50.000 imágenes de entrenamiento y 10.000 de test. Cada una de las muestras tiene 3 capas de colores y una resolución de 32x32 píxeles. En concreto, las muestran representan seis tipos de animales y 4 tipos de vehículos: •Airplane: aviones, el dataset incluye desde avionetas a aviones comerciales.
12 Capítulo 2. Flujo de trabajo en diseño digital de circuitos integrados 2.2.1 Especificaciones del sistema El punto de partida de cualquier diseño radica en conocer las especificaciones y requisitos del mismo. Es una tarea fundamental, pues un fallo en los requisitos podría dar lugar a un IC inútil. Un diseñador necesitará conocer las entradas y salidas del sistema, y el funcionamiento del mismo. Sin embargo, puede que existan unos requisitos más específicos de las entradas y salidas. Es necesario tener todos estos factores en cuenta, pues el diseño hardware obtiene un producto rígido y costoso, por lo que los errores pueden ser inasumibles. 2.2.2 Diseño arquitectónico Los sistemas complejos puedenrequerir de una gran cantidad de detalles que pueden describirse en subsistemas llamados módulos. Dividir la tarea del sistema en módulos ayuda al desarrollo del sistema. Esta fase del flujo se basa en subdividir el sistema en los diferentes módulos y estudiar la compatibilidad y conectividad de los mismos entre sí. Cada módulo contará con una serie de entradas y salidas, las cuales podrán ser salidas o entradas de otro módulo o del conjunto del sistema. Se necesita prestar atención a las interfaces para asegurar la compatibilidad de los módulos, así como cerciorarse de que el conjunto cumple con las especificaciones de partida. 2.2.3 Diseño lógico El diseño lógico consiste en describir el comportamiento dentro de cada módulo. Si bien los lenguajes HDL lucen similares a lenguajes de programación para software clásicos, su uso es mucho más restrictivo. No todo lo que se puede programar en un procesador corriente es implementable a nivel hardware, por lo que las restricciones a la hora de desarrollar códigos hardware son muy altas. Para ayudar en estas tareas existen simuladores y otras herramientas que ayudan a conocer cómo será el comportamiento de lo descrito en el código. En general, el tiempo de cómputo en algunas simulaciones puede ser muy pesado ya que se calculan una gran cantidad de datos y transiciones que ocurren en tiempos de pico o nanosegundos. Los simuladores permiten trabajar a varios niveles, el nivel más alto es el del comportamiento funcional. En este caso el simulador no tiene en cuenta los retrasos que se producen por elementos lógicos del mismo. A medida que se baja de nivel se realizan simulaciones con las características de las puertas lógicas o incluso a nivel de transistores, no obstante, los niveles bajos suelen realizarse en fases de back-end, mientras que los funcionales son tareas de front-end. 2.3 Back-end Una vez que ha sido definido el comportamiento y la relación de los módulos de un diseño, debe trasladarse todo esto al dispositivo físico. Después de que haya sido testados los diseños front-end en simulación o con plataformas FPGA para conocer como será el comportamiento del diseño, es el turno para el diseñador de back-end de convertir el código en algún formato conocido por los fabricantes[ 46 ]. Esta parte del diseño es de especial importancia. Un diseño incorrecto podría dar lugar a un dispositivo totalmente inútil. No obstante, existen métodos y pruebas para poder comprobar e intentar predecir el correcto comportamiento del sistema. Uno de los detalles importantes que se necesitan para poder desarrollar estas tareas y conocer el resultado, es la elección del fabricante y conocer sus reglas. En la descripción del comportamiento, las variables de las tecnologías carecen de importancia, sin embargo, en esta etapa del proceso sí es necesario conocer los detalles de los dispositivos lógicos y los transistores que el fabricante obtiene de sus tecnologías. En la figura 2.1 se muestra una vista tridimensional de una parte de un circuito realizado con Innovus Implementation System[48]. 2.3.1 Síntesis La síntesis es un proceso que convierte un código HDL de tipo comportamental a otro de tipo estructural. El código comportamental describe lo que el diseñador espera del circuito, mientras que el código estructural describe la relación entre dispositivos lógicos. A estos últimos códigos se les denominan Register-Transfer Level (RTL), nivel de transferencia de registros. Para generar la síntesis los fabricantes ofrecen sus Process Design Kit (PDK). Estos PDK consisten en unas librerías de archivos, preparados para distintas herramientas, en el que se detallan gran parte de las especificaciones de los dispositivos que se fabricarán, incluyen distintos tipos de dispositivos lógicos, como
2.3 Back-end 13 Figura 2.1 Detalle en 3D de un circuito integrado con Innovus Implementation System. Las capas de metal se extienden de forma perpendicular entre sí para permitir el enrutado de los dispositivos. En gris se muestra el área ocupada en el diseño por cada una de las celdas. En rojo se muestra la primera capa de metal, usada para las conexiones directas con los terminales de las celdas y para los carriles de alimentación. En azul oscuro la segunda capa de metal que se extiende de forma perpendicular a la primera capa de metal. En verde se muestra la tercera capa de metal, también perpendicular a la anterior. En cian la cuarta capa, en esta capa puede verse dos grandes carriles usados para llevar la alimentación y la tierra a lo largo de todo el circuito. Por último, también en azul oscuro se puede ver la quinta capa de metal.. pueden ser puertas AND,OR,biestables,pads, etc. Además de estos dispositivos, se indican datos como los retrasos de cada puerta, para distintos casos, por ejemplo, tiempos mínimos, máximos o medios. Para poder hacer pruebas de alto nivel y conocer si una puerta es capaz de activar a otras varias, también conocido fan-out, también se incluyen datos de capacitancia, resistividad, etc. En definitiva, los PDK suelen incluir una gran colección de información, normalmente de carácter confidencial, para realizar tareas de síntesis, cálculos y verificaciones. Como se ha comentado con anterioridad, la función de la síntesis es devolver un fichero HDL en el cual se convierte todo el diseño a nivel de puertas lógicas o transistores. Para ello existen herramientas software que se encargan de esta tarea partiendo de la base de datos que el fabricante ofrece. Aunque las herramientas podrían pasar todo el diseño directamente a nivel de transistores, las foundries (fabricantes de IC) ofrecen librerías en las que ellos mismos han optimizado el diseño y cuyos datos de la caracterización de los dispositivos lógicos es facilitada por dichos fabricantes, permitiendo un comportamiento del mismo más predecible. Se ofrecen también una cantidad de módulos propietarios llamados Intellectual Property (IP) de diversa naturaleza como podrían ser memorias RAM, microcontroladores o microprocesadores, dispositivos de comunicación y un largo etcétera. Los detalles de la implementación de los módulos IP no son proporcionados por los fabricantes para evitar usos fraudulentos y proteger sus intereses. 2.3.2 Diseño físico La realización del diseño físico puede separarse en varios pasos:
14 Capítulo 2. Flujo de trabajo en diseño digital de circuitos integrados Floorplanning El primero de los pasos consiste en definir el tamaño del dado 1 y los pads del diseño, este proceso recibe el nombre de floorplanning. Gracias al proceso de síntesis puede calcularse una aproximación del área mínima necesaria para alojar el diseño. Sabiendo ese dato, puede establecerse el tamaño del dado y repartir las entradas sobre la superficie. La figura 2.2 muestra un ejemplo de floorplanning en Innovus Implementation System. En el área circunscrita por el cuadrado interior se alojan las celdas lógicas y las conexiones. A su alrededor, los diferentes pads rodean el circuito y sirven como base de las futuras conexiones con el encapsulado. Las esquinas también son reconocidas como pads y pueden ser usadas. En ocasiones, en el área ocupada por los pads se coloca algo de electrónica que puede servir para adaptar las tensiones de entradas y salidas del IC con la circuitería interna. Figura 2.2 Ejemplo de floorplanning realizado durante ejercicios de entrenamiento con Innovus Implementation System. La electrónica del diseño debería ocupar el cuadrado central, mientras que los los rectángulos que lo rodean representan a los distintos pads con las entradas y salidas del circuito. Estas terminaciones también pueden ser propiedad intelectual del fabricante e incorporar electrónica para evitar sobretensiones o cambio de voltaje para la adaptación entre los níveles usados fuera del chip, 3,3V y el voltaje interno que puede ser inferior a 2V dependiendo de la tecnología.. Place and Route El proceso de place and route (emplazar y enrutar) consiste en definir la colocación de los dispositivos y transistores así como las capas de metal que conectarán, a nivel de conductividad, el circuito. Aunque en diseño de circuitos analógicos predomina la creación de layout de forma manual, en digital está más extendido el uso de herramientas que automatizan este proceso. 1 Dado: es la unidad mínima de fabricación que aloja un diseño completo. Para la fabricación de circuitos integrados se usan unos discos llamados obleas, normalmente de silicio, sobre la que se ejecutan algunos procesos y se añaden capas de diversos materiales, en dicha oblea suelen ponerse varios circuitos completos, estas subdivisiones son los llamados dados. Para más información se invita al lector a buscar más sobre el proceso de fabricación CMOS[56, 24, 49, 8].
2.3 Back-end 15 En circuitos complejos y con grandes buses de datos, este proceso se vuelve de especial importancia ya que puede ocurrir que el enrutado consuma una gran cantidad de área del dado. Por tanto, se presta una gran atención al place and route y al floorplanning para evitar distancias innecesarias Como se ha comentado anteriormente, en diseños analógicos se opta por el desarrollo de layout manuales. Sin embargo, en las tecnologías digitales Complementary Metal-Oxide-Semiconductor (CMOS), se aprovecha la característica de que la mayoría de los dispositivos cuentan con transistores de canal P y N, creando filas de celdas con altura fija para todos los dispositivos, en la parte superior e inferior se colocan vías a Vdd y Vss, de esta forma, y teniendo en cuenta que los tamaños de los transistores suelen ser lo más reducidos en área posible, se hace más fácil ajustar en cada línea una cantidad de dispositivos sin desperdiciar superficie útil de la oblea2. Un ejemplo de lo explicado en esta sección, hecho con Innovus Implementation System, se muestra en la figura 2.3. Si se observa con detenimiento, en especial en la parte superior derecha, en azul se muestran las vías para alimentar las celdas3. Figura 2.3 Ejemplo sencillo de un diseño después del Place and Route realizando durante un curso de entrenamiento. Puede observarse que los elementos son bastante pequeños y el número de interconexiones elevado. Gracias a la ayuda de las herramientas, esta gran tarea se encuentra automatizada, ahorrando horas de trabajo en el diseño y en la búsqueda de errores. 2.3.3 Verificación física y Aprobación Una vez se ha finalizado el diseño físico, es necesario realizar estudios que prevean cómo será el comportamiento del IC diseñado. Para ello, se hacen análisis con las capacidades parásitas y los retrasos que se producen en cada etapa de transistores que la señal debe atravesar. Los circuitos digitales acostumbran a llevar una gran cantidad de lógica secuencial, por lo que es necesario un estudio minucioso del tiempo que tardará una señal en cada etapa del circuito. Sin embargo, el diseño de micro y nanoelectrónica conlleva una gran variabilidad de algunos parámetros de los transistores. Esta variación se debe al mismatching que se produce por las imperfecciones de los procesos de fabricación. Los PDK incorporan datos sobre el funcionamiento de los dispositivos en diversas condiciones y a distintas temperaturas. Gracias a dicha información, pueden realizarse análisis de esquina yanálisis de Montecarlo, lo que permite obtener una aproximación del comportamiento del circuito en las condiciones típicas, mejores o peores. 2 Por no ser objeto de este trabajo y evitar exceso de información irrelevante, se remite a los lectores interesados a que busquen más detalles sobre la optimización del área mediante la literatura, cursos de los desarrolladores de las herramientas u otros materiales de divulgación[8, 32, 34, 38, 40, 49, 47, 45, 48] 3 Para más información de los pasos más básicos, se deja una referencia a un sencillo tutorial[ 12 ], además de los cursos que Cadence Design Systems ofrece [48].
16 Capítulo 2. Flujo de trabajo en diseño digital de circuitos integrados Una vez conocidas las irregularidades del diseño, pueden calcularse las frecuencias máximas a las que la lógica secuencial puede funcionar sin esperar ningún problema. A veces es necesario incluir retrasos en algunos relojes y crear un árbol de relojes para evitar problemas de fan-out en dichos relojes. Con toda esta información, es posible, hacer análisis estáticos de tiempo o dinámico, si se proporciona unas entradas simuladas. Otras pruebas interesantes pueden ser Layout vs Schematic (LVS), Design Rule Checking (DRC), geometrías, antena 4 . El uso de estas herramientas permite testear el funcionamiento del sistema físico y su similitud con el diseño comportamental esperado. 2.3.4 Preparación de Máscaras Si bien el paso anterior suele revisarse tanto por los diseñadores del circuito como por el fabricante, la preparación de máscaras y fabricación de las obleas, suele ser responsabilidad de los fabricantes. Para la fabricación es necesario crear las máscaras para cada proceso al que se someterá la oblea. Existe mucha literatura que explica el proceso de fabricación CMOS donde se hablan de las diferentes máscaras y procesos. Si bien se conocen a grandes rasgos detalles de éstos, mucha de la información es celosamente guardada por las foundries. Puede encontrarse más detalles sobre este tema en libros especializados[ 49 , 8 , 32 ]. La preparación de las máscaras y la fabricación de dispositivos nanométricos, ha de hacerse en entornos limpios y controlados, ya que cualquier pequeña partícula no deseada podría ocasionar grandes errores de fabricación. En la figura 2.4 se muestra un ejemplo de cómo son las salas blancas donde se realizan estas tareas y el tipo de protecciones usuales. Figura 2.4 Sala blanca de la NASA donde se fabrican IC. Imágenes obtenidas de WikiMedia Commons bajo licencia Creative Commons. Fuente:https://commons.wikimedia.org/wiki/ File:Clean_room.jpg. 2.3.5 Fabricación de obleas El proceso de fabricación parte de un oblea de silicio que se va sometiendo a diferentes procedimientos para definir las regiones de dopados en la oblea, añadir la capa de aislante de los transistores y las diferentes capas 4 Los problemas de antena que se pueden originar dentro del chip no son los que se acostumbran de transmisión de ondas de radio. Este problema deriva de la posibilidad de que la puerta de un transistor pueda ser activada por la carga de una conexión cercana al transistor, por lo que es necesario tener en cuenta la distancia a la que pasan las vías del diseño.
2.4 Procesos de fabricación de semiconductores 17 de metales que interconectarán los transistores. Existen diferentes técnicas para algunos de los pasos y van evolucionando con el tiempo para obtener dispositivos mejores y más eficientes que, sin embargo, se escapan del alcance de este trabajo. Al igual que en el apartado anterior, se invita al lector interesado a consultar información sobre el proceso de fabricación CMOS para conocer más sobre este paso[49, 8, 32]. En la figura 2.5 se muestran dos imágenes con el resultado del proceso de fabricación de obleas. Figura 2.5 Diferentes obleas con circuitos después del proceso de fabricación. Imágenes obtenidas de WikiMedia Commons bajo licencia Creative Commons. Fuente:https://commons.wikimedia.org/ wiki/File:A_Wafer_of_the_Latest_D-Wave_Quantum_Computers_(39188583425).jpg yhttps: //commons.wikimedia.org/wiki/ File:Semiconductor_Wafer_of_Microelectronics.jpg. 2.3.6 Empaquetado Una vez obtenidas las obleas, se cortan y dividen en dados. Sin embargo, estos dados son pequeños pedazos de silicio que pueden medir micrómetros en ambos lados. Manejar estos tamaños para la fabricación de Printed Circuit Board (PCB) haría el proceso de colocación y soldadura una tarea difícil. Por ello y para, además, poder proteger el chip, se empaquetan en diferentes soportes que podrán ser trabajados en otros ambientes sin depender de maquinaria tan precisa. El empaquetado también puede permitir que en chips como procesadores de alta velocidad, se pueda disipar el calor generado por el funcionamiento del chip. Para unir los pines o pads del empaquetado con los pads del dado, se usan máquinas de bonding que generan microconexiones de alta precisión. 2.3.7 Test y Documentación Una vez se tienen los chips ya fabricados y empaquetados, es necesario probar que el comportamiento del diseño responde a las especificaciones esperadas durante el diseño. Es importante caracterizar el circuito para conocer su comportamiento real y generar la documentación necesaria con la información relativa al circuito que necesitarán conocer todos aquellos que tengan que trabajar posteriormente con el chip. 2.4 Procesos de fabricación de semiconductores La fabricación de IC ha ido variando a lo largo de los años. Las técnicas se han ido refinando y mejorando, se han buscado automatizar tareas del diseño para mejorar las prestaciones de los circuitos. Así pues, se ha conseguido minimizar el tamaño de los transistores, a medida que se disminuyen la longitud del canal y la capa de óxido que separa la puerta del canal, se obtienen una serie de ventajas: al disminuir el tamaño de los transistores, es posible integrar una mayor cantidad de componentes un solo chip; mejora la velocidad de conmutación, los electrones tienen un menor recorrido; al ser el canal más corto, también disminuye la resistencia interna del canal, por lo que la energía consumida disminuye. Obviamente, cuando se optimizan el tamaño de los transistores también aparecen desventajas: la ganancia del transistor disminuye, por lo que no son capaces de manejar señales grandes y la tensión de rotura del óxido de la puerta disminuye, haciendo que los dispositivos sean menos robustos; la variabilidad con la temperatura aumenta, lo cual hace más difícil diseñar y simular los diseños. Por tanto, los cambios en los procesos de fabricación han ido escalando poco a poco, a medida que se han ido resolviendo conflictos
18 Capítulo 2. Flujo de trabajo en diseño digital de circuitos integrados y problemas. En las tecnologías avanzadas, a partir de 22 nm, se ha empezado a cambiar los transistores clásicos por dispositivos FinFET. Estos cambios han sido más sencillos de adaptar en electrónica digital, pero en el mundo de las señales analógicas, algunos de estos problemas hace muy difícil seguir reduciendo los tamaños[ 34 , 49 , 8 , 32 , 40 , 9 , 58 ]. En la tabla 2.1 se muestra la evolución de los nodos de fabricación desde 1972 a 2022 y la previsión para 2024[57]. Tabla 2.1 Nodos de fabricación de semiconductores desde 1971 a 2022 y previsión para el año 2024. Fuente: Wikipedia[57]. 10.000 nm 1971 3.000 nm 1975 1.500 nm 1982 1.000 nm 1985 800 nm 1989 600 nm 1994 350 nm 1995 250 nm 1997 180 nm 1999 130 nm 2002 90 nm 2004 65 nm 2006 45 nm 2008 32 nm 2010 22 nm 2012 14 nm 2014 10 nm 2016 7 nm 2018 5 nm 2020 3 nm 2022 2 nm 2024 El flujo de trabajo descrito para el diseño de circuitos micro y nanoelectrónicos no es más que un simple esbozo de lo que realmente conlleva. En él intervienen ingenieros, físicos y técnicos con mucha experiencia y conocimiento en sus respectivos campos para optimizar estos procesos. Por lo que, aunque no represente una guía clara de cómo se diseña un IC, sí puede suponer unos conocimientos básicos para asomarse a la comprensión del flujo de diseño.
3 Objetivos El mayor peligro para la mayoría de nosotros no radica en establecer unos objetivos demasiado altos y fracasar pronto, sino en establecer unos objetivos demasiado bajos, y lograrlos. Miguel Ángel El trabajo que se refleja en estas páginas, ha sido realizado en el IMSE, centro mixto perteneciente al Centro Nacional de Microelectrónica (CNM) del Consejo Superior de Investigaciones Científicas (CSIC) y la US, y nace de la colaboración entre el IMSE y la Universitat de les Illes Balears (UIB). 3.1 Introducción Como se comentó en el prólogo, estas páginas recogen información de cómo se llevó el proceso de síntesis para los diseños previamente realizados por la UIB. Por tanto, se reflejan en este capítulo los objetivos que fueron planteados para el proceso de back-end, teniendo en cuenta que el objetivo de estos circuitos era hacer una prueba de conceptos de redes neuronales basadas en CNN haciendo uso de SC para conseguir un sistema completamente paralelo1. Los objetivos iniciales del proyecto se encuentran fuera del ámbito de este trabajo, por lo que en este capítulo solamente se hablarán de los objetivos fijados para el diseño back-end y más concretamente para el proceso de síntesis. Para poder conocer la escalabilidad de este tipo de sistemas, se propone obtener información de cómo podría ser el tamaño y las prestaciones de los IC. Se establece el uso de una tecnología de 40 nm de TSMC. Sobre el diseño front-end, puede encontrarse más información en la publicación de Frasser et al. publicada en Transactions on Neural Network and Learning Systems[16]. 3.2 Objetivos Dentro de este contexto y para este trabajo se establecieron los siguientes objetivos: 1. Hacer uso del PDK de 40 nm de TSMC para todos los diseños. 2. Realizar el proceso de síntesis con el diseño front-end de una CNN que implemente una arquitectura básica de 64 neuronas dada por la UIB. 3. Realizar el proceso de síntesis con el diseño front-end de una CNN que implemente la arquitectura de LeNet-5 dada por la UIB, con resolución de 2 y 4 bits. 4. Realizar el proceso de síntesis con el diseño front-end de una CNN que implemente la arquitectura de Cifar-10 dada por la UIB. Este diseño se hará subdividiendo el diseño: •6 capas: 4 capas convolucionales y 2 FC con resolución de 4 bits. 1 Un sistema completamente paralelo hace referencia en este contexto a la capacidad de obtener la multiplicación de los pesos y las entradas de las neuronas de forma simultánea. 19
20 Capítulo 3. Objetivos •6 capas: 4 capas convolucionales y 2 FC con resolución de 8 bits. 5. Realizar el proceso de síntesis con el diseño front-end de una CNN que implemente la arquitectura de Cifar-10 dada por la UIB de forma completa. 6. Hacer uso de un reloj de referencia de 6 ns. Podrá modificarse si el diseño no fuese realizable debido a este punto. 7. Hacer uso de las herramientas de Cadence Design Systems (CDS), compatible con la tecnología. 8. Obtener una estimación de la potencia consumida para cada uno de los diseños. 9. Obtener el número de celdas y el área de silicio consumida para cada diseño. 10. Obtener una estimación de los retrasos máximos en el camino más largo. Al tratarse de un diseño hecho como prueba de concepto, y teniendo en cuenta el enorme tiempo de cómputo para algunas de las pruebas, los tiempos máximos y las potencias consumidas se harán para valores típicos y no para esquinas2. El diseño del layout y los consiguientes pasos de la fabricación, explicados en el capítulo 2, no han sido finalizados aún y exceden las posibilidades de este trabajo, y por tanto, no forman parte del mismo. 2 Normalmente las foundries ofrecen unos valores típicos para los parámetros de su tecnología, los más esperables, así como los valores mínimos y máximos para los mismos parámetros que pueden producirse por las imperfecciones y no linealidades de los procesos de fabricación. En las fases de verificación de diseño de circuitos integrados es frecuente hacer análisis de esquinas para conocer la variabilidad que puede sufrir el diseño así cómo sus puntos débiles.
4 Desarrollo El desarrollo del hombre depende fundamentalmente de la invención. Es el producto más importante de su cerebro creativo. Su objetivo final es el dominio completo de la mente sobre el mundo material y el aprovechamiento de las fuerzas de la naturaleza a favor de las necesidades humanas. Nikola Tesla Para cumplir con los objetivos establecidos en el capítulo 3 de este trabajo se ha de hacer uso de las herramientas de CDS disponibles en el centro de computación del IMSE. Dentro de la gran cantidad de herramientas que proporciona esta empresa, Genus Synthesis Solution ofrece la posibilidad de generar el código RTL de forma potente. Como se vio en el capítulo 2, el objetivo de la síntesis es convertir un diseño de alto nivel a bajo nivel, mientras que los diseños de bucles de alto nivel usan operadores, variables y estructuras condicionales, el código que genera la síntesis es más similar a un esquemático, pues lo que contiene es una descripción de celdas básicas e IP, y las conexiones que los relaciona. Entre las principales características de esta herramienta destacan: •Incrementa hasta diez veces la productividad durante el diseño RTL. • Tiempo de cálculo cinco veces más rápido que otros softwares para sistemas con más de diez millones de instancias. •Reducción de al menos dos veces el tiempo entre iteraciones. • El cálculo de las estimaciones de tiempos de retrasos y de la longitud de los cables están dentro del 5% de lo obtenido con Cadence Innovus Implementation System. •Reducción del área consumida por las conexiones hasta un 20% sin perjuicio para el rendimiento. Además de lo mencionado, esta solución es valida tanto para códigos en VHDL,Verilog oSystem Verilog; funciona de forma paralela en sistemas con múltiples CPUs y máquinas; capacidad de crear y ajustar jerarquía de registros de relojes RTL; etc. 4.1 Introducción Es algo común en la ingeniería que la obtención de la solución requiera una inversión mayor de tiempo para el aprendizaje de la técnica y estudio del problema que para la resolución del mismo. El proceso de síntesis es similar. Para la realización de este proyecto se ha invertido alrededor del 30% del tiempo en el aprendizaje y dominio de la técnica y el análisis de los códigos diseñados en la parte front-end; un 15% en la elaboración de los códigos a ejecutar; un 40% en la ejecución de la síntesis y otro 15% del tiempo en el análisis, reajustes y correcciones de los problemas que fueron ocurriendo. Y para el caso que ocupa este proyecto, el total fue de alrededor de 45 días de trabajo o 360 horas. Es interesante notar que el trabajo que se realiza para la síntesis de IC es similar al trabajo para crear una CNN. Ambas son tareas con un alto coste de computación que ahorra al ingeniero gran parte del trabajo y 21
28 Capítulo 4. Desarrollo Figura 4.5 Ventana Timing Debug del diseño obtenido en la interfaz gráfica de Genus en el diseño de una de las implementaciones del circuito para la CNN LeNet-5. Se muestran todos los caminos que se recorren en el circuito así como sus tiempos y un histograma que muestra el número de caminos que tienen cada WNS. Figura 4.6 Ventana Timing Path Analyzer del diseño obtenido en la interfaz gráfica de Genus en el diseño de una de las implementaciones del circuito para la CNN LeNet-5. Se muestra una lista con todas las celdas combinacionales que se recorren en el trayecto, se muestra también de forma gráfica dónde es consumido el tiempo. el circuito es muy homogéneo y está formado por una gran cantidad de módulos similares, se observa que el consumo está muy distribuido. Sin embargo, en otros diseños con subsistemas más heterogéneos, conocer la potencia de cada instancia puede ayudar a entender qué partes del circuito tienen un mayor consumo y tal vez buscar maneras de optimizar la potencia consumida por dichos módulos. 4.3.10 Evaluación del diseño y reajuste, si es necesario Como se comentó con anterioridad, estos resultados necesitan ser evaluados y analizados al finalizar el proceso. Si los resultados se ajustan a los esperados, pueden generarse los archivos de salida y continuar el proceso para generar el floorplanning y diseñar el layout que habría de fabricarse después. A estas alturas del diseño, es importante recordar al lector que el proceso de síntesis genera un código con las celdas para el
4.4 Entorno de ejecución 29 Figura 4.7 Reporte de potencia generado en el diseño de una de las implementaciones del circuito para la CNN LeNet-5. diseño del circuito, pero la colocación definitiva y el enrutado forman parte de las siguientes fases del diseño, resultados mostrados como los de la figura 4.3 no muestran un layout ya terminado, sino una aproximación al diseño final. Para el caso que ocupa a este trabajo, donde no se pretende optimizar el diseño, sino obtener una aproximación numérica de los requisitos de área y de reloj, no existe la necesidad de volver atrás a nivel de diseño front-end oback-end para optimizar el diseño. Para este proyecto, se tuvo que ajustar algunos códigos para evitar errores y reajustar el periodo del reloj en uno de los circuitos. En el siguiente capítulo se desarrollará un poco los detalles. 4.4 Entorno de ejecución Aunque la automatización puede ayudar al diseñador a maximizar su producción gracias a las herramientas de cálculo, no está exento de resolver otras dificultades. La ejecución de la síntesis se llevó a cabo en el clúster de computación del IMSE, el cual dispone de 20 nodos de computación, cada uno de ellos formados por dos procesadores Intel Xeon de 10 núcleos y 20 hilos, 128GB de RAM entre otras características. Este tipo de arquitecturas de computación son de gran ayuda para
30 Capítulo 4. Desarrollo el diseño, simulación y test de diferentes circuitos pues permiten realizar tareas muy pesadas en un tiempo considerablemente inferior. Código 4.10 Opciones de ejecución para hacer uso de varias máquinas en paralelo. set_db max_cpus_per_server 20 set_db super_thread_servers "node1 node2 node3 node4" set_db super_thread_rsh_command rsh En el código 4.10 se muestran las opciones de configuración necesarias para poder paralelizar de forma masiva las operaciones de cálculo en el clúster. Para los circuitos basados en CNN y el dataset CIFAR-10 fueron necesarias varias semanas en algunos casos. El sistema completo se dividió en varios circuitos para las capas convolucionales y otros para las capas planas FC. Para las capas convolucionales, hubo de aumentarse la memoria de intercambio del sistema a grandes niveles para que las máquinas fuesen capaz de manejar la cantidad de información. Sin embargo, y después de varios intentos de síntesis del CIFAR-10 completo, no hubo manera de finalizar el proceso de síntesis y obtener los datos buscados. El considerable tamaño del circuito y la falta de tiempo obligaron a que se diese, este último diseño, por fracasado. No obstante, el diseño modular obtenido con el sistema dividido es suficiente para conocer las necesidades e incluso para poder unirlos como diferentes bloques para las futuras fases de diseño del layout.
5 Resultados La calidad nunca es un accidente; siempre es el resultado de un esfuerzo de la inteligencia John Ruskin Recoger los frutos del trabajo realizado suele ser uno de los grandes momentos tras largas jornadas de esfuerzo. Y así fue también para este proyecto. Ha de tenerse en cuenta que cada proceso de síntesis es complejo y tiene una componente estocástica, por lo que dos ejecuciones del mismo código no devuelven siempre los mismos resultados, aunque sí suelen encontrarse muchas similitudes. En algunos de los casos se repitieron las ejecuciones para volver a obtener ciertos informes o debido a que el sistema no podía cumplir las restricciones de tiempo. Salvo en algunos casos, los relojes se configuraron con un periodo de 6000 ps ó 6 ns, sin embargo, en algunos casos se aumento a 10ns para que el resultado fuese implementable. Genus Synthesis Solution suele mostrar resultados de WNS en valores negativos cuando no se cumplen los requisitos, al no ser unas pruebas definitivas y en modo Multi-Mode Multi-Corner (MMMC) 1 , no se puede saber la precisión que se obtendría al fabricarse el diseño. No obstante, la intención de este proyecto no es desarrollar un producto final, sino demostrar las capacidades de la computación estocástica para el diseño de hardware para ML. A continuación se detalla información de los resultados que se obtuvieron para los diferentes casos de estudios. El objeto de estudio de este trabajo es el diseño back-end de distintos diseños proporcionados, por lo que no se entrará en detalles en cuanto a los resultados y conclusiones, sobre AI ySC, para ello puede acudirse al artículo publicado[16]. 5.1 Red neuronal de 64 neuronas Para este caso se recibieron dos códigos de prueba, uno con el nombre de “No-opt” y otro con el de “Optimized” con un número similar de neuronas. 5.1.1 No-opt Las tablas 5.1 y 5.2 muestran los resultados para el modelo “no-opt” de 64 neuronas. Se trata de un circuito bastante sencillo con menos de mil celdas y 45 µm x 45 µm . El trayecto máximo es de 2,12 ns, por lo que podría trabajar con un reloj superior a 450MHz. El consumo de potencia estática es despreciable y en dinámica y total sería de 220 µW. Tabla 5.1 Tabla de resultados del modelo “no-opt”: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 661 232 429 0,0015 mm20,0005 mm20,002 mm2 1 El modo MMMC realiza el proceso para múltiples esquinas, esto es, realiza el proceso usando los mejores y peores valores de los parámetros del fabricante para obtener una previsión de cuales podrían ser los rangos de funcionamiento de los circuitos debido a las imperfecciones del silicio y la fabricación. 31
32 Capítulo 5. Resultados Tabla 5.2 Tabla de resultados del modelo “no-opt”: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,12 ns 0 mW 0,22 mW 0,22 mW 5.1.2 Optimized Para el caso de la red neuronal “optimized”, las tablas 5.3 y 5.4 contienen los valores de celdas, áreas, tiempos y potencia. El número de celdas sigue siendo bastante pequeño. El área crece ligeramente hasta los 59 µm x 59 µm . El retraso máximo es ligeramente inferior y sigue siendo por debajo del periodo del reloj establecido, por lo que, en este caso también podría funcionar con relojes bastante rápidos. En cuanto a potencia, de nuevo se puede despreciar el consumo en estática y el consumo total duplica el del caso “no-opt”. Tabla 5.3 Tabla de resultados del modelo “optimized”: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 774 368 406 0,0021 mm20,0006 mm20,0026 mm2 Tabla 5.4 Tabla de resultados del modelo “optimized”: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 1,37 ns 0 mW 0,43 mW 0,43 mW 5.2 LeNet-5 A continuación se muestran los resultados obtenidos con la implementación de la red LeNet-5 en SC. Entre los objetivos esperados estaba la necesidad de obtener los datos con un modelo de 2 bits de resolución y otro de 4 bits. 5.2.1 2 bits El paso de una red neuronal de 64 neuronas a un modelo complejo basado en CNN es, sin duda, una gran diferencia en cuanto a capacidad y complejidad, y por supuesto, en tiempo de computación. Esta red tiene del orden de sesenta mil parámetros y varios miles de neuronas. Como cabe esperar, los números de la tabla 5.5 y 5.6 reflejan el cambio. El número de celdas aumenta un orden de magnitud, por encima del medio millón. El tamaño del dado aumentaría hasta 1,39 mm x 1,39 mm . Así como su potencia que pasa a ser de 204 mW. Sin embargo, aunque los retrasos son mayores, 4,175 ns, sigue permitiendo alimentar el reloj a unas tasas de 200 MHz. Tabla 5.5 Tabla de resultados del modelo LeNet-5 con 2 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 549K 51.029 497.967 1,426 mm20,491 mm21,917 mm2 Tabla 5.6 Tabla de resultados del modelo LeNet-5 con 2 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 4,175 ns 0,172 mW 203,57 mW 203,744 mW 5.2.2 4 bits Usando una resolución de 4 bits para la misma arquitectura puede apreciarse que el número de celdas aumenta un 20% y la potencia consumida se duplica, sin embargo, los tiempos y el área, aunque aumentan,
5.3 CNN para CIFAR-10 33 se mantienen en un margen considerablemente óptimo. En concreto, pueden verse lo resultados en las tablas 5.7 y 5.8. El número de celdas alcanza la cifra de 663 mil celdas, casi un 90% de ellas de lógica combinacional y el resto de lógica secuencial. El área total alcanza los 2,137mm2, lo que equivale a un tamaño del dado de 1,46 mm x 1,46 mm , el área para las pistas sigue siendo de un 20% del total. Los tiempos se acercan al límite de los requisitos impuestos con un retraso máximo de 5.63 ns. Por su parte, la potencia estática es de 0,173 mW y la dinámica de 405,74 mW, obteniéndose un total de 405,91 mW. Tabla 5.7 Tabla de resultados del modelo LeNet-5 con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 663K 76.847 586.334 1,521 mm20,617 mm22,137 mm2 Tabla 5.8 Tabla de resultados del modelo LeNet-5 con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 5,636 ns 0,173 mW 405,74 mW 405,91 mW 5.3 CNN para CIFAR-10 El tamaño de la CNN necesaria para procesar los datos de un dataset de este tamaño, sin duda, requiere de una gran cantidad de recursos. Como se ha ido viendo a lo largo de los resultados anteriores, las redes neuronales no escalan de forma lineal, sino que lo hacen de forma exponencial, por lo que cada vez que se aumenta la complejidad de la red aumenta el número de parámetros. Para este diseño en concreto se pasan de los 60.000 parámetros de LeNet-5 a 30.000.000 de parámetros para esta arquitectura. Este número de parámetros hace necesario que la red se divida en diferentes partes a través de las diferentes capas. En concreto, el diseño se dividió en seis partes: cuatro capas convolucionales y otras dos FC. Cada una de estas partes se sintetizará por separado. Por desgracia, Genus Synthesis Solution no fue capaz de sintetizar el modelo completo con esta tecnología, sin embargo, se pueden extrapolar los datos que se obtienen de las diferentes partes. 5.3.1 4 bits En las siguientes tablas se muestran los resultados de todas las capas utilizadas para la CNN, puede verse que las capas convolucionales son considerablemente mayores que las planas, en especial la segunda, que alcanza un mayor tamaño. El número de celdas por cada dado aumenta al orden de los millones de unidades, en concreto, las celdas de tipo combinacional. Al aumentar el número de celdas, lógicamente, el tamaño del dado crece hasta un máximo de 7,3 mm x 7,3 mm para la segunda capa convolucional, y la potencia alcanza valores de decenas de vatios, por lo que aumenta más de 20 veces el consumo. No obstante, los retrasos producidos en el circuito se reducen drásticamente por debajo de los 3 ns, lo que permitiría usar relojes de 333MHz. De todas las capas sintetizadas, las de mayor consumo y tamaño son la segunda y la cuarta, mientras la primera y la tercera mantienen un término medio y, como puede esperarse, las dos capas FC son significativamente más pequeñas. Primera capa convolucional En las tablas 5.9 y 5.10 se muestran los resultados para la primera capa convolucional: Tabla 5.9 Tabla de resultados del modelo CIFAR-10 capa 1 con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 3,04M 432.001 2.605.358 6,82 mm22,44 mm29,25 mm2
34 Capítulo 5. Resultados Tabla 5.10 Tabla de resultados del modelo CIFAR-10 capa 1 con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 1,3 ns 0,76 mW 1.710 mW 1.711 mW Segunda capa convolucional En las tablas 5.11 y 5.12 se muestran los resultados para la Segunda capa convolucional: Tabla 5.11 Tabla de resultados del modelo CIFAR-10 capa 2 con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 16M 451.584 16.430.225 38,29 mm214,45 mm252,74 mm2 Tabla 5.12 Tabla de resultados del modelo CIFAR-10 capa 2 con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,241 ns 4,84 mW 11.766 mW 11.771 mW Tercera capa convolucional En las tablas 5.13 y 5.14 se muestran los resultados para la tercera capa convolucional: Tabla 5.13 Tabla de resultados del modelo CIFAR-10 capa 3 con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 6,02M 156.673 6.040.392 13,9 mm25,28 mm219,18 mm2 Tabla 5.14 Tabla de resultados del modelo CIFAR-10 capa 3 con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,35 ns 1,75 mW 4.187 mW 4.189 mW Cuarta capa convolucional En las tablas 5.15 y 5.16 se muestran los resultados para la cuarta capa convolucional: Tabla 5.15 Tabla de resultados del modelo CIFAR-10 capa 4 con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 8,13M 115.201 8.015.442 18,93 mm27,05 mm225,98 mm2 Tabla 5.16 Tabla de resultados del modelo CIFAR-10 capa 4 con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,82 ns 2,4 mW 6.109 mW 6.112 mW
5.3 CNN para CIFAR-10 35 Primera capa FC En las tablas 5.17 y 5.18 se muestran los resultados para la primera capa FC: Tabla 5.17 Tabla de resultados del modelo CIFAR-10 capa 5 con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 1,75M 10.753 1.742.357 4,1 mm21,73 mm25,83 mm2 Tabla 5.18 Tabla de resultados del modelo CIFAR-10 capa 5 con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,14 ns 0,53 mW 1.409 mW 1.409 mW Segunda capa FC En las tablas 5.19 y 5.20 se muestran los resultados para la segunda capa FC: Tabla 5.19 Tabla de resultados del modelo CIFAR-10 capa 6 con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 10,9K 181 10.731 0,026 mm20,011 mm20,037 mm2 Tabla 5.20 Tabla de resultados del modelo CIFAR-10 capa 6 con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,72 ns 0 mW 8,49 mW 8,49 mW 5.3.2 8 bits Al igual que para el caso de 4 bits, desde la tabla 5.21 hasta la tabla5.32 se muestran los resultados para las distintas capas en el modelo de 8 bits. Los números obtenidos son del mismo orden que para el caso de 4 bits. Al final del capítulo se hablará un poco más de ellos. Primera capa convolucional En las tablas 5.21 y 5.22 se muestran los resultados para la primera capa convolucional: Tabla 5.21 Tabla de resultados del modelo CIFAR-10 capa 1 con 8 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 4,06M 662.401 3.394.944 8,7 mm28,52 mm217,22 mm2 Tabla 5.22 Tabla de resultados del modelo CIFAR-10 capa 1 con 8 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,02 ns 0,97 mW 1.995 mW 1.996 mW Segunda capa convolucional En las tablas 5.23 y 5.24 se muestran los resultados para la Segunda capa convolucional:
36 Capítulo 5. Resultados Tabla 5.23 Tabla de resultados del modelo CIFAR-10 capa 2 con 8 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 17,1M 652.288 16.371.956 39,9 mm214,9 mm254,8 mm2 Tabla 5.24 Tabla de resultados del modelo CIFAR-10 capa 2 con 8 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 3,1 ns 5 mW 11.847 mW 11.852 mW Tercera capa convolucional En las tablas 5.25 y 5.26 se muestran los resultados para la tercera capa convolucional: Tabla 5.25 Tabla de resultados del modelo CIFAR-10 capa 3 con 8 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 6,34M 230.401 6.114.013 14,41 mm25,38 mm219,79 mm2 Tabla 5.26 Tabla de resultados del modelo CIFAR-10 capa 3 con 8 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,79 ns 1,79 mW 4.311 mW 4.313 mW Cuarta capa convolucional En las tablas 5.27 y 5.28 se muestran los resultados para la cuarta capa convolucional: Tabla 5.27 Tabla de resultados del modelo CIFAR-10 capa 4 con 8 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 8,77M 166.401 8.605.909 19,71 mm27,59 mm227,3 mm2 Tabla 5.28 Tabla de resultados del modelo CIFAR-10 capa 4 con 8 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 3,68 ns 2,49 mW 6.208 mW 6.210 mW Primera capa FC En las tablas 5.29 y 5.30 se muestran los resultados para la primera capa FC: Tabla 5.29 Tabla de resultados del modelo CIFAR-10 capa 5 con 8 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 1,76M 12.801 1.747.291 4,12 mm21,73 mm25,85 mm2
5.3 CNN para CIFAR-10 37 Tabla 5.30 Tabla de resultados del modelo CIFAR-10 capa 5 con 8 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,32 ns 0,53 mW 1.409 mW 1.409 mW Segunda capa FC En las tablas 5.31 y 5.32 se muestran los resultados para la segunda capa FC: Tabla 5.31 Tabla de resultados del modelo CIFAR-10 capa 6 con 8 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 11,0K 221 10.761 0,026 mm20,011 mm20,037 mm2 Tabla 5.32 Tabla de resultados del modelo CIFAR-10 capa 6 con 8 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,88 ns 0 mW 8,59 mW 8,59 mW 5.3.3 Estimación CIFAR-10 completo Como se ha mencionado anteriormente no se pudo obtener el resultado de la síntesis completa. Sin embargo, sería posible diseñar los módulos por separados y unirlos como bloques, por lo que una aproximación del resultado se puede obtener con los datos obtenidos. El error de la aproximación que se va a hacer a continuación viene del área de las pistas necesarias para unir los módulos, por lo que hay que tener claro que estos datos son solamente una aproximación. Para obtener estos números, se ha sumado el número de celdas, las áreas y las potencias, para el retraso máximo del trayecto, se ha tomado el mayor. 4 bits En las tablas 5.33 y 5.34 se muestran los datos extrapolados del circuito completo para 4 bits. Las capas convolucionales contienen 34 millones de celdas del total reflejado en estas tablas y en concreto, casi la mitad pertenece a la segunda capa convolucional. Por supuesto, se encuentra la misma relación en los consumos. El área de las pistas es de alrededor del 27% para cada modulo y del total. Tabla 5.33 Tabla de datos estimados del modelo CIFAR-10 completo con 4 bits de resolución: número de celdas y área. Núm. celdas C. secuencial C. combinacional Área celdas Área pistas Área total 36M 1.166.393 34.844.505 82,1 mm230,96 mm2113,02 mm2 Tabla 5.34 Tabla de datos estimados del modelo CIFAR-10 completo con 4 bits de resolución: retraso máximo de trayectos y potencias. Máx retraso trayecto Pot. estática Pot. dinámica Pot. total 2,82 ns 10,28 mW 25.190 mW 25.201 mW 8 bits En las tablas 5.35 y 5.36 se muestran los datos extrapolados del circuito completo para 8 bits. Las capas convolucionales contienen 37 millones de celdas del total reflejado en estas tablas y en concreto, casi la mitad pertenece a la segunda capa convolucional. De nuevo, se encuentra la misma relación en los consumos. El área
Apéndice B Tabla comparativa En la figura B.1 de la página siguiente se muestra una tabla con todos los datos recogidos de los resultados durante la síntesis 45
46 Apéndice B. Tabla comparativa Circuit Total numer of Cells Seq. Cells Combin. Cells Area Cells (mm2) Area Nets (mm2) Total Area (mm2) Max Data Path delay (ns) Leakage Power (mW) Dynamic Power (mW) Total Power (mW) PEB-64 No-opt 661 232 429 0,0015 0,0005 0,002 2,12 0 0,22 0,22 PEB-64 optimized 774 368 406 0,0021 0,0006 0,0026 1,37 0 0,43 0,43 LeNet-5 2bits 549K 51029 497967 1,426 0,491 1,917 4,175 0,172 203,57 203,744 LeNet-5 4bits 663K 76847 586334 1,521 0,617 2,137 5,636 0,173 405,74 405,91 CIFAR10_4bits feb_layer0_sc 3.04M 432001 2605358 6,82 2,44 9,25 1,3 0,76 1710 1711 CIFAR10_4bits feb_layer1_sc 16M 451584 16430225 38,29 14,45 52,74 2,241 4,84 11766 11771 CIFAR10_4bits feb_layer2_sc 6.20M 156673 6040392 13,9 5,28 19,18 2,35 1,75 4187 4189 CIFAR10_4bits feb_layer3_sc 8.13M 115201 8015442 18,93 7,05 25,98 2,82 2,4 6109 6112 CIFAR10_4bits fc_layer0_sc 1.75M 10753 1742357 4,1 1,73 5,83 2,14 0,53 1409 1409 CIFAR10_4bits fc_layer1_sc 10.9K 181 10731 0,026 0,011 0,037 2,72 0 8,49 8,49 CIFAR10_4bits full 36010898 1166393 34844505 82,066 30,961 113,017 2,82 10,28 25189,49 25201 CIFAR10_8bits feb_layer0_sc 4.06M 662401 3394944 8,7 8,52 17,22 2,02 0,97 1995 1996 CIFAR10_8bits feb_layer1_sc 17,1M 652288 16371956 39,9 14,9 54,8 3,1 5 11847 11852 CIFAR10_8bits feb_layer2_sc 6.34M 230401 6114013 14,41 5,38 19,79 2,79 1,79 4311 4313 CIFAR10_8bits feb_layer3_sc 8.77M 166401 8605909 19,71 7,59 27,3 3,68 2,49 6208 6210 CIFAR10_8bits fc_layer0_sc 1.76M 12801 1747291 4,12 1,73 5,85 2,32 0,53 1409 1409 CIFAR10_8bits fc_layer1_sc 11.0K 221 10761 0,026 0,0011 0,037 2,88 0 8,59 8,59 CIFAR10_8bits full 37969387 1724513 36244874 86,866 38,1211 124,997 3,68 10,78 25778,59 25789 Figura B.1 Tabla comparativa con todos los resultados obtenidos (CIFAR-10 FULL 4 y 8 bits estimados).
Apéndice C Código TCL para síntesis Ac ontinuación, el código C.1 muestra un ejemplo de código usado para la ejecución de la síntesis. La estructura básica usada se basa en la recomendada por CDS con las modificaciones oportunas para el caso concreto de este proyecto y las librerías del fabricante. El flujo básico de este código es el descrito en el capítulo 4, con algunas modificaciones realizadas para mejorar la ejecución o solventar errores. Código C.1 Código TCL utilizado en Genus. ########################################################################### ## ## Script for Cadence Genus ## ########################################################################### date set_db hdl_language {vhdl} set LOCAL_DIR "[exec pwd]/.." set SYNTH_DIR ${LOCAL_DIR}/work set TCL_PATH "${LOCAL_DIR}/tcl $LOCAL_DIR/constraints" set REPORTS_PATH "${LOCAL_DIR}/work/reports" set LIB_PATH "${LOCAL_DIR}/libraries/" set RTL_PATH "$LOCAL_DIR/rtl/src $LOCAL_DIR/rtl/src/05-pc_tree $LOCAL_DIR/rtl /src/packages" set DESIGN "cnn_sc_top" set MSGS_TO_BE_SUPRESSED {LBR-58 LBR-40 LBR-41 VLOGPT-35} set LIB_LIST { \ tcbn40lpbwptc_ecsm.lib \ } set LEF_LIST { \ tcbn40lpbwp_7lm4X2ZRDL.lef \ } set RTL_LIST "[exec ls ${LOCAL_DIR}/rtl/src/packages] [exec ls ${LOCAL_DIR}/rtl /src/05-pc_tree] [exec ls ${LOCAL_DIR}/rtl/src | grep vhd]" suppress_messages {LBR-30 LBR-31 LBR-40 LBR-41 LBR-72 LBR-77 LBR-162} 47
48 Appendix C. Código TCL para síntesis set_db hdl_track_filename_row_col true set_db lp_power_unit mW set_db init_lib_search_path $LIB_PATH set_db script_search_path $TCL_PATH set_db init_hdl_search_path $RTL_PATH set_db error_on_lib_lef_pin_inconsistency true set_db lp_insert_clock_gating true set_db leakage_power_effort low set_db delete_unloaded_insts false set_db hdl_preserve_unused_registers true set_db delete_unloaded_seqs false #set_db library $LIB_LIST read_libs $LIB_LIST ## PLE #set_db lef_library $LEF_LIST read_physical -lef $LEF_LIST read_hdl $RTL_LIST ::legacy::set_attribute hdl_max_loop_limit 500000 / elaborate $DESIGN init_design check_design -unresolved report_ple > ple.rpt read_sdc ../tcl/clock.sdc set_db innovus_executable /lustre/cad/CADENCE_18/INNOVUS181/bin/innovus set_db syn_generic_effort medium set_db syn_map_effort medium set_db syn_opt_effort medium #Starting the synthesis with: syn_generic syn_map syn_opt report_qor > qor.txt read_saif ../libraries/salida.saif report_power > a_power.txt report_area > a_area.txt report_timing > a_timing.txt
49 #Generating extra reports report_dp > a_dp.txt report_design_rules > a_desrul.txt report_gates > a_gates.txt report_summary > a_summary.txt report_instance > a_instance.txt
Apéndice D Algunos reportes Aquí se muestran algunos ejemplos más de reportes generados durante la síntesis de los circuitos propuestos. Algunos informes han sido explicados en el capítulo 4, área, potencia y tiempo, figuras D.1, D.2 y D.3 respectivamente. El resto: datapath, figura D.4; comprobación de reglas de diseño, figura D.5; quality of results, figura D.6; puertas empleadas, figura D.7; y reporte PLE, figura D.8. Por razones de espacio, algunos de los reporte muestran solamente las primeras líneas del mismo, ya que algunos pueden ser de cientos o miles de líneas. Figura D.1 Reporte de área generado después del proceso de síntesis. 51
52 Apéndice D. Algunos reportes Figura D.2 Reporte de potencia generado después del proceso de síntesis.
53 Figura D.3 Reporte de timing generado después del proceso de síntesis. Figura D.4 Reporte de datapath generado después del proceso de síntesis.
60 Índice de Figuras 2.4 Sala blanca de la NASA donde se fabrican IC. Imágenes obtenidas de WikiMedia Commons bajo licencia Creative Commons. Fuente:https://commons.wikimedia.org/ wiki/ File:Clean_ room.jpg 16 2.5 Diferentes obleas con circuitos después del proceso de fabricación. Imágenes obtenidas de WikiMedia Commons bajo licencia Creative Commons. Fuente:https:// commons.wikimedia.org/ wiki/ File:A_Wafer_of_the_Latest_D-Wave_Quantum_Computers_(39188583425).jpg y https:// commons.wikimedia.org/ wiki/ File:Semiconductor_Wafer_of_Microelectronics. jpg 17 4.1 Reporte de área generado en el diseño de una de las implementaciones del circuito para la CNN LeNet-5 26 4.2 Detalle de las celdas generadas en el diseño de una de las implementaciones del circuito para la CNN LeNet-5. Cada una de las celdas representa algún tipo de dispositivo lógico (puertas AND,OR, biestables, etc.), los puntos muestran los pines y pads de conexión para las entradas y salidas de cada celda 26 4.3 Vista superior del layout generado en el diseño de una de las implementaciones del circuito para la CNN LeNet-5. En azul, se muestran todas las celdas que pertenecen a la implementación de la primera capa convolucional del sistema. En verde, las celdas pertenecientes a la segunda capa convolucional del sistema. En rosa, las celdas de una de las capas FC. En rojo, las instancias seleccionadas en el Design Browser (explorador de instancias en la izquierda) 27 4.4 Reporte de tiempo generado en el diseño de una de las implementaciones del circuito para la CNN LeNet-5 27 4.5 Ventana Timing Debug del diseño obtenido en la interfaz gráfica de Genus en el diseño de una de las implementaciones del circuito para la CNN LeNet-5. Se muestran todos los caminos que se recorren en el circuito así como sus tiempos y un histograma que muestra el número de caminos que tienen cada WNS 28 4.6 Ventana Timing Path Analyzer del diseño obtenido en la interfaz gráfica de Genus en el diseño de una de las implementaciones del circuito para la CNN LeNet-5. Se muestra una lista con todas las celdas combinacionales que se recorren en el trayecto, se muestra también de forma gráfica dónde es consumido el tiempo 28 4.7 Reporte de potencia generado en el diseño de una de las implementaciones del circuito para la CNN LeNet-5 29 A.1 Encabezado del artículo publicado por Frasser et al. en la revista IEEE Transactions on Neural Network and Learning Systems 43 B.1 Tabla comparativa con todos los resultados obtenidos (CIFAR-10 FULL 4 y 8 bits estimados) 46 D.1 Reporte de área generado después del proceso de síntesis 51 D.2 Reporte de potencia generado después del proceso de síntesis 52 D.3 Reporte de timing generado después del proceso de síntesis 53 D.4 Reporte de datapath generado después del proceso de síntesis 53 D.5 Reporte de comprobación reglas de diseño generado después del proceso de síntesis 54 D.6 Reporte de calidad de resultados generado después del proceso de síntesis. Este reporte muestra un resumen del proceso completo con información relativa a la síntesis y a la misma ejecución del proceso 55 D.7 Reporte de puertas usadas generado después del proceso de síntesis. Se muestra una lista de los dispositivos lógicos incluidos en las librerías físicas del fabricante así como el número de veces que se instancia, el área que ocupan y la librería de donde proceden 56 D.8 Reporte PLE generado antes del proceso de síntesis. Este informe previo muestra información relativa a las librerías del fabricante y las capas de metal que serán utilizadas 57
Índice de Tablas 2.1 Nodos de fabricación de semiconductores desde 1971 a 2022 y previsión para el año 2024. Fuente: Wikipedia[57] 18 5.1 Tabla de resultados del modelo “no-opt”: número de celdas y área 31 5.2 Tabla de resultados del modelo “no-opt”: retraso máximo de trayectos y potencias 32 5.3 Tabla de resultados del modelo “optimized”: número de celdas y área 32 5.4 Tabla de resultados del modelo “optimized”: retraso máximo de trayectos y potencias 32 5.5 Tabla de resultados del modelo LeNet-5 con 2 bits de resolución: número de celdas y área 32 5.6 Tabla de resultados del modelo LeNet-5 con 2 bits de resolución: retraso máximo de trayectos y potencias 32 5.7 Tabla de resultados del modelo LeNet-5 con 4 bits de resolución: número de celdas y área 33 5.8 Tabla de resultados del modelo LeNet-5 con 4 bits de resolución: retraso máximo de trayectos y potencias 33 5.9 Tabla de resultados del modelo CIFAR-10 capa 1 con 4 bits de resolución: número de celdas y área 33 5.10 Tabla de resultados del modelo CIFAR-10 capa 1 con 4 bits de resolución: retraso máximo de trayectos y potencias 34 5.11 Tabla de resultados del modelo CIFAR-10 capa 2 con 4 bits de resolución: número de celdas y área 34 5.12 Tabla de resultados del modelo CIFAR-10 capa 2 con 4 bits de resolución: retraso máximo de trayectos y potencias 34 5.13 Tabla de resultados del modelo CIFAR-10 capa 3 con 4 bits de resolución: número de celdas y área 34 5.14 Tabla de resultados del modelo CIFAR-10 capa 3 con 4 bits de resolución: retraso máximo de trayectos y potencias 34 5.15 Tabla de resultados del modelo CIFAR-10 capa 4 con 4 bits de resolución: número de celdas y área 34 5.16 Tabla de resultados del modelo CIFAR-10 capa 4 con 4 bits de resolución: retraso máximo de trayectos y potencias 34 5.17 Tabla de resultados del modelo CIFAR-10 capa 5 con 4 bits de resolución: número de celdas y área 35 5.18 Tabla de resultados del modelo CIFAR-10 capa 5 con 4 bits de resolución: retraso máximo de trayectos y potencias 35 5.19 Tabla de resultados del modelo CIFAR-10 capa 6 con 4 bits de resolución: número de celdas y área 35 5.20 Tabla de resultados del modelo CIFAR-10 capa 6 con 4 bits de resolución: retraso máximo de trayectos y potencias 35 5.21 Tabla de resultados del modelo CIFAR-10 capa 1 con 8 bits de resolución: número de celdas y área 35 5.22 Tabla de resultados del modelo CIFAR-10 capa 1 con 8 bits de resolución: retraso máximo de trayectos y potencias 35 5.23 Tabla de resultados del modelo CIFAR-10 capa 2 con 8 bits de resolución: número de celdas y área 36 5.24 Tabla de resultados del modelo CIFAR-10 capa 2 con 8 bits de resolución: retraso máximo de trayectos y potencias 36 5.25 Tabla de resultados del modelo CIFAR-10 capa 3 con 8 bits de resolución: número de celdas y área 36 5.26 Tabla de resultados del modelo CIFAR-10 capa 3 con 8 bits de resolución: retraso máximo de trayectos y potencias 36 5.27 Tabla de resultados del modelo CIFAR-10 capa 4 con 8 bits de resolución: número de celdas y área 36 5.28 Tabla de resultados del modelo CIFAR-10 capa 4 con 8 bits de resolución: retraso máximo de trayectos y potencias 36 61
62 Índice de Tablas 5.29 Tabla de resultados del modelo CIFAR-10 capa 5 con 8 bits de resolución: número de celdas y área 36 5.30 Tabla de resultados del modelo CIFAR-10 capa 5 con 8 bits de resolución: retraso máximo de trayectos y potencias 37 5.31 Tabla de resultados del modelo CIFAR-10 capa 6 con 8 bits de resolución: número de celdas y área 37 5.32 Tabla de resultados del modelo CIFAR-10 capa 6 con 8 bits de resolución: retraso máximo de trayectos y potencias 37 5.33 Tabla de datos estimados del modelo CIFAR-10 completo con 4 bits de resolución: número de celdas y área 37 5.34 Tabla de datos estimados del modelo CIFAR-10 completo con 4 bits de resolución: retraso máximo de trayectos y potencias 37 5.35 Tabla de datos estimados del modelo CIFAR-10 completo con 8 bits de resolución: número de celdas y área 38 5.36 Tabla de datos estimados del modelo CIFAR-10 completo con 8 bits de resolución: retraso máximo de trayectos y potencias 38
Índice de Códigos 4.1 Ejemplo de instrucciones de lectura de librerías y códigos fuentes del diseño 23 4.2 Instrucción básica para la ejecución del proceso de elaboración del diseño 23 4.3 Instrucción para ejecución de la inicialización del diseño 23 4.4 Ejemplo de instrucción para cargar las restricciones de tiempo mediante un archivo SDC 24 4.5 Ejemplo de instrucciones para configurar el esfuerzo de síntesis a nivel medio (recomendado por el desarrollador del software) 24 4.6 Instrucción básica para la ejecución de la síntesis genérica 24 4.7 Instrucción básica para la ejecución de la síntesis de mapeado 25 4.8 Instrucción básica para la ejecución de la síntesis de optimización 25 4.9 Comandos para generar reportes 25 4.10 Opciones de ejecución para hacer uso de varias máquinas en paralelo 30 C.1 Código TCL utilizado en Genus 47 63
Bibliografía [1] J. Ahmadi-Farsani, B. Linares-Barranco, and T. Serrano-Gotarredona, Auxiliary pulse-extender and current-attenuator circuits for flexible interaction with memristive crossbars in snns, 2020 27th IEEE International Conference on Electronics, Circuits and Systems (ICECS), 2020, pp. 1–4. [2] J. Ahmadi-Farsani, S. Ricci, S. Hashemkhani, D. Ielmini, B. Linares-Barranco, and T. Serrano- Gotarredona, A cmos-memristor hybrid system for implementing stochastic binary spike timingdependent plasticity, Phil. Trans. R. Soc. A 380 (2022), 20210018. [3] J. Ahmadi-Farsani, S. Ricci, S. Hashemkhani, D. Ielmini, B. Linares-Barranco, and T. Serrano- Gotarredona, A hybrid memristor/cmos snn for implementing one-shot winner-takes-all training, 2022 IEEE International Symposium on Circuits and Systems (ISCAS), 2022, pp. 210–214. [4] T. H. Bullock, M. V. L. Bennett, D. Johnston, R. Josephson, E. Marder, and R. D. Fields, The neuron doctrine, redux, Science 310 (2005), no. 5749, 791–793. [5] A. Camuñas-Mesa, L, E. Vianello, C. Reita, T. Serrano-Gotarredona, and B. Linares-Barranco, A cmol-like memristor-cmos neuromorphic chip-core demonstrating stochastic binary stdp, IEEE Journal on Emerging and Selected Topics in Circuits and Systems 12 (2022), no. 4, 898–912. [6] L. A. Camuñas-Mesa, B. Linares-Barranco, and T. Serrano-Gotarredona, Neuromorphic spiking neural networks and their memristor-cmos hardware implementations, Materials 12 (2019), no. 17, 10–37. [7] V. Canals, A. Morro, A. Oliver, M. L. Alomar, and J. L. Rosselló, A new stochastic computing methodology for efficient neural network implementation, IEEE Transactions on Neural Networks and Learning Systems 27 (2016), no. 3, 551–564. [8] C.Y. Chang and S.M. Sze, Ulsi technology, Electrical engineering series, McGraw-Hill, 1996. [9] Y. Chen, Z. Shu, S. Zhang, P. Zeng, H. Liang, M. Zheng, and H. Duan, Sub-10 nm fabrication: methods and applications, International Journal of Extreme Manufacturing 3(2021), no. 3, 032002. [10] P.P. Chu, Fpga prototyping by vhdl examples: Xilinx microblaze mcs soc, Wiley, 2018. [11] L. Chua, Memristor, hodgkin–huxley, and edge of chaos, Nanotechnology 24 (2013), no. 38, 383001. [12] Digital System Design and S. Roy, Placement and routing using innovus,https:// digitalsystemdesign. in/placement-and-routing-using-innovus/ , 2020, Visitado en 2023. [13] S. A. El-Sayed, T. Spyrou, A. Pavlidis, E. Afacan, L. A. Camuñas-Mesa, B. Linares-Barranco, and H.-G. Stratigopoulos, Spiking neuron hardware-level fault modeling, 2020 IEEE 26th International Symposium on On-Line Testing and Robust System Design (IOLTS), 2020, pp. 1–4. [14] J. W. Esch, — rascel — a programmable analog computer based on a regular array of stochastic computing element logic, Ph.D. thesis, University of Illinois Urbana-Champaign, 1969, p. 108. [15] X. Fan and H. Markram, A brief history of simulation neuroscience, Frontiers in Neuroinformatics 13 (2019), 32. 65
66 Bibliografía [16] C. F. Frasser, P. Linares-Serrano, I. Díez de los Ríos, A. Morán, E. S. Skibinsky-Gitlin, J. Font-Rosselló, V. Canals, M. Roca, T. Serrano-Gotarredona, and J. L. Rosselló, Fully parallel stochastic computing hardware implementation of convolutional neural networks for edge computing applications, IEEE Transactions on Neural Networks and Learning Systems (2022), 1–11. [17] J. E. Gentle, Random number generation and monte carlo methods, Statistics and Computing, Springer New York, NY, 2003. [18] I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville, and Y. Bengio, Generative adversarial networks, Commun. ACM 63 (2020), no. 11, 139–144. [19] A. Graves, A.-R. Mohamed, and G. Hinton, Speech recognition with deep recurrent neural networks, 2013 IEEE International Conference on Acoustics, Speech and Signal Processing, 2013, pp. 6645–6649. [20] S Hochreiter and J Schmidhuber, Long short-term memory, Neural Computation 9(1997), no. 8, 1735–1780. [21] G. Indiveri, B. Linares-Barranco, T. Hamilton, A. van Schaik, R. Etienne-Cummings, T. Delbruck, S.-C. Liu, P. Dudek, P. Häfliger, S. Renaud, J. Schemmel, G. Cauwenberghs, J. Arthur, K. Hynna, F. Folowosele, S. SAÏGHI, T. Serrano-Gotarredona, J. Wijekoon, Y. Wang, and K. Boahen, Neuromorphic silicon neuron circuits, Frontiers in Neuroscience 5(2011), 23. [22] C.L. Janer, J.M. Quero, and L.G. Franquelo, Fully parallel summation in a new stochastic neural network architecture, IEEE International Conference on Neural Networks, 1993, pp. 1498–1503 vol.3. [23] C.L. Janer, J.M. Quero, J.G. Ortega, and L.G. Franquelo, Fully parallel stochastic computation architecture, IEEE Transactions on Signal Processing 44 (1996), no. 8, 2110–2117. [24] S.M. Kang and Y. Leblebici, Cmos digital integrated circuits analysis & design, McGraw-Hill Series in Electrical and Computer Engineering Series, McGraw-Hill Education, 2003. [25] Y. LeCun, Y. Bengio, and G. Hinton, Deep learning, Nature 521 (2015), 436–444. [26] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, Gradient-based learning applied to document recognition, Proceedings of the IEEE 86 (1998), no. 11, 2278–2324. [27] Yann LeCun, 1.1 deep learning hardware: Past, present, and future, 2019 IEEE International Solid- State Circuits Conference - (ISSCC), 2019, pp. 12–19. [28] P. Mars and W. J. Poppelbaum, Stochastic and deterministic averaging processors / [by] p. mars [and] w. j. poppelbaum., Institute of Electrical Engineers digital electronics and computing series ; 1, Peregrinus on behalf of the Institution of Electrical Engineers, New York ;, 1981 (eng). [29] Nandland, Vhdl vs. verilog. which language should you use for your fpga and asic designs?,https: // nandland.com/ lesson-16-vhdl-vs-verilog-which-language-should-you-learn-first/ , 2022, Visitado en 2023. [30] OpenAI, Chatgpt,https://chat.openai.com/ , 2023, Visitado entre noviembre 2022 y enero 2023. [31] , Dall·e,https://labs.openai.com/ , 2023, Visitado entre noviembre 2022 y enero 2023. [32] J.D. Plummer, M.D. Deal, and P.B. Griffin, Silicon vlsi technology: Fundamentals, practice and modeling, Prentice Hall electronics and VLSI series, Prentice Hall, 2000. [33] W. J. Poppelbaum, C. Afuso, and J. W. Esch, Stochastic computing elements and systems, Proceedings of the November 14-16, 1967, Fall Joint Computer Conference (New York, NY, USA), AFIPS ’67 (Fall), Association for Computing Machinery, 1967, p. 635–644. [34] B. Razavi, Design of analog cmos integrated circuits, Electrical Engineering Series, McGraw-Hill, 2001. [35] B.C. Readler, Verilog by example: A concise introduction for fpga design, Full Arc Press, 2011. [36] , Vhdl by example: A concise introduction for fpga design, Full Arc Press, 2014.
Bibliografía 67 [37] F. Rosenblatt, The perceptron: a probabilistic model for information storage and organization in the brain., Psychological review 65 6 (1958), 386–408. [38] C. Saint and J. Saint, Ic mask design: Essential layout techniques, McGraw-Hill professional engineering, McGraw-Hill, 2002. [39] J. Schmidhuber, Deep learning in neural networks: An overview, Neural Networks 61 (2015), 85–117. [40] K. Shubham and A. Gupta, Integrated circuit fabrication, Manakin Press, 2021. [41] T. Spyrou, S. A. El-Sayed, E. Afacan, L. A. Camuñas-Mesa, B. Linares-Barranco, and H.-G. Stratigopoulos, Neuron fault tolerance in spiking neural networks, 2021 Design, Automation & Test in Europe Conference & Exhibition (DATE), 2021, pp. 743–748. [42] StabilityAI, Stable diffusion online,https://stablediffusionweb.com/ #demo, 2023, Visitado entre noviembre 2022 y enero 2023. [43] E. Strubell, A. Ganesh, and A. McCallum, Energy and policy considerations for deep learning in NLP, Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics (Florence, Italy), Association for Computational Linguistics, July 2019, pp. 3645–3650. [44] ,Energy and policy considerations for modern deep learning research, Proceedings of the AAAI Conference on Artificial Intelligence 34 (2020), no. 09, 13693–13696. [45] Cadence Design Systems, Advanced synthesis with genus stylus common ui training,https:// www. cadence.com/en_US/ home/ training/ all-courses/86249.html, 2021-2022. [46] ,Cadence rtl-to-gdsii flow training,https:// www.cadence.com/en_US/home/training/ allcourses/86136.html, 2021-2022. [47] ,Genus synthesis solution with stylus common ui training,https://www.cadence.com/ en_US/ home/training/ all-courses/86220.html, 2021-2022. [48] ,Innovus block implementation with stylus common ui training,https:// www.cadence.com/ en_ US/home/ training/ all-courses/86222.html, 2021-2022. [49] S.M. Sze, Vlsi technology, Electronics and electronic circuits, McGraw-Hill, 1983. [50] R. C. Tausworthe, Random numbers generated by linear recurrence modulo two, Mathematics of Computation 19 (1965), no. 90, 201–209. [51] A. Torralba, F. Colodro, E. Ibanez, and L.G. Franquelo, Two digital circuits for a fully parallel stochastic neural network, IEEE Transactions on Neural Networks 6(1995), no. 5, 1264–1268. [52] A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N Gomez, Ł. Kaiser, and I. Polosukhin, Attention is all you need, Advances in Neural Information Processing Systems (I. Guyon, U. Von Luxburg, S. Bengio, H. Wallach, R. Fergus, S. Vishwanathan, and R. Garnett, eds.), vol. 30, Curran Associates, Inc., 2017. [53] VHDLwhiz, Should i learn vhdl if verilog is becoming more popular?,https:// vhdlwhiz.com/ should-i- learn-vhdl-if-verilog-is-becoming-more-popular/, 2022, Visitado en 2023. [54] J. von Neumann, Probabilistic logics and the synthesis of reliable organisms from unreliable components, pp. 43–98, Princeton University Press, Princeton, 1956. [55] W. Wan, R. Kubendran, C. Schaefer, S. B. Erylmaz, W. Zhang, D. Wu, S. Deiss, P. Raina, H. Qian, B. Gao, S. Joshi, H. Wu, H.-S. Philip Wonw, and G. Cauwenberghs, A compute-in-memory chip based on resistive random-access memory, Nature 608 (2022), 504–512. [56] N.H.E. Weste and D.M. Harris, Cmos vlsi design: A circuits and systems perspective, Addison Wesley, 2011. [57] Wikipedia, Semiconductor device fabrication,https:// en.wikipedia.org/wiki/Semiconductor_device_ fabrication, 2023, Visitado en febrero de 2023.
68 Bibliografía [58] B. Yu, L. Chang, S. Ahmed, H. Wang, S. Bell, C. Y. Yang, C. Tabery, C. Ho, Q. Xiang, T.J. King, J. Bokor, C. Hu, M. R. Lin, and D. Kyser, Finfet scaling to 10 nm gate length, Digest. International Electron Devices Meeting„ 2002, pp. 251–254. [59] C. Zamarreño-Ramos, L. Camuñas-Mesa, J. Perez-Carrasco, T. Masquelier, T. Serrano-Gotarredona, and B. Linares-Barranco, On spike-timing-dependent-plasticity, memristive devices, and building a self-learning visual cortex, Frontiers in Neuroscience 5(2011), 22.
Índice alfabético A AI, 1, 2, 4, 7, 10, 31, 59 análisis de esquina, 15 análisis de Montecarlo, 15 AND, 8, 13, 26 ANN, 2, 3, 7 Application-Specific Integrated Circuit, 11 aprendizaje no supervisado, 3 aprendizaje supervisado, 3, 5 Artificial Intelligence, 1 Artificial Neural Network, 2 ASIC, 11, 26, 41 B back-end, 10–12, 19, 29, 31, 41 bias, 2 biestables, 13, 26 bonding, 17 C Cadence Design Systems, 20 CDS, 20–22, 24, 41, 47 CIFAR-10, 5, 30, 38 circuito secuencial, 24 CMOS, 15–17 CNN, 4–8, 19–21, 26–30, 32, 33, 38, 41, 60 Complementary Metal-Oxide- Semiconductor, 15 Computación Neuromórfica, 42 Consejo Superior de Investigaciones Científicas, 19 Convolutional Neural Network, 4 CSIC, 19 D dado, 33 dados, 17 dataset, 5–7, 30, 33 Deep Learning, 4, 7 Design Rule Checking, 16 DRC, 16 F fan-out, 13, 16, 26 FC, 5, 19, 20, 27, 30, 33, 35–37, 59, 60 Field-Programmable Gate Array, 7 floorplanning, 14, 15, 28 foundries, 13, 16 FPGA, 7, 23, 42, 43 front-end, 11, 12, 19–21, 23, 29, 41, 43 Fully Connected, 5 G Genus, 22 Genus Synthesis Solution, 21–24, 31, 33, 41 H Hardware Description Language, 11 HDL, 11–13, 22 I IC, 7, 10–12, 14–19, 21, 24, 41, 42, 60 IMSE, 9, 19, 21, 29, 42, 43 inferencia, 3 Innovus Implementation System, 12, 14, 15, 21 Instituo de Microelectrónica de Sevilla, 9 Integrated Circuit, 7 Intellectual Property, 13 IP, 13, 21 L layout, 14, 15, 20, 25, 27–30 Layout vs Schematic, 16 LeNet-5, 5, 26–29, 32, 38, 41 LFSR, 9 Linear-Feedback Shift Register, 9 LVS, 16 M Machine Learning, 2 módulo, 12 Max-Pooling, 5 memristores, 42 mismatching, 15 ML, 2–4, 10, 31 MMMC, 31 MNIST, 5, 6, 59 Modified National Institute of Standards and Technology, 5 MP, 5 Multi-Mode Multi-Corner, 31 O OR, 13, 26 overfitting, 5 P pads, 13, 14, 17 PCB, 17 PDK, 12, 13, 15, 19, 22 place and route, 14, 15 Printed Circuit Board, 17 Process Design Kit, 12 prompt, 24 R Rectified Linear Unit, 2 Register-Transfer Level, 12 ReLU, 2, 3 Resistive Random-Access Memory, 42 RRAM, 42 RTL, 12, 21, 24 S síntesis, 12–14, 19–21, 28, 45, 51, 55 SC, 8, 19, 31, 32 scripting, 22 SNN, 2, 42 Spiking Neural Network, 2 Stochastic Computing, 8 System Verilog, 21 T TCL, 22 TNS, 26 Total Negative Slack, 26 U Universidad de Sevilla, 9 US, 9, 19, 42 V Verilog, 11, 21, 23 Very Large-Scale Integration, 7 VHDL, 11, 21, 23 VHSIC Hardware Description Language, 11 VLSI, 7, 8, 23, 41, 43 W WNS, 26, 28, 31, 60 Worse Negative Slack, 26 X XNOR, 9 69