Langage de description du matériel - Hardware description language

En génie informatique , un langage de description de matériel ( HDL ) est un langage informatique spécialisé utilisé pour décrire la structure et le comportement des circuits électroniques et, le plus souvent, des circuits logiques numériques .

Un langage de description de matériel permet une description précise et formelle d'un circuit électronique qui permet l'analyse et la simulation automatisées d'un circuit électronique. Il permet également la synthèse d'une description HDL dans une netlist (une spécification des composants électroniques physiques et de la manière dont ils sont connectés entre eux), qui peut ensuite être placée et acheminée pour produire l' ensemble de masques utilisés pour créer un circuit intégré .

Un langage de description de matériel ressemble beaucoup à un langage de programmation tel que C ou ALGOL ; c'est une description textuelle composée d'expressions, d'instructions et de structures de contrôle. Une différence importante entre la plupart des langages de programmation et les HDL est que les HDL incluent explicitement la notion de temps.

Les HDL font partie intégrante des systèmes d'automatisation de la conception électronique (EDA), en particulier pour les circuits complexes, tels que les circuits intégrés spécifiques à l' application , les microprocesseurs et les dispositifs logiques programmables .

Motivation

En raison de la complexité croissante des circuits électroniques numériques depuis les années 1970 (voir la loi de Moore ), les concepteurs de circuits avaient besoin que les descriptions de logique numérique soient effectuées à un niveau élevé sans être liées à une technologie électronique spécifique, telle que ECL , TTL ou CMOS . Les HDL ont été créés pour implémenter l' abstraction au niveau du transfert de registre , un modèle du flux de données et de la synchronisation d'un circuit.

Il existe deux principaux langages de description de matériel : VHDL et Verilog . On y trouve différents types de description : « dataflow, comportemental et structurel ». Exemple de flux de données de VHDL :

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY not1 IS
    PORT(
        a : IN  STD_LOGIC;
        b : OUT STD_LOGIC;
    );
END not1;

ARCHITECTURE behavioral OF not1 IS
BEGIN
    b <= NOT a;
END behavioral;

Structure des HDL

Les HDL sont des expressions textuelles standard de la structure des systèmes électroniques et de leur comportement dans le temps. Comme les langages de programmation concurrents , la syntaxe et la sémantique HDL incluent des notations explicites pour exprimer la concurrence . Cependant, contrairement à la plupart des langages de programmation de logiciels , les HDL incluent également une notion explicite de temps, qui est un attribut principal du matériel. Les langages dont la seule caractéristique est d'exprimer la connectivité des circuits entre une hiérarchie de blocs sont correctement classés comme langages de netlist utilisés dans la conception électrique assistée par ordinateur . HDL peut être utilisé pour exprimer des conceptions dans des architectures structurelles, comportementales ou de niveau de transfert de registre pour la même fonctionnalité de circuit ; dans les deux derniers cas, le synthétiseur décide de l'architecture et de la disposition de la porte logique.

Les HDL sont utilisés pour écrire des spécifications exécutables pour le matériel. Un programme conçu pour implémenter la sémantique sous-jacente des instructions du langage et simuler la progression du temps offre au concepteur de matériel la possibilité de modéliser un élément matériel avant qu'il ne soit physiquement créé. C'est cette exécutabilité qui donne aux HDL l'illusion d'être des langages de programmation , alors qu'ils sont plus précisément classés en langages de spécification ou en langages de modélisation . Des simulateurs capables de prendre en charge la modélisation à événements discrets (numérique) et en temps continu (analogique) existent, et des HDL ciblés pour chacun sont disponibles.

Comparaison avec les langages de flux de contrôle

