Hallo allerseits,
mal wieder bei der Umsetzung eines Verilog DDR2-Modells in VHDL.
Da hab' ich mir selbst ein Bein gestellt. Im Verilog-Modell waren
mehrere tasks, die ich als PROCEDURE "übersetzt" habe, ohne dabei zu
realisieren, daß diese Tasks Signale aus dem Toplevel der Testbench
setzen müssen.
Das geht natürlich nur, wenn die PROCEDURE innerhalb eines PROCESS
definiert ist.
So funktioniert's dann auch:
1 | init_proc : PROCESS
|
2 | PROCEDURE init IS
|
3 | BEGIN
|
4 | ...
|
5 | END init;
|
6 | BEGIN
|
7 | WAIT UNTIL rising_edge(clk);
|
8 |
|
9 | IF r /= '0' THEN
|
10 | init;
|
11 | r <= '0';
|
12 | END IF;
|
13 | END PROCESS;
|
Das scheint auch so zu funktionieren. Bloß: "schön" ist anders - anstatt
einfach die Prozedur aufzurufen, muß ich nun an "r" wackeln, zusätzlich
das Ding kopieren, wenn ich's in mehreren Prozessen brauche. Irgendwie
nicht so, wie ich mir das gedacht habe.
Gibt's 'ne "schönere" Möglichkeit?
Danke!