Synthèse de haut niveau - High-level synthesis

Synthèse de haut niveau ( HLS ), parfois appelée la synthèse C , la synthèse au niveau du système électronique (ESL) , la synthèse algorithmique , ou la synthèse du comportement , est un processus de conception automatisé qui prend une spécification comportementale extrait d'un système numérique et de trouver un registre -structure de niveau de transfert qui réalise le comportement donné.

La synthèse commence par une spécification de haut niveau du problème, où le comportement est généralement découplé de la mécanique de circuit de bas niveau telle que la synchronisation au niveau de l' horloge . Les premiers HLS ont exploré une variété de langages de spécification d'entrée, bien que les recherches récentes et les applications commerciales acceptent généralement des sous-ensembles synthétisables de ANSI C / C++ / SystemC / MATLAB . Le code est analysé, contraint sur le plan architectural et programmé pour être transcompilé en une conception de niveau de transfert de registre (RTL) dans un langage de description matérielle (HDL), qui est à son tour communément synthétisé au niveau de la porte par l'utilisation d'un outil de synthèse logique .

L'objectif de HLS est de permettre aux concepteurs de matériel de construire et de vérifier efficacement le matériel, en leur donnant un meilleur contrôle sur l'optimisation de leur architecture de conception, et grâce à la nature de permettre au concepteur de décrire la conception à un niveau d'abstraction plus élevé pendant que l'outil fait le Implémentation du RTL. La vérification du RTL est une partie importante du processus.

Le matériel peut être conçu à différents niveaux d'abstraction. Les niveaux d'abstraction couramment utilisés sont le niveau de la porte , le niveau de transfert de registre (RTL) et algorithmique niveau.

Alors que la synthèse logique utilise une description RTL de la conception, la synthèse de haut niveau fonctionne à un niveau d'abstraction plus élevé, en commençant par une description algorithmique dans un langage de haut niveau tel que SystemC et ANSI C/C++. Le concepteur développe généralement la fonctionnalité du module et le protocole d'interconnexion. Les outils de synthèse de haut niveau gèrent la micro-architecture et transforment le code fonctionnel non chronométré ou partiellement chronométré en implémentations RTL entièrement chronométrées, créant automatiquement des détails cycle par cycle pour l'implémentation matérielle. Les implémentations (RTL) sont ensuite utilisées directement dans un flux de synthèse logique conventionnel pour créer une implémentation au niveau de la porte.

Histoire

Les premiers travaux universitaires ont extrait l'ordonnancement, l'allocation et la liaison comme étapes de base pour une synthèse de haut niveau. L'ordonnancement partitionne l'algorithme en étapes de contrôle qui sont utilisées pour définir les états dans la machine à états finis . Chaque étape de contrôle contient une petite section de l'algorithme qui peut être exécutée en un seul cycle d'horloge dans le matériel. L'allocation et la liaison mappent les instructions et les variables aux composants matériels, multiplexeurs, registres et fils du chemin de données.

La synthèse comportementale de première génération a été introduite par Synopsys en 1994 en tant que compilateur comportemental et utilisait Verilog ou VHDL comme langages d'entrée. Le niveau d'abstraction utilisé était des processus partiellement chronométrés (cadencés). Les outils basés sur Verilog comportemental ou VHDL n'ont pas été largement adoptés en partie parce que ni les langages ni l'abstraction partiellement chronométrée n'étaient bien adaptés à la modélisation du comportement à un niveau élevé. 10 ans plus tard, début 2004, le compilateur comportemental Synopsys était en fin de vie .

En 1998, Forte Design Systems a introduit son outil Cynthesizer qui utilisait SystemC comme langage d'entrée au lieu de Verilog ou VHDL. Cynthesizer a été adopté par de nombreuses entreprises japonaises en 2000, car le Japon avait une communauté d'utilisateurs SystemC très mature. La première bande de synthèse de haut niveau a été réalisée en 2001 par Sony à l' aide de Cynthesizer. L'adoption aux États-Unis a commencé sérieusement en 2008.

Entrée source

Les entrées source les plus courantes pour la synthèse de haut niveau sont basées sur des langages standard tels que ANSI C / C++ , SystemC et MATLAB .

La synthèse de haut niveau inclut généralement également une spécification exécutable au bit près en entrée, car pour dériver une implémentation matérielle efficace, des informations supplémentaires sont nécessaires sur ce qui est une erreur quadratique moyenne ou un taux d'erreur binaire acceptable, etc. Par exemple, si le concepteur commence par un filtre FIR écrit en utilisant le type flottant "double", avant de pouvoir dériver une implémentation matérielle efficace, ils doivent effectuer un raffinement numérique pour arriver à une implémentation à virgule fixe. Le raffinement nécessite des informations supplémentaires sur le niveau de bruit de quantification qui peut être toléré, les plages d'entrée valides, etc. Cette spécification précise au bit près rend la spécification de source de synthèse de haut niveau fonctionnellement complète. Normalement, les outils déduisent du code de haut niveau une machine à états finis et un chemin de données qui implémentent des opérations arithmétiques.

Étapes du processus

Le processus de synthèse de haut niveau comprend un certain nombre d'activités. Divers outils de synthèse de haut niveau effectuent ces activités dans différents ordres en utilisant différents algorithmes. Certains outils de synthèse de haut niveau combinent certaines de ces activités ou les exécutent de manière itérative pour converger vers la solution souhaitée.

  • Traitement lexical
  • Optimisation de l'algorithme
  • Analyse de contrôle/flux de données
  • Traitement de la bibliothèque
  • Allocation des ressources
  • Planification
  • Reliure d'unité fonctionnelle
  • Inscription obligatoire
  • Traitement de sortie
  • Regroupage d'entrée

Fonctionnalité

En général, un algorithme peut être exécuté sur de nombreux cycles d'horloge avec peu de ressources matérielles, ou sur moins de cycles d'horloge en utilisant un plus grand nombre d'ALU, de registres et de mémoires. De manière correspondante, à partir d'une description algorithmique, diverses microarchitectures matérielles peuvent être générées par un compilateur HLS selon les directives données à l'outil. Il s'agit du même compromis entre vitesse d'exécution et complexité matérielle que lorsqu'un programme donné est exécuté sur des processeurs conventionnels de performances différentes, mais fonctionnant tous à peu près à la même fréquence d'horloge.

Contraintes architecturales

Les contraintes de synthèse pour l'architecture peuvent être automatiquement appliquées en fonction de l'analyse de conception. Ces contraintes peuvent être décomposées en

  • Hiérarchie
  • Interface
  • Mémoire
  • Boucle
  • Contraintes temporelles de bas niveau
  • Itération

Synthèse d'interfaces

La synthèse d'interface fait référence à la capacité d'accepter une description C/C++ pure comme entrée, puis d'utiliser la technologie de synthèse d'interface automatisée pour contrôler le protocole de synchronisation et de communication sur l'interface de conception. Cela permet l'analyse de l'interface et l'exploration d'une gamme complète d'options d'interface matérielle telles que le streaming, la RAM à un ou deux ports ainsi que divers mécanismes d'établissement de liaison. Avec la synthèse d'interface, le concepteur n'intègre pas de protocoles d'interface dans la description de la source. Les exemples peuvent être : connexion directe, une ligne, poignée de main sur 2 lignes, FIFO.

Vendeurs

Données rapportées sur l'enquête récente

