# Prototipado FPGA

El prototipo de matriz de puerta programable en campo (prototipado FPGA), también conocido como prototipado basado en FPGA, prototipado ASIC o prototipado del 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 FPGAs para verificación de hardware y desarrollo temprano de software .
Métodos de verificación para diseño de hardware así como codiseño temprano de software y de firmware tienden a convertirse en la corriente principal. El prototipado SoC y los diseños ASIC con uno o más FPGAs y software de automatización de diseño electrónico se han convertido en un buen método para realizar esto.

## Importancia del prototipado

* La realización de un diseño SoC en un prototipo FPGA es una manera confiable de asegurar que es funcionalmente correcto. Esto está comparado a diseñadores sólo confiando en simulaciones de software para verificar que su diseño de hardware es bueno. Aproximadamente un tercio de todo el diseño actual del SoC está libre de fallos durante el primer pase libre de silicio, con cerca de la mitad de todos los re-espines causados por errores de lógica funcional. Una simple plataforma de prototipado puede proporcionar verificación para hardware, firmware, y funcionalidad de diseño de software de aplicación antes del primer pase de silicio.
* La introducción al mercado (tiempo a mercado (TTM, sigla en inglés) es reducida desde el prototipado FPGA. En la sociedad tecnológica actual, los productos nuevos se introducen rápidamente. La falla de tener un producto a punto en un determinado nicho de mercado puede costar a una compañía una cantidad considerable de ingresos. Si un producto es liberado demasiado tarde en el mercado, podría resultar obsoleto, y costar a la compañía su capital de inversión en el producto. Después del proceso de diseño, los FPGAs están a punto para producción, lo cual contrasta con las celdas estándar ASIC, que requieren más de seis meses para lograr la producción.
* Coste de desarrollo. El costo de desarrollo de una cinta de diseño hacia afuera ASIC/SoC de 90 nm cinta de diseño-fuera es de alrededor de $20 millones, con un conjunto de máscara sobre $1 millones solamente. Los costos de desarrollo de diseños de desarrollo de diseños de 45-nm están esperados de $40 millones o mayor. Con el coste creciente de conjuntos de máscara, y la disminución continua de la medida IC medida, minimizando el número de los re-espines es vital al proceso de desarrollo.

## Diseño para prototipado

Diseño para Prototipado (DFP) se refiere a diseñar sistemas manejables para prototipado. Muchos de los obstáculos que afrontan equipos de desarrollo que adoptan los prototipos FPGA se pueden resumir en tres «leyes»:
* Los SoC son más grandes que las FPG
* Los SoC son más rápidos que las FPGA
* Los diseños SoC son hostiles a las FPGA
La ejecución de un diseño SoC en un prototipo FPGA requiere una planificación cuidadosa para lograr los objetivos de creación con el mínimo esfuerzo. Para facilitar el desarrollo del prototipo, las mejores prácticas denominadas Diseño para prototipos, influye tanto en el estilo de diseño del SoC como en los procedimientos de proyecto aplicados por los equipos de diseño. Las recomendaciones de diseño incluyen añadir convenciones DFP a los estándares de codificación de RTL, emplear un entorno de codificación compatible con prototipos e instituir una estrategia de depuración de sistemas conjuntamente con el equipo de software.

## Problemas de particionamiento

Debido al aumento en complejidad de circuitos y a la reducción del tiempo de comercialización inicial, la necesidad de verificación de los diseños de circuitos integrados de aplicación específica (ASIC) y de sistemas en chip (SoC) está creciendo. Las plataformas de hardware se están volviendo más prominentes entre los ingenieros de verificación debido a la capacidad de probar los diseños de sistemas a velocidad con relojes de bus en el chip, en comparación con los relojes de simulación que pueden no proporcionar una lectura precisa de comportamiento de sistema. Estos diseños de puertas multimillonarios suelen colocarse en una plataforma de prototipos multiFPGA con seis o más FPGAs, ya que no pueden encajar completamente en una sola FPGA. Cuanto menor sea el número de FPGAs, el diseño tiene que ser dividido para reducir el esfuerzo del ingeniero de diseño. A la derecha hay una imagen de una plataforma de prototipado basado en FPGA utilizando una configuración de doble-FPGA.
Los diseños de sistema RTL o netlists tendrán que ser particionados en cada FPGA para poder encajar el diseño en la plataforma de prototipado. Esto introduce nuevos desafíos para el ingeniero, ya que la partición manual requiere un esfuerzo tremendo y con frecuencia resulta en una velocidad deficiente (del diseño bajo prueba). Si se puede reducir el número de particiones o si se puede colocar todo el diseño en una sola FPGA, la implementación del diseño en la plataforma de prototipado se hace más fácil.

### Equilibrio de los recursos FPGA mientras se crean particiones de diseño

Al crear particiones de circuito, los ingenieros primero deben observar los recursos disponibles que ofrece el FPGA, ya que el diseño se colocará en el tejido de la FPGA. La estructura del tejido de la FPGA depende de cada fabricante, pero el objetivo principal en el diseño de particiones es tener un balance uniforme de la utilización de los recursos de la FPGA. Varios recursos de la FPGA incluyen tablas de búsqueda (LUTs), flip-flops D, RAM de bloque, procesadores de señal digital (DSPs), 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 eliminar cualquier lógica redundante o no utilizada. Un problema típico que surge con la creación de particiones equilibradas es que puede conducir a conflictos de tiempo o de recursos si el corte está en muchas líneas de tiempo. Para tener una estrategia de particionado totalmente optimizada, el ingeniero debe tener en cuenta rubros como la restricción de tiempo/energía, la colocación y el enrutamiento, manteniendo al mismo tiempo una partición equilibrada entre las FPGAs. Centrarse estrictamente en un único problema durante una partición puede crear varios problemas en otra.

### Colocación y enrutamiento de particiones

Con el fin de lograr un lugar y un enrutamiento óptimos para los diseños con particiones, el ingeniero debe centrarse en el recuento de pines FPGA y en las señales interFPGAs. Después de dividir el diseño en FPGAs separadas, debe no exceder el número da pines en la FPGA. Esto es muy difícil de evitar cuándo los diseños de circuito son inmensos, por lo que las señales deben utilizar estrategias como la multiplexación por división de tiempo (TDM), que permite la transferencia de múltiples señales a través de una sola línea. Estas señales múltiples, denominadas subcanales, se turnan para ser transferidas sobre la línea en un intervalo de tiempo. Cuando la relación TDM es muy alta, la frecuencia del reloj del bus tiene que ser reducida para acomodar los intervalos de tiempo para cada subcanal. Al reducir la frecuencia del reloj, se obstaculiza el rendimiento del sistema.

### Requisitos de tiempo

Los diseños de sistema generalmente abarcan varios ámbitos de reloj con señales que atraviesan dominios separados. Los osciladores de relojes a bordo y las líneas de relojes a bordo, así como las líneas de relojes globales, suelen mitigar esos problemas, pero a veces estos recursos pueden ser limitados o no cumplir todos los requisitos de diseño. Dentro de los dispositivos FPGA tienen que implementarse relojes internos, ya que las conexiones de la línea de reloj y de los topes de reloj están limitadas entre FPGAs. Los diseños de reloj interno que están divididos entre múltiples FPGAs deberían replicar el generador de relojes dentro de la FPGA, asegurando una baja inclinación del reloj entre las señales FPGAs. Además, cualquier lógica de reloj debe transformarse en reloj que permita reducir la inclinación mientras opera a altas frecuencias de reloj.
Los cruces de reloj no deben dividirse en FPGAs separadas. Las señales que pasan a través del cruce deben mantenerse internas a una única FPGA, ya que el tiempo de retardo añadido entre las FPGAs puede causar problemas en un dominio diferente. También se recomienda que las señales que se envían entre las FPGAs sean cronometradas en los registros.

## Depuración

Una de las tareas más difíciles y que más tiempo lleva en la creación de prototipos de FPGA es la depuración en el diseño de sistemas. La depuración se ha vuelto más difícil y lleva más tiempo por la aparición de grandes y complejos diseños de ASICs y SoCs. Para depurar un prototipo de FPGA, se añaden sondas directamente al diseño de RTL para que las señales específicas estén disponibles para observación, se sinteticen y se descarguen en la plataforma de prototipos FPGA.
Los proveedores de FPGA ofrecen una serie de herramientas de depuración estándar, entre las cuales se incluyen ChipScope y SignalTAP. Estas herramientas pueden sondear un máximo de 1024 señales y requieren grandes recursos de tablas de búsqueda (LUT) y de memoria. Para sistemas en chip SoC y otros diseños, la depuración eficiente a menudo requiere acceso simultáneo a 10 000 o más señales. Si un fallo no puede ser captado por el conjunto original de sondas, el acceso a señales originales da como resultado una situación de «regresa a casa el resto del día». Esto se debe a los largos y complejos flujos de CAD y el lugar y la ruta pueden tardar de 8 a 18 horas en completarse.
Los enfoques mejorados incluyen las herramientas como Certus de Tektronix o EXOSTIV, de Laboratorios Exostiv.
Certus ofrece una visibilidad de nivel RTL mejorada a la depuración basada en FPGA. Utiliza un concentrador multietapa de alta eficiencia como base para que su red de observación reduzca la cantidad de tablas de búsqueda (LUTs) requeridas por señal, para incrementar el número de señales que pueden ser sondeadas en un espacio dado. La capacidad de ver cualquier combinación de señales es única de Certus. Rompe una de los cuellos de botella más críticos de la creación de prototipos.
EXOSTIV utiliza un gran almacenamiento externo y transceptores gigabit para extraer trazas profundas de FPGA funcionando a gran velocidad. La mejora radica en su capacidad de ver grandes trazas en el tiempo como un flujo continuo o en ráfagas. Esto permite explorar escenarios de depuración extendidos inalcanzables mediante las técnicas tradicionales de instrumentación integrada. La solución pretende ahorrar tanto los recursos de E/S FPGA como la memoria FPGA a expensas de los transceptores gigabit, para una mejora de un factor de 100 000 y más en visibilidad.