2016-07-07 25 views
1

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.

+1

Es könnte sich lohnen zu beschreiben, welches Tool/welche Version dies meldet. Einige Tools unterstützen möglicherweise noch keine generischen Pakete. –

+0

Ich habe die Frage bearbeitet, um die Tool-/Versionsinformationen anzuzeigen. Außerdem habe ich ein Beispiel hinzugefügt, das funktioniert. –

Antwort

2

Ihr Code sieht ähnlich aus wie im Beispiel in Abschnitt 6.5.7.2 des LRM ("Generic map aspects"), außer dass Ihre oberste Ebene eine Entität ist, während es in ihrem Beispiel ein Paket ist.

Ihr ursprünglicher Code kompiliert gut auf den beiden Tools, die ich ausprobiert habe, so sieht es für mich aus, als ob ein Problem in welchem ​​Werkzeug Sie verwenden. Ich schlage vor, Sie nehmen es mit dem Werkzeugverkäufer auf.

+0

Danke für den Versuch. Ich benutze HDL Designer 2015.1b. Darf ich wissen, welche Werkzeuge du ausprobiert hast? –

+0

Es tut mir leid, Sie dürfen nicht. Sie werden wahrscheinlich feststellen, dass die öffentliche Diskussion darüber, was Ihr Tool tun kann und was nicht, gegen die Lizenzbedingungen verstößt. In meinem Job bin ich den verschiedenen Anbietern sehr dankbar für ihre Unterstützung und nehme diese Lizenzbedingungen ernst. –

+1

@MatthewTaylor, während der Brief der Lizenz kann sagen, dass in der Praxis, Lieferanten sind wahrscheinlich keine Einwände gegen eine Aussage, dass ihr Werkzeug die Arbeit macht! –