HDL Coder


Principales fonctionnalités

  • Code VHDL et Verilog indépendant de la cible et synthétisable
  • Support de la génération de code pour les fonctions MATLAB, les System objects et les blocs Simulink
  • Support des machines à états finis de Mealy et de Moore, et implémentations de la logique de contrôle avec Stateflow
  • L’assistant graphique HDL Workflow Advisor pour la programmation des cartes d’application Xilinx, Microsemi, et Intel
  • Partage de ressources et retiming pour des compromis surface/vitesse
  • Traçabilité code/modèle et modèle/code pour la norme DO-254
  • Intégration du code existant
Génération de code HDL à partir de MATLAB ou Simulink avec HDL Coder. Vous pouvez générer un code VHDL et Verilog à partir des fonctions MATLAB, des modèles Simulink ou d’une combinaison des deux.

Génération du code HDL

HDL Coder permet de générer un code HDL synthétisable pour les implémentations sur FPGA et ASIC en seulement quelques étapes :

  • Modélisation de votre design à l’aide d‘une combinaison de code MATLAB, de blocs Simulink et de diagrammes Stateflow.
  • Optimisation des modèles pour satisfaire les objectifs de surface/vitesse.
  • Génération de code HDL à l’aide du HDL Workflow Advisor intégré pour MATLAB et Simulink.
  • Vérification du code généré à l’aide de HDL Verifier™

HDL Coder génère du code VHDL ou Verilog lisible, traçable et synthétisable.


Documentation et traçabilité du code HDL

HDL Coder produit du code VHDL et Verilog lisible, en réutilisant les conventions de nommage de vos blocs et fonctions MATLAB et Simulink. Lors de la génération de code HDL, vous pouvez créer un rapport de traçabilité. Il s’agit d’un rapport HTML qui établit un lien entre le code HDL généré et son origine MATLAB ou Simulink.

Pour les processus de conception critiques tels que la DO-254, vous pouvez combiner le rapport de traçabilité HDL Coder avec Simulink Requirements afin d’assurer la traçabilité de votre code HDL jusqu’aux spécifications système initiales.

HDL Coder génère du code VHDL et Verilog conforme aux normes de codage les plus répandues sur le marché, comme RMM et STARC. Il génère des scripts permettant de vérifier son code au moyen de parseurs tiers. Vous pouvez utiliser Simulink Model Advisor au cours de la phase de design, puis créer des rapports lors de la génération du code HDL afin d’identifier les erreurs ou incohérences dans votre design. Vous pourrez alors adapter vos modèles pour qu’ils répondent à ces normes.


Conception pour la génération de code HDL

Pour une implémentation d’algorithmes sur du hardware, il convient de les modifier afin qu’ils traitent des flux de bits plutôt que des blocs de données. Les étapes typiques incluent la gestion des flux de données, la parallélisation des opérations, la gestion de la synchronisation des chemins parallèles et s’assurer que l’implémentation coïncide avec les ressources disponibles du système.


System objects et blocs optimisés pour le HDL

HDL Coder supporte plus de 200 blocs Simulink et vous permet de définir des propriétés d’implémentation spécifiques HDL. Vous pouvez utiliser des blocs supplémentaires optimisés pour le code HDL, spécifiques aux applications :


Données virgule flottante et virgule fixe

Les FPGA et ASIC sont composés de ressources fixes. Vous devez donc gérer la longueur de mots des données pour respecter les exigences de performance et exploiter efficacement les ressources. Cependant, cela peut être difficile quand vous devez convertir des algorithmes développés au moyen d’une arithmétique virgule flottante double précision en implémentations virgule fixe tout en conservant suffisamment de précision mathématique.

