Bootstrap

到底该如何智能跟踪SoC验证进度?

 

本文针对的是Synopsys的VCS用户,包含了excel格式的层次化验证计划创建流程,并结合实例详细介绍了在验证环境中集成层次化验证计划的具体步骤

 

介绍

SoC (System-on-Chip)验证工作主要包括三个关键阶段计划、开发和验证。计划阶段包括根据测试计划、覆盖计划和断言计划准备验证策略。复杂SoC的验证需要收集所有微观级别的数据(例如回归中的单个测试状态、功能和代码覆盖率数字等),以便更好地跟踪。人工收集上述信息可能会导致报告中的人为错误,使跟踪数据不准确,增加工程工作量。将整个验证跟踪过程自动化是理想的解决方案,既保证了跟踪的准确性,又避免了工程师繁琐的管理。

Synopsys的VCS使用层次化验证计划(HVP)解决上述问题,它通过用户定义的属性为用户提供灵活性,同时根据项目需求准备验证计划。一旦验证环境准备好了,并且回归测试的过程开始了,就可以使用层次化验证计划在电子表格或文档格式的公共位置收集前面提到的所有必需信息。还可以在个别计划以及这些计划的子表(如果以excel格式维护)中对结果进行反标。本文针对的是Synopsys的VCS用户,包含了excel格式的分层验证计划创建流程,以及在验证环境中集成验证计划的详细步骤

 

 

HVP生成的基本流程

       

  图1 基本流程图

 

在项目的计划阶段,最初的步骤是生成验证计划,其中包含测试计划覆盖率计划断言计划。分层验证计划(HVP)支持XML、Doc等多种格式。在本文中,将使用XML格式介绍HVP的流程。当回归阶段开始时,在每一次回归之后,使用统一报告生成器(Unified Report Generator, URG)生成合并的覆盖率数据库。HVP允许从命令行提供任何在覆盖率数据库中不可用的用户定义信息(如回归结果、断言摘要等)作为外部用户数据。使用URG和电子表格注释器,用户可以在各自的计划中得到所有的验证结果。下面一节将介绍生成HVP的详细步骤以及示例。

 

 

生成HVP的详细步骤

             

图2 生成HVP的步骤

 

下面对图2中生成HVP的每个步骤进行详细说明:

 

步骤1:验证计划的制定

生成HVP计划文件,该文件包含功能以及代码覆盖率测试场景断言的映射。用户可以很容易地从DVE中生成此计划文件。

代码覆盖率的.hvp格式的示例计划文件如图3所示。

             

图3 HVP的样例文件

 

下一步是使用以下命令将上述计划文件转换为XML格式:

             

该命令将生成输出文件ei_SoC_planfile.hvp.xml

不需要每次都在DVE中生成.hvp格式的计划文件。用户可以维护一种通用格式的XML或Doc验证计划,帮助用户方便地更新项目的具体信息。如果测试计划包含每个块的单独工作表,那么这些工作表需要作为子计划添加到顶层验证计划中。用户还需要包括所有的相关计划(例如Testplan.xml, Coverageplan.xml, Assertionplan.xml),如图4所示。

             

图4 概括顶层验证计划的格式

 

图5显示了一个用于ei_SoC验证的示例顶级XML计划文件。该SoC包含SPI、I2C、以太网、GPIO、HSIC-USB2.0等模块。ei_SoC_Testplan.xml以及ei_SoC_Coverageplan.xml和ei_SoC_Assertionplan.xml在图5的最后一列。验证计划ei_SoC_Testplan.xml包含SoC的每个块的单独工作表。SPI块和系统级场景的样例testplan如图6所示。

             

图5 样本顶层验证计划

 

在创建顶层验证计划之后,用户需要添加一些相关的选项,这些选项是信息反标所必需的,如图6、7和8相应计划中所示。对于结果的反标,在顶层验证计划中也需要相同的选项。

             

图6 系统测试计划(SPI)

 

             

图7 覆盖率计划

 

             

图8 断言计划

 

 

步骤2:验证和回归

完成验证计划开发后,下一步是开发SoC功能验证的测试用例,并并行运行所有测试用例的回归。

 

步骤3:合并覆盖数据库

运行回归后,使用下面的命令合并覆盖率计划中反标所需的所有测试用例的覆盖率数据库:

urg -dir ei_SoC_merged_cov.vdb<list of vdb files for individual test >     

 

步骤4:生成UserData文件

如果用户希望在任何计划中注释一些用户定义的信息,可以使用命令行选项-userdata将其作为输入提供。这里,我们给出了ei_SoC_regression_status.txt来注释单个测试用例的通过/失败状态,以及ei_SoC_assertion_status.txt来注释断言计划中的断言结果。这个用户定义的信息是使用回归结果后处理脚本生成的。回归状态的示例用户数据文件如图9所示。

图9 样本用户数据文件的回归状态

 

 

步骤5:验证计划中的反标

获取带注释的HVP报告 .xml.ann格式,用户需要应用以下命令:

       

hvp annotate -lca -plan ei_SoC_planfile.hvp.xml -dir ei_SoC_merged_cov.vdb -userdata ei_SoC_regression_status.txt ei_SoC_assertion_status.txt _plan_out  ei_SoC_planfile.ann.xml 

     

用户还可以使用-plan_out选项获得用户定义名称的带注释的XML。

为获得HVP的HTML报表,用户需要使用如下命令:

 

urg -plan ei_SoC_planfile.hvp.xml -dir ei_SoC_merged_cov.vdb -userdata ei_SoC_regression_status.txt ei_SoC_assertion_status.txt -report<path to o/p directory>

            

 

结果分析

在执行上述步骤之后,结果将在XML工作表中进行注释。带注释的XML包含一个用于顶层结果的独立工作表,后面是每个子计划的单独工作表(即SPI_Tests、I2C_Tests、Ethernet_Tests、GPIO_Tests、System_Tests、HSIC-USB20_Tests、Coverage_Plan、Assertion_Plan),如图9所示。用户可以通过单击顶层工作表的features列中的子计划名称跳转到各个子工作表,如图10所示。SPI块和系统级场景的注释测试计划(每个测试的通过/失败状态)如图11所示。类似地,图11和12显示了带注释的覆盖率数字和根据不同数字范围使用不同颜色的断言状态。

             

图10 顶层注释报告

 

             

图11 带注释的测试计划(SPI,系统)

 

             

图12 带注释的覆盖率计划

 

             

图13 带注释的断言计划

 

 

 

结论

使用Synopsys的统一报告生成器(URG)开发层次化验证计划(HVP),可以更方便、更有效地跟踪验证过程。层次化验证计划(HVP)为回归过程和覆盖率分析提供了更高的可见性。HVP的关键特性,如HTML报告生成、支持多种格式(如XML、Doc等)、报告在plan中的反标等,可以帮助我们在项目的收尾时减少时间和手工劳动。

 

;