mikrocontroller.net

Forum: FPGA, VHDL & Co. ISim - Stoppt nach 2,5us


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal ob er irgenwo noch nen anderen Fehler ausgibt, die Simulation 
wird abgebrochen wenn du im VHDL Code z.B. Fehler hast.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> also muss es wohl irgendwo am Code liegen...
Tja, da müsst man den mal sehen...   :-/

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias F. (flint)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Matthias F. (flint)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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-Flan...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.