【UVM】 【source_code】 uvm_cmdline_processor
class uvm_cmdline_processor
函数 get_arg_values()
用于收集命令行(command line)中匹配的参数,便于后续处理。
返回所有匹配上的参数数量,所有匹配上的参数词尾被存放在values[$]中。
source code
function int get_arg_values (string match, ref string values[$]);
int chars = match.len();
values.delete();
foreach (m_argv[i]) begin
if(m_argv[i].len() >= chars) begin
if(m_argv[i].substr(0,chars-1) == match)
values.push_back(m_argv[i].substr(chars,m_argv[i].len()-1));
end
end
return values.size();
endfunction
举例
命令行中有"+foo=1,yes,on +foo=5,no,off"
如果有如下调用
string foo_values[$]
initial begin
void'(uvm_cmdline_proc.get_arg_values("+foo=", foo_values))
...
最终结果会在foo_values中有两个items:
"1,yes,on"
"5,no,off"
suggest
建议使用uvm_split_string()来对此函数的结果(ref string values[$] )做处理。
举例
string seed;
string case_name_str_dump;
string dump_sw_get;
string dump_sw;
string bypass_pll;
string sw_clk_sel;
initial begin
void'(uvm_cmdline_proc.get_arg_value("+seed=",seed));
void(uvm_cmdline_proc.get_arg_value("+UVM_TESTNAME=",case_name_str_dump));
void(uvm_cmdline_proc.get_arg_value("+verdi_dump=",dump_sw_get));
void(uvm_cmdline_proc.get_arg_value("+bypass_pll=",bypass_pll));
void(uvm_cmdline_proc.get_arg_value("+sw_clk_sel=",sw_clk_sel));
end