Forum: FPGA, VHDL & Co. Modelsim Fehlermeldung: Unknown expanded name


von Matthias G. (mgottke)


Lesenswert?

Ich stehe vor einem Rätsel, warum Modelsim mir folgenden Fehler anzeigt:
1
# ** Error: my_module.vhd(123): Unknown expanded name
Dieser weitst auf folgende Zeile:
1
my_sl_en <= work.my_lib.ENABLED;
1
Die Bibliothek ist in my_module wie folgt eingebunden:
2
library work;
3
use work.my_lib.all;
In der Library selbst sehe ich auch keinen Fehler
1
library ieee;
2
use ieee.std_logic_1164.all;
3
package my_lib is
4
   constant ENABLED : std_logic := '1';
5
end my_lib;
In anderen Modulen nutze ich dies ebenfalls in der Art und es führt zu 
keinen Problemen. Die Bibliothek muss ich mit einbeziehen, da die 
Konstante in weiteren Bibliotheken vorhanden ist.

Hat jemand eine Idee was da falsch sein könnte?

von SuperWilly (Gast)


Lesenswert?

Hast du das Package "my_lib" kompiliert ?

Gruß,
SuperWilly

von Matthias G. (mgottke)


Lesenswert?

> Hast du das Package "my_lib" kompiliert ?

ja, und auch vor my_module und ohne Fehler.

Wenn ich die Bibliothek weg lasse, also so:
1
my_sl_en <= ENABLED;
dann bringt er erwartungsgemäß folgenden Fehler:
1
# ** Error: my_module.vhd(123): (vcom-1078) Identifier "enabled" is not directly visible.
2
#    Potentially visible declarations are:
3
#         work.my_lib.enabled (constant)
4
#         work.my_other_lib.enabled (constant)
Also muss das doch eigentlich kennen (und können).

von Matthias G. (mgottke)


Lesenswert?

> Also muss das doch eigentlich kennen (und können).
-- Ups -- hier werden Sie geholfen. ;-)

Aber mal im Ernst, hat keiner eine Idee wo da der Fehler liegen könnte? 
Und warum Modelsim diese Meinung vertritt?

von Matthias G. (mgottke)


Lesenswert?

Ich sehe gerade, dass ich noch ein Zeile der Fehlermeldung unterschlagen 
habe. Die vollständige Fehlermeldung lautet:
1
# ** Error: my_module.vhd(123): Unknown expanded name
2
# ** Error: my_module.vhd(123): Selected name is type (error); expecting type ieee.std_logic_1164.std_logic.
Leider bringt mich das aber auch nicht weiter. In meiner Bibliothek ist 
die Konstante "ENABLED" doch vom Typ "std_logic".

von Duke Scarring (Gast)


Lesenswert?

Na so ohne denn komplette Quelltext wird es nur ein raten.
Ich würde die Konstante testweise mal umbenennen.

Duke

von Matthias G. (mgottke)


Lesenswert?

@Duke
> Na so ohne denn komplette Quelltext wird es nur ein raten.
> Ich würde die Konstante testweise mal umbenennen.
Ich werde es mal nach Ostern versuchen. Den Quelltext kann ich aber 
nicht anhängen. Wäre auch viel zu lang. Die wichtigsten Auszüge habe ich 
aber gepostet.

von Matthias G. (mgottke)


Lesenswert?

Es scheint für das Problem keine Lösung zu geben. Jedenfalls ist mir das 
unerklärlich. In anderen Modulen verwende ich das auf identische Art und 
es führt zu keinerlei Fehlern und Problemen.

von Nabil Sayegh (Gast)


Lesenswert?

Ich hatte eben dasselbe Problem.
Das Problem war, dass ich ein signal "work" genannt habe.
Hat mich drei Stunden gekostet das herauszufinden %-|

von Matthias G. (mgottke)


Lesenswert?

Nabil Sayegh schrieb:
> Das Problem war, dass ich ein signal "work" genannt habe.

Ooooh, danke für den Hinweis. Dann macht diese Fehlermeldung auch 
wirklich Sinn. Ich glaube bei mir heißt auch ein Signal "work". Das muss 
ich morgen mal kontrollieren.

von Matthias G. (mgottke)


Lesenswert?

Ja, das wars, Nabil Sayegh hat die Lösung gefunden. Vielen Dank!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Matthias G. schrieb:
> Ich glaube bei mir heißt auch ein Signal "work".
Und wie passt das damit zusammen:
>>> Dieser weist auf folgende Zeile:
>>> my_sl_en <= work.my_lib.ENABLED;

von Nabil S. (lilalinux)


Lesenswert?

Lothar Miller schrieb:
> Und wie passt das damit zusammen:
>>>> Dieser weist auf folgende Zeile:
>>>> my_sl_en <= work.my_lib.ENABLED;

Der expandierte Name ist dann "das_signal_namens_work.my_lib.ENABLED", 
was natuerlich nicht existiert. Signale haben beim Expandieren scheinbar 
vorrang vor libs und in unseren Faellen gab es beides :-/

von Matthias G. (mgottke)


Lesenswert?

Nabil Sayegh schrieb:
> Signale haben beim Expandieren scheinbar
> vorrang vor libs und in unseren Faellen gab es beides :-/

Genau.

> Und wie passt das damit zusammen:

Wenn ich das Signal "work" vom Typ als record deklariere, dann könnte es 
ja das Signal work.my_lib.ENABLED geben.
Gelernt habe ich daraus, dass "work" als Signalname denkbar ungeeignet 
ist. Das sollte man fast zu den reservierten Wörter bei VHDL mit dazu 
nehmen.

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.