在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2549|回复: 1

[求助] 如何使用VCS连续跑两个case,且跑出来的case覆盖率可以合并

[复制链接]
发表于 2022-9-20 11:24:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
目前有这样一个问题,我用VCS跑了两个case(使用verilog编写的),两个case生成了两个名字一样的覆盖率文件simv.vdb,我将两个覆盖率文件(simv.vdb)合并的时候提示我两个设计不一致,经过分析是因为我两个case是独立跑的,这种情况覆盖率无法合并,必须编译一次,仿真两次,把编译和仿真分开跑。但我不会怎么操作,我是这样写的makefile文件,请高手指点应该怎么写才能让次覆盖率可以顺利合并在一起?
1、  vcs  tb1.v tb2.v rtl.v  +v2k -full64 -debug_acc+all +vcd+vcdpluson -cm line+cond+tgl+branch+assert   //第一步:编译。tb1.v和tb2.v是两个case,rtl.v是rtl代码
2、  ./simv   //第二步,运行仿真,这里好像不对,只能产生一个simv.vdb,无法产生两个simv.vdb
3、  urg -full64 -f ./cov.f  -dbname merged.vdb   //合并覆盖率,其中cov.f是tb1和tb2生成的simv.vdb,这里也不,因为只有1个覆盖率文件
4、  verdi -cov merged.vdb                              //打开合并后的覆盖率文件,这里也不对,因为上面不对下面也生成不了
发表于 2022-9-20 17:22:35 | 显示全部楼层
本帖最后由 笃定 于 2022-9-20 17:32 编辑

只要保证跑这两个case的时候RTL没有任何改动就行,两个覆盖率文件生成在不同的路径下,就可以merge了;应该不是分一步(有-R参数)还是两步的问题
如果只想收集DUT的coverage(显然你这里tb1和tb2作为tb_top代码不一样),写一个文件dut_code_cov.cm_hier(里面就写只收集DUT, 比如:+tree tb_top.dut)
在第一个folder下执行:
vcs tb1.v rtl.v  +v2k -full64 -debug_acc+all +vcd+vcdpluson -cm line+cond+tgl+branch+assert -R -cm_hier dut_code_cov.cm_hier
换个folder-xxx,再执行
vcs xxx/tb2.v xxx/rtl.v  +v2k -full64 -debug_acc+all +vcd+vcdpluson -cm line+cond+tgl+branch+assert -R -cm_hier dut_code_cov.cm_hier


然后merge两个folder下的simv.vdb就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 19:26 , Processed in 0.015993 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表