预处理器能否判断SystemVerilog是否已启用?

预处理器能否判断SystemVerilog是否已启用?,verilog,system-verilog,Verilog,System Verilog,我希望能够编写如下代码: `ifdef SYSTEMVERILOG_ENABLED .. systemverilog code here. `else .. verilog-2001 equivalent code here. `endif 但是SystemVerilog参考手册似乎没有引用任何这样的标准预定义常量。这似乎是一个疏忽——有没有一种简单的方法来实现我的意图?是的,有编译器指令开始关键字“版本说明符”和结束关键字,其中: version_specifier ::= 1

我希望能够编写如下代码:

`ifdef SYSTEMVERILOG_ENABLED
  .. systemverilog code here.
`else
 .. verilog-2001 equivalent code here.
`endif

但是SystemVerilog参考手册似乎没有引用任何这样的标准预定义常量。这似乎是一个疏忽——有没有一种简单的方法来实现我的意图?

是的,有编译器指令
开始关键字“版本说明符”
结束关键字
,其中:

version_specifier ::=
    1800-2009
  | 1800-2005
  | 1364-2005
  | 1364-2001
  | 1364-2001-noconfig
  | 1364-1995
LRM的示例:

`begin_keywords "1364-2001" // use IEEE Std 1364-2001 Verilog keywords
module m2 (...);
reg [63:0] logic; // OK: "logic" is not a keyword in 1364-2001
...
endmodule
`end_keywords
IEEE 1800-2009第22.14章对此进行了介绍


就我个人而言,我从未使用过这些工具,因此我不知道这些工具对它们的支持有多好。

是的,有编译器指令
begin\u关键字“version\u specifier”
end\u关键字
,其中:

version_specifier ::=
    1800-2009
  | 1800-2005
  | 1364-2005
  | 1364-2001
  | 1364-2001-noconfig
  | 1364-1995
LRM的示例:

`begin_keywords "1364-2001" // use IEEE Std 1364-2001 Verilog keywords
module m2 (...);
reg [63:0] logic; // OK: "logic" is not a keyword in 1364-2001
...
endmodule
`end_keywords
IEEE 1800-2009第22.14章对此进行了介绍


就个人而言,我从未使用过这些工具,因此我不知道这些工具对它们的支持程度。

同意。引入了关键字说明符,以便可以使用较新的标准解析遗留代码,而无需更改标识符名称。”do作为dataout的缩写出现了很多,但一旦SystemVerilog出现,它就变成了一个关键字,不再进行解析。新代码应该避免在任何标准中使用保留字。同意。引入了关键字说明符,以便可以使用较新的标准解析遗留代码,而无需更改标识符名称。”do作为dataout的缩写出现了很多,但一旦SystemVerilog出现,它就变成了一个关键字,不再进行解析。新代码应该避免在任何标准中使用保留字。