Beim Versuch, ein Unternehmen mit einem formellen generic-Paket zu deklarieren (ieee.fixed_generic_pkg
):VHDL 2008> generic-Paket in einer Einheit: Fehler erwarten BASICID oder EXTENDEDID
library ieee;
context ieee.ieee_std_context;
entity myent is
generic (package myfpkg is new ieee.fixed_generic_pkg generic map (<>));
end entity;
Ich erhalte die folgende Fehlermeldung:
Syntax error at or near "package", expecting BASICID or EXTENDEDID
ich habe auch versucht:
library ieee;
context ieee.ieee_std_context;
use ieee.fixed_generic_pkg;
entity myent is
generic (package myfpkg is new ieee.fixed_generic_pkg generic map (<>));
end entity;
funktioniert das auch nicht.
Wenn ich jedoch jede Dummy-Instanz des Pakets deklarieren, es funktioniert ohne Fehler:
library ieee;
context ieee.ieee_std_context;
package fpkg is new ieee.fixed_generic_pkg;
--
library ieee;
context ieee.ieee_std_context;
entity myent is
generic (package myfpkg is new ieee.fixed_generic_pkg generic map (<>));
end entity;
Was deklarieren ein Unternehmen mit einem formellen generic Paket der richtige Weg ist, ohne dass vorher ein instanziiert Paket des gleichen Typs?
EDIT
Das Tool Ich benutze ist HDL Designer 2015.1b. Ich denke, dass generische Pakete unterstützt werden. Tatsächlich wirft das folgende Beispiel keinen Fehler:
library slfnlib;
use slfnlib.gen_consts;
use slfnlib.gen_wb_ctypes;
package gen_ctypes is
generic (package cs is new slfnlib.gen_consts generic map (<>));
package wb is new slfnlib.gen_wb_ctypes generic map (
g_mo => cs.g_mo,
g_bas => cs.g_bas);
end package;
EDIT2
Während mit mehreren generischen Paketen (Erklärungen, instantiations, Verwendung ...) arbeitet, erkennen ich, dass die vollständigen Projekte richtig kompiliert werden. Ich habe auch mehrmals denselben Fehler bekommen, wenn ich nur Teile davon analysiert habe.
Dann kam ich zu dem Schluss, dass ich kein generisches Paket/Entity mit DesignChecker allein analysieren kann. Es gibt jedoch eine einfache Problemumgehung, die nur darin besteht, diese Komponenten so zu verwenden, wie es bei jedem praktischen Entwurf der Fall wäre. Das sollte sowieso gemacht werden, um das Design zu simulieren und zu synthetisieren. Die Kernaussage kümmert sich nicht darum, was die Tools bieten, bis der Code als praktisches Design tatsächlich Sinn macht.
Es könnte sich lohnen zu beschreiben, welches Tool/welche Version dies meldet. Einige Tools unterstützen möglicherweise noch keine generischen Pakete. –
Ich habe die Frage bearbeitet, um die Tool-/Versionsinformationen anzuzeigen. Außerdem habe ich ein Beispiel hinzugefügt, das funktioniert. –