Il est certainement possible de représenter la sémantique matérielle à l'aide de langages de programmation traditionnels tels que C++ , qui opèrent sur la sémantique du flux de contrôle par opposition au flux de données , bien que pour fonctionner en tant que tel, les programmes doivent être complétés par des bibliothèques de classes étendues et lourdes . En général, cependant, les langages de programmation de logiciels n'incluent aucune capacité pour exprimer explicitement le temps et ne peuvent donc pas fonctionner comme langages de description de matériel. Avant l'introduction de System Verilog en 2002, l' intégration de C++ avec un simulateur logique était l'une des rares façons d'utiliser la programmation orientée objet dans la vérification matérielle. System Verilog est le premier HDL majeur à offrir l'orientation objet et la récupération de place.

En utilisant le sous-ensemble approprié du langage de description matérielle, un programme appelé synthétiseur, ou outil de synthèse logique , peut déduire des opérations logiques matérielles à partir des instructions du langage et produire une netlist équivalente de primitives matérielles génériques pour mettre en œuvre le comportement spécifié. Les synthétiseurs ignorent généralement l'expression de toute construction temporelle dans le texte. Les synthétiseurs logiques numériques, par exemple, utilisent généralement des fronts d' horloge comme moyen de chronométrer le circuit, en ignorant toute construction de synchronisation. La possibilité d'avoir un sous-ensemble synthétisable du langage ne constitue pas en soi un langage de description matérielle.

Histoire

Les premiers langages de description de matériel sont apparus à la fin des années 1960, ressemblant à des langages plus traditionnels. Le premier qui a eu un effet durable a été décrit en 1971 dans le texte Computer Structures de C. Gordon Bell et Allen Newell . Ce texte a introduit le concept de niveau de transfert de registre , d'abord utilisé dans le langage ISP pour décrire le comportement du PDP-8 de Digital Equipment Corporation (DEC) .

Le langage s'est répandu avec l'introduction des modules de niveau RT (RTM) PDP-16 de DEC et un livre décrivant leur utilisation. Au moins deux implémentations du langage ISP de base (ISPL et ISPS) ont suivi. ISPS était bien adapté pour décrire les relations entre les entrées et les sorties de la conception et a été rapidement adopté par les équipes commerciales de DEC, ainsi que par un certain nombre d'équipes de recherche aux États-Unis et parmi ses alliés de l'OTAN.

Les produits RTM n'ont jamais décollé commercialement et DEC a cessé de les commercialiser au milieu des années 1980, alors que de nouvelles techniques et en particulier l' intégration à très grande échelle (VLSI) sont devenues plus populaires.

Des travaux distincts effectués vers 1979 à l' Université de Kaiserslautern ont produit un langage appelé KARL ("KAiserslautern Register Transfer Language"), qui comprenait des fonctionnalités de langage de calcul de conception prenant en charge la planification de l'étage des puces VLSI et la conception matérielle structurée. Ce travail a également été à la base du langage frère graphique interactif de KARL, ABL, dont le nom était un sigle pour « A Block diagram Language ». ABL a été mis en œuvre au début des années 1980 par le Centro Studi e Laboratori Telecomunicazioni ( CSELT ) à Turin, en Italie, produisant l'éditeur de conception graphique VLSI ABLED. Au milieu des années 1980, un cadre de conception VLSI a été mis en œuvre autour de KARL et ABL par un consortium international financé par la Commission de l'Union européenne.

À la fin des années 1970, la conception utilisant des dispositifs logiques programmables (PLD) est devenue populaire, bien que ces conceptions se soient principalement limitées à la conception de machines à états finis . Les travaux de Data General en 1980 ont utilisé ces mêmes appareils pour concevoir le Data General Eclipse MV/8000 , et le besoin commercial a commencé à croître pour un langage qui pourrait bien s'y adapter. En 1983, Data I/O a introduit ABEL pour répondre à ce besoin.

