Wie kompiliere und starte ich ein VHDL-Programm auf einem Mac mit ghdl?

8

Ich habe gerade ein einfaches VHDL-Programm geschrieben. Ich habe die Datei als .vhd-Datei gespeichert. Dann habe ich es mit

kompiliert %Vor%

und dann gebaut und ausführbare Datei mit

%Vor%

Und schließlich habe ich versucht, es mit

zu starten %Vor%

Was passiert ist, ist, dass ich jetzt eine work-obj93.cf Datei habe, die sichtbar ist und zwei andere Dateien, nämlich .. und . , die irgendwie unsichtbar sind.

Kann jemand sagen, wie genau ich ein vhdl-Programm auf meinem Mac testen kann? Vielleicht in Kombination mit GTKWave.

    
user2426316 12.06.2013, 15:51
quelle

3 Antworten

16

Das, wie sie sagen, ist eine große Frage!

Es gibt eine Version von ghdl für OS X, die auf Intel-Prozessoren für die Versionen 10.5, 10.6.10.7 und 10.8 läuft, die von ghdl.free.fr (kann unter GHDL für Mac OS X heruntergeladen werden). Es ist die Mcode-Version (wie bei Windows), was bedeutet, dass es keine Objektcodes oder eine eigenständige ausführbare Datei eines VHDL-Modells erzeugt, mit der Folge, dass Sie keine Fremdobjekte (Unterprogramme) an das Modell binden können.

Das ausgearbeitete Modell ist zur Laufzeit nur im Speicher vorhanden und der Befehl -e ist überflüssig, abgesehen von einem Eintrag in der .cf-Datei der Arbeitsbibliothek. In einer Mcode-Version von ghdl wird auch der Befehl -r ausgeführt. Alles, was Sie sehen werden, ist die work-obj93.cf-Datei für das Arbeitsverzeichnis und alle .cf-Dateien für vor-analysierte Bibliotheken. Diese werden standardmäßig in / usr / local / ghdl / libraries, der ausführbaren ghdl-Datei, angezeigt / usr / local / bin verweist auf / usr / local / ghdl / translate / ghdldrv / ghdl_mcode und / usr / local / ghdl ist eine abgespeckte Struktur, die aus der Kompilierung der ghdl_mcode-Version resultiert.

Diese Version ist von svn129 abgeleitet (folgt der ghdl-0.29-Version) und enthält eine i386-Binärdatei.

Die Dokumentation für ghdl befindet sich in / usr / local / ghdl / doc /, dort gibt es die ghdl man-Seite, die woanders verlinkt ist, ghdl.html und ghdl.texi, die das ghdl-Handbuch sind und nirgendwo anders verlinkt sind. In ghdl.html können Sie nach jedem Vorkommen von 'Windows' suchen, um einen Verweis auf die Mcode-Version zu finden. Als ein Versehen habe ich nicht daran gedacht, das ghdl-Handbuch zu ändern, um das Wort mcode überall dort einzufügen, wo Windows erschien, und das modifizierte Handbuch zu veröffentlichen.

Wo auch immer 'Windows' erscheint, sollte es als 'Windows oder andere Mcode-Version' gelesen werden.

Im ghdl-Handbuch siehe 1.3 Was ist GHDL? (Die Windows (TM) -Version von GHDL basiert nicht auf GCC, sondern auf einem internen Codegenerator). Auch 2.1 Das Hallo Weltprogramm:

%Vor%

Um den großen Zweck von VHDL zu veranschaulichen, ist hier ein kommentiertes VHDL "Hallo Welt" Programm.

%Vor%

Angenommen, dieses Programm ist in der Datei hello.vhdl enthalten. Zuerst müssen Sie die Datei kompilieren; Dies wird als Analyse einer Designdatei in VHDL-Begriffen bezeichnet.

%Vor%

Dieser Befehl erstellt oder aktualisiert eine Datei work-obj93.cf, die die Bibliothek 'work' beschreibt. Unter GNU / Linux erzeugt dieser Befehl eine Datei hello.o, die die Objektdatei für Ihr VHDL-Programm ist. Die Objektdatei wird nicht unter Windows erstellt.

Dann müssen Sie eine ausführbare Datei erstellen.

%Vor%

