一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于变量组合时间序列功能覆盖率的测试方法和系统与流程

2022-10-13 05:45:15 来源:中国专利 TAG:


1.本发明涉及芯片验证(测试)、软件测试等技术领域,具体涉及一种基于变量组合时间序列功能覆盖率的测试方法和系统。


背景技术:

2.在芯片验证中,场景分析会得到大量的测试用例,这些测试用例用于描述芯片会做什么配置、会产生什么样的激励、期望得到什么结果。这里涉及多种不同的因素,以及各个因素的取值范围。重要的是,还需要对这些需要覆盖的场景进行统计,明确哪些配置、激励、期望的结果已测试到或没测试到。这种类型的覆盖叫做组合或交叉覆盖率(cross coverage),后续为便于描述,统称为组合覆盖率。
3.另外一种场景是针对某个因素或多个因素,在不同时间里,从一种取值变化到另一种取值,即增加了时间维度,随时间变化的场景,称之为时间序列功能覆盖率。
4.现有时间序列功能覆盖率,采用covergroup
–ꢀ
coverpoint
ꢀ–ꢀ
bins结构进行定义。该技术存在如下缺陷:(1)实现繁琐,为了编译器的需要,需要输入大量的额外信息,有效信息密度低,导致编程工作量大。
5.(2)其只能定义单个变量的时间序列,无法支持多个变量的时间序列,然而实际验证需求是:在一个时间序列,即同一时刻,往往需要多个变量的取值进行组合,故现有时间序列功能覆盖率无法满足验证要求。
6.(3)没有提供相应的约束语法或手段,实现时间序列功能覆盖率目标的达成。
7.(4)无法对仓中某个段设置权重,无法满足验证需求。


技术实现要素:

8.为了解决现有技术工作量大,且无法满足实际验证需求的问题,本发明提供了一种基于变量组合时间序列功能覆盖率的测试方法。本发明基于简化的变量组合时间序列功能覆盖率结构以及随机测试算法,高效实现多变量组合时间序列功能覆盖率的测试目标。
9.本发明通过下述技术方案实现:一种基于变量组合时间序列功能覆盖率的测试方法,包括:根据实际验证需求,构建变量组合时间序列功能覆盖率结构并将其作为随机约束;变量组合时间序列功能覆盖率结构用于表征单个变量随时间变化的关系或至少两个变量组合随时间变化的关系;确定变量组合时间序列功能覆盖率结构中每个变量的每个取值范围的随机种子;按变量组合时间序列功能覆盖率结构的时间序列顺序获取一个时间点作为当前时间点;从变量组合时间序列功能覆盖率结构中获取每个变量当前时间点下的取值段,组成当前时间点下的变量组合结构;
针对当前时间点下的变量组合结构,根据相应的随机种子产生每个变量的随机激励以进行当前场景测试;返回执行按变量组合时间序列功能覆盖率结构的时间序列顺序获取一个时间点作为当前时间点步骤,直到遍历完整个时间序列。
10.作为优选实施方式,本发明构建的变量组合时间序列功能覆盖率结构为三层结构;其中,第一层采用大括号“{}”,表示包括一个变量的时间序列或至少两个变量的组合时间序列;第二层采用中括号“[ ]”,表示每个变量的所有取值段;第三层采用中括号“[ ]”,表示每个段的取值范围和/或权重;且每个变量的取值段数量相同,均与时间序列长度相等。
[0011]
作为优选实施方式,本发明的权重用于表示取值范围的重复次数,在取值范围的中括号“[ ]”后增加“*w”进行表征,w表示权重值。
[0012]
作为优选实施方式,本发明的权重值w小于等于时间序列长度n。
[0013]
作为优选实施方式,本发明当权重值w等于时间序列长度n时,则缺省。
[0014]
作为优选实施方式,本发明的取值范围包括首尾数值相等的数值或首尾数值不相等的数值范围。
[0015]
作为优选实施方式,本发明的随机种子用于保证每次测试产生的随机激励能够复现。
[0016]
作为优选实施方式,本发明产生的随机激励为:如果变量的取值范围为单个数值,则直接返回该单个数值作为随机激励;如果变量的取值范围为数值范围,则在该数值范围内产生一个随机数作为随机激励。
[0017]
作为优选实施方式,本发明的方法还包括:输出测试结果。
[0018]
另一方面,本发明提出了一种基于变量组合时间序列功能覆盖率的测试系统,包括:构建模块,根据实际验证需求,构建变量组合时间序列功能覆盖率结构并将其作为随机约束;变量组合时间序列功能覆盖率结构用于表征单个变量随时间变化的关系或至少两个变量组合随时间变化的关系;随机种子选取模块,用于确定变量组合时间序列功能覆盖率结构中的每个变量的每个取值范围的随机种子;组合序列模块,按变量组合时间序列功能覆盖率结构的时间序列顺序获取一个时间点作为当前时间点,从变量组合时间序列功能覆盖率结构中获取每个变量当前时间点下的取值段,组成当前时间点下的变量组合结构;随机测试模块,针对当前时间点下的变量组合结构,根据相应的随机种子产生每个变量的随机激励以进行当前场景测试。
[0019]
本发明具有如下的优点和有益效果:1、本发明通过构建的变量组合时间序列功能覆盖率目标结构,且将其直接作为随
机约束产生随机激励,能够大大降低了编码工作量,提高了编码效率和测试效率,且结合测试算法,能够直接命中目标,能够实现100%功能覆盖率目标,弥补了现有技术没有组合约束和时间序列约束的功能。
[0020]
2、相较于现有对coverpoint、cross、coverproup设置整体权重,其只有计算总体覆盖率数据有意义,并不能反映实际验证需求。本发明能够对bins设置权重,更能体现实际验证需求的本质,符合实际验证需求。
附图说明
[0021]
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本技术的一部分,并不构成对本发明实施例的限定。在附图中:图1为本发明实施例的方法流程示意图。
[0022]
图2为本发明实施例的多变量组合时间序列功能覆盖率示例。
[0023]
图3为本发明实施例的计算机设备原理框图。
[0024]
图4为本发明实施例的系统原理框图。
具体实施方式
[0025]
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
[0026]
实施例1传统的时间序列功能覆盖率,其采用system verilog语言中的covergroup
ꢀ–ꢀ
coverpoint
ꢀ–ꢀ
bins语法结构来定义,其仅能定义单个变量随时间变化的情况,无法描述多个变量的组合关系,从而不满足实际验证需求;同时现有技术进行时间序列功能覆盖率定义,需要配套复杂程序,从而耗费大量的人力物力,导致测试效率低等。针对此,本发明实施例提出了一种基于变量组合时间序列功能覆盖率的测试方法,本发明实施例通过采用变量组合时间序列功能覆盖率结构以及相应的测试算法,大大减轻了编码负担,提高了编码效率,从而提高了测试效率。
[0027]
具体如图1所示,本发明实施例1提出的测试方法具体包括如下步骤:步骤s1,根据实际验证需求,构建变量组合时间序列功能覆盖率结构,并将其作为随机约束。
[0028]
具体的,本发明实施例构建的多变量组合时间序列功能覆盖率结构为一个三层结构,从外至内依次为第一层、第二层和第三层。其中,第一层表示包括一个变量的时间序列或至少两个变量的组合时间序列,第二层表示每个变量的所有取值段,第三层表示每个取值段的取值范围,取值范围可以是数值或数值范围,需要说明的是,数值也可认为是数值范围的特例,第三层还可采用“*w”的方式表示取值范围的权重,即该取值范围的重复次数。因为所有变量均是随时间序列变化的,因此每个变量的取值段数量相同,即取值段数量等于时间序列长度n。则本发明实施例采用的变量组合时间序列功能覆盖率结构可表示为:sequence s1 = {
ꢀꢀꢀꢀ
// 变量 x
ꢀꢀꢀꢀ
[ [100, 200] ],
ꢀꢀꢀꢀ
// 变量 y
ꢀꢀꢀꢀ
[ [0, 100], [200, 300], [300, 400]],
ꢀꢀꢀꢀ
// 变量 z
ꢀꢀꢀꢀ
[ [100, 200], [100, 200], [300, 400]]}即上述三层结构中,第一层采用大括号“{}”,其表示该组合时间序列中包括三个变量x、y、z;第二层采用中括号“[ ]”,其表示每个变量的所有取值段,此示例中,时间序列长度为3,故变量x包括3个取值段,变量y包括3个取值段,变量z包括3个取值段;第三层采用中括号“[ ]”,其表示每个取值段的具体数值范围或者数值。上述sequence数据结构具体的组合时间序列描述如下:[[100, 200], [0, 100], [100, 200]] =》[[100, 200], [200, 300], [100, 200]] =》[[100, 200], [300, 400], [300, 400]]。
[0029]
如图2所示,本发明实施例提出的变量组合时间序列功能覆盖率结构,其可以描述多变量随时间变化的情况,例如,传统的,x变量只有一个随机范围,而本发明实施例不仅仅可以获得x变量的变化情况,还可以获得x变量、y变量、z变量组合变化情况(如图2中=》=》),更加符合实际验证需求。
[0030]
需要说明的是:本发明实施例中以3个变量、且时间序列长度为3进行示例性说明,但不对此进行限制。在另外的优选实施方式中,根据实际需求,还可设置1个变量、2个变量或者3个以上变量,以及其他时间序列长度。另外,本发明实施例中的每个变量的每个取值段为一个数值范围,在另外的优选实施例中,也可以是一个数值,数值也可以看做一种特殊的数值范围,例如,取值为100,则可以表示为[100, 100]。
[0031]
为了提高编程效率以及用户友好性,本发明实施例对构建的变量组合时间序列功能覆盖率结构还可以替换为以下几种方式:方式一:每个变量中可包括1个取值段或n个取值段,n为时间序列长度。
[0032]
sequence s1 = {
ꢀꢀꢀꢀ
// 变量 x
ꢀꢀꢀꢀ
[ [100, 200] ],
ꢀꢀꢀꢀ
// 变量 y
ꢀꢀꢀꢀ
[ [0, 100], [200, 300], [300, 400]],
ꢀꢀꢀꢀ
// 变量 z
ꢀꢀꢀꢀ
[ [100, 200], [100, 200], [300, 400]]}方式一中,变量x的3个取值段的取值范围相同,故仅记载一次,默认将其取3次,即默认有n个取值。
[0033]
方式二:以权重的方式对重复的取值范围进行描述。例如,变量x的3个取值范围相同,故可使用[100, 200] * 3的方式来描述,变量z的取值范围[100, 200]重复了两次,则使用[100, 200] * 2的方式来描述。即所谓的权重w表示重复的次数,且w小于等于n,若等
于n时可省略该权重,默认重复n次,即获得上述方式一所示结构。
[0034]
sequence s1 = {
ꢀꢀꢀꢀ
// 变量 x
ꢀꢀꢀꢀ
[ [100, 200] * 3 ],
ꢀꢀꢀꢀ
// 变量 y
ꢀꢀꢀꢀ
[ [0, 100], [200, 300], [300, 400]],
ꢀꢀꢀꢀ
// 变量 z
ꢀꢀꢀꢀ
[ [100, 200] * 2, [300, 400]]}本发明实施例构建了变量组合时间序列功能覆盖率并将其作为测试约束,不但描述了变量组合时间序列功能覆盖率,同时将变量组合时间序列功能覆盖率目标直接作为随机约束来产生随机激励,一方面省去了大量的随机约束语法,将这部分编码工作降为零。另一方面,随机数据直接命中目标,特别是一次性命中组合目标,弥补了现有技术没有组合约束和时间序列约束的功能。
[0035]
传统的时间序列功能覆盖率定义仅能设置整体权重,其只对计算总体覆盖率数据有意义,并不能反映实际验证需求,而本发明实施例还能够实现取值范围权重设置,更能体现实际验证需求。
[0036]
步骤s2,确定变量组合时间序列功能覆盖率结构中的每个变量的每个取值范围的随机数种子。
[0037]
本发明实施例后续测试过程中基于该随机数种子,产生系列随机数,保证每次测试产生的随机数能够复现,从而保证100%覆盖,不会造成遗漏。
[0038]
步骤s3,按变量组合时间序列功能覆盖率结构的时间序列顺序获取一个时间点作为当前时间点,从变量组合时间序列功能覆盖率结构中获取每个变量当前时间点下的取值段,组成当前时间点下的变量组合结构。
[0039]
本发明实施例按照时间序列长度,顺序对每个变量取一个取值段,可得到某一时间点下的变量的取值段组合,即变量组合结构。具体以上述变量组合时间序列功能覆盖率结构为例进行说明:按照时间序列长度依次可获得的变量组合结构为:[[100, 200], [0, 100], [100, 200]] =》 [[100, 200], [200, 300], [100, 200]] =》[[100, 200], [300, 400], [300, 400]]。
[0040]
步骤s4,针对当前时间点下的变量组合结构,根据相应的随机种子产生每个变量的随机激励以进行当前场景测试。
[0041]
本发明实施例以当前时间序列下的多变量组合结构为[[100, 200], [0, 100], [100, 200]]为例进行说明,步骤s4针对每个变量的取值范围,根据其对应的随机种子,产生该取值范围的一个随机数作为随机激励,每个变量获取一个随机数,即产生变量x取值范围[100, 200]中的一个随机数,变量y取值范围[0, 100]中的一个随机数,变量z取值范围[100, 200]中的一个随机数。
[0042]
需要说明的是:如果在取值范围只有一个数值的时候,则直接返回该数值作为随机激励进行测试。
[0043]
步骤s5,按照时间序列长度重复步骤s3和步骤s4,从而获得所有变量的随机激励以完成所有场景下的测试,从而覆盖所有场景,即使变量组合时间序列覆盖率达100%。
[0044]
步骤s6,输出测试结果。
[0045]
本发明实施例提出的测试方法能够使得变量组合时间序列覆盖率达到100%,提高了验证效率和质量。
[0046]
本实施例还提出了一种计算机设备,用于执行本实施例的上述方法。
[0047]
具体如图3所示,计算机设备包括处理器、内存储器和系统总线;内存储器和处理器在内的各种设备组件连接到系统总线上。处理器是一个用来通过计算机系统中基本的算术和逻辑运算来执行计算机程序指令的硬件。内存储器是一个用于临时或永久性存储计算程序或数据(例如,程序状态信息)的物理设备。系统总线可以为以下几种类型的总线结构中的任意一种,包括存储器总线或存储控制器、外设总线和局部总线。处理器和内存储器可以通过系统总线进行数据通信。其中内存储器包括只读存储器(rom)或闪存(图中未示出),以及随机存取存储器(ram),ram通常是指加载了操作系统和计算机程序的主存储器。
[0048]
计算机设备一般包括一个外存储设备。外存储设备可以从多种计算机可读介质中选择,计算机可读介质是指可以通过计算机设备访问的任何可利用的介质,包括移动的和固定的两种介质。例如,计算机可读介质包括但不限于,闪速存储器(微型sd卡),cd-rom,数字通用光盘(dvd)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并可由计算机设备访问的任何其它介质。
[0049]
计算机设备可在网络环境中与一个或者多个网络终端进行逻辑连接。网络终端可以是个人电脑、服务器、路由器、智能电话、平板电脑或者其它公共网络节点。计算机设备通过网络接口(局域网lan接口)与网络终端相连接。局域网(lan)是指在有限区域内,例如家庭、学校、计算机实验室、或者使用网络媒体的办公楼,互联组成的计算机网络。wifi和双绞线布线以太网是最常用的构建局域网的两种技术。
[0050]
应当指出的是,其它包括比计算机设备更多或更少的子系统的计算机系统也能适用于发明。
[0051]
如上面详细描述的,适用于本实施例的计算机设备能执行基于变量组合时间序列功能覆盖率的测试方法的指定操作。计算机设备通过处理器运行在计算机可读介质中的软件指令的形式来执行这些操作。这些软件指令可以从存储设备或者通过局域网接口从另一设备读入到存储器中。存储在存储器中的软件指令使得处理器执行上述的群成员信息的处理方法。此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本发明。因此,实现本实施例并不限于任何特定硬件电路和软件的组合。
[0052]
实施例2本实施例提出了一种基于变量组合时间序列功能覆盖率的测试系统,具体如图4所示,包括:构建模块,根据实际验证需求,构建变量组合时间序列功能覆盖率结构并将其作为随机约束。具体构建方式以及构建的变量组合时间序列功能覆盖率结构如上述实施例1所述,此处不再过多赘述。
[0053]
随机种子选取模块,用于确定变量组合时间序列功能覆盖率结构中的每个变量的每个取值范围的随机种子。具体过程如上述实施例1所述,此处不再过多赘述。
[0054]
组合序列模块,按变量组合时间序列功能覆盖率结构的时间序列顺序获取一个时间点作为当前时间点,从变量组合时间序列功能覆盖率结构中获取每个变量当前时间点下的取值段,组成当前时间点下的变量组合结构。具体过程如上述实施例1所述,此处不再过多赘述。
[0055]
随机测试模块,针对当前时间点下的变量组合结构,根据相应的随机种子产生每个变量的随机激励以进行当前场景测试。具体过程如上述实施例1所述,此处不再过多赘述。
[0056]
输出模块,用于输出测试结果。
[0057]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献