我想基于选择实例化模块,怎么样?

时间:2014-11-08 08:30:57

标签: 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 icheck1 (sig1, sig2, 2.5)
            :
            :

checkb file is :
checker icheck1 (sig1, sig2, 3.9)
checker icheck1 (sig1, sig2, 1.5)
            :
            :

最好的方法是什么?我不想让所有的棋子都打开,我想用我想要的特定游戏的棋子来运行我的测试平台。 谢谢。

1 个答案:

答案 0 :(得分:0)

确定要包含的文件是编译时操作。确定要实例化的模块是精化时间操作。这意味着您无法使用变量。如果您想沿着包含方式前进,可以使用预处理器:

`ifdef CHECK_A
    `include "check_a.svh"
`else
    `include "check_b.svh"
`endif

从您的运行脚本中,您必须定义CHECK_A或不定义-D。这取决于您使用的模拟器,但通常使用+define+选项或some_sim -D CHECK_A完成。例如:check_a.svh将包含{{1}},而省略该定义将导致其他检查被实例化。