Hallo zusammen,
für meine Testbench arbeite ich häufiger mit Dateien, um Steuersequenzen
einzulesen oder Logdateien zu schreiben. Dabei habe ich folgende
Funktionen immermal wieder vermisst und bin nun drauf und dran, mich dem
ganzen selber zu widmen. Bevor ich mir die Mühe mache, wollte ich hier
aber noch einmal fragen, ob ihr vielleicht schon eine fertige Lösung für
die folgenden Problemchen kennt oder selbst erstellt habt.
- Eine Zeit aus einer Datei auslesen. Idealer Weise kann man die Zeit
in ps, ns, us oder ms angeben. Read(line, timestamp) funktioniert leider
nicht.
- eine Zeit (z.B. Timestamp) mit einer bestimmten Formatierung (ggf.
gerundet) in eine Datei schreiben: mit den Befehlen write(Line, now);
writeline(LogFile, Line); kann ich einen Timestamp in die Datei
schreiben, dieser wird je nach Wert unterschiedlich dargestellt: 1ms
wird als 1 ms dargestellt, der nächste Timestamp eine ps später wird
dann aber zu 100...001 ps. Das macht das Lesen schwierig, da die Werte
immer eine unterschliedliche Länge haben. Schön wäre eine Funktion, die
eine Zeit auf ns, us oder ms runden kann und dann immer in einer
konstanten Formatierung ausgibt (also nur ns oder nur us oder nur ms)
Außerdem bin ich auf der Suche nach einer Möglichkeit, die Simulation
aus dem Quellcode zu stoppen. Bisher generiere ich einen Fehler und
stell den Simulator entsprechend ein, aber
1 | if (endfile(File) = TRUE) then
|
2 | assert (FALSE) report "EOF der Datei erreicht, Simulation erfolgreich beendet" severity failure;
|
3 | end if;
|
sieht einfach doof aus.
Wenn jemand ideen für mich hat, würd ich mich freuen.
Vielen Dank und viele Grüße
Martin