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?
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
>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); |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.