En 1985, alors que la conception passait au VLSI, Gateway Design Automation a introduit Verilog et Intermetrics a publié la première version complète du VHSIC Hardware Description Language (VHDL). VHDL a été développé à la demande du programme VHSIC du Département de la Défense des États-Unis et était basé sur le langage de programmation Ada , ainsi que sur l'expérience acquise avec le développement antérieur d'ISPS. Initialement, Verilog et VHDL ont été utilisés pour documenter et simuler des conceptions de circuits déjà capturées et décrites sous une autre forme (comme des fichiers schématiques ). La simulation HDL a permis aux ingénieurs de travailler à un niveau d'abstraction plus élevé que la simulation au niveau schématique, et a ainsi augmenté la capacité de conception de centaines de transistors à des milliers. En 1986, avec le soutien du département américain de la Défense, VHDL a été sponsorisé en tant que norme IEEE (IEEE Std 1076) et la première version normalisée IEEE de VHDL, IEEE Std 1076-1987, a été approuvée en décembre 1987. Cadence Design Systems a ensuite acquis Gateway Design Automation pour les droits de Verilog-XL, le simulateur HDL qui deviendrait la norme de facto des simulateurs Verilog pour la prochaine décennie.

L'introduction de la synthèse logique pour les HDL a poussé les HDL de l'arrière-plan au premier plan de la conception numérique. Les outils de synthèse ont compilé les fichiers source HDL (écrits dans un format contraint appelé RTL) dans une description de netlist manufacturable en termes de portes et de transistors . L'écriture de fichiers RTL synthétisables a nécessité de la pratique et de la discipline de la part du concepteur ; par rapport à une disposition schématique traditionnelle, les listes d'interconnexions RTL synthétisées étaient presque toujours plus grandes et moins performantes. Une conception de circuit réalisée par un ingénieur qualifié, utilisant une capture schématique/mise en page manuelle à forte intensité de main-d'œuvre, surpasserait presque toujours son équivalent logiquement synthétisé, mais l'avantage de productivité détenu par la synthèse a rapidement déplacé la capture schématique numérique exactement dans les domaines qui étaient problématiques pour Synthèse RTL : circuits extrêmement rapides, basse consommation ou asynchrones.

En quelques années, VHDL et Verilog sont devenus les HDL dominants dans l'industrie électronique, tandis que les HDL plus anciens et moins performants ont progressivement disparu. Cependant, VHDL et Verilog partagent bon nombre des mêmes limitations, telles que le fait de ne pas être adaptés à la simulation de circuits analogiques ou à signaux mixtes . Les HDL spécialisés (tels que Confluence) ont été introduits dans le but explicite de corriger les limitations spécifiques de Verilog et de VHDL, bien qu'aucun n'ait jamais été destiné à les remplacer.

Au fil des ans, beaucoup d'efforts ont été investis dans l'amélioration des HDL. La dernière itération de Verilog, officiellement connue sous le nom de IEEE 1800-2005 SystemVerilog, introduit de nombreuses nouvelles fonctionnalités (classes, variables aléatoires et propriétés/assertions) pour répondre au besoin croissant d'une meilleure randomisation des bancs de test , d'une hiérarchie de conception et d'une réutilisation. Une future révision de VHDL est également en cours de développement et devrait correspondre aux améliorations de SystemVerilog.

Conception utilisant HDL

En raison des gains d'efficacité réalisés à l'aide du HDL, la majorité de la conception de circuits numériques modernes tourne autour de celui-ci. La plupart des conceptions commencent par un ensemble d'exigences ou un schéma architectural de haut niveau. Les structures de contrôle et de décision sont souvent prototypées dans des applications d' organigrammes ou saisies dans un éditeur de diagramme d'état . Le processus d'écriture de la description HDL dépend fortement de la nature du circuit et de la préférence du concepteur pour le style de codage. Le HDL est simplement le « langage de capture », commençant souvent par une description algorithmique de haut niveau telle qu'un modèle mathématique C++. Les concepteurs utilisent souvent des langages de script tels que Perl pour générer automatiquement des structures de circuits répétitives dans le langage HDL. Des éditeurs de texte spéciaux offrent des fonctionnalités d'indentation automatique, de coloration dépendante de la syntaxe et d' expansion basée sur des macros de la déclaration d'entité/d'architecture/de signal.

Le code HDL subit ensuite une revue de code, ou audit. En préparation de la synthèse, la description HDL est soumise à un ensemble de vérificateurs automatisés. Les vérificateurs signalent les écarts par rapport aux directives de code standardisées, identifient les constructions de code ambiguës potentielles avant qu'elles ne provoquent une mauvaise interprétation et recherchent les erreurs de codage logique courantes, telles que les ports flottants ou les sorties court - circuitées . Ce processus aide à résoudre les erreurs avant que le code ne soit synthétisé.

Dans le jargon de l'industrie, la conception HDL se termine généralement au stade de la synthèse. Une fois que l'outil de synthèse a mappé la description HDL dans une netlist de porte, la netlist est transmise à l'étape back-end. Selon la technologie physique ( FPGA , ASIC réseau de portes , ASIC cellule standard ), peut ou HDLs ne joue pas un rôle important dans le flux principal . En général, à mesure que le flux de conception progresse vers une forme physiquement réalisable, la base de données de conception devient progressivement plus chargée d'informations spécifiques à la technologie, qui ne peuvent pas être stockées dans une description HDL générique. Enfin, un circuit intégré est fabriqué ou programmé pour être utilisé.

Simulation et débogage de code HDL

La capacité de simuler des programmes HDL est essentielle à la conception HDL. La simulation permet à une description HDL d'une conception (appelée modèle) de passer la vérification de conception , une étape importante qui valide la fonction prévue de la conception (spécification) par rapport à l'implémentation du code dans la description HDL. Il permet également une exploration architecturale. L'ingénieur peut expérimenter des choix de conception en écrivant plusieurs variantes d'une conception de base, puis en comparant leur comportement en simulation. Ainsi, la simulation est essentielle pour une conception HDL réussie.

