双精度simd部件芯片级验证测试激励自动生成方法

文档序号:6355741阅读:638来源:国知局
专利名称:双精度simd部件芯片级验证测试激励自动生成方法
技术领域
本发明涉及处理器设计过程中的芯片级验证,尤其指面向双精度SIMD(单指令多 数据)部件进行芯片级验证过程中测试激励的自动生成方法。
背景技术
处理器芯片的集成度越来越大,在处理器中设计实现支持双精度浮点计算的SIMD 部件来支持大规模科学和工程计算是一个重要的发展趋势。但是和在处理器中实现支持流 媒体计算的SIMD扩展相比,双精度SIMD部件需要设计实现更长字长的短向量寄存器(通 常为256位共4个双精度数据)以及相应的支持双精度计算的SIMD指令集。因此双精度 SIMD部件使用的寄存器和传统面向流媒体计算的SIMD扩展使用的寄存器不同,数据通路 不同,指令集也完全不同,这给验证工作提出了很大的挑战。处理器的芯片级验证是指在全芯片模拟验证环境中运行测试激励来验证芯片设 计的正确性。每个测试激励是一个完整的汇编语言程序,测试激励具有自比较的功能,能自 动比较程序的运行结果和预期结果,并根据比较结果进入不同的自陷。传统SIMD部件的芯片级验证都是由设计和验证人员用汇编语言手工编写芯片级 测试激励。这种方法需要大量的人力来开发测试激励,耗费人力物力多,芯片级验证时间 长;并且不同处理器实现的SIMD扩展不同,支持双精度浮点计算的SIMD扩展差别就更大, 无法重用已有的SIMD部件芯片级验证的测试激励。因此迫切需要双精度SIMD部件芯片级 验证测试激励生成的自动化方法。目前还没有公开发表的面向双精度SIMD部件芯片级验 证自动生成测试激励的方法。

发明内容
本发明要解决的技术问题是提出一种自动生成双精度SIMD部件芯片级验证测试 激励的方法。本发明的技术方案如下第一步,根据所要验证的双精度数据运算类型(如加、减、乘、除等),以及数组长 度(记为scale),构造进行双精度数组操作的标准C语言程序foo. C。foo. c 一方面为即将构造的使用双精度SIMD汇编指令的测试激励建立一个正确 的模型,该正确的模型是指经过验证正确可信,可以作为正确性对比的参照),一方面为构 造测试激励准备原始数据,原始数据包括输入双精度数组以及作为正确结果的双精度数 组。构造foo. c的方法是1. 1生成一个空的C语言源程序文件foo. c ;1. 2向foo. c文件中写入标准C语言程序文本,包括如下内容1.2. 1包含标准头文件的语句;1. 2. 2全局数组声明语句,包括声明用作输入数据的两个一维双精度数组srcl和src2的语句、声明用作保存正确结果的一维双精度数组golderuresult的语句,以及声 明用作保存计算结果的一维双精度数组result的语句,数组的长度都为scale ;srcl和 src2声明中的数组初值由双精度数据随机生成程序生成;golderuresult数组声明中的初 始数据根据所要验证的运算类型对两个源数组进行运算得到;1.2.3 C程序主函数代码包括对两个输入数组元素进行运算并将结果写入 result数组的语句;对golderuresult数组元素和result数组元素进行比较并当结果不 同时报出警告信息的程序语句。第二步,基于foo. c以及所要验证的运算,构造作为测试激励的汇编语言源程序 simd. s,方法是2. 1用面向目标处理器的编译器编译foo. c程序,用“-S”编译选项控制编译器将 foo. C编译为汇编语言程序文本foo. S,如gcc-s foo. C-O foo. S。2. 2 创建 simd. s 文件。2. 3向simd. s文件中写入如下内容2. 3. 1包含测试激励公共头文件的代码(如#include "hboot. s”);2. 3. 2汇编语言程序文本段声明语句;2. 3. 3将4个数组srcl,src2, golden_result和result的基地址写入寄存器的 汇编语句;2. 3. 4根据数组长度设置循环控制寄存器初始值的语句;2. 3. 5根据所要验证的运算,写入用SIMD指令进行数组读取和操作的语句;2. 3. 6结果比较语句以及根据比较结果跳转到相应自陷语句的汇编语句;2. 3. 7自陷语句;2.3.8数据段声明语句,数据对齐方式为“.align 32”;2. 3. 9 foo. s 文件中读取的 srcl、src2、golden_result、result 数组数据段的内容。采用本发明可以达到以下技术效果采用本发明可以自动生成一个使用双精度SIMD汇编指令的汇编语言测试激励 simd. S。将simd. s加载到芯片模拟环境中运行,可以利用双精度SIMD指令对多种数据长 度的双精度数组进行操作,根据激励运行结果来对处理器的设计进行芯片级验证。本发明可以编程实现,程序的输入是要验证的运算以及数组长度,输出是可以作 为测试激励的汇编语言源程序simd. S。多次运行该程序,输入不同的运算类型和数组长度, 可以自动生成多种测试激励,可以极大地减少开发面向双精度SIMD部件进行芯片级验证 所需的测试激励的时间。


图1是本发明总体流程图;图2是自动生成的标准C语言程序结构图;图3是自动生成的汇编语言测试激励程序结构图。
具体实施例方式图1是本发明总体流程图,本发明的总体过程为1. 1根据所要验证的双精度SIMD运算类型,以及数组长度,构造一个标准C语言程序foo. c ;1. 2用面向目标处理器的编译器将foo. c程序编译为汇编语言程序foo. s ;1.3根据所要验证的双精度SIMD运算类型,构造可以用作测试激励的汇编语言 程序simd. s, simd. s汇编程序中的数据段内容根据foo. s的数据段内容构造。图2是自动生成的标准C语言程序结构图,构造该程序的具体步骤为2. 1生成一个空的C语言源程序文件foo. c ;2. 2向foo. c文件中写入标准C语言的程序文本,包括如下内容2. 2. 1所需的标准头文件;2.2.2全局数组声明语句,包括用作输入数据的两个一维双精度数组(srcl, src2),用作保存GOLDEN结果的一维双精度数组(golder^result),以及用作保存计算结果 的一维双精度数组(result)。srcl和src2声明中的数组初值由双精度数据随机生成程序 生成;golderuresult数组声明中的初始数据,根据所要验证的运算类型对两个源数组进 行相应运算得到;2. 2. 3主函数代码,在主函数中对两个输入数组进行所要验证的运算并将赋值给 写入result数组;对golderuresult数组和result数组进行比较并当结果不同时报出警
告fn息。图3是自动生成的测试激励程序结构图,构造该程序的具体步骤为3. 1创建一个空的汇编语言程序文本文件simd. s ;3. 2向simd. s中写入如下内容3. 2. 1包含测试激励公共头文件的代码(如 include "hboot. s”);3. 2. 2文本段声明语句;3.2.3准备数组基地址寄存器内容的汇编语句,包括4个数组srcl,src2, golden_result 禾口 result ;3. 2. 4根据数组长度设置循环控制寄存器初始值的语句;3. 2. 5根据所要验证的运算,写入用SIMD指令进行数组读取和操作的语句;3. 2. 6结果比较语句以及根据比较结果跳转到相应自陷语句的汇编语句;3. 2. 7自陷语句;3.2.8数据段声明语句,数据对齐方式为“.align 32”;3. 2. 9从foo. s文件中读取的各个数组数据段的内容。
权利要求
1. 一种双精度SIMD部件芯片级验证测试激励自动生成方法,其特征在于包括以下步骤第一步,根据所要验证的双精度数据运算类型以及数组长度scale,构造进行双精度数 组操作的标准C语言程序foo. c,方法是`1. 1生成一个空的C语言源程序文件foo. c ;`1. 2向foo. c文件中写入标准C语言程序文本,包括如下内容`1. 2. 1包含标准头文件的语句;`1. 2. 2全局数组声明语句,包括声明用作输入数据的一维双精度数组srcl和src2的 语句、声明用作保存正确结果的一维双精度数组golderuresult的语句,以及声明用作保 存计算结果的一维双精度数组result的语句,数组的长度都为scale ;srcl和src2声明中 的数组初值由双精度数据随机生成程序生成;golderuresult数组声明中的初始数据根据 所要验证的运算类型对srcl和src2数组进行运算得到;`1.2. 3 C程序主函数代码包括对两个输入数组元素进行运算并将结果写入result数 组的语句;对golderuresult数组元素和result数组元素进行比较并当结果不同时报出警 告信息的程序语句;第二步,基于foo. c以及所要验证的运算,构造作为测试激励的汇编语言源程序simd. s,方法是`2.1用面向目标处理器的编译器编译foo.c程序,用“-S”编译选项控制编译器将foo. C编译为汇编语言程序文本foo. S ;`2. 2创建simd. s文件; 2.3向simd. s文件中写入如下内容 2. 3. 1包含测试激励公共头文件的代码; 2. 3. 2汇编语言程序文本段声明语句;`2. 3. 3将4个数组srcl,src2,golden_result和result的基地址写入寄存器的汇编 语句;`2. 3. 4根据数组长度设置循环控制寄存器初始值的语句; 2. 3. 5根据所要验证的运算,写入用SIMD指令进行数组读取和操作的语句; 2. 3. 6结果比较语句以及根据比较结果跳转到相应自陷语句的汇编语句; 2. 3.7自陷语句;`2.3.8数据段声明语句,数据对齐方式为“.align 32”;`2. 3. 9 foo. s文件中读取的srcl、src2、golden_result、result数组数据段的内容。
全文摘要
本发明公开了一种双精度SIMD部件芯片级验证测试激励自动生成方法,目的是提出一种自动生成双精度SIMD部件芯片级验证测试激励的方法。技术方案为先根据所要验证的双精度数据运算类型以及数组长度scale,构造进行双精度数组操作的标准C语言程序foo.c,然后基于foo.c以及所要验证的运算,构造作为测试激励的汇编语言源程序simd.s。采用本发明可以自动生成一个汇编语言测试激励simd.s,将simd.s加载到芯片模拟环境中运行,可以执行双精度SIMD指令对处理器的设计进行芯片级验证。本发明可以编程实现,多次运行该程序,输入不同的运算类型和数组长度,即可自动生成多种测试激励,可以极大地减少开发面向双精度SIMD部件进行芯片级验证所需的测试激励的时间。
文档编号G06F11/36GK102129407SQ20111005661
公开日2011年7月20日 申请日期2011年3月9日 优先权日2011年3月9日
发明者彭林, 易会战, 李春江, 杜云飞, 杨灿群, 王 锋, 赵克佳, 陈娟, 黄春 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1