仅将一个文件的默认网络类型设置为 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
- 然后使用该宏和文件结尾
在 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
- 然后使用该宏和文件结尾