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

    文章

    996

    浏览量

    83188
  • RTL
    RTL
    +关注

    关注

    1

    文章

    382

    浏览量

    59271
  • Vivado
    +关注

    关注

    18

    文章

    791

    浏览量

    65454
  • FPGA开发板
    +关注

    关注

    10

    文章

    120

    浏览量

    31377
  • HDL语言
    +关注

    关注

    0

    文章

    46

    浏览量

    8884

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

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

收藏 人收藏

    评论

    相关推荐

    怎么用Vivado覆盖率分析

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

    如何改善5G覆盖率

    改善5G覆盖率的方法
    发表于 12-15 07:52

    如何提高DFT设计测试覆盖率

    提高DFT设计测试覆盖率的有效方法是什么
    发表于 05-07 06:37

    怎么提高非随机图形设计的故障覆盖率

    怎么提高非随机图形设计的故障覆盖率?为LBIST设计提高故障检测能力的技术是什么?
    发表于 05-08 07:11

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

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

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

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

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

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

    Systemverilog覆盖率的合并和计算方式

      在systemverilog中,对于一个covergroup来说,可能会有多个instance,我们可能需要对这些instance覆盖率进行操作。  只保存covergroup type的覆盖率
    发表于 03-21 14:24

    Verilog代码覆盖率检查

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

    如何使用Vivado中的Synopsys VCS仿真器进行仿真

    了解如何使用Vivado中的Synopsys VCS仿真器使用MicrBlaze IPI设计运行仿真。 我们将演示如何编译仿真库,为IP或整个项目生成
    的头像 发表于 11-29 06:57 7025次阅读

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

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

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

    测量代码覆盖率对于嵌入式系统来说越来越重要,但需要一些经验。这是因为有一些障碍需要克服,尤其是小目标。但是,使用正确的方法和合适的工具,无需过多努力即可测量测试覆盖率。九个实用技巧可帮助您入门
    的头像 发表于 07-14 15:58 2576次阅读
    更好地测量<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>的 9 个技巧

    Vivado仿真器进行混合语言仿真的一些要点

    本文主要介绍使用 Vivado 仿真器进行混合语言仿真的一些要点。
    发表于 08-01 09:25 1106次阅读

    如何在批模式下运行 Vivado 仿真器

    在 Windows 下,我喜欢在批处理模式下运行 Vivado 仿真器。 我创建了仿真批文件 (.bat) ,包含以下命令。当我运行批文件,执行第一条命令后脚本中止。如何正确在批模式下运行 V
    发表于 08-01 09:43 877次阅读

    代码覆盖率记录

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