其他分享
首页 > 其他分享> > 篇3-testcase pass的判断

篇3-testcase pass的判断

作者:互联网

资料来源:

(1) 公众号-杰瑞IC验证

1.统计UVM_FATAL与UVM_ERROR数目

(1) 在uvm_test或env的final_phase里面,检查UVM_ERROR和UVM_FATAL的个数,如果不为0,打印CASE FAIL;否则,打印CASE PASS;

(2) 示例中,之所以采用$display,而不是uvm_fatal和uvm_info,是因为二者可能会被屏蔽掉(比如冗余度的改变),会影响后期检索;

(3) 之所以不直接排查仿真log里的UVM_ERROR和UVM_FATAL,是因为仿真可能在没有uvm_error和uvm_fatal的情况下异常结束,比如超时或磁盘满了,或者提交到服务器的任务被管理员kill等;

2.注意排查SVA assertion错误

(1) SVA assertion错误的格式是***Offending***;

3.注意排查随机约束错误

(1) 有些仿真器并不会因为随机失败而提前结束仿真;对于显式的随机约束,最好在randomize前加上assert,并提供合适的display信息;

(2) 对于`uvm_do_with, `uvm_rand_send等内嵌的隐式随机约束,不能直接加assert,需要在仿真log内对随机约束失败进行排查(这种情况下,错误格式会因仿真工具而异);

4.排查参考模型错误

(1) 参考模型里面的打印信息可能没有记录到仿真log里,需要在调用参考模型时,将打印信息记录到log中,并对log检查;

5.排查类型转换错误

(1) 常见问题是将int变量直接复制给一个枚举变量,类型转换失败;

(2) 解决办法:对不同类型赋值时,尽量使用$cast转换;

6.预防DUT空转

(1) 检查激励有效性;

(2) 对monitor和scoreboard内的关键信号或数据检查进行计数,在final_phase里判断这些计数器是否为0;

 

标签:仿真,判断,log,testcase,排查,随机,UVM,pass,uvm
来源: https://www.cnblogs.com/csjt/p/15566402.html