测试程序生成方法、装置及存储介质转让专利

申请号 : CN201810202947.9

文献号 : CN110275818A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐成华王朋宇吴瑞阳

申请人 : 龙芯中科技术有限公司

摘要 :

本发明提供一种测试程序生成方法、装置及存储介质,该方法包括:根据在指令集合中随机选择的测试指令,随机生成测试指令序列,指令集合包括多个测试指令;在源数据集合中随机选择至少一个源数据,并使用至少一个源数据运行测试指令序列得到目标结果;将测试指令序列、至少一个源数据、目标结果打包,生成测试程序,测试程序用于测试处理器芯片的功能。本发明提供的测试程序生成方法、装置及存储介质,测试指令序列可以包括不同的指令组合,用于测试处理器芯片的不同功能。因此,当所生成的测试程序达到预设数量时,待测试的处理器芯片在运行该预设数量的测试程序时,可以提高处理器芯片功能的验证覆盖率。

权利要求 :

1.一种测试程序生成方法,其特征在于,所述方法包括:

根据在指令集合中随机选择的测试指令,随机生成测试指令序列,所述指令集合包括多个测试指令;

在源数据集合中随机选择至少一个源数据,并使用所述至少一个源数据运行所述测试指令序列得到目标结果;

将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成测试程序,所述测试程序用于测试处理器芯片的功能。

2.根据权利要求1所述的方法,其特征在于,所述测试指令序列包括至少两个相同的测试指令,或者,所述测试指令序列中各测试指令均不相同。

3.根据权利要求1所述的方法,其特征在于,所述将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成测试程序,包括:根据所述处理器芯片运行的操作系统所支持的程序格式,将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成所述测试程序。

4.根据权利要求1所述的方法,其特征在于,所述生成测试程序之后,所述方法还包括:将所述测试程序发送给安装有所述处理器芯片的计算机。

5.根据权利要求4所述的方法,其特征在于,所述将所述测试程序发送给安装有所述处理器芯片的计算机之后,所述方法还包括:接收所述计算机发送的验证通过指令,所述验证通过指令用于指示所述处理器芯片根据所述至少一个源数据,运行所述测试程序所得到的测试结果与所述目标结果相同,以及,指示继续为所述处理器芯片生成测试程序。

6.根据权利要求5所述的方法,其特征在于,每次生成的所述测试程序用于测试所述处理器芯片的不同功能。

7.根据权利要求4所述的方法,其特征在于,所述将所述测试程序发送给安装有所述处理器芯片的计算机之后,所述方法还包括:接收所述计算机发送的错误指令,所述错误指令用于指示所述处理器芯片验证失败。

8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:记录为所述处理器芯片生成的测试程序的数量;

在所述数量大于或等于预设数量时,停止执行为所述处理器芯片生成测试程序的操作。

9.一种测试程序生成装置,其特征在于,所述装置包括:

第一生成模块,用于根据在指令集合中随机选择的测试指令,随机生成测试指令序列,所述指令集合包括多个测试指令;

运算模块,用于在源数据集合中随机选择至少一个源数据,并使用所述至少一个源数据运行所述测试指令序列得到目标结果;

第二生成模块,用于将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成测试程序,所述测试程序用于测试处理器芯片的功能。

10.根据权利要求9所述的装置,其特征在于,所述测试指令序列包括至少两个相同的测试指令,或者,所述测试指令序列中各测试指令均不相同。

11.根据权利要求9所述的装置,其特征在于,第二生成模块,具体用于根据所述处理器芯片运行的操作系统所支持的程序格式,将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成所述测试程序。

12.根据权利要求9所述的装置,其特征在于,所述装置还包括:发送模块,用于在所述第二生成模块生成测试程序之后,将所述测试程序发送给安装有所述处理器芯片的计算机。

13.根据权利要求12所述的装置,其特征在于,所述装置还包括:接收模块,用于在所述发送模块将所述测试程序发送给安装有所述处理器芯片的计算机之后,接收所述计算机发送的验证通过指令,所述验证通过指令用于指示所述处理器芯片根据所述至少一个源数据,运行所述测试程序所得到的测试结果与所述目标结果相同,以及,指示所述测试程序生成装置继续为所述处理器芯片生成测试程序。

14.根据权利要求13所述的装置,其特征在于,所述测试程序生成装置每次生成的测试程序用于测试所述处理器芯片的不同功能。