La fonctionnalité de virgule flottante native de HDL Coder vous permet de générer du code VHDL ou Verilog synthétisable directement depuis des modèles Simulink simple précision. Cela vous permet de cibler plus rapidement les FPGA. Même si vous convertissez la plupart de vos designs en virgule fixe de manière à les implémenter plus efficacement, vous pouvez isoler les opérations qui doivent être implémentées en virgule flottante native. Il s’agit généralement de l’approche la plus efficace pour les équations mathématiques qui nécessitent une plage dynamique élevée comme les équations de flux, les fonctions de distribution cumulées et les équations à représentations d’état.

Fixed-Point Designer automatise et gère le processus de conversion en virgule fixe. Il utilise des données de simulation pour proposer des longueurs de mot et des exigences de précision pour chaque opération dans votre design. Ces paramètres peuvent être appliqués tels quels ou vous pouvez les remplacer par les vôtres.

HDL Coder propose des options afin de s’adapter au mieux aux types de données dont vous avez besoin. Fixed-Point Designer automatise le processus de conversion en virgule fixe. HDL Coder génère du code HDL virgule flottante natif indépendant du fournisseur et cible des blocs IP matériels ou logiciels spécifiques au fournisseur.


Des ressources pour démarrer

Pour commencer à adapter votre algorithme pour la génération de code HDL, téléchargez le guide intitulé HDL Coder Evaluation Reference Guide.

Si vous êtes novice en design FPGA, le cours de formation intitulé DSP pour FPGA traite des compromis d’implémentation hardware de divers algorithmes de traitement du signal appliqués aux FPGA. Vous pouvez en outre solliciter notre service de conseil, pour l’implémentation de designs orientés HDL ou pour obtenir une assistance méthodologique.


Optimisation du code HDL

HDL Coder vous aide à optimiser votre code, qu’il soit destiné à du matériel de prototypage ou de production. Ses options d’optimisation fonctionnent automatiquement ou selon vos instructions. Pour augmenter la fréquence d’horloge de votre design et préserver ses fonctionnalités, HDL Coder insère et distribue des registres de pipeline tout en synchronisant les chemins parallèles. Afin de réduire la surface et la puissance de votre design, HDL Coder peut convertir des structures parallèles en structures série et partager des ressources. De nombreux blocs et System objects orientés HDL, comme les filtres et les opérations mathématiques, disposent d’options de personnalisation.

Le fait de concevoir au niveau architectural vous permet d’explorer plus largement les répercussions en termes de fréquence et de surface que des techniques telles que le traitement vectoriel, le suréchantillonnage et le traitement par régions d’intérêt peuvent avoir sur votre design. Cela signifie que vous pouvez générer un code de meilleure qualité que si vous codez manuellement en HDL, car vous avez la liberté d’explorer un plus large éventail de solutions.

Nokia améliore la qualité des produits FPGA et ASIC via ce type d’exploration et d’optimisation :

L'optimisation au niveau architecture permet d'explorer plus largement les options d'implémentation


Prototypage FPGA

Les ingénieurs utilisent souvent HDL Coder pour prototyper des applications sur FPGA pour de la validation à grande vitesse, en temps réel. Le ciblage d’un FPGA ou SoC sur une carte nécessite que les entrées et sorties du modèle soient mappées sur les interfaces spécifiques aux équipements et aux cartes. HDL Coder propose des cibles intégrées afin de configurer automatiquement les systèmes de prototypage FPGA les plus populaires.

Prototype on a Xilinx Zynq-7000 All Programmable SoC board with an RF FMC card or PicoZed SDR to test your design using live over-the-air signals.


Hardware Support Packages

Afin d’automatiser la configuration et le ciblage de kits de développement populaires de Xilinx® et d’Intel® (anciennement Altera), vous pouvez télécharger le hardware support package HDL Coder applicable à votre gamme de carte.

Vous pouvez également télécharger des hardware support packages spécifiques à des applications qui supportent le ciblage FPGA pour les radios logicielles (SDR), le contrôle moteur et le traitement vidéo.


Simulation temps réel et test avec Simulink Real-Time et la technologie Speedgoat FPGA

