mikrocontroller.net

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


Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich stehe vor einem Rätsel, warum Modelsim mir folgenden Fehler anzeigt:
# ** Error: my_module.vhd(123): Unknown expanded name
Dieser weitst auf folgende Zeile:
my_sl_en <= work.my_lib.ENABLED;
Die Bibliothek ist in my_module wie folgt eingebunden:
library work;
use work.my_lib.all;
In der Library selbst sehe ich auch keinen Fehler
library ieee;
use ieee.std_logic_1164.all;
package my_lib is
   constant ENABLED : std_logic := '1';
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?

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das Package "my_lib" kompiliert ?

Gruß,
SuperWilly

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht 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:
my_sl_en <= ENABLED;
dann bringt er erwartungsgemäß folgenden Fehler:
# ** Error: my_module.vhd(123): (vcom-1078) Identifier "enabled" is not directly visible.
#    Potentially visible declarations are:
#         work.my_lib.enabled (constant)
#         work.my_other_lib.enabled (constant)
Also muss das doch eigentlich kennen (und können).

Autor: Matthias G. (mgottke)
Datum:

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

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe gerade, dass ich noch ein Zeile der Fehlermeldung unterschlagen 
habe. Die vollständige Fehlermeldung lautet:
# ** Error: my_module.vhd(123): Unknown expanded name
# ** 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".

Autor: Duke Scarring (Gast)
Datum:

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

Duke

Autor: Matthias G. (mgottke)
Datum:

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

Autor: Matthias G. (mgottke)
Datum:

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

Autor: Nabil Sayegh (Gast)
Datum:

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

Autor: Matthias G. (mgottke)
Datum:

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

Autor: Matthias G. (mgottke)
Datum:

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

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

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

Autor: Nabil Sayegh (lilalinux)
Datum:

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

Autor: Matthias G. (mgottke)
Datum:

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

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.