mikrocontroller.net

Forum: FPGA, VHDL & Co. Zugriff über Testpattern auf Konstanten einer Library


Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.:
   constant ADDR_SET_MINTIME   : std_logic_vector(15 downto 0) := x"0004";  
   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.:
   wr   ADDR_SET_MINTIME   56
   rd   ADDR_SET_MAXTIME
anstelle von
   wr   4   56
   rd   8
Hat jemand ne Idee - oder besser sogar noch eine Lösung - für das 
Problem?

Autor: Der Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum benutzt du denn nicht einfach die Library in deiner Testbench und 
greifst auf die Konstanten zu?

Der Besucher

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> 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.:
case tp_string is
   when "ADDR_SET_MINTIME" => tp_addr := ADDR_SET_MINTIME;     
   when "ADDR_SET_MAXTIME" => tp_addr := ADDR_SET_MAXTIME; 
   ... 
   when others             => tp_addr := x"0000";
end case;
Bei sehr vielen Konstanten und vielen Modulen ist das sehr aufwendig.

Autor: Der Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre eine Möglichkeit. Schöner wäre es allerdings die VHDL-Ebene nicht 
verlassen zu müssen. Man könnte das Script ja auch in VHDL-Schreiben und 
in einer Funktion aufrufen. Vielleicht ist das ja auch keine so gute 
Idee. Oder freiwillige vor!

Autor: Der Besucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.