La creación de prototipos de matriz de puertas programables en campo ( creación de prototipos 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 sistemas en chip y diseños de circuitos integrados específicos de la aplicación en FPGA para la verificación de hardware y el desarrollo temprano de software .
Los métodos de verificación para el diseño de hardware , así como el diseño conjunto 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 lograrlo. [1]
El diseño para la creación de prototipos [5] ( DFP ) se refiere al diseño de sistemas que se puedan crear prototipos . Muchos de los obstáculos a los que se enfrentan los equipos de desarrollo que adoptan prototipos FPGA se pueden resumir en tres "leyes":
Para implementar un diseño de SoC en un prototipo de FPGA es necesario planificar cuidadosamente 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 de SoC como en los procedimientos de proyecto aplicados por los equipos de diseño. Las recomendaciones de procedimiento incluyen la incorporación de convenciones DFP a los estándares de codificación RTL, el empleo de un entorno de simulación compatible con prototipos y la implementación de una estrategia de depuración del sistema en conjunto con el equipo de software.
Debido a la creciente complejidad de los circuitos y a la reducción del tiempo de comercialización, la necesidad de verificación de los diseños de circuitos integrados específicos de la aplicación (ASIC) y de sistemas en chip (SoC) está creciendo. Las plataformas de hardware están cobrando cada vez más importancia entre los ingenieros de verificación debido a la capacidad de probar los diseños de sistemas a gran velocidad con relojes de bus en chip, en comparación con los relojes de simulación que pueden no proporcionar una lectura precisa del comportamiento del sistema. [6] Estos diseños de varios millones de puertas suelen colocarse en una plataforma de creación de prototipos multi-FPGA con seis o más FPGA, ya que no pueden encajar completamente en un solo FPGA. Cuanto menor sea el número de FPGA que se deben dividir en particiones, menor será el esfuerzo del ingeniero de diseño. [7] A la derecha se muestra una imagen de una plataforma de creación de prototipos basada en FPGA que utiliza una configuración de doble FPGA.
Los diseños o listas de conexiones RTL del sistema deberán dividirse en cada FPGA para poder adaptar el diseño a la plataforma de creación de prototipos. [8] Esto presenta nuevos desafíos para el ingeniero, ya que la división manual requiere un esfuerzo tremendo y con frecuencia da como resultado una velocidad deficiente (del diseño en prueba). [7] Si se puede reducir la cantidad de particiones o se puede colocar todo el diseño en un solo 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 circuitos, los ingenieros primero deben observar los recursos disponibles que ofrece el FPGA, ya que el diseño se colocará en la estructura del 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 de utilización de recursos del FPGA. Varios recursos de FPGA incluyen tablas de búsqueda (LUT), flip-flops D , RAM de bloque , procesadores de señal digital (DSP), búferes 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 eliminar cualquier lógica redundante o no utilizada. Un problema típico que surge con la creación de particiones balanceadas es que puede conducir a un conflicto de tiempo o recursos si el corte está en muchas líneas de señal. Para tener una estrategia de partición completamente optimizada, el ingeniero debe considerar cuestiones como las restricciones de tiempo/potencia y la ubicación y el enrutamiento mientras mantiene una partición equilibrada entre los FPGA. Centrarse estrictamente en un solo problema durante una partición puede crear varios problemas en otra.
Para lograr la ubicación y el enrutamiento óptimos para los diseños particionados, el ingeniero debe centrarse en el número de pines del FPGA y en las señales entre FPGA. Después de particionar el diseño en FPGA independientes, la cantidad de señales entre FPGA no debe superar el número de pines del 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 por turnos 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 suelen mitigar 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 las líneas de reloj y los búferes de reloj son limitadas entre los FPGA. Los diseños con reloj interno que se dividen en varios FPGA deben replicar el generador de reloj dentro del FPGA, lo que garantiza un desfase de reloj bajo entre las señales entre FPGA. Además, cualquier lógica de reloj con compuerta debe transformarse para permitir que el reloj reduzca el desfase mientras se opera a frecuencias de reloj altas.
Los cruces de dominios de reloj no se deben dividir en FPGAs independientes. Las señales que pasan por el cruce se deben mantener dentro de un único FPGA, ya que el tiempo de retardo adicional entre FPGAs puede causar problemas en un dominio diferente. También se recomienda que las señales enrutadas entre FPGAs se registren en registros.
Una de las tareas más difíciles y que más tiempo consume en el prototipado de FPGA es la depuración de los diseños de sistemas. El término acuñado para esto es "el infierno de los FPGA". [11] [12] La depuración se ha vuelto más difícil y lenta 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 las señales específicas estén disponibles para la observación, se sinteticen y se descarguen a la plataforma del prototipo de FPGA.
Los proveedores de FPGA ofrecen una serie de herramientas de depuración estándar, entre las que se incluyen ChipScope y SignalTAP. Estas herramientas pueden analizar un máximo de 1024 señales y requieren amplios recursos de memoria y LUT. En el caso de los SoC y otros diseños, la depuración eficiente suele requerir acceso simultáneo a 10 000 o más señales. Si el conjunto original de sondas no puede detectar un error, obtener acceso a señales adicionales da como resultado una situación de “volver a casa por el día”. Esto se debe a los largos y complejos flujos de CAD para la síntesis y la ubicación y el enrutamiento 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 aporta una visibilidad mejorada a nivel RTL a la depuración basada en FPGA. Utiliza un concentrador multietapa altamente eficiente como base para su red de observación para reducir la cantidad de LUT requeridas por señal y 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 un gran almacenamiento externo y transceptores gigabit para extraer trazas profundas de FPGA que funcionan a gran velocidad. La mejora radica en su capacidad de ver trazas grandes en el tiempo como un flujo continuo o en ráfagas. Esto permite explorar escenarios de depuración extendidos a los que no se puede llegar con las técnicas de instrumentación integrada tradicionales . La solución afirma 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]