Pour simuler un modèle HDL, un ingénieur écrit un environnement de simulation de haut niveau (appelé banc de test ). Au minimum, un banc d'essai contient une instanciation du modèle (appelée dispositif sous test ou DUT), des déclarations de broche/signal pour les E/S du modèle et une forme d'onde d'horloge. Le code du banc de test est piloté par des événements : l'ingénieur écrit des instructions HDL pour implémenter le signal de réinitialisation (généré par le banc de test), pour modéliser les transactions d'interface (telles qu'une lecture/écriture sur le bus hôte) et pour surveiller la sortie du DUT. Un simulateur HDL - le programme qui exécute le banc d'essai - maintient l'horloge du simulateur, qui est la référence principale pour tous les événements de la simulation du banc d'essai. Les événements se produisent uniquement aux instants dictés par le banc d'essai HDL (comme une bascule de réinitialisation codée dans le banc d'essai), ou en réaction (par le modèle) à des événements de stimulus et de déclenchement. Les simulateurs HDL modernes ont des interfaces utilisateur graphiques complètes, avec une suite d'outils de débogage. Ceux-ci permettent à l'utilisateur d'arrêter et de redémarrer la simulation à tout moment, d'insérer des points d'arrêt du simulateur (indépendants du code HDL) et de surveiller ou de modifier n'importe quel élément de la hiérarchie du modèle HDL. Les simulateurs modernes peuvent également lier l'environnement HDL aux bibliothèques compilées par l'utilisateur, via une interface PLI / VHPI définie . La liaison dépend du système ( x86 , SPARC etc. sous Windows / Linux / Solaris ), car le simulateur HDL et les bibliothèques utilisateur sont compilés et liés en dehors de l'environnement HDL.

La vérification de la conception est souvent la partie la plus longue du processus de conception, en raison de la déconnexion entre la spécification fonctionnelle d' un appareil , l'interprétation de la spécification par le concepteur et l'imprécision du langage HDL. La majorité du cycle de test/débogage initial est effectuée dans l' environnement du simulateur HDL , car la première étape de la conception est sujette à des changements de circuit fréquents et majeurs. Une description HDL peut également être prototypée et testée dans le matériel — des dispositifs logiques programmables sont souvent utilisés à cette fin. Le prototypage matériel est comparativement plus coûteux que la simulation HDL, mais offre une vision réelle de la conception. Le prototypage est le meilleur moyen de vérifier l'interfaçage avec d'autres périphériques matériels et prototypes matériels. Même ceux fonctionnant sur des FPGA lents offrent des temps de simulation beaucoup plus courts que la simulation HDL pure.

Vérification de conception avec des HDL

Historiquement, la vérification de la conception était une boucle laborieuse et répétitive d'écriture et d'exécution de scénarios de test de simulation sur la conception testée. Au fur et à mesure que les conceptions de puces sont devenues plus grandes et plus complexes, la tâche de vérification de la conception s'est développée au point qu'elle domine désormais le calendrier d'une équipe de conception. À la recherche de moyens d'améliorer la productivité de la conception, l' industrie de l' automatisation de la conception électronique a développé le langage de spécification de propriété .

En termes de vérification formelle , une propriété est une déclaration factuelle sur le comportement attendu ou supposé d'un autre objet. Idéalement, pour une description HDL donnée, une ou plusieurs propriétés peuvent être prouvées vraies ou fausses à l'aide de méthodes mathématiques formelles. En termes pratiques, de nombreuses propriétés ne peuvent pas être prouvées car elles occupent un espace de solutions illimité . Cependant, s'il fournit un ensemble d'hypothèses ou de contraintes de fonctionnement, un vérificateur de propriétés peut prouver (ou réfuter) certaines propriétés en rétrécissant l'espace de solution.

Les assertions ne modélisent pas l'activité du circuit, mais capturent et documentent l'intention du concepteur dans le code HDL. Dans un environnement de simulation, le simulateur évalue toutes les assertions spécifiées, signalant l'emplacement et la gravité de toute violation. Dans un environnement de synthèse, l'outil de synthèse fonctionne généralement avec la politique d'arrêter la synthèse en cas de violation. La vérification basée sur les assertions en est encore à ses balbutiements, mais devrait devenir une partie intégrante de l'ensemble d'outils de conception HDL.

HDL et langages de programmation

Un HDL est grossièrement similaire à un langage de programmation logiciel , mais il existe des différences majeures. La plupart des langages de programmation sont intrinsèquement procéduraux (à thread unique), avec un support syntaxique et sémantique limité pour gérer la concurrence . Les HDL, en revanche, ressemblent aux langages de programmation concurrents dans leur capacité à modéliser plusieurs processus parallèles (tels que les bascules et les additionneurs ) qui s'exécutent automatiquement indépendamment les uns des autres. Toute modification de l'entrée du processus déclenche automatiquement une mise à jour dans la pile de processus du simulateur.

Les langages de programmation et les HDL sont traités par un compilateur (souvent appelé synthétiseur dans le cas HDL), mais avec des objectifs différents. Pour les HDL, "compiler" fait référence à la synthèse logique ; le processus de transformation de la liste de codes HDL en une netlist de portes physiquement réalisable . La sortie de la liste d'interconnexions peut prendre l'une des nombreuses formes suivantes : une liste d'interconnexions de « simulation » avec des informations sur le délai de porte, une liste d'interconnexions de « transfert » pour le placement et le routage post-synthèse sur une puce semi-conductrice, ou un format générique d' échange de conception électronique (EDIF ) (pour une conversion ultérieure en fichier au format JEDEC ).

D'autre part, un compilateur logiciel convertit la liste de code source en un code objet spécifique au microprocesseur pour exécution sur le microprocesseur cible. À mesure que les HDL et les langages de programmation empruntent des concepts et des fonctionnalités les uns aux autres, la frontière entre eux devient de moins en moins distincte. Cependant, les HDL purs ne conviennent pas au développement de logiciels d'application à usage général , tout comme les langages de programmation à usage général ne sont pas souhaitables pour la modélisation de matériel.

Pourtant, à mesure que les systèmes électroniques deviennent de plus en plus complexes et que les systèmes reconfigurables deviennent de plus en plus courants, le secteur souhaite de plus en plus un langage unique capable d'effectuer certaines tâches de conception matérielle et de programmation logicielle. SystemC en est un exemple : le matériel du système embarqué peut être modélisé sous forme de blocs architecturaux non détaillés ( boîtes noires avec des entrées de signal modélisées et des pilotes de sortie). L'application cible est écrite en C ou C++ et compilée nativement pour le système de développement hôte ; par opposition au ciblage du processeur intégré, qui nécessite une simulation d'hôte du processeur intégré ou d'un processeur émulé.

Le haut niveau d'abstraction des modèles SystemC est bien adapté à l' exploration précoce de l' architecture , car les modifications architecturales peuvent être facilement évaluées sans se soucier des problèmes de mise en œuvre au niveau du signal. Cependant, le modèle de thread utilisé dans SystemC repose sur la mémoire partagée , ce qui fait que le langage ne gère pas bien l'exécution parallèle ou les modèles de bas niveau.

Synthèse de haut niveau

Dans leur niveau d'abstraction, les HDL ont été comparés à des langages d'assemblage . Il existe des tentatives pour augmenter le niveau d'abstraction de la conception matérielle afin de réduire la complexité de la programmation dans les HDL, en créant un sous-domaine appelé synthèse de haut niveau .

Des entreprises telles que Cadence , Synopsys et Agility Design Solutions promeuvent SystemC comme un moyen de combiner des langages de haut niveau avec des modèles de concurrence pour permettre des cycles de conception plus rapides pour les FPGA qu'avec les HDL traditionnels. Les approches basées sur le C ou le C++ standard (avec des bibliothèques ou d'autres extensions permettant la programmation parallèle) se trouvent dans les outils Catapult C de Mentor Graphics , et les outils Impulse C d'Impulse Accelerated Technologies.

