locally static expression

Gast #297691
Lesenswert?
• ▲
▼
VHDL ist doch sehr eigenartig. Folgendes ended in eine "Choice FOO is
not a locally static expression" Warning:
1
package pkg_la_register is
2

3
   subtype addr_t is unsigned(7 downto 0);
4
   subtype addr_base_t is unsigned(addr_t'range);
5

6
   constant EXT_TRIGGER_BASE : addr_base_t 
7
      := (7|6 => '1', others => '0');
8

9
   constant MSB_BASE   : natural := addr_base_t'high;
10
   constant LSB_BASE   : natural := 4;
11

12
   subtype addr_msb_t is unsigned(MSB_BASE-LSB_BASE downto 0);
13

14
   constant ADDR_EXT_TRIGGER_BASE : addr_msb_t 
15
      := EXT_TRIGGER_BASE(MSB_BASE downto LSB_BASE);
16
   ...
und
1
  case address(MSB_BASE downto LSB_BASE) is         
2
      when ADDR_EXT_TRIGGER_BASE => ... -- WARNING

Wie konstant bzw. variable kann denn eine Konstante denn sein, selbst
in einer package?? Lt. google gibt's tolle Begründungen und auch
Lösung wie: man schreibe doch gleich:
1
constant ADDR_EXT_TRIGGER_BASE : addr_msb_t := "01010...."

Na, dann kann ich mir die ganzen Identifier Kram eh sparen und sofort
los hacken ... Habe ich beim googeln etwas übersehen? andere Lösungen?
Ziel ist zumindest den oberen Teil des Address Busses vom unteren
abzuspalten und in einer verschachtelten case zu verarbeiten. Lt.
google ist die Lokalität mehr ein "Pünktchen" (selbst convert
funktions wie to_integer() in einer Zuweisung sind nicht mehr lokal).

Da es ja hoffentlich nach der Synthese auch noch Konstanten bleiben,
ist die Meldung eher nur nervig bei der Synthese. Modelsim hat dafür
einen eigenen switch.

Viele Grüße
Olaf
Gast #297692
Lesenswert?
• ▲
▼
Hi!

Genau mit sowas habe ich heute auch gekämpft...
Googeln hat mir auch nicht geholfen.
Ich hab mich jetzt entschlossen die Warnings zu ignorieren
da sowohl Schaltung als auch Simulation gut aussehen.
An einer Lösung wäre ich auch interessiert :D
Gast #297693
Lesenswert?
• ▲
▼
versuch nicht ZU schlau zu sein, un benutze das wovon man weiss das es
geht. sonst gibts es arger umsonst.

die FPGA synthese tools, habe alle nur gewissen massen HDL support,
vieles was auch gehen sollte geht nicht oder falsch

Antti

Antwort schreiben

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.

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.