La síntesis de alto nivel ( HLS ), a veces denominada síntesis C , síntesis a nivel de sistema electrónico (ESL) , síntesis algorítmica o síntesis conductual , es un proceso de diseño automatizado que interpreta una descripción algorítmica de un comportamiento deseado y crea hardware digital que implementa ese comportamiento. [1]
La síntesis comienza con una especificación de alto nivel del problema, donde el comportamiento generalmente está desacoplado de la mecánica del circuito de bajo nivel, como la sincronización a nivel de reloj . Los primeros HLS exploraron una variedad de lenguajes de especificación de entrada, [2] aunque la investigación reciente 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 transcompilarlo en un diseño de nivel de transferencia de registro (RTL) en un lenguaje de descripción de hardware (HDL), que a su vez se sintetiza comúnmente a nivel de puerta.mediante el uso de una herramienta de síntesis lógica .
El objetivo de HLS es permitir que los diseñadores de hardware construyan y verifiquen el hardware de manera eficiente, dándoles un mejor control sobre la optimización de su arquitectura de diseño y mediante la naturaleza de permitir que el diseñador describa el diseño en un nivel más alto de abstracción mientras la herramienta hace el trabajo. Implementación RTL. La verificación del RTL es una parte importante del proceso. [3]
El hardware se puede diseñar con distintos niveles de abstracción. Los niveles de abstracción más utilizados son el nivel de puerta , el nivel de transferencia de registro (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 funciona en un nivel superior de abstracción, comenzando con una descripción algorítmica en un lenguaje de alto nivel como SystemC y ANSI C / C ++. El diseñador suele desarrollar 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 no programado o parcialmente programado en implementaciones RTL completamente programadas, creando automáticamente detalles ciclo por ciclo para la implementación de hardware. [4] Las implementaciones (RTL) se utilizan directamente en un flujo de síntesis lógica convencional para crear una implementación a nivel de puerta.
Historia
El trabajo académico inicial extrajo la programación, la asignación y la vinculación como pasos básicos para la síntesis de alto nivel. La programació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 se puede realizar en un solo ciclo de reloj en el hardware. La asignación y el enlace mapean las instrucciones y variables a los componentes de hardware, multiplexores, registros y cables de la ruta de datos.
La síntesis conductual de primera generación fue introducida por Synopsys en 1994 como Behavioral Compiler [5] y utilizaba Verilog o VHDL como lenguajes de entrada. El nivel de abstracción utilizado fueron procesos parcialmente cronometrados (cronometrados). Las herramientas basadas en el comportamiento Verilog o VHDL no fueron ampliamente adoptadas, en parte porque ni los lenguajes ni la abstracción parcialmente cronometrada eran adecuadas para modelar el comportamiento a un alto nivel. Diez años más tarde, a principios de 2004, Synopsys terminó su vida útil Behavioural Compiler. [6]
En 1998, Forte Design Systems presentó su herramienta Cynthesizer que utilizaba SystemC como lenguaje de entrada en lugar de Verilog o VHDL. Cynthesizer fue adoptado por muchas empresas japonesas en 2000, ya que Japón tenía una comunidad de usuarios de SystemC muy madura. Sony logró la primera salida de cinta de síntesis de alto nivel en 2001 utilizando Cynthesizer. La adopción en los Estados Unidos comenzó en serio en 2008. [7]
Entrada de fuente
Las fuentes de entrada más comunes para síntesis de alto nivel se basan en lenguajes estándar como ANSI C / C ++ , SystemC y MATLAB .
Por lo general, la síntesis de alto nivel también incluye una especificación ejecutable con precisión de bits como entrada, ya que para obtener una implementación de hardware eficiente, se necesita información adicional sobre lo que es un error cuadrático medio aceptable o tasa de error de bits, etc. Por ejemplo, si el diseñador comienza con un filtro FIR escrito usando el tipo flotante "doble", antes de que él o ella pueda derivar una implementación de hardware eficiente, necesitan 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 la fuente de síntesis de alto nivel sea funcionalmente completa. [8] 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 una serie de actividades. Varias herramientas de síntesis de alto nivel realizan estas actividades en diferentes órdenes utilizando diferentes algoritmos. Algunas herramientas de síntesis de alto nivel combinan algunas de estas actividades o las realizan de forma iterativa para converger en la solución deseada. [9]
- Procesamiento léxico
- Optimización de algoritmos
- Análisis de control / flujo de datos
- Procesamiento de biblioteca
- Asignación de recursos
- Planificación
- Enlace de unidad funcional
- Enlace de registro
- Procesamiento de salida
- Reagrupación de entrada
Funcionalidad
En general, un algoritmo se puede realizar en muchos ciclos de reloj con pocos recursos de hardware, o en menos ciclos de reloj utilizando un mayor número de ALU, registros y memorias. En consecuencia, a partir de una descripción algorítmica, un compilador de HLS puede generar una variedad de microarquitecturas de hardware de acuerdo con las directivas dadas a la herramienta. Esta es la misma compensación entre la velocidad de ejecución y la complejidad del hardware que se ve cuando un programa determinado se ejecuta en procesadores convencionales de diferente rendimiento, pero todos se ejecutan 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. [3] Estas limitaciones se pueden dividir en
- Jerarquía
- Interfaz
- Memoria
- Círculo
- Restricciones de tiempo de bajo nivel
- Iteración
Síntesis de interfaz
La síntesis de interfaz se refiere a la capacidad de aceptar la descripción pura de C / C ++ como entrada y luego utilizar la tecnología de síntesis de interfaz automatizada para controlar la sincronización y el protocolo de comunicaciones en la interfaz de diseño. Esto permite el análisis de la interfaz y la exploración de una gama completa de opciones de interfaz de hardware, como transmisión, RAM de puerto único o doble, además de varios mecanismos de establecimiento de comunicación. Con la síntesis de interfaz, el diseñador no incorpora protocolos de interfaz en la descripción de la fuente. Los ejemplos pueden ser: conexión directa, una línea, protocolo de enlace de 2 líneas, FIFO. [10]
Vendedores
Datos informados en una encuesta reciente [11]
Estado | Compilador | Dueño | Licencia | Aporte | Producción | Año | Dominio | Banco de pruebas | FP | FixP |
---|---|---|---|---|---|---|---|---|---|---|
En uso | Stratus HLS | Sistemas de diseño de cadencia | Comercial | C / C ++ SystemC | RTL | 2015 | Todas | sí | sí | sí |
AUGH | Laboratorio TIMA. | Académico | Subconjunto C | VHDL | 2012 | Todas | sí | No | No | |
excitar | Y Exploraciones | Comercial | C | VHDL / Verilog | 2001 | Todas | sí | No | sí | |
Bambu | PoliMi | Académico | C | VHDL / Verilog | 2012 | Todas | sí | sí | No | |
Bluespec | BlueSpec Inc. | Comercial | BSV | SystemVerilog | 2007 | Todas | No | No | No | |
CHC | Altium | Comercial | Subconjunto C | VHDL / Verilog | 2008 | Todas | No | sí | sí | |
CoDesarrollador | Impulso acelerado | Comercial | Impulso-C | VHDL | 2003 | Streaming de imágenes | sí | sí | No | |
Codificador HDL | MathWorks | Comercial | MATLAB, Simulink, Stateflow, Simscape | VHDL / Verilog | 2003 | Sistemas de control, procesamiento de señales, inalámbricos, radar, comunicaciones, imagen y visión artificial | sí | sí | sí | |
CyberWorkbench | Comité ejecutivo nacional | Comercial | BDL, SystemC | VHDL / Verilog | 2011 | Todas | Ciclo / Formal | sí | sí | |
Catapulta | Mentor (negocio de Siemens) | Comercial | C, C ++, SystemC | VHDL / Verilog | 2004 | Todas | sí | sí | sí | |
DWARV | TU. porcelana de Delft | Académico | Subconjunto C | VHDL | 2012 | Todas | sí | sí | sí | |
GAUT | U. Bretaña | Académico | C / C ++ | VHDL | 2010 | DSP | sí | No | sí | |
Hastlayer | Tecnologías Lombiq | Comercial | C # / C ++ / F # ... ( .NET ) | VHDL | 2015 | .NETO | sí | sí | sí | |
SoC instantáneo | Núcleos FPGA | Comercial | C / C ++ | VHDL / Verilog | 2019 | Todas | sí | No | No | |
Compilador de síntesis de alto nivel de Intel | Intel FPGA (anteriormente Altera) | Comercial | C / C ++ | Verilog | 2017 | Todas | sí | sí | sí | |
LegUp HLS | Computación LegUp | Comercial | C / C ++ | Verilog | 2015 | Todas | sí | sí | sí | |
Ventaja | U. Toronto | Académico | C | Verilog | 2010 | Todas | sí | sí | No | |
MaxCompiler | Maxeler | Comercial | MaxJ | RTL | 2010 | Flujo de datos | No | sí | No | |
ROCCC | Jacquard Comp. | Comercial | Subconjunto C | VHDL | 2010 | Transmisión | No | sí | No | |
Sinfonía C | Sinopsis | Comercial | C / C ++ | VHDL / Verilog / SystemC | 2010 | Todas | sí | No | sí | |
VivadoHLS (anteriormente AutoPilot de AutoESL [12] ) | Xilinx | Comercial | C / C ++ / SystemC | VHDL / Verilog / SystemC | 2013 | Todas | sí | sí | sí | |
kiwi | U. Cambridge | Académico | C# | Verilog | 2008 | .NETO | No | sí | sí | |
CHIMPS | Washington | Académico | C | VHDL | 2008 | Todas | No | No | No | |
gcc2verilog | U. Corea | Académico | C | Verilog | 2011 | Todas | No | No | No | |
Hércules | Compiladores Ajax | Comercial | C / NAC | VHDL | 2012 | Todas | sí | sí | sí | |
Shang | U. Illinois | Académico | C | Verilog | 2013 | Todas | sí | ? | ? | |
Tridente | Los Alamos NL | Académico | Subconjunto C | VHDL | 2007 | Científico | No | sí | No | |
Aban- donado | AccelDSP | Xilinx | Comercial | MATLAB | VHDL / Verilog | 2006 | DSP | sí | sí | sí |
C2H | Altera | Comercial | C | VHDL / Verilog | 2006 | Todas | No | No | No | |
CtoVerilog | U. Haifa | Académico | C | Verilog | 2008 | Todas | No | No | No | |
DE FACTO | U. South Cailf. | Académico | C | RTL | 1999 | DSE | No | No | No | |
Garp | U. Berkeley | Académico | Subconjunto C | bitstream | 2000 | Círculo | No | No | No | |
PARTIDO | U. Noroeste | Académico | MATLAB | VHDL | 2000 | Imagen | No | No | No | |
Napa-C | Sarnoff Corp. | Académico | Subconjunto C | VHDL / Verilog | 1998 | Círculo | No | No | No | |
PipeRench | U.Carnegie M. | Académico | DIL | bistream | 2000 | Arroyo | No | No | No | |
SACO | U. Colorado | Académico | SACO | VHDL | 2003 | Imagen | No | No | No | |
Pepino de mar | U. Brigham Y. | Académico | Java | EDIF | 2002 | Todas | No | sí | sí | |
CHISPA - CHISPEAR | U. Cal. Irvine | Académico | C | VHDL | 2003 | Control | No | No | No |
- Codificador MATLAB HDL [6] de Mathworks [13]
- HLS-QSP de CircuitSutra Technologies [14]
- C-to-Silicon de Cadence Design Systems
- Aceleración concurrente de EDA concurrente
- Compilador Symphony C de Synopsys
- QuickPlay de PLDA [15]
- PowerOpt de ChipVision [16]
- Cynthesizer de Forte Design Systems (ahora Stratus HLS de Cadence Design Systems )
- Catapulta C de Calypto Design Systems , parte de Mentor Graphics a partir de 2015, 16 de septiembre
- CyberWorkBench de NEC [17]
- Mega Hardware [18]
- C2R de CebaTech [19]
- CoDeveloper de Impulse Accelerated Technologies
- HercuLeS de Nikolaos Kavvadias [20]
- PICO de Synfora, adquirido por Synopsys en junio de 2010 [21] (PICO = Entrada de programa / Salida de código)
- xPilot de la Universidad de California, Los Ángeles [22]
- Vsyn de vsyn.ru [23]
- ngDesign de SynFlow [24]
Ver también
- C a HDL
- Automatización de diseño electrónico (EDA)
- Nivel de sistema electrónico (ESL)
- Síntesis lógica
- Verificación de alto nivel (HLV)
- SystemVerilog
- Aceleracion de hardware
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.
- ^ Síntesis de alto nivel IEEE Xplore : pasado, presente y futuro DOI 10.1109 / MDT.2009.83
- ^ a b "El 'por qué' y el 'qué' de la síntesis algorítmica" . EE Times . Consultado el 3 de octubre de 2016 .
- ^ "Creación rápida de prototipos basada 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 desde el original el 26 de abril de 2008 . Consultado el 3 de octubre de 2016 .
- ^ "Encrucijada de síntesis de comportamiento" . EE Times . Consultado el 3 de octubre de 2016 .
- ^ [1]
- ^ Revista EURASIP de síntesis de alto nivel de varias palabras en sistemas integrados
- ^ "Una mirada al interior de la síntesis conductual" . EE Times . Consultado el 3 de octubre de 2016 .
- ^ [2]
- ^ Nane, R .; Sima, VM; Pilato, C .; Choi, J .; Fort, B .; Canis, A .; Chen, YT; Hsiao, H .; Brown, S. (2016). "Una encuesta y evaluación de herramientas de síntesis de alto nivel FPGA" (PDF) . Transacciones IEEE sobre diseño asistido por computadora de circuitos y sistemas integrados . 35 (10): 1591–1604. 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. 2011-02-05. Archivado desde el 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 empresa de ERP y DBMS (2016-08-29). "QuickPlay: llevando la informática FPGA a las masas" . Quickplay.io . Consultado el 3 de octubre de 2016 .
- ^ [3]
- ^ "CyberWorkBench: Productos" . NEC . Consultado el 3 de octubre de 2016 .
- ^ [4]
- ^ [5]
- ^ "Nikolaos Kavvadias - HercuLeS herramienta de síntesis de alto nivel" . Nkavvadias.com . Consultado el 3 de octubre de 2016 .
- ^ "Synopsys compra activos de Synfora" . EE Times. Archivado desde el original el 7 de abril de 2011 . Consultado el 3 de octubre de 2016 .
- ^ "El sistema xPilot" . Cadlab.cs.ucla.edu . Consultado el 3 de octubre de 2016 .
- ^ "vSyn.ru" . vSyn.ru . 2016-06-16. Archivado desde el 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 .
Otras lecturas
- Michael Fingeroff (2010). Libro azul de síntesis de alto nivel . Corporación Xlibris [ fuente autoeditada ] . ISBN 978-1-4500-9724-6.
- Coussy, P .; Gajski, DD; Meredith, M .; Takach, A. (2009). "Introducción a la síntesis de alto nivel". Diseño y Prueba de Computadoras IEEE . 26 (4): 8-17. doi : 10.1109 / MDT.2009.69 . S2CID 52870966 .
- Ewout SJ Martens; Georges Gielen (2008). Modelado y síntesis de alto nivel de sistemas integrados analógicos . Saltador. ISBN 978-1-4020-6801-0.
- Saraju Mohanty ; N. Ranganathan; E. Kougianos y P. Patra (2008). Síntesis de alto nivel y baja potencia para circuitos CMOS a nanoescala . Saltador. ISBN 978-0387764733.
- Alice C. Parker ; Yosef Tirat-Gefen; Suhrid A. Wadekar (2007). "Diseño a nivel de sistema". En Wai-Kai Chen (ed.). El manual de VLSI (2ª ed.). Prensa CRC. ISBN 978-0-8493-4199-1. Capítulo 76.
- Shahrzad Mirkhani; Zainalabedin Navabi (2007). "Lenguajes de diseño a nivel de sistema". En Wai-Kai Chen (ed.). El manual de VLSI (2ª ed.). Prensa CRC. ISBN 978-0-8493-4199-1. Capítulo 86. cubre 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). Comprensión de la síntesis conductual: una guía práctica para el diseño de alto nivel . Saltador. ISBN 978-0-7923-8542-4.
- Nane, Razvan; Sima, Vlad-Mihai; Pilato, cristiano; Choi, Jongsok; Fuerte, Blair; Canis, Andrew; Chen, Yu Ting; Hsiao, Hsuan; Brown, Stephen; Ferrandi, Fabrizio; Anderson, Jason; Bertels, Koen (2016). "Una encuesta y evaluación de herramientas de síntesis de alto nivel FPGA". Transacciones IEEE sobre diseño asistido por computadora de circuitos y sistemas integrados . 35 (10): 1591–1604. doi : 10.1109 / TCAD.2015.2513673 . hdl : 11311/998432 . S2CID 8749577 .
enlaces externos
- Curso Vivado HLS en Youtube
- Foro de discusión de Deepchip