功能验证流程

文章作者:Dilip Prajapati

提高您对SoC功能验证流程的理解,并学习如何加快过程。

本文介绍了SoC- (System on Chip)级功能验证流程。它还描述了加速这一过程的方法。

为了确保成功的soc带出,以下是标准soc级功能验证流程的步骤:

  1. SoC级别/顶层视图(特征提取)

在SoC验证期间,您必须在顶层查看设计,并在规范研究阶段提取其SoC级功能/特性以进行验证。在这个阶段,需要对SoC的功能及其架构有一个全面的理解,因为对规范的误解可能会成为产生bug的主要原因,因此,你可能会浪费不必要的时间在不是真正的RTL问题上。

2.SoC级别验证计划

  • 在SoC和IP之间定义明确的界限

在开发SoC级验证计划期间,您必须明确定义/识别功能,这些功能需要在SoC级和子块或子ip或子集群级进行验证。同样的验证需要在与各自的验证团队进行评审时进行确认,以避免最后的意外。

  • 识别可重用组件

您还必须检查哪些块或子块级验证组件/环境和场景可以在SoC级重用,以减少其在SoC级的新开发时间。

  • 验证连接

在SoC级别,您主要必须关注SoC的顶级功能,并验证子块之间的通信是否正确发生。您还必须验证子模块与顶部模块的连接。

  • 为更新保留占位符

有时,SoC的所有特性都没有在SoC验证计划的初始阶段定义。对于这些类型的特性,您需要在稍后的阶段更新验证计划。因此,在验证计划开发期间,您可以放置占位符或FIXME,以便在以后需要时更新特性。

soc级功能验证流程图

3.SoC Level Verification Environment和SoC Verification

SoC级验证环境包含子块级验证组件/环境以及专用的SoC级验证组件/环境。

  • SoC级验证方法

对于SoC验证,您必须选择最适合其彻底验证的正确验证方法。除此之外,您还必须检查其可重用性和与遗留验证环境的兼容性,是否可用以及是否要重用。

对于SoC验证,基于SoC的功能选择混合方法/混合语言验证环境或基于单一标准方法的环境。

  • 子ip /块/模块/集群集成

在开始实际的SoC级验证之前,首先要将子块/子ip /子集群集成到SoC级验证环境中。这是SoC验证的主要活动之一。您还必须开发连接检查器,以确保子块到SoC的集成是否正确完成。这将在SoC级验证中发挥关键作用,因为如果集成没有正确完成,那么您就不能期望SoC级的目标功能。

  • 遗留环境/可重用性和新的验证环境开发

作为可重用性和验证过程速度的一部分,首先检查是否存在可用的通用遗留验证环境,您可以重用它进行验证。例如,如果您正在处理SoC,请检查它是否是先前SoC的增强版本,其中包含一些额外的功能和增强。为此,您可以重用其遗留环境并增强它以验证其更新后的功能。您还可以在SoC级别重用子块的监视器、检查器、断言和可重用/可伸缩的测试用例场景。

作为SoC验证环境开发的一部分,您需要开发标准验证组件,如SoC级驱动程序、监视器、计分板/检查器/断言、参考模型、功能覆盖和顶级测试台。对于基于处理器的SoC,通常使用处理器来配置整个SoC/其子模块,并驱动SoC级刺激。对于标准协议,(如PCIe,以太网,USB等)你也可以使用市场上的第三方VIP(验证IP)来加快验证。

  • 在SoC级别验证模拟宏

对于模拟宏,来自设计人员的用于SoC级功能验证的等效数字参考模型是可用的,因为在SoC级,模拟混合信号仿真需要更多的时间。一般来说,IP级团队拥有各自的模拟宏,在IP级验证时将通过模拟混合信号模拟来确保其功能。

  • SoC水平情况

在SoC级验证时,您可能需要开发SoC级场景,以最终用户的观点在顶层验证其功能。如果IP级团队已经开发了可重用/可伸缩的SoC级测试用例场景,那么您可以在SoC级重用相同的测试用例场景,这将帮助您加快SoC验证。您还可以重用遗留测试用例场景,并对之前版本中出现的SoC的类似功能进行一些修改。

  • SoC水平调试

调试是一个耗时的过程,特别是涉及到复杂的SoC验证时。正确理解需要在SoC级别验证的详细架构或模块,将帮助您在很大程度上减少不必要的调试时间。

使用适当的编码风格和智能消息打印与用户控制冗长,开关所需的子IP级消息,开启验证方法的调试开关,并使用适当的EDA工具的调试功能,这将帮助您快速调试RTL以及SoC级别的测试台/VE(验证环境)问题。例如,如果您正在使用UVM,那么您可以使用+UVM_OBJECTION_TRACE加上命令行上的一个参数来跟踪目标活动。

在bug归档或任何RTL问题报告期间,你应该提供所有次要的细节,包括重现这个问题的步骤和波形,如果适用于设计师,将帮助他快速修复问题!!

4.功能和代码覆盖闭包

功能和代码覆盖闭包是成功的SoC tapout的主要里程碑之一。对功能/代码覆盖率进行适当的分析和审查将帮助您接近100%。通常,在SoC级别,累积回归结果/连续回归结果的合并被用来关闭功能和代码覆盖。在未被发现的代码的代码覆盖中,您应该有适当的理由来证明它是冗余的RTL代码,或者代码将永远不会在SoC级别上执行,或者它在功能验证期间没有被覆盖。如果代码不打算在SoC级别上覆盖或不用于此SoC,那么这些类型的代码必须在设计师确认后添加到排除列表中。

5.最终功能验证结束(验证结束)

对于最终的功能性验证闭包,您必须满足在功能性验证结束列表中定义的所有功能性验证标准。例如,100%的功能和代码覆盖率,连续定义的清晰回归数,所有的错误关闭/修复,等等。功能和代码覆盖将为设计的成熟度及其功能验证结束提供信心。

相关文章:

- - - - - -迪利普所是eInfochips的ASIC工程师。

留下你的评论