Forum: FPGA, VHDL & Co. Simulationsstart - Debugging


von Michaeli (Gast)


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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?

von Michaeli (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

Hast du die Simulations-Auflösung auf 1ps gestellt?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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.

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

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
Noch kein Account? Hier anmelden.