$ test $ plusargs和 $ value $ plusargs作为进行 Verilog 和 SystemVerilog仿真运行时调用的系统函数:
1、可以在终端仿真命令中直接赋值,避免了调换参数带来的频繁编译问题。
2、不局限于不同仿真器对于参数在仿真命令中定义格式的不同
(一)使用宏定义的条件编译有何缺点?
例如:
initial
begin
`ifdef dumpon
$dumpfile("res.vcd");
$dumpvars;
`endif
end
如果需要调用条件编译中的系统函数需要在编译时指定`define的宏定义
<compile-option> -define dumpon tb.v
但是就会产生一个问题,如果需要改变编译条件,就会需要重新编译,从而降低了仿真的效率。
(二)$ test $ plusargs
在运行仿真时指定要选择的条件,只需要在仿真运行命令(run-options)指定参数需要的条件即可。
initial
begin
if($test$plusargs("test1")
$readmemh("test1.dat",mem1);
if($test$plusargs("test2")
$readmemh("test2.dat",mem2);
end
+test1+test2
如果仿真不需要test1,只需要将test1从运行命令中删除即可。
(三)$ value