systemverilogにはifコンパイラ指令はありません。したがって、次の行は間違っています:systemverilogの回避策 `if if compiler directive
`define BITS 16
reg[`BITS-1:0] my_reg;
...
`if `BITS > 10
my_reg[31] = 1'b0;
endif
...
警告/エラーがある場合は `なし。
どうすれば解決できますか?
systemverilogにはifコンパイラ指令はありません。したがって、次の行は間違っています:systemverilogの回避策 `if if compiler directive
`define BITS 16
reg[`BITS-1:0] my_reg;
...
`if `BITS > 10
my_reg[31] = 1'b0;
endif
...
警告/エラーがある場合は `なし。
どうすれば解決できますか?
あなたは、手続きif
声明
if (`BITS > 10)
my_reg[31] = 1'b0;
とコンパイラ/シンセサイザは定数式で分岐文を出し最適化することができます。 if
ステートメントによって余分なロジックが作成されないことを意味します。
my_reg[(`BITS>31) ? 31 : 0] = 1'b0;
1800年から2012年LRM、22.5.1を必要とする:は「`定義ディレクティブが作成されますテキスト置換のマクロ。例:。:あなたのニーズに応じて、parameter
/localparam
を使うべき数値パラメータについては
`define D(x,y) initial $display("start", x, y, "end");
`D("msg1" , "msg2") // expands to 'initial $display("start", "msg1", "msg2", "end");'
。