2017-04-26 3 views
1

Gibt es einen Mechanismus zum Importieren eines Systemverilog-Pakets als einen anderen Namen, ähnlich dem, der in Python verfügbar ist?Importieren des Systemverilog-Pakets als anderer Name

Ich habe ein Paket, das ich importieren muss, und der Name des Pakets ist top_pkg. Ich möchte es als subsystem_pkg

Antwort

4

importieren Es gibt einen Mechanismus, aber es ist nicht einfach für diesen Zweck. Sie können einen subsystem_pkg erstellen, der top_pkg importiert. Dann können Sie export alle Symbole importiert von top_pkg, so dass sie erscheinen, als ob sie direkt innerhalb subsystem_pkg deklariert wurden Normalerweise sind nur die Symbole in einem Paket deklariert, was zum Importieren verfügbar ist, nicht was das Paket importiert hat (manchmal eine Verkettung von Einfuhren). Der Befehl export kettet die Importe.

Was dies für diesen Zweck schwierig macht, ist die Art, wie Wildcarding für Import und Exporte funktioniert. Jedes Symbol, das Sie verketten möchten, muss explizit im Verkettungspaket erscheinen. Zum Beispiel

package top_pkg; 
    int a,b,c,d; 
endpackage 
package subsystem; 
    import top_pkg::*; 
    import top_pkg::b; 
    export top_pkg::*; 
    export top_pkg::c; 
    int e = d; 
endpackage 

Die erste import Aussage sagen alle Symbole in top_pkg Kandidaten für die Einfuhr machen; Es importiert nichts. Die zweite Importanweisung importiert explizit b. Die erste export Anweisung besagt, jedes Symbol zu exportieren, das aus top_pkg importiert wurde, das zu diesem Zeitpunkt nur b ist. Die zweite export-Anweisung importiert implizit und exportiert dann explizit c. Die letzte Anweisung bewirkt einen impliziten Import von d sowie einen impliziten Export 'd'. Wenn Sie subsystem_pkg importieren, erhalten Sie die Symbole b, c und d von top_pkg sowie das lokal deklarierte `e.

+0

Danke Dave. Ich entschied mich, eine separate Paketdatei zu verwenden, die die Dateien enthielt, die ich speziell brauche – noobuntu

+1

Das würde funktionieren, solange niemand beide Pakete importiert und keine Kommunikation zwischen den beiden Paketen besteht. Siehe http://go.mentor.com/package-import-versus-include –

Verwandte Themen