La síntesis de alto nivel ( HLS ), a veces denominada síntesis C , síntesis de nivel de sistema electrónico ( ESL ) , síntesis algorítmica o síntesis de comportamiento , es un proceso de diseño automatizado que toma una especificación de comportamiento abstracta de un sistema digital y encuentra una estructura de nivel de transferencia de registros que realiza el comportamiento dado. [ 1 ] [ 2 ] [ 3 ]
La síntesis comienza con una especificación de alto nivel del problema, donde el comportamiento generalmente se desacopla de la mecánica de circuitos de bajo nivel, como la temporización a nivel de reloj . Los primeros HLS exploraron una variedad de lenguajes de especificación de entrada, [ 4 ] aunque las investigaciones recientes y las aplicaciones comerciales generalmente aceptan subconjuntos sintetizables de ANSI C / C++ / SystemC / MATLAB . El código se analiza, se restringe arquitectónicamente y se programa para transcompilar desde un modelo de nivel de transacción (TLM) a un diseño de nivel de transferencia de registros (RTL) en un lenguaje de descripción de hardware (HDL), que a su vez se sintetiza comúnmente al nivel de compuertas mediante el uso de una herramienta de síntesis lógica .
El objetivo de HLS es permitir a los diseñadores de hardware construir y verificar hardware de manera eficiente, brindándoles un mayor control sobre la optimización de su arquitectura de diseño y, gracias a la naturaleza de la herramienta, permitiéndoles describir el diseño a un nivel de abstracción superior mientras la herramienta realiza la implementación RTL. La verificación del RTL es una parte importante del proceso. [ 5 ]
El hardware se puede diseñar con distintos niveles de abstracción. Los niveles de abstracción más comunes son el nivel de compuerta , el nivel de transferencia de registros (RTL) y el nivel algorítmico .
Mientras que la síntesis lógica utiliza una descripción RTL del diseño, la síntesis de alto nivel opera en un nivel de abstracción superior, comenzando con una descripción algorítmica en un lenguaje de alto nivel como SystemC y ANSI C/C++. El diseñador generalmente desarrolla la funcionalidad del módulo y el protocolo de interconexión. Las herramientas de síntesis de alto nivel manejan la microarquitectura y transforman el código funcional sin temporización o parcialmente temporizado en implementaciones RTL completamente temporizadas, creando automáticamente detalles ciclo a ciclo para la implementación de hardware. [ 6 ] Las implementaciones (RTL) se utilizan luego directamente en un flujo de síntesis lógica convencional para crear una implementación a nivel de compuertas.
Historia
Los primeros trabajos académicos identificaron la planificación, la asignación y la vinculación como los pasos básicos para la síntesis de alto nivel. La planificación divide el algoritmo en pasos de control que se utilizan para definir los estados en la máquina de estados finitos . Cada paso de control contiene una pequeña sección del algoritmo que puede ejecutarse en un solo ciclo de reloj en el hardware. La asignación y la vinculación asignan las instrucciones y variables a los componentes de hardware, multiplexores, registros y conexiones de la ruta de datos.
La síntesis de comportamiento de primera generación fue introducida por Synopsys en 1994 como Behavioral Compiler [ 7 ] y utilizaba Verilog o VHDL como lenguajes de entrada. El nivel de abstracción empleado eran procesos parcialmente temporizados (con reloj). Las herramientas basadas en Verilog o VHDL de comportamiento no se adoptaron ampliamente, en parte porque ni los lenguajes ni la abstracción parcialmente temporizada se adaptaban bien al modelado de comportamiento a un alto nivel. Diez años después, a principios de 2004, Synopsys discontinuó Behavioral Compiler. [ 8 ]
Forte Design Systems presentó su herramienta Cynthesizer, que utilizaba SystemC como lenguaje de entrada en lugar de Verilog o VHDL. Cynthesizer fue adoptada por numerosas empresas japonesas en el año 2000, dado que Japón contaba con una comunidad de usuarios de SystemC muy consolidada. La primera fabricación de circuitos integrados de síntesis de alto nivel se logró en 2001 por Sony utilizando Cynthesizer. Su adopción en Estados Unidos comenzó en serio en 2008.
En 2006, se desarrolló una técnica eficiente y escalable de "planificación modular SDC" en grafos de flujo de control y datos [ 9 ] , la cual posteriormente se extendió a la planificación de pipelines [ 10 ] . Esta técnica utiliza la formulación de programación lineal entera. Sin embargo, demuestra que la matriz de restricciones subyacente es totalmente unimodular (tras aproximar las restricciones de recursos). Por lo tanto, el problema puede resolverse de forma óptima en tiempo polinomial utilizando un solucionador de programación lineal. Este trabajo fue incorporado al Salón de la Fama de la Computación Reconfigurable y FPGA en 2022 [ 11 ].
El algoritmo de programación SDC se implementó en el sistema xPilot HLS [ 12 ] desarrollado en UCLA [ 13 ] y posteriormente se licenció a AutoESL Design Technologies, una empresa derivada de UCLA. AutoESL fue adquirida por Xilinx (ahora parte de AMD) en 2011 [ 11 ] y la herramienta HLS desarrollada por AutoESL se convirtió en la base de las soluciones HLS de Xilinx, Vivado HLS y Vitis HLS, ampliamente utilizadas para diseños de FPGA.
Entrada de origen
Las fuentes de entrada más comunes para la síntesis de alto nivel se basan en lenguajes estándar como ANSI C / C++ , SystemC y MATLAB .
La síntesis de alto nivel también suele incluir una especificación ejecutable con precisión de bits como entrada, ya que para derivar una implementación de hardware eficiente, se necesita información adicional sobre cuál es un error cuadrático medio o una tasa de error de bits aceptable, etc. Por ejemplo, si el diseñador comienza con un filtro FIR escrito usando el tipo de punto flotante "doble", antes de poder derivar una implementación de hardware eficiente, necesita realizar un refinamiento numérico para llegar a una implementación de punto fijo. El refinamiento requiere información adicional sobre el nivel de ruido de cuantificación que se puede tolerar, los rangos de entrada válidos, etc. Esta especificación con precisión de bits hace que la especificación de fuente de síntesis de alto nivel sea funcionalmente completa. [ 14 ] Normalmente, las herramientas infieren del código de alto nivel una máquina de estados finitos y una ruta de datos que implementan operaciones aritméticas.
Etapas del proceso
El proceso de síntesis de alto nivel consta de varias actividades. Diversas herramientas de síntesis de alto nivel realizan estas actividades en distintos órdenes utilizando diferentes algoritmos. Algunas herramientas combinan algunas de estas actividades o las realizan de forma iterativa para converger en la solución deseada. [ 15 ]
- Procesamiento léxico
- Optimización de algoritmos
- Análisis de control/flujo de datos
- Procesamiento de bibliotecas
- Asignación de recursos
- Programación
- Unión de unidades funcionales
- Vinculación de registro
- Procesamiento de salida
- Reagrupación de entradas
Funcionalidad
En general, un algoritmo puede ejecutarse durante muchos ciclos de reloj con pocos recursos de hardware, o durante menos ciclos utilizando un mayor número de ALU, registros y memorias. De igual modo, a partir de una descripción algorítmica, un compilador HLS puede generar diversas microarquitecturas de hardware según las directivas proporcionadas a la herramienta. Se trata de la misma compensación entre velocidad de ejecución y complejidad de hardware que se observa cuando un programa se ejecuta en procesadores convencionales de diferente rendimiento, pero que funcionan aproximadamente a la misma frecuencia de reloj.
Restricciones arquitectónicas
Las restricciones de síntesis para la arquitectura se pueden aplicar automáticamente en función del análisis del diseño. [ 5 ] Estas restricciones se pueden dividir en
- Jerarquía
- Interfaz
- Memoria
- Bucle
- Restricciones de temporización de bajo nivel
- Iteración
Síntesis de interfaz
La síntesis de interfaz se refiere a la capacidad de aceptar una descripción pura en C/C++ como entrada y, posteriormente, utilizar tecnología de síntesis de interfaz automatizada para controlar la temporización y el protocolo de comunicación en la interfaz de diseño. Esto permite el análisis de la interfaz y la exploración de una amplia gama de opciones de interfaz de hardware, como transmisión de datos, RAM de uno o dos puertos, además de diversos mecanismos de control de flujo. Con la síntesis de interfaz, el diseñador no incorpora protocolos de interfaz en la descripción del código fuente. Algunos ejemplos podrían ser: conexión directa, control de flujo de una línea, control de flujo de dos líneas, FIFO. [ 16 ]
Proveedores
Datos reportados en una encuesta reciente [ 17 ]
- Dynamatic de la EPFL / ETH Zúrich
- Codificador HDL de MATLABde Mathworks [ 19 ]
- HLS-QSP de CircuitSutra Technologies [ 20 ]
- De C a silicio de Cadence Design Systems
- Aceleración simultánea a partir de EDA simultánea
- Compilador Symphony C de Synopsys
- QuickPlay de PLDA [ 21 ]
- PowerOpt de ChipVision [ 22 ]
- Cynthesizer de Forte Design Systems (ahora Stratus HLS de Cadence Design Systems )
- Catapult C de Calypto Design Systems, parte de Mentor Graphics desde el 16 de septiembre de 2015. En noviembre de 2016, Siemens anunció sus planes para adquirir Mentor Graphics, que pasó a llamarse "Mentor, una empresa de Siemens". En enero de 2021, se completó la fusión legal de Mentor Graphics con Siemens, integrándose en la entidad legal Siemens Industry Software Inc. El nombre de Mentor Graphics cambió a Siemens EDA, una división de Siemens Digital Industries Software . [ 23 ]
- TuberíaC
- CyberWorkBench de NEC [ 24 ]
- Mega Hardware [ 25 ]
- C2R de CebaTech [ 26 ]
- Codesarrollador de Impulse Accelerated Technologies
- HercuLeS de Nikolaos Kavvadias [ 27 ]
- Program In/Code Out (PICO) de Synfora, adquirida por Synopsys en junio de 2010 [ 28 ]
- xPilot de la Universidad de California, Los Ángeles [ 29 ]
- Vsyn de vsyn.ru [ 30 ]
- ngDesign de SynFlow [ 31 ]
Véase también
Referencias
- ↑ Coussy, Philippe; Morawiec, Adam, eds. (2008). Síntesis de alto nivel - Springer . doi : 10.1007/978-1-4020-8588-8 . ISBN 978-1-4020-8587-1.
- ↑ McFarland, MC; Parker, AC; Camposano, R. (febrero de 1990). "La síntesis de alto nivel de sistemas digitales". Actas del IEEE . 78 (2): 301– 318. Bibcode : 1990IEEEP..78..301M . doi : 10.1109/5.52214 . ISSN 1558-2256 .
- ↑ "HLS Book : Inicio" . www.hlsbook.com . Consultado el 21 de junio de 2023 .
- ↑ IEEE Xplore Síntesis de alto nivel: pasado, presente y futuro DOI 10.1109/MDT.2009.83
- 1 2 Bowyer, Bryan (2005-05-02). "El 'por qué' y el 'qué' de la síntesis algorítmica" . EE Times . Recuperado el 2016-10-03 .
- ↑ "Prototipado rápido basado en C para el procesamiento de señales digitales" (PDF) . Universidad UBS, Francia . Consultado el 3 de octubre de 2016 .
- ↑ "Publicaciones y presentaciones" . Bdti.com . Archivado del original el 26 de abril de 2008. Consultado el 3 de octubre de 2016 .
- ↑ "Encrucijada de la síntesis conductual" . EE Times . Consultado el 3 de octubre de 2016 .
- ↑ Cong, Jason; Fan, Yiping; Han, Guoling; Jiang, Wei; Zhang, Zhiru (septiembre de 2006). "Síntesis a nivel de comportamiento y de sistema basada en plataformas" . Conferencia Internacional IEEE SOC de 2006. IEEE. págs. 199–202 . doi : 10.1109/socc.2006.283880 . ISBN 0-7803-9782-7.
- ↑ Zhang, Zhiru; Liu, Bin (2013). Conferencia Internacional IEEE/ACM de 2013 sobre Diseño Asistido por Computadora (ICCAD) (PDF) . IEEE. págs. 211–218 . ISBN 978-1-4799-1071-7.
- 1 2 Cong, Jason; Bin Liu; Neuendorffer, Stephen; Noguera, Juanjo; Vissers, Kees; Zhiru Zhang (abril de 2011). "Síntesis de alto nivel para FPGA: del prototipado al despliegue" . IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 30 (4): 473– 491. Bibcode : 2011ITCAD..30..473C . doi : 10.1109/tcad.2011.2110592 . ISSN 0278-0070 .
- ↑ Cong, J.; Zhiru Zhang (2006). "Un algoritmo de programación eficiente y versátil basado en la formulación SDC" . 43.ª Conferencia ACM/IEEE de Automatización del Diseño de 2006. IEEE. págs. 433–438 . doi : 10.1109/dac.2006.229228 . ISBN 1-59593-381-6.
- ↑ "xPilot: Sistema de síntesis de comportamiento basado en plataforma | Laboratorio VAST" . vast.cs.ucla.edu . Consultado el 18 de abril de 2024 .
- ↑ Síntesis de alto nivel con múltiples longitudes de palabra. Revista EURASIP sobre sistemas embebidos.
- ↑ "Una mirada al interior de la síntesis conductual" . EE Times . Consultado el 3 de octubre de 2016 .
- ↑ "DesignCon: InfoVault: Paper Library" . www.designcon.com . Archivado del original el 25 de septiembre de 2010. Consultado el 13 de enero de 2022 .
- ↑ Nane, R.; Sima, VM; Pilato, C.; Choi, J.; Fort, B.; Canis, A.; Chen, YT; Hsiao, H.; Brown, S. (2016). "Un estudio y evaluación de las herramientas de síntesis de alto nivel de FPGA" (PDF) . IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 35 (10): 1591– 1604. Bibcode : 2016ITCAD..35.1591N . doi : 10.1109/TCAD.2015.2513673 . hdl : 11311/998432 . ISSN 0278-0070 . S2CID 8749577 .
- ↑ "Xilinx compra proveedor de EDA de síntesis de alto nivel" . EE Times. 5 de febrero de 2011. Archivado del original el 17 de octubre de 2011. Consultado el 3 de octubre de 2016 .
- ↑ "MathWorks: Creadores de MATLAB y Simulink" . Mathworks.com . Consultado el 3 de octubre de 2016 .
- ↑ "Metodologías ESL basadas en SystemC - Metodologías ESL basadas en SystemC" . Circuitsutra.com . Consultado el 3 de octubre de 2016 .
- ↑ John M. en una importante corporación de ERP y DBMS (29-08-2016). "QuickPlay: Llevando la computación FPGA a las masas" . Quickplay.io . Consultado el 03-10-2016 .
- ↑ "Chipvision - Vía rápida hacia el bajo consumo energético" . www.chipvision.com . Archivado del original el 30 de mayo de 2002. Consultado el 13 de enero de 2022 .
- ↑ "Mentor finalmente se convierte en Siemens EDA a partir de enero de 2021" . 15 de diciembre de 2020.
- ↑ "CyberWorkBench: Productos" . NEC . Consultado el 3 de octubre de 2016 .
- ↑ "Accueil mega-hardware" . www.mega-hardware.com . Archivado del original el 15 de enero de 2004 . Consultado el 13 de enero de 2022 .
- ↑ "Cebatech - Inicio" . www.cebatech.com . Archivado del original el 7 de mayo de 2005. Consultado el 13 de enero de 2022 .
- ↑ "Nikolaos Kavvadias - Herramienta de síntesis de alto nivel HercuLeS" . Nkavvadias.com . Consultado el 3 de octubre de 2016 .
- ↑ "Synopsys compra los activos de Synfora" . EE Times. Archivado del original el 7 de abril de 2011. Consultado el 3 de octubre de 2016 .
- ↑ "El sistema xPilot" . Cadlab.cs.ucla.edu . Archivado del original el 5 de octubre de 2016. Consultado el 3 de octubre de 2016 .
- ↑ "vSyn.ru" . vSyn.ru. 16 de junio de 2016. Archivado del original el 30 de junio de 2016. Consultado el 3 de octubre de 2016 .
- ↑ "Diseño de hardware para todos" . Synflow . Consultado el 3 de octubre de 2016 .
Lecturas adicionales
- Cong, Jason; Lau, Jason; Liu, Gai; Neuendorffer, Stephen; Pan, Peichen; Vissers, Kees; Zhang, Zhiru (31 de diciembre de 2022). "FPGA HLS Today: Successes, Challenges, and Opportunities". ACM Transactions on Reconfigurable Technology and Systems . 15 (4): 1– 42. doi : 10.1145/3530775 .
- Fingeroff, Michael (2010). High-Level Synthesis Blue Book . Estados Unidos: Xlibris Corporation. ISBN 978-1-4500-9724-6.
- Coussy, P.; Gajski, DD; Meredith, M.; Takach, A. (2009). "Una introducción a la síntesis de alto nivel". IEEE Design & Test of Computers . 26 (4): 8– 17. Bibcode : 2009IDTC...26....8C . doi : 10.1109/MDT.2009.69 . S2CID 52870966 .
- Ewout SJ Martens; Georges Gielen (2008). Modelado y síntesis de alto nivel de sistemas analógicos integrados . Springer. ISBN 978-1-4020-6801-0.
- Saraju Mohanty ; N. Ranganathan; E. Kougianos y P. Patra (2008). Síntesis de alto nivel y bajo consumo para circuitos CMOS a nanoescala . Springer. ISBN 978-0387764733.
- Alicia C. Parker ; Yosef Tirat-Gefen; Suhrid A. Wadekar (2007). "Diseño a nivel de sistema". En Wai-Kai Chen (ed.). El manual VLSI (2ª ed.). Prensa CRC. ISBN 978-0-8493-4199-1Capítulo 76.
- Shahrzad Mirkhani; Zainalabedin Navabi (2007). "Lenguajes de diseño a nivel de sistema". En Wai-Kai Chen (ed.). El manual VLSI (2ª ed.). Prensa CRC. ISBN 978-0-8493-4199-1Capítulo 86.Abarca el uso de C/C++, SystemC, TML e incluso UML.
- Liming Xiu (2007). Metodología de diseño de circuitos VLSI desmitificada: una taxonomía conceptual . Wiley-IEEE. ISBN 978-0-470-12742-1.
- John P. Elliott (1999). Comprender la síntesis conductual: una guía práctica para el diseño de alto nivel . Springer. ISBN 978-0-7923-8542-4.
- Nane, Razvan; Sima, Vlad-Mihai; Pilato, Christian; Choi, Jongsok; Fort, Blair; Canis, Andrew; Chen, Yu Ting; Hsiao, Hsuan; Brown, Stephen; Ferrandi, Fabrizio; Anderson, Jason; Bertels, Koen (2016). "Un estudio y evaluación de las herramientas de síntesis de alto nivel de FPGA". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 35 (10): 1591– 1604. Bibcode : 2016ITCAD..35.1591N . doi : 10.1109/TCAD.2015.2513673 . hdl : 11311/998432 . S2CID 8749577 .
- Gupta, Rajesh; Brewer, Forrest (2008). «Síntesis de alto nivel: una retrospectiva». «Síntesis de alto nivel: una retrospectiva» . Springer. págs. 13–28 . doi : 10.1007/978-1-4020-8588-8_2 . ISBN 978-1-4020-8587-1.
Enlaces externos
- Curso Vivado HLS en YouTube
- Foro de debate sobre Deepchip
- Automatización del diseño electrónico
- aceleración de hardware