Forum: FPGA, VHDL & Co. Signal extract aus *.vcd oder *.fsdb file (für matlab)


von Christian K (Gast)


Lesenswert?

Ich suche ein script (oder program) mit dem ich einzelne Signale aus vcd 
oder fsdb files extrahieren kann um die dann in matlab weiter zu 
verarbeiten.

Ausgangsformat z.B. csv oder ascii oder optimal direkt mat-file

Ich habe das Web durchsucht aber leider nichts gefunden das 
funktioniert.

Bin für jeden Tip dankbar!

von cfgardiner (Gast)


Lesenswert?

Vielleicht hättest du einfach Swiss-Cows (www.swisscows.com) statt 
Google nehmen sollen ;) "convert verilog vcd dump file to" entdeckt 
einige potentielle Startpunkte.

z.B. 
https://swisscows.com/lr?IG=86BCFC8881394D74890FB5F148A71A1A&CID=011777C57BDB6C5C07657B8D7AC26D05&rd=1&h=6He5A7Dq5QF2HS9w4yIXYxbrYbnzUwSSC_3xpVs8Ajw&v=1&r=https%3a%2f%2fgithub.com%2fben-marshall%2fverilog-vcd-parser&p=DevEx.LB.1,5170.1

hört sich doch vielleicht gut an oder?

Abgesehen davon, vcd ist eigentlich ein text-basiertes Format und recht 
gut mit C/C++ zu verarbeiten. Wenn ich mich recht erinnere, fängt die 
Datei mit einem Headerbereich an. Hier wird ein kurzer String, manchmal 
nur ein einzelnes Zeichen, als Alias für ein Signalname zugewiesen. 
Danach kommt der eigentlich Datenbereich, der nur eine Folge von 
Change-Records mit Zeitstempel ist. In diesem Bereich wir nur das Alias 
als Signalbezeichner verwendet. Man muesste also das Alias finden und 
danach die relevante Records aussuchen.

Ich weiss noch vor 25 Jahren oder so durfte ich mir eine 
Praktikumsaufgabe für den Sohn eines Vorstands eines befreundeten 
Unternehemens des Abteilungsleiters (lange Beziehung, gel) aus den 
Fingern saugen. Der Kandidat war gerade Studienabgänger und wollte 
unbedingt C lernen, hat sich selber nicht besonders viel zugetraut. Im 
Nachhinein war der Junge aber recht fleissig, hat in zwei/drei Monaten 
schon erstaunlich viel geleistet gehabt. Ich habe nur am Anfang mit der 
gemeinsamen Analyse des Formats wirklich Aufwand einstecken muessen. Er 
hat die Aufgabe auch genossen, oder hat dies zumindest behauptet. Nur 
leider, habe ich die Quellcode nicht mehr.  Schade eigentlich.

von cfgardiner (Gast)


Lesenswert?

Und, diese zwei Links hat Swisscows auch gefunden, mit Suchstring 
"convert verilog vcd dump file to matlab"

https://de.mathworks.com/help/hdlverifier/ug/add-a-value-change-dump-vcd-file.html

https://de.mathworks.com/help/hdlverifier/ref/tovcdfile.html

von Christian K (Gast)


Lesenswert?

cfgardiner schrieb:
> z.B.
> 
https://swisscows.com/lr?IG=86BCFC8881394D74890FB5F148A71A1A&CID=011777C57BDB6C5C07657B8D7AC26D05&rd=1&h=6He5A7Dq5QF2HS9w4yIXYxbrYbnzUwSSC_3xpVs8Ajw&v=1&r=https%3a%2f%2fgithub.com%2fben-marshall%2fverilog-vcd-parser&p=DevEx.LB.1,5170.1
>
> hört sich doch vielleicht gut an oder?

Ja, hat sich gut angehört, habe ich auch heute ausprobiert. Leider 
bricht es das parsen mit einer Fehlermeldung über TOK_IDENTIFIER ab. 
Auch nachdem ich aus dem vcd File per Hand alle unnötigen Identifiers 
removed hatte... Hätte ich Zeit würde ich mir das genauer anschauen und 
debuggen...

Ja im Grunde ist ein vcd file recht einfach zu lesen, habe aber leide 
keine Zeit... Habe jetzt schon wieder 2h verloren durch das ausprobieren 
des codes brauche aber heute Abend ein Ergebnis :-(

----------

Die Simulink Blöcke funktionieren nur mit Mentor oder Cadence 
Simulatoren. Mein vcd file wird aber aus SystemC geschrieben -> geht 
nicht

---------

von Christian K (Gast)


Lesenswert?

Bevor ich es vergesse: Trotzdem vielen Dank für die Hinweise!

von cfgardiner (Gast)


Lesenswert?

Heute Abend ist in der Tat knapp.

Sonst habe ich nur diese Links gefunden, falls Perl bzw. PYthon in Frage 
kommen:
https://metacpan.org/pod/Verilog::VCD
https://pypi.org/project/Verilog_VCD/

Kenne sie aber eigentlich selber nicht. Es wundert mich schon, dass es 
so wenig gibt. In Rahmen von Consulting Aufträge für diverse 
Halbleiterfirmen bin ich immer wieder Situationen begegnet, wo 
Testvektoren aus *.vcd Dateien extrahiert werden. Es scheint aber 
tatsächlich nichts im Public Domain zu existieren.

Die Tools in meiner Aldec Installation scheinen leider auch nicht 
hilfreich zu sein. Ich habe versucht vcd2asdb (Aldec Datenformat) und 
danach asdb2lst. Die Ausgabedatei ist gigantisch und auf dem ersten 
Blick genau so schwer handzuhaben.

Sonst, hätte ich gehofft irgendwas im Umfeld von GtkWave zu finden, 
http://gtkwave.sourceforge.net oder das geda Projekt 
http://www.geda-project.org

Kommerzeille Tools gibt es wohl schon, z.B. 
http://sourceiii.com/vcd-translation-convert-vcd-to-ate-stil-wgl-and-more.html, 
sind aber bestimmt nicht besonders preosgünstig

von Christian K (Gast)


Lesenswert?

Meine Notlösung war, den SystemC Source Code zu patchen so dass er 
direct die gewünschten Signale im Ascii-Format rausschreibt...

Aber wenn ich etwas Luft habe, werde ich versuchen einen vcd Signal 
extracter zu schreiben (evtl. mit der Library oben). So schwer kann das 
nicht sein

von Duke Scarring (Gast)


Lesenswert?

Christian K schrieb:
> Meine Notlösung war, den SystemC Source Code zu patchen so dass er
> direct die gewünschten Signale im Ascii-Format rausschreibt...
So hätte ich das auch gemacht. Da kann man gleich die Formatierung nach 
gutdünken einstellen...

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.