CN114090355A - 硅后测试的方法、***、设备以及存储介质 - Google Patents

硅后测试的方法、***、设备以及存储介质 Download PDF

Info

Publication number
CN114090355A
CN114090355A CN202111362448.4A CN202111362448A CN114090355A CN 114090355 A CN114090355 A CN 114090355A CN 202111362448 A CN202111362448 A CN 202111362448A CN 114090355 A CN114090355 A CN 114090355A
Authority
CN
China
Prior art keywords
test
instruction
random
chip
configuration
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.)
Pending
Application number
CN202111362448.4A
Other languages
English (en)
Inventor
冉亮
潘杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202111362448.4A priority Critical patent/CN114090355A/zh
Publication of CN114090355A publication Critical patent/CN114090355A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2289Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by configuration test

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本公开提供一种硅后测试的方法、***、设备以及存储介质,该方法包括:根据待测的芯片,获取随机配置信息;根据随机配置信息获取测试指令流;根据测试指令流获取指令级别随机的测试用例;在芯片上运行指令级别随机的测试用例以验证芯片。本公开的硅后测试方法通过生成和运行指令级别随机的测试用例,使得硅后也能通过大规模的回归测试来撞到尽可能多的场景,从而能够测试到更多场景,测试更加完备,测试的成本较低,能够在芯片推向市场前发现到芯片的缺陷。

Description

