síntesis de alto nivel
Inglés: high-level synthesis
Un método de diseño que transforma automáticamente una descripción algorítmica o de comportamiento de un sistema digital, escrita en un lenguaje de alto nivel como C o C++, en una descripción de hardware a nivel de transferencia de registros adecuada para la implementación en FPGA o ASIC.
HLS: convirtiendo código en planos de chips automáticamente
La síntesis de alto nivel es una herramienta que lee algoritmos escritos en lenguajes de programación convencionales, generalmente C o C++, y genera descripciones a nivel de transferencia de registros (RTL) en Verilog o VHDL. Estos archivos RTL luego se incorporan a las herramientas estándar de diseño de FPGA o ASIC para el "place-and-route". La herramienta de síntesis infiere estructuras de hardware, "pipelining" y jerarquías de memoria que un diseñador humano normalmente especificaría a mano.
La tarea principal es la compresión: en lugar de instanciar manualmente sumadores, multiplexores, bloques RAM y lógica de control, el diseñador escribe un bucle o una transformación de datos en un lenguaje que ya conoce. La herramienta HLS realiza la asignación de recursos (asignando operaciones a hardware específico), la programación (decidiendo qué ciclo ejecuta qué operación) y la optimización del flujo de datos. Las herramientas HLS comunes incluyen Xilinx Vivado HLS, Intel (Altera) HLS Compiler y opciones de código abierto como Bambu y LegUp.
Dónde encaja y dónde falla
HLS brilla en bloques computacionalmente densos: procesamiento de señales, operaciones matriciales, núcleos criptográficos. Reduce el tiempo de diseño y detecta errores antes que el RTL escrito a mano. Pero no es magia. El hardware sintetizado a menudo consume más área y energía que el RTL experto hecho a mano, porque las herramientas automatizadas toman decisiones de programación conservadoras y no pueden explotar optimizaciones específicas del dominio. Los diseñadores aún deben comprender la plataforma de destino, los cuellos de botella de la memoria y los requisitos de latencia. El código escrito sin conocimiento del hardware se sintetizará en una lógica inflada y lenta.
La depuración es más difícil que con HDL tradicional. Cuando algo funciona mal, se rastrea desde Verilog hasta C, pero el mapeo es opaco. Las "pragmas" del compilador, las directivas y las interfaces de función cuidadosas se vuelven críticas. La mayoría de los flujos de producción utilizan HLS para uno o dos núcleos computacionales incrustados en un diseño mayormente escrito a mano, en lugar de sintetizar un chip completo desde C de alto nivel.
La brecha de adopción sigue siendo amplia. Las grandes empresas de chips confían en HLS para módulos de "datapath" específicos, mientras que los equipos más pequeños o la academia lo utilizan para acelerar las iteraciones de prototipos. Los diseños sensibles a la latencia o críticos para la energía aún exigen RTL manual. HLS funciona mejor cuando el algoritmo es estable, las restricciones de hardware son claras y los requisitos de rendimiento permiten cierta sobrecarga a cambio de un tiempo de comercialización más rápido.
Fuentes
- Fuente de la definiciónWiktionary