Una de las aplicaciones de los FPGA es modelar un sistema informático/chip/funcionalidad en él antes de fabricar en masa las copias del diseño finalizado. ¿Cómo se hizo esto antes de que se usaran los FPGA para este tipo de trabajo?
Todavía lanzamos RTL final (* ver más abajo) basado solo en simulación (simuladores de Cadence, Mentor). Todas las pruebas funcionales están cubiertas en la simulación RTL, algunas se promocionan a simulaciones a nivel de puerta. Las simulaciones que se ejecutan durante días en servidores dedicados no fueron ni son una excepción. Para la mayoría de las simulaciones de subsistemas, no es raro ejecutarlas durante la noche y cuidarlas durante los fines de semana.
En este flujo solo de simulación, las estructuras de FPGA todavía se utilizan para el desarrollo de software anterior al silicio, de modo que S/W o F/W se pueden desarrollar antes de que el silicio esté listo y, en muchos casos, incluso mucho antes de la cinta.
Las simulaciones de vectores y la verificación de equivalencia formal independiente siguen siendo necesarias para demostrar la equivalencia lógica: cuando la salida de FPGA y la simulación RTL difieren, no siempre está claro cuál está compilado correctamente o cuál está codificado como se esperaba.
Sin duda, las simulaciones de FPGA brindan mucha más cobertura en mucho menos tiempo. Las simulaciones aleatorias (buscando el manejo de errores, excepciones, errores de bit, etc.) finalmente son prácticas gracias a los FPGA.
"Tape-out" significa enviar los archivos ASIC GDSII y otras especificaciones de diseño a una fundición para comenzar el proceso de fabricación. Históricamente, antes de FTP e Internet de alta velocidad, el GDSII se almacenaba en una cinta magnética y la cinta se enviaba a la fundición.
"Tape- in " es nuestra jerga de culto para el lanzamiento final de RTL y otra información de diseño para que el equipo de back-end pueda comenzar la síntesis final y el diseño/lugar y ruta. Para el equipo de algoritmos y los codificadores y equipos de verificación de RTL, esta fecha de "registro" objetivo es la marca en el calendario en torno a la cual se planifican todo el trabajo, las horas extra y las vacaciones. También es la fecha en la que deben completarse todas las verificaciones críticas y la mayoría de las demás verificaciones.
La cinta puede ser un asunto interno de la empresa, que implique una transferencia entre diferentes departamentos o una transferencia a un (sub)contratista externo.
Aunque el diseño es prácticamente definitivo y se publica en este punto, la verificación aún continúa después de la grabación y cualquier problema encontrado se evalúa. El curso de acción depende de qué tan lejos esté el equipo de back-end: (1) el problema se soluciona y se revisa el RTL (también conocido como "volver a girar el RTL"), (2) el diseño es parcheado por el back-end usando repuesto espacio, celdas lógicas de repuesto y flip-flops de repuesto colocados y distribuidos intencionalmente para este propósito, o (3) el problema se aplaza como un error conocido, se lleva a cabo a través de la documentación, y el diseñador se avergüenza por el resto de su corta carrera (por lo que siente...).
Luego están los problemas que aún no conocemos. El uso de FPGA ha ayudado a reducir esta brecha, porque no solo podemos ejecutar muchas más pruebas y volver a girar el RTL rápidamente para el FPGA, sino que también podemos ejecutar el firmware en un núcleo SoC o en un procesador de núcleo suave casero con trabajo. buses e interfaces de hardware.
Antes de la verificación con FPGA, la complejidad del hardware era limitada, la cobertura de verificación era menor y necesitaba más vueltas del ASIC para llegar a un silicio de trabajo aceptable.
Obviamente, cuanto más compleja sea la arquitectura SoC (DDR, CPU, lógica, periféricos), mayor será la brecha entre la FPGA RTL y la ASIC RTL, y los equipos de FPGA dedicados modificarán la RTL para asignarla al dispositivo de emulación de destino.
Todos los parches deben verificarse, y para eso usamos simulaciones a nivel de puerta (muy lentas) y auditorías de netlist (trabajo manual muy tedioso). Aunque el RTL coincide con la lista de conexiones, cualquier verificación adicional de FPGA del diseño se basa en RTL y no en la lista de redes, y se denomina verificación de "diseño posterior".
Advertencia: el significado de la jerga puede variar ligeramente entre empresas y regiones, pero generalmente está bien alineado.
(*) En cuanto al significado de "RTL": describe sus circuitos lógicos utilizando un lenguaje de diseño de hardware (HDL) como Verilog o VHDL. RTL (nivel de transferencia de registro) es una forma limitada específica de describir su circuito como pasos de cálculos/funciones combinatorias (y/o tabla de búsqueda, etc.) y funciones de almacenamiento (flip-flops, memoria). Utiliza un HDL para lograr esa descripción. Un HDL también puede describirlo de otras formas complementarias, como a nivel de comportamiento y a nivel de puerta.
"Ejecutar" su código significa simular la descripción y confirmar que el circuito que implica hará lo que espera. A medida que el código base crece, requiere más ciclos de CPU en su computadora portátil o servidor para simular lo que sucede, incluso para eventos simples . Esta es la razón por la cual la asignación del RTL para un ASIC primero a un FPGA para la verificación es una opción natural y atractiva para diseños cada vez más grandes.
Se realizaron simulacros. Los diseñadores utilizaron SPICE, así como varios simuladores lógicos, a menudo patentados.
No debe pensar que todos los chips funcionan perfectamente la primera vez que se fabrican. Estas herramientas de diseño no son perfectas, y tampoco lo es una emulación de FPGA. Depurar el primer silicio es un rito de iniciación para los diseñadores de VLSI.
Los latigazos TTL, los simuladores funcionales, los simuladores lógicos y los grandes presupuestos para minicomputadoras para ejecutar estas cosas eran la norma antes de que la aceleración y la creación de prototipos de FPGA fueran una cosa.
La introducción de los FPGA a mediados de la década de 1980 no cambió mucho las cosas al principio. Los primeros aceleradores FPGA (p. ej., Quickturn y sus competidores) eran bastante caros. Para la creación de prototipos ASIC, los FPGA de primera generación aún eran demasiado lentos, difíciles de usar y no lo suficientemente densos.
(más aquí: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7086413 )
Mientras tanto, las estaciones de trabajo y los servidores se volvieron mucho más rápidos y menos costosos, por lo que tenía más sentido gastar el dinero de I+D en máquinas de simulación cada vez más rápidas.
Para entonces, los HDL como VHDL y Verilog (así como las soluciones internas patentadas) estaban bien establecidos como el método de diseño elegido. Como resultado, la creación de prototipos MSI/SSI cayó en desgracia, con su uso limitado a bloques que necesitaban ejecutarse a gran velocidad, como E/S de señal mixta o controladores SERDES (e incluso entonces, se usaban y se usan pequeños chips de prueba para esto para validar los diseños ya que estos bloques dependen mucho del proceso).
Con el tiempo, los FPGA se volvieron más densos, rápidos y fáciles de enrutar; sus herramientas mejoraron (especialmente las herramientas de síntesis de terceros como Synplify); sus E/S se volvieron más flexibles, abundantes y útiles, y las técnicas de partición multi-FPGA se volvieron más manejables para crear prototipos de diseños grandes debido a las E/S mejoradas. Esto los hizo no solo más útiles para la aceleración, sino también más rentables para la creación de prototipos.
Sin embargo, existe el dilema de la implementación de ASIC frente a FPGA: ¿modela la lógica puerta por puerta de ASIC o la resintetiza específicamente para FPGA? La respuesta llegó en estrategias mejoradas de síntesis y validación que proporcionaron una mayor confianza en el modelo FPGA, aunque su implementación de bajo nivel es muy diferente de la celda estándar ASIC. Por lo tanto, se podría usar una versión optimizada para FPGA para la creación de prototipos, proporcionando una velocidad y densidad mejoradas en comparación con un modelo a nivel de puerta, mientras se mantiene la confianza de que la síntesis dirigida por ASIC se comportará de la misma manera.
Andy alias
tío dino
Neil_ES
usuario76844
usuario_1818839
stevesh
Pedro Mortensen
lalala