synthèse de haut niveau
Anglais: high-level synthesis
Une méthode de conception qui transforme automatiquement une description algorithmique ou comportementale d'un système numérique, écrite dans un langage de haut niveau tel que C ou C++, en une description matérielle de niveau transfert de registre adaptée à l'implémentation FPGA ou ASIC.
HLS : transformer automatiquement le code en plans de puce
La synthèse de haut niveau (HLS) est un outil qui lit des algorithmes écrits dans des langages de programmation conventionnels, généralement C ou C++, et génère des descriptions de niveau de transfert de registre (RTL) en Verilog ou VHDL. Ces fichiers RTL sont ensuite intégrés dans des outils de conception FPGA ou ASIC standard pour le placement et le routage. L'outil de synthèse déduit les structures matérielles, le pipelining et les hiérarchies de mémoire qu'un concepteur humain spécifierait normalement à la main.
Le travail principal est la compression : au lieu d'instancier manuellement des additionneurs, des multiplexeurs, des blocs de RAM et la logique de contrôle, le concepteur écrit une boucle ou une transformation de données dans un langage qu'il connaît déjà. L'outil HLS effectue la liaison des ressources (attribution des opérations à un matériel spécifique), l'ordonnancement (décision du cycle qui exécute quelle opération) et l'optimisation du flux de données. Les outils HLS courants incluent Xilinx Vivado HLS, Intel (Altera) HLS Compiler, et des options open source comme Bambu et LegUp.
Où cela s'intègre et où cela échoue
La HLS excelle pour les blocs à forte intensité de calcul : traitement du signal, opérations matricielles, noyaux cryptographiques. Elle réduit le temps de conception et détecte les erreurs plus tôt que le RTL écrit à la main. Mais ce n'est pas magique. Le matériel synthétisé consomme souvent plus de surface et de puissance que le RTL expert conçu à la main, car les outils automatisés font des choix d'ordonnancement conservateurs et ne peuvent pas exploiter les optimisations spécifiques au domaine. Les concepteurs doivent toujours comprendre la plateforme cible, les goulots d'étranglement de la mémoire et les exigences de latence. Le code écrit sans connaissance du matériel se synthétisera en une logique gonflée et lente.
Le débogage est plus difficile qu'avec le HDL traditionnel. Quand quelque chose ne fonctionne pas correctement, vous remontez de Verilog à C, mais le mappage est opaque. Les pragmas du compilateur, les directives et les interfaces de fonction soignées deviennent critiques. La plupart des flux de production utilisent la HLS pour un ou deux noyaux de calcul intégrés dans une conception principalement écrite à la main, plutôt que de synthétiser une puce entière à partir du C de haut niveau.
L'écart d'adoption reste important. Les grandes entreprises de puces s'appuient sur la HLS pour des modules de chemin de données spécifiques, tandis que les petites équipes ou le monde universitaire l'utilisent pour accélérer les itérations de prototypes. Les conceptions sensibles à la latence ou critiques en termes de puissance exigent toujours un RTL manuel. La HLS fonctionne mieux lorsque l'algorithme est stable, les contraintes matérielles sont claires et les exigences de performance permettent un certain surcoût en échange d'un délai de mise sur le marché plus rapide.
Sources
- Source de la définitionWiktionary