雇用SystemVerilog覆盖度量

文章:托马斯安德森

SystemVerilog为设计和验证工程师提供了构造,以指定功能覆盖点——设计人员为完成设计验证必须练习的条件。

设计和验证行业正处于SoC器件设计和验证两个重要趋势的十字路口:SystemVerilog HDVL(硬件描述和验证语言)的采用和覆盖度量的日益重要的作用。对System Verilog的兴趣是可以理解的;这种ieee标准语言具有RTL(寄存器-传输级)设计、高级建模、测试台创建和断言规范的特性(参考文献1)。
SystemVerilog还为设计和验证工程师提供了用于指定设计人员必须锻炼的功能覆盖点的构造,以便完全验证设计。设计师越来越多地使用功能覆盖,以补充传统的代码覆盖。这种进化的主要驱动器是广泛使用受限随机刺激产生。
传统的验证计划通常包括验证功能和测试状态的设计功能或测试的列表。由于特性和测试之间有清晰的对应关系,这种方法在手写、定向测试中工作得很好。然而,验证包括在模拟中编写和运行每个测试,也许是在打开一些代码覆盖以帮助识别您可能在计划中遗漏的特性之后。
约束 - 随机刺激生成需要一种不同的方法,其中每个自动生成的测试可以锻炼许多特征和部分设计。现代验证计划列出功能,功能覆盖点,以及覆盖状态。您可以通过锻炼的覆盖点数量而不是您完成的测试数量来验证验证闭合。
SystemVerilog提供了开发手写测试和约束随机测试平台以及跟踪关闭进程所必需的所有特性。大多数模拟器都内置了SystemVerilog引入的新设计构造的代码覆盖范围。因此,代码覆盖度量可以用于利用该语言的高级RTL特性的设计。万博投注网址

[ednaol 2016jun13 a 02fig1] 清单1:最小和最大响应。

SystemVerilog为功能覆盖提供了几个强大的规范方法。第一个是cover属性,它是语言的SVA (SystemVerilog Assertions)子集的一部分。SVA的断言特性(包括时间序列)也可用于功能覆盖。例如,清单1确保模拟器执行请求-确认握手的两个极端—第一个和第五个周期。模拟器和许多形式化分析工具都支持覆盖属性构造。如果形式分析可以证明覆盖点是不可达到的,那么设计缺陷可能会阻碍重要功能的执行。如果形式化分析提供了一个显示如何到达覆盖点的跟踪,那么这个跟踪可以提供关于如何编写或生成测试的良好提示。

[EDNAOL 2016JUN13 AN 02Fig2] 清单2:有效载荷大小的传入数据包。

超出个人覆盖属性,您有时必须跟踪值范围。SystemVerilog提供了不属于SVA的封面组构造,以执行此功能。例如,清单2跟踪网络接口上传入数据包的有效载荷大小,并确保覆盖空,最小值和最大有效载荷的角落情况。SystemVerilog还提供交叉构建体来测量两个覆盖点之间的交叉覆盖。此功能允许跟踪覆盖度量的组合。例如,清单3指定用于网络接口的四个数据包类的枚举类型,添加封面以跟踪数据包类,并将数据包类型与有效载荷大小交叉。

[EDNAOL 2016JUN13 AN 02Fig3] __Listing 3:四个数据包类的__enumerated类型。

最终,SOC-tape-out的决定必须考虑到所有的覆盖率指标。虽然功能覆盖是主要的方法,但是代码覆盖作为一个备份来识别由于不完整的验证计划而没有功能覆盖的设计区域是有价值的。项目团队需要将代码覆盖率和功能覆盖率结果合并在一起,以评估验证进展并帮助确定验证结束。覆盖率对于现代的受限随机验证是至关重要的。没有有效的度量标准,就没有可靠的方法来度量状态和管理进展。除了它的其他特性和优点之外,SystemVerilog还提供了对功能覆盖的支持。通过从项目开始就在验证计划中包含覆盖率,并利用SystemVerilog, SOC团队可以采用一个完整的计划到结束的方法,这大大增加了产品成功的机会。

本文是由编辑选择重新发布的设计理念。它于2007年3月29日在edn.com发布。

留下你的评论