Forum: FPGA, VHDL & Co. Modelsim - signal_force()


von Der Besucher (Gast)


Lesenswert?

Hallo,

ich möchte innerhalb eines Designs aus der Testbench heraus ein internes 
Signal (Bus) forcen.

Das Signal im Design sein mal:
signal b : std_logic_vector(7 downto 0);

...

Das Signal, welches als Referenz dient sei:
signal a : std_logic_vector(7 downto 0);

...

Nun möchte ich a einen Wert zuweisen und ihn auch an b übergeben. 
Folgendes Konstrukt funktioniert schonmal:
a <= Wertzuweisung;

if a(0)  = '1' then signal_force("/tb/b(0)", "1" , 0 ns, freeze, open, 
0);
               else signal_force("/tb/b(0)", "0" , 0 ns, freeze, open, 
0); end if;
if a(1)  = '1' then signal_force("/tb/b(1)", "1" , 0 ns, freeze, open, 
0);
               else signal_force("/tb/b(1)", "0" , 0 ns, freeze, open, 
0); end if;
...
if a(7)  = '1' then signal_force("/tb/b(7)", "1" , 0 ns, freeze, open, 
0);
               else signal_force("/tb/b(7)", "0" , 0 ns, freeze, open, 
0); end if;

Ist mir aber irgendwie zu umständlich.
Mit einer Schleife habe ich es auch schon probiert, was aber nicht zum 
Erfolg führte.
Ich suche nun nach einer eleganteren Beschreibung die in etwa so 
aussieht:

signal_force("/tb/b", a , 0 ns, freeze, open, 0);

Hat jemand eine Idee, wie man Modelsim dazu überreden kann?

Der Besucher

von Der Besucher (Gast)


Lesenswert?

Suche immer noch nach einer eleganten Lösung.

Der Besucher

von Ottmar (Gast)


Lesenswert?

Du spiegelst das Signal aus dem Design in die Testbench. Dazu benutzt du 
zu dem signal_force verwandte signal_spy's.
Nun kannst du das Spiegel Signal in der TB beliebig mittels vhdl 
schreiben und lesen.

Aus der Doku:
The init_signal_spy() utility mirrors the value of a VHDL signal or 
Verilog register/net onto an existing VHDL signal or Verilog register. 
This allows you to reference signals, registers, or nets at any level of 
hierarchy from within a VHDL architecture (such as a test bench).

von Der Besucher (Gast)


Lesenswert?

Ottmar schrieb:
> Nun kannst du das Spiegel Signal in der TB beliebig mittels vhdl
> schreiben und lesen.

Schreiben klappt bei mir leider nicht. Auf jeden Fall sehe ich keine 
Auswirkungen auf das Signal, welches sich im Design befindet.

Der Besucher

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.