Hallo, wie ich begonnen habe mich mit VHDL zu beschäftigen habe ich GHDL verwendet. Um nicht ständig alle Befehle für die Simulation von Hand eingeben zu müssen habe ich mir damals das angehängte Makefile erstellt. Jetzt möchte ich langsam beginnen mit FPGAs zu arbeiten. In letzter Zeit habe ich mich deshalb ein bisschen in Altera Quartus II (V.11.1) eingearbeitet. Zum simulieren habe ich mir ModelSim Altera Starter Edition (V.10.4b) installiert. Es funktioniert eigentlich auch, aber ich finde es etwas mühsam. Wenn ich eine Änderung am VHDL-Code vornehme muss ich immer unzählige Eingaben tätigen um die Simulation mit den aktuellen VHDL-Files neu zu starten. Ich gehe jedes mal wie folgt vor: - Sourcen "recompilieren" - Simulation starten - Dann muss ich jedes mal von neuem die Signale zum Waveform-Window hinzufügen - Zum Schluss auf "Run" und erst dann habe ich die aktuellen Signale im Waveform-Window. Kann man das irgendwie mit einem Makefile oder ähnlichen automatisieren? lg michael
ja kann man, und ja man kann auch eine Makefile dazu benutzen Zuerst alle Librearies anlegen mit vlib work vlib andereLibrary Dateien lassen sich so in die library work kompilieren: vcom datei.vhd oder so in die library test vcom -work test datei.vhd Die Waveform lässt sich als do File abspeichern und beim Aufruf vom simulator wieder laden: vsim mytoplevel -do "mytoplevel.do" In meiner Makefile habe ich 2 targets 1.Bauen 2.Simulator starten Wenn der Simulator schon läuft, lasse ich nur den Bauschritt laufen und gebe dann im Simulatorfenster folgendes ein: restart -f; run 100us Das setzt den Simulator zurück, das Wavefenster bleibt so wie es ist, und die Simulation läuft von vorne 100us
Beispiel Makefile: all: @vlib work 2>&1 > /dev/null vcom myvhdlfile.vhd vcom tb_myvhdlfile.vhd sim: vsim -t ps tb_myvhdlfile -do "tb_myvhdlfile.do"
Noch als Ergänzung: Wer ein größeres Projekt hat, möchte die Abhängigkeiten der VHDL-Dateien untereinander nicht mehr manuell auflösen. Dafür gibt es ein nettes Tool: vmk https://sourceforge.net/projects/vmk/ Duke
@user: Ich hab deine Anleitung heute mal getestet. Funktioniert genau so wie ich mir das vorgestellt habe. vielen Dank dafür! @ Duke Scarring: Das Tool werde ich mir bei Bedarf auch mal anschauen. Danke auch hierfür!
user schrieb: > Beispiel Makefile: > > all: > @vlib work 2>&1 > /dev/null > vcom myvhdlfile.vhd > vcom tb_myvhdlfile.vhd > sim: > vsim -t ps tb_myvhdlfile -do "tb_myvhdlfile.do" Naja, also Make so zu verwenden ist imho ein wenig unnütz. Will heißen, da wird Make überhaupt nicht wirklich genutzt: Für die Verwendungsweise könnte man genauso gut ein Shellskript basteln. Die Stärke von Make liegt ja darin, bestimmte Dinge während des Build-Prozesses in Abhängigkeit von gewissen Bedingungen auszuführen. Und nicht jedesmal einfach alles neu zu bauen. Ich gebe zu, bei VHDL-Projekten ist das ein wenig unschön, da hier keine genaue Zuordnung zwischen einem Eingabe- und einem Ausgabefile des Compilers hergestellt werden kann. Stattdessen wird alles in eine Library kompiliert. Also muss man diesen Zusammenhang manuell herstellen, zum Beispiel:
1 | work/hdlfile.vhd.ts : hdlfile.vhd |
2 | vcom $^ |
3 | date >> $@ |
So wird hdlfile.vhd nur dann neu compiliert, wenn es auch wirklich geändert wurde (mit Hilfe eines Timestamp-Files (.ts) im work-Ordner). Das Ganze kann man nun mit generischen Rules für bestimmte Filetypen und einem automatischen Abhängigkeitsgenerator, wie von Duke vorgeschlagen, aufhübschen und erhält so ein vollwertiges Buildsystem für VHDL-Projekte.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.