Síntesis de alto nivel - High-level synthesis

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 toma una especificación conductual abstracta de un sistema digital y encuentra un registro. -estructura de nivel de transferencia que da cuenta del comportamiento dado.

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, 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 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 al nivel de puerta mediante el uso de unherramienta 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, brindándoles un mejor control sobre la optimización de su arquitectura de diseño y a través de 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.

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. Las implementaciones (RTL) se utilizan luego 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 Behavioural Compiler y usaba 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.

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.

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. 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.

  • 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. Estas restricciones 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.

Vendedores

Datos informados en una encuesta reciente

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 Todos
AUGH Laboratorio TIMA. Académico Subconjunto C VHDL 2012 Todos No No
excitar Y Exploraciones Comercial C VHDL / Verilog 2001 Todos No
Bambu PoliMi Académico C VHDL / Verilog 2012 Todos No
Bluespec BlueSpec Inc. Comercial BSV SystemVerilog 2007 Todos No No No
QCC CacheQ Systems, Inc. Comercial C / C ++ / Fortan Archivo ejecutable de host + FPGA Bit (SystemVerilog es intermedio) 2018 Todo: computación heterogénea y de varios núcleos Sí (C ++)
CHC Altium Comercial Subconjunto C VHDL / Verilog 2008 Todos No
CoDesarrollador Impulso acelerado Comercial Impulso-C VHDL 2003
Streaming de imágenes
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
CyberWorkbench Comité ejecutivo nacional Comercial BDL, SystemC VHDL / Verilog 2011 Todos Ciclo /
Formal
Catapulta Mentor
(negocio de Siemens)
Comercial C, C ++, SystemC VHDL / Verilog 2004 Todos
DWARV TU. porcelana de Delft Académico Subconjunto C VHDL 2012 Todos
GAUT U. Bretaña Académico C / C ++ VHDL 2010 DSP No
Hastlayer Tecnologías Lombiq Comercial C # / C ++ / F # ...
( .NET )
VHDL 2015 .NETO
SoC instantáneo Núcleos FPGA Comercial C / C ++ VHDL / Verilog 2019 Todos No No
Compilador de síntesis de alto nivel de Intel Intel FPGA (anteriormente Altera) Comercial C / C ++ Verilog 2017 Todos
LegUp HLS Computación LegUp Comercial C / C ++ Verilog 2015 Todos
Ventaja Toronto Académico C Verilog 2010 Todos No
MaxCompiler Maxeler Comercial MaxJ RTL 2010 Flujo de datos No No
ROCCC Jacquard Comp. Comercial Subconjunto C VHDL 2010 Transmisión No No
Sinfonía C Sinopsis Comercial C / C ++ VHDL / Verilog /
SystemC
2010 Todos No
VivadoHLS
(anteriormente AutoPilot
de AutoESL)
Xilinx Comercial C / C ++ / SystemC VHDL / Verilog /
SystemC
2013 Todos
kiwi U. Cambridge Académico C# Verilog 2008 .NETO No
CHIMPS Washington Académico C VHDL 2008 Todos No No No
gcc2verilog U. Corea Académico C Verilog 2011 Todos No No No
Hércules Compiladores Ajax Comercial C / NAC VHDL 2012 Todos
Shang U. Illinois Académico C Verilog 2013 Todos ? ?
Tridente Los Alamos NL Académico Subconjunto C VHDL 2007 Científico No No
Aban-
donado
AccelDSP Xilinx Comercial MATLAB VHDL / Verilog 2006 DSP
C2H Altera Comercial C VHDL / Verilog 2006 Todos No No No
CtoVerilog U. Haifa Académico C Verilog 2008 Todos 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
FÓSFORO 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 Todos No
CHISPA - CHISPEAR U. Cal. Irvine Académico C VHDL 2003 Control No No No

Ver también

Referencias

Otras lecturas

  • Michael Fingeroff (2010). Libro azul de síntesis de alto nivel . Xlibris Corporation. 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 .
  • Gupta, Rajesh; Brewer, Forrest (2008). "Síntesis de alto nivel: una retrospectiva". "Síntesis de alto nivel: una retrospectiva" . Saltador. págs. 13-28. doi : 10.1007 / 978-1-4020-8588-8_2 . ISBN 978-1-4020-8587-1.

enlaces externos