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

编写 hdl 通常是 fpga 开发中耗时最少的部分,最具挑战性和最耗时的部分可能是验证。根据最终应用程序,验证可能非常简单,也可能非常复杂,简单的话只需对大多数功能进行检查或执行完全独立开发的测试平台来演示功能和代码覆盖率。
功能和代码覆盖率在验证中很重要,因为它们都提供有关设计及其验证的不同方面的信息。理想情况下,我们希望两者都能达到 100%。仅其中一项达到 100% 表明我们还有进一步验证要做。
以下是两者的常见定义:
代码覆盖率——是一种通过计算测试过程中被执行的源代码占全部源代码的比例,进而间接度量软件质量的方法。例如,它可以指示是否遍历所有分支和语句(如果切换了所有触发器)。
功能覆盖率 – 提供有关测试平台覆盖被测单元功能行为的程度的信息。为了实现这一点,开发人员/验证工程师必须定义覆盖组和覆盖点。
代码覆盖率和功能覆盖率之间的区别在于,功能覆盖率需要使用需求。
当然,代码和功能覆盖率都需要规划代码设计。代码覆盖率可能有一些限制,因为它无法识别缺失的功能,也无法识别是否已解决所有可能的边界/极端情况值。代码覆盖率也不关心事件的顺序。这就是功能覆盖发挥作用的地方,因为它可以测试功能声明。
通常,代码和功能覆盖率需要昂贵的仿真工具,但是,通过 vivado 2021.1 的 vivado 仿真器就可以实现。使用 vivado 时,开发人员能够验证其设计并确保 rtl 功能符合要求。
对于代码覆盖率,我们需要在项目设置中的“仿真”选项卡和细化设置下做的第一件事就是设置覆盖类型。在vivado中我们可以设置以下选项:
line / statement (s) 行/语句
branch (b) 分支
condition (c) 条件
toggle (t) 切换
我们还可以定义覆盖率报告名称和覆盖率目录的位置。
运行仿真结束时生成覆盖信息。将能够在elaboration设置中指定的位置看到 codecov 目录。
为了创建功能覆盖,我们需要在 rtl 内创建覆盖组。
这是获取报告的数据库。我们需要在 vivado 中进行更多处理,将数据库转换为报告。
如果想了解 vivado 仿真器的功能和代码覆盖率,最好的起点是ug937 vivado 设计套件教程:逻辑仿真。
这提供了几个设计示例,可用于测试 vivado 仿真器功能的不同方面,包括代码/功能覆盖范围以及 uvm 支持。
功能和代码覆盖率示例基于 axi vip 参考设计。完成本教程并添加覆盖组将提供功能和代码覆盖率。
仿真完成后,我们需要运行 xcrg 命令来创建 html 报告。
生成的 html 报告可以在任何浏览器中打开
单击组按钮将打开有关覆盖范围组的详细信息,在本示例中这比较简单。
运行代码覆盖率转换,可以看到生成的代码覆盖率报告。
单击右上角文件将显示每个文件的结果。
总而言之,vivado 仿真器的功能还是比较强大的。使用这些功能将帮助开发人员创建最佳设计,并有望减少调试硬件所花费的时间。


一文了解DCS集散控制系统
小米Play评测 出色千元性价比颜值机
关于弹片微针模组在锂电池测试中的应用
美国总统特朗普将可能推行比特币禁令
京东方抢跑企业物联网转型
Vivado仿真器和代码覆盖率简析
打击欺诈、推动数字化转型,人工智能在支付技术中起关键作用
电气线路的保护措施有哪些
手机电池如何测试容量,电池测试模组是首选
河北联通在雄安新区完成了基于FlexE技术的IP专线现网测试
搭载虹软VisDrive一站式车载视觉解决方案的理想L9正式发布
电压表测量电压的原理是什么(电压表工作原理)
美国将在月球建4G网络
如何执行音频认证测试
瑞丰光电率先推出MCSP产品完美匹配智能照明需求
发展氢能有利于保障能源安全,推进产业升级
关于电子元器件都有哪些可靠性检测项目的科普
iPhone 8、华为P10、三星Galaxy S8今年三款旗舰都带有ip68认证,你选哪款?
51单片机的复位方式及原理
随着人工智能普及,给整个人类社会带来了什么样的冲击?