罗列一下平时遇到或者用过的coverage相关的东西:
1. Verdi打开vcs产生的vdb文件:
verdi -cov -covdir simv.vdb
2. DVE 打开vdb文件
dve -full64 -covdir simv.vdb
3. merge coverage
//基本的,平时用的最多的cmd
urg -full64 -dir simv1.vdb simv2.vdb xxx.vdb -dbname merge.vdb
//如果修改了covergroup 名字或者采样信号,加上以下option:
-flex_merge reference
//如果增加了coverpoint,希望merge之后加上新加的,加入option:
-flex_merge union
//如果不想merge之后加上新加入的,加入option:
-flex_merge drop
4.有时会遇到一个design内部多次instance了同一个IP,逻辑完全一致,看coverage的时候不希望每个instance都看一次,希望把多个instance的merge到一起,对应的方式:
1.准备mapfile:
///this is mapfile:my.map
MODULE:my_dut //原型名字
INSTANCE:
SRC: my_top.dut_top.ip1
DST: my_top.dut_top.ip0
SRC: my_top.dut_top.ip2
DST: my_top.dut_top.ip0
merge cmd:
urg -full64 -dbname merged.vdb -dir org.vdb -dir org_copy.vdb -mapfile my.map
把原始vdb copy一份就行,注意第一个-dir后面的vdb是base,这样就能把三份IP(IP0/1/2)的coverage merge成一份(IP0).
5. 有时看coverage数据看到了某行code不应该被打到结果就打到了,这个时候就想看一下对应打到的case的waveform,怎么找到对应的case呢:
1. merge coverage的时候加上option: -show tests
2. 用firefox 打开report: firefox urgreport/groups.html
3.点上面的modlist,找到对应的rtl和对应的行数
4.查看打到的case number,效果如下图: