Modelsim - signal_force()

Gast #1731380
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
Gast #1771799
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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren