背景:
有时候我们想统计一下验证环境中某个步骤总共花费了多少时间,有什么比较方便的方法呢,利用$realtime理论上也是能做到的,不过这个和timescale绑定起来了,需要手动换算成单位是秒的数,现在提供一种利用Linux系统函数date来统计时间差的方法。
以下是步骤:
1. 定义获取当前时间(单位秒)的函数
function int get_system_time();
int fdt,sys_time;
$system("date +%s > systime"); // temp file
fdt = $fopen("systime", "r");
$fscanf(fdt,“%d” sys_time);
$fclose(fdt);
$system("rm systime"); // delete file
return sys_time;
endfunction
2. 在想要统计的操作前后分别call 一次以上function,相减即是想要的结果
int _begin_t,_end_t;
_begin_t = get_system_time();
//own task
_end_t=get_system_time();
`uvm_info("Time",$sformatf("task xxx cost:%0d s",_end_t - _begin_t))
注意事项:
1. 首先$system("date")的返回值是0,不能直接得到系统时间,例子中采用的是把系统时间打印到临时文件中,然后再读出来的方式来间接得到系统时间。
2. date +%s 是为了以秒数显示,方便后面做减法,另外$system("date")的打印结果中既有字符串又有数字,无法直接利用。