我希望能够编写这样的代码:
`ifdef SYSTEMVERILOG_ENABLED
.. systemverilog code here.
`else
.. verilog-2001 equivalent code here.
`endif
但SystemVerilog参考手册似乎没有引用任何此类标准预定义常量。这似乎是一种疏忽 - 是否有一种简单的方法可以做我想要的事情?
答案 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章对此进行了介绍。
就个人而言,我从未使用过这些,所以我不知道这些工具对它们的支持程度如何。