C / C ++コンパイル時コールバックをバインドする方法があると確信しています。ただし、サポートgenerate
ブロック(IEEE Std 1364-2001で導入)である限り、次のようなことができます。
generate
if (CONDITION > MAX_ALLOWED /* your condition check */ ) begin
illegal_parameter_condition_triggered_will_instantiate_an non_existing_module();
end
endgenerate
条件が真の場合、存在しないものに対する要求があるため、コンパイラーはエラーを出します。条件がfalseの場合、操作はスキップされます。唯一の要件は、不正な条件のコードが有効なVerilog構文に従い、不正な条件が誤って有効になることがないことです(したがって、長くて冗長な存在しないモジュール名)。
シミュレーターと合成ツールがIEEE Std 1800-2009(2009年にリリースされたSystemVerilogリビジョン)またはそれより新しいリビジョンをサポートしている場合は$error()
、エラーと一緒に、より意味のあるメッセージを使用して伝えることができます。ベンダーがこの機能をまだ実装しているかどうかはわかりません。ほとんどのベンダーが実装されると、これが推奨される方法になるはずなので、例を挙げましょう。
generate
if (CONDITION > MAX_ALLOWED /* your condition check */ ) begin
$error("%m ** Illegal Condition ** CONDITION(%d) > MAX_ALLOWED(%d)", CONDITION, MAX_ALLOWED);
end
endgenerate