Une initiative similaire d'Intel est l'utilisation de Data Parallel C++, lié à SYCL , comme langage de synthèse de haut niveau.

La suite de conception CoreFire d' Annapolis Micro Systems , Inc. et le FPGA LabVIEW de National Instruments fournissent une approche de flux de données graphique pour l'entrée de conception de haut niveau et des langages tels que SystemVerilog , SystemVHDL et Handel-C cherchent à atteindre le même objectif, mais visent à rendre les ingénieurs matériels existants plus productifs, plutôt que de rendre les FPGA plus accessibles aux ingénieurs logiciels existants .

Il est également possible de concevoir des modules matériels à l'aide de MATLAB et Simulink à l'aide de l' outil MathWorks HDL Coder ou DSP Builder pour les FPGA Intel ou Xilinx System Generator (XSG) de Xilinx .

Exemples de HDL

HDL pour la conception de circuits analogiques

Nom La description
HDL-A Un HDL analogique propriétaire
SpectreHDL Un HDL analogique propriétaire de Cadence Design Systems pour son simulateur de circuit Spectre
Verilog-AMS (Verilog pour signaux analogiques et mixtes) Une extension standard Accellera de IEEE Std 1364 Verilog pour la simulation de signaux analogiques et mixtes
VHDL-AMS (VHDL avec extension analogique/signal mixte) Une extension standard IEEE (IEEE Std 1076.1) de VHDL pour la simulation de signaux analogiques et mixtes

HDL pour la conception de circuits numériques

Les deux variétés HDL les plus largement utilisées et les mieux prises en charge dans l'industrie sont Verilog et VHDL .

