Forum: FPGA, VHDL & Co. Zugriff auf Testbench-Pfadangaben (typ file) über Modelsim do-Skript


von grottenolm84 (Gast)


Lesenswert?

Hallo,

Folgendes Problem:

Ich habe mehrere VHDL-Testbenches für die ich jeweils ein do-File zum 
automatischen kompilieren und simulieren erstellt habe.
Einiger dieser Testbenches benutzen als Input-Stimulus Textdateien, die 
ich über die textio-Bibliothek mit absoluten Pfadangaben innerhalb des 
Testbench-Codes einlese. Das Simulationsergebnis wird ebenfalls in eine 
Textdatei geschrieben.

Ich würde nun gerne "von Außen" ,also über die do-Skripte, die 
Pfadangaben dieser Ein- und Ausgabedateien festlegen.
Mein Problem ist, dass diese etwa vom force-Befehl nicht erkannt werden, 
da sie als String-Constanten innerhalb der Testbench deklariert sind. 
Als signal vom Typ String kann ich diese auch nicht deklarieren, da dann 
eine feste Arraybreite definiert werden müsste.

Ich will ungern den ganzen Code meiner Testbenches umschreiben -halt nur 
von Außen die Verzeichnisse angeben/ändern können....

Danke schonmal im Voraus !

von 123 (Gast)


Lesenswert?

entity test_mem_tb is

  generic (

    log_file    : string  := "../test/test_mem/test_mem.log" --! Log 
File
  );

von grottenolm84 (Gast)


Lesenswert?

ok -mit nem generic hatte ich's letzt auch schonmal versucht.

Wie greif ich denn in meinem Testskript darauf zu ?
Bei force log_file "d:/test/test...." bekomm ich immer ne "Cannot force 
'log_file'"-Meldung. -was ist hier der richtige Befehl ?

von 123 (Gast)


Lesenswert?

vsim -g ....

von grottenolm84 (Gast)


Lesenswert?

jau !

mit vsim -glog_file=""D:/test_folder/test.txt"" hatt's geklappt.

(man beachte die Schreibweise...tricky..)

Vielen Dank !

von Andi (Gast)


Lesenswert?

hi,

könntest du ein kleines Beispiel + die Lösung anbieten, damit andere
Leute auch etwas von deiner Erkenntnis haben ?

Gruß,
Andi

von grottenolm84 (Gast)


Lesenswert?

klar, also:

Es soll das VHDL-Design "test.vhd" per modelsim-skript getestet werden. 
Dafür gibt es die testbench "test_tb.vhd". Diese greift auf die 
Textdatei "input.txt" die im Verzeichnis "C:\Test" liegt. Die 
Ausgabedatei soll ins Verzeichnis "C:\Test\Result".

Zur Erstellung eines automatischen Testskripts benutze ich die do-Datei
"test.do" mit folgendem Inhalt:

vcom -work work C:/Test/test.vhd
vcom -work work C:/Test/test_tb.vhd
.main clear
set input_file "C:/Test/input.txt"
set output_file "C:/Test/Result/output.txt"
vsim -lib work -t 1ps test_tb -wlf test.wlf -gdata_in="$input_file" 
-gdata_out="&output_file"
view signals
view wave
view structure
add wave /test/*
run 55ms
write transcript test_testlog.txt"

In der Testbench selber muss in der Entity data_in und data_out als 
generic deklariert sein:

ENTITY test_tb IS
    generic (
    data_in: string  := "Platzhalter"
    data_out: string  := "Platzhalter2"
    );
END test_tb;

Bei Ausführung von test.do kompliert Modelsim erst die beiden Dateien
und übergibt an die Generics die beiden Dateipfade für die Ein- und
Ausgabedatei. Während der Simulation wird ein wlf-Logfile sowie ein
Protokoll des Transcript-Fensters mitgespeichert.

Wie man Dateien in einer Testbench mit der textio-Bib einliest, habe ich 
hier jetzt nicht weiter erläutert....

von Andi (Gast)


Lesenswert?

Danke für das Beispiel !

Gruß, Andi

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
Noch kein Account? Hier anmelden.