Ce répertoire contient les sources de GHDL, l'analyseur, compilateur, simulateur et synthétiseur (expérimental) open source pour VHDL, un langage de description de matériel (HDL). GHDL n'est pas un interpréteur : il vous permet d'analyser et d'élaborer des sources pour générer du code machine à partir de votre conception. L’exécution de programmes natifs est le seul moyen de simulation à grande vitesse.
Prise en charge complète des versions 1987, 1993, 2002 de la norme IEEE 1076 VHDL, et partielle pour les révisions 2008 et 2019.
Prise en charge partielle de PSL.
En utilisant un générateur de code (LLVM, GCC ou, x86_64/i386 uniquement, un générateur intégré), il est beaucoup plus rapide que n'importe quel simulateur interprété. Il peut gérer des conceptions très volumineuses, telles que leon3/grlib.
GHDL fonctionne sur GNU/Linux, Windows et macOS ; sur x86
, x86_64
, armv6/armv7/aarch32
, aarch64
et ppc64
. Vous pouvez télécharger librement des ressources nocturnes, utiliser des images OCI (alias conteneurs Docker/Podman) ou essayer de les créer sur votre propre machine (voir « Obtenir GHDL » ci-dessous).
Peut écrire des formes d'onde dans des fichiers GHW, VCD ou FST. Combiné avec un visualiseur de formes d'onde basé sur une interface graphique et un bon éditeur de texte, GHDL est un outil très puissant pour écrire, tester et simuler votre code.
La co-simulation avec des applications étrangères est prise en charge via Verilog Procedural Interface (VPI) et/ou VHPIDIRECT. Voir ghdl.github.io/ghdl-cosim.
Peut synthétiser des conceptions VHDL arbitrairement complexes dans une netlist VHDL 1993, qui peut être implicitement ou explicitement utilisée dans des cadres de synthèse open source ou fournisseur.
GHDL est un logiciel gratuit :
GHDL est conçu pour s'intégrer de manière transparente à plusieurs outils open source populaires, permettant aux utilisateurs de tirer parti de fonctionnalités supplémentaires pour les flux de travail de simulation et de synthèse.
L'une des intégrations clés concerne Yosys, un outil de synthèse open source de premier plan. Grâce au plugin ghdl-yosys, GHDL peut être utilisé comme frontal pour Yosys, permettant aux utilisateurs de synthétiser directement des conceptions VHDL. Cela permet de passer de la simulation à la synthèse sans quitter l'environnement GHDL, rationalisant ainsi le flux de conception.
GHDL s'intègre également à cocotb, un framework de co-simulation basé sur une coroutine qui permet de tester les conceptions VHDL via Python. Ceci est particulièrement utile pour écrire des bancs de test complexes en Python et interagir avec des simulations VHDL en temps réel.
Pour la vérification, GHDL prend en charge l'intégration avec des frameworks tels que OSVVM, UVVM et VUnit, offrant aux utilisateurs une suite complète d'outils pour vérifier les conceptions VHDL. Ces bibliothèques de vérification permettent des techniques de test avancées telles que la vérification aléatoire contrainte, la couverture fonctionnelle et les tests de régression automatisés.
Ensemble, ces intégrations tierces font de GHDL un outil complet de conception, de simulation, de vérification et de synthèse numériques, adapté aussi bien aux développeurs individuels qu'aux grandes équipes.
Packages prédéfinis :
Utilisation de Docker :
Pour ceux qui préfèrent la conteneurisation, GHDL est également disponible sous forme d'images Docker. Ceci est particulièrement utile si vous souhaitez éviter de gérer les dépendances manuellement ou si vous avez besoin d'un environnement cohérent sur différentes machines. Vous pouvez utiliser des conteneurs de ghdl/docker ou hdl/containers, qui offrent tous deux des environnements préconfigurés avec GHDL installé. L'exécution de GHDL dans un conteneur Docker garantit que votre configuration reste isolée de votre système hôte, ce qui facilite sa maintenance et sa réplication sur différentes plates-formes. Cette option est idéale pour les utilisateurs recherchant une installation simplifiée et sans tracas.
Construire GHDL à partir de la source :
Les utilisateurs avancés peuvent choisir de créer GHDL à partir des sources, permettant ainsi la personnalisation et l'accès à des fonctionnalités expérimentales. La construction à partir des sources peut également être utile pour les plates-formes ou les configurations non couvertes par les packages prédéfinis. Le guide Building GHDL fournit des instructions détaillées sur la façon de compiler GHDL, y compris la sélection de votre backend préféré (LLVM, GCC ou mcode). Ce processus donne aux utilisateurs un contrôle total sur leur configuration et leur permet d'adapter GHDL à leurs besoins spécifiques.
Notes spécifiques à la plateforme :
apt
, dnf
ou pacman
, selon la distribution. L'installation est généralement simple et les packages prédéfinis sont régulièrement mis à jour.GHDL offre plusieurs avantages qui en font un outil puissant pour la simulation et la synthèse VHDL. L'un des principaux avantages réside dans la génération de code natif, qui permet des temps de simulation plus rapides par rapport aux simulateurs interprétés. Cette amélioration des performances est particulièrement visible dans les conceptions vastes et complexes, où la vitesse de simulation peut être un facteur critique.
En plus de ses performances, GHDL est très polyvalent. Il prend en charge plusieurs révisions de la norme VHDL, notamment les versions 1987, 1993, 2002, 2008 et 2019. Cette large gamme de compatibilité rend GHDL adapté aux projets existants ainsi qu'aux conceptions de pointe. Que vous travailliez avec des normes VHDL plus anciennes ou avec les révisions les plus récentes, GHDL offre la flexibilité nécessaire pour toutes les gérer.
Un autre avantage important est le support multiplateforme de GHDL. Il fonctionne sur les principaux systèmes d'exploitation comme Linux, Windows et macOS et prend en charge diverses architectures telles que x86, x86_64, ARM et PPC64. Cela permet aux développeurs d'utiliser GHDL sur une variété de configurations matérielles, le rendant accessible à un large éventail d'utilisateurs.
L'intégration de GHDL avec des outils open source populaires tels que Yosys pour la synthèse et cocotb pour la vérification améliore encore son utilité. Ces intégrations permettent aux utilisateurs d'étendre les capacités de GHDL au-delà de la simulation, ce qui en fait une solution complète pour les workflows de conception, de vérification et de synthèse VHDL.
GHDL accueille les contributions de la communauté. Que vous souhaitiez améliorer la documentation, corriger des bugs ou ajouter de nouvelles fonctionnalités, il existe de nombreuses façons de vous impliquer. Les contributions sont un excellent moyen d’aider à améliorer l’outil et d’en savoir plus sur le fonctionnement interne de GHDL.
Voici comment vous pouvez commencer à contribuer :
Trouver un problème sur lequel travailler : consultez les problèmes ouverts sur le référentiel GitHub. Les problèmes sont souvent classés par difficulté ou par type (par exemple, « bon premier numéro » pour les débutants). Vous pouvez également proposer vos propres idées ou améliorations.
Forkez et clonez le référentiel : une fois que vous avez choisi un problème sur lequel travailler, dupliquez le référentiel GHDL sur votre propre compte GitHub. Clonez le référentiel forké sur votre ordinateur local pour apporter des modifications.
Créer une nouvelle branche : il est recommandé de créer une nouvelle branche pour chaque problème ou fonctionnalité sur laquelle vous travaillez. Cela permet de garder vos modifications isolées et permet aux responsables de réviser plus facilement votre travail.
Soumettre une pull request : Après avoir effectué vos modifications et les avoir validées dans votre branche, soumettez une pull request (PR) au référentiel principal GHDL. Assurez-vous d'inclure une description claire de ce que votre PR aborde et de tout contexte ou étape de test pertinent.
Pour des directives plus détaillées, reportez-vous à notre Guide de contribution (une fois créé), qui comprend les normes de codage, les instructions de test et les meilleures pratiques pour apporter des contributions.
L'outil CLI permet l'analyse, la compilation, la simulation et la synthèse (expérimentale) pour générer des netlists VHDL 1993. Il est écrit en Ada et C, et trois backends différents sont pris en charge, parfois nommés ghdl_mcode
, ghdl_gcc
et ghdl_llvm
. C'est le point d'entrée pour la plupart des utilisateurs.
[expérimental] ghdl-yosys-plugin est l'intégration de GHDL en tant que module de plugin frontend pour Yosys Open SYnthesis Suite, qui utilise la bibliothèque libghdl
(construite avec --enable-synth
).
ghdl-ls
(qui fait partie de pyGHDL, voir ci-dessous) implémente le Language Server Protocol (LSP) en Python. Les fonctionnalités d'analyse VHDL fournies par GHDL sont accessibles via libghdl
. Cela peut être intégré dans des éditeurs de texte ou IDES, tels que Vim, Emacs, Atom ou Visual Studio Code. Voir ghdl/ghdl-server-langue.
ghdl-ls
. libghdl
est une bibliothèque partagée qui comprend un sous-ensemble des fonctionnalités habituelles ainsi que certaines fonctionnalités destinées aux outils d'extension (c'est-à-dire pyGHDL
). Ceci est construit avec le GHDL standard et prend en charge le code non synthétisable et synthétisable. Néanmoins, cela ne s'adresse pas aux utilisateurs, mais aux outils construits sur le noyau. Lorsqu'elle est configurée avec --enable-synth
, cette bibliothèque partagée inclut également des fonctionnalités de synthèse.
pyGHDL est une interface Python pour libghdl
. Actuellement, il n'est utilisé que par ghdl-ls
; cependant, cela peut être utile pour les utilisateurs avancés qui souhaitent créer des utilitaires Python basés sur GHDL. Des travaux sont en cours pour lier libghdl à pyVHDLModel (voir pyGHDL.dom
).
ghdl_simul
, qui prend en charge la simulation interprétée, est disponible pour des raisons historiques et uniquement pour le développement/débogage. Elle est très lente par rapport à la simulation compilée « normale » et toutes les fonctionnalités ne sont pas prises en charge.