Die Handhabung der Parametrierung in SystemVerilog-Pakete

SystemVerilog Hinzugefügt-Pakete zu bieten namespaces für gemeinsame code-Teile (Funktionen, Typen, Konstanten, etc.). Aber da die Pakete nicht instanziiert werden, Sie können nicht parametrisiert werden, so dass der Umgang mit parametrisierten Mitglieder ist problematisch. In der Praxis ich habe festgestellt, dass dies ziemlich eingeschränkt, da sehr oft meine benutzerdefinierte Typen haben einige Parameter, die diktieren, Feldbreite usw..

Ich in der Regel beschäftigen sich mit dieser durch die Verwendung von Parametern mit default-Werten und nur das Verständnis, dass ich muss zurück zu gehen, ändern Sie die package-source-code für einige Anwendungen, die offenbar sehr falsch für mich. Aber ich habe noch einen Weg zu finden, um dieses mehr sauber. Zum Beispiel:

package my_pkg;
    parameter ADDR_MSB = 7;
    parameter DATA_MSB = 31;

    typedef struct {
        logic [ADDR_MSB:0] address;
        logic [DATA_MSB:0] data;
    } simple_struct_t;

endpackage

Hat jemand gefunden, ein sauberer Umgang mit diesem? Ich würde gerne hören, über Sie, seit ich denken Pakete sind eine sehr leistungsstarke Ergänzung zu SV Aktivierung sicherer code wiederverwenden, aber diese Einschränkung ist ziemlich schwerwiegend.

InformationsquelleAutor JeffW | 2010-10-09
Schreibe einen Kommentar