Ich habe mehrere Prozesse innerhalb einer Testbench, die auf einen
Master Controller oder Subprozeduren warten und passend anworten. In
einem Unterprogramm schreibe ich dann z.B. dies hier:
1 | wait until (buffer_is_free = '1');
|
... wobei der Buffer frei sein könnte oder noch belegt, weshalb ich
schon von "rising_edge" weggegangen bin. Der Prozess soll also gfs
warten oder aber schon sofort losrennen, wenn das Signal auch 1 ist.
Gesteuert wird das Signal von "unten" und funktionier korrekt. Das kann
man im Modelsim sehen.
Trotzdem klebt der Prozess oben an genau dieser Stelle fest und wartet.
Wenn das Signal aber mal 0 war und dann auf 1 geht, funktioniert es.
Genauso ist es, wenn der Prozess oben "früher" kommt und fragt und noch
auf ein Null trifft. Dann sieht er die kommende Eins!.
Nur wenn es schon Eins ist, bleibt er hängen. Warum will wait until ein
togglen sehen?
Wie könnte man das lösen?