Verilog 我想根据选择实例化模块,如何?

Verilog 我想根据选择实例化模块,如何?,verilog,system-verilog,Verilog,System Verilog,我想基于输入实例化一些模块,其背后的原因是在不同的测试用例运行中具有灵活性,但设置相同 例如,我有一个名为checker.sv的模块 If a variable/string = number/"text", `include "check_a" else `inclcude "check_b" 其中check_a和check_b基本上是checker.sv实例化列表,如下所示: checka file is : checker icheck1 (sig1, sig2, 3.0

我想基于输入实例化一些模块,其背后的原因是在不同的测试用例运行中具有灵活性,但设置相同

例如,我有一个名为checker.sv的模块

If a variable/string = number/"text",
    `include "check_a"
else
    `inclcude "check_b"
其中check_a和check_b基本上是checker.sv实例化列表,如下所示:

checka file is :
checker icheck1 (sig1, sig2, 3.0)
checker icheck1 (sig1, sig2, 2.5)
            :
            :

checkb file is :
checker icheck1 (sig1, sig2, 3.9)
checker icheck1 (sig1, sig2, 1.5)
            :
            :
最好的方法是什么?我不想让所有的跳棋都打开,我只想用我想要的跳棋来运行我的测试台。
谢谢。

决定要包含的文件是编译时操作。决定实例化哪些模块是一个精化时间操作。这意味着您不能使用变量。如果您想采用包含方式,可以使用预处理器:

`ifdef CHECK_A
    `include "check_a.svh"
`else
    `include "check_b.svh"
`endif
从运行脚本中,您必须定义
检查A
,或者不定义。这取决于您使用的模拟器,但通常是使用
-D
选项或
+define+
完成的。例如:
某些sim-D检查将包括
检查A.svh
,而省略定义将导致实例化其他检查