Table of Contents
Les langages de description matérielle (HDL) forment l'épine dorsale de la conception numérique du système, permettant aux ingénieurs de modéliser, simuler et synthétiser des circuits complexes. Parmi les HDL les plus utilisés aujourd'hui, on trouve VHDL et SystemVerilog. Bien que les deux langages permettent aux concepteurs de décrire le comportement matériel à différents niveaux d'abstraction, ils diffèrent considérablement dans les cas de syntaxe, de fonctionnalités et d'utilisations typiques.
Aperçu de la VHDL
VHDL (VHSIC Hardware Description Language) a été développé dans les années 1980 dans le cadre du programme de circuit intégré à très haute vitesse (VHSIC) du département de la Défense des États-Unis. Sa création a été motivée par la nécessité d'une méthode normalisée et rigoureuse pour documenter et simuler les systèmes numériques. VHDL a été officiellement normalisé comme IEEE 1076 en 1987, avec des révisions ultérieures (1993, 2002, 2008 et 2019) ajoutant de nouvelles capacités.
- Typage fort: VHDL impose une vérification de type stricte au moment de la compilation, réduisant la probabilité d'erreurs de correspondance de données involontaires. Cela le rend idéal pour les applications critiques en matière de sécurité où les erreurs peuvent avoir de graves conséquences.
- Syntaxe de Verbose: VHDL est connu pour son style explicite et auto-documentant. Chaque port, signal et processus doit être déclaré avec des informations de type complet, ce qui améliore la lisibilité et la maintenance dans les grandes équipes.
- Le mécanisme de paquetage VHDL=] permet aux concepteurs de regrouper les types de données, les constantes et les sous-programmes connexes, en favorisant la réutilisation et la modularité.
- Caractéristiques orientées vers la simulation: La sémantique du langage VHDL= est conçue pour supporter une simulation détaillée, y compris des cycles delta et une large gamme de types de données (p. ex. , , et des types définis par l'utilisateur).
Ces caractéristiques font de VHDL le langage de choix dans des industries comme l'aérospatiale, la défense, les dispositifs médicaux et la signalisation ferroviaire, où la justesse et la traçabilité sont primordiales. De nombreuses normes gouvernementales et internationales (p. ex. DO‐254 pour les systèmes aéroportés) exigent ou recommandent explicitement l'utilisation de VHDL pour le développement matériel.
Aperçu de SystemVerilog
SystemVerilog est apparu au début des années 2000 comme une extension de la langue verilog (IEEE 1364). Il a été créé pour répondre à la complexité croissante des conceptions numériques et la nécessité de capacités de vérification plus puissantes. La langue a été normalisée dans le cadre de l'IEEE 1800 en 2005, avec des mises à jour publiées en 2009, 2012 et 2017. SystemVerilog construit sur Verilogs concis, syntaxe C-like et ajoute plusieurs fonctionnalités avancées:
- Appuye la programmation orientée objet: Les classes, l'héritage et le polymorphisme permettent la création de composants testbench réutilisables et évolutives.
- Assertions: SystemVérilog Assertions (SVA) permet aux concepteurs de spécifier les propriétés temporelles et de les vérifier lors de la simulation, ce qui facilite la capture des bogues fonctionnels.
- Randomisation et résolution des contraintes:[ Le langage comprend des constructions intégrées pour générer un stimulus aléatoire avec des contraintes, qui est essentiel pour vérifier des protocoles complexes et des cas d'angle.
- Types de données améliorés:[ SystemVerilog introduit (un type à 4 états à usage général), , et , aux côtés des types définis par l'utilisateur et qui peuvent être utilisés à la fois pour la synthèse et la simulation.
- Interfaces et modports:[ Ces constructions simplifient la connexion de plusieurs modules et permettent le regroupement de signaux connexes avec des règles d'accès.
SystemVerilog est devenu le langage dominant pour la vérification dans l'industrie des semi-conducteurs, en particulier pour les conceptions SoC qui nécessitent une vérification fonctionnelle approfondie. Sa syntaxe concise et sa similitude avec C le rendent attrayant pour les concepteurs avec un fond logiciel, et son support direct pour UVM (Méthode de vérification universelle) en a fait la norme pour les environnements de vérification avancés.
Différences clés entre VHDL et SystemVerilog
Bien que VHDL et SystemVerilog décrivent tous deux le matériel, leurs philosophies de conception et les applications typiques divergent de plusieurs façons importantes. Le tableau ci-dessous résume les distinctions principales, mais la discussion qui suit fournit un regard plus profond.
- Syntactique Style: VHDL utilise une syntaxe verbeuse, ada-like qui est très explicite. Chaque attribution de signal est faite avec et les listes de sensibilité de processus sont obligatoires. SystemVérilog, par contre, hérite de la syntaxe Verilog="s C-like, avec des affectations utilisant pour toujours des blocs et pour des affectations non-blocantes à l'intérieur des blocs horlogers. SystemVérilog="s syntaxe est plus compacte, ce qui peut accélérer le codage mais peut nécessiter plus de discipline pour assurer la lisibilité.
- Type Système et sécurité: VHDL est fortement tapé – vous ne pouvez pas assigner directement un entier à une sans fonction de conversion. Cette rigueur capture de nombreuses erreurs au moment de la compilation mais peut être encombrante. SystemVerilog est plus détendue; par exemple, un vecteur peut être directement affecté à une variable , et les conversions implicites de type sont permises dans de nombreux contextes. Cette flexibilité accélère le développement mais peut permettre des erreurs subtiles de détection jusqu'à la simulation.
- Caractéristiques de vérification: SystemVerilog offre des constructions beaucoup plus riches pour la vérification, y compris les classes, la randomisation limitée, la couverture fonctionnelle et les assertions. VHDL manque de support OOP intégré — bien que la révision VHDL‐2008 ait ajouté certaines capacités orientées objet via des types et des alias protégés, ceux-ci ne sont pas aussi matures que SystemVerilog.
- Adoption industrielle et support d'outils:[ Les deux langues sont supportées par tous les principaux fournisseurs EDA (Siemens EDA, Synopsys, Cadence, Aldec, etc.). Cependant, SystemVerilog=s infrastructure de vérification – en particulier les bibliothèques UVM et d'affirmation – est plus étroitement intégrée dans les environnements de simulation modernes.
- Apprendre la courbe: Les ingénieurs ayant un fond en C ou Java trouvent souvent SystemVerilog plus facile à commencer en raison de sa syntaxe familière. VHDL=S verbosity et la typage stricte peut être au départ difficile, mais les promoteurs soutiennent qu'il favorise une meilleure discipline et réduit les erreurs dans les grands modèles.
Utilisation de VHDL et SystemVerilog dans les projets mixtes
Dans un monde idéal, chaque conception utiliserait une seule HDL. Des contraintes réelles – IP de la légicité, expertise de l'équipe, certification d'outils et exigences de vérification spécifiques – rendent souvent nécessaire des conceptions en langage mixte. Par exemple, un projet peut nécessiter une unité de contrôle critique de sécurité écrite en VHDL pour satisfaire les autorités de certification, tandis que le reste de la SoC utilise SystemVerilog pour la conception et la vérification.
Communication entre les langues
Les outils EDA modernes permettent une interopérabilité intégrée en apparaissant automatiquement les types et les directions de port, en fonction de l'instantiation des composants VHDL ou de la syntaxe d'instantiation des modules SystemVerilog. Cependant, certaines règles doivent être respectées:
- Types de données:Les types VHDL comme et peuvent être mapés sur SystemVerilogs et , respectivement. La plupart des outils traitent de façon transparente.
- Sensibilité à la direction:[ Les ports VHDL sont déclarés avec , ou . SystemVerilog utilise , et . Les outils gèrent la cartographie, mais soyez conscient que les ports VHDL=» non-contrainés (] sans portée) nécessitent une activation attentive.
- Résolution et programmation temporelles : VHDL utilise un modèle delta-delay qui peut différer de la programmation régionale de SystemVerilog. Les simulateurs sont conçus pour résoudre ces différences, mais des décalages subtils de temps peuvent survenir.
Normes officielles d'interopérabilité
Pour favoriser le mélange sans faille de VHDL et de SystemVerilog, l'IEEE a défini plusieurs mécanismes :
- VHDL‐2008 Direct VHDL Instantiation (DVI): Cette fonctionnalité permet à une unité de conception VHDL d'injecter des entités VHDL de SystemVerilog sans fichiers d'emballage. L'outil doit supporter la norme IEEE 1076‐2008.
- SystemVerilog Direct Programming Interface (DPI): Bien que DPI soit principalement destiné à l'intégration C/C++, il peut également être utilisé pour appeler des fonctions étrangères de SystemVerilog. Certains ingénieurs créent des enveloppes VHDL‐to‐C pour l'interface avec les paquets VHDL, bien que cette approche ne soit pas courante pour l'instantanement des modules.
- Importation VHDL de style verilog: De nombreux outils EDA soutiennent une approche pragmatique: vous pouvez instancier une entité VHDL à l'intérieur d'un module SystemVerilog en utilisant une directive ou une syntaxe d'invocation spéciale.
Défis et considérations
La combinaison de VHDL et SystemVerilog n'est pas toujours simple. Les ingénieurs doivent être conscients des questions pratiques suivantes:
Soutien à la synthèse
Les outils de synthèse modernes (p. ex. Synopsys Design Compiler, Cadence Genus) peuvent synthétiser des conceptions qui mélangent VHDL et SystemVerilog, mais ils ont des limites. Les constructions SystemVerilog ne sont pas toutes synthésisables (p. ex. classes, assertions sont seulement simulations). De même, les types de points flottants VHDL et certaines fonctions de paquets ne peuvent pas être supportées par tous les synthétiseurs logiques. Il est essentiel d'utiliser uniquement le sous-ensemble synthésable de chaque langue dans la partie design du projet.
Performance de simulation
La simulation en langage mixte peut être plus lente que la simulation homogène car l'outil doit gérer deux systèmes de type différents et des modèles de planification. Cependant, avec les simulateurs modernes à haute performance, les frais généraux sont souvent négligeables pour les conceptions jusqu'à plusieurs millions de portes.
Compétences et documentation de l'équipe
Tous les ingénieurs ne parlent pas couramment à la fois le VHDL et le SystemVerilog. Un projet en langage mixte devrait conserver une documentation claire qui décrit les limites du module, les langues utilisées et les conventions d'invocation. Établir des lignes directrices de codage qui traitent, par exemple, de la désignation des conventions pour les ports (certaines équipes préfixent VHDL /] pour éviter toute confusion avec les instructions de SystemVerilog).
Meilleures pratiques pour les modèles en langage mixte
Voici des recommandations concrètes fondées sur l'expérience de nombreux projets industriels en langues mixtes :
- Définir une norme d'interface claire tôt Décider d'un ensemble de types de base (p. ex. pour les bits simples, pour les bus) qui sera utilisé à la limite de la langue. Éviter d'utiliser des VHDL=» type directement à travers la limite; convertir en type vectoriel à la place.
- Utilisez des composants IP enveloppants. Pour les blocs VHDL existants, envisagez de les envelopper dans les modules d'interface SystemVerilog qui gèrent les conversions de type et fournissent une API simple pour le reste de la conception.
- L'utilisation de la conception hiérarchique. Gardez les modules VHDL et SystemVérilog dans des répertoires ou des bibliothèques distincts. Utilisez une conception commune de haut niveau qui permet d'instantanner tous les composants.
- Avant de commencer le projet, assurez-vous que votre environnement de simulation choisi supporte la simulation en langage mixte avec les deux langues. La plupart des simulateurs commerciaux le font, mais les outils gratuits ou universitaires peuvent avoir un support limité. Testez une petite conception en langage mixte au début du projet pour vérifier que le flux fonctionne de bout en bout.
- Plan de synthèse Si le dessin doit être synthétisé, limiter SystemVerilog aux constructions synthésisables (comme , , et types). De même, utiliser uniquement les VHDL synthésables (p. ex. ] avec une liste de sensibilité, ). Vérifier que l'outil de synthèse peut lire la liste de mots-clés en langage mixte — certains outils exigent que tous les fichiers source de conception soient compilés dans une bibliothèque unifiée unique.
- Maintenir une seule approche testbench. Il est généralement plus simple d'écrire l'ensemble testbench dans une langue (SystemVerilog est recommandé en raison de ses fonctionnalités de vérification avancées) et ensuite d'instituer les unités de conception en langage mixte à l'intérieur.
Tendances futures et perspectives communautaires
L'industrie de la conception du matériel continue d'évoluer. Les dernières révisions de VHDL (IEEE 1076‐2019) et de SystemVerilog (IEEE 1800‐2017) ont ajouté des fonctionnalités qui améliorent l'interopérabilité, comme le support VHDL=S pour les noms externes et la syntaxe de liaison améliorée de SystemVerilog=S. Entre-temps, des initiatives industrielles comme le Groupe de travail sur les langues mixtes d'Accellera travaillent sur la normalisation des interfaces et des formats de fichiers (p. ex. IP‐XACT) qui facilitent l'intégration des langues mixtes.
Pour plus de détails, consultez les normes officielles de l'IEEE : IEEE 1076‐2019 VHDL et IEEE 1800‐2017 SystemVerilog. De plus, de nombreux fournisseurs d'EDA fournissent des notes d'application sur la simulation en langage mixte, comme Siemens EDA[ et Synopsys.
Conclusion
Le choix entre VHDL et SystemVerilog n'est pas nécessairement une décision. La syntaxe stricte de frappe et de verbes de VHDL en fait un candidat fort pour les conceptions de sécurité critiques et de haute fiabilité, tandis que les fonctionnalités de vérification avancées de SystemVerilog et le style concis sont bien adaptés au développement moderne de SoC. En planifiant soigneusement l'interface, en tirant parti des capacités d'outils et en suivant les meilleures pratiques établies, les équipes d'ingénierie peuvent combiner avec succès les deux langues dans le même projet.