CN109542698A - 一种基于变异测试的虚拟原型错误检测方法 - Google Patents

一种基于变异测试的虚拟原型错误检测方法 Download PDF

Info

Publication number
CN109542698A
CN109542698A CN201811176866.2A CN201811176866A CN109542698A CN 109542698 A CN109542698 A CN 109542698A CN 201811176866 A CN201811176866 A CN 201811176866A CN 109542698 A CN109542698 A CN 109542698A
Authority
CN
China
Prior art keywords
register
variation
hardware device
model
constraint condition
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
Application number
CN201811176866.2A
Other languages
English (en)
Inventor
陈铭松
顾海峰
张健宁
胡铭
段文雪
谢永康
宋云飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
East China Normal University
Original Assignee
East China Normal University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by East China Normal University filed Critical East China Normal University
Priority to CN201811176866.2A priority Critical patent/CN109542698A/zh
Publication of CN109542698A publication Critical patent/CN109542698A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods

Abstract

本发明公开了一种基于变异测试的虚拟原型错误检测方法,包括以下步骤:步骤1:使用SystemRDL语言描述硬件设备的规约;步骤2:将硬件设备规约转化为一个可执行的FDM模型;步骤3:依据变异规则在FDM模型中对操作符生成对应的变异约束条件;步骤4:将FDM模型和已有的设备测试用例集traces作为输入,利用符号执行引擎对虚拟原型进行错误检测。本发明基于变异测试,通过自动插入工具能够在原始FDM模型中插入相应操作符的变异约束条件,并以此模型为参照来检测硬件设备虚拟原型中可能存在的错误,从而能够在早期系统设计的时候及时发现设计缺陷。

Description

