普通示例
$test$plusargs和$value$plusargs作为进行Verilog和SystemVerilog仿真运行时调用的系统函数,可以在仿真命令直接进行赋值,并且不局限于不同仿真器对于参数在仿真命令中定义格式不同的限制,也避免了调换参数带来的频繁编译等问题。使用这两条函数对于搭建测试平台有一定的便利。
写一个简单得测试程序plus_test.sv如下:
program plus_test;
bit [9:0] task_num;
initial begin
$value$plusargs("task_num=%d",task_num);
$display("task_num is %0d",task_num);
end
initial begin
if($test$plusargs("task01"));
$display("task01");
if($test$plusargs("task02"));
$display("task02");
end
endprogram
用如下方式编译:
vcs -sverilog plus_test.sv
在运行过程中传入参数
./simv +task01 +task_num=5
运行结果如下:
task01
task_num is 5
在$value$plusargs使用变量示例
initial begin
string part_number[5];
string str ;
for(int i=0;i<5;i++) begin
str = $sformatf("part_num%0d=",i);
if($value$plusargs({str,"%s"},part_number[i])) $display($sformatf("part_number%0d=%s",i,part_number[i]));
end
end
编译后,在仿真时传入参数:
./simv +part_number0=acds0 +part_number1=acds1 +part_number2=acds2 +part_number3=acds3 +part_number4=acds4