$displayのように複数のパラメータを持つマクロを作成したいと思います。
できません。VerilogおよびSystemVerilogは、可変個引数マクロをサポートしていません。
これを文字列または出力のフォーマットに使用することが目標であり、あちこちに入力する必要がないようにする場合の回避策は次のとおりです$sformat
。単一の引数を持つようにマクロを定義し、その引数を。と組み合わせることができます$sformat
。これを行う際の注意点は、マクロを使用するときに引数を括弧で囲む必要があることです。
()
の'$sformatf
はマクロの一部ではないことに注意してください。
`define format_macro(A) \
$write("%s", $sformatf A ); \
次に、これを行うことができます:
`format_macro(("a = %d", a))
`format_macro(("a = %d, b = %d", a, b))
ところで、 UVMでメッセージングをカスタマイズする方法を示す優れたスクリーンキャストがここにあります。その中で、作成者は、UVMを使用している場合のその他の優れたヒントとともに、このマクロ手法を示しています。