Dieses Verzeichnis enthält die Quellen von GHDL, dem Open-Source-Analysator, Compiler, Simulator und (experimentellen) Synthesizer für VHDL, einer Hardwarebeschreibungssprache (HDL). GHDL ist kein Interpreter: Es ermöglicht Ihnen, Quellen für die Generierung von Maschinencode aus Ihrem Design zu analysieren und auszuarbeiten. Die native Programmausführung ist die einzige Möglichkeit für eine Hochgeschwindigkeitssimulation.
Vollständige Unterstützung für die Versionen 1987, 1993 und 2002 des IEEE 1076 VHDL-Standards und teilweise für die Revisionen 2008 und 2019.
Teilweise Unterstützung von PSL.
Durch die Verwendung eines Codegenerators (LLVM, GCC oder, nur x86_64/i386, eines integrierten) ist er viel schneller als jeder interpretierte Simulator. Es kann sehr große Designs wie leon3/grlib verarbeiten.
GHDL läuft unter GNU/Linux, Windows und macOS; auf x86
, x86_64
, armv6/armv7/aarch32
, aarch64
und ppc64
. Sie können Nightly-Assets kostenlos herunterladen, OCI-Images (auch Docker-/Podman-Container genannt) verwenden oder versuchen, es auf Ihrem eigenen Computer zu erstellen (siehe „GHDL erhalten“ unten).
Kann Wellenformen in GHW-, VCD- oder FST-Dateien schreiben. In Kombination mit einem GUI-basierten Wellenform-Viewer und einem guten Texteditor ist GHDL ein sehr leistungsfähiges Werkzeug zum Schreiben, Testen und Simulieren Ihres Codes.
Die Co-Simulation mit Fremdanwendungen wird durch Verilog Procedural Interface (VPI) und/oder VHPIDIRECT unterstützt. Siehe ghdl.github.io/ghdl-cosim.
Kann beliebig komplexe VHDL-Designs zu einer VHDL 1993-Netzliste synthetisieren, die implizit oder explizit in Open-Source- oder Anbieter-Synthese-Frameworks verwendet werden kann.
GHDL ist freie Software:
GHDL ist so konzipiert, dass es sich nahtlos in mehrere gängige Open-Source-Tools integrieren lässt, sodass Benutzer zusätzliche Funktionen sowohl für Simulations- als auch für Synthese-Workflows nutzen können.
Eine der wichtigsten Integrationen ist mit Yosys, einem führenden Open-Source-Synthesetool. Mit dem ghdl-yosys-plugin kann GHDL als Frontend für Yosys verwendet werden, sodass Benutzer VHDL-Designs direkt synthetisieren können. Dies ermöglicht den Übergang von der Simulation zur Synthese, ohne die GHDL-Umgebung zu verlassen, und optimiert so den Designablauf.
GHDL lässt sich auch in cocotb integrieren, ein Coroutine-basiertes Co-Simulations-Framework, das Python-gesteuerte Tests von VHDL-Designs ermöglicht. Dies ist besonders nützlich, um komplexe Testbenches in Python zu schreiben und mit VHDL-Simulationen in Echtzeit zu interagieren.
Zur Verifizierung unterstützt GHDL die Integration mit Frameworks wie OSVVM, UVVM und VUnit und stellt Benutzern eine vollständige Suite von Tools zur Verifizierung von VHDL-Designs zur Verfügung. Diese Verifizierungsbibliotheken ermöglichen erweiterte Testtechniken wie eingeschränkte Zufallsverifizierung, funktionale Abdeckung und automatisierte Regressionstests.
Zusammengenommen machen diese Integrationen von Drittanbietern GHDL zu einem umfassenden Tool für digitales Design, Simulation, Verifizierung und Synthese, das sowohl für einzelne Entwickler als auch für große Teams geeignet ist.
Vorgefertigte Pakete:
Mit Docker :
Für diejenigen, die Containerisierung bevorzugen, ist GHDL auch als Docker-Images verfügbar. Dies ist besonders nützlich, wenn Sie die manuelle Verwaltung von Abhängigkeiten vermeiden möchten oder eine konsistente Umgebung auf verschiedenen Computern benötigen. Sie können Container von ghdl/docker oder hdl/containers verwenden, die beide vorkonfigurierte Umgebungen mit installiertem GHDL bieten. Durch die Ausführung von GHDL in einem Docker-Container wird sichergestellt, dass Ihr Setup von Ihrem Hostsystem isoliert bleibt, was die Wartung und Replikation auf verschiedenen Plattformen erleichtert. Diese Option ist ideal für Benutzer, die eine optimierte, problemlose Installation wünschen.
Erstellen von GHDL aus der Quelle :
Fortgeschrittene Benutzer können GHDL aus dem Quellcode erstellen und so Anpassungen vornehmen und auf experimentelle Funktionen zugreifen. Das Erstellen aus dem Quellcode kann auch für Plattformen oder Konfigurationen nützlich sein, die nicht durch vorgefertigte Pakete abgedeckt werden. Der Leitfaden „Building GHDL“ enthält detaillierte Anweisungen zum Kompilieren von GHDL, einschließlich der Auswahl Ihres bevorzugten Backends (LLVM, GCC oder Mcode). Dieser Prozess gibt Benutzern die volle Kontrolle über ihr Setup und ermöglicht es ihnen, GHDL an ihre spezifischen Bedürfnisse anzupassen.
Plattformspezifische Hinweise :
apt
, dnf
oder pacman
installiert werden. Die Installation ist in der Regel unkompliziert und vorgefertigte Pakete werden regelmäßig aktualisiert.GHDL bietet mehrere Vorteile, die es zu einem leistungsstarken Werkzeug für die VHDL-Simulation und -Synthese machen. Einer der Hauptvorteile ist die native Codegenerierung, die im Vergleich zu interpretierten Simulatoren schnellere Simulationszeiten ermöglicht. Dieser Leistungsschub macht sich besonders bei großen und komplexen Designs bemerkbar, bei denen die Simulationsgeschwindigkeit ein entscheidender Faktor sein kann.
Neben der Leistung ist GHDL äußerst vielseitig. Es unterstützt mehrere Revisionen des VHDL-Standards, einschließlich der Versionen 1987, 1993, 2002, 2008 und 2019. Aufgrund dieser breiten Kompatibilität eignet sich GHDL sowohl für ältere Projekte als auch für hochmoderne Designs. Unabhängig davon, ob Sie mit älteren VHDL-Standards oder den neuesten Revisionen arbeiten, bietet GHDL die Flexibilität, sie alle zu verarbeiten.
Ein weiterer wichtiger Vorteil ist die plattformübergreifende Unterstützung von GHDL. Es läuft auf gängigen Betriebssystemen wie Linux, Windows und macOS und unterstützt verschiedene Architekturen wie x86, x86_64, ARM und PPC64. Dadurch können Entwickler GHDL auf einer Vielzahl von Hardwarekonfigurationen verwenden und es so einem breiten Benutzerkreis zugänglich machen.
Die Integration von GHDL in beliebte Open-Source-Tools wie Yosys für die Synthese und Cocotb für die Verifizierung steigert seinen Nutzen zusätzlich. Diese Integrationen ermöglichen es Benutzern, die Funktionen von GHDL über die Simulation hinaus zu erweitern und es zu einer umfassenden Lösung für VHDL-Design-, Verifizierungs- und Synthese-Workflows zu machen.
GHDL freut sich über Beiträge aus der Community. Ganz gleich, ob Sie daran interessiert sind, die Dokumentation zu verbessern, Fehler zu beheben oder neue Funktionen hinzuzufügen, es gibt viele Möglichkeiten, sich zu engagieren. Beiträge sind eine großartige Möglichkeit, das Tool zu verbessern und mehr über die interne Funktionsweise von GHDL zu erfahren.
So können Sie anfangen, einen Beitrag zu leisten:
Finden Sie ein Problem, an dem Sie arbeiten können : Schauen Sie sich die offenen Probleme im GitHub-Repository an. Aufgaben werden häufig nach Schwierigkeitsgrad oder Typ gekennzeichnet (z. B. „gute erste Ausgabe“ für Anfänger). Sie können auch eigene Ideen oder Erweiterungen vorschlagen.
Verzweigen und klonen Sie das Repository : Sobald Sie ein Problem ausgewählt haben, an dem Sie arbeiten möchten, verzweigen Sie das GHDL-Repository in Ihr eigenes GitHub-Konto. Klonen Sie das gespaltene Repository auf Ihren lokalen Computer, um Änderungen vorzunehmen.
Erstellen Sie einen neuen Zweig : Es empfiehlt sich, für jedes Problem oder jede Funktion, an der Sie arbeiten, einen neuen Zweig zu erstellen. Dadurch bleiben Ihre Änderungen isoliert und die Betreuer können Ihre Arbeit leichter überprüfen.
Senden Sie eine Pull-Anfrage : Nachdem Sie Ihre Änderungen vorgenommen und an Ihren Zweig übergeben haben, senden Sie eine Pull-Anfrage (PR) an das Haupt-GHDL-Repository. Stellen Sie sicher, dass Sie eine klare Beschreibung der Themen Ihrer PR sowie alle relevanten Kontext- oder Testschritte beifügen.
Ausführlichere Richtlinien finden Sie in unserem Beitragsleitfaden (sofern erstellt), der Codierungsstandards, Testanweisungen und Best Practices für die Bereitstellung von Beiträgen enthält.
Das CLI-Tool ermöglicht Analyse, Kompilierung, Simulation und (experimentelle) Synthese zur Generierung von VHDL 1993-Netzlisten. Es ist in Ada und C geschrieben und es werden drei verschiedene Backends unterstützt, die manchmal ghdl_mcode
, ghdl_gcc
und ghdl_llvm
genannt werden. Dies ist der Einstiegspunkt für die meisten Benutzer.
[experimentell] ghdl-yosys-plugin ist die Integration von GHDL als Frontend-Plugin-Modul für Yosys Open SYnthesis Suite, das die libghdl
-Bibliothek verwendet (erstellt mit --enable-synth
).
ghdl-ls
(Teil von pyGHDL, siehe unten) implementiert Language Server Protocol (LSP) in Python. Der Zugriff auf die von GHDL bereitgestellten VHDL-Analysefunktionen erfolgt über libghdl
. Dies kann in Texteditoren oder IDES wie Vim, Emacs, Atom oder Visual Studio Code integriert werden. Siehe ghdl/ghdl-Language-Server.
ghdl-ls
bereitzustellen. libghdl
ist eine gemeinsam genutzte Bibliothek, die eine Teilmenge der regulären Funktionen sowie einige Funktionen zur Verwendung durch Erweiterungstools (z. B. pyGHDL
) enthält. Diese wird zusammen mit der regulären GHDL erstellt und unterstützt sowohl nicht synthetisierbaren als auch synthetisierbaren Code. Allerdings ist dies nicht für Benutzer gedacht, sondern für Tools, die auf dem Kern aufbauen. Wenn diese gemeinsam genutzte Bibliothek zusammen mit --enable-synth
konfiguriert wird, enthält sie auch Synthesefunktionen.
pyGHDL ist eine Python-Schnittstelle zu libghdl
. Derzeit wird es nur von ghdl-ls
verwendet; Es kann jedoch für fortgeschrittene Benutzer nützlich sein, die bereit sind, Python-Dienstprogramme auf Basis von GHDL zu erstellen. Derzeit wird daran gearbeitet, libghdl an pyVHDLModel zu binden (siehe pyGHDL.dom
).
ghdl_simul
, das interpretierte Simulationen unterstützt, ist aus historischen Gründen und nur für Entwicklung/Debugging verfügbar. Im Vergleich zur „normalen“ kompilierten Simulation ist sie sehr langsam und es werden nicht alle Funktionen unterstützt.