CN116070474B - 一种面向ai浮点融合运算单元的验证激励产生方法 - Google Patents
一种面向ai浮点融合运算单元的验证激励产生方法 Download PDFInfo
- Publication number
- CN116070474B CN116070474B CN202310363122.6A CN202310363122A CN116070474B CN 116070474 B CN116070474 B CN 116070474B CN 202310363122 A CN202310363122 A CN 202310363122A CN 116070474 B CN116070474 B CN 116070474B
- Authority
- CN
- China
- Prior art keywords
- constraint
- expression
- input
- floating point
- operation unit
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/04—Constraint-based CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/08—Probabilistic or stochastic CAD
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种面向AI浮点融合运算单元的验证激励产生方法,该方法包括:针对新型AI浮点融合运算单元进行分析,获取输入操作数数量、输入操作数数据格式、输入操作数数据类型并构建相应参数模型;结合参数模型构造输入操作数之间的约束表达式、输入操作数和中间结果的约束表达式、输入操作数和输出结果的约束表达式;分别对三种约束表达式进行求解生成一定数量的验证激励;将验证激励分别送入参考模型和待验证新型AI浮点融合运算单元中比较计算结果和记录覆盖率。通过该方法可以提高验证人员对新型AI浮点融合运算单元的验证效率和验证覆盖率。
Description
技术领域
本发明涉及处理器设计和验证技术领域,尤其涉及一种面向AI浮点融合运算单元的验证激励产生方法。
背景技术
随着新兴应用对处理器的性能需求促使处理器中的运算单元的设计不断发展,以融合运算为设计的思想应运而生。融合运算单元是通过把多种运算融合成一个基本运算单元来满足不断提升的性能需求。此外,在处理器设计中,由于浮点数以其自身能对数据进行精确以及大范围表示的特点,浮点运算也一直作为处理器设计的基本需求。随着融合运算和浮点数应用的进一步发展,浮点融合运算设计应用于科学计算领域到深度学习领域。浮点融合运算单元成为新型处理器的重要基础单元。因此,对于新型处理器中的浮点融合运算单元的验证成为新型处理器验证过程中的关键点。
对于传统的浮点运算单元的验证,例如浮点乘法单元、浮点加法单元等,验证激励的产生主要从输入操作数的角度,在浮点边界数据、浮点特殊数据,以及各种浮点数据类型之间随机化产生。由于传统的浮点运算单元输入操作数少、功能单一,通过上述方式产生激励进行验证能获得较高的覆盖率,且能完成传统浮点运算单元的功能验证。
但是,研究发现将上述验证激励产生技术用于新型AI浮点融合运算单元的验证中存在以下两个问题。第一是该方法对于输入操作数之间的相关性没有约束。因为对于新型AI浮点融合运算单元来说,它的输入操作数可能有十几个或者几十个,例如8长度的浮点点积融合运算单元,它的输入就有16个,对于位宽是32比特的单精度浮点数,每个输入又有2的32次方个不同的数据,所以如果只是在一定数据范围内随机会造成激励产生的冗余和验证时间成本的浪费。第二是该方法没有结合中间结果和输出结果进行考虑。其中中间结果指的是输入操作数经过一种运算方式得到的中间值,例如点积融合运算单元所要实现的乘加运算,中间结果就是乘法的结果。同时由于要避免硬件开销和延时开销过大的问题,新型AI浮点融合运算的内部设计一般采用非全精度位宽设计,所以在内部计算中会出现指数较大的中间结果浮点数和指数较小的中间结果浮点数进行运算的情况,即会出现大数淹没小数从而对输出结果造成影响,所以只关注输入操作数的类型就会造成浮点融合运算单元无法得到充分的验证。
因此,对于新型AI浮点融合运算单元的验证效率低和验证覆盖率低的技术问题是必然要解决技术问题。
发明内容
针对现有技术的不足,本发明提出了一种面向AI浮点融合运算单元的验证激励产生方法,该方法要解决的技术问题是新型AI浮点融合运算单元验证过程中的验证激励产生问题,首先对新型AI浮点融合运算单元进行分析并构建参数模型,然后构造输入操作数之间的约束表达式、输入操作数和中间结果的约束表达式、输入操作数和输出结果的约束表达式,最后分别对三种约束表达式进行求解生成一定数量的验证激励,提高了验证人员对新型AI浮点融合运算单元的验证效率和验证覆盖率。
一种面向AI浮点融合运算单元的验证激励产生方法,该方法包括以下步骤:
(1)对需要验证的新型AI浮点融合运算单元构建参数模型并进行分析;所述构建参数模型包括构建输入操作数参数模型、分析并构造运算单元的计算表达式模型和构建功能点模型;
(2)根据步骤(1)得到的参数模型,构造输入操作数之间的约束表达式,再对该约束表达式进行求解生成验证激励,所述约束表达式内容包括输入操作数需要被检测到的数据类型和运算关系;
(3)再根据步骤(1)得到的参数模型,构造输入操作数和中间结果的约束表达式,该约束表达式内容包括中间结果需要被检测到的数据类型和中间结果需要被检测到的运算关系;再对约束表达式进行反向求解生成验证激励;
(4)最后根据步骤(1)的参数模型构造输入操作数和输出结果的约束表达式,该约束表达式内容包括输出结果需要被检测到的数据类型和异常标志需要被检测到的情况,再对约束表达式进行反向求解生成验证激励;
(5)依次完成步骤(2)至步骤(4)后得到所有用于验证的验证激励,将其分别送入参考模型和待验证新型AI浮点融合运算单元中比较计算结果和记录覆盖率。
进一步地,所述步骤(1)中对需要验证的新型AI浮点融合运算单元构建参数模型并进行分析,具体为:
(1.1)分析新型AI融合浮点运算单元的输入操作数,构建输入操作数参数模型;所述构建参数模型是针对输入操作数提取需要抽象成参数的内容,所述内容包括输入操作数数量、输入操作数数据格式和输入操作数数据类型;再针对每一项的参数的内容分别用参数进行定义和描述;
(1.2)分析运算单元的计算表达式,将运算单元的计算功能抽象成为计算表达式模型;
(1.3)最后分析运算单元需要检测的功能点,构建功能点模型。
进一步地,所述步骤(1.1)中构建输入操作数参数模型方法,具体如下:输入操作数数量用参数N表示;针对新型AI浮点融合运算单元所支持的输入操作数据格式根据国际浮点数据规范IEEE-754标准分为单精度浮点数和双精度浮点数,用参数Float和Double分别表示单精度数据格式和双精度数据格式;针对新型AI浮点融合运算单元所支持的数据类型共十种,分别为八种特殊浮点数和两种正常浮点数,对每一种数据类型都分别用一个相应参数进行表示。
具体为,所述步骤(1.1)中单精度浮点数共32位,其中1位符号位,8位指数位,23位尾数位;所述双精度浮点数共64位,1位符号位,11位指数位,52位尾数位。
具体为,所述步骤(1.1)中8种特殊浮点数为:正0和负0、正非规格化数和负非规格化数、正无穷大和负无穷大、静止的非数QNAN和通知的非数SNAN;所述2种正常浮点数为:正规格化浮点数和负规格化浮点数。
具体为,所述步骤(1.2)中计算表达式模型,其计算表达式包括:输出结果表达式Dout和中间结果表达式Mid,其浮点融合乘加单元输出结果表达式和中间结果表达式分别如下所示:
Dout=Ain×Bin+Cin;
Mid=Ain×Bin;
其中,Ain、Bin、Cin表示输入操作数,Dout表示输出结果,Mid表示中间结果。
进一步地,所述步骤(1.3)中分析运算单元需要检测的功能点,具体包括如下子步骤:
(1.3.1)输入数据的10种数据类型和这10种数据类型之间的运算,所述数据类型之间的运算以融合乘加单位即为Ain×Bin覆盖10种数据类型互乘;所述10种数据类型即8种特殊浮点数和2种正常浮点数;
(1.3.2)中间结果的10种数据类型和中间结果数据类型之间的运算;所述中间结果数据类型之间的运算就是通过中间结果表达式得到多个中间结果结合下一层运算功能覆盖10种数据类型互相运算,对于融合乘加单元即为其中间结果只产生一个操作数无法构成下一级运算表达式,因此只需要覆盖其10种数据类型;
(1.3.3)输出结果的10种数据类型和5种异常标志;其中IEEE-754标准中定义了输出结果的5种异常标志,分别为无效异常、除零异常、上溢异常、下溢异常和非精确异常。
进一步地,所述步骤(2)中构造输入操作数之间的约束表达式以及对该约束表达式进行求解,具体为:
(2.1)结合所述构建参数模型,获取输入操作数的参数模型和运算单元的计算表达式模型;
(2.2)结合所述功能点和运算单元的计算表达式,根据需要检测的输入数据类型之间的运算构造约束表达式,其中表达式是指两个数据进行相应的运算,约束是指对进行运算的两个数据进行数据类型或数据格式的限制;
(2.3)将输入操作数根据约束表达式在输入计算组合中的占比分为所有输入操作数都不需要约束限制、所有输入操作数都需要约束和需要约束的输入操作数数量介于零到输入操作数总数量之间三种情况;对每种情况根据约束表达式的数目分为有约束限制的约束输入操作数和没有约束限制的无约束输入操作数两部分,其中约束限制指对输入操作数的数据类型或者数据格式进行限制;
(2.4)对于约束输入操作数,根据约束表达式中的约束限制,分别调用不同的数据类型模型生成满足约束限制的输入操作数;
(2.5)对无约束输入操作数,采用均匀分布函数拼接产生的方法,具体是根据无约束输入操作数的32或64位位宽,将其均匀分为多段,每段采用均匀分布的伪随机函数进行独立生成,然后再进行拼接成固定位宽的操作数,以至输入操作数在取值空间中均匀覆盖;
(2.6)将生成的约束输入操作数和无约束输入操作数合成一组验证激励进行记录保存,继续进入步骤(2.3)中,直到输入操作数满足需要检测到的10种数据类型和数据类型之间的运算。
进一步地,所述步骤(3)中构造输入操作数和中间结果的约束表达式以及求解具体为,
根据中间结果的约束限制和计算中间结果的表达式模型,先随机生成第一个约束输入操作数,再代入计算中间结果的表达式中根据已确定数据生成第二个满足表达式的约束输入操作数,以此类推求解剩余的约束输入操作数,如果在求解的过程中不能生成满足表达式的约束输入操作数,则回溯到上一个生成的约束输入操作数,在满足约束的情况下随机生成其他数据类型的约束输入操作数。
具体地,所述步骤(4)中构造输入操作数和输出结果的约束表达式以及求解,根据输出结果的约束限制和计算输出结果的表达式模型,对约束输入操作数进行求解生成,同时对于无约束输入操作数的计算结果进行限制,避免对输出结果需要检测的功能点进行影响,导致输出结果的检测功能点覆盖不全。
本发明的有益效果如下:
本发明以AI浮点融合运算模块需要检测的功能点为理论依据,对输入操作数之间、输入操作数和中间结果之间、输入操作数和输出结果之间的相关性进行约束求解,提出面向新型AI浮点融合运算单元的验证激励产生方法,从而高效快速的完成对浮点融合运算单元的验证。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明的步骤流程图;
图2为本发明的针对约束表达式进行约束求解的流程图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。
一种面向AI浮点融合运算单元的验证激励产生方法,该方法包括以下步骤:
(1)对需要验证的新型AI浮点融合运算单元进行分析并构建参数模型,所述参数模型指浮点融合运算单元的数学表达式模型,其由以下内容构成:输入操作数数量和数据格式、运算单元的计算表达式和运算单元需要检测的功能点;
(2)根据步骤(1)得到的参数模型构造输入操作数之间的约束表达式,再对该约束表达式进行求解生成验证激励,所述约束表达式内容包括输入操作数需要被检测到的数据类型和运算关系;
(3)再根据步骤(1)得到的参数模型构造输入操作数和中间结果的约束表达式,该约束表达式内容包括中间结果需要被检测到的数据类型和中间结果需要被检测到的运算关系;再对约束表达式进行反向求解生成验证激励;
(4)最后根据步骤(1)的参数模型构造输入操作数和输出结果的约束表达式,该约束表达式内容包括输出结果需要被检测到的数据类型和异常标志需要被检测到的情况,再对约束表达式进行反向求解生成验证激励;
(5)依次完成步骤(2)至步骤(4)后得到所有用于验证的验证激励,将其分别送入参考模型和待验证新型AI浮点融合运算单元中比较计算结果和记录覆盖率。
实施例1,针对新型AI的8长度单精度浮点融合向量点积运算单元的验证激励产生方法。
如图1所示,本发明的方法步骤如下:
首先分析待验证的运算单元的相关信息构建参数模型,其次依次构造输入操作数和输入操作数、中间结果和输入操作数、输出结果和输入操作数的约束表达式进行约束求解得到一系列的验证激励,最后再将验证激励分别送到待验证运算单元和相应参考模型中比对结果,并统计覆盖率。例如,对于8长度的单精度浮点融合向量点积运算单元得到的其中一组测试激励为Ain[0]=0x7f800000,Ain[i]=0x00000000(i=1~7),Bin[j]=0x00000000(j=0~7),该组测试激励用来对点积运算单元验证零乘以无穷的测试情况,将这组测试激励分别送入到参考模型和点积运算单元中分别得到一个运算结果通过比较两个的输出是否一致来验证点积运算单元是否能正常计算零乘以无穷的运算场景。此外,通过上述方法可以得到一系列覆盖各种运算场景的测试激励,而不需要验证人员根据各种运算场景手动定向的进行一一编写,关于产生的测试激励这里就不一一赘述。具体包括以下步骤:
步骤1:分析8长度单精度浮点融合向量点积运算单元的相关设计信息并构建参数模型。相关设计信息包括:该模块支持8长度点积运算,输入输出数据为标准单精度浮点数,输出提供5种异常状态标识信号(无效异常、上溢异常、下溢异常、非精确异常、非规格化异常)。其内部采用非全精度的尾数保留方式,最大位宽为60位。
通过上述设计信息,开始构建参数模型。首先是构建输入操作数参数模型,具体包括输入操作数数目16,输入操作数为32位单精度浮点数,输入操作数支持10种浮点数据类型。其次,分析并构造运算单元的计算表达式模型,该运算单元由两层运算融合组成,第一层是乘法运算,第二层是加法运算。计算表达式模型具体包括输出结果表达式模型Dout=∑i 7 =0Ain[i]×Bin[i],中间结果表达式模型Mid[i]=Ain[i]×Bin[i](i=0~7)。Ain[i]、Bin[i]表示输入操作数,Dout表示输出结果,Mid[i]表示中间结果。最后,结合运算单元的具体设计分析运算单元需要检测的功能点,构建功能点模型,具体包括输入数据需要覆盖10种数据类型,输入数据之间覆盖各种数据类型相乘的情况;中间结果需要覆盖10种数据类型,中间结果之间覆盖各种数据类型相加的情况,同时覆盖指数的差值小于、等于、大于60的两个中间结果相加的情况,用于检测内部位宽设计;输出结果需要覆盖10种数据类型和5种异常标志,所述5种异常标志为无效异常、上溢异常、下溢异常、非精确异常和非规格化异常;所述所述10种数据类型即8种特殊浮点数和2种正常浮点数。
步骤2:如图2所示,结合步骤1的参数模型,构造输入操作数之间的约束表达式,再对约束表达式进行求解生成验证激励的子步骤如下:
(2.1)如图2中第1步所示,首先是结合步骤1的参数模型,获取输入操作数的参数模型包括16个输入数据,每个输入数据为32为单精度浮点数,10种数据类型,输入数据之间覆盖各种数据类型相乘的计算表达式。
(2.2)如图2中第2步所示,调用计算表达式模型,构造输入数据之间的约束表达式,具体是:正无穷大×正无穷大、负无穷大×负非规格化数等100(10×10)组约束表达式,覆盖10种数据类型之间进行乘法运算的情况。
(2.3)如图2中第3步所示,对100组约束表达式,依次选择一组约束表达式,根据约束表达式组合在输入操作数之间运算组合的占比设置三种情况,分别为:(1)16个输入操作数都不需要约束限制,(2)16个输入操作数都需要约束,(3)需要约束的输入操作数数量介于0-16之间,随机选择。根据每种情况将16个输入操作数分为两部分,一部分是有约束限制的约束输入操作数,用于构造约束表达式;一部分是没有约束限制的无约束输入操作数,用于补充剩余的输入操作数。其中约束限制指对操作数的数据类型或者数据格式进行限制。
(2.4)如图2中第4步所示,对于约束输入操作数,根据约束表达式中的约束限制,分别调用不同的数据类型模型生成满足约束限制的操作数。例如正无穷大×正无穷大约束表达式,则从正无穷大数据类型模型中进行随机生成。
(2.5)如图2中第5步所示,对无约束输入操作数,采用均匀分布函数拼接产生的方法,具体是调用数据格式模型,获取其输入位宽为32位二进制,分成8段二进制,每段共4位二进制,其范围在0~15之间,再采用均匀分布的伪随机函数,对其在0~15之间随机,最后将每段随机的结果拼接成32比特的浮点数,以此可以实现输入操作数在取值空间的均匀覆盖。
(2.6)如图2中第6步所示,将生成的约束输入操作数和无约束输入操作数合成一组验证激励进行记录保存,继续进入步骤(2.3)中,直到完成对100组约束表达式的遍历。
步骤3:结合步骤1的参数模型,中间结果需要覆盖10种数据类型,10种数据类型之间相加的情况,指数的差值小于、等于、大于60的两个中间结果相加的情况。构造中间结果约束表达式并进行求解输入验证激励的方法跟步骤2类似,区别在于进行求解方式有所不同,即图2中的第4步不同,步骤2是根据输入操作数的类型限制直接调用相应数据类型模型进行随机生成,本步骤中进行约束求解的步骤是根据中间结果的约束表达式的限制先随机生成一个中间结果,再代入约束表达式中求解另一个中间结果;对得到的中间结果结合中间结果计算表达式,再次先随机生成一个约束输入操作数,再代入中间结果计算表达式中求解另一个约束输入操作数。
例如,构造中间结果Mid[1]加中间结果Mid[2]的加法表达式,其中Mid[1]的指数和Mid[2]的指数的差值大于60,可以通过先随机一个Mid[1]的指数位,再通过指数差值大于60的约束限制随机Mid[2]的指数位,调用数据格式的模型根据生成的指数位的大小,再次随机生成符号位和尾数位就得到满足约束的Mid[1]和Mid[2]的具体值。对于得到的Mid[1]再结合Mid[1]=Ain[1]×Bin[1]的计算表达式,先随机生成一个Ain[1]的值,再代入计算表达式中求解Bin[1]的值。Mid[2]的约束输入操作数求解同理可得。
步骤4:结合步骤1中的参数模型,输出结果需要被检测到10种数据类型和5种异常标志的情况。根据需要被检测的功能点,构造输出结果和输入操作数的约束表达式,构造输出结果约束表达式并进行求解输入验证激励的方法跟步骤3类似。区别在于图2中的第5步需要对无约束输入操作数生成加以数值限制,对于每一种构造约束表达式的情况要同时对无约束输入操作数的运算结果进行限制,以此避免无约束输入操作数的运算结果对输出结果造成影响,从而不能完全覆盖输出结果所要检测的功能点。
例如,检测输出结果的异常标志为上溢异常时,构造约束表达式:16个输入操作数中存在Ain[i]×Bin[i]的指数相乘移位后大于127(上溢的判断条件)进行约束求解,对于无约束输入操作数都生成0值,以此避免其对输出结果的影响。
步骤5:将上述步骤2至步骤4所产生的验证激励进行记录输出,分别送到浮点融合点积参考模型和浮点融合点积运算单元中运行,对比输出结果和记录验证覆盖率。验证覆盖率包括代码覆盖率和功能点覆盖率,其中代码覆盖率用来衡量运算单元设计代码是否被充分运行的指标,功能点覆盖率衡量是否实现设计的各项功能的指标。
通过上述方法,记录实施例1新型AI的8长度浮点融合点积运算单元的代码覆盖率结果为97.46%,功能点覆盖率结果为100%。其中代码覆盖率和功能点覆盖率结果都已达最大值,但是代码覆盖率结果未达到100%的原因是设计人员在设计时对变量的赋值进行限制,与测试激励产生无关,例如设计人员对一个3比特变量的最低1位置1,导致在其他子模块调用该变量进行判断时,最低位为0的情况不会被覆盖到。本发明以AI浮点融合运算模块需要验证的覆盖点为理论依据,提出的面向新型AI浮点融合运算单元的验证激励产生方法,可以快速达到验证覆盖率的最大值,提高了对新型AI浮点融合运算单元的验证效率和验证覆盖率。
最后还需要值得注意的是,以上列举的仅仅是本发明的具体实施例。显然本发明不仅限于以上实施例。本领域的普通技术人员能从本发明公开的内容直接导出或者联想到的所有变形,均认为是本发明的保护范围。
Claims (9)
1.一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,该方法包括以下步骤:
(1)对需要验证的新型AI浮点融合运算单元构建参数模型并进行分析;所述构建参数模型包括构建输入操作数参数模型、分析并构造运算单元的计算表达式模型和构建功能点模型;
(2)根据步骤(1)得到的参数模型,构造输入操作数之间的约束表达式,再对该约束表达式进行求解生成验证激励,所述约束表达式内容包括输入操作数需要被检测到的数据类型和运算关系;
所述构造输入操作数之间的约束表达式以及对该约束表达式进行求解,具体为:
(2.1)结合所述构建参数模型,获取输入操作数的参数模型和运算单元的计算表达式模型;
(2.2)结合所述功能点和运算单元的计算表达式,根据需要检测的输入数据类型之间的运算构造约束表达式,其中表达式是指两个数据进行相应的运算,约束是指对进行运算的两个数据进行数据类型或数据格式的限制;
(2.3)将输入操作数根据约束表达式在输入计算组合中的占比分为所有输入操作数都不需要约束限制、所有输入操作数都需要约束和需要约束的输入操作数数量介于零到输入操作数总数量之间三种情况;对每种情况根据约束表达式的数目分为有约束限制的约束输入操作数和没有约束限制的无约束输入操作数两部分,其中约束限制指对输入操作数的数据类型或者数据格式进行限制;
(2.4)对于约束输入操作数,根据约束表达式中的约束限制,分别调用不同的数据类型模型生成满足约束限制的输入操作数;
(2.5)对无约束输入操作数,采用均匀分布函数拼接产生的方法,具体是根据无约束输入操作数的32或64位位宽,将其均匀分为多段,每段采用均匀分布的伪随机函数进行独立生成,然后再进行拼接成固定位宽的操作数,以至输入操作数在取值空间中均匀覆盖;
(2.6)将生成的约束输入操作数和无约束输入操作数合成一组验证激励进行记录保存,继续进入步骤(2.3)中,直到输入操作数满足需要检测到的10种数据类型和数据类型之间的运算;
(3)再根据步骤(1)得到的参数模型,构造输入操作数和中间结果的约束表达式,该约束表达式内容包括中间结果需要被检测到的数据类型和中间结果需要被检测到的运算关系;再对约束表达式进行反向求解生成验证激励;
(4)最后根据步骤(1)的参数模型构造输入操作数和输出结果的约束表达式,该约束表达式内容包括输出结果需要被检测到的数据类型和异常标志需要被检测到的情况,再对约束表达式进行反向求解生成验证激励;
(5)依次完成步骤(2)至步骤(4)后得到所有用于验证的验证激励,将其分别送入参考模型和待验证新型AI浮点融合运算单元中比较计算结果和记录覆盖率。
2.根据权利要求1所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(1)中对需要验证的新型AI浮点融合运算单元构建参数模型并进行分析,具体为:
(1.1)分析新型AI融合浮点运算单元的输入操作数,构建输入操作数参数模型;所述构建参数模型是针对输入操作数提取需要抽象成参数的内容,所述内容包括输入操作数数量、输入操作数数据格式和输入操作数数据类型;再针对每一项的参数的内容分别用参数进行定义和描述;
(1.2)分析运算单元的计算表达式,将运算单元的计算功能抽象成为计算表达式模型;
(1.3)最后分析运算单元需要检测的功能点,构建功能点模型。
3.根据权利要求2所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(1.1)中构建输入操作数参数模型方法,具体如下:输入操作数数量用参数N表示;针对新型AI浮点融合运算单元所支持的输入操作数据格式根据国际浮点数据规范IEEE-754标准分为单精度浮点数和双精度浮点数,用参数Float和Double分别表示单精度数据格式和双精度数据格式;针对新型AI浮点融合运算单元所支持的数据类型共十种,分别为八种特殊浮点数和两种正常浮点数,对每一种数据类型都分别用一个相应参数进行表示。
4.根据权利要求3所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(1.1)中单精度浮点数共32位,其中1位符号位,8位指数位,23位尾数位;所述双精度浮点数共64位,1位符号位,11位指数位,52位尾数位。
5.根据权利要求3所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(1.1)中8种特殊浮点数为:正0和负0、正非规格化数和负非规格化数、正无穷大和负无穷大、静止的非数QNAN和通知的非数SNAN;所述2种正常浮点数为:正规格化浮点数和负规格化浮点数。
6.根据权利要求2所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(1.2)中计算表达式模型,其计算表达式包括:输出结果表达式Dout和中间结果表达式Mid,其浮点融合乘加单元输出结果表达式和中间结果表达式如下所示:
Dout=Ain×Bin+Cin;
Mid=Ain×Bin;
其中,Ain、Bin、Cin表示输入操作数,Dout表示输出结果,Mid表示中间结果。
7.根据权利要求2所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(1.3)中分析运算单元需要检测的功能点,具体包括如下子步骤:
(1.3.1)输入数据的10种数据类型和这10种数据类型之间的运算,所述数据类型之间的运算以融合乘加单位即为Ain×Bin覆盖10种数据类型互乘;所述10种数据类型即8种特殊浮点数和2种正常浮点数;
(1.3.2)中间结果的10种数据类型和中间结果数据类型之间的运算;所述中间结果数据类型之间的运算就是通过中间结果表达式得到多个中间结果结合下一层运算功能覆盖10种数据类型互相运算,对于融合乘加单元即为其中间结果只产生一个操作数无法构成下一级运算表达式,因此只需要覆盖其10种数据类型;
(1.3.3)输出结果的10种数据类型和5种异常标志;其中IEEE-754标准中定义了输出结果的5种异常标志,分别为无效异常、除零异常、上溢异常、下溢异常和非精确异常。
8.根据权利要求1所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(3)中构造输入操作数和中间结果的约束表达式以及求解具体为,
根据中间结果的约束限制和计算中间结果的表达式模型,先随机生成第一个约束输入操作数,再代入计算中间结果的表达式中根据已确定数据生成第二个满足表达式的约束输入操作数,以此类推求解剩余的约束输入操作数,如果在求解的过程中不能生成满足表达式的约束输入操作数,则回溯到上一个生成的约束输入操作数,在满足约束的情况下随机生成其他数据类型的约束输入操作数。
9.根据权利要求1所述的一种面向AI浮点融合运算单元的验证激励产生方法,其特征在于,所述步骤(4)中构造输入操作数和输出结果的约束表达式以及求解,根据输出结果的约束限制和计算输出结果的表达式模型,对约束输入操作数进行求解生成,同时对于无约束输入操作数的计算结果进行限制,避免对输出结果需要检测的功能点进行影响,导致输出结果的检测功能点覆盖不全。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310363122.6A CN116070474B (zh) | 2023-04-07 | 2023-04-07 | 一种面向ai浮点融合运算单元的验证激励产生方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310363122.6A CN116070474B (zh) | 2023-04-07 | 2023-04-07 | 一种面向ai浮点融合运算单元的验证激励产生方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116070474A CN116070474A (zh) | 2023-05-05 |
CN116070474B true CN116070474B (zh) | 2023-07-07 |
Family
ID=86182291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310363122.6A Active CN116070474B (zh) | 2023-04-07 | 2023-04-07 | 一种面向ai浮点融合运算单元的验证激励产生方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116070474B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938483A (zh) * | 2021-10-29 | 2022-01-14 | 北京京航计算通讯研究所 | 一种分布式ai协同计算系统的节点身份验证方法和系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028067B2 (en) * | 2002-02-20 | 2006-04-11 | International Business Machines Corporation | Generation of mask-constrained floating-point addition and subtraction test cases, and method and system therefor |
CN107704384A (zh) * | 2017-09-14 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种加速芯片功能验证收敛的方法及系统 |
JP7112232B2 (ja) * | 2018-04-06 | 2022-08-03 | 株式会社日立製作所 | 演算器の検証装置 |
CN109933529B (zh) * | 2019-03-12 | 2022-03-29 | 苏州中晟宏芯信息科技有限公司 | 基于计算单元的验证方法及验证平台 |
CN112433931A (zh) * | 2019-08-26 | 2021-03-02 | 无锡江南计算技术研究所 | 基于指数约束的浮点验证数据生成方法 |
CN112433904A (zh) * | 2019-08-26 | 2021-03-02 | 无锡江南计算技术研究所 | 基于中间结果约束的浮点验证数据生成方法 |
CN110795299A (zh) * | 2019-09-12 | 2020-02-14 | 无锡江南计算技术研究所 | 浮点验证数据空间压缩方法 |
CN113407392B (zh) * | 2021-05-21 | 2022-07-29 | 鹏城实验室 | 浮点运算单元测试方法、装置、集控设备以及存储介质 |
CN113342671B (zh) * | 2021-06-25 | 2023-06-02 | 海光信息技术股份有限公司 | 对运算模块进行验证的方法、装置、电子设备和介质 |
-
2023
- 2023-04-07 CN CN202310363122.6A patent/CN116070474B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938483A (zh) * | 2021-10-29 | 2022-01-14 | 北京京航计算通讯研究所 | 一种分布式ai协同计算系统的节点身份验证方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116070474A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Govindu et al. | A library of parameterizable floating-point cores for FPGAs and their application to scientific computing | |
Fang et al. | Toward efficient static analysis of finite-precision effects in DSP applications via affine arithmetic modeling | |
US7458048B2 (en) | Computer program product for verification of digital designs using case-splitting via constrained internal signals | |
Revol et al. | Taylor models and floating-point arithmetic: proof that arithmetic operations are validated in COSY | |
Pineiro et al. | Algorithm and architecture for logarithm, exponential, and powering computation | |
KR20190090817A (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
US8166091B2 (en) | Floating-point fused dot-product unit | |
Kornerup et al. | On the computation of correctly rounded sums | |
Qiqieh et al. | Significance-driven logic compression for energy-efficient multiplier design | |
US10936769B2 (en) | Systems and methods for measuring error in terms of unit in last place | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
US20100125621A1 (en) | Arithmetic processing device and methods thereof | |
US9430190B2 (en) | Fused multiply add pipeline | |
Nannarelli | Tunable floating-point for energy efficient accelerators | |
CN116070474B (zh) | 一种面向ai浮点融合运算单元的验证激励产生方法 | |
US20040117421A1 (en) | Methods and systems for computing floating-point intervals | |
Araujo et al. | A new floating-point adder FPGA-based implementation using RN-coding of numbers | |
US20050289208A1 (en) | Methods and apparatus for determining quotients | |
Prasad et al. | Error-Tolerant Computing Using Booth Squarer Design and Analysis | |
Nielsen | Number systems and digit serial arithmetic | |
Aharoni et al. | Solving constraints on the invisible bits of the intermediate result for floating-point verification | |
US20230147929A1 (en) | Exact versus inexact decimal floating-point numbers and computation system | |
Paparouni | Energy-efficient design and implementation of approximate floating-point multiplier | |
JP4109181B2 (ja) | 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ | |
Serôdio | Unum Type-IV: A Floating-Point Unit with Dynamically Varying Exponent and Mantissa Sizes |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |