我想基于输入实例化一些模块,背后的原因是在不同的测试用例运行中灵活但有相同的设置。
例如,我有一个名为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)
:
:
最好的方法是什么?我不想让所有的棋子都打开,我想用我想要的特定游戏的棋子来运行我的测试平台。 谢谢。
答案 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}},而省略该定义将导致其他检查被实例化。