CN114091383A - 测试序列生成方法、装置、系统及相关设备 - Google Patents
测试序列生成方法、装置、系统及相关设备 Download PDFInfo
- Publication number
- CN114091383A CN114091383A CN202111396548.9A CN202111396548A CN114091383A CN 114091383 A CN114091383 A CN 114091383A CN 202111396548 A CN202111396548 A CN 202111396548A CN 114091383 A CN114091383 A CN 114091383A
- Authority
- CN
- China
- Prior art keywords
- test
- constraint
- basic
- rule base
- test case
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种测试序列生成方法、装置、系统及相关设备,其中方法包括:获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;解析所述描述文件,确定所述测试用例中的测试元素;从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。本发明实施例能够降低生成测试序列所耗费的人力成本。
Description
技术领域
本发明实施例涉及芯片技术领域,具体涉及一种测试序列生成方法、装置、系统及相关设备。
背景技术
逻辑验证是数字芯片前端设计过程中的一个关键步骤,通常利用验证平台实现。具体的,验证平台可模拟芯片设计的实际运行环境,检验芯片设计功能的正确性。
选用UVM(Universal Verification Methodology,通用验证方法学)验证方法学搭建验证环境,易于实现IP level到SOC level验证环境的集成。而在具体的验证过程中,通常基于system verilog验证语言编写测试用例(test)的测试序列(test sequence),从而使得验证平台基于测试序列产生相应的激励,测试芯片设计中在该激励下的运行结果,并基于该运行结果进行芯片设计功能的检验。
然而,该种验证过程中,生成测试序列的方式需要耗费大量的人力成本。
发明内容
有鉴于此,本发明实施例提供一种测试序列生成方法、装置、系统及相关设备,以降低生成测试序列所耗费的人力成本。
为实现上述目的,本发明实施例提供如下技术方案。
第一方面,本发明实施例提供一种测试序列生成方法,包括:
获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;
解析所述描述文件,确定所述测试用例中的测试元素;
从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;
基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
可选的,所述获取测试用例的描述文件之前,还包括:
构建与测试用例的应用场景对应的基本规则库,所述基本规则库至少包括基于所述应用场景下各测试元素的基础约束。
可选的,所述构建与测试用例的应用场景对应的基本规则库,包括:
获取规则文件,所述规则文件用于描述测试元素的基础约束;
解析所述规则文件,确定所述测试元素的基础约束;
基于所述测试元素的基础约束,构建形成基本规则库。
可选的,所述构建形成基本规则库,包括:
配置所述测试用例的应用场景下,测试元素的基础约束;
配置所述测试用例的应用场景下的基础规则。
可选的,所述生成对应所述测试用例的测试序列的步骤中,具体为,生成测试序列文件,所述测试序列文件包括所述测试序列和生成所述测试序列的约束。
可选的,所述测试序列包括多个部分,所述测试序列文件中,各部分测试序列与生成该部分测试序列的约束一一对应。
可选的,所述从基本规则库中获取对应所述测试元素的约束之后,所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列之前,包括:
确定所述基本规则库中是否存在所述测试用例中所有测试元素的约束;
若是,基于所述基本规则库中,各测试元素的约束,确定描述文件中的测试元素的约束范围是否在所述基本规则库中对应测试元素的约束范围内,
若是,执行所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列的步骤。
可选的,所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列,包括:
确定所述测试用例中,所述测试元素的前一取值;
基于所述测试元素的前一取值以及对应该测试元素的约束,确定该测试元素的当前取值。
可选的,所述生成对应所述测试用例的测试序列,包括:
获取用于生成的测试序列的类型信息;
调用与所述类型信息对应的指令类型的处理子函数,生成测试序列。
可选的,所述解析所述描述文件,确定所述测试用例中的测试元素的步骤中,所述解析过程还确定所述描述文件中对应各测试元素的约束;
所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列,具体为,基于所述描述文件中,所述测试用例的控制逻辑和对应各测试元素的约束,以及所述基本规则库中对应各测试元素的约束,生成对应所述测试用例的测试序列。
可选的,所述基础约束包括:各测试元素在所述应用场景下的硬件约束和软件约束,所述硬件约束为测试用例的位宽、地址、所占用的存储空间中的至少一种,所述软件约束为测试用例的数据格式、测试元素的数据类型、测试元素对应的RTL设计规则中的至少一种。
可选的,所述描述文件为xml格式,所述解析所述描述文件,确定所述测试用例中的测试元素,具体为,采用脚本工具解析所述描述文件,确定所述测试用例中的测试元素。
可选的,所述规则文件为xsd格式,所述解析所述规则文件,具体为,采用脚本工具解析所述规则文件。
第二方面,本发明实施例提供一种测试序列生成装置,包括:
文件获取模块,用于获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;
文件解析模块,用于解析所述描述文件,确定所述测试用例中的测试元素;
约束获取模块,用于从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;
序列生成模块,用于基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
可选的,所述测试序列生成装置还包括:
规则库构建模块,用于构建与测试用例的应用场景对应的基本规则库,所述基本规则库包括至少基于所述应用场景下各测试元素的基础约束。
第三方面,本发明实施例提供一种芯片验证系统,所述芯片验证系统被配置为执行如上述第一方面所述的测试序列生成方法。
第四方面,本发明实施例提供一种计算机设备,包括至少一个存储器和至少一个处理器;所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行如上述第一方面所述的测试序列生成方法。
第五方面,本发明实施例提供一种存储介质,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令用于执行如上述第一方面所述的测试序列生成方法。
本发明实施例提供了一种测试序列生成方法、装置、系统及相关设备,所述方法包括:获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;解析所述描述文件,确定所述测试用例中的测试元素;从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
可以看出,本发明实施例中的测试序列生成方法,同时基于描述文件以及解析描述文件后,从基本规则库中获取的测试用例中测试元素的约束,实现测试序列的生成,从而使得所述描述文件中,并不需要描述基本规则库中的约束,从而降低描述文件中写入的约束的数量,降低撰写测试用例所耗费的人力成本,进而降低生成测试序列所耗费的人力成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的测试序列生成方法的可选流程图。
图2为本发明实施例提供的测试用例的测试元素示例图;
图3为本发明实施例提供的基础约束的示例图;
图4为本发明实施例提供的测试用例的结构示例图;
图5为本发明实施例提供的测试序列文件的结构示例图;
图6为本发明实施例提供的测试用例的逻辑结构示例图;
图7为本发明实施例提供的测试序列生成方法的另一可选流程图;
图8为本发明实施例提供的步骤S10的可选流程图;
图9为本发明实施例提供的步骤S14的可选流程图;
图10为本发明实施例提供的步骤S14的另一可选流程图;
图11为本发明实施例提供的测试序列生成装置的框图;
图12为本发明实施例提供的测试序列生成装置的另一框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
基于背景技术所述,现有芯片设计的验证过程中,生成测试序列的方式需要耗费大量的人力成本。
这是由于,在进行芯片设计的验证过程中,需要设置大量的约束以产生符合条件的测试序列,从而使得该用于产生序列的方式,需要耗费大量的人力成本进行约束的设置。
基于此,本发明实施例提供了一种测试序列生成方法、装置、系统及相关设备,所述方法包括:获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;解析所述描述文件,确定所述测试用例中的测试元素;从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
可以看出,本发明实施例中的测试序列生成方法,同时基于描述文件以及解析描述文件后,从基本规则库中获取的测试用例中测试元素的约束,实现测试序列的生成,从而使得所述描述文件中,并不需要描述基本规则库中的约束,从而降低描述文件中写入的约束的数量,降低撰写测试用例所耗费的人力成本,进而降低生成测试序列所耗费的人力成本。
图1示例性的示出了本发明实施例提供的测试序列生成方法的可选流程图。如图1所示,该测试序列生成方法可以包括:
步骤S10:构建与测试用例的应用场景对应的基本规则库;
所述基本规则库包括至少基于所述应用场景下各测试元素的基础约束。
其中,所述测试用例可以由测试元素构成,基于测试元素之间的逻辑关系和各测试元素对应的约束,可以形成完整的测试用例。所述测试元素,可以理解为测试用例的元素(element),例如可以为测试用例中的变量,参考图2示出的测试用例的测试元素示例图,测试用例中的测试元素可以为操作码(opcode)、命令(command)、地址(addr)、数据(data)等。
在进行测试用例的描述文件的撰写之前,首先可以构建对应的基本规则库。所述基本规则库用于描述特定环境下测试用例中共用的约束作为基础约束,参考图3示出的基础约束的示例图,所述基本规则库可以针对一个应用场景下的测试用例,相应的,所述基本规则库中则可以描述有针对该应用场景下,各测试元素共用的约束;或者,所述基本规则库可以针对一个应用场景下的一个项目组内的测试用例,相应的,所述基本规则库中则可以描述有针对该应用场景下的项目组内,各测试元素共用的约束,这些共用的约束用于反映对应测试用例的基础规则。
基于不同应用场景下,测试用例对应的硬件环境不同,因此,所述基本规则库至少针对一个应用场景。相应的,所述基本规则库中至少基于所述应用场景的测试逻辑形成测试元素的基础约束。
继续参考图3,所述基础约束至少包括测试元素对应在应用场景中的硬件约束,所述硬件约束例如可以为测试元素的位宽、地址、所占用的存储空间中的至少一种。当然,在一些可选的示例中,所述基础约束还可以包括对应测试元素在应用场景中的软件约束,例如,测试元素的数据格式、测试元素的数据类型、测试元素对应的RTL(Register TransferLevel,寄存器转换级)设计规则等。
在一个可选的示例中,所述基本规则库用于定义应用场景(例如整个访问验证环境)中所用到的所有元素(element),而对元素的定义例如可以包括对元素的位宽以及取值范围的约束,对元素的随机数的取值方法的约束。其中,对元素的随机数的取值方法的约束例如可以为以下情况的任意一种或多种:(i)在约束范围内的完全随机取值;(ii)在需要发送多个指令组时,每个指令中元素的值自动加固定值;(iii)单个指令组中,每个cycle(时钟周期)自动加固定值等。
可以理解的是,在针对的特定环境越明确时,对应的共用约束越多,且约束的范围越小,对应在基本规则库中,体现为基础约束越多,且约束的范围越小。例如,在一个应用场景下,对应的基础约束可能仅为应用场景的硬件约束和较为基础的软件约束,而在一个应用场景下的一项目组内,对应的基础约束还可以进一步包括该项目组内的,测试元素共用的约束,例如,测试元素的取值范围、测试元素在该项目组内的属性参数、测试元素在该项目组内进一步定义的RTL设计规则等。
其中,基本规则库中提供的约束越多,对应测试用例的描述文件需要写入的约束越少,进而耗费的人力成本也越少。
在一个可选的示例中,所述基本规则库可以为哈希(hash)数据库,可以采用Schema技术描述其中的基础约束,当然,在其他示例中,所述基本规则库也可以为B+树数据库、fix-length数据库、table数据库等。
其中,所述基本规则库中还可以进一步进行基础规则的配置,例如,配置随机机制,以使得生成的测试序列在符合相应约束的前提下随机化。在进一步的示例中,所述基本规则库中还可以根据需求进行基础规则的配置,本发明在此不做具体的限定。
在基本规则库定义了基础约束后,即可进行测试用例的描述文件的撰写。可以理解的是,在应用场景固定的情况下,所述基本规则库也可以为提前构建的,从而,相应的示例中可以不包括步骤S10,进而可以直接基于基本规则库,进行描述文件的撰写,并进一步执行步骤S11~步骤S14,以生成对应的测试序列。
接着,继续参考图1,执行步骤S11:获取测试用例的描述文件;
其中,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于约束测试用例中各测试元素的逻辑关系;
在一个可选的示例中,参考图4示出的测试用例的结构示例图,测试用例中可以包含环境设置(Environment)、启动设置(Setup)、测试流程(Steps)、结果设置(Result)等,其中,所述环境设置中可以包括相应的硬件约束和部分基础的软件约束,可以作为基础约束存储在基本规则库中,所述启动设置中至少部分约束可以作为共用约束存储在基本规则库中,或者,将所述启动设置中的所有约束存储在基本规则库中;所述测试流程、结果设置作为测试用例的控制逻辑,可以描述在测试用例的描述文件中;或者,在其他实施例中,还可以进一步将测试流程、结果设置中的部分可共用的约束存储在基本规则库中,从而进一步简化描述文件,当然,至少所述测试用例的控制逻辑的主逻辑应当保留在所述描述文件中。
所述描述文件可以为xml(Extensible Markup Language,可扩展标记语言)格式,用于组织、存储相应的测试用例的数据,但并不参与数据的生成、读取、传送、存储等操作。
其中,基于描述文件中的约束的数量降低,使得对应的描述文件写入过程中,出现写入错误的概率大幅下降。同时,随着描述文件中的约束的数量的降低,还降低了核对描述文件所耗费的人力成本。
基于本发明实施例中,描述文件包括用于描述测试用例中各测试元素的逻辑关系的控制逻辑,使得测试人员能够清楚直观的确定测试用例的逻辑结构,进而避免多层约束下可能产生的约束冲突,且易于实现对测试用例的修改和复用。
接着,继续参考图1,执行步骤S12:解析所述描述文件,确定所述测试用例中的测试元素;
基于所述描述文件中的描述,可以通过解析的方式,确定其中的测试元素。其中,所述描述文件例如可以为xml格式,对应的,可以利用脚本工具解析所述描述文件,确定所述测试用例中的测试元素。
可以理解的是,所述描述文件可以同时包括测试用例的控制逻辑和对应测试元素的约束,在一个可选的示例中,所述步骤S12中,还可以同时解析确定所述描述文件中对应各测试元素的约束,从而可以在后续步骤中直接利用该部分解析结果,生成相应的测试序列。
继续参考图1,执行步骤S13:从基本规则库中获取对应所述测试元素的约束;
基于所述基本规则库中至少包括所述测试元素的基础约束,从而可以从所述基本规则库中获取对应测试元素的约束。具体的,可以基于所述测试元素,查找得到对应所述测试元素的约束。
具体的,可以通过查询的方式,确定所述基本规则库中,是否包含有对应测试元素的约束。在查询到对应约束时,获取该约束。
继续参考图1,执行步骤S14:基于所述描述文件中的约束和所述基本规则库中的约束,生成对应所述测试用例的测试序列;
在获取所述基本规则库中的约束后,即可同时基于所述描述文件中的约束和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
其中,在所述描述文件中同时包括测试用例的控制逻辑和对应各测试元素的约束时,本步骤具体可以为,基于所述描述文件中,所述测试用例的控制逻辑和对应各测试元素的约束,以及所述基本规则库中对应各测试元素的约束,生成对应所述测试用例的测试序列。
在一个可选的示例中,步骤S14所生成的测试序列可以为文件的形式,对应的,所述生成对应所述测试用例的测试序列,具体为,生成测试序列文件,所述测试序列文件包括所述测试序列。为提高测试序列文件的可读性,在进一步的可选示例中,所述测试序列文件中还进一步包括生成所述测试序列的约束,其中,所述测试序列还可以分为多个部分,各部分的测试序列可以与生成该部分测试序列的约束一一对应,从而使得测试人员可以直观的得知测试序列及其对应的约束。
参考图5示出的测试序列文件的结构示例,其中,测试序列包括部分11、部分12和部分13,其中,部分11对应约束21,且约束21对应设置在部分11一侧;部分12对应约束22,且约束22对应设置在部分12一侧;部分13对应约束23,且约束23对应设置在部分13一侧。可以理解的是,图5中仅示出了测试序列文件的其中一种设置方式,在其他可选的示例中,还可以包括采用其他的设置方式,例如将相应的约束对应设置在各部分的上方等等,本发明实施例在此不做具体的限定。
需要说明的是,在本发明实施例中所述的测试序列的生成方法,基于基本规则库中可以获取到不同测试元素的约束,使得描述文件无需描述过多冗余的约束,即可实现测试序列的生成,降低了用于生成测试序列所需的人力成本。并且,基于描述文件无需描述过多冗余的约束,使得其结构清晰、层次分明,在需要进行调整复用时,更加简单方便,进一步节省了人力成本。
可以理解的是,所述描述文件中包括所述测试用例的控制逻辑,且不需要写入过多的基础约束,从而使得所述描述文件中可以清晰准确的体现测试用例的数据结构和控制层次,从而在后续测试用例的调整过程中,能够及时准确的找到需要调整的位置,实现测试用例的调整和复用。
以图6中示出的测试用例的逻辑结构示例图为例,图6中的测试用例(Test case)中包括两个指令组(instruction group),即指令组0和指令组1,每个指令组中均包括有加载(load)/存储(store)/原子操作(atomic)指令,寄存器操作(register)指令,测试平台(testbench)配置指令等。而对应每个指令中,需要基于相应的控制逻辑,对各测试元素进行约束,例如,加载/存储/原子操作指令包括了命令(command)、地址(addr)、数据(data)等不同类型的测试元素,其中,命令可以基于相应的操作码(opcode),数据格式(dataformat),数值格式(numeric format),存储类型(memory type)等控制域进行对应的约束;地址可以基于索引(index)和偏移量(offset)等进行对应的约束;数据可以基于整数(int),浮点数(float),短整数(sint)等不同的数据类型进行约束;相应的,寄存器指令可以包括配置数据(data),地址(addr),读写操作类型(read/write type)等测试元素;测试平台配置指令可以包括命令(command)、控制数据(data)等测试元素。
而在对应该测试用例的描述文件中,可以包括测试用例所包含的指令组,以及各指令组中,不同指令对应的命令、地址、数据等测试元素,并描述对应该测试元素的控制逻辑,以及在该测试用例中,所述测试元素所对应的具体的约束。
而在步骤S12中,可以利用脚本工具,解析确定测试用例中的测试元素。例如图6所示的测试用例中,可以解析确定测试用例中各指令中对应的地址、数据等测试元素,并同时可以确定描述文件中,对应该测试元素的约束,以便执行后续的步骤。
在一个可选的示例中,参考图7示出的测试序列生成方法的另一可选流程图,在生成测试序列之前,还可以对描述文件中的约束进行确认,在描述文件中的约束符合相应的规则时,再执行测试序列的生成。
具体的,在步骤S13之后,步骤S14之前,执行对描述文件中的约束的确认流程,包括:
步骤S21:确定所述基本规则库中是否存在所述测试用例中所有测试元素的约束;
其中,基本规则库中默认定义了测试用例中的所有测试元素,在描述文件中存在基本规则库中没有定义的测试元素时,则产生错误信息,退出测试序列的生成流程。在确定所述基本规则库中存在所述测试用例中所有测试元素的约束时,则执行步骤S22。
步骤S22:基于所述基本规则库中,各测试元素的约束,确定描述文件中的测试元素的约束范围是否在所述基本规则库中对应测试元素的约束范围内;
所述描述文件中的测试元素的约束范围应当在所述基本规则库中对应测试元素的约束范围内,从而避免描述文件的约束越界。
其中,需要说明的是,描述文件中的测试元素的约束范围等同于所述基本规则库中对应测试元素的约束范围,也可以理解为,描述文件中的测试元素的约束范围在所述基本规则库中对应测试元素的约束范围内。
例如,基本规则库中对应各测试元素的约束,可以确定描述文件中的测试元素的取值范围是否越界,或者,测试元素的取值方法是否为基本规则库中定义的方法之一,以判断描述文件中的测试元素的约束范围是否在所述基本规则库中对应测试元素的约束范围内。
描述文件中的测试元素的约束范围不在所述基本规则库中对应测试元素的约束范围内时,则认为描述文件为错误,进而产生错误信息,退出测试序列的生成流程。
在确定描述文件中的测试元素的约束范围在所述基本规则库中对应测试元素的约束范围内时,执行步骤S14。
通过对描述文件进行约束的确认流程,可以及时发现描述文件中可能出现的错误,避免错误的描述文件影响芯片设计的验证/测试流程。
在一个可选的示例中,所述基本规则库可以基于相应的规则文件生成。参考图8所示的步骤S10的可选流程图,步骤S10可以包括:
步骤S101:获取规则文件;
其中,所述规则文件用于描述测试元素的基础约束。
所述规则文件可以由测试人员撰写得到,也可以由用于生成规则文件的工具生成。在一个可选的示例中,所述规则文件可以通过Schema技术对基础约束进行描述,从而可以方便的进行block层到SOC层的移植和集成,进而在仿真验证阶段,实现与仿真验证平台的衔接。
通过Schema技术可以简单方便的描述test case的基本规则,包括操作码、命令、地址、数据的位宽和类型等,从而使得测试用例的描述文件只需要完成少量的配置和约束,即可基于基本规则库生成想要的测试序列。
具体的,所述规则文件的格式可以为xsd(XML Schema Definition,文档结构描述)。
步骤S102:解析所述规则文件,确定所述测试元素的基础约束;
通过解析所述规则文件,可以获取相应的基础约束信息,从而基于所述基础约束信息,构建所述基本规则库。
具体的,可以采用脚本工具进行所述规则文件的解析。
步骤S103:基于所述测试元素的基础约束,构建形成基本规则库;
其中,所述基本规则库可以为哈希数据库,也可以为其他类型的数据库,在进行基本规则库的构建过程中,可以采用与对应的类型的数据库相匹配的构建方式,例如,在基本规则库为哈希数据库时,可以采用哈希数据库的构建方式进行基本规则库的构建。
另外,需要说明的是,所述基本规则库中同时可以配置有基础规则,例如用于实现测试序列随机化的随机机制等,该基础规则可以在基本规则库的构建过程中配置。相应的,构建所述基本规则库可以包括:配置所述测试用例的应用场景下,测试元素的基础约束;配置所述测试用例的应用场景下的基础规则。
需要说明的是,基本规则库可以为固定不变的,也可以基于预设的时机进行更新,例如,在应用场景有变更时,相应的进行基本规则库的更新,或者,基于预设的周期对基本规则库进行适应性的调整(即更新)。其中,所述更新的内容可以为基础约束,也可以为基础规则,本发明在此不做具体的限定。
在一些的示例中,参考图9示出的步骤S14的可选流程图,在生成测试序列时,可以基于测试元素在前一流程的取值的基础上确定测试元素在当前流程的取值。
具体的,步骤S14可以包括:
步骤S14a:确定所述测试用例中,所述测试元素的前一取值;
其中,所述测试元素的前一取值,可以理解为在测试用例需要发送多个指令组时,对应当前指令中的测试元素在前一指令组中的取值,或者,在测试用例的单个指令组中,测试元素在前一时钟周期的取值。
可以理解的是,在测试用例需要发送多个指令组时,当前指令可以为已经确定了多个指令组的取值之后的指令组中的指令,也可以为第一个需要确定的指令组中的指令。在当前指令为执行的第一个需要确定的指令组中的指令时,可以确定测试元素的前一取值为空值。
相应的,在单个指令组的取值过程可以包括多个时钟周期内的取值时,当前时钟周期前可以为已经确定了多个时钟周期内的取值之后的时钟周期,也可以为需要确定的第一个时钟周期。在当前时钟周期为需要确定的第一个时钟周期时,可以确定测试元素的前一取值为空值。
步骤S14b:基于所述测试元素的前一取值以及对应该测试元素的约束,确定该测试元素的当前取值;
在确定了测试元素的前一取值后,可以基于该前一取值,以及对应该测试元素的约束(例如可以为测试元素的取值方法),确定该测试元素的当前取值。
例如,所述测试元素的取值方法约束为:(ii)在需要发送多个指令组时,每个指令中元素的值自动加固定值;相应的,可以基于测试元素的前一取值,加上固定值,确定测试元素的当前取值。
或者,所述测试元素的取值方法约束为:(iii)单个指令组中,每个cycle(时钟周期)自动加固定值;相应的,可以基于测试元素的前一取值,加上固定值,确定测试元素的当前取值。
可以理解的是,基于测试平台(test bench)不同,所需要的测试序列的类型也不同,例如,测试平台可以为C++,System Verilog,Verilog,System C等,其对应的测试序列的类型也应当是适应于对应测试平台。基于前述步骤已经获取了描述文件中的约束和所述基本规则库中的约束,本步骤已经得知了用于描述测试用例的所有信息,在此前提下,本发明实施例可以基于该测试用例的信息,生成任一类型的测试序列。
在一个可选的示例中,参考图10示出的步骤S14的另一可选流程图,步骤S14可以进一步包括:
步骤S141:获取用于生成的测试序列的类型信息;
其中,所述测试序列的类型信息可以写入在描述文件中,并作为约束从所述描述文件的解析过程中获取。或者,所述测试序列的类型信息可以在生成测试用例时,基于用户输入的信息确定,例如,在显示器件上弹出提示信息,使得用户基于该提示信息,输入所需生成的测试序列的类型信息,进而获取该测试序列的类型信息。
步骤S142:调用与所述类型信息对应的指令类型的处理子函数,生成测试序列。
可以理解的是,基于不同的类型信息,对应有不同的指令类型(instructiontype),在确定所述类型信息后,可以基于对应指令类型的处理子函数,生成测试序列。其中,所述处理子函数为定义在脚本工具中,用于辅助流程执行的函数。
在生成对应类型的测试用例后,可以直接将测试用例提供给相应的测试平台使用。
可以理解的是,基于不同指令类型的处理子函数,可以生成不同类型的测试序列,也就是说,本发明实施例中的描述文件是可以对应不同测试平台的通用文件,从而扩展了本发明实施例的适用环境。并且,本发明实施例中描述文件的适用环境的扩展,使得描述文件并不需要基于不同的测试平台撰写不同的代码,进一步降低了人力成本。
下面对本发明实施例提供的测试序列生成装置进行介绍,下文描述的装置内容可以认为是芯片测试设备或者计算机设备,为实现本发明实施例提供的测试序列生成方法所需设置的功能模块。下文描述的装置内容可与上文描述的方法内容相互对应参照。
图11示出了本发明实施例提供的测试序列生成装置的框图。如图11所示,该装置可以包括:
文件获取模块200,用于获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;
文件解析模块210,用于解析所述描述文件,确定所述测试用例中的测试元素;
约束获取模块220,用于从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;
序列生成模块230,用于基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
在一些实施例中,参考图12示出的本发明实施例提供的测试序列生成装置的另一框图,所述测试序列生成装置还包括:
规则库构建模块240,用于构建与测试用例的应用场景对应的基本规则库,所述基本规则库至少包括基于所述应用场景下各测试元素的基础约束。
在一些实施例中,所述规则库构建模块240,用于构建与测试用例的应用场景对应的基本规则库,包括:
获取规则文件,所述规则文件用于描述测试元素的基础约束;
解析所述规则文件,确定所述测试元素的基础约束;
基于所述测试元素的基础约束,构建形成基本规则库。
在一些实施例中,所述规则库构建模块240,用于构建形成基本规则库,包括:
配置所述测试用例的应用场景下,测试元素的基础约束;
配置所述测试用例的应用场景下的基础规则。
在一些实施例中,所述序列生成模块230,用于生成对应所述测试用例的测试序列,具体为,生成测试序列文件,所述测试序列文件包括所述测试序列和生成所述测试序列的约束。
在一些实施例中,所述测试序列包括多个部分,所述测试序列文件中,各部分测试序列与生成该部分测试序列的约束一一对应。
在一些实施例中,所述序列生成模块230,用于生成对应所述测试用例的测试序列,包括:
获取用于生成的测试序列的类型信息;
调用与所述类型信息对应的指令类型的处理子函数,生成测试序列。
在一些实施例中,所述文件解析模块210,用于解析所述描述文件,确定所述测试用例中的测试元素的过程中,所述解析过程还确定所述描述文件中对应各测试元素的约束;
所述序列生成模块230,用于基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列,具体为,基于所述描述文件中,所述测试用例的控制逻辑和对应各测试元素的约束,以及所述基本规则库中对应各测试元素的约束,生成对应所述测试用例的测试序列。
在一些实施例中,所述基础约束包括:各测试元素在所述应用场景下的硬件约束和软件约束,所述硬件约束为测试用例的位宽、地址、所占用的存储空间中的至少一种,所述软件约束为测试用例的数据格式、测试元素的数据类型、测试元素对应的RTL设计规则中的至少一种。
在一些实施例中,所述描述文件为xml格式,所述文件解析模块210,用于解析所述描述文件,确定所述测试用例中的测试元素,具体为,采用脚本工具解析所述描述文件,确定所述测试用例中的测试元素。
在一些实施例中,所述规则文件为xsd格式,所述规则库构建模块240,用于解析所述规则文件,具体为,采用脚本工具解析所述规则文件。
本发明实施例还提供一种芯片验证系统,在一些实施例中,该芯片验证系统可以被配置为执行本发明实施例提供的测试序列生成方法。
本发明实施例还提供一种计算机设备,该计算机设备可以包括:至少一个存储器和至少一个处理器;所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行本发明实施例提供的测试序列生成方法。
本发明实施例提供一种存储介质,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令用于执行上述的测试序列生成方法。
上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (18)
1.一种测试序列生成方法,其特征在于,包括:
获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;
解析所述描述文件,确定所述测试用例中的测试元素;
从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;
基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
2.根据权利要求1所述的方法,其特征在于,所述获取测试用例的描述文件之前,还包括:
构建与测试用例的应用场景对应的基本规则库,所述基本规则库至少包括基于所述应用场景下各测试元素的基础约束。
3.根据权利要求2所述的方法,其特征在于,所述构建与测试用例的应用场景对应的基本规则库,包括:
获取规则文件,所述规则文件用于描述测试元素的基础约束;
解析所述规则文件,确定所述测试元素的基础约束;
基于所述测试元素的基础约束,构建形成基本规则库。
4.根据权利要求3所述的方法,其特征在于,所述构建形成基本规则库,包括:
配置所述测试用例的应用场景下,测试元素的基础约束;
配置所述测试用例的应用场景下的基础规则。
5.根据权利要求1所述的方法,其特征在于,所述生成对应所述测试用例的测试序列的步骤中,具体为,生成测试序列文件,所述测试序列文件包括所述测试序列和生成所述测试序列的约束。
6.根据权利要求5所述的方法,其特征在于,所述测试序列包括多个部分,所述测试序列文件中,各部分测试序列与生成该部分测试序列的约束一一对应。
7.根据权利要求1所述的方法,其特征在于,所述从基本规则库中获取对应所述测试元素的约束之后,所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列之前,包括:
确定所述基本规则库中是否存在所述测试用例中所有测试元素的约束;
若是,基于所述基本规则库中,各测试元素的约束,确定描述文件中的测试元素的约束范围是否在所述基本规则库中对应测试元素的约束范围内,
若是,执行所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列的步骤。
8.根据权利要求1所述的方法,其特征在于,所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列,包括:
确定所述测试用例中,所述测试元素的前一取值;
基于所述测试元素的前一取值以及对应该测试元素的约束,确定该测试元素的当前取值。
9.根据权利要求1所述的方法,其特征在于,所述生成对应所述测试用例的测试序列,包括:
获取用于生成的测试序列的类型信息;
调用与所述类型信息对应的指令类型的处理子函数,生成测试序列。
10.根据权利要求1所述的方法,其特征在于,所述解析所述描述文件,确定所述测试用例中的测试元素的步骤中,所述解析过程还确定所述描述文件中对应各测试元素的约束;
所述基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列,具体为,基于所述描述文件中,所述测试用例的控制逻辑和对应各测试元素的约束,以及所述基本规则库中对应各测试元素的约束,生成对应所述测试用例的测试序列。
11.根据权利要求2所述的方法,其特征在于,所述基础约束包括:各测试元素在所述应用场景下的硬件约束和软件约束,所述硬件约束为测试用例的位宽、地址、所占用的存储空间中的至少一种,所述软件约束为测试用例的数据格式、测试元素的数据类型、测试元素对应的RTL设计规则中的至少一种。
12.根据权利要求1所述的方法,其特征在于,所述描述文件为xml格式,所述解析所述描述文件,确定所述测试用例中的测试元素,具体为,采用脚本工具解析所述描述文件,确定所述测试用例中的测试元素。
13.根据权利要求3所述的方法,其特征在于,所述规则文件为xsd格式,所述解析所述规则文件,具体为,采用脚本工具解析所述规则文件。
14.一种测试序列生成装置,其特征在于,包括:
文件获取模块,用于获取测试用例的描述文件,所述描述文件包括所述测试用例的控制逻辑,所述测试用例的控制逻辑至少用于描述测试用例中各测试元素的逻辑关系;
文件解析模块,用于解析所述描述文件,确定所述测试用例中的测试元素;
约束获取模块,用于从基本规则库中获取对应所述测试元素的约束;其中,所述基本规则库中至少包括所述测试元素的基础约束;
序列生成模块,用于基于所述描述文件和所述基本规则库中的约束,生成对应所述测试用例的测试序列。
15.根据权利要求1所述的装置,其特征在于,还包括:
规则库构建模块,用于构建与测试用例的应用场景对应的基本规则库,所述基本规则库至少包括基于所述应用场景下各测试元素的基础约束。
16.一种芯片验证系统,其特征在于,所述芯片验证系统被配置为执行如权利要求1-13任一项所述的测试序列生成方法。
17.一种计算机设备,其特征在于,包括:至少一个存储器和至少一个处理器;所述存储器存储一条或多条计算机可执行指令,所述处理器调用所述一条或多条计算机可执行指令,以执行如权利要求1-13任一项所述的测试序列生成方法。
18.一种存储介质,其特征在于,所述存储介质存储一条或多条计算机可执行指令,所述一条或多条计算机可执行指令用于执行如权利要求1-13任一项所述的测试序列生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111396548.9A CN114091383A (zh) | 2021-11-23 | 2021-11-23 | 测试序列生成方法、装置、系统及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111396548.9A CN114091383A (zh) | 2021-11-23 | 2021-11-23 | 测试序列生成方法、装置、系统及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114091383A true CN114091383A (zh) | 2022-02-25 |
Family
ID=80303400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111396548.9A Pending CN114091383A (zh) | 2021-11-23 | 2021-11-23 | 测试序列生成方法、装置、系统及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114091383A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756474A (zh) * | 2022-04-27 | 2022-07-15 | 苏州睿芯集成电路科技有限公司 | 一种cpu验证中随机向量的生成方法、装置以及电子设备 |
CN116166235A (zh) * | 2023-04-26 | 2023-05-26 | 深圳云豹智能有限公司 | 一种P4Target逻辑验证方法与系统 |
-
2021
- 2021-11-23 CN CN202111396548.9A patent/CN114091383A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114756474A (zh) * | 2022-04-27 | 2022-07-15 | 苏州睿芯集成电路科技有限公司 | 一种cpu验证中随机向量的生成方法、装置以及电子设备 |
CN116166235A (zh) * | 2023-04-26 | 2023-05-26 | 深圳云豹智能有限公司 | 一种P4Target逻辑验证方法与系统 |
CN116166235B (zh) * | 2023-04-26 | 2023-08-22 | 深圳云豹智能有限公司 | 一种P4Target逻辑验证方法与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114091383A (zh) | 测试序列生成方法、装置、系统及相关设备 | |
CN114912391A (zh) | 寄存器设计和验证模型自动生成方法、装置、设备及介质 | |
CN111124379A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN113032275A (zh) | 字段测试方法、装置、电子设备及存储介质 | |
US20090222778A1 (en) | Property generating apparatus, property generating method and program | |
CN115629763A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN113360388B (zh) | 对无人机地面站软件的测试过程进行一体化管理的方法 | |
US6970816B1 (en) | Method and system for efficiently generating parameterized bus transactions | |
CN111427582B (zh) | Rtl代码的管理方法、装置、设备及计算机可读存储介质 | |
CN117435483A (zh) | 基于Formal工具的仿真验证激励生成方法、装置、介质及终端 | |
CN114841119B (zh) | 多用户模式下的寄存器建模方法、装置、设备及介质 | |
CN113822002B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN116151162A (zh) | 寄存器代码和文档的自动化设计方法、装置、设备及介质 | |
CN111258838B (zh) | 验证组件生成方法、装置、存储介质及验证平台 | |
CN112464636B (zh) | 约束文件的比较方法、装置、电子设备和存储介质 | |
CN108334313A (zh) | 用于大型soc研发的持续集成方法、装置及代码管理系统 | |
KR20150052725A (ko) | 모델링 코드 검증 방법, 이를 수행하는 모델링 코드 검증 장치 및 이를 저장하는 기록매체 | |
CN117371386B (zh) | 电路布局更新方法、装置、设备及存储介质 | |
CN113515485B (zh) | 一种SoC芯片控制寄存器模块RTL代码自动生成方法 | |
CN117744546B (zh) | 数字电路评估方法、系统、设备及存储介质 | |
CN109542698A (zh) | 一种基于变异测试的虚拟原型错误检测方法 | |
CN112433897B (zh) | 一种由寄存器规格文档自动生成仿真验证激励的方法 | |
CN117390055B (zh) | Jooq连表语句生成方法、设备以及介质 | |
CN116755684B (zh) | OAS Schema的生成方法、装置、设备及介质 | |
WO2006025412A1 (ja) | 論理検証方法、論理モジュールデータ、デバイスデータおよび論理検証装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |