Forum: FPGA, VHDL & Co. Signal setzen in TCL Testbench


von Robert S. (razer) Benutzerseite


Lesenswert?

Hallo an alle,

In VHDL habe ich einen eigenen Typen definiert:
1
type  alu_op_code is (
2
        ALU_OP_IDLE,
3
        ...
4
);

Ich habe in TCL eine Testbench, und möchte nun ein solches Signal 
setzen. Dies wird in TCL normalerweise mit dem Befehl "force" gemacht.

Für ein std_logic signal schaut das folgendermaßen aus:
1
force signal_name '0'

Nur wie funktioniert das mit einem eigenen Typen?

Danke im Voraus
lg Robert

von Christian R. (supachris)


Lesenswert?

Hmmm, Testbenches werden normalerweise in VHDL oder Verilog geschrieben. 
TCL ist zur Steuerung des Simulators gedacht. Das Force ist nur eine 
Hilfskrücke, setz das Signal doch wie jeder andere in der VHDL 
Testbench.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Robert S. schrieb:
> Nur wie funktioniert das mit einem eigenen Typen?
Ich würde da nachsehen: wie ist std_logic definiert, und wie force ich 
da ein Signal?
Und dann: wie ist mein Typ definiert, und wie würde man da ein Signal 
forcen?

Aber viel besser wäre es langfristig, wenn du die Testbench wie alle 
anderen auch in VHDL schreiben würdest.

von Robert S. (razer) Benutzerseite


Lesenswert?

In der Zwischenzeit habe ich einen Wrapper in VHDL geschrieben, der mir 
für die Testbench ein Typenmapping macht.

Für dieses Projekt bin ich leider an eine TCL-Testbench angewiesen.
Ich muss aber sagen, das funktioniert sehr gut.

In TCL habe ich Funktionen geschrieben zB.
1
proc ALU_LOAD_A0 {val}
2
proc ALU_AND  {val}
3
proc CHECK_A0 {val}

Ein High-Level Modell geschrieben in einer Hochsprache generiert mir 
Aufrufe der TCL Funktionen in einem separaten TCL-File wie zB. das 
folgende:
1
ALU_LOAD_A0 F0
2
ALU_AND     3F
3
ALU_CHECK   30

Das File wird jetzt in der Testbench direkt mit dem Befehl source 
eingebunden.

Wenn die Simulation gestartet wird, wird zuerst das High-Level Modell 
gestartet um die Testcase-Daten zu generieren (randomisiert) und 
anschließend das Simulationstool (alles gesteuert über Makefiles). Das 
Simulationstool führt das TCL-File aus und schreibt die Ergebnisse nach 
stdout bzw. in eine Datei.

Robert

von berndl (Gast)


Lesenswert?

naja, das mag ja alles funktionieren. Aber was machst du, wenn du mal 
einen Simulator in den Fingern hast, der kein TCL kann?

Also ich wuerde dir auch raten, wie schon oben von anderen angemerkt, 
das ganze komplett in VHDL zu machen. Damit funktioniert dann jeder 
Simulator. Vlt. graebst du den Design ja in ein paar Jahren mal wieder 
aus, hast dann aber eine andere Plattform/Simulator...

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.