Hallo,
ich habe gestern angefangen mich mit Modelsim zu beschäftigen. Zuerst
habe ich mal das Tutorial in der Modelsim Doku durchgearbeitet, wo ein
Counter mit seiner testbensch getestet wird. Das hat funktioniert.
Jetzt wollte ich mal ein eigenes Modul testen. Ich nehme also das Modul,
mache mir ein Modelsim Projekt, erstelle den Ordner work, kopiere dort
das Modul hinein und erstelle eine Testbench. Anschließend wird alles
kompiliert und mit der Testbench die Simulation gestartet.
Leider bekomme ich immer den Fehler
# ** Error: (vsim-3601) Iteration limit reached at time 0 ns.
# ** Note: (vsim-3602) Delays were truncated during elaboration of the
design.
Ich habe herumgeforscht, und herausgefunden, dass ich irgendwo einen
infinity loop habe, aber leider weiß ich nicht, was ich nun dagegen tun
soll.
Hier ist mal das Modul und die Testbensch:
Kann das von euch einmal jemand "durchnudeln" und mir sagen, wo mein
Fehler ist, damit ich endlich mal mit dem simulieren anfangen kann?!?
Vielen Dank und Gruß,
Maik
> Funktioniert augenscheinlich so, wie es im Quelltext dasteht.
Hätte ich auch erwartet...
@ Maik Ritter
Simulierst du die falsche Datei?
BTW:
Mir fällt auf, dass Änderungen am Takt bench_clk und die Änderung an
bench_in_binary zeitgleich kommen. Das wird nicht deine Absicht sein.
Zumindest jede zweite Zuweisung an bench_in_binary wird nicht
verarbeitet werden. Du solltest die Taktfrequenz mindestens verdoppeln
;-)
Ich schätze mal dass die Zeitauslösung zu hoch ist, zumindet habe ich
dieselbe Iteration Limit Fehlermeldung sobald ich mit Zeitauflösungen >=
100 ns simuliere.
Übrigens: fehlt da fürs Zweierkomplement nicht noch das Inkrement?
LG
Matthias
> Ich nehme also das Modul, mache mir ein Modelsim Projekt, erstelle den> Ordner work, kopiere dort das Modul hinein und erstelle eine Testbench
Ich kann mir zwar nicht ganz vorstellen, dass es daran liegt, aber ich
habe noch nie gehört, dass man in den Libraries herumkopieren darf.
Du solltest jedes Modul in die Library hineincompiliern.
Soviel ich weiss, gehören zur Library auch Indizes und andere
Verwaltungsinformationen.
Hallo an alle!
Vielen Dank für eure Hilfe!
@Duke: Genau das was da bei dir rauskommt wünsche ich mir, aber er gibt
mir immer nur diese Fehlermeldungen aus, die ich gepostet habe. Du hast
auch nichts in dem Quelltext geändert, oder? Kannst du vielleicht noch
mal Schritt für Schritt schreiben, wie du meinen Quellen zum Laufen
gebracht hast?!?
@Lothar: Nein, das mit den 20ns ist nur einer meiner verzeiwfelten
Versuche gewesen etwas zum laufen zu bekommen . . . .
@Matthias: Das mit der Zeitauflösung werde ich gleich mal ausprobieren,
aber warum ist das denn so, wenn es wirklich dann klappen sollte? Wenn
du dir übrigens noch mal den auskommentierten Code im Modul anschaust,
dann findest du auch das inkrement ;-)
@Klaus: Ich kopiere die beiden Dateien so wie es im Tutorial beschrieben
ist in den Ordner work, danach öffne ich sie in Modelsim und kompiliere
dann auch in Modelsim. Habe ich genauso mit den beiden Modelsim
testfiles Counter und TCounter gemacht. Da hat auch die Simulation
geklappt . . .
Gruß,
Maik
@Maik: Der Simulator benutzt intern eine Auflösung, die du ihm
einstellst. Das ist die Auflösung, die er für Zeitschritte verwenden
kann. Ich würde nicht mein Leben darauf verwetten, aber es müsste bei zu
großer Auslösung (größer als Taktrate) eigentlich das passieren, dass
der Simulator die nächste Taktflanke auf einen folgenden Delta-Delay
Cycle zum selben Zeitpunkt schedult. Er kriegt nun also einen Haufen
Flankenwechsel auf der clock mit Zeitabstand 20 ns, da er aber nur
Zeitabstand 100 ns intern darstellen kann macht er eben einen
Flankenwechsel bei 0 ns plus einem Delta Cycle daraus.
Am Ende kann er die Simulationszeit nicht weiterzählen sondern zählt nur
Delta Delays ... bis er das Limit bei diesen erreicht.
Ich simuliere inzwischen prinzipiell mit 1 ps Zeitauflösung, weil auch
so mancher IP Core feinere Auflösungen braucht und es nicht immer klar
in der Dokumentation verrät.
LG
Matthias
Hi Matthias,
kannst du mir auch noch sagen, wo ich diese Auflösung einstelle? Unter
Simulate-> Runtime Options habe ich das nicht gefunden . . .
Sorry wegen der Elementaren Fragen, aber ich finde die Doku zu Modelsim
alles andere als verständlich, wenn man noch nie damit gearbeitet hat.
Gruß,
Maik
Hi Duke,
vielen Dank, jetzt läuft es. Man muss allerdings "vsim -t 1ps
work.convert_2s_complement_test" schreiben, damit es geht.
Modelsim wird sicher noch für die eine oder andere Frage gut sein . . .
;-)
Gruß,
Maik
Du kannst das auch mit einem Projekt machen und vor der Simulation
rechts unten klicken, dort wo die Datei ausgewählt wird. (Simulate)
"testbensch"
Der Testmensch und seine Testbensch auf der Restränsch, ISBN
078-4575-3345, 1982