ModelSim: Warning: Case choice must be a locally static expression

#1118237
Lesenswert?

Hallo zusammen,

aus unerfindlichen Gründen spuckt das ModelSim folgende Warnungen aus:
1
# ** Warning: xyz.vhd(313): Case choice must be a locally static expression.
Dabei nutze ich doch lediglich eine Konstante, die in einer separaten 
Library definiert ist. Wenn ich an Stelle der Konstanten direkt den Wert 
in der Case-Anweisung eingebe dann ist die Warnung weg.

xyz_lib.vhd:
1
package xyz_lib is
2
   ...
3
   constant ADDR_XYZ : std_logic_vector(31 downto 0) := x"00000000";
4
   ...
5
end xyz_lib;

xyz.vhd:
1
library work;
2
use work.xyz_lib.all;
3
   ...
4
architecture behavior of xyz is
5
   ...
6
   case my_addr is
7
      when ADDR_XYZ (10 downto 2) => ...;
8
   ...
9
end xyz;
Hat jemand ne Idee?
Gast #1118275
Lesenswert?

Vielleicht so:
1
library work;
2
use work.xyz_lib.all;
3
   ...
4
architecture behavior of xyz is
5
   ...
6
   variable tmp_addr: std_logic_vector(my_addr'range);
7
   ...
8
   tmp_addr := my_addr;
9
   case tmp_addr is
10
      when ADDR_XYZ (10 downto 2) => ...;
11
   ...
12
end xyz;

Duke
Gast #1118411
Lesenswert?

Das Problem liegt in den zwei files,

locally static heisst das es bei der Übersetzung (und nicht erst während 
der Laufzeit der Simulation) des betreffenden Case zweiges bekannt und 
unveränderliche  sein muss. In deinem Beispiel steht die Konstante nicht 
in der selben datei sondern in der Bibliothek xyz_lib. Diese Bibliothek 
kanns du ja nach der Kompilation neu zu weisen dann ist es nicht mehr 
"locally canstant".

Merke:  "locally static" meint nicht Konstant im sinne einer Konstanten.
Siehe auch: http://www.vhdl-online.de/glossary/deutsch/g_13.htm
#1118440
Lesenswert?

so weit so gut, habe es halbwegs verstanden. Ich weis zwar nicht wer auf 
so einen Gedanken kommt und die Bibliothek nochmals neu zuweist. Aber 
ist ja theoretisch möglich und damit die Aussage richtig.

Was mir noch fehlt, sind die Schlüsse die ich daraus ziehen sollte:

a) Wie kann ich das Problem sinnvoll umgehen? Die Konstanten sollten 
weiterhin in einer Projektlibrary stehen, da sie ja in verschiedenen 
VHDL-Modulen genutzt werden.

b) Oder welche Auswirkungen kann das in meinem Design haben. Kann das zu 
Problemen führen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren