IC 验证篇(09-03)覆盖率收集

本文详细介绍了芯片原厂在IC验证中的重要概念——覆盖率,包括代码覆盖率和功能覆盖率的定义、类型以及如何通过VCS仿真工具如VERDI生成覆盖率报告。强调了覆盖率的重要性及注意事项,如不要过度依赖代码覆盖率,应重点进行反标分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

芯片原厂必学课程 - 第九篇章 - IC 验证篇

09-03 覆盖率收集

新芯设计:专注,积累,探索,挑战

引言

  NOTES:本文来自《芯片原厂必学课程 - 第九篇章 - IC 验证篇》技术专栏


🌏 一、覆盖率收集

1. 覆盖率定义

  ✉ 覆盖率:指的是验证工作中至关重要的一个环节,通过覆盖率驱动的方式,不仅可以量化验证的进度,还能够保证验证的完备性

  ✉ CDV:指的是覆盖率驱动验证

2. 覆盖率类型

  ✉ 代码覆盖率:UT 验证比较重视,要求 100%

  ✉ 功能覆盖率:IT 验证比较重视,要求 100%

3. 代码覆盖率

  ✉ 行覆盖率 LINE COVERAGE:记录程序的各行代码被执行的情况

  ✉ 条件覆盖率 COND COVERAGE:记录各个条件中的逻辑操作数量被执行的情况

  ✉ 跳转覆盖率 TOOGLE COVERAGE:记录单比特信号的 0/1 跳转情况

  ✉ 状态机覆盖率 FSM COVERAGE:记录状态机的各个状态被进入的次数,以及各个状态之间的跳转情况

  ✉ 分支覆盖率 BRANCH COVERAGE:记录 if-else 等语句中各个分支被执行的情况

  ✉ 路径覆盖率 PATH COVERAGE:记录程序的各个分支是否都被执行的情况,亦称之为断言覆盖

09-03-01 代码覆盖率的种类

4. 功能覆盖率

  ✉ 定义:用户定义的,环境执行的,用于衡量被分解出来的验证点是否能够被测试到

  ✉ 分类:覆盖率组 COVERGROUP 和断言覆盖率 COVERPROPERTY

5. 覆盖率总结

  ✉ 不要过于相信和依赖代码覆盖率

  ✉ 重点做好代码覆盖率反标和分析

  ✉ 代码覆盖率的单一结果难以说明


🌏 二、如何输出覆盖率报告

  这里给出了一个能够运行 VCS 仿真,打开 VERDI 波形,输出 COV 报告,清除工程缓存的 MAKEFILE 脚本,通过如下的一些命令,即可完成

  ✉ make run

  ✉ make verdi

  ✉ make cover

  ✉ make clean

export WORKAREA=$(shell pwd | sed 's&/verification&&')

run:
    bsub -I \
    vcs -sverilog -debug_acc+all -R -o simv -full64 -debug_access -l sim.log sim.v \
    -top testbench \
    +incdir+${WORKAREA}/hdl/riscv/rtl \
    -f ${WORKAREA}/hdl/riscv/rtl/riscv_top.lst \
    -cm cond+line+branch+fsm+assert+tgl \
    -cm_dir cov/cov_test/cm -cm_log cov/cm.log \
    +lint=TFIPC-L \
    +lint=PCWM \
    +fsdb+force \
    +notimingcheck \
    +nospecify \
    +incdir+${WORKAREA} \
    +define+TSMC_16_ULP

verdi:
    bsub -I -J \
    verdi -n 2 -XF verdi sim.v -sv -ssf wave_000.fsdb \
    -top testbench \
    -f ${WORKAREA}/hdl/riscv/rtl/riscv_top.lst \
    -f ref.lst
    +tarmac_on \
    +incdir+../ \
    +define+TSMC_16_ULP &

cover:
    bsub -I urg -dir cov/cov_test/{cm, cm.vdb} -report urgReport
    firefox urgReport/dashboard.html &

clean:
    @rm -rf csrc/ *.txt novas* *.log simv* ucli.key verdiLog/ *.fsdb *vf cov/
安装Docker安装插件,可以按照以下步骤进行操作: 1. 首先,安装Docker。可以按照官方文档提供的步骤进行安装,或者使用适合您操作系统的包管理器进行安装。 2. 安装Docker Compose插件。可以使用以下方法安装: 2.1 下载指定版本的docker-compose文件: curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2.2 赋予docker-compose文件执行权限: chmod +x /usr/local/bin/docker-compose 2.3 验证安装是否成功: docker-compose --version 3. 在安装插件之前,可以测试端口是否已被占用,以避免编排过程中出错。可以使用以下命令安装netstat并查看端口号是否被占用: yum -y install net-tools netstat -npl | grep 3306 现在,您已经安装Docker安装Docker Compose插件,可以继续进行其他操作,例如上传docker-compose.yml文件到服务器,并在服务器上安装MySQL容器。可以参考Docker的官方文档或其他资源来了解如何使用DockerDocker Compose进行容器的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装docker-compose插件](https://blog.csdn.net/qq_50661854/article/details/124453329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker安装MySQL docker安装mysql 完整详细教程](https://blog.csdn.net/qq_40739917/article/details/130891879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新芯设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值