System verilog 以其他名称导入systemverilog包

System verilog 以其他名称导入systemverilog包,system-verilog,uvm,System Verilog,Uvm,是否有一种机制可以将systemverilog包作为另一个名称导入,类似于Python中可用的名称 我有一个需要导入的包,包的名称是top\u pkg。我想将其导入为子系统\u pkg有一个机制,但要实现此目的并不容易。您可以做的是创建一个导入top\u-pkg的subsystem\u-pkg。然后,您可以导出从top\u pkg导入的所有符号,因此它们将显示为直接在subsystem\u pkg中声明。通常,只有在包中声明的符号才是可导入的,而不是包已导入的符号(有时称为导入链接)。expor

是否有一种机制可以将systemverilog包作为另一个名称导入,类似于Python中可用的名称


我有一个需要导入的包,包的名称是
top\u pkg
。我想将其导入为
子系统\u pkg

有一个机制,但要实现此目的并不容易。您可以做的是创建一个导入
top\u-pkg
subsystem\u-pkg
。然后,您可以
导出
top\u pkg
导入的所有符号,因此它们将显示为直接在
subsystem\u 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中的所有符号作为候选输入;它实际上并没有导入任何东西。第二条import语句显式导入
b
。第一个
export
语句表示导出从
top\u pkg
导入的任何符号,此时该符号仅为
b
。第二个
export
语句隐式导入,然后显式导出
c
。最后一条语句导致隐式导入
d
,以及隐式导出“d”


因此,当您导入
subsystem\u-pkg
时,您会从
top\u-pkg
以及本地声明的'e'中获得符号b、c和d。

有一种机制,但实现这一目的并不容易。您可以做的是创建一个导入
top\u-pkg
subsystem\u-pkg
。然后,您可以
导出
top\u pkg
导入的所有符号,因此它们将显示为直接在
subsystem\u 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中的所有符号作为候选输入;它实际上并没有导入任何东西。第二条import语句显式导入
b
。第一个
export
语句表示导出从
top\u pkg
导入的任何符号,此时该符号仅为
b
。第二个
export
语句隐式导入,然后显式导出
c
。最后一条语句导致隐式导入
d
,以及隐式导出“d”


因此,当您导入
subsystem\u-pkg
时,您会从
top\u-pkg
中获得符号b、c和d以及本地声明的'e.

谢谢Dave。我决定使用一个单独的包文件,其中包含我需要的文件,只要没有人导入这两个包,并且这两个包之间没有通信,就可以工作。谢谢你,戴夫。我决定使用一个单独的包文件,其中包含我需要的文件,只要没有人导入这两个包,并且这两个包之间没有通信,就可以工作。看见