テキスト マクロを使用してパラメータを定義したいのMYTYPE
ですが、その値はテキスト マクロによって渡されます。
`define MY_FEATURE(nam,def) parameter nam=def;
その後
`MY_FEATURE(MYTYPE, 1)
しかし、値は、他のテキスト マクロによって定義されたものによって混合されます。
`MY_FEATURE(NEWTYPE, 2)
`MY_FEATURE(MYTYPE, NEWTYPE)
後者のケースは、def
indefine MY_FEATURE
に指示ドットを追加しない限り機能しません。
この 2 つの異なるケースを区別し、マクロが定義されている場合にのみマクロを自動的に展開する必要があるため、このコードを思いつきましたが、エラーが発生しました。
`define yea 1
`define nop 0
`define MY_FEATURE(nam,def) `ifdef def parameter nam=`def; `else parameter nam=2; `endif
module test;
`MY_FEATURE(MYTYPE,yea)
initial begin
$display("%d",MYTYPE);
end
endmodule
上記のコードは機能し、1
出力として a を提供します。しかし、私が書くなら
`MY_FEATURE(MYTYPE,10)
他のケースでは、実際の数値をパラメーターに割り当てる必要があるため、取得します
`ifdef without a macro name - ignored.
私の望ましい結果はMYTYPE
10として割り当てられています.これを達成する方法はありますか? ありがとう。
コードはここにあり ます http://www.edaplayground.com/x/6Jha