CN106155855A - 对微处理器进行功能验证的方法及服务器 - Google Patents
对微处理器进行功能验证的方法及服务器 Download PDFInfo
- Publication number
- CN106155855A CN106155855A CN201510162236.XA CN201510162236A CN106155855A CN 106155855 A CN106155855 A CN 106155855A CN 201510162236 A CN201510162236 A CN 201510162236A CN 106155855 A CN106155855 A CN 106155855A
- Authority
- CN
- China
- Prior art keywords
- microprocessor
- stochastic instruction
- code
- instruction
- simulation
- 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
Abstract
本发明提供一种对微处理器进行功能验证的方法及服务器,包括:生成至少一条随机指令、各随机指令对应的期望运行结果,以及初始化数据;根据微处理器的原始寄存器传输级RTL代码,生成比特流文件;将比特流文件加载至硬件仿真加速器中,并将至少一条随机指令和初始化数据加载至模拟微处理器的内存和用户可见寄存器中,模拟微处理器通过将微处理器烧入硬件仿真加速器形成;控制硬件仿真加速器运行至少一条随机指令;根据硬件仿真加速器对至少一条随机指令的运行结果和各随机指令对应的期望运行结果,验证微处理器的功能。采用本发明实施例提供的技术方案,可以提高对微处理器的功能验证的准确性和可调试性。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种对微处理器进行功能验证的方法及服务器。
背景技术
微处理器是用一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令,以及与外界存储器和逻辑部件交换信息等操作,是微型计算机的运算控制部分。通常对微处理器进行功能验证的方法有三种:基于软件仿真器的仿真验证、基于现场可编程门阵列(Field Programmable Gates Array,简称FPGA)原型验证系统的仿真验证和基于硬件仿真加速器的仿真验证。
基于FPGA原型验证系统的仿真验证是在FPGA上实现一个主控电路,通过主控电路将随机指令和其对应的期望运行结果下载到FPGA系统仿真板的内部寄存器中,并在完成FPGA原型验证系统主板的初始化后进入仿真工作状态,即将被验证微处理器在FPGA原型验证系统主板上运行并输出结果,然后在仿真结束后将内部寄存器与上述期望运行结果进行比较,以确定被验证微处理器的输出是否有错;基于硬件仿真加速器的仿真验证首先用硬件仿真加速器将被验证微处理器的寄存器传输级(Register Transfer Level,简称RTL)代码综合为可以烧入到硬件仿真加速器上的网表文件,并将操作系统和应用程序软件的可执行文件转换为可以写入到硬件加速器中的格式,然后将上述网表文件烧入到硬件仿真加速器中,再将经过上述经格式处理后的可执行文件写入硬件仿真加速器的内存中,然后启动硬件仿真加速器开始仿真,并运行操作系统和应用程序进行验证。
然而,基于FPGA原型验证系统进行仿真验证时,由于内部寄存器与期望结果的比较是在整个仿真结束时进行的,并非实时比较,而最终结果出错在大部分情况下是由于之前已经出错了,但由于该方案在出错时并没有比较机制,因而不能确定具体错误地方,因而准确性较低;并且,由于在FPGA上实现时,可以抓取的信号有限且很难定根据抓取的信号定位出具体出错的地方,因而其调试性也较差。此外,使用现有的基于硬件仿真加速器的仿真验证方法只能对操作系统和应用程序软件进行验证,而并不能对微处理器的功能进行指令级验证,验证结果也不够准确。
发明内容
本发明提供一种对微处理器进行功能验证的方法及服务器,用以解决现有技术中基于FPGA原型验证系统的仿真验证的准确性低,调试性差,以及基于硬件仿真加速器的仿真验证不能支持指令级验证等问题。
本发明的第一方面,提供一种对微处理器进行功能验证的方法,包括:
生成至少一条随机指令、各所述随机指令对应的期望运行结果,以及初始化数据,所述初始化数据用于初始化微处理器的内存和用户可见寄存器;
根据所述微处理器的原始寄存器传输级RTL代码,生成比特流文件;
将所述比特流文件加载至硬件仿真加速器中,并将所述至少一条随机指令和所述初始化数据加载至模拟微处理器的内存和所述用户可见寄存器中,所述模拟微处理器通过将所述微处理器烧入所述硬件仿真加速器形成;
控制所述硬件仿真加速器运行所述至少一条随机指令;
根据所述硬件仿真加速器对所述至少一条随机指令的运行结果和各所述随机指令对应的期望运行结果,验证所述微处理器的功能。
在第一种可能的实现方式中,根据第一方面,所述生成至少一条随机指令、各所述随机指令对应的期望运行结果,以及初始化数据,具体包括:
根据所述微处理器的结构,生成所述至少一条随机指令、各所述随机指令对应的期望结果以及所述初始化数据;
对所述至少一条随机指令及所述初始化数据进行处理,以使所述至少一条随机指令的格式和所述初始化数据的格式,与所述模拟微处理器的内存和所述用户可见寄存器中所存储的数据格式匹配。
在第二种可能的实现方式中,结合第一方面和第一种可能的实现方式,所述根据微处理器的原始寄存器传输级RTL代码,生成比特流文件,具体包括:
对所述原始RTL代码中不可综合的代码和所述硬件仿真加速器中不能处理的代码进行替换,生成替换RTL代码;
在所述替换RTL代码中增加用于初始化所述模拟微处理器的用户可见寄存器的第一逻辑代码,生成被验证RTL代码;
生成所述期望运行结果对应的第二逻辑代码;
对所述被验证RTL代码和所述第二逻辑代码进行综合布局,生成所述比特流文件。
本发明的第二方面,提供一种对微处理器进行功能验证的服务器,包括:
第一生成模块,用于生成至少一条随机指令、各所述随机指令对应的期望结果,以及初始化数据,所述初始化数据用于初始化微处理器的内存和用户可见寄存器;
第二生成模块,用于根据所述微处理器的原始寄存器传输级RTL代码,生成比特流文件;
加载模块,用于将所述第二生成模块生成的所述比特流文件加载至硬件仿真加速器中,并将所述第一生成模块生成的所述至少一条随机指令和所述初始化数据加载至模拟微处理器的内存和所述用户可见寄存器中,所述模拟微处理器通过将所述微处理器烧入所述硬件仿真加速器形成;
控制模块,用于控制所述硬件仿真加速器运行所述第一生成模块生成的所述至少一条随机指令;
验证模块,用于根据所述硬件仿真加速器对所述至少一条随机指令的运行结果和所述第一生成模块生成的各所述随机指令对应的期望运行结果,验证所述微处理器的功能。
在第一种可能的实现方式中,根据第二方面,所述第一生成模块具体包括:
第一生成单元,用于根据所述微处理器的结构,生成所述至少一条随机指令、各所述随机指令对应的期望结果以所述初始化数据;
处理单元,用于对所述第一生成单元生成的所述至少一条随机指令及所述初始化数据进行处理,以使所述至少一条随机指令的格式和所述初始化数据的格式,与所述模拟微处理器的内存和用户可见寄存器中所存储的数据格式匹配。
在第二种可能的实现方式中,结合第二方面和第一种可能的实现方式,所述第二生成模块具体包括:
第二生成单元,用于对所述原始RTL代码中不可综合的代码和所述硬件仿真加速器中不能处理的代码进行替换,生成替换RTL代码;并在生成的所述替换RTL代码中增加用于初始化所述用户可见寄存器的第一逻辑代码,生成被验证RTL代码;生成所述第一生成模块生成的所述期望运行结果对应的第二逻辑代码;以及对所述生成的所述被验证RTL代码和所述生成的所述第二逻辑代码进行综合布局,生成所述比特流文件。
本发明实施例提供的对微处理器进行功能验证的方法,首先生成至少一条随机指令,各随机指令对应的期望运行结果,以及初始化数据,初始化数据用于初始化微处理器的内存和用户可见寄存器,然后根据微处理器的RTL代码,生成比特流文件,接着将比特流文件加载至硬件仿真加速器中,并将随机指令和初始化数据加载至模拟微处理器的内存和用户可见寄存器中,最后控制硬件仿真加速器运行随机指令,并根据硬件仿真加速器对随机指令的运行结果和期望运行结果,验证微处理器的功能。本发明实施例提供的技术方案,实现了基于硬件仿真加速器对微处理器的功能进行指令级验证,可以提高对微处理器的功能验证的准确性和可调试性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种对微处理器进行功能验证的方法的流程图;
图2为本发明实施例提供的一种对微处理器进行功能验证的方法的流程图;
图3为本发明实施例提供的一种对微处理器进行功能验证的服务器的结构示意图;
图4为本发明实施例提供的另一种服务器的结构示意图;
图5为本发明实施例提供的又一种服务器的结构示意图;
图6为本发明实施例提供的又一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种对微处理器进行功能验证的方法的流程图。如图1所示,该方法包括:
步骤S100、生成至少一条随机指令、各随机指令对应的期望运行结果以及初始化数据。
步骤S101、根据微处理器的RTL代码,生成比特流文件。
步骤S102、将比特流文件加载至硬件仿真加速器中,并将至少一条随机指令和初始化数据加载至模拟微处理器的内存和用户可见寄存器中。
步骤S103、控制硬件仿真加速器运行随机指令。
步骤S104、根据硬件仿真加速器对至少一条随机指令的运行结果和各随机指令对应的期望运行结果,验证微处理器的功能。
上述各步骤的执行主体为具备控制和处理功能的设备,例如:网络侧的服务器,具体可以通过软件,或者硬件,或者硬件与软件相结合的方式实现。
具体的,首先可以生成至少一条随机指令、各随机指令对应的期望运行结果,以及初始化数据。需要说明的是,这里并不限定随机指令的数量,可以是一条或者一条以上,当随机指令为多于一条时,其具体实现过程与一条随机指令类似,此处不再赘述。以一条随机指令为例进行说明,该随机指令可以是一组随机生成的比特流形式的代码,在生成该随机指令的同时,还需要生成初始化数据,该初始化数据用于初始化微处理器的内存和用户可见寄存器,上述随机指令对应的期望运行结果,即表示理论上该条随机指令经被验证的微处理器运行后,应该输出的正确结果,该期望运行结果可以是比特流形式的。
进一步地,在生成了随机指令及其对应的期望运行结果之后,可以根据微处理器的RTL代码,生成比特流文件。例如,可以对微处理器的RTL代码中的不可综合的代码及硬件仿真加速器不能处理的代码进行替换处理,此外,可以在上述RTL代码中增加用于初始化模拟微处理器的内存及用户可见寄存器的代码,以及在上述期望运行结果中增加用于保存上述随机指令在硬件仿真加速器上运行之后的运行结果的代码,以便根据该期望运行结果和实际的运行结果,对微处理器的功能进行验证。之后可以对上述经处理后的RTL代码和初始化数据进行处理,生成表示该微处理器的待验证的比特流文件。
更进一步地,在生成上述比特流文件之后,可以将其加载至硬件仿真加速器中,即在硬件仿真加速器上烧入微处理器,并将随机指令和初始化数据加载至上述模拟微处理器的内存和用户可见寄存器中,以在硬件仿真加速器上运行随机指令,从而对微处理器的功能进行验证。上述模拟微处理器为将上述微处理器烧入至硬件仿真加速器后形成的微处理器,烧入即在硬件仿真加速器上实现上述微处理器。在实际中,可以通过服务器与硬件仿真加速器之间的总线和接口标准(Peripheral Component Interface Express,简称PCIE)或其它连接总线,在服务器上运行预设的控制文件以完成上述加载动作。
更进一步地,在将比特流文件加载至硬件仿真加速器中,并将随机指令和初始化数据加载至模拟微处理器的内存和用户可见寄存器中之后,可以控制硬件仿真加速器运行上述随机指令。在实际中,可以通过服务器与硬件仿真加速器之间的连接总线,在服务器上运行预设的控制文件,以控制硬件仿真加速器运行各随机指令,并且,还可以通过上述预设的控制文件,对硬件仿真加速器的实际运行速度进行控制。当然,控制硬件仿真加速器运行各随机指令包括控制硬件仿真加速器初始化板卡。
更进一步地,当硬件仿真加速器运行完上述随机指令后,可以根据硬件仿真加速器对至少一条随机指令的运行结果以及各随机指令对应的期望运行结果,验证微处理器的功能。可选的,可以将每条随机指令实际的运行结果与其对应的期望运行结果进行比对,如果正确则证明该至少一条随机指令组成的该组随机指令对应的微处理器的功能正常,并继续运行下一组随机指令,如果错误,则可以对该组随机指令进行调试。
本实施例的技术方案生成了至少一条随机指令、各随机指令对应的期望运行结果和初始化数据,并将其加载至模拟微处理器的内存和所述用户可见寄存器中,以及生成比特流文件,并将其加载至硬件仿真加速器中,之后控制硬件仿真加速器运行该随机指令,并将硬件仿真加速器对该至少一条随机指令的运行结果与各随机指令对应的期望运行结果进行比对,从而完成对微处理器的功能验证。相比于基于硬件仿真加速器的仿真验证,本实施例的技术方案完成了对微处理器的指令级验证,而与基于FPGA原型验证系统的仿真验证相比,由于本实施例的技术方案是对微处理器的指令级验证,即可以运行每条随机指令,并将每条随机指令的运行结果与其对应的期望结果进行比较,而不是在整个仿真结束时才进行结果比对,因而可以更加精确地定位出发生错误的随机指令,准确性较高,并且,这种对每条随机指令进行指令级验证的方法,若某条随机指令运行不对,则可以重新运行这条随机指令完成调试,因而具有较高的调试性。
图2为本发明实施例提供的一种对微处理器进行功能验证的方法的流程图。如图2所示,该方法包括:
步骤S200、生成至少一条随机指令、各随机指令对应的期望运行结果以及初始化数据。
上述步骤的执行主体为具备控制和处理功能的设备,例如:网络侧的服务器,具体可以通过软件,或者硬件,或者硬件与软件相结合的方式实现。
具体的,首先可以根据被验证的微处理器的结构,生成至少一条随机指令,各随机指令对应的期望运行结果以及初始化数据。上述至少一条随机指令可以包括每条指令十六进制格式的指令编码,上述初始化数据可以包括其他验证微处理器功能时需要的验证信息,具体的,这些验证信息为:第一文件、虚页号和第二文件。其中,第一文件包括上述模拟微处理器的内存的初始化值,用以初始化模拟微处理器的内存,可选的,该第一文件还可以包括用户可见寄存器的初始化值,用以初始化模拟微处理器的用户可见寄存器;上述虚页号可以为随机指令的程序地址(Program Counter,简称PC)及访存数据对应的虚页号;上述第二文件包括上述至少一条随机指令的PC。可选的。可选的,上述初始化数据还可以包括第五文件,该第五文件用于记录上述至少一条随机指令的运行结果。
进一步地,在生成了上述至少一条随机指令及初始化数据后,由于各随机指令和初始化数据的格式并不能直接加载到上述模拟微处理器的内存和上述用户可见寄存器中,因此可以对各随机指令及初始化数据进行处理,以使各随机指令的格式与模拟微处理器的内存所存储的数据格式匹配,并且,使初始化数据的格式与上述模拟微处理器的内存和上述用户可见寄存器中所存储的数据格式匹配。
举例来说,上述对各随机指令及初始化数据的处理过程可以是,首先为每个虚页号分配一个实页号,并生成页表,页表用于保存虚页号与实页号之间的对应关系,然后根据页表,把每条随机指令的PC转换为第一物理地址,并将每条第一物理地址对应的随机指令合并至第三文件中,该第一物理地址为上述随机指令的16进制编码,之后再根据页表,把微处理器的内存的虚地址转换为第二物理地址,并将每条第二物理地址对应的微处理器的内存的初始化值合并至第四文件中,该第二物理地址为微处理器的内存的虚地址的初始化值。
步骤S201、根据微处理器的RTL代码,生成比特流文件。
上述步骤的执行主体为具备控制和处理功能的设备,例如:网络侧的服务器,具体可以通过软件,或者硬件,或者硬件与软件相结合的方式实现。
具体的,首先可以对原始RTL代码中不可综合的代码和硬件仿真加速器中不能处理的代码进行替换,生成替换RTL代码。上述不可综合的代码比如可以是RTL代码中的模拟信号,此时需要将其转换为数字信号,才能变为可综合的代码;由于硬件仿真加速器只能处理数字、逻辑和存储代码,因此上述不能处理的代码比如可以是在硬件仿真加速器中不能处理的模拟信号,此时也需要将转换为数字信号才能变为能处理的代码。上述原始RTL代码中不可综合的代码和硬件仿真加速器不能处理的代码包括:无法由综合实现的锁相环(Phase Locked Logic,简称PLL)代码、RTL中使用的仿真库以及RTL中使用的内存模型。
进一步地,可以在替换RTL代码中增加第一逻辑代码,该第一逻辑代码用于初始化上述用户可见寄存器,从而生成被验证RTL代码。具体到实现,可以首先在替换RTL代码中增加寄存器数组,然后在上述替换RTL代码中增加第一逻辑代码,从而生成被验证RTL代码,该第一逻辑代码用于读取寄存器数组内每个寄存器的数值,并将每个寄存器的数值赋给用户可见寄存器,从而完成对上述用户可见寄存器的初始化。
更进一步地,可以生成期望运行结果对应的第二逻辑代码,由于在硬件仿真加速器上运行随机指令之后得到的结果是模拟信号,因此,需要由第二逻辑代码将硬件仿真加速器运行的模拟信号形式的结果信号保存成与上述期望运行结果格式相同的比特流形式,才可以与期望运行结果进行比对,从而验证微处理器的功能。
更进一步地,可以对上述被验证RTL代码和第二逻辑代码进行综合布局,从而生成比特流文件。在实际中,可以用硬件仿真加速器自带的软件对上述两种代码进行综合布局,使其成为能够加载至硬件仿真加速器上的比特流文件。
步骤S202、将比特流文件加载至硬件仿真加速器中,并将至少一条随机指令和初始化数据加载至模拟微处理器的内存和用户可见寄存器中。
上述步骤的执行主体为具备控制和处理功能的设备,例如:网络侧的服务器,具体可以通过软件,或者硬件,或者硬件与软件相结合的方式实现。
具体的,在加载时,可以将比特流文件加载至硬件仿真加速器中,并将随机指令加载至上述模拟微处理器的内存中,并将初始化数据加载至模拟微处理器的内存和用户可见寄存器中,上述模拟微处理器为将上述微处理器烧入至硬件仿真加速器后形成的微处理器,烧入即在硬件仿真加速器上实现上述微处理器。
在实际中,可以在服务器端预先编写好控制文件,并运行该控制文件,以完成上述加载过程。
步骤S203、控制硬件仿真加速器运行随机指令。
上述步骤的执行主体为具备控制和处理功能的设备,例如:网络侧的服务器,具体可以通过软件,或者硬件,或者硬件与软件相结合的方式实现。
该步骤的具体描述与步骤S103相同,此处不再赘述。此外,与步骤S202类似,在实际中,也可以通过服务器端预设的控制文件,以控制硬件仿真加速器初始化硬件仿真加速器的板卡,并且,还可以通过服务器端编写好的设计特性文件设置硬件仿真加速器的实际运行速度。具体的,可以通过调用上述设计特性文件,将上述第一文件写入到模拟微处理器的内存中,同时将上述第二文件加载到步骤S201中增加的寄存器数组中,并通过步骤S201中增加的第一逻辑代码和第二逻辑代码对用户可见寄存器进行初始化。
步骤S204、根据硬件仿真加速器对至少一条随机指令的运行结果和各随机指令对应的期望运行结果,验证微处理器的功能。
上述步骤的执行主体为具备控制和处理功能的设备,例如:网络侧的服务器,具体可以通过软件,或者硬件,或者硬件与软件相结合的方式实现。
该步骤的具体描述与步骤S104相同,此处不再赘述。
在实际中,与步骤S202和S203类似,也可以通过服务器端预设的控制文件,将硬件仿真加速器上运行出来的结果保存到服务器上,以便于将各随机指令的运行结果与其对应的期望运行结果进行比对。
步骤S205、若任意一条随机指令的运行结果与其对应的期望运行结果不同,则重新运行该随机指令,并采用调试波形文件对该随机指令进行调试。
上述步骤的执行主体为具备控制和处理功能的设备,例如:网络侧的服务器,具体可以通过软件,或者硬件,或者硬件与软件相结合的方式实现。
具体的,在对上述至少一条随机指令的运行结果和其对应的期望运行结果进行比对之后,若比对结果正确,则可以运行下一组随机指令,即再执行步骤S200~S204,若有任意一条随机指令的运行结果与其对应的期望运行结果不同,则可以重新运行该随机指令,并运行上述随机指令过程中生成的调试波形文件对该随机指令进行调试。
下面结合具体的ZeBu服务器(ZeBu-Server)硬件仿真加速器对上述步骤进行相关描述:
首先,在步骤S200中生成的随机指令可以为包含每条指令十六进制格式的指令编码,其格式如下:
00 02 cc 46
16 80 92 01
30 38 0d 46
……
上述初始化数据中的包含每条随机指令的PC的第三文件格式如下:
00 00 00 00
04 00 00 00
08 00 00 00
……
上述初始化数据中的随机指令的PC及访存数据对应的虚页号的格式如下:
0000000000000000000000000000000000000
1110101110001011001100100111101010011
……
由于虚页号是从地址中截取某些位获得的,根据页大小的不同,虚页号的位数也会不同,所有是用二进制表示的。
上述初始化数据中的用于初始化用户可见寄存器的第一文件格式如下:
08 98 34 00 67 89 12 23
23 45 12 56 38 29 02 18
……
其中,每一行均对应一个用户可见寄存器。
上述步骤S201中的第二逻辑代码包括:通过ZeBu数据编程接口(ZeBuData Program Interface,简称zDPI)将硬件仿真加速器运行随机指令得到的模拟信号形式的结果信号与被验证微处理器中的具体信号绑定起来,该具体信号包括提交总线上的有效(valid)信号和提交总线上的硬件仿真加速器运行上述随机指令得到的模拟的结果信号。
此外,在这个例子中,上述步骤S202中将比特流文件加载至硬件仿真加速器中即为,将被验证微处理器的FPGA比特文件流映射到ZeBu-Server硬件仿真加速器中的FPGA上。同时,还可以使用串口将上述随机指令在硬件仿真加速器上运行得到的模拟的结果信号保存到服务器上。
由于本实施例的技术方案是基于硬件仿真加速器进行的仿真验证,并且,本实施例的技术方案可以完成对微处理器的指令级验证,即可以运行每条随机指令,并将每条随机指令的运行结果与其对应的期望结果进行比较,因而可以更加精确地定位出发生错误的随机指令,并且调试性也更高。
图3为本发明实施例提供的一种对微处理器进行功能验证的服务器的结构示意图。如图3所示,该服务器包括:第一生成模块10、第二生成模块11、加载模块12、控制模块13和验证模块14。
具体的,第一生成模块10用于生成至少一条随机指令、各随机指令对应的期望结果,以及初始化数据,初始化数据用于初始化微处理器的内存和用户可见寄存器;第二生成模块11还用于根据微处理器的原始寄存器传输级RTL代码,生成比特流文件;加载模块12用于将第二生成模块11生成的比特流文件加载至硬件仿真加速器中,并将第一生成模块10生成的至少一条随机指令和初始化数据加载至模拟微处理器的内存和用户可见寄存器中,模拟微处理器通过将微处理器烧入硬件仿真加速器形成;控制模块13用于控制硬件仿真加速器初始化硬件仿真加速器的板卡,并控制硬件仿真加速器运行第一生成模块10生成的随机指令;验证模块14用于根据硬件仿真加速器对第一生成模块10生成的至少一条随机指令的运行结果和各随机指令对应的期望运行结果,验证微处理器的功能。
由于本实施例的技术方案是基于硬件仿真加速器进行的仿真验证,并且,本实施例的技术方案可以完成对微处理器的指令级验证,即可以运行每条随机指令,并将每条随机指令的运行结果与其对应的期望结果进行比较,因而可以更加精确地定位出发生错误的随机指令,并且调试性也更高。
在图3所示实施例的基础上,如图4所示,进一步地,第一生成模块10具体包括:第一生成单元20,用于根据微处理器的结构,生成至少一条随机指令、各随机指令对应的期望结果以及初始化数据;处理单元21,用于对第一生成单元20生成的至少一条随机指令及初始化数据进行处理,以使至少一条随机指令的格式和初始化数据的格式,与模拟微处理器的内存和用户可见寄存器中所存储的数据格式匹配。
更进一步地,初始化数据包括:第一文件、虚页号和第二文件,第一文件包括模拟微处理器的内存的初始化值,第二文件包括至少一条随机指令的程序地址;处理单元21具体用于:为每个虚页号分配一个实页号,并生成页表,页表用于保存虚页号与实页号之间的对应关系;根据页表,把每条随机指令的程序地址转换为第一物理地址,并将每条第一物理地址对应的随机指令合并至第三文件,第一物理地址为随机指令的16进制编码;根据页表,把微处理器的内存的虚地址转换为第二物理地址,并将每条第二物理地址对应的微处理器的内存的初始化值合并至第四文件,第二物理地址为微处理器的内存的虚地址的初始化值。
在图3所示实施例的基础上,如图5所示,更进一步地,第二生成模块11包括:第二生成单元30,用于对所述原始RTL代码中不可综合的代码和所述硬件仿真加速器中不能处理的代码进行替换,生成替换RTL代码;并在生成的所述替换RTL代码中增加用于初始化所述用户可见寄存器的第一逻辑代码,生成被验证RTL代码;生成所述第一生成模块生成的所述期望运行结果对应的第二逻辑代码;以及对所述生成的所述被验证RTL代码和所述生成的所述第二逻辑代码进行综合布局,生成所述比特流文件。
更进一步地,第二生成单元30具体用于:在替换RTL代码中增加寄存器数组;在替换RTL代码中增加第一逻辑代码,生成被验证RTL代码,第一逻辑代码用于读取寄存器数组内每个寄存器的数值,并将每个寄存器的数值赋给用户可见寄存器。
在图3所示实施例的基础上,如图6所示,更进一步地,还包括:调试模块40。
具体的,调试模块40还用于:若任意一条随机指令的运行结果与其对应的期望运行结果不同,则重新运行该随机指令,并采用调试波形文件对该随机指令进行调试。
由于本实施例的技术方案是基于硬件仿真加速器进行的仿真验证,并且,本实施例的技术方案可以完成对微处理器的指令级验证,即可以运行每条随机指令,并将每条随机指令的运行结果与其对应的期望结果进行比较,因而可以更加精确地定位出发生错误的随机指令,并且调试性也更高。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (13)
1.一种对微处理器进行功能验证的方法,其特征在于,包括:
生成至少一条随机指令、各所述随机指令对应的期望运行结果,以及初始化数据,所述初始化数据用于初始化微处理器的内存和用户可见寄存器;
根据所述微处理器的原始寄存器传输级RTL代码,生成比特流文件;
将所述比特流文件加载至硬件仿真加速器中,并将所述至少一条随机指令和所述初始化数据加载至模拟微处理器的内存和所述用户可见寄存器中,所述模拟微处理器通过将所述微处理器烧入所述硬件仿真加速器形成;
控制所述硬件仿真加速器运行所述至少一条随机指令;
根据所述硬件仿真加速器对所述至少一条随机指令的运行结果和各所述随机指令对应的期望运行结果,验证所述微处理器的功能。
2.根据权利要求1所述的方法,其特征在于,所述生成至少一条随机指令、各所述随机指令对应的期望运行结果,以及初始化数据,具体包括:
根据所述微处理器的结构,生成所述至少一条随机指令、各所述随机指令对应的期望结果以及所述初始化数据;
对所述至少一条随机指令及所述初始化数据进行处理,以使所述至少一条随机指令的格式和所述初始化数据的格式,与所述模拟微处理器的内存和用户可见寄存器中所存储的数据格式匹配中。
3.根据权利要求1或2所述的方法,其特征在于,所述根据微处理器的原始寄存器传输级RTL代码,生成比特流文件,具体包括:
对所述原始RTL代码中不可综合的代码和所述硬件仿真加速器中不能处理的代码进行替换,生成替换RTL代码;
在所述替换RTL代码中增加用于初始化所述用户可见寄存器的第一逻辑代码,生成被验证RTL代码;
生成所述期望运行结果对应的第二逻辑代码;
对所述被验证RTL代码和所述第二逻辑代码进行综合布局,生成所述比特流文件。
4.根据权利要求3所述的方法,其特征在于,所述根据所述硬件仿真加速器对所述至少一条随机指令的运行结果和各所述随机指令对应的期望运行结果,验证所述微处理器的功能之后,还包括:
若任意一条随机指令的运行结果与其对应的期望运行结果不同,则重新运行该随机指令,并采用调试波形文件对该随机指令进行调试。
5.根据权利要求2所述的方法,其特征在于,所述初始化数据包括:第一文件、虚页号和第二文件,所述第一文件包括所述模拟微处理器的内存的初始化值,所述第二文件包括所述至少一条随机指令的程序地址PC。
6.根据权利要求5所述的方法,其特征在于,所述对所述至少一条随机指令及所述初始化数据进行处理,具体包括:
为每个虚页号分配一个实页号,并生成页表,所述页表用于保存所述虚页号与所述实页号之间的对应关系;
根据所述页表,把每条所述随机指令的PC转换为第一物理地址,并将每条第一物理地址对应的随机指令合并至第三文件,所述第一物理地址为所述随机指令的16进制编码;
根据所述页表,把所述微处理器的内存的虚地址转换为第二物理地址,并将每条第二物理地址对应的所述微处理器的内存的初始化值合并至第四文件,所述第二物理地址为所述微处理器的内存的虚地址的初始化值。
7.根据权利要求3所述的方法,其特征在于,所述在所述替换RTL代码中增加用于初始化所述用户可见寄存器的第一逻辑代码,生成被验证RTL代码包括:
在所述替换RTL代码中增加寄存器数组;
在所述替换RTL代码中增加所述第一逻辑代码,生成所述被验证RTL代码,所述第一逻辑代码用于读取所述寄存器数组内每个寄存器的数值,并将所述每个寄存器的数值赋给所述用户可见寄存器。
8.一种对微处理器进行功能验证的服务器,其特征在于,包括:
第一生成模块,用于生成至少一条随机指令、各所述随机指令对应的期望结果,以及初始化数据,所述初始化数据用于初始化微处理器的内存和用户可见寄存器;
第二生成模块,用于根据所述微处理器的原始寄存器传输级RTL代码,生成比特流文件;
加载模块,用于将所述第二生成模块生成的所述比特流文件加载至硬件仿真加速器中,并将所述第一生成模块生成的所述至少一条随机指令和所述初始化数据加载至模拟微处理器的内存和所述用户可见寄存器中,所述模拟微处理器通过将所述微处理器烧入所述硬件仿真加速器形成;
控制模块,用于控制所述硬件仿真加速器运行所述第一生成模块生成的所述至少一条随机指令;
验证模块,用于根据所述硬件仿真加速器对所述至少一条随机指令的运行结果和所述第一生成模块生成的各所述随机指令对应的期望运行结果,验证所述微处理器的功能。
9.根据权利要求8所述的服务器,其特征在于,所述第一生成模块具体包括:
第一生成单元,用于根据所述微处理器的结构,生成所述至少一条随机指令、各所述随机指令对应的期望结果以所述初始化数据;
处理单元,用于对所述第一生成单元生成的所述至少一条随机指令及所述初始化数据进行处理,以使所述至少一条随机指令的格式和所述初始化数据的格式,与所述模拟微处理器的内存和用户可见寄存器中所存储的数据格式匹配。
10.根据权利要求8或9所述的服务器,其特征在于,所述第二生成模块具体包括:
第二生成单元,用于对所述原始RTL代码中不可综合的代码和所述硬件仿真加速器中不能处理的代码进行替换,生成替换RTL代码;并在生成的所述替换RTL代码中增加用于初始化所述用户可见寄存器的第一逻辑代码,生成被验证RTL代码;生成所述第一生成模块生成的所述期望运行结果对应的第二逻辑代码;以及对所述生成的所述被验证RTL代码和所述生成的所述第二逻辑代码进行综合布局,生成所述比特流文件。
11.根据权利要求10所述的服务器,其特征在于,还包括:
调试模块,用于若任意一条随机指令的运行结果与其对应的期望运行结果不同,则重新运行该随机指令,并采用调试波形文件对该随机指令进行调试。
12.根据权利要求9所述的服务器,其特征在于,所述初始化数据包括:第一文件、虚页号和第二文件,所述第一文件包括所述模拟微处理器的内存的初始化值,所述第二文件包括所述至少一条随机指令的程序地址PC;所述处理单元具体用于:
为每个虚页号分配一个实页号,并生成页表,所述页表用于保存所述虚页号与所述实页号之间的对应关系;
根据所述页表,把每条所述随机指令的PC转换为第一物理地址,并将每条第一物理地址对应的随机指令合并至第三文件,所述第一物理地址为所述随机指令的16进制编码;
根据所述页表,把所述微处理器的内存的虚地址转换为第二物理地址,并将每条第二物理地址对应的所述微处理器的内存的初始化值合并至第四文件,所述第二物理地址为所述微处理器的内存的虚地址的初始化值。
13.根据权利要求10所述的服务器,其特征在于,所述第二生成单元具体用于:
在所述替换RTL代码中增加寄存器数组;
在所述替换RTL代码中增加所述第一逻辑代码,生成所述被验证RTL代码,所述第一逻辑代码用于读取所述寄存器数组内每个寄存器的数值,并将所述每个寄存器的数值赋给所述用户可见寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510162236.XA CN106155855B (zh) | 2015-04-07 | 2015-04-07 | 对微处理器进行功能验证的方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510162236.XA CN106155855B (zh) | 2015-04-07 | 2015-04-07 | 对微处理器进行功能验证的方法及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106155855A true CN106155855A (zh) | 2016-11-23 |
CN106155855B CN106155855B (zh) | 2018-06-19 |
Family
ID=57335465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510162236.XA Active CN106155855B (zh) | 2015-04-07 | 2015-04-07 | 对微处理器进行功能验证的方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106155855B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109446015A (zh) * | 2018-10-26 | 2019-03-08 | 北京计算机技术及应用研究所 | 一种NVMe原型仿真验证结构 |
CN110895642A (zh) * | 2018-08-24 | 2020-03-20 | 龙芯中科技术有限公司 | 微处理器指令级随机验证方法和装置 |
CN111031011A (zh) * | 2019-11-26 | 2020-04-17 | 中科驭数(北京)科技有限公司 | Tcp/ip加速器的交互方法和装置 |
CN116090372A (zh) * | 2023-03-23 | 2023-05-09 | 湖南泛联新安信息科技有限公司 | 一种基于fpga的芯片仿真加速方法和系统 |
CN117094269A (zh) * | 2023-10-17 | 2023-11-21 | 北京开源芯片研究院 | 一种验证方法、装置、电子设备及可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684047A (zh) * | 2004-12-24 | 2005-10-19 | 清华大学 | 基于边界条件和自检查随机测试的cpu约束生成验证法 |
CN1892616A (zh) * | 2006-05-12 | 2007-01-10 | 中国科学院计算技术研究所 | 在微处理器用户态随机验证中实现核心态程序验证的方法 |
CN101441600A (zh) * | 2008-12-25 | 2009-05-27 | 中国科学院计算技术研究所 | 一种微处理器验证中快速换页的装置和方法 |
US7788610B2 (en) * | 2007-01-23 | 2010-08-31 | International Business Machines Corporation | Random stimuli generation of memory maps and memory allocations |
CN101826050A (zh) * | 2010-02-03 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 一种用于制造后处理器芯片验证的随机验证方法及装置 |
CN102147760A (zh) * | 2011-04-22 | 2011-08-10 | 中国电子科技集团公司第三十八研究所 | 一种基于网络传输的处理器协同验证平台及其测试方法 |
CN102455971A (zh) * | 2010-10-28 | 2012-05-16 | 无锡江南计算技术研究所 | 应用级随机指令测试方法、系统及装置 |
CN102841837A (zh) * | 2012-06-26 | 2012-12-26 | 中国科学院声学研究所 | 一种基于模拟器的软硬件协同验证方法及系统 |
US8875068B2 (en) * | 1999-02-05 | 2014-10-28 | Cadence Design Systems, Inc. | System and method of customizing an existing processor design having an existing processor instruction set architecture with instruction extensions |
CN104461810A (zh) * | 2014-11-14 | 2015-03-25 | 深圳市芯海科技有限公司 | 一种提高嵌入式处理器功能验证效率的方法 |
-
2015
- 2015-04-07 CN CN201510162236.XA patent/CN106155855B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8875068B2 (en) * | 1999-02-05 | 2014-10-28 | Cadence Design Systems, Inc. | System and method of customizing an existing processor design having an existing processor instruction set architecture with instruction extensions |
CN1684047A (zh) * | 2004-12-24 | 2005-10-19 | 清华大学 | 基于边界条件和自检查随机测试的cpu约束生成验证法 |
CN1892616A (zh) * | 2006-05-12 | 2007-01-10 | 中国科学院计算技术研究所 | 在微处理器用户态随机验证中实现核心态程序验证的方法 |
US7788610B2 (en) * | 2007-01-23 | 2010-08-31 | International Business Machines Corporation | Random stimuli generation of memory maps and memory allocations |
CN101441600A (zh) * | 2008-12-25 | 2009-05-27 | 中国科学院计算技术研究所 | 一种微处理器验证中快速换页的装置和方法 |
CN101826050A (zh) * | 2010-02-03 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 一种用于制造后处理器芯片验证的随机验证方法及装置 |
CN102455971A (zh) * | 2010-10-28 | 2012-05-16 | 无锡江南计算技术研究所 | 应用级随机指令测试方法、系统及装置 |
CN102147760A (zh) * | 2011-04-22 | 2011-08-10 | 中国电子科技集团公司第三十八研究所 | 一种基于网络传输的处理器协同验证平台及其测试方法 |
CN102841837A (zh) * | 2012-06-26 | 2012-12-26 | 中国科学院声学研究所 | 一种基于模拟器的软硬件协同验证方法及系统 |
CN104461810A (zh) * | 2014-11-14 | 2015-03-25 | 深圳市芯海科技有限公司 | 一种提高嵌入式处理器功能验证效率的方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110895642A (zh) * | 2018-08-24 | 2020-03-20 | 龙芯中科技术有限公司 | 微处理器指令级随机验证方法和装置 |
CN110895642B (zh) * | 2018-08-24 | 2023-10-31 | 龙芯中科技术股份有限公司 | 微处理器指令级随机验证方法和装置 |
CN109446015A (zh) * | 2018-10-26 | 2019-03-08 | 北京计算机技术及应用研究所 | 一种NVMe原型仿真验证结构 |
CN109446015B (zh) * | 2018-10-26 | 2022-05-27 | 北京计算机技术及应用研究所 | 一种NVMe原型仿真验证结构 |
CN111031011A (zh) * | 2019-11-26 | 2020-04-17 | 中科驭数(北京)科技有限公司 | Tcp/ip加速器的交互方法和装置 |
CN116090372A (zh) * | 2023-03-23 | 2023-05-09 | 湖南泛联新安信息科技有限公司 | 一种基于fpga的芯片仿真加速方法和系统 |
CN116090372B (zh) * | 2023-03-23 | 2023-06-27 | 湖南泛联新安信息科技有限公司 | 一种基于fpga的芯片仿真加速方法和系统 |
CN117094269A (zh) * | 2023-10-17 | 2023-11-21 | 北京开源芯片研究院 | 一种验证方法、装置、电子设备及可读存储介质 |
CN117094269B (zh) * | 2023-10-17 | 2024-02-02 | 北京开源芯片研究院 | 一种验证方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106155855B (zh) | 2018-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106155855A (zh) | 对微处理器进行功能验证的方法及服务器 | |
US8136065B2 (en) | Integrated prototyping system for validating an electronic system design | |
CN107436762B (zh) | 一种寄存器代码文件生成方法、装置和电子设备 | |
US7739093B2 (en) | Method of visualization in processor based emulation system | |
CN102521444A (zh) | 软硬件协同仿真/验证方法及装置 | |
US8271252B2 (en) | Automatic verification of device models | |
US9858371B1 (en) | Method and system for generating post-silicon validation tests | |
CN113486625B (zh) | 芯片的验证方法与验证系统 | |
CN107895087A (zh) | 可编程逻辑电路模块级仿真配码自动生成的方法及系统 | |
CN102147831A (zh) | 逻辑验证方法和装置 | |
JP5236908B2 (ja) | エミュレーションシステム | |
CN107729231A (zh) | 一种基于操作系统的故障注入方法及装置 | |
EP3292467A2 (en) | Efficient waveform generation for emulation | |
CN100483429C (zh) | 验证操作支持系统及其方法 | |
CN102522123A (zh) | 利用数据产生器模块来提高存储设备读写测试效率的方法 | |
CN114548027A (zh) | 在验证系统中追踪信号的方法、电子设备及存储介质 | |
CN108228965A (zh) | 一种存储单元的仿真验证方法、装置和设备 | |
US20120265515A1 (en) | Method and system and computer program product for accelerating simulations | |
US10666294B2 (en) | Error correction code words with binomial bit error distribution | |
US20130283238A1 (en) | Testing system for an integrated software system | |
CN107665169A (zh) | 处理器程序的测试方法和装置 | |
AbdElSalam et al. | SoC verification platforms using HW emulation and co-modeling Testbench technologies | |
US9823305B1 (en) | Method and system for generating post-silicon validation tests | |
CN102789418A (zh) | 处理器功能仿真模型生成装置、方法及功能验证方法 | |
CN106407554A (zh) | 一种同时支持主从机功能的lpc总线仿真验证方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |