Hallo zusammen! Folgendes Problem: Die ganze Zeit hat der Simulator im Webpack (ISim) wunderbar funktioniert. Jetzt will er nicht mehr länger als 2,5us simulieren. Er bricht dann einfach ab mit der Meldung "Simlator is stopped" Hat jemand Erfahrungen damit oder eine Idee woran es liegen könnte? Danke, Tobias
Schau mal ob er irgenwo noch nen anderen Fehler ausgibt, die Simulation wird abgebrochen wenn du im VHDL Code z.B. Fehler hast.
> Hat ... eine Idee woran es liegen könnte? Am VHDL-File, an der Simulation oder den Einstellungen... > Die ganze Zeit hat der Simulator im Webpack (ISim) funktioniert. Was hast du geändert, dass jetzt nichts mehr geht?
Hallo! Eigentlich hab ich nichts geändert, zumindest nicht das ich wüsste. Ich werd alles nochmal nachschaun... Wenn ich eine neue Testbench erstelle und garkeine Stimuli vorgebe läuft das, also muss es wohl irgendwo am Code liegen...
> also muss es wohl irgendwo am Code liegen...
Tja, da müsst man den mal sehen... :-/
Hallo nochmal! Ja, der Code ist etwas länglich, denn wollt ich jetzt hier nicht reinstellen. Hab nochmal rekapituliert, was ich gemacht habe. Der Fehler ist jetzt behoben, es lag anscheinend daran, dass ich die sensitivity-lists von ein paar Prozessen geändert habe. Manchmal hat mir der Simulator dann folgendes angezeigt, dass es keinen stabilen Wert für ein Signal ermitteln konnte. Verstehen tu ich das trotzdem nicht. Was genau machen denn die Sensitivity-Lists? Ist es nicht so, dass der Prozess nur dann ausgeführt wird, wenn sich das darin aufgeführte Signal ändert? Gruß Tobias
Es stimmt, dass die Sensitivity List dem Simulator sagt, dass dieser Prozess ausgeführt werden soll, wenn sich eines der in der SL aufgeführten Signale ändert. Es kann aber passieren, dass man "Schleifen" baut, sodass der Simulator de facto an einem Simulationszeit ewig in einer Schleife laufen würde. Damit das nicht passiert setzt zb Modelsim eine obere Grenze. Ich könnte mir vorstellen, dass so etwas bei dir passiert ist. Dann wäre aber die dabei entstehende HW interessant, da muss dann ja auch eine Schleife drin sein.
Okay, verstehe. Wie wird sowas in der Hardware umgesetzt? Also wie wird ein Prozess umgesetzt, der nur unter bestimmten Bedingungen, bzw. bei der Änderung bestimmter Signale ausgeführt werden soll?
Im Prinzip pfeift die Synthese auf die Sensitivity List. Kombinatorische Prozesse werden so verdrahtet, wie die Zuweisungen im Prozess stehen, bei getakteten Prozessen wird das ganze dann eben mit flankensensitiven Elementen umgesetzt (sofern man das ganze nicht so seltsam hinschreibt, dass die Synthese nicht erkennt, dass man da Flip-Flops beschreibt). Daher sind fehlende Signale bei der Sensitivity List auch sehr böse und gefährlich, weil der Simulator dann ein anderes Verhalten simuliert, als die HW zeigen wird. Daher sollte man bei Warnungen bzgl fehlenden Signalen in der SL genau schauen. Der emacs, der übrigens mit dem VHDL Mode ein sehr, sehr, sehr brauchbares Tool fürs VHDL Codieren ist bietet auch die Möglichkeit, die SL eines Prozesses selbst mit allen Signalen, die im Prozess gelesen werden, zu beschreiben. Da sollte dann nichts mehr schiefgehen können.
> Also wie wird ein Prozess umgesetzt, der nur unter bestimmten Bedingungen, > bzw. bei der Änderung bestimmter Signale ausgeführt werden soll? Änderung: Dazu brauchst du eine Flankenerkennung. Mit einem globalen FPGA-Takt (z.B. 25-200MHz) wird ein Signal in FF gespeichert. Wenn das Speicher-FF ungleich dem Signal ist, haben wir eine Änderung. So wie dort z.B.: http://www.lothar-miller.de/s9y/categories/18-Flankenerkennung
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.