我正在编写一个简单的Verilog模块,需要对其参数值进行限制。我的意思是只允许将某些值分配给通用参数。我知道这可以在 VHDL 中完成,Verilog 中是否有等效的或解决方法?我问这个问题是因为 Xilinx 编译器似乎看到了一个极端情况值,如果我的参数在某个范围内,则该值永远不会出现。
我尝试检查初始块中的参数,如果超出允许的范围,则执行 $fatal 。这似乎是一个非常肮脏的解决方案......
如果您可以使用 Vivado 支持的 SystemVerilog,则使用生成 if 块很容易。
module top;
dut #(1) u1 ();
endmodule
module dut;
parameter p;
if (!( p inside {[2:3]}) ) $fatal("sorry");
endmodule