Funktionsaufrufe kapseln

Gast #843022
Lesenswert?

Ich möchte meine VHDL-Testbench besser strukturieren und z.B. 
organisierte Abläufe von der eigentlichen Testumgebung trennen, weil 
sowohl Ablauf, als auch Testumgebung varieren. Z.B. habe ich mehrere 
Hardwarekonstellationen (altes Prozessorboard, neues Prozessorbard mit 
jeweils alten AD-Wandlern und neuen Wandlern), die mit unterschiedlichen 
Testbenches zusammengesetzt sind, welche aber auf dieselbe Weise geprüft 
werden müssen. Da ich die verschiedenen Testbaläufe nur einmal schreiben 
und dann zu den Testbenches hinzuladen will, sollen die als 
Funktionsaufrufe abgespalten werden und in eine eigene Datei. Die 
Funktionen sollen aber trotzdem die Signale an die einzelnen Module in 
der Testumgebung anlegen können.

Problem: Wie komme ich über die entity-Grenze hinweg?
Gast #843063
Lesenswert?

Hallo,

verwende ein Package, in dem du globale Signale definierst.
Diese globalen Signale können in der gesamten Design-Hierarchie über die 
Entity-Grenzen hinweg gesetzt und abgefragt werden. Das Package muss 
natürlich im entsprechenden Modul eingebunden werden :
library work;
use work.pkg_test.all;


Vorsicht ist geboten, wenn man das globale Signal von mehreren Modulen 
aus treiben möchte, das geht ohne Weiteres schief.

Dieses Vorgehensweise funktioniert ausschließlich für Simulation.

Gruß,
Fpga4u
Gast #848518
Lesenswert?

>verwende ein Package, in dem du globale Signale definierst.

Wie mache ich das? Ich habe oben in Package ein Signal definiert, kann 
es aber nicht einmal IM Package selber treiben.

"cannot drive this signal from this subprogra"
1
package drive_output is
2
  signal global_signal : std_logic_vector(7 downto 0);
3
  
4
-- drive output signal
5
procedure move_motor
6
(
7
  signal inputs : in  std_logic_vector(47 downto 0);
8
  signal outputs : out std_logic_vector(35 downto 0);
9
  signal code : in  std_logic_vector(15 downto 0)
10
);

Ich treibe ich alle Signale über outputs mit move_motor 
(inputs,outputs,code); und möchte eigentlich dahin kommen, daß ich 
schreiben kann :

move_motor (code);

Im Package soll dann je nach Code verzeigt werden und in Abhängigkeit 
der Inputs die Outputs getrieben werden.



1
move_motor (inputs,outputs,code);

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