15.根据权利要求12所述的装置,其特征在于,所述装置还包括:接收模块,用于在所述发送模块将所述测试程序发送给安装有所述处理器芯片的计算机之后,接收所述计算机发送的错误指令,所述错误指令用于指示所述处理器芯片验证失败。

16.根据权利要求9-15任一项所述的装置,其特征在于,所述装置还包括:记录模块,用于记录为所述处理器芯片生成的测试程序的数量;

处理模块,用于在所述数量大于或等于预设数量时,停止执行为所述处理器芯片生成测试程序的操作。

17.一种测试程序生成装置,其特征在于,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,以执行如权利要求1-8中任一项所述的方法。

18.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有程序指令,所述程序指令被处理器执行时实现权利要求1-8中任一项所述的方法。

说明书 :

测试程序生成方法、装置及存储介质

技术领域

[0001] 本发明涉及计算机技术,尤其涉及一种测试程序生成方法、装置及存储介质。

背景技术

[0002] 在设计处理器芯片的过程中,需要对所设计的处理器芯片进行验证,以确定所设计的处理器芯片的功能是否正常,是否存在设计缺陷或生产缺陷等。目前,处理器芯片的验证主要分为硅前验证和硅后验证。
[0003] 硅前验证主要通过硬件仿真加速器和现场可编程门阵列(Field-Programmable Gate Array,FPGA)对处理器芯片进行验证。由于硅前验证的速度较慢,无法进行大量的验证。因此,设计人员可以进一步通过硅后验证,对所设计的处理器芯片进行验证。硅后验证主要通过专门开发的测试程序和现有的程序对处理器芯片进行验证。其中,这里所说的专门开发的测试程序例如可以为汇编语言测试程序、高级语言测试程序等。这里所说的现有的程序例如可以是现有的操作系统、应用程序等。
[0004] 然而,由于手动开发的测试程序有限,使得测试程序所能验证的处理器芯片的功能有限,同时现有的程序所涉及的处理器芯片的功能也有限。因此,在通过现有的测试程序和现有的程序对处理器芯片进行验证时,处理器芯片功能的验证覆盖率较低,处理器芯片验证结果的准确率较低。

发明内容

[0005] 本发明提供一种测试程序生成方法、装置及存储介质,用于解决现有技术中在通过现有的测试程序和现有的程序对处理器芯片进行验证时,处理器芯片功能的验证覆盖率较低,处理器芯片验证结果的准确率较低的技术问题。
[0006] 本发明第一方面提供一种测试程序生成方法,该方法包括:
[0007] 根据在指令集合中随机选择的测试指令,随机生成测试指令序列,所述指令集合包括多个测试指令;
[0008] 在源数据集合中随机选择至少一个源数据,并使用所述至少一个源数据运行所述测试指令序列得到目标结果;
[0009] 将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成测试程序,所述测试程序用于测试处理器芯片的功能。
[0010] 在一种可能的实施方式中,所述测试指令序列包括至少两个相同的测试指令,或者,所述测试指令序列中各测试指令均不相同。
[0011] 在一种可能的实施方式中,所述将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成测试程序,包括:
[0012] 根据所述处理器芯片运行的操作系统所支持的程序格式,将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成所述测试程序。
[0013] 在一种可能的实施方式中,所述生成测试程序之后,所述方法还包括:
[0014] 将所述测试程序发送给安装有所述处理器芯片的计算机。
[0015] 在一种可能的实施方式中,所述将所述测试程序发送给安装有所述处理器芯片的计算机之后,所述方法还包括:
[0016] 接收所述计算机发送的验证通过指令,所述验证通过指令用于指示所述处理器芯片根据所述至少一个源数据,运行所述测试程序所得到的测试结果与所述目标结果相同,以及,指示继续为所述处理器芯片生成测试程序。
[0017] 在一种可能的实施方式中,每次生成的所述测试程序用于测试所述处理器芯片的不同功能。
[0018] 在一种可能的实施方式中,将所述测试程序发送给安装有所述处理器芯片的计算机之后,所述方法还包括:
[0019] 接收所述计算机发送的错误指令,所述错误指令用于指示所述处理器芯片验证失败。
[0020] 在一种可能的实施方式中,所述方法还包括:
[0021] 记录为所述处理器芯片生成的测试程序的数量;
[0022] 在所述数量大于或等于预设数量时,停止执行为所述处理器芯片生成测试程序的操作。
[0023] 本发明第二方面提供一种测试程序生成装置,该装置包括:
[0024] 第一生成模块,用于根据在指令集合中随机选择的测试指令,随机生成测试指令序列,所述指令集合包括多个测试指令;
[0025] 运算模块,用于在源数据集合中随机选择至少一个源数据,并使用所述至少一个源数据运行所述测试指令序列得到目标结果;
[0026] 第二生成模块,用于将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成测试程序,所述测试程序用于测试处理器芯片的功能。
[0027] 在一种可能的实施方式中,所述测试指令序列包括至少两个相同的测试指令,或者,所述测试指令序列中各测试指令均不相同。
[0028] 在一种可能的实施方式中,第二生成模块,具体用于根据所述处理器芯片运行的操作系统所支持的程序格式,将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成所述测试程序。
[0029] 在一种可能的实施方式中,所述装置还包括:
[0030] 发送模块,用于在所述第二生成模块生成测试程序之后,将所述测试程序发送给安装有所述处理器芯片的计算机。
[0031] 在一种可能的实施方式中,所述装置还包括:
[0032] 接收模块,用于在所述发送模块将所述测试程序发送给安装有所述处理器芯片的计算机之后,接收所述计算机发送的验证通过指令,所述验证通过指令用于指示所述处理器芯片根据所述至少一个源数据,运行所述测试程序所得到的测试结果与所述目标结果相同,以及,指示所述测试程序生成装置继续为所述处理器芯片生成测试程序。
[0033] 在一种可能的实施方式中,所述测试程序生成装置每次生成的测试程序用于测试所述处理器芯片的不同功能。
[0034] 在一种可能的实施方式中,所述装置还包括:
[0035] 接收模块,用于在所述发送模块将所述测试程序发送给安装有所述处理器芯片的计算机之后,接收所述计算机发送的错误指令,所述错误指令用于指示所述处理器芯片验证失败。
[0036] 在一种可能的实施方式中,所述装置还包括:
[0037] 记录模块,用于记录为所述处理器芯片生成的测试程序的数量;
[0038] 处理模块,用于在所述数量大于或等于预设数量时,停止执行为所述处理器芯片生成测试程序的操作。
[0039] 本发明第三方面提供一种测试程序生成装置,包括:至少一个处理器和存储器;
[0040] 所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,以执行第一方面任一项所述的方法。
[0041] 本发明第四方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序指令,所述程序指令被处理器执行时实现第一方面任一项所述的方法。
[0042] 本发明提供的测试程序生成方法、装置及存储介质,可以基于在测试指令集合中随机选择的测试指令,生成组成测试程序的测试指令序列。即,测试指令序列可以包括不同的指令组合,用于测试处理器芯片的不同功能。因此,当所生成的测试程序达到预设数量时,待测试的处理器芯片在运行该预设数量的测试程序时,可以提高处理器芯片功能的验证覆盖率,从而可以提高处理器芯片验证结果的准确率,缩短了处理器芯片流片到正式量产的周期较长,进而提高了处理器芯片的设计效率。

附图说明

[0043] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044] 图1为本发明提供的一种测试程序生成方法的流程示意图;
[0045] 图2为本发明提供的一种测试程序生成装置的结构示意图;
[0046] 图3为本发明提供的另一种测试程序生成装置的结构示意图;
[0047] 图4为本发明提供的又一种测试程序生成装置的结构示意图;
[0048] 图5为本发明提供的又一种测试程序生成装置的结构示意图。

具体实施方式

