guten tag, habe folgendes Problem: Mein simulator (Modelsim) stoppt bei 0ps mit einer fehlerrmeldung: iteration limit reached at time 0 ps wie kann man sowas debuggen ? Modelsim ist in diesem fall etwas sparsam mit Ursachen-Angaben. Danke, Michaeli
Schau mal bei der Synthese nach warnungen bezüglich kombinatorischer Schleifen und Latches. Vieleicht liegt es daran. Vieleicht wurde aber auch das Kompilieren wegen irgeneinem Feler abgebrochen.
> wie kann man sowas debuggen ?
Dein Code hat einen Fehler :-/
Ich tippe auf eine kombinatorische Schleife.
Was steht da sonst noch bei der Meldung?
Bekommst du irgendwelche Warnungen beim Compilieren?
Hallo, am synthese-fähigen Code liegt es wohl nicht, da ich den Code erfolgreich durch die Synthese bekomme. Also bleibt der Testbench-Code übrig. Und als Fehlermeldung steht da lediglich, dass das iteration limit erreicht wurde, sonst nichts. Was kann man in Modelsim machen ? Michaeli
> am synthese-fähigen Code liegt es wohl nicht, da ich den Code > erfolgreich durch die Synthese bekomme. Diese Behauptung ist etwas gewagt... :-/ Läuft der auch, und tut er was er soll? Such mal den Synthesereport nach solchen Meldungen durch: ...combinatorial loop... ...latch... Nehmen wir mal diese simple aber falsche Beschreibung eines Zählers mit Enable-Eingang:
1 | library IEEE; |
2 | use IEEE.std_logic_1164.all; |
3 | use IEEE.numeric_std.all; |
4 | |
5 | entity CombLoop is |
6 | Port (en : in STD_LOGIC; |
7 | cnt : out STD_LOGIC_VECTOR (7 downto 0)); |
8 | end CombLoop; |
9 | |
10 | architecture Behavioral of CombLoop is |
11 | signal c : unsigned (7 downto 0) := "00000000"; |
12 | begin
|
13 | c <= c+1 when en='1'; |
14 | cnt <= std_logic_vector(c); |
15 | end Behavioral; |
Heraus kommt: Process "Synthesize" completed successfully Im Synthesereport steht aber auch: Xst:737 - Found 8-bit latch for signal <c>. Wenn en auf '1' ist, sagt der Simulator: # ** Error: (vsim-3601) Iteration limit reached at time 0 ps. QED. Sieh dir zu dem Thema mal das an: http://www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleife Poste mal deinen VHDL-Code, wenn man diesen Fehler mal gemacht hat, erkennt man den blitzschnell.
Hallo, u.U. hast du einen Prozess, in dem du weder auf eine Signaländerung noch auf den Ablauf einer Zeit wartest. Das passiert gern mal im Testbench. Tom
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.