系统Verilog 模块命名空间



我将两种设计组合成一个芯片设计。 RTL代码是用SystemVerilog编写的,用于合成。不幸的是,这两种设计包含许多名称相同但逻辑略有不同的模块。

SystemVerilog 中是否有命名空间或库功能允许我指定具有相同名称的不同模块? 换句话说,是否有一个lib1::module1,lib2::module1语法可以用来指定我想要的模块?如何最好地处理这种模块命名空间污染?

谢谢

查看configlibrary。参见 IEEE Std 1800-2017 § 33。配置设计的内容

library将根据文件路径将此文件映射到目标库(IEEE Std 1800-2017 § 33.3.图书馆(
config将映射用于瘫痪模块(全局、实例、子范围(的库(IEEE Std 1800-2017 § 33.4。配置(

第 33.8 节中提供了示例。
注意:某些模拟器希望在命令行中-libmap <configfile>。请参阅您的模拟器手册。

不幸的是,Verilog和System verilog都没有为设计元素(包括模块(的命名空间问题提供全面的解决方案。V2K 库和配置语句(是的,它们是在 verilog v2k 中引入的(可以部分帮助您解决仅针对模块的此问题,并且前提是您提前计划并使用正确的方法来实现它。没有多少人尝试使用 v2k 库来解决它。

您可能会发现其中的其他部分。它包括其他设计元素,宏名称,文件名,包名称,...系统验证使引入全局范围使情况变得更糟。

因此,根据设计的复杂程度,您可以使用 v2k 库修复它。但总的来说,解决方案始终在于方法论和预先将这些名称统一起来。一些公司甚至尝试通过自动重写verilog代码来使用即时单化,以使这些名称唯一。

您还可以使用编译单元解决一些问题,如 SV 标准中所定义,并且至少由主要工具供应商实现。

最新更新