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