基于vManager的大规模IC验证自动化解决方案
2021-08-29梁其锋石义军贺志强
植 玉,梁其锋,石义军,贺志强
(深圳市中兴微电子技术有限公司,广东 深圳 518054)
0 引言
本文介绍了验证管理工具vManager,通过Python 调用vAPI 接口与企业级的产品需求管理系统Microsoft TFS 和用户数据后台对接,实现了从自动创建验证需求框架(即vPlan),自动执行回归验证,自动提取验证结果反标Microsoft TFS 中的需求状态,自动提取验证结果呈现到验证看板的自动化验证管理全流程。
本方案旨在自动化、规范化地实现从验证需求到vPlan的同步,验证回归状态和覆盖率数据的实时汇总,实现验证的高效率与高透明度,需求跟踪达到滴水不漏。该方案还采用了vManager 最新一代的High Available 模式,可实现跨地域的多团队合作与数据共享,并部署了多引擎验证工具的包括Xcelium、JasperGold 和Palladium的验证管理,实现多维度的验证数据汇总。
目前该方案已经部署到真实的研发环境中,为vManager在国内比较领先的应用,为业内提供“跨地域合作+多个仿真引擎”的大规模自动化验证方案提供非常有价值的参考。
1 Cadence vManager工具简介
vManager 为业内比较先进的“服务器+客户端”模式的团队合作验证回归管理工具,可有效地实现验证计划制定、验证回归管理、验证结果分析等自动化流程。vManager提供了友好的用户界面GUI,其中的组件Planner center用于创建验证计划即vPlan;Regression center 用于执行回归提交;Analysis center 用于分析回归状态和覆盖率情况,并生成用户自定义的报告;Tracking center 则用于为提取历次回归的数据,分析项目进度趋势,产生直方图、曲线图等直观报表,并具有自动发送邮件等功能。
这样一个验证管理工具会产生大量的验证状态数据,那必然有与企业级的其他管理工具的对接诉求,vManager所带的API(vAPI)提供了这样的接口,是工业标准级的API,易于和其他工具对接,vAPI 支持用户可编程,采用基REST 协议,使用JSON(JavaScript Object Notation)格式承载数据,具有数据轻量级、可读性强、编程容易的特点。
2 验证管理自动化闭环诉求
我司使用Microsoft TFS 作为项目需求管理工具,Microsoft TFS 是微软公司提供源代码管理、数据收集报告和跟踪的项目管理软件。TFS 与vManager 有紧密的数据交互诉求,例如Microsoft TFS 里的产品需求如何无缝地转换为vPlan 里的验证条目,而TFS 里的验证需求点如果产生变更,如何自动地更新vPlan 里的条目进行迭代,特别地,需要支持vPlan验证条目被删除、取消、挂起和新建四种状态。
另外,我司有自研的数据看板dashboard系统,里面需要反馈设计需求,验证需求,验证用例通过率,代码覆盖率和功能覆盖率等状态数据,看板的数据需要来源于运行完成特定的回归,按照验证需求点的百分比换算为“待验证”(0%)、“验证中”(1%~99%)、“验证通过”(100%)。
图1 反映了这3 种系统的数据流:TFS系统产生需求,更新到看板系统里的研制规范,再更新至vManager 里的vPlan的验证条目。验证人员开发验证平台后,创建testcase,启动验证并进行迭代回归,回归的数据反标至vPlan 得到需求是否被验证通过的状态,最后反馈到TFS系统中,再同步至看板系统中。
图1 系统交互框图
3 解决方案
自动化验证过程管理方案整体思路如图2 所示。
图2 验证自动化解决方案整体框图
TFS系统生成的需求由脚本整理成vManager 所支持的CSV 文件格式的验证需求框架,送给vManager,vManager通过vAPI 创建或更新vPlan,这样就达到了TFS 向vPlan同步的目的。
当验证人员用vManager 完成验证用例回归时,用例通过情况和覆盖率数据已经生成,此时在通过后台调用vAPI 读取相应的回归,关联相关的vPlan,获得验证需求点被覆盖的情况,此外数据客观、透明、验证人员无感知。
该方案的细节实现可划分为七部分:相关约定、TFS自动生成vPlan 框架、验证需求分解、验证需求和验证结果关联、TFS 状态翻转实现、验证看板内容实现、验证结果日常提交操作。
3.1 相关约定
为了实现TFS、vManager、dashboard(验证看板)等系统之间的同步通信,特对验证的一些输入输出文件和目录命名及存放路径进行统一约定,包括vPlan 和vsif(包含session 名称定义)两种文件命名约定。vsif、session、vPlan的统一命名为
另外,要对session自定义属性进行约定。根据项目要求周期性将调试好的用例填写到相应子系统/模块的vsif 文件中,并在vManager 中launch 该vsif 文件实现批量执行仿真作业(每launch 一次将生成一个session),session结果(即仿真结果)将统一纳入vManager系统管理,IT 后台将通过vAPI 接口从vManager系统读取仿真结果供TFS 和验证看板使用。前面vsif 文件命名的约定可以使自动生成session 名包含项目、子系统、模块等信息,但还缺少dut 类型、大版本、小版本(svn 版本)三类信息,故在vManager系统中相应增加(由系统管理员执行增加)属性dut_type、dut_release_version 和dut_svn_version。launch vsif 文件时约定配置session的三个属性。
3.2 TFS自动生成vPlan 框架
项目各个系统、子系统和模块所有vPlan 框架由IT系统自动从TFS系统读取相关信息通过脚本生成。目前,IT系统能自动生成rtl 和pr 网表验证两种vPlan 框架,基本策略见图3。
图3 自动生成vPlan 框架示意图
TFS的需求和vPlan 之间实现单向自动同步:IT 脚本检测到TFS 需求变更后,通过vManager的vAPI 对相应的vPlan 内容进行迭代更新,特别地,遇到设计需求被删除、已取消、已挂起和新建四种状态,vPlan 对应的节点及其子节点的属性“Don’t show in Analysis”全部更新为“true”。
3.3 验证需求分解
前面已经生成了vPlan 框架,其实相当于大的验证需求点已经创建完毕,接下来要验证人员对这些需求点进行分析以及分解,同时填写验证规程。首先要从wiki系统上以pdf 格式导出要验证系统、子系统或模块的研制规范作为spec,接着在vManager 中打开对应的vPlan,在vPlan 中导入spec。最后,进行需求分解和规程编写。
特别地,将所有用例(包括规划但尚未设计的)统一描述在“Input Scenarios”节点下,一条用例建一个testcase类型的子节点。
3.4 验证需求和验证结果关联
搭建好验证环境后,将仿真执行脚本、用例名、每条用例执行次数等信息填到vsif 文件中,然后launch vsif,会生成session,vPlan 导入session 后即可以映射环境中的SVA Checker,Cover Group,Test List 到vPlan的需求底下,见图4。
图4 验证需求和验证结果关联映射图
3.5 TFS 状态翻转实现
本环节由IT 后台软件自动完成。软件将项目各个系统、子系统和模块所有vPlan 内所有来自TFS的原始验证需求完成百分比提取,然后根据验证需求的“TFS ID”找到其对应的TFS系统中的设计需求,将原始验证需求完成百分比换算为“待验证”(0%)、“验证中”(1%~99%)、“已验证”(100%)填到设计需求对应的“RTL验证状态”栏。
3.6 验证看板内容实现
验证看板有设计需求、验证需求、验证用例、bug、代码覆盖率、功能覆盖率共6 方面状态展示。
所有设计需求都在TFS系统中,TFS系统中每条需求的验证状态已经实现自动从vManager 提取数据分析实现翻转。因此,设计需求的状态展示直接从TFS系统汇总项目所有需求及其验证状态,根据需求标签进行按子系统/模块分别展示。
验证需求状态展示。软件将项目所要展示的系统/子系统/模块vPlan 内所有验证需求完成百分比提取,然后验证需求完成百分比换算为“待验证”(0%)、“验证中”(1%~99%)、“验证通过”(100%),另外,若该vPlan 节点及其子底下所有节点关联的任意一条testcase 任意一次run 为fail的则判断该节点为“验证不通过”,依此4 种验证状态分类统计,数据存放到看板数据库。
验证用例状态展示。软件将项目所要展示的系统/子系统/模块vPlan 内所有用例的执行状态提取,数据存放到看板数据库。所有EC 都在TFS系统中,由TFS系统导出所要展示的系统/子系统/模块的EC,进行状态分类和等级分类统计即可。
验证bug 状态展示。所有bug 都在TFS系统中,由TFS系统导出所要展示的系统/子系统/模块的EC,进行状态分类和等级分类统计即可。
3.7 验证结果日常提交操作
要想将验证过程结果自动呈现到TFS 和验证看板等IT系统上,务必通过前面约定的方式执行验证任务,仿真作业需通过launch vsif 文件方式提交session。因此,建议如下:
(1)日常调试平台和用例按传统验证方式执行即可;
(2)周期性地将调试好的平台和用例(调好的用例写进vsif 文件)通过launch vsif 文件方式提交session 实现批量执行,IT 后台将自动收集跑出来的结果反馈到TFS和验证看板等IT系统上,从而实现自动化验证过程管理。
4 结论
该方案涉及的vAPI 编程已在Python3.7 下调试通过并稳定运行,已经部署在实际开发环境中。从规模上,目前项目部署数量为15+,vManager Server 数量为10+。从性能上,vPlan的同步与更新基本达到实时,从vManager 提取数据到看板上,根据项目的规模一次提取时间从半小时到一个小时不等,基本满足大规模IC 开发的验证自动化需求。