将 systemverilog 包导入为另一个名称
Importing systemverilog package as another name
是否有一种机制可以将 systemverilog 包导入为另一个名称,类似于 Python 中可用的机制?
我有一个包需要导入,包名是top_pkg
。我想将其导入为 subsystem_pkg
有一种机制,但要做到这一点并不容易。您可以做的是创建一个导入 top_pkg
的 subsystem_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_pkgcandidates中的所有符号导入;它实际上并没有导入任何东西。第二个 import 语句显式导入 b
。第一个 export
语句表示导出从 top_pkg
导入的任何符号,此时只有 b
。第二个 export
语句隐式导入,然后显式导出 c
。最后一条语句导致隐式导入 d
,以及隐式导出 'd'.
因此,当您导入 subsystem_pkg
时,您会从 top_pkg
获得符号 b、c 和 d 以及本地声明的 `e.
是否有一种机制可以将 systemverilog 包导入为另一个名称,类似于 Python 中可用的机制?
我有一个包需要导入,包名是top_pkg
。我想将其导入为 subsystem_pkg
有一种机制,但要做到这一点并不容易。您可以做的是创建一个导入 top_pkg
的 subsystem_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_pkgcandidates中的所有符号导入;它实际上并没有导入任何东西。第二个 import 语句显式导入 b
。第一个 export
语句表示导出从 top_pkg
导入的任何符号,此时只有 b
。第二个 export
语句隐式导入,然后显式导出 c
。最后一条语句导致隐式导入 d
,以及隐式导出 'd'.
因此,当您导入 subsystem_pkg
时,您会从 top_pkg
获得符号 b、c 和 d 以及本地声明的 `e.