[0049] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050] 在设计处理器芯片的过程中,需要对所设计的处理器芯片进行验证,以确定所设计的处理器芯片的功能是否正常,是否存在设计缺陷或生产缺陷等。目前,处理器芯片的验证主要分为硅前验证和硅后验证。
[0051] 硅前验证主要通过硬件仿真加速器和FPGA对处理器芯片进行验证。通过硬件加速仿真器和FPGA对处理器芯片进行验证,可以在发现处理器芯片存在设计缺陷或生产缺陷时,快速对处理器芯片进行修改。由于处理器芯片的流片耗时较长且成本较高,因此,通过硅前验证,可以节省处理器芯片的开发成本、缩短处理器芯片的研发周期。
[0052] 但是由于硅前验证的速度较慢,无法进行大量的验证。因此,设计人员可以进一步通过硅后验证,对所设计的处理器芯片进行验证。硅后验证主要在实际环境中运行待测试的处理器芯片,并通过专门开发的测试程序和现有的程序对处理器芯片进行验证。其中,这里所说的专门的开发测试程序例如可以为汇编语言测试程序、高级语言测试程序等。这里所说的现有的程序例如可以是现有的操作系统、应用程序等。
[0053] 然而,由于手动开发的测试程序有限,使得测试程序所能验证的处理器芯片的功能有限,同时现有的程序所涉及的处理器芯片的功能也有限。因此,在通过现有的测试程序和现有的程序对处理器芯片进行验证时,处理器芯片功能的验证覆盖率较低,处理器芯片验证结果的准确率较低。在该场景下,即便增加对处理器芯片的测试量,也无法提高处理器芯片功能的验证覆盖率,导致处理器芯片流片到正式量产的周期较长,处理器芯片的设计效率较低。
[0054] 考虑到上述问题,本发明提供了一种测试程序生成方法,可以基于在测试指令集合中随机选择的测试指令,生成组成测试程序的测试指令序列。即,测试指令序列可以包括不同的指令组合,用于测试处理器芯片的不同功能。因此,当所生成的测试程序达到预设数量时,待测试的处理器芯片在运行该预设数量的测试程序时,可以提高处理器芯片功能的验证覆盖率,从而可以提高处理器芯片验证结果的准确率,缩短了处理器芯片流片到正式量产的周期较长,进而提高了处理器芯片的设计效率。另外,由于上述测试指令序列包括不同的指令组合,因此,通过上述方法还可以更容易发现处理器芯片是否存在设计缺陷或生产缺陷。
[0055] 下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0056] 图1为本发明提供的一种测试程序生成方法的流程示意图。本实施例的执行主体为测试程序生成装置,还可以为集成了测试程序生成装置的测试机(测试机可以为任一能够生成测试程序的设备,例如上位机等)。下述申请文件均以集成了测试程序生成装置的测试机(简称:测试机)为例,对本发明提供的测试程序生成方法进行说明。本实施例涉及的是测试机根据在测试指令集合中随机选择的指令,生成用于测试处理器芯片的测试程序的过程。如图1所示,该方法包括:
[0057] S101、根据在测试指令集合中随机选择的测试指令,随机生成测试指令序列,测试指令集合包括多个测试指令。
[0058] S102、在源数据集合中随机选择至少一个源数据,并使用至少一个源数据运行测试指令序列得到目标结果。
[0059] S103、将测试指令序列、至少一个源数据、目标结果打包,生成测试程序,测试程序用于测试处理器芯片的功能。
[0060] 具体的,测试机中预设有测试指令集合。该测试指令集合可以包括多个测试指令,处理器芯片执行各测试指令时,可以执行不同的操作。其中,该测试指令集合所包括的指令的类型和数量具体可以根据待测试的处理器芯片的功能确定。
[0061] 在本实施例中,测试机可以根据在测试指令集合中随机选择的一个或多个测试指令,随机生成用于测试处理器芯片的功能的测试指令序列。上述所说的测试指令序列可以包括至少两个相同的测试指令,或者,该测试指令序列中各测试指令均不相同。也就是说,测试机可以重复使用同一测试指令生成测试指令序列,也可以使用不同的测试指令生成测试指令序列。当重复使用同一测试指令生成测试指令序列时,相同的测试指令在测试指令序列中可以相邻也可以不相邻。
[0062] 以测试指令集合可以包括加法测试指令、减法测试指令、乘法测试指令、除法测试指令为例,假定测试机在测试指令集合中随机选择了加法测试指令,则测试机可以使用该加法测试指令生成测试指令序列。例如,包括一个加法测试指令的测试指令序列,或者,包括多个加法测试指令的测试指令序列。通过该测试指令序列,可以测试处理器芯片在不同情况下执行加法的功能是否正常。
[0063] 再例如,假定测试机在测试指令集合中随机选择了减法测试指令和除法测试指令,则测试机可以使用减法测试指令和除法测试指令生成测试指令序列。例如,先执行减法后执行除法的测试指令序列,或者,先执行除法后执行减法的测试指令序列,或者,混合有多个减法和一个除法的测试指令序列,或者,混合有一个减法和多个除法的测试指令序列,或者,混合有多个减法和多个除法的测试指令序列。通过该测试指令序列,可以测试处理器芯片在不同情况下执行减法和除法的功能是否正常。
[0064] 需要说明的是,虽然上述示例均以执行数字运算功能的指令为例,对测试指令集合,以及,测试机根据在测试指令集合中随机选择的测试指令,随机生成测试指令序列,测试指令集合包括多个测试指令的方式进行了介绍。但是本领域技术人员可以理解的是,上述测试指令集合还可以包括其他运算的指令,例如,图像处理类的指令等,对此不再赘述。
[0065] 测试机在随机生成测试指令序列之后,可以在源数据集合中随机选择至少一个源数据作为测试指令序列的输入参数,输入至测试指令序列,并运行该测试指令序列得到目标结果。以测试指令序列为x加y减z的测试指令序列,假定测试机选择的源数据为:x为3,y为2,z为1,则测试机可以使用这些源数据运行测试指令序列,得到目标结果4。
[0066] 然后,测试机可以将所生成的测试指令序列、运行该测试指令序列所使用的至少一个源数据,以及,运行该测试指令序列所得到的目标结果一起打包,生成用于测试处理器芯片功能的测试程序。例如,上述测试机可以将适用于任一操作系统的程序格式,作为测试程序的程序格式。可选的,在一些实施例中,上述测试机可以根据处理器芯片运行的操作系统所支持的程序格式,将所生成的测试指令序列、运行该测试指令序列所使用的至少一个源数据,以及,运行该测试指令序列所得到的目标结果一起打包,生成测试程序。例如,linux操作系统所支持的程序格式为可执行连接格式(Executable and Linkable Format,ELF),windows操作系统所支持的程序格式为可执行文件(Portable Executable,PE)等。以处理器芯片运行的操作系统为linux为例,则上述测试机可以生成ELF的测试程序。
[0067] 至此完成为待测试的处理器芯片生成一次测试程序的过程。这样,安装有待测试的处理器芯片的计算机可以运行该测试程序。即,安装有待测试的处理器芯片的计算机可以将测试程序中的源数据作为输入参数,运行该测试程序中的测试指令序列,以得到测试结果。进而,安装有待测试的处理器芯片的计算机可以将该测试结果与测试程序中的目标结果进行比较,以确定该测试程序所测试的处理器芯片的功能是否正常。当两个结果相同时,说明该测试程序所测试的处理器芯片的功能正常,即验证结果为验证通过。当两个结果不同时,说明该测试程序所测试的处理器芯片的功能出现错误,即验证结果为验证失败。
[0068] 本发明提供的测试程序生成方法,可以基于在测试指令集合中随机选择的测试指令,生成组成测试程序的测试指令序列。即,测试指令序列可以包括不同的指令组合,用于测试处理器芯片的不同功能。因此,当所生成的测试程序达到预设数量时,待测试的处理器芯片在运行该预设数量的测试程序时,可以提高处理器芯片功能的验证覆盖率,从而可以提高处理器芯片验证结果的准确率,缩短了处理器芯片流片到正式量产的周期较长,进而提高了处理器芯片的设计效率。
[0069] 下面通过不同的使用场景,来对本发明所提供的测试程序生成方法进行详细说明。
[0070] 第一种使用场景:将测试程序通过存储介质(例如U盘等)传递给安装有待测试的处理器芯片的计算机。
[0071] 如前述实施例所说,为了确保处理器芯片功能的验证覆盖率,在处理器芯片运行预设数量的用于测试处理芯片不同功能的测试程序、且验证结果均为验证通过的情况下,才能得出所设计的处理器芯片的功能正常,不存在设计缺陷或生产缺陷等的结论。其中,上述预设数量的具体取值可以根据用户的需求确定,例如,上述预设数量可以为500、1000等。
[0072] 因此,上述测试机可以需要根据预设数量,循环执行上述步骤S101至步骤S103,以为该处理器芯片生成预设数量的测试程序。其中,测试机每次生成的测试程序用于测试处理器芯片的不同功能。也就是说,测试机为同一处理器芯片生成的任意两个测试程序中的测试指令序列均不相同。具体实现时,上述测试机可以根据现有的随机算法,使用在指令集合中随机选择的测试指令,随机生成测试指令序列,以使测试机为同一处理器芯片生成的预设数量的测试程序均不相同,具体可以参见现有的随机算法,对此不再一一赘述。
[0073] 另外,由于各测试程序用于测试处理器芯片的不同功能,因此,在本实施例中,通过增加处理器芯片的测试程序的数量,还可以进一步提高处理器芯片功能的验证覆盖率,对此不再赘述。
[0074] 进一步地,测试机在为该处理器芯片生成预设数量的测试程序的同时,可以同步记录为该处理器芯片生成的测试程序的数量,当生成的测试程序的数量大于预设数量时,停止执行为处理器芯片生成测试程序的操作。即,退出生成测试程序的操作。通过这种方式,提高了生成测试程序的效率,同时还可以确保测试机为处理器芯片生成的测试程序的数量正确,从而可以保证处理器芯片的测试准确性。
[0075] 测试机在为处理器芯片生成预设数量的测试程序后,开发人员可以通过存储介质(例如U盘等)将该预设数量的测试程序传递给安装有待测试的处理器芯片的计算机。安装有待测试的处理器芯片的计算机可以逐个执行测试程序。若处理器芯片运行预设数量的测试程序所得到的验证结果均为验证通过,可以得出所设计的处理器芯片的功能正常,不存在设计缺陷或生产缺陷等的结论,则处理器芯片将用于指示该结论的指示消息可以显示在安装有待测试的处理器芯片的计算机的输出设备(例如显示屏)上,以通知该处理器芯片的测试人员。若处理器芯片运行某一测试程序所得到的验证结果为验证失败,可以得出所设计的处理器芯片的功能不正常,存在设计缺陷或生产缺陷等的结论,则处理器芯片不再运行后续的测试程序,而是将用于指示该结论的指示消息显示在安装有待测试的处理器芯片的计算机的输出设备上,以通知该处理器芯片的测试人员进行错误检查和处理。
[0076] 第二种使用场景:测试机与安装有待测试的处理器芯片的计算机通过网络连接,测试机可以通过网络将测试程序传递给安装有待测试的处理器芯片的计算机。
[0077] 在该使用场景下,测试机可以采用第一种使用场景的方式,直接生成预设数量的测试程序,并通过网络将该预设数量的测试程序全部传递给安装有待测试的处理器芯片的计算机。
[0078] 在另一实现方式中,上述测试机还可以在每次为该处理器芯片生成测试程序之后,将该测试程序发送给安装有处理器芯片的计算机。然后,测试机可以进入等待安装有处理器芯片的计算机运行该测试程序所得到的验证结果的状态。
[0079] 当安装有待测试的处理器芯片的计算机得到的验证结果为验证通过时,说明该测试程序所测试的处理器芯片的功能正常,则安装有待测试的处理器芯片的计算机可以向测试机发送验证通过指令。该验证通过指令用于指示处理器芯片根据至少一个源数据,运行测试程序所得到的测试结果与目标结果相同,以及,指示测试机继续为处理器芯片生成测试程序。测试机在接收到该验证通过指令后,可以再次执行步骤S101至步骤S103,以为该处理器芯片继续生成测试程序。以此循环,直至测试机生成的测试程序的数量大于或等于预设数量时,测试机停止执行为处理器芯片生成测试程序的操作。
[0080] 在该场景下,若处理器芯片运行预设数量的测试程序所得到的验证结果均为验证通过,可以得出所设计的处理器芯片的功能正常,不存在设计缺陷或生产缺陷等的结论,则处理器芯片将用于指示该结论的指示消息可以显示在安装有待测试的处理器芯片的计算机的输出设备(例如显示屏)上,以通知该处理器芯片的测试人员。或者,处理器芯片可以将用于指示该结论的指示消息发送给测试机,以使测试机显示在测试机的输出设备(例如显示屏)上,以通知该处理器芯片的测试人员。
[0081] 需要说明的是,在测试机为处理器悬念片生成的测试程序的数量小于预设数量时,若安装有待测试的处理器芯片的计算机得到的验证结果为验证失败时,说明该测试程序所测试的处理器芯片的功能不正常,则安装有待测试的处理器芯片的计算机可以向测试机发送错误指令。该错误指令用于指示处理器芯片验证失败。测试机在接收到该错误指令后,可以停止执行为处理器芯片生成测试程序的操作。即,退出生成测试程序的操作。
[0082] 在该场景下,处理器芯片可以得出处理器芯片的功能不正常,存在设计缺陷或生产缺陷等的结论,则处理器芯片不再运行后续的测试程序,而是将用于指示该结论的指示消息显示在安装有待测试的处理器芯片的计算机的输出设备上,以通知该处理器芯片的测试人员进行错误检查和处理。或者,处理器芯片可以将用于指示该结论的指示消息发送给测试机,以使测试机显示在测试机的输出设备(例如显示屏)上,以通知该处理器芯片的测试人员进行错误检查和处理。
[0083] 本发明提供的测试程序生成方法,可以基于在测试指令集合中随机选择的测试指令,生成组成测试程序的测试指令序列。即,测试指令序列可以包括不同的指令组合,用于测试处理器芯片的不同功能。因此,当所生成的测试程序达到预设数量时,待测试的处理器芯片在运行该预设数量的测试程序时,可以提高处理器芯片功能的验证覆盖率,从而可以提高处理器芯片验证结果的准确率,缩短了处理器芯片流片到正式量产的周期较长,进而提高了处理器芯片的设计效率。
[0084] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0085] 图2为本发明提供的一种测试程序生成装置的结构示意图。该测试程序生成装置可以通过软件、硬件或者两者的结合实现测试机(例如上位机等)的部分或者全部。如图2所示,该测试程序生成装置可以包括:第一生成模块11、运算模块12和第二生成模块13。其中,[0086] 第一生成模块11,用于根据在指令集合中随机选择的测试指令,随机生成测试指令序列,所述指令集合包括多个测试指令。其中,所述测试指令序列包括至少两个相同的测试指令,或者,所述测试指令序列中各测试指令均不相同。
[0087] 运算模块12,用于在源数据集合中随机选择至少一个源数据,并使用所述至少一个源数据运行所述测试指令序列得到目标结果;
[0088] 第二生成模块13,用于将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成测试程序,所述测试程序用于测试处理器芯片的功能。可选的,第二生成模块13,例如可以具体用于根据所述处理器芯片运行的操作系统所支持的程序格式,将所述测试指令序列、所述至少一个源数据、所述目标结果打包,生成所述测试程序。
[0089] 图3为本发明提供的另一种测试程序生成装置的结构示意图。如图3所示,在上述图2所示的框图的基础上,该测试程序生成装置还可以包括:
[0090] 发送模块14,用于在所述第二生成模块13生成测试程序之后,将所述测试程序发送给安装有所述处理器芯片的计算机。
[0091] 在该场景下,上述测试程序生成装置还可以包括:接收模块15。
[0092] 接收模块15,可以用于在所述发送模块14将所述测试程序发送给安装有所述处理器芯片的计算机之后,接收所述计算机发送的验证通过指令,所述验证通过指令用于指示所述处理器芯片根据所述至少一个源数据,运行所述测试程序所得到的测试结果与所述目标结果相同,以及,指示所述测试程序生成装置继续为所述处理器芯片生成测试程序。需要说明的是,测试程序生成装置每次生成的测试程序用于测试所述处理器芯片的不同功能。
[0093] 或者,接收模块15,用于在所述发送模块14将所述测试程序发送给安装有所述处理器芯片的计算机之后,接收所述安装有所述处理器芯片的计算机发送的错误指令,所述错误指令用于指示所述处理器芯片验证失败。
[0094] 图4为本发明提供的又一种测试程序生成装置的结构示意图。如图4所示,在上述图2所示的框图的基础上,该测试程序生成装置还可以包括:
[0095] 记录模块16,用于记录为所述处理器芯片生成的测试程序的数量;
[0096] 处理模块17,用于在所述数量大于或等于预设数量时,停止执行为所述处理器芯片生成测试程序的操作。
[0097] 本发明提供的测试程序生成装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
[0098] 图5为本发明提供的又一种测试程序生成装置的结构示意图,该测试程序生成装置包括:至少一个处理器21和存储器22。图5示出的是以一个处理器为例的测试程序生成装置,其中,
[0099] 存储器22,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器22可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0100] 处理器21用于执行所述存储器22存储的计算机执行指令,以实现上述实施例中的测试程序生成方法,其实现原理和技术效果类似,在此不再赘述。
[0101] 其中,处理器21可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0102] 可选的,在具体实现上,如果通信接口、存储器22和处理器21独立实现,则通信接口、存储器22和处理器21可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
[0103] 可选的,在具体实现上,如果通信接口、存储器22和处理器21集成在一块芯片上实现,则通信接口、存储器22和处理器21可以通过内部接口完成相同间的通信。
[0104] 本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或者光盘等各种可以存储程序代码的介质。具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
[0105] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。