Die Option "-e" bedeutet aufwendig. Mit dieser Option erstellt GHDL Code, um ein Design zu erstellen, wobei die 'Hallo'-Entität an der Spitze der Hierarchie steht.

Unter GNU / Linux ist das Ergebnis ein ausführbares Programm namens Hallo, das ausgeführt werden kann:

%Vor%

oder direkt:

%Vor%

Unter Windows wird keine Datei erstellt. Die Simulation wird mit diesem Befehl gestartet:

%Vor%

Das Ergebnis der Simulation erscheint auf dem Bildschirm:

%Vor%

Speichern Sie den Quellcode für den Befehl hallo_world in der Datei hello.vhdl und führen Sie die Befehle aus:

david_koontz @ Macbook: ghdl -a hello.vhdl

david_koontz @ Macbook: ghdl -e hallo_world

david_koontz @ Macbook: ghdl -r hallo_world

Erträge:

Hallo Welt!

bei Standardausgabe (die TTY-Sitzung in Ihrem Terminal-Fenster).

Sie erhalten eine workjob.cf-Bibliothekskonfigurationsdatei im aktuellen Arbeitsverzeichnis und keine anderen Ausgabedateien. Sie sollten auch die Auswirkungen des Befehls -r run (Abschnitt 3.1.3) verstehen, wobei keine optionale sekundäre Einheit in der Befehlszeile übergeben wird. VHDL verwendet standardmäßig die letzte kompilierte Architektur.

Bekommen Tony Bybell gtkwave gtkwave. App , die Dokumentation befindet sich in /Applications/gtkwave.app/Contents/Resources/doc, sowohl eine Quell-ODT-Datei als auch eine PDF-Datei. (Sie können eine Anwendung im Ordner "Programme" und "Paketinhalt anzeigen" auswählen, um zum doc-Verzeichnis zu navigieren.)

Es gibt ein ghdl-spezifisches Wellenform-Format namens ghw, das mit der run-Befehlsoption '--wave = .ghw' aufgerufen werden kann. Siehe ghdl-Handbuch 4.1 Simulationsoptionen. Siehe auch die VCD-Optionen in diesem Verzeichnis, wenn Sie VCD stattdessen verwenden möchten.

Sie sollten die Laufzeit auch mit einem Schutzzeitgeber begrenzen, wenn Ihr Prüfstand eine freilaufende Uhr zur Verfügung stellt. VHDL wird nur dann ausgeführt, wenn entweder keine geplanten Signalaktualisierungen mehr stattfinden oder die Ausführungszeit abgelaufen ist. Dies ist eine Option zum Ausführen eines Befehls in der Form '--stop-time = 587200ns'.

Die OS X gtkwave.app reagiert auf zwei Dateitypen mit den Erweiterungen .ghw und .gtkw, der ersten ghdl-Wellenform-Dump-Datei, der zweiten gtkwave-Konfigurationsdatei mit einem OS X-Suffix, die den Aufruf von gtkwave durch Klicken auf gtkw ermöglicht Datei.Die Konfigurationsdatei muss gespeichert werden, nachdem die Wellenformanzeige in gtkwave eingerichtet wurde, bevor sie existiert. Siehe das Handbuch zu gtkwave. Eine ghw-Datei kann angeklickt werden und gtkwave hat eine Reihe von Regeln, um nach der zutreffenden gtkw-Datei zu suchen.

Das ghw-Dateiformat hat mehrere Vorteile. Der automatische Aufruf der gtkwave App durch Anklicken von Dateien ist eins. Ein anderer ist, dass ghdl alle Signaltransaktionen in seiner ghw-Dump-Datei speichert. Sie können in gtkwave immer mehr auswählen, um weitere Informationen anzuzeigen. Während dies in großen Modellen ein Nachteil sein kann, erlaubt das ghw-Format jede Typ- oder Subtypen-Enumerations-Literalanzeige.

Wenn Sie der GHDL-Diskussionsliste beitreten und eine Frage stellen, ist dies ein guter Weg, die Aufmerksamkeit der ghdl-Experten auf sich zu ziehen. (Und ja, das Zertifikat für gna.org ist abgelaufen oder anderweitig ungültig). Tony Bybell stellt einen E-Mail-Kontakt auf der gtkwave-Webseite zur Verfügung, aber Anforderungen an bezahlte Beschäftigung begrenzen seine Verfügbarkeit.

