在 Verilog 测试台中测试可参数化模块的多个配置

Testing multiple configurations of parameterizable modules in a Verilog testbench

假设我有一个可参数化的 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_crunchers,其中 NUMBER_OF_PARALLEL_CORES 具有不同的值。不过,这不是很灵活 - 需要在编译时选择值。

当然,我也可以显式地实例化很多不同的模块,但这很耗时,而且对我想做的那种“模糊”测试不起作用。

我的问题:

由于 $value$plusargs 是在运行时计算的,它不能用于设置 parameter 值,而必须在编译时完成。

但是,如果您使用 generate 实例化具有不同 parameter 设置的设计的多个实例,您可以使用 $value$plusargs 选择性地激活或启用一个实例一个时间。例如,在测试台中,您可以使用运行时参数来仅驱动特定实例的输入。