Forum: FPGA, VHDL & Co. must be a globally static expression


von Hans-Werner (Gast)


Angehängte Dateien:

Lesenswert?

Folgendes Problem:
Es werden zwei generische Paramter definiert.

generic
  (
    address_width_quicksort   : integer := 8;
    data_width_quicksort   : integer := 8
  );

Aus einem der beiden Parameter wird die Grösse des Stacks berechnet.

constant stack_size : positive := (address_width_quicksort+3) * 2;

Es werden ausserdem vier Subtypen deklariert.

----------------------------> This are the internal data types
  subtype data_type_ram is std_logic_vector (data_width_quicksort - 1 
downto 0);
  subtype address_type_ram is std_logic_vector(address_width_quicksort - 
1 downto 0);
  subtype data_type_stack is std_logic_vector (data_width_quicksort - 1 
downto 0);
  subtype address_type_stack is std_logic_vector (stack_size - 1 downto 
0);

Es werden anschliessend zwei Signale definiert, die in der folgenden 
Generate-Anweisung verwendet werden.

  signal data_width_stack : integer := data_width_quicksort;
  signal address_width_stack : integer := 8;

generate_stack : if true
  generate
    generate_the_stack:
      ram generic map (address_width_ram  => address_width_stack,
                  data_width_ram     => data_width_stack)
         port map (
                --------------- Inputs
                clock_read_ram    => clock_quicksort,
                clock_write_ram    => clock_quicksort,
                data_in_ram       => data_in_stack_internal,
                write_enable_ram    => write_enable_stack_internal,
                write_address_ram   => write_address_stack_internal,
                read_enable_ram    => read_enable_stack_internal,
                read_address_ram    => read_address_stack_internal,
                --------------- Outputs
                data_out_ram      => data_out_stack_internal
              );
  end generate generate_stack;

Bei Aufruf der Generate-Anweisung knallt es mit folgender Fehlermeldung.

ERROR:HDLParsers:3305 - "D:/EDA Design/Xilinx ISE
   Projekte/Quicksort/Quicksort.vhd" Line 205.  The actual value (Signal
   'address_width_stack') associated with a generic must be a globally 
static
   expression.
ERROR:HDLParsers:3305 - "D:/EDA Design/Xilinx ISE
   Projekte/Quicksort/Quicksort.vhd" Line 206.  The actual value (Signal
   'data_width_stack') associated with a generic must be a globally 
static
   expression.

Was ist die Ursache und wie kann ich diese vermeiden ?
Die gesamte Datei findet sich im Anhang.
Das Programm ist noch unvollständig.

Danke für jede Hilfe

von Joko (Gast)


Lesenswert?

ändere
  signal data_width_stack : integer := data_width_quicksort

in
  constant data_width_stack : integer := data_width_quicksort

dann sollte es gehen...

von Joko (Gast)


Lesenswert?

natürlich analoges Vorgehen für "address_width_stack"

Hintergrund: generics müssen zur synthesezeit konstant sein - also
KEIN signal

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.