Ausarbeitung von ghdl und gtkwave anhand eines Beispiels.

Das ursprüngliche Poster verlangte nach einigen realen Beispielen mit Befehlszeilenwerten. Es gibt jedoch ein schlechtes GHDL / GTKWave Tutorial (PDF, 234 KB), die ein Beispiel enthält und VCD verwendet.

Ich werde die Befehlszeilen für eine GHDL Waveform-Formatversion auflisten:

david_koontz @ Macbook: ghdl -a CarryRipple.vhd

david_koontz @ Macbook: ghdl -a CarryRipple_tb.vhd

david_koontz @ Macbook: ghdl -e carryRipple_tb

david_koontz @ Macbook: ghdl -r carryRipple_tb --wave = carryRipple_tb.ghw

Das Aufrufen von gtkwave.app kann entweder durch Klicken auf die resultierende carryRipple_tb.ghw oder durch den OS-Befehl open:

erfolgen

david_koontz @ Macbook: Öffnen Sie -a gtkwave carryRipple_tb.ghw

Gtkwave's SST-Fenster (oben links) zeigt oben an, expandiert durch Klicken auf das + Feld. Tue das Gleiche für den offenbarten carryripple_tb. Klicken Sie auf a. Wählen Sie im Signalfenster eine [3: 0] und drücken Sie die Einfüge-Taste. Wiederholen Sie für b.

Wählen Sie im SST-Fenster U0 und dann im Signalfenster cin drücken Sie die Einfüge-Taste und dann die gleiche für cout.

Wählen Sie im SST-Fenster s, und wählen Sie im Signalfenster s [3: 0] und drücken Sie Einfügen.

Und die Quelle für die zwei VHDL-Dateien aus dem "Tutorial" zu bekommen, war schmerzhaft. Ich habe es nicht getan.

Sie können auch die Zuordnung von 'X' zu Cin bei 60 ns in der gtkwave-Anzeige notieren, ich habe es gemacht, um die letzten in der Testbench zugewiesenen Werte anzuzeigen.

Ich würde nicht behaupten, dass es ein gutes Tutorial ist, aber Sie bekommen hier, wofür Sie bezahlt haben. Besser zu machen wäre eine größere Frage gewesen.

Der Prüfstand (carryRipple_tb.vhd) bietet eine stimulierende Funktion, um das Modell (CarryRipple.vhd) während der Simulation zu steuern. Das Modell beendet die Ausführung nach dem letzten Signalereignis, so dass keine Stoppzeit an den Ausführungsbefehl übergeben werden muss (z. B. --stop-time = 587200 ns).

Es gibt auch ein fünfteiliges GHDL / GTKWave Tutorial auf Youtube von Chad Kersey . Die Auflösung ist nicht so gut und es ist Linux-zentriert. In Teil 0 geht es um die Installation der beiden Tools. Der einzige wirkliche Unterschied in meinem Beispiel ist die Verwendung des ghw-Wellenformformats. Bei den meisten Browsern können Sie das unten abgebildete gtkwave-Fenster in voller Größe sehen.

hinzugefügt

Es gibt eine aktuelle Antwort, die eine Demonstration mit einem Toggle-Flip-Flop zeigt, die einen Fehler im ursprünglichen VHDL-Code und drei mögliche Fehlerbehebungen zeigt. Es verwendet Konfigurationsdeklarationen, um die verschiedenen festen Versionen auszuführen. Siehe wie um eine Verzögerung der Ausgabe der einfachen Prozessanweisung in VHDL zu vermeiden .

    
user1155120 12.06.2013, 23:18
quelle
3

Eine neue Mac OS X GCC-Version von GHDL

Es gibt eine neue Version von ghdl, verfügbar unter ghdl-updates / Builds / ghdl- 0.31 / OSX , eine gcc-Version, die die mcode-Version enthält.

Es ist nur bekannt, dass es unter OS X 10.9 läuft, aber ich denke, es würde OS X 10.8 laufen, wenn Xcode und seine Befehlszeilentools installiert sind - die gcc-Version hängt derzeit von / usr / bin / as und / usr / bin / ld ab , die Teil des essentials-Pakets sind, das OS X 10.9 installiert und verfügbar ist, indem Xcode-Befehlszeilentools auf OS X 10.8 installiert werden.

Sobald diese Version von ghdl installiert ist, können Sie in einem Terminal

