Hallo zusammen,
ich stolpere gerade über mein eigenes Design und bei der Fehlersuche ist
mir klar geworden, dass ich noch ein paar Verständnisprobleme habe.
Am Anfang jeder vhd, egal ob ENTITY oder PACKAGE wird ja die Standard
Library IEEE eingebunden. Darin enthalten sind std_logic_1164 und
numeric_std.
1 | LIBRARY ieee;
|
2 | USE ieee.std_logic_1164.ALL;
|
3 | USE ieee.numeric_std.ALL;
|
Nun erstelle ich mir meine eigene Library, um meine eigenen Files dort
hin zu kompilieren:
Dort werden nun sämtliche vhd einkompiliert:
1 | vcom -work project_lib .../package.vhd
|
2 | vcom -work project_lib .../funktionen1.vhd
|
3 | vcom -work project_lib .../zwei.vhd
|
Im Package habe ich diverse Constanten und Generics übersichtlich
zusammengefasst.
Nun instanziiere ich meine Entities im Topfile mit
1 | i0_zwei : entity project_lib.zwei
|
Das erspart mir, dass ich den COMPONENT nochmal extra definieren muss
und nur die Instanz habe - finde ich einfach übersichtlicher und wenn
sich was ändert, hat man eine Baustelle weniger.
Damit das aber funktioniert, binde ich im Topfile meine project_lib ein.
1 | LIBRARY project_lib;
|
2 | USE project_lib.ALL;
|
Damit auch meine Konstanten erkannt und belegt werden, muss ich auch das
Package einbinden.
1 | LIBRARY project_lib;
|
2 | USE project_lib.ALL;
|
3 | USE project_lib.package.ALL;
|
Nun kommt es aber immer wieder vor, dass in einzelnen vhd die Library
unbekannt ist.
Ich achte darauf, dass das Entity vor dessen Instanz compiliert wird,
dass die nachfolgend kompilierte Datei das Entity auch kennt.
Schließt der Teil
auch diesen Teil automatisch mit ein?
1 | USE project_lib.package.ALL;
|
Wann muss ich ersteres verwenden und wann zweiteres?
Ich kommen gerade nicht weiter. Wahrscheinlich habe ich da noch ein
Verständnisproblem und daher ist die Lib unbekannt, obwohl ich meiner
Meinung nach alles richtig gemacht habe.
Hat jemand einen Hinweis für mich, wie man in diese verschachtelte Welt
der vhdl-Beschreibung am schnellsten und besten zurecht kommt?
Vielen Dank!
Alex
PS: Kann ich im Modelsim, bevor ich alles neu kompilieren lassen, die
aktuelle Lib leeren bzw. löschen?