Hallo Leute,
ich habe einen VHDL Code, der folgendes tun soll:
Er soll Zeilenweise auslesen soll.
Bisher hat der Code auch immer gut funktioniert, jetzt habe ich aber ein
sehr großes File (~400.000 Zeilen) und da bekomme ich bei der Synthese
den Error:
[Synth 8-403] loop limit (65538) exceeded .
Variablendeklaration:
1 | VARIABLE c : character;
|
2 | VARIABLE line_count : natural := 0;
|
3 | FILE RamFile : text;
|
4 | VARIABLE RamFileLine : line;
|
5 | VARIABLE I : natural := 0;
|
6 | VARIABLE v_RAM : RamType := (OTHERS => (OTHERS => g_init_value));
|
7 | VARIABLE v_hex_value : std_logic_vector((4 * linelength) - 1 DOWNTO 0);
|
8 | VARIABLE v_bin_value : std_logic_vector(linelength - 1 DOWNTO 0);
|
9 | (g_hex : boolean := true --> generic)
|
Hier der Code:
1 | FOR c IN 0 TO line_count - 1 LOOP
|
2 | readline(RamFile, RamFileLine);
|
3 | -- hex is generic
|
4 | IF g_hex THEN
|
5 | -- read hex values
|
6 | hread(RamFileLine, v_hex_value);
|
7 | v_RAM(I) := v_hex_value(g_width - 1 DOWNTO 0);
|
8 | ELSE
|
9 | -- read bin values
|
10 | read(RamFileLine, v_bin_value);
|
11 | v_RAM(I)(linelength - 1 DOWNTO 0) := v_bin_value;
|
12 | END IF;
|
13 | I := I + 1;
|
14 | END LOOP;
|
Ich habe auch schon folgendes probiert:
1 | VARIABLE c : integer range 0 to 600000;
|
2 | VARIABLE line_count : natural range 0 to 600000;
|
Aber ich bekomme immer den Fehler loop limit (65538) exceeded.
Ich verstehe das nicht, da integer ja eigentlich 32 Bit haben, warum
kann er dann nur 16 Bit nutzen ?
Viele Grüße & Vielen dank für die Hilfe.