www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Generic in Simulation variabel handhaben?


Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe folgendes VHDL-Problem:

Ein von mir geschriebenes Modul besitzt ein Generic. Dieser (konstante) 
Wert wird verwendet um den Range diverser Vektoren an verschiedenen 
Ports und einiger interner Signale zu bestimmen. So weit ist das auch 
kein Problem und funktioniert auch bestimmungsgemäß.

Jetzt möchte ich dieses Modul in ModelSim ausgiebig testen. Unter 
anderem möchte ich das Modul mit verschiedenen Werten des Generic 
testen. Ich habe aber keine Lust x-Beliebige Testbenches dafür 
aufzusetzen, oder aber das Modul x-Beliebige oft in meiner Testbench zu 
instantiieren.

Schön wäre es wenn man zu Laufzeit der Simulation (etwa mit einer 
For-Schleife) diverse Werte für das Generic durchspielen könnte.

Hat jemand eine Idee ob so was irgendwie lösbar ist?

Autor: Ottmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Generics kann man beim vsim aufruf setzen. Details stehen im manual.

    -g<Name>=<Value>

Beispiel:

    vsim -g/top/ram/u1/tpd_hl=10ns -gtpd_hl=15ns top

Generics kann man prinzipbedingt nicht zur laufzeit ändern.

Autor: Bergvagabund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Es gibt natürlich die Möglichkeit das Ganze etwas aufwendiger zu machen.

Normalerweise schreibt man ja eine Testbench hardcodiert als File in 
VHDL. Das stößt bei großen Projekten meist bald an seine Grenzen (wie 
simulier ich denn mit einer hardcodierten Testbench beispielsweise einen 
UMTS Handychipsatz wo zusätzlich eine Hardware Software Cosimulation 
notwendig ist?).
Hier schreibt man nicht die Testbench selbst, sondern z.B. mit Hilfe von 
Scriptsprachen wie Perl oder Pyton erzeugt man dynamisch eine bestimmte 
Testbench.
Der gesamte Simulationsablauf ist dann natürlich auch Scriptbasiert.
Mit dieser Methode kann man auch das Fehlen von Befehlen für 
Usereingaben (scanf) in VHDL umgehen.

Ich hab das selbst noch nie so machen müssen, weis aber dass das eine 
mögliche Art ist komplexere Verifications zu machen.

Der Verification Engineer ist ein ziemlicher Spezialist welcher viel 
mehr mit Softwareentwicklung als mit Hardwareentwicklung zu tun hat.

Gruß

Bergvagabund

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Ottmar: Vielen Dank für den Tip.

Die Parameter habe ich mir soweit noch nicht näher angesehen. Die 
bringen nun die Lösung für mein Problem. In meinem .do-File mache ich 
das nun wie folgt und es funktioniert prima:
vlib work
vmap work work
vcom -explicit  -93 "my_module.vhd"
vcom -explicit  -93 "my_module_tb.vhd"
for {set x 1} {$x <= 11} {incr x} 
{  vsim -gMY_GENEIC_VALUE=$x -t 1fs -lib work my_module_tb
   ...
   run 1 us
}

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.