¿Qué es NGC en FPGA?

En el campo de los FPGA (Field-Programmable Gate Arrays), NGC significa "Generador de circuitos nativos". Se refiere a una herramienta o tecnología proporcionada por proveedores de FPGA como Intel (anteriormente Altera) para convertir código de lenguaje de descripción de hardware (HDL) legible por humanos, como Verilog o VHDL, a un formato específicamente optimizado para su arquitectura FPGA.

El proceso de NGC se puede dividir en algunos pasos clave:

1. Síntesis HDL:durante esta fase, el código HDL se analiza y sintetiza para generar una lista de redes que representa el diseño del hardware.

2. Ubicación y enrutamiento:la netlist se utiliza para determinar la mejor disposición de los elementos lógicos y sus conexiones dentro de la FPGA. Este paso optimiza factores como el rendimiento, el tiempo y la utilización de recursos.

3. Análisis de tiempos:después de la colocación y el enrutamiento, se realiza un análisis de tiempos para garantizar que el circuito cumpla con las restricciones de tiempo requeridas. Se pueden realizar ajustes para mejorar aún más el rendimiento o cumplir los objetivos de tiempo.

4. Generación de archivos de configuración:una vez optimizado el diseño, se genera un archivo de configuración específicamente para el dispositivo FPGA de destino. Este archivo contiene toda la información necesaria para programar la FPGA y configurar sus recursos internos.

5. Programación FPGA:Finalmente, el archivo de configuración generado se utiliza para programar el chip FPGA. Al cargar el archivo de configuración en la FPGA, el diseño se implementa y se vuelve funcional en la plataforma de hardware.

La ventaja de utilizar NGC es que proporciona una ruta de optimización específica del proveedor que aprovecha las capacidades y características de la arquitectura FPGA de destino. A menudo da como resultado un rendimiento mejorado, una utilización optimizada de los recursos y tiempos de compilación más cortos en comparación con los enfoques genéricos. Además, NGC simplifica el proceso de programación y agiliza el flujo desde el diseño HDL hasta la implementación funcional de FPGA.