Statut Compilateur Propriétaire Licence Saisir Sortir Année Domaine
Banc d' essai
PF FixP
Utilisé Stratus HLS Systèmes de conception de cadence Commercial C/C++ SystemC RTL 2015 Tous Oui Oui Oui
AUG Laboratoire TIMA. Académique sous-ensemble C VHDL 2012 Tous Oui Non Non
exciter Y Explorations Commercial C VHDL/Verilog 2001 Tous Oui Non Oui
Bambu PoliMi Académique C VHDL/Verilog 2012 Tous Oui Oui Non
Bluespec BlueSpec Inc. Commercial BSV SystemVerilog 2007 Tous Non Non Non
CQC Systèmes CacheQ, Inc. Commercial C/C++/Fortan Fichier exécutable hôte + FPGA Bit (SystemVerilog est intermédiaire) 2018 Tout - calcul multicœur et hétérogène Oui (C++) Oui Oui
CSC Altium Commercial sous-ensemble C VHDL/Verilog 2008 Tous Non Oui Oui
Co-développeur Impulsion accélérée Commercial Impulsion-C VHDL 2003
Diffusion d' images
Oui Oui Non
Codeur HDL MathWorks Commercial MATLAB, Simulink, Stateflow, Simscape VHDL / Verilog 2003 Systèmes de contrôle, traitement du signal, sans fil, radar, communications, image et vision par ordinateur Oui Oui Oui
CyberWorkbench NCA Commercial BDL, SystemC VHDL/Verilog 2011 Tous Cycle/
Formel
Oui Oui
Catapulte Mentor
(entreprise Siemens)
Commercial C, C++, SystemC VHDL/Verilog 2004 Tous Oui Oui Oui
NAIN TU. Delft Académique sous-ensemble C VHDL 2012 Tous Oui Oui Oui
GAUT U. Bretagne Académique C/C++ VHDL 2010 DSP Oui Non Oui
Hastlayer Lombiq Technologies Commercial C#/C++/F#...
( .NET )
VHDL 2015 .RAPPORTER Oui Oui Oui
SoC instantané Cœurs FPGA Commercial C/C++ VHDL/Verilog 2019 Tous Oui Non Non
Compilateur de synthèse Intel de haut niveau Intel FPGA (anciennement Altera) Commercial C/C++ Verilog 2017 Tous Oui Oui Oui
LegUp HLS Informatique LegUp Commercial C/C++ Verilog 2015 Tous Oui Oui Oui
Jambe vers le haut U. Toronto Académique C Verilog 2010 Tous Oui Oui Non
MaxCompiler Maxeler Commercial MaxJ RTL 2010 Flux de données Non Oui Non
ROCCC Jacquard Comp. Commercial sous-ensemble C VHDL 2010 Diffusion Non Oui Non
Symphonie C Synopsis Commercial C/C++ VHDL/Verilog/
SystemC
2010 Tous Oui Non Oui
VivadoHLS
(anciennement AutoPilot
d'AutoESL)
Xilinx Commercial C/C++/SystemC VHDL/Verilog/
SystemC
2013 Tous Oui Oui Oui
kiwi Université de Cambridge Académique C# Verilog 2008 .RAPPORTER Non Oui Oui
chimpanzés U. Washington Académique C VHDL 2008 Tous Non Non Non
gcc2verilog U. Corée Académique C Verilog 2011 Tous Non Non Non
Hercule Compilateurs Ajax Commercial C/NAC VHDL 2012 Tous Oui Oui Oui
Chang U. Illinois Académique C Verilog 2013 Tous Oui ? ?
Trident Los Alamos NL Académique sous-ensemble C VHDL 2007 Scientifique Non Oui Non
abandon-
doned
AccelDSP Xilinx Commercial MATLAB VHDL/Verilog 2006 DSP Oui Oui Oui
C2H Altera Commercial C VHDL/Verilog 2006 Tous Non Non Non
CtoVerilog U. Haïfa Académique C Verilog 2008 Tous Non Non Non
DE FACTO U. Cailf du Sud. Académique C RTL 1999 DSE Non Non Non
Garp U. Berkeley Académique sous-ensemble C flux binaire 2000 Boucle Non Non Non
RENCONTRE U. Nord-ouest Académique MATLAB VHDL 2000 Image Non Non Non
Napa-C Sarnoff Corp. Académique sous-ensemble C VHDL/Verilog 1998 Boucle Non Non Non
PipeRench U.Carnegie M. Académique DIL biflux 2000 Flux Non Non Non
SAC États-Unis Colorado Académique SAC VHDL 2003 Image Non Non Non
Concombre de mer U. Brigham Y. Académique Java EDIF 2002 Tous Non Oui Oui
ÉTINCELLE U. Cal. Irvine Académique C VHDL 2003 Contrôler Non Non Non

Voir également

Les références

Lectures complémentaires

  • Michael Fingeroff (2010). Livre bleu de synthèse de haut niveau . Société Xlibris. ISBN 978-1-4500-9724-6.
  • Coussy, P. ; Gajski, DD ; Meredith, M. ; Takach, A. (2009). « Une introduction à la synthèse de haut niveau ». Conception et test IEEE d'ordinateurs . 26 (4) : 8-17. doi : 10.1109/MDT.2009.69 . S2CID  52870966 .
  • Ewout SJ Martens; Georges Gielen (2008). Modélisation et synthèse de haut niveau de systèmes intégrés analogiques . Springer. ISBN 978-1-4020-6801-0.
  • Saraju Mohanty ; N. Ranganathan ; E. Kougianos & P. ​​Patra (2008). Synthèse de haut niveau à faible puissance pour les circuits CMOS à l'échelle nanométrique . Springer. ISBN 978-0387764733.
  • Alice C. Parker ; Yossef Tirat-Gefen ; Suhrid A. Wadekar (2007). "Conception au niveau du système". Dans Wai-Kai Chen (éd.). Le manuel VLSI (2e éd.). Presse CRC. ISBN 978-0-8493-4199-1. chapitre 76.
  • Shahrzad Mirkhani ; Zainalabedin Navabi (2007). « Langages de conception au niveau du système ». Dans Wai-Kai Chen (éd.). Le manuel VLSI (2e éd.). Presse CRC. ISBN 978-0-8493-4199-1. chapitre 86. couvre l'utilisation de C/C++, SystemC, TML et même UML
  • Liming Xiu (2007). Méthodologie de conception de circuits VLSI démystifiée : une taxonomie conceptuelle . Wiley-IEEE. ISBN 978-0-470-12742-1.
  • John P. Elliott (1999). Comprendre la synthèse comportementale : un guide pratique de la conception de haut niveau . Springer. ISBN 978-0-7923-8542-4.
  • Nane, Razvan; Sima, Vlad-Mihai ; Pilato, chrétien ; Choi, Jongsok ; Fort, Blair ; Canis, André ; Chen, Yu Ting ; Hsiao, Hsuan; Brown, Stephen ; Ferrandi, Fabrice; Anderson, Jason ; Bertels, Koen (2016). "Une enquête et une évaluation des outils de synthèse de haut niveau FPGA". Transactions IEEE sur la conception assistée par ordinateur de circuits et systèmes intégrés . 35 (10) : 1591-1604. doi : 10.1109/TCAD.2015.2513673 . hdl : 11311/998432 . S2CID  8749577 .
  • Gupta, Rajesh; Brasseur, Forrest (2008). "Synthèse de haut niveau : Une rétrospective". "Synthèse de haut niveau : une rétrospective" . Springer. p. 13-28. doi : 10.1007/978-1-4020-8588-8_2 . ISBN 978-1-4020-8587-1.

Liens externes