ISim - Stoppt nach 2,5us

Gast #1352400
Lesenswert?

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
Gast #1352449
Lesenswert?

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...
Gast #1352585
Lesenswert?

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
#1352670
Lesenswert?

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.
Gast #1352715
Lesenswert?

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?
#1352755
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #1352904
Lesenswert?

> 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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren