精武英雄的个人空间 https://blog.eetop.cn/wenguozhang [收藏] [复制] [分享] [RSS]

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

日志

VCS覆盖率工具常用功能

热度 2已有 6382 次阅读| 2020-6-29 15:01 |个人分类:学习笔记|系统分类:芯片设计

简介
可通过 -cm_hier 配置文件来控制覆盖率收集范围
Coverage Metrics覆盖指标:
    -cm
        vcs使用编译选项 -cm (line+cond+tgl)生成simv.vdb文件夹,仿真选项中使用-cm (line+cond+tgl),会在simv.vdb/snps/coverage/db/testdata/your_cm_name下产生覆盖率xml文件;
    -cm_name
        编译选项or仿真选项 -cm_name your_cm_name  将会生成覆盖率文件:simv.vdb/snps/coverage/db/testdata/your_cm_name;
    -cm_dir
        默认情况下,vcs会编译出可执行文件simv,同时,会生成simv.vdb,如果使用了编译选项-o simv_name,可执行文件会更名为simv_name,而vdb文件的名字会变成simv_name.vdb;
        编译选项-cm_dir simv_path_name,可以独立指定vdb的路径和文件名。vcs -cm tgl -cm_dir /net/design1/mycm source.v,会在/net/design1下生成mycm.vdb;
        如果在编译选项中指定了cm_dir,则默认此simv的所有coverage数据会产生在其指定路径;
        仿真选项-cm_dir simv_path_name,仅指定本次仿真的coverage数据存放路径;
        -cm_dir 优先级大于-o;
        在使用urg时,用-dir 载入各个vdb文件夹:urg -full64 -dir /net/design1/my_cov_info -dir /net/design1/int_dat_files;
merge:
        在一次编译多次仿真时,可在仿真选项中使用cm_dir 或 cm_name 来改变存放覆盖率文件的名称和位置,以避免各个仿真的覆盖率文件被覆盖;
        urg -full64 -dir simv.vdb  simv1.vdb simv2.vdb  -dbname mergedir/merged 会将所有覆盖率xml文件合并在mergedir.vdb/snps/coverage/db/testdata/merged下,并产生报告文件urgReport;

VCS相关命令
常用编译选项:
    -cm
        可选择line | cond | fsm | tgl | branch | assert,如-cm line+cond+tgl
    -cm_dir
    -cm_name
    -cm_hier filename
        控制覆盖率收集范围
    -cm_tgl mda

        使能多维数组的toggle coverage 收集

常用仿真选项:

    -cm
    -cm_dir
    -cm_name
    -covg_cont_on_error
        当仿真运行到 illegal functional coverage bin,将会继续运行
    -covg_disable_cg
        关闭所有的功能覆盖率covergroups
    -covg_dump_range
        保存bin的定义,配合urg的-group show_bin_values,将会把bin的定义生成到report中
实用的选项:
    -covg_disable_cg编译选项、仿真选项
        若作为编译选项,则关闭covergroup并忽略其实例相关的语句;
        若作为仿真选项,则仅关闭covergroup;
        可用于分析function coverage带来的性能降低;
    -cg_coverage_control=0
        从0ns关闭function coverage,但可以使用$cg_coverage_control系统函数再次打开;
    -cm_glitch period 编译选项、仿真选项
        用于避免毛刺带来的多余coverage,如–cm_glitch 0可过滤delta cycle 毛刺。period的单位是timeunit;
        作为编译选项时,可过滤所有类型的覆盖率;
        作为仿真选项时,仅过滤toggle coverage;
系统函数:
    系统函数可以在运行期动态查询或修改覆盖率选项;
    系统函数需要编译选项和仿真选项 -cm;
    $cm_coverage(mode,type,include_hierarchy,"module_or_instance",...)
        查询正在收集的覆盖率类型,使能或关闭某些覆盖率类型;

    $cm_get_coverage and $cm_get_limit

使用URG及其参数:
    利用urg产生覆盖率报告,如:urg -full64 -dir simv.vdb -report both & 将在both文件夹产生report;

    

    -dir directory_name

        用于处理的原数据库,可跟多个vdb文件,空格隔开;
    -f file_name
        用于处理的原数据库的filelist;
    -dbname dirname/testname
        merge覆盖率将其生成在dianame.vdb文件夹下,若无testname,则testname默认为test;
    -noreport
        不产生report,常配合 -dbname 使用
    -elfile <file>
        urg  -elfile filename.el,用于加载el文件;
    -elfilelist <filelist>
        用法同verilog的filelist;
    -format text
        仅生成text报告;
    -format both
        生成test和html报告;
    -hier filename
        用法同vcs命令选项;
    -line nocasedef
        不计算default case的line coverage;
    -show brief
        report中仅显示未覆盖的部分;
    -show tests

        显示是哪些testcase覆盖到了此处,可搭配-show maxtests N(默认3)使用;如果是merge后的vdb文件,那么则无法看到具体的testcase;

用DVE查看coverage:
    -使用 dve -full64 -cov -dir simv.vdb& 打开图形界面;
    -过滤可排除的覆盖率;
    -将Exclude保存为el文件;

2

点赞

刚表态过的朋友 (2 人)

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 3

    关注
  • 7

    粉丝
  • 6

    好友
  • 2

    获赞
  • 6

    评论
  • 2318

    访问数

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

GMT+8, 2024-11-5 13:27 , Processed in 0.015050 second(s), 8 queries , Gzip On, Redis On.

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