La creación de prototipos de matriz de compuertas programables en campo ( prototipado FPGA ), también conocida como creación de prototipos basada en FPGA, creación de prototipos ASIC o creación de prototipos de sistema en chip (SoC), es el método para crear prototipos de diseños de circuitos integrados específicos de aplicaciones y sistemas en chips. sobre FPGA para verificación de hardware y desarrollo temprano de software .
Los métodos de verificación para el diseño de hardware , así como el codiseño inicial de software y firmware, se han vuelto comunes. La creación de prototipos de diseños de SoC y ASIC con uno o más FPGA y software de automatización de diseño electrónico (EDA) se ha convertido en un buen método para hacerlo. [1]
Diseño para creación de prototipos [5] ( DFP ) se refiere al diseño de sistemas que sean susceptibles de creación de prototipos . Muchos de los obstáculos que enfrentan los equipos de desarrollo que adoptan prototipos FPGA se pueden resumir en tres "leyes":
Poner un diseño de SoC en un prototipo de FPGA requiere una planificación cuidadosa para lograr los objetivos de creación de prototipos con el mínimo esfuerzo. Para facilitar el desarrollo del prototipo, las mejores prácticas denominadas Diseño para creación de prototipos influyen tanto en el estilo de diseño del SoC como en los procedimientos del proyecto aplicados por los equipos de diseño. Las recomendaciones de procedimiento incluyen agregar convenciones de DFP a los estándares de codificación RTL, emplear un entorno de simulación compatible con prototipos e instituir una estrategia de depuración del sistema junto con el equipo de software.
Debido a la mayor complejidad de los circuitos y la reducción del tiempo de comercialización, está creciendo la necesidad de verificar los diseños de circuitos integrados para aplicaciones específicas (ASIC) y de sistemas en chip (SoC). Las plataformas de hardware se están volviendo más prominentes entre los ingenieros de verificación debido a la capacidad de probar diseños de sistemas a velocidad con relojes de bus en el chip, en comparación con relojes de simulación que pueden no proporcionar una lectura precisa del comportamiento del sistema. [6] Estos diseños de puertas multimillonarias generalmente se colocan en una plataforma de creación de prototipos de múltiples FPGA con seis o más FPGA, ya que no pueden caber completamente en una sola FPGA. Cuantas menos FPGA sea necesario dividir el diseño, se reducirá el esfuerzo del ingeniero de diseño. [7] A la derecha hay una imagen de una plataforma de creación de prototipos basada en FPGA que utiliza una configuración de FPGA dual.
Los diseños RTL o netlists del sistema deberán dividirse en cada FPGA para poder adaptar el diseño a la plataforma de creación de prototipos. [8] Esto introduce nuevos desafíos para el ingeniero ya que la partición manual requiere un esfuerzo tremendo y frecuentemente resulta en una velocidad pobre (del diseño bajo prueba). [7] Si se puede reducir el número de particiones o se puede colocar todo el diseño en una sola FPGA, la implementación del diseño en la plataforma de creación de prototipos se vuelve más fácil.
Al crear particiones de circuito, los ingenieros deben observar primero los recursos disponibles que ofrece la FPGA, ya que el diseño se colocará en la estructura de la FPGA. [7] La arquitectura de cada FPGA depende del fabricante, pero el objetivo principal en la partición del diseño es tener un equilibrio uniforme en la utilización de recursos de la FPGA. Varios recursos de FPGA incluyen tablas de búsqueda (LUT), flip-flops D , RAM de bloque , procesadores de señales digitales (DSP), buffers de reloj, etc. Antes de equilibrar las particiones de diseño, también es valioso para el usuario realizar una optimización lógica global para elimine cualquier lógica redundante o no utilizada. Un problema típico que surge al crear particiones equilibradas es que puede provocar conflictos de sincronización o de recursos si el corte se produce en muchas líneas de señal. Para tener una estrategia de partición completamente optimizada, el ingeniero debe considerar cuestiones como las limitaciones de tiempo/potencia y la ubicación y el enrutamiento, manteniendo al mismo tiempo una partición equilibrada entre las FPGA. Centrarse estrictamente en un solo problema durante una partición puede crear varios problemas en otra.
Para lograr una ubicación y un enrutamiento óptimos para los diseños particionados, el ingeniero debe centrarse en el recuento de pines de la FPGA y las señales entre FPGA. Después de dividir el diseño en FPGA separadas, la cantidad de señales entre FPGA no debe exceder el recuento de pines en la FPGA. [9] Esto es muy difícil de evitar cuando los diseños de circuitos son inmensos, por lo que las señales deben utilizar estrategias como la multiplexación por división de tiempo (TDM), mediante la cual se pueden transferir múltiples señales a través de una sola línea. [10] Estas múltiples señales, llamadas subcanales, se transfieren alternativamente a través de la línea durante un intervalo de tiempo. Cuando la relación TDM es alta, la frecuencia del reloj del bus debe reducirse para acomodar los intervalos de tiempo para cada subcanal. Al reducir la frecuencia del reloj, se obstaculiza el rendimiento del sistema. [7]
Los diseños de sistemas suelen abarcar varios dominios de reloj con señales que atraviesan dominios separados. [7] Los osciladores de reloj integrados y las líneas de reloj globales generalmente mitigan estos problemas, pero a veces estos recursos pueden ser limitados o no cumplir con todos los requisitos de diseño. Los relojes internos deben implementarse dentro de los dispositivos FPGA, ya que las conexiones de la línea de reloj y de los buffers de reloj están limitadas entre los FPGA. Los diseños con reloj interno que están divididos en múltiples FPGA deben replicar el generador de reloj dentro de la FPGA, asegurando una baja desviación del reloj entre las señales entre FPGA. Además, cualquier lógica de reloj cerrada debe transformarse para que el reloj permita reducir la desviación mientras se opera a frecuencias de reloj altas.
Los cruces de dominios de reloj no deben dividirse en FPGA separadas. Las señales que pasan a través del cruce deben mantenerse internas a una única FPGA, ya que el tiempo de retardo agregado entre las FPGA puede causar problemas en un dominio diferente. También se recomienda que las señales enrutadas entre FPGA se registren en registros.
Una de las tareas más difíciles y que consumen más tiempo en la creación de prototipos FPGA es la depuración de diseños de sistemas. El término acuñado para esto es "infierno FPGA". [11] [12] La depuración se ha vuelto más difícil y requiere más tiempo con la aparición de diseños de ASIC y SoC grandes y complejos. Para depurar un prototipo de FPGA, se agregan sondas directamente al diseño RTL para que señales específicas estén disponibles para observación, se sintetizan y se descargan a la plataforma del prototipo de FPGA.
Los proveedores de FPGA ofrecen varias herramientas de depuración estándar, incluidos ChipScope y SignalTAP. Estas herramientas pueden sondear un máximo de 1024 señales y requieren amplios recursos de memoria y LUT. Para SoC y otros diseños, la depuración eficiente a menudo requiere acceso simultáneo a 10.000 o más señales. Si el conjunto original de sondas no puede capturar un error, obtener acceso a señales adicionales resulta en una situación de “ir a casa por el día”. Esto se debe a los largos y complejos flujos CAD de síntesis, ubicación y ruta que pueden requerir de 8 a 18 horas para completarse.
Los enfoques mejorados incluyen herramientas como Certus de Tektronix [13] o EXOSTIV de Exostiv Labs. [14]
Certus brinda visibilidad mejorada a nivel RTL para la depuración basada en FPGA. Utiliza un concentrador de múltiples etapas altamente eficiente como base para su red de observación para reducir la cantidad de LUT requeridas por señal para aumentar la cantidad de señales que se pueden sondear en un espacio determinado. La capacidad de ver cualquier combinación de señales es exclusiva de Certus y supera uno de los cuellos de botella más críticos en la creación de prototipos. [15]
EXOSTIV utiliza gran almacenamiento externo y transceptores gigabit para extraer rastros profundos de FPGA que se ejecutan a gran velocidad. La mejora radica en su capacidad para ver grandes rastros en el tiempo como un flujo continuo o en ráfagas. Esto permite explorar escenarios de depuración extendidos que no se pueden alcanzar con las técnicas tradicionales de instrumentación integrada . La solución pretende ahorrar tanto los recursos de E/S de FPGA como la memoria de FPGA a expensas de los transceptores gigabit, para una mejora de un factor de 100.000 y más en la visibilidad. [16] [17]