假设我有一个可参数化的 Verilog 模块,如下例所示:
// Crunches numbers using lots of parallel cores
module number_cruncher
#(parameter NUMBER_OF_PARALLEL_CORES = 4)
(input clock, ..., input [31:0] data, ... etc);
// Math happens here
endmodule
使用 Verilog 1364-2005,我想编写一个测试平台,在这个模块上运行具有许多不同值的测试NUMBER_OF_PARALLEL_CORES
。
我知道可行的一个选项是使用一个generate
块来创建一堆number_cruncher
具有不同值的不同 s NUMBER_OF_PARALLEL_CORES
。但是,这不是很灵活 - 需要在编译时选择值。
当然,我也可以显式地实例化许多不同的模块,但这很耗时,并且不适用于我想做的那种“模糊”测试。
我的问题:
- 有没有办法通过使用从命令行传入的 plusarg 来做到这一点
$value$plusargs
?(我强烈怀疑 Verilog 1364-2005 的答案是否定的)。 - 是否有另一种方法可以在测试台中“模糊”模块参数化,或者使用生成块是唯一的方法?