Zugriff über Testpattern auf Konstanten einer Library

OP #1117428
Hallo Zusammen,

aus einem komplexen Design möchte ich in einer Testbench über 
Testpattern ein VHDL-Modul testen. Das Modul enthält mehrere 
Daten-Adress-Bus Interface die zu stimulieren sind. Nun sind dazu in 
einer Projekt-Library Konstanten für die Adressen definiert, welche in 
dem Modul verwendet werden. Z.B.:
1
   constant ADDR_SET_MINTIME   : std_logic_vector(15 downto 0) := x"0004";  
2
   constant ADDR_SET_MAXTIME   : std_logic_vector(15 downto 0) := x"0008";
In der Testbench werden dazu aus einem Textfile Testpattern gelesen. Da 
die Konstanten sich im Laufe der Entwicklung hin und wieder nochmal 
ändern, würde ich ungern auf die meinen Testpattern die Adresse absolut 
eingeben sondern mit dem Konstanten-Namen. Z.B.:
1
   wr   ADDR_SET_MINTIME   56
2
   rd   ADDR_SET_MAXTIME
anstelle von
1
   wr   4   56
2
   rd   8
Hat jemand ne Idee - oder besser sogar noch eine Lösung - für das 
Problem?
OP #1117520
>> Warum benutzt du denn nicht einfach die Library in deiner Testbench und
greifst auf die Konstanten zu?

Dann müsste ich die Testpattern quasi in der Testbench unterbringen, das 
ist bei sehr langen und variablen Testpattern nicht praktikabel.

Man könnte höchstens den Konstantennamen aus den Testpattern auslesen, 
diesen als String in einer Caseanweisung plazieren und dort dann die 
eigentliche Konstante einer Adressvariablen (oder einem Signal) 
zuweisen. Dafür müsste man aber in jeder Testbench die ganzen Kontanten 
nochmals eintippen und vor allem parallel zur Library warten. Z.B.:
1
case tp_string is
2
   when "ADDR_SET_MINTIME" => tp_addr := ADDR_SET_MINTIME;     
3
   when "ADDR_SET_MAXTIME" => tp_addr := ADDR_SET_MAXTIME; 
4
   ... 
5
   when others             => tp_addr := x"0000";
6
end case;
Bei sehr vielen Konstanten und vielen Modulen ist das sehr aufwendig.
Gast #1117524
Wie wäre es mit einem kleinen Script (z.B in Perl) das dir die 
gewünschten Konstanten aus der Library liest und aus deinen Testpattern 
(mit Konstanten) eine neue Datei erzeugt, in denen die Konstanten mit 
den gelesenen Werten ersetzt wurden. Sowas ist auch recht einfach.

Der Besucher
Gast #1117571
Stimmt, du kannst natürlich auch in VHDL einen Textparser schreiben, der 
dir die Testpattern beim einlesen "übersetzt". Mit Perl geht sowas 
sicherlich einfacher, aber mit VHDL ist es auch möglich!

Der Besucher

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.