Pour effectuer le prototypage rapide d’algorithmes de contrôle, de DSP, de vision et de projets de simulation de processus avec du hardware-in-the-loop (HIL), vous aurez souvent besoin de FPGA pour un calcul rapide et une faible latence. Conjointement, Simulink Real-Time™, et les modules programmables d’E/S FPGA de Speedgoat, fournissent une plateforme à faible latence pour applications nécessitant plusieurs centaines de lignes d’E/S. En exploitant les paramètres intégrés dans HDL Workflow Advisor, vous pouvez automatiser le ciblage des modules d’E/S FPGA. La génération de code HDL en virgule flottante native simplifie encore le ciblage FPGA, notamment pour les opérations exigeant une plage dynamique élevée. L’enregistrement intégré des données, le contrôle et la configuration en temps réel vous aident à procéder à des itérations et un débogage rapides de vos designs.


Déploiement sur FPGA, SoC ou ASIC destinés à la production

Lorsque vous êtes prêt à déployer votre design sur du hardware de production, HDL Coder propose des options robustes visant à effectuer un mappage des entrées et sorties (E/S) du composant. Vous pouvez également effectuer un mappage vers des interfaces SoC (system-on-chip) couramment utilisées pour les implémentations hardware/software.

Vous pouvez définir un design de référence personnalisé à l’aide des interfaces de votre carte et l’enregistrer avec HDL Coder. Au cours de la génération du code HDL, vous pouvez la sélectionner en tant que cible et définir la manière dont les E/S de votre design se mappent aux autres composants de la carte, hors de la carte ou vers des interfaces AXI tels que des contrôleurs de mémoire ou des bus système.

Pour générer un sous-système pour un SoC ASIC ou FPGA, le processus de génération d’IP Core vous permet de mapper ses ports aux E/S de la carte ou à une variété de protocoles d’interconnexion AXI, dont AXI4, AXI4-Lite, AXI4-Master et AXI4-Stream for Video.

Vous pouvez utiliser HDL Coder en vue du déploiement en production pour une grande variété d’applications. Exemples :

Mapper les entrées/sorties de l'algorithme sur celle de la carte ou sur les interfaces du bus AXI pour le déploiement en production.


Vérification du code HDL

HDL Coder génère des bancs d’essai VHDL et Verilog pour la vérification rapide du code HDL généré. Vous pouvez personnaliser un banc d’essai HDL en utilisant une variété d’options qui appliquent des stimuli sur le code HDL et vérifient ses résultats. Vous pouvez aussi générer des scripts pour automatiser le processus de compilation et de simulation de votre code dans les simulateurs HDL.

HDL Coder fonctionne avec HDL Verifier pour générer automatiquement deux types de modèles de cosimulation :

  • Un modèle de cosimulation HDL, pour la cosimulation de Simulink avec des simulateurs HDL comme Cadence Incisive et Mentor Graphics ModelSim et Questa
  • Un modèle de cosimulation FPGA-in-the-loop (FIL), pour la vérification de votre design avec Simulink et une carte FPGA.

Générez un banc d’essai ou effectuez une cosimulation au moyen d’un simulateur EDA ou d’un kit de développement FPGA.


Intégration de la génération de code HDL dans le Model-Based Design

Le Model-Based Design combine les exigences, le design système, l’implémentation et le test. Cette approche permet aux membres de votre équipe de design de collaborer les uns avec les autres. Alors que vous travaillez sur la partie de votre design dédié au hardware, vous pouvez réutiliser vos tests et votre infrastructure de vérification de niveau système. Vous pouvez affiner votre modèle pour y ajouter des détails d’implémentation hardware et une quantification virgule fixe. Le Model-Based Design offre un support complet du contrôle de version et de la traçabilité.

Allegro Microsystems déploie le Model-Based Design pour un design ASIC à signaux mixtes et son implémentation :

Processus de Model-Based Design permettant d’affiner un design algorithmique dans le cadre d’une implémentation hardware virgule fixe. Vous pouvez générer des modèles à partir de cette implémentation et les utiliser pour des processus en aval.