再次细看uvm source code, 借此把里面用的很好的技巧和语法记录一下, 希望后面有精力陆续更新
systemverilog syntax from IEEE:
string_output_tasks ::= string_output_task_name ( output_var [,list_of_arguments ]) ; string_output_task_name ::= $swrite|$swriteb|$swriteh|$swriteo variable_format_string_output_task ::= $sformat (output_var,format_string [,list_of_arguments ]) ; variable_format_string_output_function ::= $sformatf (format_string [,list_of_arguments ]) $sformatalways interprets its second argument,and supports all the format specifiers supported by$display, eg: string s; $sformat(s, "pair : %s, %s", first.convert2string(), second.convert2string()); 将第二个参数$display 成string,并赋值s; $sformatf 跟$sformat 一样,除了会将结果返回,也没有第一个参数。当一个string值需要有效地返回值该function很有用, uvm 中常用的就是该function 做字符串打印. eg: return $sformatf("built-in pair : %p, %p", first, second);