一种基于变异测试的虚拟原型错误检测方法
技术领域
本发明属于计算机技术领域,涉及变异测试技术、硬件设备规约转换技术及符号执行技术,尤其涉及到了将不可执行的设备规约转换为可执行的设备模型,在设备模型中对操作符生成相应的变异约束条件,并将此模型作为硬件设备的高阶参照标准,实现了以此为参照来检测设备虚拟原型中可能存在的错误。
背景技术
变异测试(Mutation Testing)作为最流行的测试方法之一,已经被广泛应用于学术界和商业界。变异测试通过对源程序中含有操作符的运算语句进行变异,如将加号变异为减号(减号即代表了程序的错误实现),以此来描述一个程序中可能存在的错误。通常,若直接改变原语句中的操作符,那该程序就成为原始程序的一个变体,但这种方式在描述错误时一次只能对程序中的一个操作符进行变异。若想一次对原始程序中的所有可能变异进行描述,就不能直接变异原始语句,而是通过在原始语句前插入对应变异的约束条件,使得该条件判断能够区分出正确实现和错误实现。
规约(Specification)是指针对设计或协议所应该遵循的一组约束。它是作为后期实施行为的参照标准。硬件设备规约定义了一个设备在设计之初给定的设备应该遵循的约束并以此为参照。目前工业界广泛采用SystemRDL语言来描述一个硬件设备的规约,并且它贯穿于该硬件设备的整个生命周期。它不仅可以作为硬件设备后期具体实现的参照标准,还可以用于在不同组织或不同硬件厂商之间共享该硬件设备IP(IntellectualProperty)。SystemRDL语言的发展增强了传统使用说明文档来描述设备规约的可读性和可操作性,近年来伴随着硬件工程师需求的提高,SystemRDL的表达能力也在不断地增强,预计近一两年内官方会发布SystemRDL v2.0版本,让工程师们可以更加高效地描述一个硬件设备的规约。
然而,现阶段的SystemRDL v1.0版本尚且存在一些表达能不足的问题,难以完成对设备寄存器的行为逻辑的描述。所以,增强其表达能力已经成为一个迫切需要解决的问题。同时,使用SystemRDL描述的设备规约是不能直接执行的,需要对其加以转换才能使之成为可执行的设备模型。
符号执行(Symbolic Execution)是计算机领域中一种非常重要的方法,在计算机软硬件及控制系统的测试和验证中得到了广泛的应用。对于可执行程序中的某些变量可以设置为符号化的变量,通过在符号执行引擎中使用相应的符号值代替真实值加以执行。同时在执行过程中如果遇到了分支,并且该分支的判断条件中存在符号变量,那么符号执行引擎将会对该分支创建所有可能的分支进程来分别执行不同的情况。在程序执行的最后,符号执行引擎会将执行过程中记录的各个符号变量的表达式以合取的方式传递给约束求解器并返回相应符号变量的具体值。
发明内容
本发明的目的是提出一种基于变异测试的虚拟原型错误检测方法,该方法将使用SystemRDL语言来描述硬件设备规约转换成一种可执行的原始FDM模型,依据变异规则对原始FDM模型中的操作符生成相应的变异约束条件,由于使用SystemRDL语言来描述硬件设备规约是一个硬件设备的参照标准并且插入的变异约束条件不会影响原始FDM模型的行为逻辑,从而可以将含有变异约束条件的FDM模型视作该硬件设备的可执行参照模型,并以此来检测该硬件设备的具体实现(如设备的虚拟原型)是否满足了设备的规约,是否在具体实现中存在可能的错误缺陷。
实现本发明目的的具体技术方案是:
一种基于变异测试的虚拟原型错误检测方法,包括以下步骤:
步骤1:使用SystemRDL语言描述硬件设备的规约;
步骤2:将硬件设备规约转化为一个能够执行的原始FDM模型;
步骤3:依据变异规则对原始FDM模型中的操作符生成相应的变异约束条件和索引编号;
步骤4:将FDM模型和已有的测试用例集traces作为输入,利用符号执行引擎对虚拟原型进行错误检测。
本发明提出的基于变异测试的虚拟原型错误检测方法中,所述硬件设备规约采用SystemRDL语言进行描述,所述SystemRDL语言包括:field、register、register file、address map、signal、macro和function关键组件和设备寄存器的属性;其中,
所述关键组件field用于指定设备寄存器的每一位或某几位所具备的属性和名称;
所述关键组件register用于描述硬件设备所具有的寄存器,同时指定相应寄存器的属性、实例名称以及地址偏移量;
所述关键组件register file用于描述某些寄存器被划分归并为一个组;
所述关键组件address map用于指定寄存器或寄存器组组合成为一个硬件设备地址空间;
所述关键组件signal用于定义一条连线连接其他组件的输入或输出;
所述关键组件macro用于定义在“function”组件中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;
所述关键组件function用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的主体部分按照C语言函数定义的格式进行描述;
所述设备寄存器的属性用于指定设备寄存器所应具备的特性,包括读写访问权限、寄存器的位宽。
本发明提出的基于变异测试的虚拟原型错误检测方法中,使用SystemRDL语言描述的硬件设备规约是不可执行的,需将该硬件设备规约转换为可执行的原始FDM模型。
本发明提出的基于变异测试的虚拟原型错误检测方法中,所述依据变异规则对原始FDM模型中的操作符生成相应的变异约束条件和索引编号,是在原始FDM模型中,依据变异规则对操作符(/操作算子)进行变异,在含有操作符的语句前插入相应的变异约束条件和索引编号。在本发明中我们之所以采用插入对应变异约束条件的方式是因为若直接改变原始代码语句中的操作符,则在描述错误时一次只能对程序中的一个操作符进行变异;若要一次对原始程序中的所有可能变异进行描述,则可以通过在原始代码语句前插入对应变异的约束条件来区分出正确实现和错误实现。
本发明提出的基于变异测试的虚拟原型错误检测方法,将含有变异约束条件的FDM模型和已有的测试用例集traces作为输入,利用符号执行引擎来符号化执行含有变异约束条件的FDM模型并将状态结果和满足的变异约束条件与测试用例trace中的相应状态和变异约束条件分别做对比进行错误检测。
本发明提出的基于变异测试的虚拟原型错误检测方法中,所述可执行的原始FDM模型,其组成是基于C/C++格式的源代码文件集合,包含了硬件设备模型的主函数和各个接口寄存器的行为逻辑;其中:
所述主函数用于控制硬件设备模型的输入输出;
所述接口寄存器的行为逻辑用于描述接口寄存器在影响设备动作请求后的状态变迁。
本发明提出的基于变异测试的虚拟原型错误检测方法中,所述生成相应的变异约束条件,由于变异约束条件是逻辑判断语句不是赋值语句,所以生成的变异约束条件不会影响原始FDM模型的行为逻辑。
本发明的有益效果:可以高效地将硬件工程师建立的使用SystemRDL语言描述的硬件设备规约转换成一个可执行的原始FDM模型,依据变异规则对原始FDM模型中的操作符生成相应的变异约束条件,将含有变异约束条件的FDM模型和已有的测试用例集traces作为输入,通过符号执行引擎来符号化执行含有变异约束条件的FDM模型并将状态结果和满足的变异约束条件与测试用例trace中的相应状态和变异约束条件分别做对比进行错误检测。这将减少硬件设备设计中的错误和缺陷并极大地提高硬件设计的正确性。
附图说明
图 1为本发明的流程图;
图 2为本发明中的变异规则示意图;
图 3为本发明中插入变异约束条件后的FDM模型示例图;
图 4为本发明中虚拟原型错误检测的流程图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。
本发明提供了一种基于变异测试的虚拟原型错误检测方法,包括以下步骤:
步骤1:使用SystemRDL语言描述硬件设备的规约;
步骤2:将硬件设备规约转化为一个能够执行的原始FDM模型;
步骤3:依据变异规则对原始FDM模型中的操作符生成相应的变异约束条件和索引编号;
步骤4:将FDM模型和已有的测试用例集traces作为输入,利用符号执行引擎对虚拟原型进行错误检测。
本发明中对SystemRDL语言的扩展内容包括:
关键组件macro:扩展该关键组件是用于定义在关键组件“function”中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value。
关键组件function:扩展该关键组件是用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的主体部分按照C语言函数定义的格式进行描述。
关键组件macro和关键组件function的语法格式遵循SystemRDL语言中原有的关键组件(如关键组件reg)的语法格式。
本发明中,将使用SystemRDL语言描述的硬件设备的规约转换为FDM模型,该转换方法包括以下内容:
关键组件macro的主体映射成FDM模型中的宏定义;例如
macrogeneral_macro{
CTRL_RST=0x04000000;
TCTL_EN=0x00000002;
...
};
该macro的主体中的两条语句CTRL_RST=0x04000000和TCTL_EN=0x00000002将分别映射到FDM模型中#define CTRL_RST 0x04000000和#define TCTL_EN 0x00000002。
关键组件reg的regwidth属性和field主体映射成FDM模型中的union结构体,其中regwidth属性的值被用于限定寄存器变量的字节大小,如32限定了寄存器变量的长度大小为4字节,而reg组件中的每个field主体设定了FDM模型中该寄存器结构体中的对应的位域;例如:
regReg_CTRL_type {
regwidth = 32;
field {desc = "Link Reset"; swwe=true;} LRST[3:3] = 1'b1;
field {desc = "Currently Reserved";} Rsvd4[4:4] = 0;
...
};
其中的regwidth属性值32映射到FDM模型中CTRL寄存器变量的类型为uint32_t;而field主体将映射到
Union _Reg_CTRL_inst {
...
struct {
...
uint32_t LRST :1;
uint32_t Rsvd4 :1;
}。
关键组件function 的主体部分映射到FDM模型中的函数;例如:
functionasyn_tctl_func{
voidrun_tctl(DeviceState* pdevState) {
pdevState->reg_TDT_inst.value&= 0xffff;
if(!(pdevState->reg_TCTL_inst.value& TCTL_EN))
...
}
}映射到FDM模型中的run_tctl(DeviceState* pdevState)函数(由runDeviceTransaction(DeviceState *pdevState)函数调用);
Function syn_tctl_func{
voidwrite_tctl (DeviceState *pdevState, uint32_t value, uint64_t offset){
...
}
}映射到FDM模型中的write_tctl_func(pdevState, value, offset)函数(由devRegWrite(DeviceState *pdevState, uint32_t value, uint64_t offset)函数调用)。
此外,关键组件reg的对象实例化语句(包含寄存器的地址)映射成FDM模型中的宏定义;例如Reg_TCTL_typereg_TCTL_inst @0x00400是表示TCTL寄存器的一个实例并指定了该寄存器的地址(或称为偏移量)为0x00400,这部分信息会映射到FDM模型中的宏定义#define Reg_TCTL_inst 0x00400。
基于以上所述,能够完成使用SystemRDL语言来描述一个硬件设备的规约。通过转换工具即可将该硬件设备规约转化为一个可执行的原始FDM模型。
在生成可执行的原始FDM模型后,基于变异测试的方法,利用图2所展示的变异规则对FDM模型中的操作符进行对应的变换,例如将加号操作符变换为减号、乘号、除号和取模操作符。图2中第一列是操作符类别的缩写,包括ROR、LCR、AOR、UOI、RRVR以及RRAI(即6种类别的变异规则),第二列指代源程序中包含操作符的语句的形式化表示,第三列展示的是对第二列中操作符进行变异后产生变异约束条件的规则,例如图中第三行第三列将一个算术操作符变异为算术操作符集合AO中的其他任意一个操作符。图2中的最后一列展示了每一个操作符类别(即每一行)的一个样例,例如将“c=a+b;”这条语句中的加号操作符根据变异规则产生的变异约束条件为“(a+b)!=(a-b)”。
根据上述变异规则,对FDM模型中的操作符产生相应的变异约束条件。图3展示了插入变异约束条件后设备FDM模型的示例。图中的对“dev->rega.val=val&0x3ffffff;”中的逻辑操作符&生成变异约束条件“(val&0x3ffffff)!=(val|0x3ffffff)” (即将逻辑操作符&变异为逻辑操作符|);对“dev->rega.val&TCTL_EN”中的逻辑操作符&生成变异约束条件“(dev->a&TCTL_EN)!=(dev->a|TCTL_EN)”;对“uint32_t tmp=~(dev->regb.val);”中的一元操作符~生成变异约束条件“~(dev->regb.val))!=~(~(dev->regb.bal))”。
图4展示了虚拟原型错误检测模块的流程图。该模块根据读入含有变异约束条件的FDM模型和已有的测试用例集traces,通过符号化执行每一个trace得到硬件设备虚拟原型与含有变异约束条件的FDM模型不一致的信息。具体流程是:该模块首先读入含有变异约束条件的FDM模型,再循环读取已有的测试用例集traces中的每一个trace并进行符号化执行,在符号化执行含有变异约束条件的FDM模型时,不仅要判断符号执行产生的状态是否与trace中的设备状态一致,还要判断在当前执行轨迹下trace指定的变异约束条件是否可达并被满足(即对应的变体能够被杀掉)。若存在符号执行产生的状态与trace中的设备状态一致,同时在当前执行轨迹下由trace指定的变异约束条件是可达的并被满足了(将该变异约束条件的索引编号记录下来),则称针对该trace,硬件设备虚拟原型与含有变异约束条件的FDM模型是一致的;否则称硬件设备虚拟原型与含有变异约束条件的FDM模型不一致。当检测到不一致时,该信息将会保存至日志文件。
最后直至所有的测试用例集traces都执行完并输出不一致信息报告文件(即日志文件)。

