本发明适用于芯片验证,尤其涉及一种芯片验证用例的自动化生成方法、系统及相关设备。
背景技术:
1、芯片设计主要可分为规格指定、详细设计、hdl实现、验证、制片、回片验证、芯片发布使用。若回片验证发现重大缺陷,可能需要再次修改设计或者实现,重新制片,做回片验证。芯片发布后,才可以开发对应的应用软件。
2、通常,芯片验证可以分为system test(st)、unit test(ut)、integrate test(it)、bbit(building block integrated test)、system design verify(sdv)等。不同的阶段有不同的验证侧重点、不同的工具、不同的验证方法。
3、芯片验证过程中,开发者需要通过分析测试点来编写验证用例,通过软件将部分内容,例如取值,随机化,并生成验证用例可执行文件,运行仿真并和模拟器输出对比来实现系统级验证。验证用例运行时,收集代码覆盖率。得到覆盖率报告后,需要逐点分析报告中未覆盖到的代码。对于应该覆盖,但是未覆盖到的代码,编写针对性验证用例,然后重新运行、收集、分析,直到覆盖率满足要求。
4、现有技术中,验证用例基本上都通过开发者人为编写,即便在编写过程中有一些便于开发使用的编写软件,也需要人为地构造每个验证用例的验证思路的流程。这种方式不仅耗时长、消耗人力,也有可能无法全方位覆盖所有的测试点和极端情况,对于后期修改测试用例的情况工作量更繁重。从代码覆盖率的角度来讲,现有技术无法高效地提升覆盖率并快速到达瓶颈或百分之百的代码覆盖率。
技术实现思路
1、本发明提供一种芯片验证用例的自动化生成方法、系统及相关设备,旨在解决现有验证用例编写过程工作繁重、覆盖率不高的技术问题。
2、为解决上述技术问题,第一方面,本发明提供一种芯片验证用例的自动化生成方法,所述自动化生成方法包括以下步骤:
3、s101、获取配置文件,并根据所述配置文件生成验证用例代码,所述配置文件包括待验证芯片状态条目;
4、s102、根据所述验证用例代码生成可执行文件,并将所述可执行文件在测试平台上运行,根据所述可执行文件在测试平台上验证是否通过的结果,从所述可执行文件中筛选出验证通过的部分,定义为验证通过用例;
5、s103、计算获取所述验证通过用例的验证条目覆盖率、覆盖率贡献值和贡献率权重;
6、s104、判断所述验证通过用例对应的所述验证条目覆盖率是否满足预设覆盖率规则,若否,返回步骤s101;若是,执行步骤s105;
7、s105、判断所述验证通过用例对应的所述覆盖率贡献值是否满足预设贡献规则,若否,抛弃所述验证通过用例;若是,保留所述验证通过用例,将其输出作为验证用例生成结果。
8、更进一步地,步骤s101中,根据所述配置文件生成验证用例代码的步骤具体为:
9、对所述配置文件进行语法分析,从预设指令数据库中选择对应所述配置文件的指令语法的指令进行随机生成组合,得到所述验证用例代码。
10、更进一步地,步骤s103中,所述待验证芯片状态条目包括硬件代码覆盖率的代码行、条件判断、操作位翻转、状态机、分支代码、以及功能覆盖率的断言和覆盖组,定义当前的所述验证通过用例的编号为,第个所述验证通过用例的所述验证条目覆盖率为,第个和第个验证通过用例合并后的覆盖率结果为,第个所述验证通过用例的所述覆盖率贡献值为,第个所述验证通过用例的所述贡献率权重为,所述覆盖率贡献值和所述贡献率权重分别满足:
11、;
12、;
13、其中,下标表示所述待验证芯片状态条目的个数,。
14、更进一步地,步骤s104中,定义第个所述验证通过用例与之前所有验证通过用例相比的重复率为,其满足:
15、;
16、定于深度为的队列用于存储所述重复率按从小到大排序的前个验证通过用例,其中,队列中所有元素的方差值为,所述预设覆盖率规则具体为:
17、;
18、其中,为预设覆盖率标准值,为预设常量。
19、更进一步地,步骤s105中,所述预设贡献规则具体为:
20、;
21、其中,、为常数,且;
22、若,且,则抛弃所述验证通过用例;
23、若,且,则抛弃所述验证通过用例;
24、否则,保留所述验证通过用例。
25、更进一步地,步骤s105还包括步骤:
26、在保留所述验证通过用例时,将所述验证通过用例插入队列,并删除队列中所述重复率最大的元素。
27、更进一步地,步骤s104还包括步骤:
28、在返回步骤s101时,根据所述贡献率权重调整所述待验证芯片状态条目对应生成验证用例代码的比例。
29、第二方面,本发明还提供一种芯片验证用例的自动化生成系统,包括:
30、自动生成模块,用于获取配置文件,并根据所述配置文件生成验证用例代码,所述配置文件包括待验证芯片状态条目;
31、编译运行模块,用于根据所述验证用例代码生成可执行文件,并将所述可执行文件在测试平台上运行,根据所述可执行文件在测试平台上验证是否通过的结果,从所述可执行文件中筛选出验证通过的部分,定义为验证通过用例;
32、数据计算模块,用于计算获取所述验证通过用例的验证条目覆盖率、覆盖率贡献值和贡献率权重;
33、第一决策模块,用于判断所述验证通过用例对应的所述验证条目覆盖率是否满足预设覆盖率规则,若否,返回所述自动生成模块;若是,执行第二决策模块;
34、第二决策模块,用于判断所述验证通过用例对应的所述覆盖率贡献值是否满足预设贡献规则,若否,抛弃所述验证通过用例;若是,保留所述验证通过用例,将其输出作为验证用例生成结果。
35、第三方面,本发明还提供一种计算机设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例中任意一项所述的芯片验证用例的自动化生成方法中的步骤。
36、第四方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中任意一项所述的芯片验证用例的自动化生成方法中的步骤。
37、本发明所达到的有益效果,在于提出了一种能够自动生成高覆盖率的芯片验证用例的方法,该方法生成通过随机验证、测试、收集验证用例的覆盖率等信息进行迭代和筛除,使得生成的随机验证用例覆盖用户配置的所有指令和数据,且该过程不需要额外人力投入,能够通过简单的修改配置文件来适配不同芯片类型,并以最少的验证用例生成数量满足高覆盖率,减少计算资源的压力,并提高随机验证用例的可用性。
1.一种芯片验证用例的自动化生成方法,其特征在于,所述自动化生成方法包括以下步骤:
2.如权利要求1所述的芯片验证用例的自动化生成方法,其特征在于,步骤s101中,根据所述配置文件生成验证用例代码的步骤具体为:
3.如权利要求1所述的芯片验证用例的自动化生成方法,其特征在于,所述待验证芯片状态条目包括硬件代码覆盖率的代码行、条件判断、操作位翻转、状态机、分支代码、以及功能覆盖率的断言和覆盖组,步骤s103中,定义当前的所述验证通过用例的编号为,第个所述验证通过用例的所述验证条目覆盖率为,第个和第个验证通过用例合并后的覆盖率结果为,第个所述验证通过用例的所述覆盖率贡献值为,第个所述验证通过用例的所述贡献率权重为,所述覆盖率贡献值和所述贡献率权重分别满足:
4.如权利要求3所述的芯片验证用例的自动化生成方法,其特征在于,步骤s104中,定义第个所述验证通过用例与之前所有验证通过用例相比的重复率为,其满足:
5.如权利要求4所述的芯片验证用例的自动化生成方法,其特征在于,步骤s105中,所述预设贡献规则具体为:
6.如权利要求5所述的芯片验证用例的自动化生成方法,其特征在于,步骤s105还包括步骤:
7.如权利要求3所述的芯片验证用例的自动化生成方法,其特征在于,步骤s104还包括步骤:
8.一种芯片验证用例的自动化生成系统,其特征在于,包括:
9.一种计算机设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任意一项所述的芯片验证用例的自动化生成方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任意一项所述的芯片验证用例的自动化生成方法中的步骤。