ModelSim Altera: Script für Simulation

OP #4548008
Lesenswert?

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
Angehängte Dateien:
Gast #4548458
Lesenswert?

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
#4549338
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren