【问题标题】:Set default net type to none only for one file仅将一个文件的默认网络类型设置为无
【发布时间】:2021-10-26 13:53:32
【问题描述】:

在 SystemVerilog 中,您可以将默认网络类型设置为none,如下所示:

`default_nettype none

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

`default_nettype none

// Your code here

`default_nettype wire

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

【问题讨论】:

  • 请注意,将 default_nettype 设置为“none”以外的任何值通常会导致难以调试的编码错误。所以,最好为每个人设置为 none 并修复verilog问题。
  • 当然可以。但在我从事的一个庞大项目中,它被设置为wire,我无法一次解决所有问题。

标签: system-verilog


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-03
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 2019-10-26
      相关资源
      最近更新 更多