电子说
分享一个coverage merge小技巧,在群里经常看到有小伙伴问改了代码之后coverage能不能merge。今天带大家来看看这个问题。
在下面代码里面有三个实例,分别是dut,cnt1,cnt2.
我们生成第一版coverage simv1.vdb
然后我们改动arb_module里面的内容,生成第二版的coverage simv2.vdb
现在我们merge 看看会发生什么事情。
使用urg -dir simv1.vdb simv2.vdb -dbname final.vdb
不出意外,log显示coverage 没有merger 上。
如上面所说,我们只改动了arb_module里面的内容。这个时候arb_module因为代码改动确实已经不能用了,需要重新跑simulation收集,但是cnt_module 还是可以用的。用下面命令将simv2.vdb里面 cnt_module的code coverage merge到simv1.vdb中去。-map指定需要merge 的模块。
urg -dir simv1.vdb simv2.vdb -map cnt_module -dbname final.vdb
log显示可以,并没有报错。
这种用法可以将unit tb收集的IP code coverage merge到SOC中去,一方面保证验证的指标,另外一方面保证代码的一致性。
所以当代码改动导致coverage merge不上的时候,可以考虑用map merge还可以用的code coverage。但是我们在merge前也要确认改动部分没有影响到可以merge module的功能。如果影响到建议还是重新跑。
全部0条评论
快来发表一下你的评论吧 !