Claims (5)

1.一种基于变异测试的虚拟原型错误检测方法,其特征在于,该方法包括以下步骤:
步骤1:使用SystemRDL语言描述硬件设备的规约;
步骤2:将硬件设备规约转化为一个能够执行的原始FDM模型;
步骤3:依据变异规则对原始FDM模型中的操作符生成对应的变异约束条件和索引编号;
步骤4:将FDM模型和已有的测试用例集traces作为输入,利用符号执行引擎对虚拟原型进行错误检测。
2.根据权利要求1所述的虚拟原型错误检测方法,其特征在于,步骤1所述SystemRDL语言包括:关键组件field、register、register file、address map、signal、macro和function及设备寄存器的属性;其中,
所述关键组件field用于指定设备寄存器的每一位所具备的属性和名称;
所述关键组件register用于描述硬件设备所具有的寄存器,同时指定对应寄存器的属性、实例名称以及地址偏移量;
所述关键组件register file用于描述寄存器的划分;
所述关键组件address map用于指定寄存器或寄存器组组合成为一个硬件设备地址空间;
所述关键组件signal用于定义一条连线连接其他组件的输入或输出;
所述关键组件macro用于定义在“function”组件中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;
所述关键组件function用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的代码描述部分按照C语言函数定义的格式进行描述;
所述设备寄存器的属性用于指定设备寄存器所应具备的特性,包括读写访问权限、寄存器的位宽。
3.根据权利要求1所述的虚拟原型错误检测方法,其特征在于,步骤2所述能够执行的原始FDM模型,其组成是基于C/C++格式的源代码文件集合,包括了硬件设备模型的主函数和各个接口寄存器的行为逻辑;其中,
所述主函数用于控制硬件设备模型的输入输出;
所述接口寄存器的行为逻辑用于描述接口寄存器在影响设备动作请求后的状态变迁。
4.根据权利要求1所述的虚拟原型错误检测方法,其特征在于,步骤3所述依据变异规则对原始FDM模型中的操作符生成对应的变异约束条件和索引编号是:在原始FDM模型中,依据变异规则对操作符即操作算子进行变异,在含有操作符的语句前插入对应的变异约束条件和索引编号。
5.根据权利要求1所述的虚拟原型错误检测方法,其特征在于,步骤4所述利用符号执行引擎对虚拟原型进行错误检测是:利用符号执行引擎来符号化执行含有变异约束条件的FDM模型并将状态结果和满足的变异约束条件与测试用例trace中的对应状态和变异约束条件分别做对比进行错误检测。
CN201811176866.2A 2018-10-10 2018-10-10 一种基于变异测试的虚拟原型错误检测方法 Pending CN109542698A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811176866.2A CN109542698A (zh) 2018-10-10 2018-10-10 一种基于变异测试的虚拟原型错误检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811176866.2A CN109542698A (zh) 2018-10-10 2018-10-10 一种基于变异测试的虚拟原型错误检测方法

