Есть ли механизм для импорта пакета systemverilog под другим именем, аналогичный тому, который доступен в Python?
У меня есть пакет, который мне нужно импортировать, и имя пакета top_pkg
. Я хочу импортировать его как subsystem_pkg
Есть ли механизм для импорта пакета systemverilog под другим именем, аналогичный тому, который доступен в Python?
У меня есть пакет, который мне нужно импортировать, и имя пакета top_pkg
. Я хочу импортировать его как subsystem_pkg
Механизм есть, но для этого он непростой. Что вы можете сделать, так это создать subsystem_pkg
, который импортирует top_pkg
. Затем вы можете export
все символы, импортированные из top_pkg
, чтобы они выглядели так, как если бы они были прямо объявлены внутри subsystem_pkg
Обычно, только те символы, которые объявлены внутри пакета, доступны для импорта, а не то, что импортировано пакетом (иногда это называется цепочкой импорт). Команда export
связывает импорт.
Что делает это трудным для этой цели, так это то, как подстановочные знаки работают для импорта и экспорта. Каждый символ, который вы хотите связать, должен явно появляться в пакете цепочки. Например
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
Первый оператор import
говорит сделать все символы в кандидатах в top_pkg для импорта; на самом деле он ничего не импортирует. Второй оператор импорта явно импортирует b
. Первый оператор export
говорит об экспорте любого символа, который был импортирован из top_pkg
, который на данный момент равен только b
. Второй оператор export
неявно импортирует, а затем явно экспортирует c
. Последний оператор вызывает неявный импорт d
, а также неявный экспорт 'd'.
Поэтому, когда вы импортируете subsystem_pkg
, вы получаете символы b, c и d из top_pkg
, а также локально объявленный `e.