有导入的SystemVerilog包作为另一个名字的机制,类似于在Python可用?导入SystemVerilog的包作为另一名
我有一个包,我需要进口,而包的名称是top_pkg
。我想导入为subsystem_pkg
有导入的SystemVerilog包作为另一个名字的机制,类似于在Python可用?导入SystemVerilog的包作为另一名
我有一个包,我需要进口,而包的名称是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
时,你可以从top_pkg
得到符号b,c和d以及本地声明的e。
谢谢戴夫。我决定使用一个独立的包文件,其中包含我需要的文件 – noobuntu
只要没有人导入这两个包,并且两个包之间没有通信,就可以工作。请参阅http://go.mentor.com/package-import-versus-include –