CN112231164B - 处理器验证方法、设备及可读存储介质 - Google Patents
处理器验证方法、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112231164B CN112231164B CN202011446163.4A CN202011446163A CN112231164B CN 112231164 B CN112231164 B CN 112231164B CN 202011446163 A CN202011446163 A CN 202011446163A CN 112231164 B CN112231164 B CN 112231164B
- Authority
- CN
- China
- Prior art keywords
- test
- coverage
- instruction
- target
- round
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2247—Verification or detection of system hardware configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection 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/2236—Detection 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
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)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种处理器验证方法、设备及可读存储介质,所述处理器验证方法包括:获取测试用例对应的配置信息,并生成所述测试用例对应的测试覆盖目标信息,进而将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果,进而基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,以进行指令发包,获得目标指令流,进而基于所述目标指令流进行处理器验证,获得目标验证结果。本申请解决了处理器验证时测试效率低的技术问题。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种处理器验证方法、设备及可读存储介质。
背景技术
随着金融科技,尤其是互联网科技金融的不断发展,越来越多的技术(如分布式、区块链Blockchain、人工智能等)应用在金融领域,但金融业也对技术提出了更高的要求,如对金融业对应待办事项的分发也有更高的要求。
随着计算机软件的不断发展,计算机软件的应用领域也越来越广泛,目前,在开发处理器时,通常需要对处理器进行验证,例如,RISC-V处理器验证等,目前,在进行RISC-V处理器验证时,通常基于测试用例的配置信息,生成特定数量的指令以进行仿真,并在仿真完成后,分析覆盖率数据后得出该用例的测试效果,以调整测试用例的配置信息直至达到覆盖的目标,其中,测试过程为多轮迭代过程,但是,由于待测的功能点纷繁复杂而且比较零散,某一个或某一些功能点未覆盖到是高概率发生的事件,进而将导致处理器验证时的测试过程迭代次数过高,进而导致处理器验证时的测试效率较低。
发明内容
本申请的主要目的在于提供一种处理器验证方法、设备及可读存储介质,旨在解决现有技术中处理器验证时测试效率低的技术问题。
为实现上述目的,本申请提供一种处理器验证方法,所述处理器验证方法应用于处理器验证设备,所述处理器验证方法包括:
获取测试用例对应的配置信息,并生成所述测试用例对应的测试覆盖目标信息;
将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果;
基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,以进行指令发包,获得目标指令流;
基于所述目标指令流进行处理器验证,获得目标验证结果。
本申请还提供一种处理器验证装置,所述处理器验证装置为虚拟装置,且所述处理器验证装置应用于处理器验证设备,所述处理器验证装置包括:
生成模块,用于获取测试用例对应的配置信息,并生成所述测试用例对应的测试覆盖目标信息;
覆盖率分析模块,用于将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果;
更新模块,用于基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,以进行指令发包,获得目标指令流;
验证模块,用于基于所述目标指令流进行处理器验证,获得目标验证结果。
本申请还提供一种处理器验证设备,所述处理器验证设备为实体设备,所述处理器验证设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述处理器验证方法的程序,所述处理器验证方法的程序被处理器执行时可实现如上述的处理器验证方法的步骤。
本申请还提供一种可读存储介质,所述可读存储介质上存储有实现处理器验证方法的程序,所述处理器验证方法的程序被处理器执行时实现如上述的处理器验证方法的步骤。
本申请提供了一种处理器验证方法、设备和可读存储介质,相比于现有技术采用的基于测试用例的配置信息,生成特定数量的指令以进行仿真,并在仿真完成后,分析覆盖率数据后得出该用例的测试效果,以调整测试用例的配置信息直至达到覆盖的目标的技术手段,本申请在进行仿真之前的发包过程中,首先获取测试用例对应的配置信息,并基于所述测试用例,生成测试覆盖目标信息,进而将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果,实现了在仿真之前进行覆盖率分析的目的,进而若未达到覆盖目标,则基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,也即,将已经覆盖的目标从测试覆盖目标信息进行删除,且将已经覆盖的目标对应的约束范围在指令约束中进行删除,以重新生成测试指令流进行覆盖率分析,直至达到覆盖目标,进而实现目标指令流的发包,进而基于目标指令流,进行处理器验证,即可实现一轮迭代,完成处理器验证的目的,也即,进行一次仿真,即可完成处理器的验证,相比于现有技术中基于多轮迭代仿真进行处理器验证的方法,减少了进行处理器验证时的处理过程的迭代次数,进而克服了现有技术中由于待测的功能点纷繁复杂而且比较零散,某一个或某一些功能点未覆盖到是高概率发生的事件,进而将导致处理器验证时的测试过程迭代次数过高,进而导致处理器验证时的测试效率较低的技术缺陷,提高了处理器验证时的测试效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请处理器验证方法第一实施例的流程示意图;
图2为本申请处理器验证方法中进行指令发包的流程示意图;
图3为本申请处理器验证方法第二实施例的流程示意图;
图4为本申请实施例方案涉及的硬件运行环境的设备结构示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例提供一种处理器验证方法,在本申请处理器验证方法的第一实施例中,参照图1,所述处理器验证方法包括:
步骤S10,获取测试用例对应的配置信息,并生成所述测试用例对应的测试覆盖目标信息;
在本实施例中,需要说明的是,所述处理器验证方法用于进行RISC-V处理器核验证,所述测试用例为RISC-V处理器核验证编制的一组测试输入、执行条件和预期结果,用于测试RISC-V处理器的功能,所述配置信息为测试用例的用例控制信息,用于控制测试用例中的参数,其中,所述配置信息包括测试用例要发送的指令数量、要发送的指令类型和测试模式等。
获取测试用例对应的配置信息,并生成所述测试用例对应的测试覆盖目标信息,具体地,获取所述测试用例要发送的指令数量、要发送的指令类型和测试模式,并将所述指令数量、所述指令类型和所述初始模式共同作为所述配置信息,进而获取所述测试用例中的预期结果,并将所述预期结果中的各目标功能点作为所述测试覆盖目标信息,其中,所述目标功能点为所述测试用例需要验证的RISC-V处理器的功能点。
步骤S20,将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果;
在本实施例中,需要说明的是,所述测试覆盖目标信息为各测试覆盖目标的集合,其中,所述测试覆盖目标为所述目标功能点,所述指令约束为约束形式的配置信息,其中,所述约束为一种结构化查询语言,所述覆盖率分析的过程为分析所述测试指令流可覆盖的目标功能点的数量的过程,所述覆盖率分析结果为测试指令流可覆盖的目标功能点在测试用例对应的所有目标功能点中的占比。
将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果,具体地,通过预设配置信息解析器,对所述配置信息进行解析,以将所述配置信息转化为约束形式,获得指令约束,进而通过预设约束求解器,将所述指令约束解析为具体的约束范围集合,其中,所述约束范围集合为所述测试指令流中的各参数的取值范围的集合,进而通过指令生成器,生成符合所述约束取值范围的测试指令流,进而基于所述测试指令流中各测试指令对应的编码信息,确定各所述测试指令对应的实现功能点,进而计算各所述实现功能点在各所述目标功能点中的占比,获得所述覆盖率分析结果。
其中,所述基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果的步骤包括:
步骤S21,对所述指令约束进行解析,获得约束范围集合;
在本实施例中,对所述指令约束进行解析,获得约束范围集合,具体地,通过预设约束求解器,对所述指令约束进行解析,以将所述指令约束转化为具体的参数取值范围集合,获得所述约束范围集合,其中,需要说明的是,所述约束范围集合与所述指令约束所反应的指令类型、指令数量和测试模式等用例控制信息相同,其区别点在于,所述指令约束为约束形式的用例控制信息,所述约束范围集合为数学上的取值范围集合形式的用例控制信息。
步骤S22,基于所述约束范围集合,生成所述测试指令流;
在本实施例中,基于所述约束范围集合,生成所述测试指令流,具体地,通过预设指令生成器,在所述约束范围集合的各参数取值范围中选取测试指令参数,进而基于各所述测试指令参数,生成所述测试指令流,例如,假设所述指令参数包括第一类型参数、第二类型参数和第三类型参数,其中,所述第一类型参数对应的约束范围为(10,50),所述第二类型参数对应的约束范围为(a,b,c,d),其中,a为大专学历的编码,b为本科学历的编码,c为硕士学习的编码,d为博士学历的编码,所述第三类型参数对应的约束范围为(100,200),在各所述约束范围下,生成所述测试指令流,其中,所述测试指令流中包括各约束范围下的测试指令参数。
步骤S23,获取所述测试指令流的标识信息,并基于所述标识信息和所述测试覆盖目标信息,对所述测试指令流进行覆盖率分析,获得所述覆盖率分析结果。
在本实施例中,需要说明的是,所述测试覆盖目标信息包括各指令类型和各指令类型对应的指令数量,所述测试指令流至少包括一测试指令,所述标识信息至少包括一测试指令对应的指令标识,其中,所述指令标识为指令的类型标识,用于表明测试指令的指令类型。
获取所述测试指令流的标识信息,并基于所述标识信息和所述测试覆盖目标信息,对所述测试指令流进行覆盖率分析,获得所述覆盖率分析结果,具体地,获取各所述测试指令对应的指令标识,并基于各所述指令标识,确定各所述测试指令对应的目标指令类型,进而统计属于各所述目标指令类型的测试指令的目标指令数量,进而计算每一属于相同的指令类型的目标指令数量与所述测试用例对应的指令数量的比值,获得各所述指令类型对应的指令数量覆盖率,进而将各所述指令数量覆盖率作为所述覆盖率分析结果。
其中,所述测试指令流至少包括一测试指令,所述标识信息至少包括一所述测试指令对应的指令标识,所述测试覆盖目标信息至少包括一测试覆盖目标,
所述基于所述标识信息和所述测试覆盖目标信息,对所述测试指令流进行覆盖率分析,获得所述覆盖率分析结果的步骤包括:
步骤S231,基于各所述指令标识,分别确定各所述测试指令对应的覆盖目标;
在本实施例中,需要说明的是,所述指令标识为所述测试指令可实现的目标功能点的标。
基于各所述指令标识,分别确定各所述测试指令对应的覆盖目标,具体地,基于各所述指令标识,确定各所述测试指令对应的可实现目标功能点,并分别将各所述可实现目标功能点作为覆盖目标,其中,所述覆盖目标为所述测试指令流可实现的目标功能点。
步骤S232,计算各所述覆盖目标在各所述测试覆盖目标中的占比,获得所述覆盖率分析结果。
在本实施例中,计算各所述覆盖目标在各所述测试覆盖目标中的占比,获得所述覆盖率分析结果,具体地,计算各所述覆盖目标的数量与各所述测试覆盖目标的数量的比值,获得数量占比,并将所述数量占比作为所述覆盖率分析结果。
其中,所述测试指令流至少包括一测试指令,
所述获取所述测试指令流的标识信息的步骤包括:
步骤A10,分别确定各所述测试指令对应的指令代码,并获取各所述指令代码中预设位置区域的编码信息;
在本实施例中,需要说明的是,所述指令代码为所述测试指令对应的机器码,其中,所述指令代码通过预设位数的比特位进行存储。
分别确定各所述测试指令对应的指令代码,并获取各所述指令代码中预设位置区域的编码信息,具体地,分别确定各所述测试指令对应的指令代码,并获取各所述指令代码中预设位置区域的编码信息,例如,假设所述指令代码通过32位比特位进行存储,所述预设位置区域为32位比特位中的第31位和第32位比特位,则提取第31位和第32位比特位上的数值,即可获得编码信息,例如,假设第31位和第32位比特位上的数值分别为0和1,则所述编码信息为01。
步骤A20,基于各所述编码信息,生成所述标识信息。
在本实施例中,需要说明的是,所述编码信息为测试指令的指令编码。
基于各所述编码信息,生成所述标识信息,具体地,以测试指令的先后顺序,将各所述指令编码组合为编码向量,并将所述编码向量作为所述标识信息。
步骤S30,基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,以进行指令发包,获得目标指令流;
在本实施例中,基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,以进行指令发包,获得目标指令流,具体地,基于所述覆盖率分析结果,更新所述测试覆盖目标信息,以将各所述测试覆盖目标中与所述覆盖率分析结果对应的已经覆盖过的覆盖目标相同的测试覆盖目标进行删除,获得第二轮测试覆盖目标信息,进而基于所述覆盖率分析结果,判断所述测试用例要覆盖的目标功能点是否均已覆盖,若是,则将所述测试指令流进行指令发包,获得目标指令流,若否,则基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束,使得所述第二轮指令约束与所述第二轮测试覆盖目标信息相匹配,也即,使得基于调整后的指令约束生成的指令流可实现所述第二轮测试覆盖目标信息中的所有目标功能点,进而基于所述第二轮指令约束,重新生成第二轮迭代的测试指令流,并基于所述第二轮测试覆盖目标信息,对第二轮迭代的测试指令流进行覆盖率分析,获得第二轮迭代的覆盖率分析结果,进而基于所述第二轮迭代的覆盖率分析结果,判断所述测试用例要覆盖的目标功能点是否均已覆盖,若是,则将基于所述测试指令流和所述第二轮迭代的测试指令流进行指令发包,获得目标指令流,若否,则基于所述第二轮迭代的覆盖率分析结果,循环进行下一轮迭代的覆盖率分析结果,直至存在某一轮迭代的覆盖率分析,使得所述测试用例要覆盖的目标功能点均已覆盖,则基于各轮迭代的测试指令流,进行指令发包,获得目标指令流。
另外地,需要说明的是,步骤S10至步骤S30为发包器进行指令发包的过程,在一种可实施的方式中,如图2所示为进行指令发包的流程示意图,其中,约束为所述指令约束,配置信息解析器用于将配置信息解析为指令约束,约束求解器为所述预设约束求解器,指令生成器为所述预设指令生成器,指令发射器用于传输指令流,指令流为所述测试指令流,覆盖目标刷新为对所述测试覆盖目标信息进行更新的过程,调整约束为对所述指令约束更新的过程。
步骤S40,基于所述目标指令流进行处理器验证,获得目标验证结果。
在本实施例中,基于所述目标指令流进行处理器验证,获得目标验证结果,具体地,基于所述目标指令流,进行各目标功能点的仿真测试,以进行处理器验证,获得所述目标验证结果。
本实施例提供了一种处理器验证方法,相比于现有技术采用的基于测试用例的配置信息,生成特定数量的指令以进行仿真,并在仿真完成后,分析覆盖率数据后得出该用例的测试效果,以调整测试用例的配置信息直至达到覆盖的目标的技术手段,本实施例在进行仿真之前的发包过程中,首先获取测试用例对应的配置信息,并基于所述测试用例,生成测试覆盖目标信息,进而将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果,实现了在仿真之前进行覆盖率分析的目的,进而若未达到覆盖目标,则基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,也即,将已经覆盖的目标从测试覆盖目标信息进行删除,且将已经覆盖的目标对应的约束范围在指令约束中进行删除,以重新生成测试指令流进行覆盖率分析,直至达到覆盖目标,进而实现目标指令流的发包,进而基于目标指令流,进行处理器验证,即可实现一轮迭代,完成处理器验证的目的,也即,进行一次仿真,即可完成处理器的验证,相比于现有技术中基于多轮迭代仿真进行处理器验证的方法,减少了进行处理器验证时的处理过程的迭代次数,进而克服了现有技术中由于待测的功能点纷繁复杂而且比较零散,某一个或某一些功能点未覆盖到是高概率发生的事件,进而将导致处理器验证时的测试过程迭代次数过高,进而导致处理器验证时的测试效率较低的技术缺陷,提高了处理器验证时的测试效率。
进一步地,参照图3,基于本申请中第一实施例,在本申请的另一实施例中,所述基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,以进行指令发包,获得目标指令流的步骤包括:
步骤S31,基于所述覆盖率分析结果,更新所述测试覆盖目标信息,获得第二轮测试覆盖目标信息;
在本实施例中,基于所述覆盖率分析结果,更新所述测试覆盖目标信息,获得第二轮测试覆盖目标信息,具体地,基于所述覆盖率分析结果,更新所述测试覆盖目标信息,以将各所述测试覆盖目标中与所述覆盖率分析结果对应的已经覆盖过的覆盖目标相同的测试覆盖目标进行删除,获得第二轮测试覆盖目标信息。
其中,所述测试覆盖目标信息至少包括一测试覆盖目标,所述第二轮测试覆盖目标信息至少包括第一第二轮测试覆盖目标,
所述基于所述覆盖率分析结果,更新所述测试覆盖目标信息,获得第二轮测试覆盖目标信息的步骤包括:
步骤S311,确定所述覆盖率分析结果对应的各覆盖目标;
在本实施例中,需要说明的是,所述覆盖目标为所述覆盖率分析结果对应的迭代轮次生成的测试指令,例如,假设测试用例对应的指令类型包括类型A和类型B,且类型A对应的指令数量为3,属于类型A的各测试指令分别为a、b、c,类型B对应的指令数量为2,属于类型B的各测试指令分别为e、f,若所述覆盖率分析结果对应的迭代轮次中生成了指令a和指令e,则各所述覆盖目标为指令a和指令e。
步骤S312,在各所述测试覆盖目标中剔除各所述覆盖目标,获得各所述第二轮测试覆盖目标。
在本实施例中,需要说明的是,各所述测试覆盖目标为测试用例进行处理器验证时所需的所有目标测试指令。
在各所述测试覆盖目标中剔除各所述覆盖目标,获得各所述第二轮测试覆盖目标,具体地,在各所述测试覆盖目标中剔除与各所述覆盖目标相同的测试覆盖目标,获得剔除后剩余的各测试覆盖目标,并将剔除后剩余的各测试覆盖目标作为各所述第二轮测试覆盖目标。
步骤S32,判断所述覆盖率分析结果是否满足预设覆盖率条件,若满足,则将所述测试指令流作为所述目标指令流;
在本实施例中,需要说明的是,判断所述覆盖率分析结果是否满足预设覆盖率条件的过程即为判断各所述测试覆盖目标是否均已被各覆盖目标所覆盖的过程。
判断所述覆盖率分析结果是否满足预设覆盖率条件,若满足,则将所述测试指令流作为所述目标指令流,具体地,判断各所述覆盖目标中是否存在每一所述测试覆盖目标,若是,则判定所述覆盖率分析结果满足预设覆盖率条件,并将所述测试指令流作为所述目标指令流,以进行指令发包,若否,则判定所述覆盖率分析结果不满足预设覆盖率条件。
步骤S33,若不满足,则基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束;
在本实施例中,若不满足,则基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束,具体地,若不满足,则基于所述覆盖率分析结果,调整所述指令约束,以减小所述指令约束的范围,使得基于调整后的指令约束不会生成各所述覆盖目标对应的测试指令,获得第二轮指令约束。
其中,所述基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束的步骤包括:
步骤S331,基于所述覆盖率分析结果和所述测试覆盖目标信息,确定未覆盖目标信息;
在本实施例中,基于所述覆盖率分析结果和所述测试覆盖目标信息,确定未覆盖目标信息,具体地,确定所述覆盖率分析结果对应的各覆盖目标,并将各测试覆盖目标中与各所述覆盖目标不同的各测试覆盖目标作为未覆盖目标,进而将各所述未覆盖目标作为所述未覆盖目标信息。
步骤S332,调整所述指令约束,以使得所述指令约束与所述未覆盖目标信息相匹配,获得所述第二轮指令约束。
在本实施例中,调整所述指令约束,以使得所述指令约束与所述未覆盖目标信息相匹配,获得所述第二轮指令约束,具体地,调整所述指令约束,以使得基于调整后的指令约束可生成的各测试指令为各所述未覆盖目标对应的测试指令,也即,以使得所述指令约束与所述未覆盖目标信息相匹配,进而获得所述第二轮指令约束。
步骤S34,基于所述第二轮测试覆盖目标信息和所述第二轮指令约束,生成第二轮迭代的覆盖率分析结果,直至在各轮迭代中存在满足所述预设覆盖率条件的覆盖率分析结果,将各轮迭代生成的测试指令流共同作为所述目标指令流。
在本实施例中,基于所述第二轮测试覆盖目标信息和所述第二轮指令约束,生成第二轮迭代的覆盖率分析结果,直至在各轮迭代中存在满足所述预设覆盖率条件的覆盖率分析结果,将各轮迭代生成的测试指令流共同作为所述目标指令流,具体地,基于所述第二轮指令约束,重新生成第二轮迭代的测试指令流,并基于所述第二轮测试覆盖目标信息,对第二轮迭代的测试指令流进行覆盖率分析,获得第二轮迭代的覆盖率分析结果,进而基于所述第二轮迭代的覆盖率分析结果,判断所述第二轮测试覆盖目标信息中各覆盖目标是否均已覆盖,若是,则将基于所述测试指令流和所述第二轮迭代的测试指令流进行指令发包,获得目标指令流,若否,则基于所述第二轮迭代的覆盖率分析结果,循环进行下一轮迭代的覆盖率分析,直至存在某一轮迭代的覆盖率分析结果,使得所述测试用例要覆盖的覆盖目标均已覆盖,则基于各轮迭代的测试指令流,进行指令发包,获得目标指令流,其中,所述目标指令流可为各轮迭代的测试指令流的集合。
其中,所述基于所述第二轮测试覆盖目标信息和所述第二轮指令约束,生成第二轮迭代的覆盖率分析结果的步骤包括:
步骤S341,对所述第二轮指令约束进行解析,获得第二轮约束范围集合;
在本实施例中,对所述第二轮指令约束进行解析,获得第二轮约束范围集合,具体地,通过预设约束求解器,对所述第二轮指令约束进行解析,以将所述第二轮指令约束转化为具体的参数取值范围集合,获得所述第二轮约束范围集合。
步骤S342,基于所述第二轮约束范围集合,生成第二轮测试指令流;
在本实施例中,基于所述第二轮约束范围集合,生成第二轮测试指令流,具体地,通过预设指令生成器,在所述第二轮约束范围集合的各参数取值范围中选取第二轮测试指令参数,进而基于各所述第二轮测试指令参数,生成所述第二轮测试指令流。
步骤S343,获取所述第二轮测试指令流的第二轮标识信息,并基于所述第二轮标识信息和所述第二轮测试覆盖目标信息,对所述第二轮测试指令流进行覆盖率分析,获得所述第二轮迭代的覆盖率分析结果。
在本实施例中,需要说明的是,所述第二轮测试覆盖目标信息包括各第二轮指令类型和各第二轮指令类型对应的第二轮指令数量,所述第二轮测试指令流至少包括一第二轮测试指令,所述第二轮标识信息至少包括一第二轮测试指令对应的第二轮指令标识,其中,所述第二轮指令标识为指令的类型标识,用于表明第二轮测试指令的指令类型。
获取所述第二轮测试指令流的第二轮标识信息,并基于所述第二轮标识信息和所述第二轮测试覆盖目标信息,对所述第二轮测试指令流进行覆盖率分析,获得所述第二轮迭代的覆盖率分析结果,具体地,获取各所述第二轮测试指令对应的第二轮指令标识,并基于各所述第二轮指令标识,确定各所述第二轮测试指令对应的第二轮目标指令类型,进而统计属于各所述第二轮目标指令类型的第二轮测试指令的第二轮目标指令数量,进而计算每一属于相同的第二轮指令类型的第二轮目标指令数量与所述测试用例对应的第二轮指令数量的比值,获得各所述第二轮指令类型对应的第二轮指令数量覆盖率,进而将各所述第二轮指令数量覆盖率作为所述第二轮覆盖率分析结果。
本实施例提供了一种基于多轮迭代的指令发包方法,也即,首先基于所述覆盖率分析结果,更新所述测试覆盖目标信息,获得第二轮测试覆盖目标信息,进而判断所述覆盖率分析结果是否满足预设覆盖率条件,若满足,则将所述测试指令流作为所述目标指令流,进而若不满足,则基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束,进而基于所述第二轮测试覆盖目标信息和所述第二轮指令约束,生成第二轮迭代的覆盖率分析结果,直至在各轮迭代中存在满足所述预设覆盖率条件的覆盖率分析结果,将各轮迭代生成的测试指令流共同作为所述目标指令流,进而基于目标指令流,进行处理器验证,即可实现一轮迭代,完成处理器验证的目的,也即,进行一次仿真,即可完成处理器的验证,相比于现有技术中基于多轮迭代仿真进行处理器验证的方法,减少了进行处理器验证时的处理过程的迭代次数,进而为克服现有技术中由于待测的功能点纷繁复杂而且比较零散,某一个或某一些功能点未覆盖到是高概率发生的事件,进而将导致处理器验证时的测试过程迭代次数过高,进而导致处理器验证时的测试效率较低的技术缺陷奠定了基础。
参照图4,图4是本申请实施例方案涉及的硬件运行环境的设备结构示意图。
如图4所示,该处理器验证设备可以包括:处理器1001,例如CPU,存储器1005,通信总线1002。其中,通信总线1002用于实现处理器1001和存储器1005之间的连接通信。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
可选地,该处理器验证设备还可以包括矩形用户接口、网络接口、摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。矩形用户接口可以包括显示屏(Display)、输入子模块比如键盘(Keyboard),可选矩形用户接口还可以包括标准的有线接口、无线接口。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
本领域技术人员可以理解,图4中示出的处理器验证设备结构并不构成对处理器验证设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图4所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块以及处理器验证程序。操作系统是管理和控制处理器验证设备硬件和软件资源的程序,支持处理器验证程序以及其它软件和/或程序的运行。网络通信模块用于实现存储器1005内部各组件之间的通信,以及与处理器验证系统中其它硬件和软件之间通信。
在图4所示的处理器验证设备中,处理器1001用于执行存储器1005中存储的处理器验证程序,实现上述任一项所述的处理器验证方法的步骤。
本申请处理器验证设备具体实施方式与上述处理器验证方法各实施例基本相同,在此不再赘述。
本申请实施例还提供一种处理器验证装置,所述处理器验证装置应用于处理器验证设备,所述处理器验证装置包括:
生成模块,用于获取测试用例对应的配置信息,并生成所述测试用例对应的测试覆盖目标信息;
覆盖率分析模块,用于将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果;
更新模块,用于基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行更新,以进行指令发包,获得目标指令流;
验证模块,用于基于所述目标指令流进行处理器验证,获得目标验证结果。
可选地,所述更新模块包括:
更新单元,用于基于所述覆盖率分析结果,更新所述测试覆盖目标信息,获得第二轮测试覆盖目标信息;
第一判断单元,用于判断所述覆盖率分析结果是否满足预设覆盖率条件,若满足,则将所述测试指令流作为所述目标指令流;
第二判断单元,用于若不满足,则基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束;
第一生成单元,用于基于所述第二轮测试覆盖目标信息和所述第二轮指令约束,生成第二轮迭代的覆盖率分析结果,直至在各轮迭代中存在满足所述预设覆盖率条件的覆盖率分析结果,将各轮迭代生成的测试指令流共同作为所述目标指令流。
可选地,所述生成单元包括:
解析子单元,用于对所述第二轮指令约束进行解析,获得第二轮约束范围集合;
第一生成子单元,用于基于所述第二轮约束范围集合,生成第二轮测试指令流;
覆盖率分析子单元,用于获取所述第二轮测试指令流的第二轮标识信息,并基于所述第二轮标识信息和所述第二轮测试覆盖目标信息,对所述第二轮测试指令流进行覆盖率分析,获得所述第二轮迭代的覆盖率分析结果。
可选地,所述更新单元包括:
第一确定子单元,用于确定所述覆盖率分析结果对应的各覆盖目标;
剔除子单元,用于在各所述测试覆盖目标中剔除各所述覆盖目标,获得各所述第二轮测试覆盖目标。
可选地,所述第二判断单元包括:
第二确定子单元,用于基于所述覆盖率分析结果和所述测试覆盖目标信息,确定未覆盖目标信息;
调整子单元,用于调整所述指令约束,以使得所述指令约束与所述未覆盖目标信息相匹配,获得所述第二轮指令约束。
可选地,所述覆盖率分析模块包括:
解析单元,用于对所述指令约束进行解析,获得约束范围集合;
第二生成单元,用于基于所述约束范围集合,生成所述测试指令流;
覆盖率分析单元,用于获取所述测试指令流的标识信息,并基于所述标识信息和所述测试覆盖目标信息,对所述测试指令流进行覆盖率分析,获得所述覆盖率分析结果。
可选地,所述覆盖率分析单元包括:
第三确定子单元,用于基于各所述指令标识,分别确定各所述测试指令对应的覆盖目标;
计算子单元,用于计算各所述覆盖目标在各所述测试覆盖目标中的占比,获得所述覆盖率分析结果。
可选地,所述覆盖率分析单元还包括:
获取子单元,用于分别确定各所述测试指令对应的指令代码,并获取各所述指令代码中预设位置区域的编码信息;
第二生成子单元,用于基于各所述编码信息,生成所述标识信息。
本申请处理器验证装置的具体实施方式与上述处理器验证方法各实施例基本相同,在此不再赘述。
本申请实施例提供了一种可读存储介质,且所述可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序还可被一个或者一个以上的处理器执行以用于实现上述任一项所述的处理器验证方法的步骤。
本申请可读存储介质具体实施方式与上述处理器验证方法各实施例基本相同,在此不再赘述。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利处理范围内。
Claims (10)
1.一种处理器验证方法,其特征在于,所述处理器验证方法包括:
获取测试用例对应的配置信息,并生成所述测试用例对应的测试覆盖目标信息;
将所述配置信息解析为指令约束,并基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果;
基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行迭代更新,以进行指令发包,获得各轮迭代更新生成的测试指令流,并将各所述测试指令流共同作为目标指令流;
基于所述目标指令流进行处理器验证,获得目标验证结果;
其中,所述测试覆盖目标信息至少包括一目标功能点,所述基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果的步骤包括:
基于所述测试指令流中各测试指令对应的编码信息,确定各所述测试指令对应的实现功能点;
计算各所述实现功能点在各所述目标功能点中的占比,获得所述覆盖率分析结果。
2.如权利要求1所述处理器验证方法,其特征在于,所述基于所述覆盖率分析结果,对所述测试覆盖目标信息和所述指令约束进行迭代更新,以进行指令发包,获得各轮迭代更新生成的测试指令流,并将各所述测试指令流共同作为目标指令流的步骤包括:
基于所述覆盖率分析结果,更新所述测试覆盖目标信息,获得第二轮测试覆盖目标信息;
判断所述覆盖率分析结果是否满足预设覆盖率条件,若满足,则将所述测试指令流作为所述目标指令流;
若不满足,则基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束;
基于所述第二轮测试覆盖目标信息和所述第二轮指令约束,生成第二轮迭代的覆盖率分析结果,直至在各轮迭代中存在满足所述预设覆盖率条件的覆盖率分析结果,将各轮迭代生成的测试指令流共同作为所述目标指令流。
3.如权利要求2所述处理器验证方法,其特征在于,所述基于所述第二轮测试覆盖目标信息和所述第二轮指令约束,生成第二轮迭代的覆盖率分析结果的步骤包括:
对所述第二轮指令约束进行解析,获得第二轮约束范围集合;
基于所述第二轮约束范围集合,生成第二轮测试指令流;
获取所述第二轮测试指令流的第二轮标识信息,并基于所述第二轮标识信息和所述第二轮测试覆盖目标信息,对所述第二轮测试指令流进行覆盖率分析,获得所述第二轮迭代的覆盖率分析结果。
4.如权利要求2所述处理器验证方法,其特征在于,所述测试覆盖目标信息至少包括一测试覆盖目标,所述第二轮测试覆盖目标信息至少包括第一第二轮测试覆盖目标,
所述基于所述覆盖率分析结果,更新所述测试覆盖目标信息,获得第二轮测试覆盖目标信息的步骤包括:
确定所述覆盖率分析结果对应的各覆盖目标;
在各所述测试覆盖目标中剔除各所述覆盖目标,获得各所述第二轮测试覆盖目标。
5.如权利要求2所述处理器验证方法,其特征在于,所述基于所述覆盖率分析结果,调整所述指令约束,获得第二轮指令约束的步骤包括:
基于所述覆盖率分析结果和所述测试覆盖目标信息,确定未覆盖目标信息;
调整所述指令约束,以使得所述指令约束与所述未覆盖目标信息相匹配,获得所述第二轮指令约束。
6.如权利要求1所述处理器验证方法,其特征在于,所述基于所述测试覆盖目标信息,对基于所述指令约束生成的测试指令流进行覆盖率分析,获得覆盖率分析结果的步骤包括:
对所述指令约束进行解析,获得约束范围集合;
基于所述约束范围集合,生成所述测试指令流;
获取所述测试指令流的标识信息,并基于所述标识信息和所述测试覆盖目标信息,对所述测试指令流进行覆盖率分析,获得所述覆盖率分析结果。
7.如权利要求6所述处理器验证方法,其特征在于,所述测试指令流至少包括一测试指令,所述标识信息至少包括一所述测试指令对应的指令标识,所述测试覆盖目标信息至少包括一测试覆盖目标,
所述基于所述标识信息和所述测试覆盖目标信息,对所述测试指令流进行覆盖率分析,获得所述覆盖率分析结果的步骤包括:
基于各所述指令标识,分别确定各所述测试指令对应的覆盖目标;
计算各所述覆盖目标在各所述测试覆盖目标中的占比,获得所述覆盖率分析结果。
8.如权利要求6所述处理器验证方法,其特征在于,所述测试指令流至少包括一测试指令,
所述获取所述测试指令流的标识信息的步骤包括:
分别确定各所述测试指令对应的指令代码,并获取各所述指令代码中预设位置区域的编码信息;
基于各所述编码信息,生成所述标识信息。
9.一种处理器验证设备,其特征在于,所述处理器验证设备包括:存储器、处理器以及存储在存储器上的用于实现所述处理器验证方法的程序,
所述存储器用于存储实现处理器验证方法的程序;
所述处理器用于执行实现所述处理器验证方法的程序,以实现如权利要求1至8中任一项所述处理器验证方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有实现处理器验证方法的程序,所述实现处理器验证方法的程序被处理器执行以实现如权利要求1至8中任一项所述处理器验证方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011446163.4A CN112231164B (zh) | 2020-12-11 | 2020-12-11 | 处理器验证方法、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011446163.4A CN112231164B (zh) | 2020-12-11 | 2020-12-11 | 处理器验证方法、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112231164A CN112231164A (zh) | 2021-01-15 |
CN112231164B true CN112231164B (zh) | 2021-08-27 |
Family
ID=74124198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011446163.4A Active CN112231164B (zh) | 2020-12-11 | 2020-12-11 | 处理器验证方法、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231164B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567164A (zh) * | 2011-12-23 | 2012-07-11 | 中国科学院自动化研究所 | 用于处理器的指令集批量测试装置与方法 |
US8918678B2 (en) * | 2012-01-20 | 2014-12-23 | International Business Machines Corporation | Functional testing of a processor design |
CN108089987A (zh) * | 2017-12-28 | 2018-05-29 | 天津芯海创科技有限公司 | 功能验证方法和装置 |
US10318412B1 (en) * | 2018-06-29 | 2019-06-11 | The Travelers Indemnity Company | Systems, methods, and apparatus for dynamic software generation and testing |
CN110058974A (zh) * | 2019-03-22 | 2019-07-26 | 威海优微科技有限公司 | 一种基于risc_v处理器的usb pd快速充电协议芯片验证法 |
CN110134580A (zh) * | 2019-04-01 | 2019-08-16 | 深圳云天励飞技术有限公司 | 处理器验证方法及相关产品 |
US10572115B2 (en) * | 2018-01-31 | 2020-02-25 | Mellanox Technologies Ltd. | Systems and methods for tracking progress of design of a semiconductor device |
CN111858207A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种SoC芯片验证测试系统及方法 |
CN111930444A (zh) * | 2020-10-16 | 2020-11-13 | 鹏城实验室 | 处理器核验证的指令耦合装置、方法、设备及存储介质 |
CN111931161A (zh) * | 2020-09-10 | 2020-11-13 | 鹏城实验室 | 基于risc-v处理器的芯片验证方法、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454726B2 (en) * | 2006-02-13 | 2008-11-18 | Sun Microsystems, Inc. | Technique for generating input stimulus to cover properties not covered in random simulation |
US9600384B2 (en) * | 2014-10-14 | 2017-03-21 | Cypress Semiconductor Corporation | System-on-chip verification |
US9940222B2 (en) * | 2015-11-20 | 2018-04-10 | General Electric Company | System and method for safety-critical software automated requirements-based test case generation |
CN111258838B (zh) * | 2020-01-17 | 2023-05-23 | 南京芯驰半导体科技有限公司 | 验证组件生成方法、装置、存储介质及验证平台 |
-
2020
- 2020-12-11 CN CN202011446163.4A patent/CN112231164B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567164A (zh) * | 2011-12-23 | 2012-07-11 | 中国科学院自动化研究所 | 用于处理器的指令集批量测试装置与方法 |
US8918678B2 (en) * | 2012-01-20 | 2014-12-23 | International Business Machines Corporation | Functional testing of a processor design |
CN108089987A (zh) * | 2017-12-28 | 2018-05-29 | 天津芯海创科技有限公司 | 功能验证方法和装置 |
US10572115B2 (en) * | 2018-01-31 | 2020-02-25 | Mellanox Technologies Ltd. | Systems and methods for tracking progress of design of a semiconductor device |
US10318412B1 (en) * | 2018-06-29 | 2019-06-11 | The Travelers Indemnity Company | Systems, methods, and apparatus for dynamic software generation and testing |
CN110058974A (zh) * | 2019-03-22 | 2019-07-26 | 威海优微科技有限公司 | 一种基于risc_v处理器的usb pd快速充电协议芯片验证法 |
CN110134580A (zh) * | 2019-04-01 | 2019-08-16 | 深圳云天励飞技术有限公司 | 处理器验证方法及相关产品 |
CN111858207A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种SoC芯片验证测试系统及方法 |
CN111931161A (zh) * | 2020-09-10 | 2020-11-13 | 鹏城实验室 | 基于risc-v处理器的芯片验证方法、设备及存储介质 |
CN111930444A (zh) * | 2020-10-16 | 2020-11-13 | 鹏城实验室 | 处理器核验证的指令耦合装置、方法、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
测试集规模、测试覆盖率和测试有效性之间关联性研究;汤健;《中国优秀硕士学位论文全文数据库》;20190215(第02期);I138-617 * |
Also Published As
Publication number | Publication date |
---|---|
CN112231164A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111159049B (zh) | 接口自动化测试方法及系统 | |
CN108829597B (zh) | 软件众测方法及装置、计算机装置及可读存储介质 | |
CN111737073B (zh) | 自动化测试方法、装置、设备及介质 | |
CN109726108B (zh) | 基于模拟数据的前端代码测试方法、装置、系统和介质 | |
CN111815169B (zh) | 业务审批参数配置方法及装置 | |
CN110659870A (zh) | 业务审核测试方法、装置、设备及存储介质 | |
CN109818962B (zh) | 业务数据处理方法及装置、电子设备、存储介质 | |
CN107807841B (zh) | 服务器模拟方法、装置、设备及可读存储介质 | |
CN110569159A (zh) | 挡板生成方法、装置、设备及计算机存储介质 | |
CN112069068A (zh) | 自动化测试数据处理方法、装置、设备及可读存储介质 | |
CN104869019A (zh) | 用于定位故障的反馈方法、装置及服务器 | |
CN110287104A (zh) | 测试用例生成方法、装置、终端及计算机可读存储介质 | |
CN111625469A (zh) | 压力测试方法、装置、设备及计算机可读存储介质 | |
CN114818695A (zh) | 文本风格迁移方法、装置、设备及存储介质 | |
CN112231164B (zh) | 处理器验证方法、设备及可读存储介质 | |
CN110717315B (zh) | 系统数据批量修改方法、装置、存储介质及电子设备 | |
CN116306479A (zh) | 基于uvm的以太网phy通用验证平台及验证方法 | |
CN111210279B (zh) | 一种目标用户预测方法、装置和电子设备 | |
CN113688134A (zh) | 基于多维数据的可视化变量管理方法、系统及设备 | |
CN113127019B (zh) | 验证方法及相关设备 | |
CN111190824A (zh) | 监测方法、装置、终端设备及存储介质 | |
CN110647314A (zh) | 技能生成方法、装置及电子设备 | |
CN114265771A (zh) | 应用程序测试方法及装置 | |
US20220129365A1 (en) | Systems and methods for universal system-to-system communication management and analysis | |
CN117743293A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |