[发明专利]一种全覆盖的微处理器测试用例包自动生成方法有效
申请号: | 200910044525.4 | 申请日: | 2009-10-13 |
公开(公告)号: | CN101673236A | 公开(公告)日: | 2010-03-17 |
发明(设计)人: | 王锋;杨灿群;易会战;陈娟;黄春;赵克佳;杜云飞 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/26 |
代理公司: | 国防科技大学专利服务中心 | 代理人: | 郭 敏 |
地址: | 410073湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 覆盖 微处理器 测试 用例包 自动 生成 方法 | ||
1.一种全覆盖的微处理器测试用例包自动生成方法,其特征在于包括以下步骤:
第一步、构建初始化函数Init,Init是测试用例的一部分,负责对指令组合在测试过程中所涉及的测试用例计数器、内存、运算部件和各类寄存器进行初始化,且将Init组织为单独的函数,在指令组合执行之前进行调用,Init的流程是:
1.1设置测试用例计数器,用于标识已运行过的测试用例和定位出错的测试用例,在运行环境构建开始时将测试用例计数器初值设为零;
1.2分配数据内存,包括源操作数和目的操作数使用的内存,根据数据类型分配不同的内存大小,类型包括:单字定点、单字浮点、双字定点和双字浮点;
1.3对于运算部件,通过连续执行空转指令NOP排空流水线;
1.4对于寄存器,依照状态寄存器、源寄存器和目的寄存器分别进行处理:状态寄存器是指表示系统运行状态的寄存器;源寄存器是指在指令组合中用来装载源操作数的寄存器;目的寄存器是指在指令组合中用来放置结果的寄存器,对以上三种寄存器的初始化过程如下:
1.4.1对状态寄存器中会被指令执行影响到的位清零;
1.4.2对源寄存器赋初值,初值的选择要使指令能正常执行;
1.4.3对目的寄存器清零;
第二步、构建状态输出函数Output,Output是测试用例的一部分,负责输出每条指令组合执行时的状态寄存器、目的寄存器和访存指令涉及的内存值;且将Output组织为单独的函数,在指令组合执行之后进行调用;
第三步、建立包含M条指令模板的指令模板库,M是微处理器指令集中指令的条数,测试用例中的每条指令都源自于该指令模板库;每条指令模板由指令ID、指令的汇编名称、源操作数类型和目的操作数类型构成,指令ID为枚举类型常量,指令的汇编名称为字符串常量,对应指令的汇编语法,源操作数和目的操作数类型为常用数据结构;
第四步、根据指令模板库构造大小为MN的指令模板组合集合X,N为用户需测试的指令数,构造方法是:从指令模板库中任取N条指令模板构成一条指令模板组合,共形成MN条指令模板组合,所有指令组合构成大小为MN的指令模板组合集合X;
第五步、判断集合X是否为空,若为空,执行第九步,若不为空,执行第六步;
第六步、从集合X中任选一个待实例化的指令模板组合x,X=X-{x};
第七步、顺序对指令模板组合x中的每一条指令模板i进行实例化,方法是采用静态寄存器映射的方式实现i的源操作数类型和目的操作数类型的实例化,得到实例化后的指令为i’,相应得到x实例化后的指令组合x’,具体过程是:
7.1如果指令模板i为CALL指令,执行步骤7.6;如果指令模板i为跳转指令,执行步骤7.7;否则,执行步骤7.2;
7.2根据源或目的操作数类型将所有寄存器划分成若干子集;
7.3设指令模板i的目的操作数类型对应的寄存器子集为J,x’中位于i’之前的所有指令的目的操作数所分配的全部寄存器集合为L,J=J-L;
7.4为指令模板i的每个源操作数根据其类型分配对应寄存器集合中的一个寄存器,为指令模板i的每个目的操作数根据其类型分配J集合中的一个寄存器;
7.5如果指令i’中i’的前一条指令之间存在依赖关系,则在它们之间插入空指令,转第九步;
7.6对CALL指令进行实例化,方法是:
7.6.1创建叶子函数,叶子函数除空指令和返回语句外不包含任何其他指令,其地址作为CALL指令的操作数,并在叶子函数入口地址处设置标号_cvt_lp,使函数返回时可继续执行CALL指令的下一条指令;
7.6.2将CALL指令模板中的源操作数实例化为空,目的操作数实例化为7.6.1中定义的标号_cvt_lp,生成带目标地址_cvt_lp的调用函数指令,形式为“call_cvt_lp”;
7.6.3转第八步;
7.7对跳转指令进行实例化,方法是:
7.7.1如果跳转指令为指令组合中的第一条跳转指令,建立该指令组合的跳转表,初始化跳转表,建立第一条表项内容;如果不是第一条跳转指令,则在跳转表中增加一条表项内容;跳转表是记录指令组合中跳转指令信息的表,每一项代表一条跳转指令信息,包括标号、指令和目标地址,标号代表该表项的入口地址,为每条跳转指令跳转的目标地址;指令代表跳转指令;目标地址代表跳转指令结束跳转时返回指令组合下一条指令的地址;填写跳转表表项内容的方法是:标号部分填写表项的入口地址;指令部分填写无条件跳转指令;目标地址部分填写指令组合中跳转指令的下一条指令地址;
7.7.2实例化跳转指令模板,跳转指令模板的源操作数类型实例化为空,目的操作数类型实例化为跳转表表项的标号;
第八步、将第一步获得的初始化函数Init、第七步获得的指令组合以及第二步获得的状态输出函数Output顺序连接成一条测试用例,返回第五步;
第九步、将全部测试用例打包构成测试用例包,输出该测试用例包。
2.如权利要求1所述的一种全覆盖的微处理器测试用例包自动生成方法,其特征在于在指令个数过多,寄存器无法划分成足够的子集时,采用经典的寄存器分配算法为指令模板i的源操作数和目的操作数进行动态映射分配。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910044525.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:配合检测装置、连接器及其连接器组件
- 下一篇:触点