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 ‘’ 重定向输出至文件。

转载于:https://www.cnblogs.com/littleMa/p/9471433.html

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值