SV 输出信息到文件的几种方式
1、IC验证过程中文件的读写经常用到,高效简介明了的文件操作方式值得记录:
1、方式一:$sformatf()
string fid ; rand bit[31:0] src_data[] ; ... fid = $sformatf("../tests/src/my_init_%02.hex", src_type) ; `uvm_info("TRACE",$sformatf("DAT_SEL = %s",fid),UVM_LOW); $readmemh(fid, src_data);
在一个数据计算模块的验证中,需要灌入文件类型的特定数据,为了能够使得test 能够随机吃入不同的源文件,
在数据包的定义中,增加一个int 类型的控制变量src_type用来选择源数据文件,在pkt的post_randomize(),函数中可以根据随机得到的src_type选择不同的源数据。
利用$sformatf函数的特性:使得fid为固定命名格式的文件,然后通过$readmemh()读入文件内容到数组中。
2、方式二:$sformat()
function void collect_rslt(input bit[31:0] addr, input int k, input length) string rslt_name; $sformat(rslt_name, "../tests/%s/rslt/rslt_%03d",testname, k+1); extract_mem(addr, {rslt_name}, length); endfunction
利用$sformat函数的特性:使得rslt_name随着仿真的进行产生的输出写入到不同的固定格式的文件中。
$sformat 和$sformatf本质上是一样的,
3、方式三:fdisplay()
integer handle ; initial begin handle = $fopen("../logs/tc_case01/data.dat"); $fdisplay(handle, "%08X", mem_32bits[i]); end
4、方式三:system()结合shell打印命令echo()
$system($sformatf("echo '[%04d] : %s ' >> ../tests/%s/info_log",k, MSG[INFO], testname));
双引号中的内容,(不包括双引号)作为sformatf()的返回传给system(),然后执行echo ‘’ 重定向输出至文件。
本文来自博客园,作者:hematologist,转载请注明原文链接:https://www.cnblogs.com/littleMa/p/9471433.html
posted on 2018-08-13 22:19 hematologist 阅读(2803) 评论(0) 编辑 收藏 举报