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

时间:2013-03-05 21:35:33

标签: verilog system-verilog

我希望能够编写这样的代码:

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

但SystemVerilog参考手册似乎没有引用任何此类标准预定义常量。这似乎是一种疏忽 - 是否有一种简单的方法可以做我想要的事情?

1 个答案:

答案 0 :(得分:4)

是的,有编译器指令begin_keywords "version_specifier"end_keywords,其中:

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章对此进行了介绍。

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