基于中间结果约束的浮点验证数据生成方法技术

技术编号:27527863 阅读:58 留言:0更新日期:2021-03-03 10:58
本发明专利技术公开一种基于中间结果约束的浮点验证数据生成方法,包括以下步骤:S1、根据浮点操作中间结果的约束条件,构建更高精度的浮点数据;S2、获得高精度的浮点运算结果;S3、建立高低精度浮点结果的约束关系;S4、根据用户设定的浮点中间结果约束,对高精度浮点结果施加约束,获得约束集合子句;S5、根据S4中获得的约束集合子句构建合成CNF范式;S6、将S5中得到的CNF范式作为输入,采用第三方求解器进行求解,约束满足则输出求解结果,否则输出不满足;S7、根据S6中的求解结果进行解析,形成一组浮点验证元组数据。本发明专利技术解决了中间结果约束建模复杂性并由此可能带来的测试覆盖不全的问题,提高了浮点测试的效率和覆盖率。高了浮点测试的效率和覆盖率。高了浮点测试的效率和覆盖率。

【技术实现步骤摘要】
基于中间结果约束的浮点验证数据生成方法


[0001]本专利技术涉及一种基于中间结果约束的浮点验证数据生成方法,属于计算机


技术介绍

[0002]目前基于芯片验证的技术已经发展得比较完善,在大量的技术中一个核心的技术就是测试用例的生成,测试验证数据的生成是测试用例生成中的一个重要组成部分。对浮点运算部件而言,中间结果是能够严格、精确地反映出浮点的实际运算结果的准确性,通过中间结果能够对浮点运算的结果施加最严格的约束,能够精准控制、达到测试人员希望得到浮点运算结果,是最能够检验浮点运算部件的正确性的一种约束方式。为此,关注浮点运算的中间结果的特征组成,分析并提炼出中间结果的约束,对浮点部件正确性验证有着极为重要的意义。
[0003]测试处理器浮点部件的功能正确性,需要覆盖整个浮点数据空间的输入和输出、以及浮点中间结果的各种情况。由于精度、结果数据存储长度的限制,在处理器中浮点运算实际得到结果大多数情况下都是非精确的,准确的结果称之为中间结果;而中间结果的表示通常超过了当前数据表示精度,因此中间结果对测试人员来说是透明不可见的,若测试数据数据元组仅关心输入、输出,忽略中间结果,会由此带来对浮点部件功能测试覆盖不全的问题。
[0004]目前在处理器验证测试过程中,使用的浮点数据通常仅仅在输入数据上进行约束,并且主要是集中在特殊数据、边界数据和通过数据划分的生成随机验证数据的方式进行约束进而得到浮点验证数据。但中间结果,是浮点运算中最准确表示的部分,如何根据该部分数据实现完备的数据覆盖,则需要对浮点结果进行约束,还需要借鉴参考平台的浮点结果,反推出相应的输入数据,从而生成完整的输入输出数据元组,这个过程对一般的测试人员来说十分复杂,并且需要对计算机浮点数据表示、运算规律有较为深厚的经验积累。

技术实现思路

