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

OP #1118237
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
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
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
OP
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?
Gast
> ggf könnte man das ganze aber auch über ein Generic lösen?
Dabei gibt es das gleiche Problem. Das ist der Grund warum ich hier 
gelandet bin :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.