Nom La description
Langage d'expression booléenne avancé (ABEL)
Langage de description matérielle Altera (AHDL) un langage propriétaire d' Altera
AHPL Un langage de programmation matérielle
Bluespec HDL de haut niveau basé sur Haskell (non intégré DSL )
Bluespec SystemVerilog (BSV) basé sur Bluespec, avec une syntaxe similaire à Verilog HDL, par Bluespec, Inc.
C-à-Verilog Convertisseur de C en Verilog
Chisel (Construire du matériel dans un langage Scala Embedded) basé sur Scala ( DSL intégré )
Clash Clash Un langage de description de matériel moderne et fonctionnel Clash est un langage de description de matériel fonctionnel qui emprunte à la fois sa syntaxe et sa sémantique au langage de programmation fonctionnel Haskell
COLAMO (Langage Orienté Commun pour l'Architecture de Multi-Objets) un langage propriétaire de « Supercomputers and Neurocomputers Research Center » Co Ltd.
Confluence un HDL fonctionnel ; n'est plus en production
CoWareC un HDL basé sur C par CoWare . Maintenant abandonné au profit de SystemC
CUPL (Compilateur pour la logique programmable universelle) un langage propriétaire de Logical Devices, Inc.
ELLA n'est plus d'usage courant
ESys.net Framework .NET écrit en C#
Haendel-C un langage de conception de type C
Hardcaml basé sur OCaml (DSL intégré). Essayez-le en ligne .
HHDL basé sur Haskell (DSL intégré).
Hardware Join Java (HJJ) basé sur Join Java
HML (Matériel ML) basé sur la norme ML
Hydre basé sur Haskell
Impulsion C un autre HDL de type C
FAI HDL d'origine de CMU, n'est plus d'usage courant
ParC (C++ parallèle) kusu étendu avec le threading et la communication de style HDL pour la programmation en parallèle des tâches
JHDL basé sur Java
KARL KAiserslautern Register Language (chapitre in), un langage descriptif matériel pascal, qui n'est plus d'usage courant.
Lave basé sur Haskell (DSL intégré).
Lola un langage simple utilisé pour l'enseignement
M Un HDL de Mentor Graphics
Mon HDL basé sur Python ( DSL intégré )
nMigen basé sur Python
PALASME pour les périphériques programmables Array Logic (PAL)
PipelineC Un langage de description de matériel de type C ajoutant un pipeline automatique de type synthèse de haut niveau en tant que fonction de construction/compilation du langage.
PyMTL basé sur Python, de l'Université Cornell
PyRTL basé sur Python, de l'Université de Californie, Santa Barbara
ROCCC (Riverside Optimizing Compiling for Configurable Computing) Outil C vers HDL gratuit et open-source
RHDL basé sur le langage de programmation Ruby
ROHD (cadre de développement matériel rapide et ouvert) un cadre pour la conception et la vérification du matériel, écrit en Dart
Ruby (langage de description matérielle)
SystèmeC une classe standardisée de bibliothèques C++ pour la modélisation comportementale et transactionnelle de haut niveau du matériel numérique à un haut niveau d'abstraction, c'est-à-dire au niveau du système
SystemVerilog un sur-ensemble de Verilog, avec des améliorations pour traiter la conception et la vérification au niveau du système
SpinalHDL Basé sur Scala (DSL intégré)
SystèmeTCL SDL basé sur Tcl.
THDL++ (Modèle HDL inspiré du C++) Une extension de VHDL avec héritage, modèles avancés et classes de stratégie
TL-Verilog (Verilog au niveau de la transaction) Une extension de Verilog/SystemVerilog avec des constructions pour les pipelines et les transactions .
Verilog L'un des HDL les plus largement utilisés et les mieux pris en charge
VHDL ( VHSIC HDL) L'un des HDL les plus largement utilisés et les mieux pris en charge

HDL pour la conception de circuits imprimés

Plusieurs projets existent pour définir la connectivité des cartes de circuits imprimés à l' aide de méthodes de saisie textuelle basées sur le langage.

Nom La description
PHDL (PCB HDL) Un HDL gratuit et open source pour définir la connectivité des circuits imprimés
EDAsolver Un HDL pour résoudre des conceptions schématiques basées sur des contraintes
SKiDL Module python open source pour concevoir des circuits électroniques

Voir également

Les références

Liens externes