将 systemverilog 包导入为另一个名称

Importing systemverilog package as another name

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

我有一个包需要导入,包名是top_pkg。我想将其导入为 subsystem_pkg

有一种机制,但要做到这一点并不容易。您可以做的是创建一个导入 top_pkgsubsystem_pkg。然后你可以 exporttop_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.