0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vivado仿真器和代码覆盖率简析

OpenFPGA 来源:OpenFPGA 2023-08-03 09:23 次阅读

编写 HDL 通常是 FPGA 开发中耗时最少的部分,最具挑战性和最耗时的部分可能是验证。根据最终应用程序,验证可能非常简单,也可能非常复杂,简单的话只需对大多数功能进行检查或执行完全独立开发的测试平台来演示功能和代码覆盖率。

功能和代码覆盖率在验证中很重要,因为它们都提供有关设计及其验证的不同方面的信息。理想情况下,我们希望两者都能达到 100%。仅其中一项达到 100% 表明我们还有进一步验证要做。

以下是两者的常见定义:

代码覆盖率——是一种通过计算测试过程中被执行的源代码占全部源代码的比例,进而间接度量软件质量的方法。例如,它可以指示是否遍历所有分支和语句(如果切换了所有触发器)。

功能覆盖率 – 提供有关测试平台覆盖被测单元功能行为的程度的信息。为了实现这一点,开发人员/验证工程师必须定义覆盖组和覆盖点。

代码覆盖率和功能覆盖率之间的区别在于,功能覆盖率需要使用需求。

当然,代码和功能覆盖率都需要规划代码设计。代码覆盖率可能有一些限制,因为它无法识别缺失的功能,也无法识别是否已解决所有可能的边界/极端情况值。代码覆盖率也不关心事件的顺序。这就是功能覆盖发挥作用的地方,因为它可以测试功能声明。

通常,代码和功能覆盖率需要昂贵的仿真工具,但是,通过 Vivado 2021.1 的 Vivado 仿真器就可以实现。使用 Vivado 时,开发人员能够验证其设计并确保 RTL 功能符合要求。

对于代码覆盖率,我们需要在项目设置中的“仿真”选项卡和细化设置下做的第一件事就是设置覆盖类型。在Vivado中我们可以设置以下选项:

Line / Statement (s) 行/语句

Branch (b) 分支

Condition (c) 条件

Toggle (t) 切换

6f3f4424-3195-11ee-9e74-dac502259ad0.png

我们还可以定义覆盖率报告名称和覆盖率目录的位置。

运行仿真结束时生成覆盖信息。将能够在elaboration设置中指定的位置看到 codeCov 目录。

为了创建功能覆盖,我们需要在 RTL 内创建覆盖组。

6f697d20-3195-11ee-9e74-dac502259ad0.png

这是获取报告的数据库。我们需要在 Vivado 中进行更多处理,将数据库转换为报告。

如果想了解 Vivado 仿真器的功能和代码覆盖率,最好的起点是UG937 Vivado 设计套件教程:逻辑仿真。

这提供了几个设计示例,可用于测试 Vivado 仿真器功能的不同方面,包括代码/功能覆盖范围以及 UVM 支持。

功能和代码覆盖率示例基于 AXI VIP 参考设计。完成本教程并添加覆盖组将提供功能和代码覆盖率。

仿真完成后,我们需要运行 xcrg 命令来创建 HTML 报告。

6fa0e38c-3195-11ee-9e74-dac502259ad0.png

生成的 HTML 报告可以在任何浏览器中打开

6fcbc9e4-3195-11ee-9e74-dac502259ad0.png

单击组按钮将打开有关覆盖范围组的详细信息,在本示例中这比较简单。

6ff1f204-3195-11ee-9e74-dac502259ad0.png

运行代码覆盖率转换,可以看到生成的代码覆盖率报告。

701456d2-3195-11ee-9e74-dac502259ad0.png

单击右上角文件将显示每个文件的结果。

70409d6e-3195-11ee-9e74-dac502259ad0.png

总而言之,Vivado 仿真器的功能还是比较强大的。使用这些功能将帮助开发人员创建最佳设计,并有望减少调试硬件所花费的时间。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真器
    +关注

    关注

    14

    文章

    1016

    浏览量

    83676
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59720
  • Vivado
    +关注

    关注

    19

    文章

    808

    浏览量

    66369
  • FPGA开发板
    +关注

    关注

    10

    文章

    122

    浏览量

    31488
  • HDL语言
    +关注

    关注

    0

    文章

    47

    浏览量

    8912

原文标题:【Vivado那些事儿】Vivado 仿真器和代码覆盖率

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文详解Modelsim代码覆盖率功能使用

    作者:默宸  Modelsim代码覆盖率功能Code coverage,能报告出statement(语句)、branch(分支)、condition(条件)、expression(表达
    的头像 发表于 12-09 11:45 5769次阅读

    怎么用Vivado覆盖率分析

    在做仿真的时候往往会去做代码覆盖率和功能覆盖率的分析,来保证仿真是做的比较充分完备的。
    的头像 发表于 01-03 12:34 1600次阅读
    怎么用<b class='flag-5'>Vivado</b>做<b class='flag-5'>覆盖率</b>分析

    嵌入式仿真平台SkyEye的覆盖率分析相关资料下载

    代码执娜行覆盖情况的功能,来检测代码中未执行覆盖情况。在覆盖率分析时需要分析嵌入式软件的指令覆盖率
    发表于 12-17 07:27

    关于SpinalHDL中的验证覆盖率收集简单说明

    在做RTL仿真验证时,覆盖率收集往往是我们在验证中需要注意的地方,本篇就SpinalHDL中的验证覆盖率收集做一个简单说明。sbt配置在SpinalHDL里进行仿真验证时,我们的待测试
    发表于 06-24 15:56

    重点厘清覆盖率相关的概念以及在芯片开发流程中跟覆盖率相关的事项

    。提个小建议,即使对SV相关语法很熟悉,实现覆盖率模型的时候还是使用最直接和最简单的方式。这样可以提高可读性,便于维护和评审。03 代码覆盖率代码
    发表于 09-14 11:57

    Verilog代码覆盖率检查

    Verilog代码覆盖率检查是检查验证工作是否完全的重要方法,代码覆盖率(codecoverge)可以指示Verilog代码描述的功能有多少
    发表于 04-29 12:35 8356次阅读

    嵌入式代码覆盖率统计方法和经验

    代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例计算得出。代码覆盖率可以有效避免包含未测试
    的头像 发表于 01-06 15:06 3132次阅读
    嵌入式<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>统计方法和经验

    嵌入式代码覆盖率如何进行统计有哪些方法和经验

    代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例 计算得出。代码覆盖率可以有效避免包含未测试
    的头像 发表于 01-09 11:12 3041次阅读
    嵌入式<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>如何进行统计有哪些方法和经验

    统计嵌入式代码覆盖率的方法和经验

    代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例计算得出。代码覆盖率可以有效避免包含未测试
    的头像 发表于 03-29 11:58 1918次阅读
    统计嵌入式<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>的方法和经验

    怎么才能写出高覆盖率的Verilog代码

    设计的角度上来讨论,如何写出高覆盖率的Verilog代码。assign慎用按位运算逻辑, | ^ ^~和三目运算符,慎用。使用这样的描述方式本身功能并没有什么问题,而且写起来很爽,但是在很多
    的头像 发表于 06-01 10:13 2595次阅读

    覆盖率的Verilog代码的编写技巧

    设计工程师需要关心的主要有行覆盖率(Block),条件覆盖率(Expression),翻转覆盖率(Toggle),状态机覆盖率。本文从ASIC设计的角度上来讨论,如何写出高
    的头像 发表于 05-26 17:30 4227次阅读

    更好地测量代码覆盖率的 9 个技巧

    。  测量测试覆盖率,也称为代码覆盖率,对于嵌入式系统变得越来越重要。在许多情况下,这些设备对安全或业务至关重要。流程基于物联网设备,患者依赖工作起搏和智能胰岛素泵,没有嵌入式软件就
    的头像 发表于 07-14 15:58 2971次阅读
    更好地测量<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>的 9 个技巧

    代码覆盖率工具的重要性

    测试覆盖率是软件质量的重要指标,也是软件维护的重要组成部分。它通过提供不同承保项目的数据来帮助评估测试的有效性。这种洞察力允许通过为未经测试的代码定义新的测试用例来改进测试,从而提高代码质量,最终增加
    的头像 发表于 12-08 15:13 1440次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>工具的重要性

    EDA仿真验证环境中的激励、检查和覆盖率

    下图是一个典型的EDA仿真验证环境,其中主要的组件就是激励生成、检查和覆盖率收集。
    的头像 发表于 04-15 10:13 1669次阅读

    代码覆盖率记录

    为确保具体的产品(例如,医疗或航空电子市场)质量合格, 通常需要提供语句覆盖与判定覆盖认证证明。对于各种嵌 入式系统,规范要求高度优化的代码需要实时测试。禁止 代码插装和运行时篡
    发表于 11-03 11:02 0次下载
    <b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>记录