硅后测试的方法、***、设备以及存储介质
技术领域
本公开的实施例涉及一种硅后测试的方法、***、设备以及存储介质。
背景技术
典型的超大规模集成电路的设计制造过程大致可以分为:功能划分、逻辑设计和验证、综合布局布线、制造、测试。由于集成电路是构建在以硅为原材料的晶片上,制造之前的步骤没有物理实体,故可以称为硅前,制造完成之后的步骤称为硅后。
例如,处理器是典型的超大规模集成电路,随着处理器的复杂度越来越高,充分的验证有利于提前发现潜在的问题,降低最终产品中的缺陷。
发明内容
本公开至少一实施例提供了一种硅后测试的方法,包括:根据待测的芯片,获取随机配置信息;根据所述随机配置信息获取测试指令流;根据所述测试指令流获取指令级别随机的测试用例;在所述芯片上运行所述指令级别随机的测试用例以验证所述芯片。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,所述随机配置信息包括以下的一种或多种:被配置为不影响指令执行结果的第一类配置;被配置为影响指令执行结果的第二类配置;测试用例配置。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,根据待测的芯片,获取随机配置信息,包括:根据所述芯片的架构和微架构,获取多个目标配置;从配置库至少部分随机地获取所述随机配置信息的至少一个所述第一类配置和至少一个所述第二类配置,其中,所述配置库包括所述多个目标配置中每个目标配置的配置项和配置值。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,从所述配置库至少部分随机地获取所述随机配置信息的至少一个所述第一类配置和至少一个所述第二类配置,包括:随机地获取所述配置库中的所述目标配置的配置值,和/或,随机地将所述配置库中具有不同配置项的所述目标配置随机地配对,以获取所述随机配置信息的至少一个所述第一类配置和至少一个所述第二类配置。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,所述测试指令流包括被配置为测试目标功能的至少一个第一指令流,或者,所述测试指令流包括被配置为完全随机的至少一个第二指令流。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,根据所述随机配置信息获取所述测试指令流,包括:根据所述随机配置信息提供至少一个第一测试模板,并分别用第一选项替换所述至少一个第一测试模板中每个的指令参数,获取所述至少一个第一指令流;或者,根据指令集的指令格式提供至少一个第二测试模板,并分别用第二选项替换所述至少一个第二测试模板中每个的指令参数,获取所述至少一个第二指令流。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,所述测试指令流包括被配置为测试目标功能的至少一个第一指令流和被配置为完全随机的至少一个第二指令流。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,根据所述随机配置信息获取所述测试指令流,包括:根据所述随机配置信息提供至少一个第一测试模板,并分别用第一选项替换所述至少一个第一测试模板中每个的指令参数,获取所述至少一个第一指令流;以及,根据指令集的指令格式提供至少一个第二测试模板,并分别用第二选项替换所述至少一个第二测试模板中每个的指令参数,获取所述至少一个第二指令流。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,根据所述测试指令流获取所述指令级别随机的测试用例,包括:初始化,以确定所述硅后测试的运行环境;根据所述测试指令流获取至少一个指令级别随机的初始测试用例;校验所述至少一个指令级别随机的初始测试用例,获取对应的至少一个带校验的指令级别随机的测试用例。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,响应于所述测试指令流包括所述至少一个第一指令流和所述至少一个第二指令流,根据所述测试指令流获取至少一个随机的初始测试用例包括:随机地混合所述至少一个第一指令流中每个和所述至少一个第二指令流中每个,获取所述至少一个随机的初始测试用例。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,校验所述至少一个初始测试用例,获取对应的至少一个带校验的指令级别随机的测试用例,包括:获取参考模型;在所述参考模型上分别对所述至少一个初始测试用例中每个进行校验运算,获取对应的参考校验值;将所述参考校验值关联至对应的初始测试用例,得到对应的带校验的指令级别随机的测试用例。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,所述参考校验值为循环冗余校验值。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,在所述芯片上运行所述指令级别随机的测试用例以验证所述芯片,包括:提供N个所述带校验的指令级别随机的测试用例;响应于在所述芯片运行M个线程,在N个所述带校验的指令级别随机的测试用例中随机选择M个,其中,N、M为正整数且N大于等于M;M个所述带校验的指令级别随机的测试用例中每个被配置为分别在所述芯片对应的线程上运行,获取对应的校验结果;将M个所述带校验的指令级别随机的测试用例中每个的校验结果与对应的参考校验值比较以验证所述芯片。
例如,在本公开至少一实施例提供的一种硅后测试的方法中,将M个所述带校验的指令级别随机的测试用例中每个的校验结果与对应的参考校验值比较以验证所述芯片,包括:响应于M个所述带校验的指令级别随机的测试用例中的至少一个对应的校验结果与对应的参考校验值不一致,所述芯片测试不通过;响应于M个所述带校验的指令级别随机的测试用例中的每个对应的校验结果与对应的参考校验值一致,N个所述带校验的指令级别随机的测试用例中除去M个所述带校验的指令级别随机的测试用例的剩余的N-M个所述带校验的指令级别随机的测试用例中每个被随机选择在所述芯片的对应的线程上运行,获取对应的校验结果,其中,N-M>0;
响应于剩余的N-M个所述带校验的指令级别随机的测试用例中的至少一个对应的校验结果与对应的参考校验值不一致,所述芯片测试不通过;
响应于剩余的N-M个所述带校验的指令级别随机的测试用例中的每个对应的校验结果与对应的参考校验值一致,所述芯片测试通过。
本公开至少一实施例提供了一种硅后测试***,包括:配置信息获取模块,被配置为根据待测的芯片获取随机配置信息;指令流获取模块,被配置为根据所述随机配置信息获取测试指令流;测试用例获取模块,被配置为根据所述测试指令流获取指令级别随机的测试用例;测试用例运行模块,被配置为在所述芯片上运行所述指令级别随机的测试用例以验证所述芯片。
本公开至少一实施例提供了一种电子设备,包括:处理器和存储器,其中,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现如上文任一项所述的硅后测试的方法。
本公开至少一实施例提供了一种计算机可读存储介质,其中,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现如上述任一示例中所述的硅后测试的方法。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一些实施例提供的一种硅后测试的方法的流程图;
图2为本公开一些实施例提供的随机配置信息的简化示意图;
图3为本公开一些实施例提供的图1中步骤S1的流程图;
图4A为本公开一些实施例提供的第一测试模板的简示图;
图4B为本公开一些实施例提供的第二测试模板的简示图;
图5为本公开一些实施例提供的图1中步骤S3的流程图;
图6为本公开一些实施例提供的初始测试用例的简示图;
图7为本公开一些实施例提供的图5中步骤S33的流程图;
图8为本公开一些实施例提供的图1中步骤S4的流程图;
图9为本公开一些实施例提供的在芯片上运行指令级别随机的测试用例以验证芯片的流程图;
图10为本公开一些实施例提供的一种硅后测试***的框图;以及
图11为本公开一些实施例提供的一种电子设备的框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另有定义,本公开实施例使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非本公开实施例明确地这样定义。
本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。本公开实施例中使用了流程图用来说明根据本公开实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步。
通常,硅前仿真是使用EDA(Electronic design automation,电子设计自动化)厂商提供的仿真软件在计算机上模拟电路的行为,一般是向电路中的模块或者是顶层灌入激励,通过检查电路中间的某些信号或者是输出信号是否满足预期来判断电路的逻辑功能正确性。
仿真中的激励大致一般有两种产生方式,一种是验证人员写定向测试用例来验证特定的功能,另一种是根据特定的约束来随机产生测试用例。
本公开的发明人发现,通过上述硅前仿真可以验证出绝大部分的逻辑问题,但是硅前仿真也有一些缺陷。例如,仿真是在理想情况下对电路的模拟,但是实际芯片的运行情况要比验证的情况复杂。又例如,对处理器来说,仿真中电路频率相对真实电路的运行频率往往差了大约七个数量级左右,导致很难模拟长时间的电路行为。
本公开的发明人还发现,可以使用FPGA或者EDA厂商提供的硬件来加速RTL(Register Transfer Level,寄存器传输级)的仿真,一实现硅前仿真。但由于FPGA或者EDA厂商的硬件很贵,使得进行大规模测试的成本非常高,而且速度和真实的处理器也依然相差甚远。
对此,本公开至少一实施例提供了一种硅后测试的方法,包括:获取用于待测的芯片的配置信息;根据配置信息获取测试指令流;根据测试指令流获取指令级别随机的测试用例;在芯片上运行指令级别随机的测试用例以验证芯片。
本公开上述实施例的硅后测试方法通过生成和运行指令级别随机的测试用例,使得硅后也能通过大规模的回归测试来撞到尽可能多的场景,从而能够测试到更多场景,测试更加完备,测试的成本较低,克服了上述硅前测试的不足,能够在芯片推向市场前发现到芯片的缺陷。
图1为本公开一些实施例提供的一种硅后测试的方法的流程图。
例如,如图1所示,本公开至少一实施例提供的硅后测试的方法包括步骤S1至步骤S4。
步骤S1、根据待测的芯片,获取随机配置信息。
步骤S2、根据随机配置信息获取测试指令流。
步骤S3、根据测试指令流获取指令级别随机的测试用例。
步骤S4、在芯片上运行指令级别随机的测试用例以验证芯片。
由此,本公开上述实施例的硅后测试的方法通过生成和运行指令级别随机的测试用例,使得硅后也能通过大规模的回归测试来撞到尽可能多的场景,从而能够测试到更多场景,测试更加完备,测试的成本较低,能够在芯片(例如处理器)推向市场前发现到芯片的缺陷。
本公开的发明人发现,虽然一些技术方案涉及了例如处理器的硅后验证,但其一般只是为了让处理能正确运行起来,跑进操作***(俗称“点亮”),之后会运行一些基准测试,然而这些步骤都只是在运行应用程序,主要目的也并不是为了找到处理器的缺陷,同时应用程序是一些有特定目的的代码片段,也只能验证到一些特定的场景,而且这些应用程序运行是否正确只能是在程序里加入特定的数据自校验,并没有通用的检查运行结果的方法。
在一些示例中,待测的芯片包括处理器。例如,处理器在设计的过程中一般允许有多种配置,这些配置指定处理器的工作状态,也包括对测试用例的要求。
在一些示例中,随机配置信息为随机提供的配置信息,该随机配置信息包括以下的一种或多种:随机提供的至少一个第一类配置、随机提供的至少一个第二类配置以及随机提供的至少一个测试用例配置。
在一些示例中,第一类配置是指不影响指令执行结果的配置,第二类配置是指影响指令执行结果的配置。
在一些示例中,测试用例配置是指测试用例本身的限制的配置,例如生成的测试用例集合中的测试用例的数目、每个测试用例中指令的数量、每个测试用例中某一类指令的比例等,此处不再穷举和赘述。
由此,本公开的实施例可以随机提供一组配置信息,对于这组配置信息,既可以随机一类,也可以随机地多类,本公开的实施例对此不作限制。而且在随机地提供越多类配置的情况下,本公开的实施例的测试方法能够测试到更多场景,测试更加完备。
图2为本公开一些实施例提供的随机配置信息的简化示意图。
例如,如图2所示,第一类配置包括EnablePrefetch,EnablePrefetch指示是否打开指令预取。是否打开指令预取对指令的执行效率有影响,但是不会影响指令的执行结果,因此EnablePrefetch属于不影响指令执行结果的第一类配置。
例如,如图2所示,第二类配置包括EnableEncryption,EnableEncryption指示是否允许加密指令。由于在不允许执行加密指令的处理器上运行含有加密指令的测试用例会导致处理器跑到异常状态,因此EnableEncryption属于影响指令执行结果的第二类配置。
例如,如图2所示,测试用例配置包括TestcaseNum,TestcaseNum表示要生成的测试用例的个数,因此TestcaseNum属于对测试用例本身进行限制的配置。
需要说明的是,本公开的实施例的随机配置信息的各类配置并不仅限于上述示例,还可以是其他合理的配置。例如,第一类配置可以包括Enablex2Apic,Enablex2Apic表示打开x2apic模式。又例如,第二类配置可以包括EnableSVM,EnableSVM表示打开后才能发出SVM相关指令。再例如,测试用例配置可以包括EncryptionRatio,EncryptionRatio表示控制加密指令的比例。本公开的实施例对此不作限制,并且也不做穷举和赘述。
图3为本公开一些实施例提供的图1中步骤S1的流程图。
例如,如图3所示,对于步骤S1,根据待测的芯片获取随机配置信息包括步骤S11和步骤S12。
步骤S11、根据芯片的架构和微架构,获取多个目标配置。
步骤S12、从配置库至少部分随机地获取随机配置信息的至少一个第一类配置和至少一个第二类配置,其中,配置库包括多个目标配置中每个目标配置的配置项和配置值。
由此,本公开的实施例在配置库中随机地选择第一类配置和第二类配置,使得硅后测试的方法能够测试到更多场景,测试更加完备。
对于步骤S11,在一些示例中,在设计例如处理器时给出设计规范,并根据该设计规范提供所有的寄存器信息,由此可以根据处理器的架构和微架构找到所有可能的目标配置。
对于步骤S12,在一些示例中,将所有的目标配置的配置项和配置值放入配置库中,并根据测试的需求在配置库中完全随机或根据约束随机,以获取随机配置信息的第一类配置和第二类配置。例如,在配置库中进行随机可以是两个方面的随机,例如一方面是配置值的随机,另一方面是不同配置项的配置的随机配对。此仅仅为示例性的,并不为本公开的限制。
例如,对于步骤S12,从配置库至少部分随机地获取随机配置信息的第一类配置和第二类配置包括:完全随机地或者根据约束随机地获取配置库中的目标配置的配置值,和/或,完全随机地或者根据约束随机地将配置库中具有不同配置项的目标配置随机地配对,以获取随机配置信息的第一类配置和第二类配置。如此,本公开的实施例的硅后测试的方法能够测试到更多场景,能够满足测试需求,测试更加完备。
在一些示例中,测试指令流是指硅后测试的指令流,简称测试指令流。测试指令流包括至少一个第一指令流和/或至少一个第二指令流,第一指令流被配置为测试目标功能(例如特定功能),第二指令流被配置为完全随机。
需要说明的是,本公开的实施例根据随机配置信息可以生成第一指令流和第二指令流中的任一种。例如,在只生成第一指令流的情况下,本公开的实施例的硅后测试的方法测试效率较高,但仅覆盖到一部分的指令,覆盖性稍差。又例如,在只生成第二指令流的情况下,本公开的实施例硅后测试的方法可以覆盖所有指令,但测试效率较低。另外,本公开的实施例根据随机配置信息可以生成第一指令流和第二指令流这两种,如此,本公开的实施例的硅后测试的方法不仅测试效率较好,而且覆盖性也较好,使得测试比较完备。
在一些示例中,测试特定功能的第一指令流来自于测试人员根据待测芯片(例如待测处理器)的特性给出的测试模板,随机的第二指令流来自指令集提供的指令格式。
图4A为本公开一些实施例提供的第一测试模板的简示图。图4B为本公开一些实施例提供的第二测试模板的简示图。
例如,如图4A所示,第一测试模板A1对应的功能是:将一个内存地址放到第一个寄存器中;将一个数字放入第二个寄存器中;将上述数字写入上述内存地址中;从上述内存地址中读出值放入第三个寄存器中,比较第二个寄存器和第三个寄存器的值;如果不相等,则跳到测试失败程序。
例如,如图4B所示,第二测试模板A2是一个纯随机的测试模板。
例如,对于步骤S2,在根据随机配置信息获取的测试指令流包括第一指令流的情况下,步骤S2包括:根据随机配置信息提供至少一个第一测试模板,并分别用第一选项替换每个第一测试模板的指令参数,获取对应的第一指令流。
由此,本公开的实施例可根据待测芯片的特性给出测试模板,并依据各指令参数的特殊含义用对应的选项进行替换,以形成第一指令流,从而可以验证特定场景的代码片段,测试的效率较高。
又例如,对于步骤S2,在根据随机配置信息获取的测试指令流包括第二指令流的情况下,步骤S2包括:根据指令集的指令格式提供至少一个第二测试模板,并分别用第二选项替换每个第二测试模板的指令参数,获取对应的第二指令流。
由此,本公开的实施可根据指令集的指令格式提供完全随机的测试模板,并依据各指令参数的特殊含义用对应的选项进行替换,以形成第二指令流,从而可以测试到更多场景,测试更加完备。
例如,在图4A的示例中,将第一测试模板A1的格式(例如指令参数)替换成具体的内容(例如选项),以得到对应的第一指令流。例如,在图4B的示例中,将第二测试模板A2的格式(例如指令参数)替换成具体的内容(例如选项),以得到对应的第二指令流。例如,reg_1、reg_2、reg_3替换成3个不相同的寄存器,reg替换成随机的一个寄存器,mem替换成一个合法的内存地址,imm替换成随机数。此仅仅为示例性的,不为本公开的限制。
图5为本公开一些实施例提供的图1中步骤S3的流程图。图6为本公开一些实施例提供的初始测试用例的简示图。
例如,如图5所示,对于步骤S3,根据测试指令流获取指令级别随机的测试用例包括步骤S31至步骤S33。
步骤S31、初始化,以确定硅后测试的运行环境。
步骤S32、根据测试指令流获取至少一个指令级别随机的初始测试用例。
步骤S33、校验至少一个指令级别随机的初始测试用例,获取对应的至少一个带校验的指令级别随机的测试用例。
由此,本公开的实施例的测试用例带有自我校验,使得芯片能在极快的运行速度的情况下迅速发现可能的问题,实现了科学且高效的硅后测试。
例如,对于步骤S31,在一些示例中,初始化可以使每次运行测试用例的环境一致,以使测试结果也一致。本公开的实施例对初始化的方法不作限制,例如通过汇编语言写寄存器实现初始化,此处不再赘述。
例如,对于步骤S31,在一些示例中,将测试指令流包括的多个指令流随机地混合,以生成测试用例。例如,测试指令流包括第一指令流和第二指令流时,随机地混合第一指令流和第二指令流,生成指令级别随机的初始测试用例。由此,本公开的实施例通过混合测试特定功能的第一指令流和随机的第二指令流来生成指令级别随机的初始测试用例,不仅测试效率较好,而且覆盖性也较好。
例如,在图6的示例中,指令级别随机的初始测试用例B通过图4A示例对应的第一指令流和图4B示例对应的第二指令流混合而成。此仅仅为示例性的,并不为本公开的限制。
需要说明的是,上述的随机地混合第一指令流和第二指令流可以是混合一个第一指令流和一个第二指令流,如此,能够获得更多随机的测试用例,可以测试到更多场景,测试更加完备,而且实际操作更加简单。当然,也可以是混合一个第一指令流和多个第二指令流,还可以是混合多个第一指令流和一个第二指令流,或者是混合多个第一指令流和多个第二指令流,本公开的实施例对此不作限制,可根据实际情况进行自由调整。
图7为本公开一些实施例提供的图5中步骤S33的流程图。
例如,如图7所示,对于步骤S33,校验至少一个初始测试用例,获取对应的至少一个带校验的指令级别随机的测试用例包括步骤S331至步骤S333。
步骤S331、获取参考模型。
步骤S332、在参考模型上分别对至少一个初始测试用例中每个进行校验运算,获取对应的参考校验值。
步骤S333、将参考校验值关联至对应的初始测试用例,得到对应的带校验的指令级别随机的测试用例。
由此,本公开的实施例在测试过程中加入了针对寄存器的实时校验,生成带校验的指令级别随机的测试用例,因此无需挨个比较寄存器的值,避免耗时太多而导致效率低下。本公开的实施例直接通过带校验的指令级别随机的测试用例即可获知一段指令流执行完成后寄存器应有的校验值(即参考校验值),用以与测试用例在待测芯片上运行之后寄存器得到的校验结果进行比对,效率相对较高,从而实现了科学且高效的硅后测试。
例如,对于步骤S331,在一些示例中,参考模型是指市面能够获取到的具有相同指令集合的芯片(例如AMD或Intel的处理器),因此该参考模型在投入市面之前已经过充分验证,避免了重复劳动;在另一些示例中,参考模型也可以是其他已有的具有相同指令集合的芯片等。
例如,对于步骤S332,在一些示例中,参考校验值可以为循环冗余校验值,即该参考校验值为CRC(Cyclic redundancy check)参考校验值,由此,本公开的实施例可采用CRC校验生成带校验的指令级别随机的测试用例。需要说明的是,本公开的实施例不仅限于CRC校验,还可以采用其他校验方式,例如奇偶校验、纵向冗余校验(Longitudinal RedundancyCheck,LRC)、校验和(checksum)等,本公开的实施例对此不作限制,只要通过校验获取到可关联至初始测试用例的参考校验值即可,此处不再赘述。
在一些示例中,在采用CRC校验生成带校验的指令级别随机的测试用例时,步骤S33包括步骤一至步骤三,如下所示。
步骤一:获取参考模型。
步骤二:在参考模型上分别对至少一个初始测试用例中每个初始测试用例进行CRC校验运算,获取对应的CRC参考校验值。
步骤三:将CRC参考校验值写回至对应的初始测试用例,分别得到对应的带CRC校验的指令级别随机的测试用例。
由此,本公开的实施例通过在测试过程中加入了针对寄存器的实时CRC校验,能够对任何代码片段进行结果检测,生成带CRC校验的指令级别随机的测试用例,效率相对较高,检错能力较强,可靠性高。
需要说明的是,对于步骤S333,参考校验值关联至对应的初始测试用例可以是以数据帧的形式添加至原数据帧并得到新的数据帧,例如,原数据帧变为101100110000,使用模2除法除以除数11001,得到余数0100即为CRC校验码,则添加之后的数据帧为101100110100。但是本公开的实施例不仅限于此,其可根据实际采用的校验方法进行相应的调整,只要能够直接通过带校验的指令级别随机的测试用例获知一段指令流执行完成后寄存器应有的校验值,均在本公开的保护范围内,此处不再赘述。
图8为本公开一些实施例提供的图1中步骤S4的流程图。
例如,如图8所示,对于步骤S4,在芯片上运行指令级别随机的测试用例以验证芯片包括步骤S41至步骤S44。
步骤S41、调度N个带校验的指令级别随机的测试用例。
步骤S42、响应于在芯片运行M个线程,在N个带校验的指令级别随机的测试用例中随机选择M个,其中,N、M为正整数且N大于等于M。
步骤S43、M个带校验的指令级别随机的测试用例中每个被配置为分别在芯片对应的线程上运行,获取对应的校验结果。
步骤S44、将M个带校验的指令级别随机的测试用例中每个的校验结果与对应的参考校验值比较,以验证芯片。
由此,本公开的实施例通过将带校验的指令级别随机的测试用例中的参考校验值与在待测芯片上运行测试用例之后得到的校验结果进行比对,检查指令流在待测芯片上运行的结果是否正确,以验证待测芯片。例如若待测芯片上运行得到的校验结果与在参考模型上运行得到的参考校验值一致,则待测的芯片测试通过,否则,待测的芯片测试不通过。
图9为本公开一些实施例提供的在芯片上运行指令级别随机的测试用例以验证芯片的流程图。
例如,如图9所示,在芯片上运行指令级别随机的测试用例以验证芯片包括步骤T41至步骤T47。
步骤T41、调度N个带校验的指令级别随机的测试用例。
步骤T42、在N个带校验的指令级别随机的测试用例中随机选择,例如,随机选择M个带校验的指令级别随机的测试用例,N、M为正整数且N大于等于M。
步骤T43、M个带校验的指令级别随机的测试用例中每个被配置为分别在芯片的M个线程中对应的线程上运行,获取对应的校验结果。
步骤T44、将M个带校验的指令级别随机的测试用例中每个的校验结果与对应的参考校验值比较。
步骤T45、判断校验结果与对应的校验值是否一致:若否,则直接转至步骤T47,测试结束,即在M个带校验的指令级别随机的测试用例中的至少一个对应的校验结果与对应的校验值不一致时,芯片测试结束且认定芯片测试不通过;若是,即在M个带校验的指令级别随机的测试用例中的每个对应的校验结果与对应的参考校验值一致时,则继续执行步骤T46。
步骤T46、判断芯片上运行带校验的指令级别随机的测试用例是否达到N次,即判断被调度的N个带校验的指令级别随机的测试用例是否全部完成运行和验证:若否,则转至步骤T42,在剩余的N-M个(N-M>0)带校验的指令级别随机的测试用例中重新随机选择一个并在对应的线程上运行,获取对应的校验结果,重复执行上述步骤T43~步骤T46,直至测试结束;若是,则转至步骤T47,测试结束。
由此,本公开的实施例的硅后测试方法能够根据芯片的线程来选择带校验的指令级别随机的测试用例,既能有效保质的测试芯片,还能保证一定的测试压力,提高执行速度。
在一些示例中,当剩余的N-M个带校验的指令级别随机的测试用例中的至少一个对应的校验结果与对应的参考校验值不一致时,芯片测试不通过,此时需要寻找错误的原因。当剩余的N-M个带校验的指令级别随机的测试用例中的每个对应的校验结果与对应的参考校验值一致时,芯片测试通过。
例如,对于步骤T41,在一些示例中,通过使用C语言来调度多个带校验的指令级别随机的测试用例。此仅仅为示例性的,并不为本公开的限制。
例如,对于步骤T46,在一些示例中,在M个带校验的指令级别随机的测试用例在对应的线程运行完成之后,在每运行完一个测试用例,就随机选择一个新的测试用例来补上空缺,直到运行完成N个测试用例。如此,本公开的实施例的硅后测试方法能够保证测试压力。
图10为本公开一些实施例提供的一种硅后测试***的框图。
例如,如图10所示,本公开至少一实施例提供的硅后测试***100包括配置信息获取模块101、指令流获取模块102、测试用例获取模块103和测试用例运行模块104。配置信息获取模块101被配置为根据待测的芯片,获取随机配置信息。指令流获取模块102被配置为根据随机配置信息获取测试指令流。测试用例获取模块103被配置为根据测试指令流获取指令级别随机的测试用例。测试用例运行模块104被配置为在芯片上运行指令级别随机的测试用例以验证芯片。
需要注意的是,在本公开的实施例中,该硅后测试***100可以包括更多或更少的模块,并且各个模块之间的连接关系不受限制,可以根据实际需求而定。各个模块的具体构成方式不受限制。关于硅后测试***100的技术效果可以参考本公开上述实施例中提供的硅后测试的方法的技术效果,这里不再赘述。
以上实施例中的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。
需要说明的是,尽管以上在描述硅后测试***时将其划分为用于分别执行相应处理的模块,然而,本领域技术人员清楚的是,各模块执行的处理也可以在硅后测试***不进行任何具体模块划分或者各模块之间并无明确划界的情况下执行。
图11为本公开至少一实施例提供的一种电子设备的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图11示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
例如,如图11所示,在一些示例中,电子设备200包括处理装置(例如中央处理器、图形处理器等)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储装置208加载到随机访问存储器(RAM)203中的程序而执行如上所述的硅后测试。在RAM 203中,还存储有计算机***操作所需的各种程序和数据。处理装置201、ROM202以及RAM203通过总线204被此相连。输入/输出(I/O)接口205也连接至总线204。
例如,以下部件可以连接至I/O接口205:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置206;包括诸如液晶显示器(LCD)、扬声器、振动器等的输出装置207;包括例如磁带、硬盘等的存储装置208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信装置209。通信装置209可以允许电子设备200与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口205。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储装置209。虽然图11示出了包括各种装置的电子设备200,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
例如,该电子设备200还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置209可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信***(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
例如,电子设备可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪等任何设备,也可以为任意的电子设备及硬件的组合,本公开的实施例对此不作限制。
例如,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置209从网络上被下载和安装,或者从存储装置208被安装,或者从ROM 202被安装。在该计算机程序被处理装置201执行时,执行本公开实施例的方法中限定的上述硅后测试功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperTextTransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,adhoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
需要说明的是,本公开的实施例中,电子设备200的具体功能和技术效果可以参考上文中关于硅后测试的方法的描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (17)

1.一种硅后测试的方法,包括:
根据待测的芯片,获取随机配置信息;
根据所述随机配置信息获取测试指令流;
根据所述测试指令流获取指令级别随机的测试用例;
在所述芯片上运行所述指令级别随机的测试用例以验证所述芯片。
2.如权利要求1所述的硅后测试的方法,其中,
所述随机配置信息包括以下的一种或多种:
被配置为不影响指令执行结果的第一类配置;
被配置为影响指令执行结果的第二类配置;
测试用例配置。
3.如权利要求2所述的硅后测试的方法,其中,根据待测的芯片,获取用于随机配置信息,包括:
根据所述芯片的架构和微架构,获取多个目标配置;
从配置库至少部分随机地获取所述随机配置信息的至少一个所述第一类配置和至少一个所述第二类配置,其中,所述配置库包括所述多个目标配置中每个目标配置的配置项和配置值。
4.如权利要求3所述的硅后测试的方法,其中,从所述配置库至少部分随机地获取所述随机配置信息的至少一个所述第一类配置和至少一个所述第二类配置,包括:
随机地获取所述配置库中的所述目标配置的配置值,和/或,随机地将所述配置库中具有不同配置项的所述目标配置随机地配对,以获取所述随机配置信息的至少一个所述第一类配置和至少一个所述第二类配置。
5.如权利要求1所述的硅后测试的方法,其中,
所述测试指令流包括被配置为测试目标功能的至少一个第一指令流;
或者,所述测试指令流包括被配置为完全随机的至少一个第二指令流。
6.如权利要求5所述的硅后测试的方法,其中,根据所述随机配置信息获取所述测试指令流,包括:
根据所述随机配置信息提供至少一个第一测试模板,并分别用第一选项替换所述至少一个第一测试模板中每个的指令参数,获取所述至少一个第一指令流;或者,
根据指令集的指令格式提供至少一个第二测试模板,并分别用第二选项替换所述至少一个第二测试模板中每个的指令参数,获取所述至少一个第二指令流。
7.如权利要求1所述的硅后测试的方法,其中,
所述测试指令流包括被配置为测试目标功能的至少一个第一指令流和被配置为完全随机的至少一个第二指令流。
8.如权利要求7所述的硅后测试的方法,其中,根据所述随机配置信息获取所述测试指令流,包括:
根据所述随机配置信息提供至少一个第一测试模板,并分别用第一选项替换所述至少一个第一测试模板中每个的指令参数,获取所述至少一个第一指令流;以及,
根据指令集的指令格式提供至少一个第二测试模板,并分别用第二选项替换所述至少一个第二测试模板中每个的指令参数,获取所述至少一个第二指令流。
9.如权利要求5~8任一所述的硅后测试的方法,其中,根据所述测试指令流获取所述指令级别随机的测试用例,包括:
初始化,以确定所述硅后测试的运行环境;
根据所述测试指令流获取至少一个指令级别随机的初始测试用例;
校验所述至少一个指令级别随机的初始测试用例,获取对应的至少一个带校验的指令级别随机的测试用例。
10.如权利要求9所述的硅后测试的方法,其中,响应于所述测试指令流包括所述至少一个第一指令流和所述至少一个第二指令流,根据所述测试指令流获取至少一个随机的初始测试用例包括:
随机地混合所述至少一个第一指令流中每个和所述至少一个第二指令流中每个,获取所述至少一个随机的初始测试用例。
11.如权利要求9所述的硅后测试的方法,其中,校验所述至少一个初始测试用例,获取对应的至少一个带校验的指令级别随机的测试用例,包括:
获取参考模型;
在所述参考模型上分别对所述至少一个初始测试用例中每个进行校验运算,获取对应的参考校验值;
将所述参考校验值关联至对应的初始测试用例,得到对应的带校验的指令级别随机的测试用例。
12.如权利要求11所述的硅后测试的方法,其中,
所述参考校验值为循环冗余校验值。
13.如权利要求11所述的硅后测试的方法,其中,在所述芯片上运行所述指令级别随机的测试用例以验证所述芯片,包括:
提供N个所述带校验的指令级别随机的测试用例;
响应于在所述芯片运行M个线程,在N个所述带校验的指令级别随机的测试用例中随机选择M个,其中,N、M为正整数且N大于等于M;
M个所述带校验的指令级别随机的测试用例中每个被配置为分别在所述芯片对应的线程上运行,获取对应的校验结果;
将M个所述带校验的指令级别随机的测试用例中每个的校验结果与对应的参考校验值比较以验证所述芯片。
14.如权利要求13所述的硅后测试的方法,其中,将M个所述带校验的指令级别随机的测试用例中每个的校验结果与对应的参考校验值比较以验证所述芯片,包括:
响应于M个所述带校验的指令级别随机的测试用例中的至少一个对应的校验结果与对应的参考校验值不一致,所述芯片测试不通过;
响应于M个所述带校验的指令级别随机的测试用例中的每个对应的校验结果与对应的参考校验值一致,N个所述带校验的指令级别随机的测试用例中除去M个所述带校验的指令级别随机的测试用例的剩余的N-M个所述带校验的指令级别随机的测试用例中每个被随机选择在所述芯片的对应的线程上运行,获取对应的校验结果,其中,N-M>0;
响应于剩余的N-M个所述带校验的指令级别随机的测试用例中的至少一个对应的校验结果与对应的参考校验值不一致,所述芯片测试不通过;
响应于剩余的N-M个所述带校验的指令级别随机的测试用例中的每个对应的校验结果与对应的参考校验值一致,所述芯片测试通过。
15.一种硅后测试***,包括:
配置信息获取模块,被配置为根据待测的芯片获取随机配置信息;
指令流获取模块,被配置为根据所述随机配置信息获取测试指令流;
测试用例获取模块,被配置为根据所述测试指令流获取指令级别随机的测试用例;
测试用例运行模块,被配置为在所述芯片上运行所述指令级别随机的测试用例以验证所述芯片。
16.一种电子设备,包括:
处理器和存储器,
其中,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1至14中任一项所述的硅后测试的方法。
17.一种计算机可读存储介质,其中,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至14中任一项所述的硅后测试的方法。
CN202111362448.4A 2021-11-17 2021-11-17 硅后测试的方法、***、设备以及存储介质 Pending CN114090355A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111362448.4A CN114090355A (zh) 2021-11-17 2021-11-17 硅后测试的方法、***、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111362448.4A CN114090355A (zh) 2021-11-17 2021-11-17 硅后测试的方法、***、设备以及存储介质

Publications (1)

Publication Number Publication Date
CN114090355A true CN114090355A (zh) 2022-02-25

Family

ID=80301350

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111362448.4A Pending CN114090355A (zh) 2021-11-17 2021-11-17 硅后测试的方法、***、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN114090355A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117724984A (zh) * 2024-02-07 2024-03-19 深圳星云智联科技有限公司 用于测试用例实例代码生成的方法、计算机设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117724984A (zh) * 2024-02-07 2024-03-19 深圳星云智联科技有限公司 用于测试用例实例代码生成的方法、计算机设备及介质
CN117724984B (zh) * 2024-02-07 2024-05-07 深圳星云智联科技有限公司 用于测试用例实例代码生成的方法、计算机设备及介质

Similar Documents

Publication Publication Date Title
CN109828903B (zh) 自动化测试方法、装置、计算机装置及存储介质
US10628294B2 (en) Mock services for software infrastructures
US10209306B2 (en) Methods and systems for generating functional test patterns for manufacture test
US20160044520A1 (en) Mobile automation test platform
US20090158257A1 (en) Systems and Methods for Graphics Hardware Design Debugging and Verification
EP3602306B1 (en) Automated device test triaging system and techniques
JP2010537156A (ja) 外部インタフェースの機能性を検証するためのセルフテスト機構を備えた集積回路
US9858371B1 (en) Method and system for generating post-silicon validation tests
KR20150097624A (ko) 데이터-의존 회로 경로 응답들을 이용하는 고유하고 복제불가한 플랫폼 식별자들
CN113342669A (zh) 一种缩短芯片代码覆盖率收敛时间的验证方法及装置
CN114090355A (zh) 硅后测试的方法、***、设备以及存储介质
CN105988925A (zh) 一种应用程序启动耗时的测试方法、装置及***
US10795806B2 (en) Devices and methods for generating a stream of health-related data
CN110134598B (zh) 一种批量处理方法、装置及***
CN114548027A (zh) 在验证***中追踪信号的方法、电子设备及存储介质
US11080444B1 (en) Concurrent fault co-simulator
CN117435483A (zh) 基于Formal工具的仿真验证激励生成方法、装置、介质及终端
CN107678967B (zh) 单元测试覆盖率生成方法、装置、可读存储介质及设备
US20150039950A1 (en) Apparatus for capturing results of memory testing
CN114064505A (zh) 用于译码单元的测试方法、***、设备以及存储介质
CN113535499B (zh) 一种支持多核心共享访问的多类型并存访存流验证方法
US9823305B1 (en) Method and system for generating post-silicon validation tests
CN112256572A (zh) 随机测试用例生成方法与装置以及电子设备和存储介质
CN108874696B (zh) 多权限安全存储设备的自动测试方法、装置及电子设备
CN106844186A (zh) 应用的脱机测试方法及终端设备

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