value_plusargs和.get_arg_value
https://www.cnblogs.com/jiang-ic/p/10579416.html
传入值的方式不太一样,有没有加号。另外是有没有格式化字符串。
program automatic test;
import uvm_pkg::*;
class hello_world extends uvm_test;
uvm_cmdline_processor clp;
int arg_value;
string arg;
`uvm_component_utils(hello_world);
function new (string name, uvm_component parent);
super.new(name, parent);
clp=new();
if(clp.get_arg_value("+arg_value",this.arg)) begin
this.arg_value=this.arg.atoi();
`uvm_info("test_arg", $sformatf("input value = %d", arg_value), UVM_DEBUG);
end
else begin
`uvm_info("test_arg", "no input arg_value", UVM_DEBUG);
end
if ($value$plusargs("arg_value%0s", this.arg)) begin
this.arg_value=this.arg.atoi();
`uvm_info("test_arg", $sformatf("input value = %d", arg_value), UVM_DEBUG);
end
else begin
`uvm_info("test_arg", "no input arg_value", UVM_DEBUG);
end
endfunction
endclass
initial begin
run_test("hello_world");
end
initial begin
uvm_cmdline_processor cmdline_processor = uvm_cmdline_processor::get_inst();
// give default value
string my_value = "default_value";
int rc = cmdline_processor.get_arg_value("+abc=", my_value);
// if needed, change to integer
int my_int_value = my_value.atoi();
// for a set of values in +abc
string my_value_list[$];
int rc = cmdline_process.get_values("+abd=", my_value_list);
$display("my rc: %0d", rc);
$display("my value : %0s", my_value);
$display("my value_list : %p", my_value_list);
end
endprogram
运行
vcs -full64 -sverilog -R -ntb_opts uvm-1.2 taa.sv +arg_value1231 +UVM_VERBOSITY=UVM_DEBUG +abc=111 +abd=ccc,ddd,eee
输出
list部分传值失败了!
UVM_INFO taa.sv(17) @ 0: uvm_test_top [test_arg] input value = 1231
UVM_INFO taa.sv(25) @ 0: uvm_test_top [test_arg] input value = 1231
UVM_INFO @ 0: reporter [RNTST] Running test hello_world...
my rc: 1
my value : 111
my value_list : '{}
Le vent se lève! . . . il faut tenter de vivre!
Le vent se lève! . . . il faut tenter de vivre!