[0005]本专利技术的目的是提供一种基于中间结果约束的浮点验证数据生成方法,该基于中间结果约束的浮点验证数据生成方法解决了中间结果约束建模复杂性并由此可能带来的测试覆盖不全的问题,还解决了其他建模方式不是针对精确计算结果以及建模过程和方法复杂的问题,提高了浮点测试的效率和覆盖率。。
[0006]为达到上述目的,本专利技术采用的技术方案是:一种基于中间结果约束的浮点验证数据生成方法,包括以下步骤:S1、根据浮点操作中间结果的约束条件,构建更高精度的浮点数据;S2、根据高精度浮点数据与低精度浮点数据的对应关系,将低精度浮点运算中的低精度浮点数据,对应替换为S1中获得的高精度浮点数据,获得高精度的浮点运算结果;S3、将低精度的浮点运算结果更新为S2中获得的高精度的浮点运算结果,建立高低精
度浮点结果的约束关系;S4、根据用户设定的浮点中间结果约束,对高精度浮点结果施加约束,获得约束集合子句;S5、根据S4中获得的约束集合子句构建合成CNF范式;S6、将S5中得到的CNF范式作为输入,采用第三方求解器进行求解,约束满足则输出求解结果,否则输出不满足;S7、根据S6中的求解结果进行解析,形成一组浮点验证元组数据。
[0007]上述技术方案中进一步改进的方案如下:1. 上述方案中,在S1中,采用64bit位的双精度浮点数据构建32位单精度浮点中间结果,采用128bit位的多精度浮点数据构建64位双精度浮点中间结果。
[0008]2. 上述方案中,所述第三方求解器为Z3求解器或者CVC4求解器。
[0009]由于上述技术方案的运用,本专利技术与现有技术相比具有下列优点:本专利技术基于中间结果约束的浮点验证数据生成方法,提供了一种通用的建模方法,实现了对浮点中间结果的约束,提供指定中间结果约束的数据生成平台,解决了中间结果约束建模复杂性并由此可能带来的测试覆盖不全的问题,还解决了其他建模方式不是针对精确计算结果以及建模过程和方法复杂的问题,提高了浮点测试的效率和覆盖率。
附图说明
[0010]附图1为本专利技术基于中间结果约束的浮点验证数据生成方法流程示意图;附图2为本专利技术基于中间结果约束的浮点验证数据生成方法流程图。
具体实施方式
[0011]实施例:一种基于中间结果约束的浮点验证数据生成方法,包括以下步骤:S1、根据浮点操作中间结果的约束条件,构建更高精度的浮点数据;S2、根据高精度浮点数据与低精度浮点数据的对应关系,将低精度浮点运算中的低精度浮点数据,对应替换为S1中获得的高精度浮点数据,获得高精度的浮点运算结果;S3、将低精度的浮点运算结果更新为S2中获得的高精度的浮点运算结果,建立高低精度浮点结果的约束关系;S4、根据用户设定的浮点中间结果约束,对高精度浮点结果施加约束,获得约束集合子句;S5、根据S4中获得的约束集合子句构建合成CNF范式;S6、将S5中得到的CNF范式作为输入,采用第三方求解器进行求解,约束满足则输出求解结果,否则输出不满足;S7、根据S6中的求解结果进行解析,形成一组浮点验证元组数据。
[0012]在S1中,采用64bit位的双精度浮点数据构建32位单精度浮点中间结果,采用128bit位的多精度浮点数据构建64位双精度浮点中间结果。
[0013]上述第三方求解器为Z3求解器。
[0014]实施例进一步解释如下:根据浮点运算精确的中间结果组成特征,对浮点运算的中间结果进行约束分析与建
模,结合求解器生成指定特征的中间结果约束的浮点验证元组数据。
[0015]根据精度p的浮点数据中间结果的有效尾数实际有效长度为2p比特位,我们借助高一级别精度的浮点运算模拟低精度浮点运算的中间结果,然后通过对较高精度的浮点数据施加约束,间接地实现较低精度浮点中间结果的约束求解。
[0016]以浮点加法dres=fadd(dx,dy)为例,其相应的中间结果约束具体建模过程如下:第一步:根据浮点操作中间结果的约束条件,首先构建更高精度的浮点数据:(1)采用64bit位的双精度浮点数据构建32位单精度浮点中间结果;(2)采用128bit位的多精度浮点数据构建64位双精度浮点中间结果;第二步:根据高精度浮点数据与低精度浮点数据的对应关系:采用qres表示fadd(qx,qy),其中qx、qy分别表示比dx、dy更高精度的数据,同时满足qx==dx、qy==dy;第三步:建立高低精度浮点结果的约束关系:qres==dres;第四步:根据用户设定的浮点中间结果约束,对qres施加约束;第五步:根据上述约束集合子句构建合成CNF范式;第六步:根据第五步得到的CNF范式作为输入,采用第三方求解器进行求解,约束满足则输出求解结果;否则输出不满足;第七步:根据第六步的求解结果进行解析,形成一组浮点验证元组数据。
[0017]采用上述基于中间结果约束的浮点验证数据生成方法时,其提供了一种通用的建模方法,实现了对浮点中间结果的约束,提供指定中间结果约束的数据生成平台,解决了中间结果约束建模复杂性并由此可能带来的测试覆盖不全的问题,还解决了其他建模方式不是针对精确计算结果以及建模过程和方法复杂的问题,提高了浮点测试的效率和覆盖率。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于中间结果约束的浮点验证数据生成方法,其特征在于:包括以下步骤:S1、根据浮点操作中间结果的约束条件,构建更高精度的浮点数据;S2、根据高精度浮点数据与低精度浮点数据的对应关系,将低精度浮点运算中的低精度浮点数据,对应替换为S1中获得的高精度浮点数据,获得高精度的浮点运算结果;S3、将低精度的浮点运算结果更新为S2中获得的高精度的浮点运算结果,建立高低精度浮点结果的约束关系;S4、根据用户设定的浮点中间结果约束,对高精度浮点结果施加约束,获得约束集合子句;S5、根据S4中获得的约束集合子句构建合成CNF范...

【专利技术属性】
技术研发人员:谭坚李岱峰王丽一陈磊蒋丽萍蒋昊辰
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1