Publications (1)

Publication Number Publication Date
CN109542698A true CN109542698A (zh) 2019-03-29

Family

ID=65843613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811176866.2A Pending CN109542698A (zh) 2018-10-10 2018-10-10 一种基于变异测试的虚拟原型错误检测方法

Country Status (1)

Country Link
CN (1) CN109542698A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816156A (zh) * 2022-05-12 2022-07-29 网易(杭州)网络有限公司 模型检测方法、装置、终端设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256648A (zh) * 2008-04-09 2008-09-03 永凯软件技术(上海)有限公司 一种应用在生产排程系统的基于订单结构的遗传操作算子
US20090217100A1 (en) * 2008-02-27 2009-08-27 Accenture Global Services Gmbh Test script transformation analyzer with economic cost engine
CN105656729A (zh) * 2016-03-03 2016-06-08 国网浙江诸暨市供电公司 一种iec104规约底层报文错误检测方法
US20160356851A1 (en) * 2015-06-08 2016-12-08 International Business Machines Corporation Automated dynamic test case generation
CN108228314A (zh) * 2017-12-05 2018-06-29 华东师范大学 一种基于设备规约的虚拟原型错误检测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217100A1 (en) * 2008-02-27 2009-08-27 Accenture Global Services Gmbh Test script transformation analyzer with economic cost engine
CN101256648A (zh) * 2008-04-09 2008-09-03 永凯软件技术(上海)有限公司 一种应用在生产排程系统的基于订单结构的遗传操作算子
US20160356851A1 (en) * 2015-06-08 2016-12-08 International Business Machines Corporation Automated dynamic test case generation
CN105656729A (zh) * 2016-03-03 2016-06-08 国网浙江诸暨市供电公司 一种iec104规约底层报文错误检测方法
CN108228314A (zh) * 2017-12-05 2018-06-29 华东师范大学 一种基于设备规约的虚拟原型错误检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘晓亮等: "基于变异模型的CTCS_3级列控系统测试用例自动生成方法研究", 《计算机与通信信号》 *
陈铭松等: "基于通信的列车控制系统可信构造:形式化方法综述", 《软件学报》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816156A (zh) * 2022-05-12 2022-07-29 网易(杭州)网络有限公司 模型检测方法、装置、终端设备及存储介质