%Vor%

Scrollen Sie nach unten zu Starten mit GHDL und drücken Sie Wagenrücklauf. Scrollen Sie nach unten zum Programm Hello World (Wagenrücklauf), zum Volladdierer (Wagenrücklauf) oder zum Starten mit einem Entwurf (Wagenrücklauf). Der erste ist ein VHDL-Hallo-Welt-Programm, der zweite ist ein Ein-Bit-Addierer mit einem Prüfstand. Das Starten mit einem Design führt Sie zu einem Download-Link und Anweisungen für eine DLX-Prozessorsimulation.

Ich plane eine 10.6 - 10.9 gcc Version von ghdl zu entwickeln, die nicht von Xcode für 10.6 - 10.8 abhängig ist und auf 10.9 läuft. Es wird wahrscheinlich Version 0.32 von ghdl sein.

Tony Bybell gtkwave.app läuft auf OS X 10.6 - 10.9 und ist zusammen mit seiner Bedienungsanleitung von der GTKWave SourceForge Seite. Die neueste Version der Anwendung kann von diesem Link auf Sourceforge heruntergeladen werden - gtkwave.zip .

Es gibt mehrere ghdl / gtkwave-Tutorials auf YouTube, obwohl keine OS X-spezifisch sind, versuchen Sie es mit googling.

ghdl hat sein eigenes gtkwave-Format, GHW, das VHDL-freundlich ist und Ihnen erlaubt, in komplexe zusammengesetzte Typen zu schauen. ghdl-0.33 wird wahrscheinlich auch Unterstützung für das FSB-Format von Tony Bybell bieten.

Die abenteuerlicheren können unter OS X Ghdl von Grund auf neu erstellen, siehe Anweisungen zum Erstellen von ghdl-0.31 mit gcc4.8.2 unter OS X 10.9 . Für das Erstellen mit gcc4.9.1 ist die Version ghdl-0.32 erforderlich, die im Mercurial-Archiv unter hier verfügbar ist >. Bei der Veröffentlichung der Version werden ghdl-0.32-Binärdateien auch von Sourceforge verfügbar sein.

Die Sourceforge-Site ghdl-updates ist der Ort, an dem ghdl-Entwicklungsaktivitäten vom Autor von ghdl, Tristan, ausgeführt werden Gingold.

Sie können nicht nur der ghdl-Diskussionsliste beitreten, sondern auch Archive Sie können Fehlerberichte auf den ghdl-updates ablegen Tickets , wo Sie sowohl offene als auch geschlossene Probleme sehen können.

Die Entwicklungszukunft für ghdl ist gut. Zukünftige Veröffentlichungen werden sich voraussichtlich auf die IEEE Std 1076-2008-Konformität für die nahe Zukunft konzentrieren. Es gibt auch eine Entwicklung, ghdl als ein llvm-Frontend zu verwenden, sowie eine rein interpretierende Version, um ghdl-mcode zu ersetzen.

Mit binären Releases von ghdl und gtkwave ist es möglich, Benutzer von Entwickler zu trennen.

    
user1155120 08.02.2014 23:22
quelle
0

Ich weiß nicht, ob das für diese Diskussion genau relevant ist. Ich freue mich jedoch, dass ich heute GHDL auf meinem Mac, El Capitan, installiert habe. Ich habe die neueste GHDL-Version von ghdl.free.fr für Mac heruntergeladen und alles in Ordnung installiert. Ich erhielt eine Nachricht, dass die Objektdateien ein neueres Format oder etwas in diesen Zeilen waren. Trotzdem, mein vhdl-Code kompiliert.

Ich hatte ein Problem beim Versuch, einen Prüfstand für diesen vhdl-Code zu erstellen. Als ich sie separat kompiliert habe, habe ich Fehlermeldungen bekommen. Wenn ich sie zusammengestellt habe, ist das

%Vor%

hat alles so funktioniert, wie Sie es erwarten würden.

%Vor%

hat funktioniert und auch

%Vor%

Vielleicht gab es ein Problem damit, wie das vhdl kompiliert wurde. In meinem Fall musste ich, anders als in Ubuntu, code.vhdl und code_tb.vhdl zusammen analysieren. Vielleicht könnte das für zukünftige Leser nützlich sein.

    
Chase Kolozsy 23.01.2016 05:46
quelle

Tags und Links