仅将一个文件的默认网络类型设置为 none

Set default net type to none only for one file

在 SystemVerilog 中,您可以像这样将默认网络类型设置为 none

`default_nettype none

这会影响其余的编译单元,它们可能包含多个源文件。如果你想让它只影响当前文件,你必须在最后将它设置回wire

`default_nettype none

// Your code here

`default_nettype wire

但是,这并不理想。它总是会将其重置为 wire,即使它已经是 none。有没有办法恢复它设置为 none 之前的值?类似于 C++ 的 #pragma push().

IEEE 标准 1800-2017 不支持检测 default_nettype 的当前值或任何以前的值。第 22.8 节 `default_nettype 仅讨论设置值的方式;它没有提到任何跟踪以前值的方法。

这是 SystemVerilog 中所有编译器指令的普遍问题,而不仅仅是 `default_nettype。没有预处理器堆栈。您可以采取多种措施来解决此问题。

  • 设置你的编译脚本来单独编译你的文件,或者
  • 一些工具有类似于C编译器的设置,将命令行上的每个文件编译成一个单独的编译单元。
  • 如果您仍然需要一个编译单元中的所有内容,您可以这样做
    `define MY_GLOBAL_NETTYPE \
     `default_nettype none
  • 然后使用该宏和文件结尾