CN115952758A - 芯片验证方法、装置、电子设备及存储介质 - Google Patents
芯片验证方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115952758A CN115952758A CN202310224532.2A CN202310224532A CN115952758A CN 115952758 A CN115952758 A CN 115952758A CN 202310224532 A CN202310224532 A CN 202310224532A CN 115952758 A CN115952758 A CN 115952758A
- Authority
- CN
- China
- Prior art keywords
- test case
- module
- target module
- chip
- chip verification
- 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.)
- Granted
Links
Images
Classifications
-
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种芯片验证方法、装置、电子设备及存储介质,方法包括:获取测试用例,并将所述测试用例转换为IR形式;将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块;其中,所述目标模块为用于进行芯片验证的模块;生成所述测试用例中各参数的张量值;将所述张量值发送给所述目标模块;接收并比较各所述目标模块返回的运算结果;所述运算结果为所述目标模块根据所述张量值执行所述测试用例所得到的结果。本申请可以达到一个测试用例被不同的后端模块执行的功能,从而无需针对一个测试用例用不同程序语言编写不同版本,提高了芯片验证的效率,并提高了验证结果的可靠性。
Description
技术领域
本申请涉及芯片技术领域,具体而言,涉及一种芯片验证方法、装置、电子设备及存储介质。
背景技术
在AI(Artificial Intelligence,人工智能)芯片制造之前,需要完成芯片功能的验证和软件栈原型功能的开发,确保芯片流片成功。通常做法是用软件对芯片建模的方式,开发了一个黄金验证模型(golden reference model,该模型是一个芯片模拟器,有和真实芯片一样的接口和功能),在该模型的基础上,进行芯片功能验证以及对应软件栈的开发。与此同时黄金验证模型本身的正确性也需要在架构和功能层面得到充分的验证,以便使用黄金验证模型的软件团队和硬件设计验证(design verification)团队不会将额外的错误引入其中而难以发现。
常见实现方式是:使用软件工程的方式,用C/C++ 语言开发一个黄金验证模型,通常也叫“cmodel”。为了让这个模型像真实硬件一样“运行”起来,还需要开发一套与之匹配的驱动程序(driver)。黄金验证模型运行之后的结果,需要和一些已有的第三方实现的运行结果进行对比,以便发现功能和架构设计方面的问题。此外,验证过程中还可能需要将黄金验证模型运行之后的结果、已有的第三方实现的运行结果、以及真实芯片的运行结果进行对比,以验证真实芯片的功能。
其中,在AI芯片设计领域,第三方实现可以是现有的AI框架(例如tensorflow、pytorch等)写的一段小程序,也可以是用代数库numpy实现的函数,也可以是一段运行在诸如英伟达等GPU(Graphics Processing Unit,图形处理器)上面的CUDA(Compute UnifiedDevice Architecture,是一种新的操作GPU计算的硬件和软件架构)代码, 还可以是一段运行在CPU上面的C++代码。
那么,由于第三方实现、黄金验证模型、以及真实芯片所能识别的程序语言往往互不相同,那么就需要测试人员在不同的环境和AI框架之间,把同样的测试用例用匹配相应框架的程序语言和接口,重新写一遍。但是芯片验证过程需要的测试用例往往是非常多的,这就导致需要花费大量的人力和时间才能完成测试用例的撰写,影响了芯片验证的效率。此外,由于很少有测试人员能同时掌握所有的程序语言,因此针对同一个测试用例,往往需要多个不同程序编写人员分别进行编写,那就可能出现由于人员的编写偏差,使得不同程序语言写出的测试用例在细节上存在偏差,从而影响比对结果的可信度,进而影响验证结果的可靠性。
发明内容
本申请实施例的目的在于提供一种芯片验证方法、装置、电子设备及存储介质,用以提高芯片验证的效率,以及提高验证结果的可靠性。
本申请实施例提供了一种芯片验证方法,包括:获取测试用例,并将所述测试用例转换为IR(Intermediate expression,中间表达)形式;将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块;其中,所述目标模块为用于进行芯片验证的模块;生成所述测试用例中各参数的张量值;将所述张量值发送给所述目标模块;接收并比较各所述目标模块返回的运算结果;所述运算结果为所述目标模块根据所述张量值执行所述测试用例所得到的结果。
在上述实现过程中,通过将测试用例转换为IR形式发给目标模块,由于IR本质上是程序或代码的中间表达形式,反映的是程序或代码(即测试用例)所用到的各个功能和各功能之间的执行逻辑,因此基于IR形式的测试用例,可以很容易地转换为不同后端模块(即用于进行芯片验证的模块,例如黄金验证模块、真实芯片、第三方提供的芯片验证程序等)所需求的程序语言形式,从而使得一个测试用例可以被不同的后端模块所执行,无需把同样的测试用例用不同的程序语言和接口重复进行编写,从而缩短了测试用例的构建时间,提高了芯片验证的效率。同时,由于后端模块可以对同一个测试用例进行执行,这也就避免了不同后端模块因执行的测试用例之间存在偏差所带来的比对结果可信度低的问题,提高了验证结果的可靠性。
进一步地,不同的所述测试用例基于同一套预设接口构建得到。
在上述实现方式中,通过提供同一套预设接口来构建测试用例,这就使得用同一套接口构建的测试用例,在转化为IR 形式之后是统一的,并不会因为后端的不同语言而受影响。
进一步地,生成所述测试用例中各参数的张量值,包括:根据所述测试用例中规定的数据尺寸、数据类型、数据存储格式随机生成所述各参数的张量值。
在上述实现方式中,通过随机生成各参数的张量值的方式,可以使得芯片验证结果更为可信,降低芯片仅针对特定值有效的风险。
进一步地,将所述张量值发送给所述目标模块,包括:当所述测试用例中规定的数据尺寸、数据类型、数据存储格式中的至少之一不满足所述目标模块的格式要求时,将所述张量值转换为目标模块所要求的形式发送给所述目标模块。
可以理解,测试用例通常是针对被测试的芯片进行设计的,因此测试用例中规定的数据尺寸、数据类型、数据存储格式通常是被测试的芯片所要求的数据尺寸、数据类型、数据存储格式。而第三方芯片验证程序所要求的数据尺寸、数据类型、数据存储格式,可能与被测试的芯片所要求的数据尺寸、数据类型、数据存储格式不同。那么通过上述实现方式,将张量值转换为目标模块所要求的形式后发送给目标模块,就可以保证目标模块可正确执行测试用例,输出正确的结果数据。
进一步地,将所述测试用例转换为IR形式,包括:根据所述测试用例调用的接口、各接口的调用顺序、以及各接口对应的IR算子,转换得到包含IR算子的函数对象;所述函数对象为所述IR形式的测试用例。
进一步地,将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块,包括:按照预设的IR形式的算子与所述目标模块的算子的对应关系,将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块。
可以理解,定义IR时,会定义好表征各种功能或操作的算子(本文称之为IR算子),而测试用例本身是编写的需要运行一系列功能或操作的程序,因此在上述实现方式中,通过预先定义好的IR算子,可以将测试用例转换为包含IR算子的函数对象,后续只需要按照预设的IR形式的算子与所述目标模块的算子的对应关系,函数对象中的IR算子转换为目标模块的算子,并按照目标模块所要求的程序语言进行编译即可,可以很容易地实现测试用例从原有格式到目标模块所要求的格式的转换。
进一步地,在将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块之前,所述方法还包括:根据当前启用的运行时的类型,确定该运行时的类型所对应的后端模块为所述目标模块;所述后端模块为用于进行芯片验证的模块。
可以理解,运行时(runtime)是指某一后端模块运行过程中所有的状态和资源的总和。不同的后端模块的运行时存在差异,因此可以预先为不同的后端模块具配置不同的运行时类型(即前文所述的运行时的类型)。在上述实现方式中,通过获取当前启用的运行时(反映的是后端模块)的类型,即可快速确定出目标模块。
进一步地,所述目标模块为以下至少之一:黄金验证模型;真实芯片;第三方芯片验证程序。
本申请实施例还提供了一种芯片验证装置,包括:第一转换模块,用于获取测试用例,并将所述测试用例转换为中间表达IR形式;第二转换模块,用于将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块;其中,所述目标模块为用于进行芯片验证的模块;生成模块,用于生成所述测试用例中各参数的张量值;所述第二转换模块,还用于将所述张量值发送给所述目标模块;比较模块,用于接收并比较各所述目标模块返回的运算结果;所述运算结果为所述目标模块根据所述张量值执行所述测试用例所得到的结果。
本申请实施例还提供了一种芯片验证系统,包括:后端模块,用于进行芯片验证;前端模块,与所述后端模块通信连接,用于执行上述任一种的芯片验证方法。
本申请实施例还提供了一种电子设备,包括处理器和存储器;所述处理器用于执行所述存储器中存储的一个或者多个程序,以实现上述任一种的芯片验证方法。
本申请实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一种的芯片验证方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种芯片验证系统的结构示意图;
图2为本申请实施例提供的一种芯片验证方法的流程示意图;
图3为本申请实施例提供的一种芯片验证装置的结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了提高芯片验证的效率,以及提高验证结果的可靠性,本申请实施例中提供了一种芯片验证系统以及相应的芯片验证方法。
可以参见图1所示,图1示出了本申请实施例所提供的芯片验证系统的结构示意图,包括前端模块和后端模块,前端模块和后端模块之间通信连接,从而可以进行数据交互。
在本申请实施例中,后端模块是指可以用于进行芯片验证的模块,可以包括但不限于黄金验证模型、真实芯片(即本次需要验证的芯片实体)、第三方芯片验证程序(例如现有的AI框架、现有的用代数库numpy实现的函数、现有的运行在诸如英伟达等GPU上面的可实现芯片验证的CUDA代码,现有的运行在CPU上面的可实现芯片验证的C++代码等,但不作为限制)。例如图1所示,即示出了同时包含黄金验证模型、真实芯片、第三方芯片验证程序的情况。
在本申请实施例中,前端模块用于获取测试用例,并将测试用例转换为IR形式;以及用于将所述IR形式的测试用例转换为目标模块所要求的格式发送给目标模块;以及用于生成所述测试用例中各参数的张量值,将所述张量值发送给所述目标模块;以及用于接收并比较各所述目标模块返回的运算结果。
其中,目标模块为后端模块中当前被启用以执行该测试用例的后端模块。
可以理解,在本申请实施例中,测试用例可以是由工程师等专业人员通过高级语言构建得到的。
在本申请实施例中,前端模块中可以预先设置一套用于调用相关功能或函数的接口(即提供前文中所述的预设接口),以使工程师基于前端模块所提供同一套预设接口构建不同的测试用例。
在本申请实施例中,前端模块中可以预先设置有IR定义,定义有IR算子、所支持的张量的属性等。
可以理解,算子在上层语义上表达的是一种在张量上的操作,一个算子可以关联一个或多个算子作为输入,经过特定操作后(跟该算子具体语义相关),产生一个或者多个输出。算子映射到芯片指令集上时,反应的是芯片处理数据的能力和功能。
在本申请实施例中,称IR定义中定义的算子为IR算子。在本申请实施例中,IR算子可根据被测试的芯片的指令集以及一些常规的算子进行定义。
例如,第三方芯片验证程序有一个算子A,被测试的芯片的指令a,指令a和算子A刚好对应相同的功能,则IR中也会定义一个对应的算子A’,并构建A’与指令a以及算子A的对应关系。如果第三方芯片验证程序有一个算子B,被测试的芯片指令集中虽然没有对应指令支持,但是可以由指令b、c、d一起进行逻辑运算实现,则IR中会定义算子B’,并构建B’与指令b、c、d以及算子B的对应关系。如果被测试的芯片的指令集中存在的指令X在第三方芯片验证程序中没有(即不存在相关通用算子),则IR中会定义算子X’,算子X’被定义为与一段CUP可执行的代码或函数,或者与一段GPU可执行的kernel程序相关,该CUP可执行的代码或函数,或者与一段GPU可执行的kernel程序被执行时实现指令X相同的功能,从而在将测试用例转换为第三方芯片验证程序所要求的格式并发送给该第三方芯片验证程序时,可以将该算子X’转换为对应的CUP可执行的代码或函数,或者与一段GPU可执行的kernel程序发送给该第三方芯片验证程序。
在本申请实施例中,IR定义中张量的属性可以包括但不限于数据类型、数据存储格式以及数据对齐方式中的至少之一。
数据类型包括int8、uint8、int16、uint16、uint32、uint32、float8、float16、float32、float64等等。可以理解,由于测试用例通常是针对被测试的芯片进行设计的,因此在一种可行的实施方式中,可以在IR中定义被测试的芯片所支持的所有的数据类型。
数据存储格式是指硬件要求的数据“摆放”格式。比如linear格式、是指按顺序,一个元素接一个元素摆放。而在AI场景中,存在有nhwc、nchw格式。为了更好的功耗和访存效率,本申请实施例中可以定义一种特殊的数据存储格式tiled。tiled格式是指按一定规则,将原始数据的部分元素抽取出来凑成一个tiled块,再依次摆放tiled块的格式。
数据对齐方式是指将数据进行对齐的具体规范。例如,一种方式是无间隔对齐,即数据之间没有间隔。又例如,一种方式是以最后一维的数据是预设大小(例如32bytes)对齐,例如一个(14,14)的二维张量,最后一维是14 bytes,对齐到32 bytes后最后一维就变成了32 bytes(即变成了14*32的张量矩阵),此时该二维张量在芯片的片上内存存放时,实际大小就变为了14 * 32 = 448 bytes。
可以理解,在本申请实施例中,前端模块中的预设接口应与IR定义相匹配,即预设接口可与各IR算子相关联,从而在构建测试用例后,可以基于测试用例中调用的预设接口,以及各预设接口的调用顺序,以及各接口对应的IR算子,将测试用例转换成包含IR算子的函数对象,得到的函数对象即为IR形式的测试用例。可以理解,在本申请实施例中,可以将测试用例中的每一个测试任务转换为一个函数对象,但不作为限制。
例如,一个函数对象的表示如下:
def function_A(Tensor t0、Tensor t1) {
t2 = OP_A(t0、t1)
t3 = OP_B(t2、t1)
t4 = OP_C(t2、t3)
return t4
}
其中,“function_A”为函数名字。t0和t1为两个输入参数,需要为张量,此时由于参数值未生成,函数中的t0和t1还不具有具体值。OP_A、OP_B、OP_C为三个不同的IR算子。上述函数表征一个测试任务为,先通过OP_A对t0和t1进行处理得到t2,然后通过OP_B对t2和t1进行处理得到t3,然后通过OP_C对t2和t3进行处理得到t4,最终返回t4的值。
在本申请实施例中,前端模块生成的各参数的张量值可以是随机生成的。示例性的,可以是根据测试用例中规定的数据尺寸、数据类型、数据存储格式随机生成各参数的张量值。
还可以理解,测试用例中规定的数据尺寸、数据类型、数据存储格式可能和某些后端模块所需求的数据尺寸、数据类型、数据存储格式不一致,此时可以将张量值转换为目标模块所要求的形式发送给目标模块,以使目标模块可正确执行测试用例,输出正确的结果数据。
例如,假设测试用例中规定的数据类型为float48,假设目标模块为不支持float48的第三方芯片验证程序,假设目标模块支持的是float32,则可以将张量值转换为float32格式的数据。相关转换方法参考现有技术,在此不再赘述。
又例如,假设测试用例中规定的数据存储格式为tiled格式,假设目标模块为不支持tiled格式的第三方芯片验证程序,假设目标模块支持的是linear格式,则可以将tiled格式的张量值转换为linear格式的数据。相关转换方法参考现有技术,在此不再赘述。
可以理解,在本申请实施例中,可以是在获取到测试用例后再生成的测试用例中各参数的张量值。此外,由于测试用例的构建操作,以及张量值的随机生成过程都可以由工程师来触发执行的,那么由于工程师可以预先知晓所要构建的测试用例中所需要规定的数据尺寸、数据类型、数据存储格式(通常为被测芯片所支持的所有的数据尺寸、数据类型和数据存储格式),因此工程师可以通过配置数据尺寸、数据类型和数据存储格式的方式,从而先生成测试用例中各参数的张量值,再来构建测试用例。可以理解,事实上,构建测试用例和生成张量值的操作之间,可以不具有时序限制。
可以理解,在本申请实施例中,张量可以是由前端模块自行产生的,也可以是由其他模块产生后由前端模块转换得到的。例如,前端模块中提供的预设接口可以兼容代数库numpy,从而将代数库numpy随机产生的数据转换为张量。
还可以理解,在本申请实施例中,可以预先为不同的后端模块具配置不同的运行时类型。当某一后端模块被启用以执行测试用例时,前端模块即可基于该后端模块(即目标模块)的运行时类型将格式转换后的测试用例和各参数的张量值传输给该后端模块进行执行。
可以理解,在本申请实施例中,在将IR形式的测试用例转换为目标模块所要求的格式发送给目标模块时,可以按照预设的IR算子与目标模块的算子的对应关系,将IR形式的测试用例转换为目标模块所要求的格式发送给目标模块。例如,可以将函数对象中的IR算子替换为目标模块的算子,并按照目标模块所要求的程序语言进行编译,实现格式转换。
在本申请实施例中,当包含黄金验证模块和/或真实芯片在内的多个目标模块执行完测试用例后,可以获取多个目标模块的根据参数的张量值执行测试用例所得到的结果(即运算结果),进而进行比较,根据比较结果确定黄金验证模块和/或真实芯片是否验证通过。
可以理解,考虑到进行数据格式转换时可能存在一定的数据精度损失,因此在进行运算结果比较时,可以认为在黄金验证模块和/或真实芯片的运算结果与其他后端模块的运算结果之间的相似度大于预设阈值(例如98%)时,确定验证通过,否则确定验证失败。其中,预设阈值可以由工程师根据需求进行设定。
在本申请实施例中,针对真实芯片而言,可以在发生“读/写”操作时就自动进行运算结果的搬运,将运算结果从真实芯片中搬运至安装有其他后端模块的主机内,从而可以更快地实现运算结果的比对,且无需像pytorch那样显示调用api: tensor.to()来进行不同设备上的数据搬运。
基于同一发明构思,本申请实施例还提供了一种芯片验证方法。请参见图2所示,图2为本申请实施例中提供的芯片验证方法的流程示意图,包括:
S201:获取测试用例,并将该测试用例转换为IR形式。
S202:将IR形式的测试用例转换为目标模块所要求的格式发送给目标模块。
S203:生成测试用例中各参数的张量值。
S204:将张量值发送给目标模块。
可以理解,如前文所述,张量值的生成操作可以是由工程师触发的,因此步骤S203和步骤S201之间没有时序限制。相应的,步骤S204和步骤S202之间也没有时序限制。
S205:接收并比较各目标模块返回的运算结果。
在本申请实施例的一种可选实施方式中,不同的测试用例可以基于同一套预设接口构建得到。具体实现方案可参见前文所述,在此不再赘述。
在本申请实施例的一种可选实施方式中,生成测试用例中各参数的张量值的过程可以包括:根据测试用例中规定的数据尺寸、数据类型、数据存储格式随机生成各参数的张量值。
而在上述可选实施方式的基础上,将张量值发送给目标模块的过程可以包括:当测试用例中规定的数据尺寸、数据类型、数据存储格式中的至少之一不满足目标模块的格式要求时,将张量值转换为目标模块所要求的形式发送给目标模块。可以理解,具体实现方案也可参见前文所述,在此也不再赘述。
在本申请实施例的一种可选实施方式中,将所述测试用例转换为IR形式的过程可以包括:根据测试用例调用的接口、各接口的调用顺序、以及各接口对应的IR算子,转换得到包含IR算子的函数对象。此时,转换得到的函数对象即为IR形式的测试用例。具体实现方案也可参见前文所述,在此也不再赘述。
在上述可选实施方式的一种可选实施例中,将IR形式的测试用例转换为目标模块所要求的格式发送给目标模块的过程可以包括:按照预设的IR形式的算子与目标模块的算子的对应关系,将IR形式的测试用例转换为目标模块所要求的格式发送给目标模块。具体实现方案也可参见前文所述,在此也不再赘述。
在本申请实施例的一种可选实施方式中,在将IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块之前,还可以根据当前启用的运行时的类型,确定该运行时的类型所对应的后端模块为目标模块。
在本申请实施例的一种可选实施方式中,所述目标模块为以下至少之一:黄金验证模型;真实芯片;第三方芯片验证程序。
基于同一发明构思,本申请实施例中还提供了一种芯片验证装置300。请参阅图3所示,图3示出了采用图2所示的方法的芯片验证装置。应理解,装置300具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。装置300包括至少一个能以软件或固件的形式存储于存储器中或固化在装置300的操作系统中的软件功能模块。具体地:
参见图3所示,装置300包括:第一转换模块301、第二转换模块302、生成模块303和比较模块304。其中:
第一转换模块301,用于获取测试用例,并将所述测试用例转换为中间表达IR形式;
第二转换模块302,用于将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块;其中,所述目标模块为用于进行芯片验证的模块;
生成模块303,用于生成所述测试用例中各参数的张量值;
第二转换模块302,还用于将所述张量值发送给所述目标模块;
比较模块304,用于接收并比较各所述目标模块返回的运算结果;所述运算结果为所述目标模块根据所述张量值执行所述测试用例所得到的结果。
在本申请实施例的一种可行实施方式中,不同的所述测试用例基于同一套预设接口构建得到。
在本申请实施例的一种可行实施方式中,生成模块303具体用于根据所述测试用例中规定的数据尺寸、数据类型、数据存储格式随机生成所述各参数的张量值。
在上述可行实施方式中,第二转换模块302具体用于当所述测试用例中规定的数据尺寸、数据类型、数据存储格式中的至少之一不满足所述目标模块的格式要求时,将所述张量值转换为目标模块所要求的形式发送给所述目标模块。
在本申请实施例的一种可行实施方式中,第一转换模块301具体用于根据所述测试用例调用的接口、各接口的调用顺序、以及各接口对应的IR算子,转换得到包含IR算子的函数对象;所述函数对象为所述IR形式的测试用例。
在上述可行实施方式中,第一转换模块301具体用于按照预设的IR形式的算子与所述目标模块的算子的对应关系,将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块。
在本申请实施例中,第二转换模块302还用于在将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块之前,根据当前启用的运行时的类型,确定该运行时的类型所对应的后端模块为所述目标模块;所述后端模块为用于进行芯片验证的模块。
可以理解,在本申请实施例中,第一转换模块301,第二转换模块302、生成模块303和比较模块304可以构成前端模块的子模块,第一转换模块301,第二转换模块302、生成模块303、比较模块304以及前端模块,可以是通过软件或固件代码实现。
需要理解的是,出于描述简洁的考量,部分实施例前述系统实施例中描述过的内容,在方法实施例和装置实施例部分不再赘述,但相关内容是通用的。此外,以上各实施例之间可以在不冲突的情况下相互结合以得到新的实施例。
可以理解,在本申请实施例中,前端模块与后端模块之间可以采用延迟求值的设计,也即只有当后端模块启用并对张量进行读写操作时,前端模块才会将相应的函数对象以及参数转换后传递给该后端模块,以提高芯片的性能。
本申请实施例提供的芯片验证系统、芯片验证方法、芯片验证装置,通过将测试用例转换为IR形式发给目标模块,由于IR本质上是程序或代码的中间表达形式,反映的是程序或代码(即测试用例)所用到的各个功能和各功能之间的执行逻辑,因此基于IR形式的测试用例,可以很容易地转换为不同后端模块(即用于进行芯片验证的模块,例如黄金验证模块、真实芯片、第三方提供的芯片验证程序等)所需求的程序语言形式,从而使得一个测试用例可以被不同的后端模块所执行,无需把同样的测试用例用不同的程序语言和接口重复进行编写,从而缩短了测试用例的构建时间,提高了芯片验证的效率。同时,由于后端模块可以对同一个测试用例进行执行,这也就避免了不同后端模块因执行的测试用例之间存在偏差所带来的比对结果可信度低的问题,提高了验证结果的可靠性。
基于同一发明构思,本申请实施例还提供了一种电子设备,参见图4所示,其包括处理器401和存储器402。其中:
处理器401用于执行存储器402中存储的一个或多个程序,以实现上述芯片验证方法。
可以理解,而处理器401可以是处理器核心或处理器芯片,或者是可进行程序配置与运行的其他电路。而存储器402可以是RAM(Random Access Memory,随机存取存储器)、ROM(Read-Only Memory,只读存储器)、闪存等,但不作为限制。
还可以理解,图4所示的结构仅为示意,电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。例如,还可以具有内部通信总线,用于实现处理器401和存储器402之间的通信;又例如,还可以具有外部通信接口,例如USB(UniversalSerial Bus,通用串行总线)接口、CAN(Controller Area Network,控制器局域网络)总线接口等;又例如,还可以具有显示屏等信息显示部件,但不作为限制。
基于同一发明构思,本实施例还提供了一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、U盘、SD(Secure Digital Memory Card,安全数码卡)卡、MMC(MultimediaCard,多媒体卡)卡等,在该计算机可读存储介质中存储有实现上述各个步骤的一个或者多个程序,这一个或者多个程序可被一个或者多个处理器执行,以实现上述芯片验证方法。在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在本文中,多个是指两个或两个以上。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种芯片验证方法,其特征在于,包括:
获取测试用例,并将所述测试用例转换为IR形式;
将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块;其中,所述目标模块为用于进行芯片验证的模块;
生成所述测试用例中各参数的张量值;
将所述张量值发送给所述目标模块;
接收并比较各所述目标模块返回的运算结果;所述运算结果为所述目标模块根据所述张量值执行所述测试用例所得到的结果。
2.如权利要求1所述的芯片验证方法,其特征在于,不同的所述测试用例基于同一套预设接口构建得到。
3.如权利要求1所述的芯片验证方法,其特征在于,生成所述测试用例中各参数的张量值,包括:
根据所述测试用例中规定的数据尺寸、数据类型、数据存储格式随机生成所述各参数的张量值。
4.如权利要求3所述的芯片验证方法,其特征在于,将所述张量值发送给所述目标模块,包括:
当所述测试用例中规定的数据尺寸、数据类型、数据存储格式中的至少之一不满足所述目标模块的格式要求时,将所述张量值转换为目标模块所要求的形式发送给所述目标模块。
5.如权利要求1-4任一项所述的芯片验证方法,其特征在于,将所述测试用例转换为IR形式,包括:
根据所述测试用例调用的接口、各接口的调用顺序、以及各接口对应的IR算子,转换得到包含IR算子的函数对象;所述函数对象为所述IR形式的测试用例。
6.如权利要求5所述的芯片验证方法,其特征在于,将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块,包括:
按照预设的IR形式的算子与所述目标模块的算子的对应关系,将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块。
7.如权利要求1-4任一项所述的芯片验证方法,其特征在于,在将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块之前,所述方法还包括:
根据当前启用的运行时的类型,确定该运行时的类型所对应的后端模块为所述目标模块;所述后端模块为用于进行芯片验证的模块。
8.如权利要求1-4任一项所述的芯片验证方法,其特征在于,所述目标模块为以下至少之一:
黄金验证模型;
真实芯片;
第三方芯片验证程序。
9.一种芯片验证装置,其特征在于,包括:
第一转换模块,用于获取测试用例,并将所述测试用例转换为中间表达IR形式;
第二转换模块,用于将所述IR形式的测试用例转换为目标模块所要求的格式发送给所述目标模块;其中,所述目标模块为用于进行芯片验证的模块;
生成模块,用于生成所述测试用例中各参数的张量值;
所述第二转换模块,还用于将所述张量值发送给所述目标模块;
比较模块,用于接收并比较各所述目标模块返回的运算结果;所述运算结果为所述目标模块根据所述张量值执行所述测试用例所得到的结果。
10.一种芯片验证系统,其特征在于,包括:
后端模块,用于进行芯片验证;
前端模块,与所述后端模块通信连接,用于执行如权利要求1-8任一项所述的芯片验证方法。
11.一种电子设备,其特征在于,包括:处理器和存储器;所述处理器用于执行所述存储器中存储的一个或者多个程序,以实现如权利要求1-8任一项所述的芯片验证方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-8任一项所述的芯片验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310224532.2A CN115952758B (zh) | 2023-03-10 | 2023-03-10 | 芯片验证方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310224532.2A CN115952758B (zh) | 2023-03-10 | 2023-03-10 | 芯片验证方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115952758A true CN115952758A (zh) | 2023-04-11 |
CN115952758B CN115952758B (zh) | 2023-05-23 |
Family
ID=85892934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310224532.2A Active CN115952758B (zh) | 2023-03-10 | 2023-03-10 | 芯片验证方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952758B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116167333A (zh) * | 2023-04-25 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 芯片验证方法和装置、电子设备和存储介质 |
CN116431421A (zh) * | 2023-06-13 | 2023-07-14 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
CN117313595A (zh) * | 2023-11-30 | 2023-12-29 | 杭州登临瀚海科技有限公司 | 用于功能验证的随机指令生成方法、设备及系统 |
CN117592401A (zh) * | 2023-11-14 | 2024-02-23 | 广芯微电子(广州)股份有限公司 | 一种基于设计交换格式文件的数据传递方法及装置 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140005992A1 (en) * | 2012-06-27 | 2014-01-02 | Michael Deindl | Accelerating functional verification of an integrated circuit |
CN103684913A (zh) * | 2013-12-09 | 2014-03-26 | 北京创毅视讯科技有限公司 | 协议栈的测试方法、物理设备、终端和系统 |
US20160170864A1 (en) * | 2014-12-10 | 2016-06-16 | General Electric Company | Integrated automated test case generation for safety-critical software |
WO2016197768A1 (zh) * | 2016-01-04 | 2016-12-15 | 中兴通讯股份有限公司 | 芯片验证方法、装置及系统 |
CN108628748A (zh) * | 2018-05-09 | 2018-10-09 | 平安普惠企业管理有限公司 | 自动化测试管理方法和自动化测试管理系统 |
CN110750298A (zh) * | 2019-10-29 | 2020-02-04 | 南京星环智能科技有限公司 | 一种ai模型编译方法、设备及存储介质 |
CN111752839A (zh) * | 2020-06-24 | 2020-10-09 | 北京灵汐科技有限公司 | 测试用例、规则生成、芯片测试方法、装置、设备及介质 |
CN111913840A (zh) * | 2020-04-30 | 2020-11-10 | 电子科技大学 | 一种基于uvm的apb-uart模块的验证方法 |
CN112433940A (zh) * | 2020-11-19 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 软件开发工具包sdk测试方法及相关设备 |
CN114328060A (zh) * | 2022-03-14 | 2022-04-12 | 江苏清微智能科技有限公司 | 一种可复用测试用例框架、构建方法及电子设备 |
CN114818599A (zh) * | 2022-04-29 | 2022-07-29 | 深圳云豹智能有限公司 | 芯片仿真验证系统 |
CN115098401A (zh) * | 2022-07-20 | 2022-09-23 | 北京天融信网络安全技术有限公司 | 一种html报告验证方法、装置、电子设备及存储介质 |
CN115145812A (zh) * | 2022-06-28 | 2022-10-04 | 北京百度网讯科技有限公司 | 测试用例生成方法、装置、电子设备和存储介质 |
CN115145588A (zh) * | 2022-07-29 | 2022-10-04 | 北极雄芯信息科技(西安)有限公司 | 一种基于tvm的中间表示和数据生成方法 |
CN115391181A (zh) * | 2022-08-09 | 2022-11-25 | 江西创成微电子有限公司 | 一种soc芯片的验证方法 |
CN115576768A (zh) * | 2022-11-09 | 2023-01-06 | 兰州大学 | 一种基于uvm的通用验证平台架构自动生成方法 |
-
2023
- 2023-03-10 CN CN202310224532.2A patent/CN115952758B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140005992A1 (en) * | 2012-06-27 | 2014-01-02 | Michael Deindl | Accelerating functional verification of an integrated circuit |
CN103684913A (zh) * | 2013-12-09 | 2014-03-26 | 北京创毅视讯科技有限公司 | 协议栈的测试方法、物理设备、终端和系统 |
US20160170864A1 (en) * | 2014-12-10 | 2016-06-16 | General Electric Company | Integrated automated test case generation for safety-critical software |
WO2016197768A1 (zh) * | 2016-01-04 | 2016-12-15 | 中兴通讯股份有限公司 | 芯片验证方法、装置及系统 |
CN108628748A (zh) * | 2018-05-09 | 2018-10-09 | 平安普惠企业管理有限公司 | 自动化测试管理方法和自动化测试管理系统 |
CN110750298A (zh) * | 2019-10-29 | 2020-02-04 | 南京星环智能科技有限公司 | 一种ai模型编译方法、设备及存储介质 |
CN111913840A (zh) * | 2020-04-30 | 2020-11-10 | 电子科技大学 | 一种基于uvm的apb-uart模块的验证方法 |
CN111752839A (zh) * | 2020-06-24 | 2020-10-09 | 北京灵汐科技有限公司 | 测试用例、规则生成、芯片测试方法、装置、设备及介质 |
CN112433940A (zh) * | 2020-11-19 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 软件开发工具包sdk测试方法及相关设备 |
CN114328060A (zh) * | 2022-03-14 | 2022-04-12 | 江苏清微智能科技有限公司 | 一种可复用测试用例框架、构建方法及电子设备 |
CN114818599A (zh) * | 2022-04-29 | 2022-07-29 | 深圳云豹智能有限公司 | 芯片仿真验证系统 |
CN115145812A (zh) * | 2022-06-28 | 2022-10-04 | 北京百度网讯科技有限公司 | 测试用例生成方法、装置、电子设备和存储介质 |
CN115098401A (zh) * | 2022-07-20 | 2022-09-23 | 北京天融信网络安全技术有限公司 | 一种html报告验证方法、装置、电子设备及存储介质 |
CN115145588A (zh) * | 2022-07-29 | 2022-10-04 | 北极雄芯信息科技(西安)有限公司 | 一种基于tvm的中间表示和数据生成方法 |
CN115391181A (zh) * | 2022-08-09 | 2022-11-25 | 江西创成微电子有限公司 | 一种soc芯片的验证方法 |
CN115576768A (zh) * | 2022-11-09 | 2023-01-06 | 兰州大学 | 一种基于uvm的通用验证平台架构自动生成方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116167333A (zh) * | 2023-04-25 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 芯片验证方法和装置、电子设备和存储介质 |
CN116431421A (zh) * | 2023-06-13 | 2023-07-14 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
CN116431421B (zh) * | 2023-06-13 | 2023-08-29 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
CN117592401A (zh) * | 2023-11-14 | 2024-02-23 | 广芯微电子(广州)股份有限公司 | 一种基于设计交换格式文件的数据传递方法及装置 |
CN117313595A (zh) * | 2023-11-30 | 2023-12-29 | 杭州登临瀚海科技有限公司 | 用于功能验证的随机指令生成方法、设备及系统 |
CN117313595B (zh) * | 2023-11-30 | 2024-02-23 | 杭州登临瀚海科技有限公司 | 用于功能验证的随机指令生成方法、设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115952758B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115952758B (zh) | 芯片验证方法、装置、电子设备及存储介质 | |
CN111488174B (zh) | 应用程序接口文档的生成方法、装置、计算机设备及介质 | |
US9043759B1 (en) | System and method for generating software unit tests simultaneously with API documentation | |
US20150169294A1 (en) | Management of mixed programming languages for a simulation environment | |
KR101770292B1 (ko) | 컴퓨터 수행 가능한 모델 역공학 방법 및 장치 | |
EP2850529A2 (en) | System and methods for generating and managing a virtual device | |
CN111104269B (zh) | 一种基于uart接口的处理器调试方法及系统 | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
US8589837B1 (en) | Constructing inductive counterexamples in a multi-algorithm verification framework | |
US8140315B2 (en) | Test bench, method, and computer program product for performing a test case on an integrated circuit | |
CN107622017B (zh) | 一种通用自动化软件测试的解析方法 | |
CN112597718A (zh) | 集成电路设计的验证方法、验证装置以及存储介质 | |
CN110737431B (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
US10839124B1 (en) | Interactive compilation of software to a hardware language to satisfy formal verification constraints | |
CN111459814A (zh) | 自动化测试用例生成方法、装置及电子设备 | |
CN114398282A (zh) | 测试脚本的生成方法、装置、设备及存储介质 | |
CN117112447B (zh) | 一种数据传输方法、装置、电子设备及可读存储介质 | |
CN113868046A (zh) | 一种pad控制单元的功能验证方法、系统及相关组件 | |
CN112860587A (zh) | Ui自动测试方法和装置 | |
CN116228515B (zh) | 硬件加速系统、方法及相关装置 | |
JP5830955B2 (ja) | 検証装置、検証方法及び検証プログラム | |
CN112579475A (zh) | 代码测试方法、装置、设备及可读存储介质 | |
CN116306392A (zh) | 芯片仿真装置、方法、电子设备和存储介质 | |
CN111338761B (zh) | 一种51单片机虚拟中断控制器及实现方法 |
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 |