Similar Documents

Publication Publication Date Title
CN104503816B (zh) 一种硬件语言vhdl到msvl的自动转换系统
EP3745256B1 (en) External code integrations within a computing environment
Blazy et al. Mechanized semantics for the Clight subset of the C language
US9418230B2 (en) Automated tools for building secure software programs
Felder et al. Proving properties of real-time systems through logical specifications and Petri net models
US9027002B2 (en) Method of converting source code and source code conversion program
US10705800B2 (en) Systems and methods for evaluating compliance of implementation code with a software architecture specification
US10423518B2 (en) Systems and methods for analyzing violations of coding rules
US20060150160A1 (en) Software analyzer
US20130239098A1 (en) Source code conversion method and source code conversion program
US20060101331A1 (en) Methods and systems for automated test-case generation
US20080244541A1 (en) Code translator and method of automatically translating modeling language code to hardware language code
CN110989997A (zh) 基于定理证明的形式化验证方法
CN103605556A (zh) 虚拟试验对象一体化构建系统及方法
Bender et al. Signature required: Making Simulink data flow and interfaces explicit
CN115858336A (zh) 测试向量生成方法及装置、计算设备和存储介质
CN109542698A (zh) 一种基于变异测试的虚拟原型错误检测方法
JP6568017B2 (ja) テスト支援装置、および、テスト支援方法
Zengler et al. Encoding the Linux kernel configuration in propositional logic
CN108228314A (zh) 一种基于设备规约的虚拟原型错误检测方法
CN114327614A (zh) 参考模型数据流记录和分析的方法及应用
Kress-Gazit et al. The challenges in specifying and explaining synthesized implementations of reactive systems
CN114579431A (zh) 一种基于混合分析的除零错误检测方法
CN109542760A (zh) 一种基于设备规约的虚拟原型变异测试用例生成方法
Bartels et al. Formal modeling and verification of low-level software programs

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190329