Hallo,
ich bin dabei eine Stoppuhr in VHDL zu schreiben.
Die Testbench für die algorithmische, der VHDL Code der algorithmischen
und RT Ebene sind bereits fertig und verifiziert.
Die RT Ebene wollen wir nun mit unserer vorhandenen Testbench
überprüfen, benötigen jedoch dafür einen Wrapper / Golden code.
Die Frage ist nun, wie schreibe ich so etwas? Bzw. gibt es Literatur
oder vor allem Beispiele?
Vielen Dank
Manuel Schwarz
Wofür brauchst du einen Wrapper, wenn du die Testbench und das Modul
schon hast? Im Normalfall sollte dein algorithmisches Modell und dein
RT-Modell aus Interfacesicht nicht zu unterscheiden sein und beides in
dieselbe TB passen, meinst du das? Oder willst du algorithmisches Modell
und RT-Modell gegeneinander simulieren?
Ihr habt eine dermaßen abstrakte Testbench, dass der Prüfling nicht
drauf passt?
Ein Wrapper ist i.a. nur ein VHDL Modul, dass die Ports des einen Moduls
(Stoppuhr) an die Ports des anderen Moduls (TB) anpasst.
Und wenn sich die "algorithmische Uhr" und die "RTL Uhr" gleich
verhalten sollen, dann müssen sie zuerst mal die selben Ports haben.
Und dann sollte die "algorithmische TB" ganz ohne Anpassung gegen die
"RTL Uhr" laufen können...
In der algorithmischen Ebene besteht unsere Stoppuhr nur aus drei Tasten
als Eingänge und einer Zeitvariablen als Ausgang. Hingegen in der RT
Ebene sollen wir nun ein Prozess mit der Sensitivty auf den Clock testen
und unseren logischen Ein- und Ausgänge sind immernoch die drei Taster,
aber die Zeit wird mit vier 7-Segment-Anzeigen ausgegegeben, weshalb
unsere Testbench nicht mehr passt.
Den Wrapper brauchen wir, da sich die Portdefinition von algorithmischer
zur RT-Ebene unterscheiden.
LG Manu
Da brauchst du nicht unbedingt einen Wrapper, sondern kannst auch in der
TB die Referenz 7-Segment codieren und dann vergleichen. Oder andersrum
die 7-Segment des Modules decodieren und vergleichen.
Die Testbench ist normalerweise einfach die Umgebung. Mit den
Eingabeelementen bzw. Sensoren, den Aktoren und sonstigen EA Bausteinen.
Was soll sich da jetzt bei einer anderen internen Beschreibung ändern?
Manuel Schwarz schrieb:> In der algorithmischen Ebene besteht unsere Stoppuhr ...> Hingegen in der RTL Ebene sollen wir ...> weshalb unsere Testbench nicht mehr passt.
Ist ja klar: ihr habt 2 unterschiedliche Stoppuhren. Deshalb braucht ihr
auch 2 unterschiedliche Testbenches...
Oder, wenn ihr unbedingt diese RTL-Uhr mit der (falschen) Zähler-TB
prüfen wollt, dann muss der Wrapper aus den LED-Signalen wieder eine
Zahl machen, die in der Zähler-TB kontrolliert werden kann.
Manuel Schwarz schrieb:> Zeitvariablen als Ausgang
Eine Variable? Oder ein Signal, dass als Variable gesehen wird?
Manuel Schwarz schrieb:> da sich die Portdefinition von algorithmischer> zur RT-Ebene unterscheiden.
Wieso ist das so?
Und wo ist das Problem, den wrapper in 1min hinzuschreiben, wenn man die
ports und deren Bedeutung kennt?
Leute, in der Zeit, in der ihr sowas in VHDL macht, löte ich das dreimal
auf.
VHDL-Altling schrieb im Beitrag #4204513:
> Manuel Schwarz schrieb:>> Zeitvariablen als Ausgang> Eine Variable? Oder ein Signal, dass als Variable gesehen wird?
Das ist vermutlich nur ein kleines Terminologie-Problem eines
Softwerkers...
> Leute, in der Zeit, in der ihr sowas in VHDL macht, löte ich das dreimal> auf.
Manuel ist noch am Lernen...
Manuel Schwarz schrieb:> einer Zeitvariablen als Ausgang.
Natürlich ist weder ein Signal und noch weniger eine Variable der
Ausgang, sondern einfach ein Port...
Manuel Schwarz schrieb:> ich bin dabei eine Stoppuhr in VHDL zu schreiben.> Die Testbench für die algorithmische, der VHDL Code der algorithmischen> und RT Ebene sind bereits fertig und verifiziert.
Niemand schreibt eine Stoppuhr in RTL-Ebene. Das ist seit 10 Jahren rum.
Wir sind in 2015 angekommen.
Servus!
Wir sind eine Ecke weiter gekommen. Das dauert alles ein wenig, da wir
keine Profis und deswegen kommen manchmal auch vielleicht "dumme"
Fragen.
Wer jedoch nicht liest und keine Fragen stellt, der macht auch keinen
Fortschritt.
In dem Sinne bedanke ich mich für die Hilfe!
Wir haben noch einen Fehler mit unserem Wrapper. Er funktioniert soweit
schon, gibt jedoch eine Fehlermeldung mit "Block specification does not
match arcitecture".
Die Arcitekturen und die Portmaps haben wir schon mehrmals überprüft.
Woran könnte der Fehler noch liegen?
Vielen Dank.
Manuel schrieb:> gibt jedoch eine Fehlermeldung mit "Block specification does not match> arcitecture".
Welcher Teil welcher Toolchain meldet denn sowas?