jake的个人空间 https://blog.eetop.cn/1592 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Cadence Xcellium Incisiv code coverage 代码覆盖设置与生成

热度 3已有 4220 次阅读| 2021-6-19 23:10 |系统分类:芯片设计

C家仿真器以前的名字叫Incisiv,现在改称为XceliumC家的仿真器非常强大,不仅可以做数字仿真,还可以做混合信号仿真。

考量验证质量最基本的方法就是code coverage,原理就是跑仿真的时候记录RTL的各行代码是否激励exercise过。跑完所有的test case,如果合并的code coverage显示RTL中某些代码从未被激励exercise过,这种情况说明test case有可能不够完善,某些设计的功能有可能还没有被测试到。当然具体情况要根据code coverage结果具体分析一下。例如,RTL中有case statement,如 case (something[1:0]) 因为只有两位,可能的组合就是2’b00, 2’b01, 2’b10, 2’b11。写code的时候通常会加上default branch。通常这个default branch是无法测试到的,code coverage会显示没有激励过。这种情况可以waivedefault branchcoverage

在仿真过程中生成code coverage信息需要在irunxrun命令行加上几个选项。下面是一个例子。

irun -gui -access rwc -f filelist -top tb_dig_top -coverage b:e:f -covdut u_dig_top

也可以写一个ccf文件设置code coverage 下面是一个例子。 这个方法可以更细致地设置code coverage 生成。

select_coverage -block -expr -fsm -module adc_dig

set_implicit_block_scoring -off

set_assign_scoring

set_branch_scoring

set_expr_scoring -all

set_fsm_reset_scoring

set_fsm_arc_scoring -on

set_fsm_scoring -hold_transition on

select_functional

通常完整地验证由很多个test case构成。假设每个test case都在自己的目录test_<something>下运行。跑完所有地test case后每个test_<something>都有code coverage数据。因为每个test case都只是exercise了设计的一部分功能,每个test_<something>下的code coverage都不能完整地代表验证code coverage。这时需要把每个test case产生的code coverage合并起来。这里需要用到C家仿真器包含的工具imc 下面是一个合并code coverage的例子。

imc -execcmd "merge ./test_*/cov_work/scope/test -out merged -overwrite -metrics all"

合并后生成一个merged database,可以用imc 打开并分析code coverage 运行

imc -gui

打开merged database,就可以分析了。

有时test benchDUT的使用场景比较复杂。以上面的adc为例。某些使用场景是单个adc,某些使用场景是两个adc一起工作在interleaving模式。这时会用到两个不同配置的test bench,一个test bench配置成单一adc,一个配置成dual adc 这个情况下合并code coverage就很麻烦了,需要写一个 IMC merge command file来指导imc合并code coverage 下面是一个·imc_merge_all.cmd的例子。

merge_config -source tb_adc_top.i_adc   -targettype adc_dig

merge_config -source tb_adc_top.i_adc_0 -targettype adc_dig

merge_config -source tb_adc_top.i_adc_1 -targettype adc_dig

merge ./test_adc_*/cov_work/scope/test_sv0 -out merged -overwrite -message 1 -initial_model ./test_adc_14b_single/cov_work/scope/test_sv0

具体细节可以参考imc手册。

3

点赞

刚表态过的朋友 (3 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 222

    粉丝
  • 89

    好友
  • 278

    获赞
  • 269

    评论
  • 2261

    访问数
关闭

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

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

GMT+8, 2024-3-29 22:50 , Processed in 0.013824 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部