¿Cómo se diseñaban los chips personalizados en los días previos a la llegada de las FPGA como dispositivos de emulación de hardware? [cerrado]

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?

GAL, PAL, etc.
Puede construir computadoras completas en placas de pruebas a partir de puertas lógicas simples. Esto también se puede usar para probar otros diseños.
Construimos una placa de unos 600 mm cuadrados llena de TTL para probar el diseño y hacer que los prototipos funcionaran para nuestro primer ASIC personalizado.
Con grandes esfuerzos :) y muchos errores, aunque no relacionados con fpga. Lo mismo sucede hoy con fpga y todas las herramientas disponibles
Los modelos, como en los prototipos, a menudo eran tableros de TTL. Los chips en sí mismos eran completamente personalizados o, más tarde, alguna forma de ASIC (como el Ferranti ULA, que fue una máscara programada como las ROM de esa época).
Tal vez debería leer "El alma de una nueva máquina" de Tracy Kidder, publicado en 1981. Relata el desarrollo de Data General Eclipse MV/8000 y lo que pasaron los diseñadores de hardware y firmware.
Suena como una pregunta para Retrocomputing .
@Sasszem Incluso había un libro sobre cómo construir su propia computadora Z80: amazon.com/Build-Your-Own-Z80-Computer/dp/0070109621/…

Respuestas (3)

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.

Apple usó las supercomputadoras Cray para diseñar Mac. Fue la ÚNICA venta directa de una máquina Cray (todas las demás máquinas Cray fueron vendidas por licitaciones ganadoras de Cray). Apple era una tienda de System Verilog (y creo que todavía lo está juzgando por los anuncios de trabajo)
@P2000 Quiero hacer una pregunta sobre el impacto de la IA en los profesionales de la industria de los semiconductores. ¿Esta pregunta estará fuera de tema?
@lousycoder parece que la intención es captar una audiencia aquí con una pregunta de tipo "linkedIn", por lo que probablemente se descartaría como tema (preguntas similares se han cerrado en el pasado). Si aún no lo has probado, te propongo una encuesta online sobre ese tema, y ​​le pides a tus contactos de Linkedin que te la pasen.
@ P2000 No, la intención no es esa. Las comunidades de intercambio de pilas siempre han sido una audiencia de nicho técnica y seria que comparte sus ideas, como en esta pregunta. Es raro encontrar tanta gente compartiendo sus conocimientos sustanciales. ¿Puede nombrar una comunidad donde esta pregunta no esté fuera de tema?
LinkedIn

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.

Si bien es cierto, se pueden lograr grandes ahorros al mantener los parches/arreglos restringidos a las capas de metal. Eso, en sí mismo, requiere bastante planificación y previsión.
Esto es todo en pocas palabras: montones, montones de simulaciones, cuantas más, mejor. Las simulaciones más sofisticadas llevaron a casos extremos y condiciones patológicas (escenarios que no se esperaban, pero que posiblemente podrían ocurrir).
Los PLA, ROM y otras estructuras regulares podrían salvar su tocino al evitar una cinta de capa base. También se pueden editar mediante técnicas FIB para acelerar la validación de correcciones.

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.