次のようなコードを記述できるようにしたいと思います。
`ifdef SYSTEMVERILOG_ENABLED
.. systemverilog code here.
`else
.. verilog-2001 equivalent code here.
`endif
しかし、SystemVerilogリファレンスマニュアルは、そのような標準の事前定義された定数を参照していないようです。これは見落としのようです-私がここで意図していることを行う簡単な方法はありますか?
次のようなコードを記述できるようにしたいと思います。
`ifdef SYSTEMVERILOG_ENABLED
.. systemverilog code here.
`else
.. verilog-2001 equivalent code here.
`endif
しかし、SystemVerilogリファレンスマニュアルは、そのような標準の事前定義された定数を参照していないようです。これは見落としのようです-私がここで意図していることを行う簡単な方法はありますか?
はい、コンパイラ指令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
これは、IEEE1800-2009の第22.14章で説明されています。
個人的には、これらを使用したことがないので、ツールがどれだけうまくサポートしているかわかりません。