mikrocontroller.net

Forum: FPGA, VHDL & Co. ModelSim: Warning: Case choice must be a locally static expression


Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

aus unerfindlichen Gründen spuckt das ModelSim folgende Warnungen aus:
# ** 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:
package xyz_lib is
   ...
   constant ADDR_XYZ : std_logic_vector(31 downto 0) := x"00000000";
   ...
end xyz_lib;

xyz.vhd:
library work;
use work.xyz_lib.all;
   ...
architecture behavior of xyz is
   ...
   case my_addr is
      when ADDR_XYZ (10 downto 2) => ...;
   ...
end xyz;
Hat jemand ne Idee?

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht so:
library work;
use work.xyz_lib.all;
   ...
architecture behavior of xyz is
   ...
   variable tmp_addr: std_logic_vector(my_addr'range);
   ...
   tmp_addr := my_addr;
   case tmp_addr is
      when ADDR_XYZ (10 downto 2) => ...;
   ...
end xyz;

Duke

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liegt das Problem eher an
   case my_addr is
oder an
      when ADDR_XYZ (10 downto 2) => ...;
Was ja auch die Warnung nahelegt?

Wenn du schreibst
      when "000000000" => ...;
ist dann die Warnung weg?

Autor: DI UV (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: DI UV (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
b) "einfach ignorieren" ist richtig. Modelsim meckert, aber nicht das 
synthesetool, ich habe etliche FPGA's mit solchen designs, alle 
funktionieren.

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> b) "einfach ignorieren" ... alle funktionieren.

Vielen Dank an "DI UV" und natürlich auch an die anderen.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ggf könnte man das ganze aber auch über ein Generic lösen?

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.