Hallo, Ich versuche einen asynchronen Prozess (VHDL) in Modellsim zu simulieren. Dieser Prozess triggert auf kein Signal, soll also permanent laufen. Nun verfängt sich Modelsim jedoch in diesem Prozess in einer Endlosschleife. Auch mit einem wait statement und sehr kleinen Werten ändert sich das Verhalten nicht. Also so ein Prozess name: process end process Danke für jede Hilfe im Vorhinein. Lg.
Mario Grotschar schrieb: > ieser Prozess triggert auf kein Signal, soll also permanent > laufen. Nun verfängt sich Modelsim jedoch in diesem Prozess in einer > Endlosschleife. Bei einem Prozess ohne Sensitivitätsliste und ohne wait ist das kein Wunder. Das bedeutet, dass er zu jedem Zeitpunkt unendlich mal durchlaufen wird. > Auch mit einem wait statement und sehr kleinen Werten > ändert sich das Verhalten nicht. Da ist das Problem, dass ein Modelsim, als event-basierter Simulator, nur mit endlicher Zeitauflösung simuliert. Die ist - glaube ich - standardmäßig auf 1ns eingestellt. D.h. das alle Zeiträume < 1 ns auf 0 ns abgerundet werden, quasi sofot ablaufen. Die zeitliche Auflösung kannst Du allerdings beim starten der Simulation mit -t <auflösung> einstellen. Z.B. vsim -t 1 ps
Hmm was wäre die Bestpractice für die Simulation eines Prozesses ohne Sensitivity list?
Mario Grotschar schrieb: > Hmm was wäre die Bestpractice für die Simulation eines Prozesses ohne > Sensitivity list? Erst mal die Antwort auf die Frage: wozu brauchst du sowas?
process ohne sensitivity list macht keinen sinn, das hat auch nix mit der simulationsauflösung zu tun. ein prozess beschreibt ein paar gatter, und der ausgang kann sich nunmal nur ändern, wenn sich ein eingang ändert...
Sowas hat doch nur zum Beispiel bei Takterzeugung für die Simulation Sinn:
1 | Clock_100 : Process |
2 | Begin
|
3 | CLK <= '0'; |
4 | wait for 5 ns; |
5 | CLK <= '1'; |
6 | wait for 5 ns; |
7 | End Process; |
ein process ohne wait und sensitivity list ist automatisch eine endlosschleife, irgendwann verrent sich der simulator in deltazykles...
dave schrieb: > ein process ohne wait und sensitivity list ist automatisch eine > endlosschleife, irgendwann verrent sich der simulator in deltazykles... Und sogar eine Concurrent-Zuweisung hat eine (implizite) Sensitivliste: nur wenn sich eines der betroffenen Signale ändert, wird die Zuweisung neu berechnet.
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.