一种用于制造后处理器芯片验证的随机验证方法及装置的制作方法

文档序号:6597868阅读:425来源:国知局

专利名称::一种用于制造后处理器芯片验证的随机验证方法及装置的制作方法
技术领域
:本发明涉及超大规模集成电路(VLSI)设计验证领域,并具体涉及一种用于制造后处理器芯片验证的随机验证方法及装置。
背景技术
:对大规模集成电路的设计和工艺进行验证以保证其正确性是一项重要而又艰巨的工作。目前一款芯片在流片前,主要通过功能验证来保证正确性,而芯片流片后则通过制造后芯片验证来寻找存在的错误,进一步保证芯片正确性。随着研究的进步,芯片制造前的功能验证的手段越来越丰富和完善,给集成电路的验证提供了强大的支持,但是芯片制造前的功能验证并不是一个完全枚举的过程,不能保证对每一个错误都能检测到。随着集成电路工艺的进步、新体系结构的提出、电路规模的增大和设计的复杂化,仅仅通过制造前的功能验证越来越难以保证在流片前一次性发现所有的错误。最近的数据显示,仍然有许多错误在芯片流片后、甚至投入市场后被发现,为了使这些错误在芯片推向市场前得到解决,这些流片后存在的问题,需要通过制造后芯片验证手段来发现。制造后的芯片验证受限于对设计内部状态的观测不透明和真实环境的不确定性,发现错误和定位错误所需要的调试开销非常大。根据最近几年的统计,平均每款芯片需要35%的开发时间用于制造后的芯片验证。为了解决制造后的芯片验证调试效率低的问题,一个有益的想法是把芯片制造前的功能验证的方法加以改造,使其能够满足制造后甚至封装后芯片验证的需要。目前集成电路芯片制造前的功能验证方法主要分为模拟仿真方法和形式化方法两大类。形式化方法的应用很大程度上受制于设计规模;而模拟仿真方法能处理大规模集成电路设计,特别是当代复杂高性能处理器,是目前处理器功能验证的主要方法。模拟仿真方法运行的大量测试向量主要有三个来源手写测试向量、实际应用程序改造和测试向量的随机生成。随机验证技术是当今大规模集成电路仿真验证流程中的重要支撑技术。在集成电路验证领域,特别是处理器功能验证领域,具有重要地位。人工书写测试向量需要花费大量的时间和人力成本,并且局限于原始应用程序的规模。经过改造后的应用程序测试向量仍会占用过多的仿真时间,无法很好地满足各阶段回归测试的要求。这意味着大量的、覆盖范围广泛的测试向量主要来源于随机测试向量生成。随机生成的测试向量有可能覆盖到设计和验证人员完全没有想到的功能角落,且生成的测试向量的规模和长度灵活可控。指令级随机验证是通用处理器制造前验证的常用方法。比如专利号为ZL200610078226.9的中国专利申请公开了一种在微处理器用户态随机验证中实现核心态程序验证的方法,参照图1描述该方法,图1是描述了制造前处理器指令级随机验证方法的框图,如图1所述,其通常包括7个部分,指令库101、指令模板102、约束求解器103、随机程序生成引擎104、指令级模拟器105、指令过滤器106、仿真环境107。指令库101中包含处理器支持的所有有效指令;指令模版102是一系列配置文件,用于进行指令的配置和规范;约束求解器103对指令模板进行求解,指导随机程序生成引擎104生成相应的指令;随机程序生成引擎104可以有效支持配置文件约束下的指令生成;指令级模拟器105是待验证的处理器的最简单参考模型,支持指令级仿真,提供指令的正确执行结果,同时更新指令级处理器模拟器状态;指令过滤器106根据指令级模拟器的执行结果判断是否是非法指令,决定是否要丢弃该指令,及时恢复该指令产生前处理器模拟器的状态;仿真环境107是包裹在待验证处理器外层的一系列逻辑和操作,主要包括初始化、输入/输出和比较逻辑,可以执行初始化、输入/输出和信号比较等一系列操作。进行指令级随机验证时,约束求解器103对指令模板102提供的约束进行求解,进而指导随机程序生成引擎104从指令库101中选取符合要求的操作码,加入符合约束的操作数,产生出一条符合约束的指令,提供给指令级处理器模拟器105,指令的模拟结果送入指令过滤器106,如果产生的指令是非法指令则直接抛弃并恢复该条指令产生前的指令级处理器模拟器状态,并重新产生下一条指令,否则提供指令的模拟结果给仿真环境中的比较逻辑,同时将产生的指令也提供给仿真环境,经处理器执行后,将结果也输出到仿真环境中的比较逻辑,通过二者比较可以检测处理器设计中的错误。随机验证方法在扩大芯片验证的覆盖率,提高设计错误的可调试性上具有明显的优势,而这些优势也正是制造后的芯片验证所急需的。然而,制造后的芯片验证受限于对设计内部状态的观测不透明和真实环境的不确定性,无法直接运用上述随机验证环境。在制造后的芯片验证中支持随机验证,至少面临以下两方面的问题(1)在制造后的真实芯片环境中,不存在图1中的仿真环境107,这就意味着无法象在制造前的随机验证中那样初始化仿真环境并方便地完成指令序列和数据加载,无法象在仿真环境中那样容易地直接探测芯片的内部状态并捕获需要的各种信号,也无法在仿真环境中加入实时的比较逻辑及时比较和发现设计中的错误。(2)在制造前的随机验证中,仿真环境可控性很强,对随机验证的约束极小。通常情况下,对于用户态的随机程序来说,只要是设计规范规定的用户态程序允许访问的内存空间它都可以随意使用,只要是设计规范规定的用户态程序允许使用的寄存器,,它也都可以使用,该寄存器通常包括通用寄存器、浮点寄存器等。而对于制造后的真实芯片来说,只能通过输入输出管脚信号来操纵芯片,芯片内部状态的可控制性和可操作性都很差。然而,经过前期的功能验证,芯片中大多数错误已经被修正,通常制造后的真实芯片都能够运行操作系统和一些应用软件,因而制造后的随机验证通常需要这些软件平台的支持,特别是操作系统平台的支持,此时必须考虑软件平台对随机验证的约束和限制,例如部分寄存器会被操作系统作为专用寄存器保留起来,一些内存空间也会被操作系统保留作为专用地址空间,比如供动态链接库等的使用,而生成的随机程序的格式、装载、调度运行的方式也需要相应的改进。在复杂处理器制造后的芯片验证过程中,上述问题是非常常见的,而现有的制造后的芯片验证技术中没有针对制造后处理器芯片验证的随机验证方法的具体解决方案,无法满足这些需求。综上所述,制造后的芯片验证在大规模复杂处理器的验证中占有的比重越来越大,希望能够采用随机验证技术改进其调试性,同时增加验证覆盖率,而现有的用于芯片制造前的随机验证方法无法直接应用于制造后的芯片验证,尚有一系列问题有待解决。由于现有技术的不足,人们希望有一种用于制造后处理器芯片验证的随机验证方法,满足复杂集成电路验证的实践需要。
发明内容本发明目的在于提供一种用于制造后处理器芯片验证的随机验证方法及装置,通过该方法及装置,可以解决现有的芯片制造前的随机验证方法无法直接应用于制造后的芯片验证问题,满足采用随机验证技术改进制造后的芯片验证、提高验证效率的需要。为实现本发明的目的而提供一种用于制造后处理器芯片验证的随机验证方法,通过以下技术方案来实现。一种用于制造后处理器芯片验证的随机验证方法,包括用于制造后处理器芯片验证的随机指令生成方法和平台装载方法两部分。用于制造后处理器芯片验证的随机指令生成方法,包括如下步骤步骤1在指令模版中添加保留寄存器和保留内存地址相关的约束,用于屏蔽保留寄存器和保留内存地址不被生成的随机验证程序使用;步骤2增加寄存器初始化程序生成器、内存初始化程序生成器和指令计数器;步骤3改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,并改变原有指令序列产生终止条件,在指令序列最末尾放置一条跳转指令;步骤4:增加随机生成程序记录器、寄存器比较程序生成器和内存比较程序生成器;用于制造后处理器芯片验证的平台装载方法,包括如下步骤步骤5将运用所述用于制造后处理器芯片验证的随机指令生成方法后生成的文件转化为软件平台可调度的文件格式;步骤6指定所述用于制造后处理器芯片验证的随机指令生成方法中寄存器初始化程序生成器、内存初始化程序生成器、寄存器比较程序生成器以及内存比较程序生成器所生成的程序代码段以及随机生成的指令序列在内存中装载的起始位置;步骤7将所述步骤5转化为软件平台可调度的文件格式的程序代码段以及随机生成的指令序列分别按照所述步骤6中指定的起始位置装载进相应的内存地址中。在上述方案中,在所述步骤2中,指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目。在上述方案中,在所述步骤4中,随机生成程序记录器记录随机生成的指令序列的汇编代码段、二进制代码段、序列中每条指令对应的指令计数器(ProgramCounter)的值以及每条指令对应的转换后援存储器(Translationlookasidebuffer,简称TLB)页号。在上述方案中,在所述步骤4中,寄存器比较程序生成器生成一段寄存器比较程序代码,比较运行随机生成的指令序列后待验证处理器中除所述步骤1中保留寄存器外的所有寄存器值和指令级处理器模拟器的模拟结果中对应寄存器的值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。在上述方案中,在所述步骤4中,内存比较程序生成器生成一段内存比较程序代码,把待验证处理器运行随机生成的指令序列后全部缓存(Cache)的内容刷新到内存中,比较待验证处理器运行随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。在上述方案中,在所述步骤6中,为了不干扰待装载软件平台的正常运行,包括随机生成的指令序列在内的所有程序代码段都应装载在内存中用户态地址空间,即装载的起始位置加对应程序代码段实际长度应不超出用户态地址空间,且装载不同程序代码段的地址空间没有重叠。为实现本发明的目的还提供一种用于制造后处理器芯片验证的随机验证装置,包括随机指令初始化模块,用于在指令模版中添加保留寄存器和保留内存地址相关的约束,以及增加寄存器初始化程序生成器、内存初始化程序生成器和指令计数器;所述指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目;随机指令生成模块,用于改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,并改变原有指令序列产生终止条件,在指令序列最末尾放置一条跳转指令;随机指令记录比较模块,用于增加随机生成程序记录器、寄存器比较程序生成器和内存比较程序生成器;所述随机生成程序记录器记录随机生成的指令序列的汇编代码段、二进制代码段、序列中每条指令对应的指令计数器的值以及每条指令对应的转换后援存储器页号;所述寄存器比较程序生成器生成一段寄存器比较程序代码,比较运行随机生成的指令序列后待验证处理器中除随机指令初始化模块中保留寄存器外的所有寄存器值和指令级处理器模拟器的模拟结果中对应寄存器的值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息到日志文件中;所述内存比较程序生成器生成一段内存比较程序代码,把待验证处理器运行随机生成的指令序列后全部缓存的内容刷新到内存中,比较待验证处理器运行随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息到日志文件中;平台装载模块,用于转化所述随机指令生成模块和所述随机指令记录比较模块生成的文件为软件平台可调度的文件格式,指定所述寄存器初始化程序生成器、内存初始化程序生成器、寄存器比较程序生成器以及内存比较程序生成器所生成的程序代码段以及随机生成的指令序列在内存中装载的起始位置,并按照所述起始位置分别装载被转化后的以软件平台可调度的文件为格式的程序代码段和指令文件;所述平台装载模块,为了不干扰待装载软件平台的正常运行,包括随机生成的指令序列在内的所有程序代码段都装载在内存中用户态地址空间,且装载不同程序代码段的地址空间没有重叠。本发明的有益效果通过本发明的用于制造后处理器芯片验证的随机验证方法,解决了现有的芯片制造前的随机验证方法无法直接应用于制造后的芯片验证问题,满足采用随机验证技术改进制造后的芯片验证的覆盖率、提高验证效率的需要。图1是现有技术的描述了制造前处理器指令级随机验证方法的框图;图2是依据本发明的一个具体实施例的用于制造后处理器芯片验证方法的流程图;图3是依据本发明的一个具体实施例的随机指令生成方法的示意图;图4是依据本发明的一个具体实施例的平台装载方法的示意具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的用于制造后处理器芯片验证的随机验证方法及装置进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明而不是对本发明的限制。下面结合附图和具体实施方式对本发明作进一步详细描述。依据本发明的一个具体实施例,提供一种用于制造后处理器芯片验证的随机验证方法。该方法包括用于制造后处理器芯片验证的随机指令生成方法和平台装载方法两部分。用于制造后处理器芯片验证的随机指令生成方法,包括如下步骤步骤Sl在指令模版中添加保留寄存器和保留内存地址相关的约束,用于屏蔽保留寄存器和保留内存地址不被生成的随机验证程序使用;步骤S2增加寄存器初始化程序生成器、内存初始化程序生成器和指令计数器;步骤S3改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,并改变原有指令序列产生终止条件,在指令序列最末尾放置一条跳转指令;步骤S4增加增加随机生成程序记录器、寄存器比较程序生成器和内存比较程序生成器;用于制造后处理器芯片验证的平台装载方法,包括如下步骤步骤S5将运用所述用于制造后处理器芯片验证的随机指令生成方法后生成的文件转化为软件平台可调度的文件格式;步骤S6指定所述用于制造后处理器芯片验证的随机指令生成方法中寄存器初始化程序生成器、内存初始化程序生成器、寄存器比较程序生成器以及内存比较程序生成器所生成的程序代码段以及随机生成的指令序列在内存中装载的起始位置;步骤S7将所述步骤5转化为软件平台可调度的文件格式的程序代码段以及随机生成的指令序列分别按照所述步骤6中指定的起始位置装载进相应的内存地址中。在步骤Sl中,在指令模版中添加保留寄存器相关的约束,基本格式为{寄存器号,0}。在步骤Sl中,在指令模版中添加保留内存地址相关的约束,基本格式为{起始地址末尾地址,0}。在步骤S2中,寄存器初始化程序生成器生成一段寄存器初始化程序代码,初始化待验证处理器中除步骤Sl中保留寄存器外的所有寄存器。在步骤S2中,内存初始化程序生成器生成一段内存初始化程序代码,初始化步骤5中记录的随机生成的指令序列使用到的内存地址。在步骤S2中,内存初始化通常以页为单位,即初始化所有的随机生成的指令序列使用的内存地址所在的页。在步骤S2中,指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目。在步骤S3中,重新设计的随机程序生成引擎,不再包含寄存器初始化文件生成机制,即随机程序生成引擎不再生成寄存器初始化文件。在步骤S3中,重新设计的随机程序生成引擎,不再包含内存初始化文件生成机制,即随机程序生成引擎不再生成内存初始化文件。在步骤S3中,重新设计的随机程序生成引擎遵循步骤Sl中添加的保留寄存器和保留内存地址相关的约束,即随机程序生成引擎不使用保留的寄存器和保留的内存地址。在步骤S3中,改变原有指令序列产生终止条件包括总体指令产生数目减1,在指令序列最末尾放置一条跳转指令。在步骤S4中,随机生成程序记录器记录随机生成的指令序列的汇编代码段和二进制代码段,分别生成两个文件,即汇编代码段文件和二进制代码段文件。在步骤S4中,随机生成程序记录器还要记录随机生成的指令序列中每条指令对应的指令计数器(ProgramCounter)的值以及每条指令对应的转换后援存储器(Translationlookasidebuffer,简称TLB)页号,分别生成两个文件。在步骤S4中,寄存器比较程序生成器生成一段寄存器比较程序代码,比较运行全部随机生成程序记录器记录的随机生成的指令序列后,待验证处理器中所有的寄存器值和指令级处理器模拟器的模拟结果中寄存器的值。在步骤S4中,寄存器比较程序生成器生成的程序代码段顺序比较所有的寄存器结果值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。在步骤S4中,如果步骤S2中寄存器初始化程序生成器初始化寄存器时保留了23个通用寄存器没有初始化,则寄存器比较程序生成器生成的程序代码段顺序比较寄存器结果值时跳过没有初始化的几个寄存器。在步骤S4中,内存比较程序生成器生成一段内存比较程序代码,把待验证处理器运行全部随机生成程序记录器记录的随机生成的指令序列后全部缓存(Cache)的内容刷新到内存中,比较待验证处理器运行全部随机生成程序记录器记录的随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行全部随机生成程序记录器记录的随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。在步骤S6中,为了不干扰待装载软件平台的正常运行,内存中寄存器初始化程序生成器生成的程序代码段应装载在用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。在步骤S6中,为了不干扰待装载软件平台的正常运行,内存初始化程序生成器生成的程序代码段应装载在内存中用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。在步骤S6中,为了不干扰待装载软件平台的正常运行,内存中随机生成的指令序列应装载在用户态地址空间,即装载的起始位置加指令序列程序代码段实际长度应不超出用户态地址空间。在步骤S6中,为了不干扰待装载软件平台的正常运行,内存中寄存器比较程序生成器生成的程序代码段应装载在用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。在步骤S6中,为了不干扰待装载软件平台的正常运行,内存比较程序生成器生成的程序代码段应装载在内存中用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。在步骤S6中,指定的起始位置加对应的代码段长度应满足递增关系,即指定的内存中寄存器初始化程序生成器生成的程序代码段装载的起始位置<寄存器初始化程序生成器生成的程序代码段结束位置<指定的内存初始化程序生成器生成的程序代码段在内存中装载的起始位置<内存初始化程序生成器生成的程序代码段结束位置<指定的随机生成的指令序列在内存中装载的起始位置<随机生成的指令序列结束位置<指定的内存中寄存器比较程序生成器生成的程序代码段装载的起始位置<寄存器比较程序生成器生成的程序代码段结束位置<指定的内存比较程序生成器生成的程序代码段在内存中装载的起始位置<内存比较程序生成器生成的程序代码段结束位置。依据本发明的一个具体实施例,参照图2描述一种用于制造后处理器芯片验证的随机验证方法。图2是用于制造后处理器芯片验证方法的流程图,如图2所示,该用于制造后处理器芯片验证的随机验证方法包括用于制造后处理器芯片验证的随机指令生成方法和平台装载方法两部分。该制造后处理器芯片验证的随机指令生成方法包括如下步骤步骤S201,在指令模版中添加保留寄存器和保留内存地址相关的约束;步骤S202,增加寄存器初始化程序生成器;步骤S203,增加内存初始化程序生成器;步骤S204,增加指令计数器;步骤S205,改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制;步骤S206,改造随机程序生成引擎,改变原有指令序列产生终止条件,保证在指令序列最末尾的指令为跳转指令;步骤S207,增加随机生成程序记录器;步骤S208,增加寄存器比较程序生成器;步骤S209,增加内存比较程序生成器。在步骤S201中,在指令模版中添加保留寄存器相关的约束,基本格式为{寄存器号,0}。在步骤S201中,在指令模版中添加保留内存地址相关的约束,基本格式为{起始地址末尾地址,0}。用于制造后处理器芯片验证的随机验证方法受到装载软件平台的限制,装载软件平台包括操作系统和一些应用软件,这些装载软件平台(特别是操作系统平台)会要求部分寄存器作为专用寄存器保留起来,一些内存空间也会被操作系统保留作为专用地址空间,仅供装载软件平台使用,步骤S201中添加的约束用于确保制造后处理器芯片验证的随机指令生成方法生成的指令序列不包含这些装载软件平台需要保留的专用寄存器或专用地址空间。例如MIPSproN32操作系统中,通用寄存器$26、$27对应汇编程序中的寄存器ktO、ktl,是操作系统核心态保留寄存器,通用寄存器$28对应汇编程序中的全局指针寄存器$gp,通用寄存器$29对应汇编程序中的堆栈指针寄存器$sp,通用寄存器$31对应汇编程序中的保存返回地址的寄存器ra,这些都是不允许在随机指令生成的程序中使用的寄存器。按照步骤S201,在指令模版中添加保留寄存器相关的约束如下{$260}{$270}{$280}{$290}{$310}下面在举一个内存地址相关的约束的例子。在MIPSproN32操作系统中,地址空间0x2aaa80000x2b000000为动态链接库占用的专用地址空间,不允许在随机指令生成的程序中使用这部分地址空间,按照步骤S201,在指令模版中添加保留内存地址相关的约束如下{0x2aaa80000x2b000000,0}不同的装载软件平台包含不同的操作系统和应用软件,需要保留的寄存器和内存地址可能不相同,都可以采取步骤S201的格式在指令模版中添加相关的约束。在步骤S202中,寄存器初始化程序生成器生成一段寄存器初始化程序代码,初始化待验证处理器中除步骤S201中保留寄存器外的所有寄存器。步骤S202中寄存器初始化程序生成器生成的程序代码段在初始化寄存器时,保留步骤S201中需要保留的通用寄存器不初始化。以前述MIPSproN32为例,针对MIPSR4000系统包含的32个通用寄存器,保留通用寄存器$26、$27、$28、$29、$31不初始化,只需初始化除这些外剩余的寄存器。此处保留的寄存器可以根据不同的装载软件需要任意选取。此处给出一个在MIPS兼容处理器结构中初始化一些通用寄存器的例子,其它更多的寄存器都可以用此种方式初始化从某个初始地址开始分配一片连续的地址空间,初始地址存入相应的寄存器(此处假设为寄存器$25),将寄存器初始化数据文件放入分配的连续地址空间中,再使用下面的指令序列把内容读入对应的寄存器,初始化这些寄存器。{lw$0,0($25)lw$l,8($25)lw$2,16($25)lw$3,24($25)lw$4,32($25)lw$5,40($25)lw$6,48($25)lw$7,56($25)lw$8,64($25)lw$9,72($25)lw$10,80($25)......}在步骤S203中,内存初始化程序生成器生成一段内存初始化程序代码,初始化随机生成的指令序列使用的内存地址,内存初始化通常以页为单位,即初始化所有的随机生成的指令序列使用的内存地址所在的页。在步骤S203中,针对随机生成的指令序列使用到的所有内存地址,内存初始化程序生成器生成一段内存初始化程序代码,以页为单位初始化内存,内存初始化程序生成器生成的程序代码通常包括如下操作步骤S20步骤S203a标记指令序列使用的所有内存地址,转换并记录地址所在的页号,以MIPSR4000系统为例,内存地址的[39:13]位对应TLB值(即页号),据此可以转换并记录地址所在的页号;步骤S203b以页为单位,分配地址空间;步骤S203c以页为单位,初始化所有分配的地址空间;在步骤S204中,指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目。当随机程序生成引擎生成了一条随机指令时,指令计数器执行如下操作步骤S20步骤S204a指令累加器加1,结果仍放在指令累加器中,指令累加器的值标志着生成的随机指令数目;步骤S204b将指令累加器的值送入计数比较器,与指令模板要求的指令数目相比较,如果指令累加器的值小于指令模板要求的指令数目,执行步骤S204c,否则执行步骤S204d;步骤S204c随机程序生成引擎继续执行,生成一条新的随机指令;步骤S204d随机程序生成引擎不再生成新的随机指令,转向初始化文件生成器和比较程序生成器,准备结束指令生成过程。在步骤S205中,重新设计的随机程序生成引擎,不再包含寄存器初始化文件生成机制,即随机程序生成引擎不再生成寄存器初始化文件。在步骤S205中,重新设计的随机程序生成引擎,不再包含内存初始化文件生成机制,即随机程序生成引擎不再生成内存初始化文件。重新设计的随机程序生成引擎,不再包含寄存器和内存初始化文件生成机制,依赖步骤S202中寄存器初始化程序生成器生成的程序代码段完成寄存器初始化功能,依赖步骤S203中内存初始化程序生成器生成的程序代码段完成内存初始化功能。在步骤S205中,重新设计的随机程序生成引擎遵循步骤S201中添加的保留寄存器和保留内存地址相关的约束,即随机程序生成引擎不使用保留的寄存器和保留的内存地址。在前述步骤S201中,以MIPSproN32为例,添加了保留寄存器$26、$27、$28、$29、$31和保留内存地址0x2aaa80000x2b000000的约束,则步骤S205中重新设计的随机程序生成引擎不使用保留的寄存器$26、$27、$28、$29、$31和保留的内存地址空间0x2aaa80000x2b000000。在步骤S206中,改变原有指令序列产生终止条件包括总体指令产生数目减1,在指令序列最末尾放置一条跳转指令。用于制造后处理器芯片验证的随机验证方法生成的指令序列需要装载到软件平台(包括操作系统和一些应用软件)上运行,改变原有指令序列产生终止条件,总体指令产生数目减1,在指令序列最末尾放置一条跳转指令,跳转指令目的地址按照装载的软件平台需求指定,目的是保证随机生成的指令序列不会影响软件平台本身的运行,即保证运行完装载的随机生成的指令序列后,软件平台仍然可以保持正常运行。在步骤S207中,随机生成程序记录器记录随机的汇编代码段和二进制代码段,分别生成两个文件,即汇编代码段文件和二进制代码段文件。在步骤S207中,随机生成程序记录器还要记录随机生成的指令序列中每条指令对应的指令计数器(ProgramCounter,简称PC)的值以及每条指令对应的转换后援存储器(Translationlookasidebuffer,简称TLB)页号,分别生成两个文件。用于制造后处理器芯片验证的随机验证方法生成的指令序列需要装载到软件平台上运行,装载软件平台包括操作系统和一些应用软件,这些装载软件平台要求指令序列以汇编代码段文件或二进制代码段文件格式装载,例如操作系统平台通常要求二进制代码段文件以便调度和运行。指令序列中每条指令对应的PC值表示指令的虚地址,每条指令对应的TLB值表示指令所在的页号,对于确定的指令,指令所在的页号可由指令计数器的值推出。以MIPSR4000系统为例,PC的[39:13]位对应TLB值。记录随机生成的指令序列中每条指令对应的PC值和TLB值并分别生成两个文件,根据这两个文件,在生成指令序列装载到软件平台时,可以确定装载到哪个页的哪个位置,其中装载到哪个页由TLB值文件确定,而哪个位置则由PC值文件来确定。在步骤S208中,寄存器比较程序生成器生成一段寄存器比较程序代码,比较运行全部步骤S207中记录的随机生成的指令序列后,待验证处理器中所有的寄存器值和指令级处理器模拟器的模拟结果中寄存器的值。在步骤S208中,寄存器比较程序生成器生成的程序代码段顺序比较所有的寄存器结果值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。在步骤S208中,如果步骤S202中寄存器初始化程序生成器初始化寄存器时保留了23个通用寄存器没有初始化,则寄存器比较程序生成器生成的程序代码段顺序比较寄存器结果值时跳过没有初始化的几个寄存器。仍以前述步骤S201中MIPSproN32为例,由于添加了保留寄存器$26、$27、$28、$29、$31,寄存器比较程序生成器生成的程序代码段顺序比较除保留寄存器$26、$27、$28、$29、$31外所有的寄存器结果值。具体实现方法的一个例子是可以指定一个地址0x7c204000,以该地址作为起始地址顺序存放指令级处理器模拟器的模拟结果中需要比较的寄存器的值,再另外指定一个地址0X7c208000,以该地址作为起始地址顺序存放随机生成的指令序列实际运行结果中需要比较的寄存器的值,最后依次比较这两块内存空间中存放的值,结果一致则继续比较下一个值,直到内存空间中存放的所有数值比较完毕,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。一个记录出错信息的日志文件的具体例子如下文件名error,log文件内容指令模板中随机生成这个发生错误的指令序列的随机种子数(例如355)指令模板对应的配置文件名(例如fixpointjonfig)出错的寄存器号(例如$5)出错的寄存器模拟结果(例如0xffffffff98355000)出错的寄存器实际结果(例如0x0000000098355000)在步骤S209中,内存比较程序生成器生成一段内存比较程序代码,把待验证处理器运行全部步骤S207中记录的随机生成的指令序列后全部缓存(Cache)的内容刷新到内存中,比较待验证处理器运行全部步骤S207中记录的随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行全部步骤S207中记录的随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。步骤S209可以与步骤S208使用同一个记录出错信息的日志文件,一个记录出错信息的日志文件的具体例子如下文件名error,log文件内容指令模板中随机生成这个发生错误的指令序列的随机种子数(例如355)指令模板对应的配置文件名(例如fixpointjonfig)出错的寄存器号(例如$5)出错的寄存器模拟结果(例如0xffffffff8355000)出错的寄存器实际结果(例如0x0000000098355000)出错的内存地址(例如0x00000fff86630750)出错的内存地址存放的模拟结果(例如0xffffffff46786358)出错的内存地址存放的实际结果(例如0xefffffff46786358)下面结合图3进一步详细说明图2示出的用于制造后处理器芯片验证的随机指令生成方法部分,图3是依据本发明的一个具体实施例的随机指令生成方法的示意图,如图3所示其包括指令库S301、指令模板S302、约束求解器S303、寄存器初始化程序生成器S304、内存初始化程序生成器S305、指令计数器S306、随机程序生成引擎S307、指令级模拟器S308、指令过滤器S309、随机生成程序记录器S310、寄存器比较程序生成器S311、内存比较程序生成器S312,各部分的功能描述如下指令库S301中包含处理器支持的所有有效指令;指令模板S302是一系列配置文件,用于进行指令的配置和规范;约束求解器S303对指令模板S302进行求解,求解结果被分为四部分,分别为寄存器约束、内存地址约束、允许生成的指令数目约束、其它指令相关约束;寄存器约束用于指导寄存器初始化程序生成器S304在约束范围内生成寄存器初始化程序,程序中寄存器初始化的数值应该与生成的指令序列中内存初始化的值相同;内存地址约束用于指导内存初始化程序生成器S305在约束范围内生成内存初始化程序,初始化相应的内存页,程序中内存页初始化的数值应该与生成的指令序列中内存初始化的值相同;允许生成的指令数目约束送入指令计数器S306,作为允许生成的指令数目的上限,指令计数器S306会记录和累加每一次生成的指令数目,判断累加结果是否达到允许生成的指令数目的上限;约束求解器S303对指令模板S302求解后的结果中其它指令相关约束部分指导随机程序生成引擎S307生成相应的指令;随机程序生成引擎S307可以有效支持配置文件约束下的指令生成;指令级模拟器S308是待验证的处理器的最简单参考模型,支持指令级仿真,提供指令的正确执行结果一一即模拟结果,同时更新指令级处理器模拟器状态;指令过滤器S309根据指令级模拟器的执行结果判断是否是非法指令,决定是否要丢弃该指令,及时恢复该指令产生前处理器模拟器的状态;随机生成程序记录器S310记录所有顺利通过指令过滤器S309的指令,随机生成程序记录器S310会在四个文件中分别顺序记录这些指令及其模拟结果的汇编代码和二进制代码、指令对应的指令计数器(ProgramCoimter)的值、指令对应的TLB页号;寄存器比较程序生成器S311生成一段寄存器比较程序,把实际执行生成的指令序列后所有寄存器的值与指令级模拟器S307模拟这个指令序列后给出的相应寄存器的值进行对比,结果不一致时记录出错信息到日志文件;内存比较程序生成器S312生成一段内存比较程序,包括刷新内存程序段和内存比较程序段两部分,刷新内存程序段把待验证处理器运行全部记录的随机生成的指令序列后全部缓存(Cache)的内容刷新到内存中,内存比较程序段比较待验证处理器运行全部记录的随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行全部记录的随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果不一致时记录出错信息到日志文件,结果全部一致则结束随机验证过程;内存比较程序生成器S312完成程序生成,则本次随机指令生成结束,准备进行平台装载S313。回到图2,再次进一步说明用于制造后处理器芯片验证的平台装载方法部分。平台装载方法包括如下步骤步骤S210,将前面用于制造后处理器芯片验证的随机指令生成方法后生成的文件转化为软件平台可调度的文件格式;步骤S211,指定内存中寄存器初始化程序生成器生成的程序代码段装载的起始位置;步骤S212,指定内存初始化程序生成器生成的程序代码段在内存中装载的起始位置;步骤S213,指定步骤S207中记录的随机生成的指令序列在内存中装载的起始位置;步骤S214,指定内存中寄存器比较程序生成器生成的程序代码段装载的起始位置;步骤S215,指定内存比较程序生成器生成的程序代码段在内存中装载的起始位置;步骤S216,按照步骤S211、步骤S212、步骤S213、步骤S214、步骤S215指定的起始位置(即地址入口)分别装载对应的经过步骤S210转化后的寄存器初始化程序生成器生成的程序代码段、内存初始化程序生成器生成的程序代码段、随机生成的指令序列、寄存器比较程序生成器生成的程序代码段、内存比较程序生成器生成的程序代码段的二进制文件。在步骤S210中,软件平台可调度的文件格式包括汇编代码、十六进制或二进制代码段文件格式。平台装载方法用于将制造后处理器芯片验证的随机验证方法生成的指令序列装载到软件平台上运行,用于装载随机生成的指令序列的软件平台包括操作系统和一些应用软件,这些软件平台要求指令序列以汇编代码文件、十六进制或二进制代码文件格式装载,例如操作系统平台通常要求二进制代码文件以便调度和运行,步骤S210用于完成将制造后处理器芯片验证的随机指令生成方法后生成的文件转化为具体软件平台可调度的文件格式。以MIPS64指令系统为例,下面给出一个随机生成的指令序列片断的汇编代码文件和对应的以小尾端表示的十六进制代码文件格式<table>tableseeoriginaldocumentpage17</column></row><table>在步骤S211中,为了不干扰待装载软件平台的正常运行,内存中寄存器初始化程序生成器生成的程序代码段应装载在用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。在步骤S212中,为了不干扰待装载软件平台的正常运行,内存初始化程序生成器生成的程序代码段应装载在内存中用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。在步骤S213中,为了不干扰待装载软件平台的正常运行,内存中随机生成的指令序列应装载在用户态地址空间,即装载的起始位置加指令序列程序代码段实际长度应不超出用户态地址空间。在步骤S214中,为了不干扰待装载软件平台的正常运行,内存中寄存器比较程序生成器生成的程序代码段应装载在用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。在步骤S215中,为了不干扰待装载软件平台的正常运行,内存比较程序生成器生成的程序代码段应装载在内存中用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。步骤52115212、5213、5214、5215中用户态地址空间由具体使用的指令集系统和装载平台确定,以MIPS32系统为例,用户态地址空间为0x000000000x7FFFFFFF。在步骤S216中,装载代码段时,步骤S211、步骤S212、步骤S213、步骤S214、步骤S215指定的起始位置加对应的代码段长度应满足递增关系,即步骤S211指定的起始位置<寄存器初始化程序生成器生成的程序代码段结束位置<步骤S212指定的起始位置<内存初始化程序生成器生成的程序代码段结束位置<步骤S213指定的起始位置<随机生成的指令序列结束位置<步骤S214指定的起始位置<寄存器比较程序生成器生成的程序代码段结束位置<步骤S215指定的起始位置<内存比较程序生成器生成的程序代码段结束位置。下面结合图4进一步详细说明图2中示出的平台装载方法部分。图4是依据本发明的一个具体实施例的平台装载方法的示意图。如图4所示,寄存器初始化程序生成器生成的程序代码段S402装载的起始位置为寄存器初始化程序入口地址S401,内存初始化程序生成器生成的程序代码段S404装载的起始位置为内存初始化程序入口地址S403,随机生成的指令序列S406装载的起始位置为随机生成的指令序列入口地址S405,寄存器比较程序生成器生成的程序代码段S408装载的起始位置为寄存器比较程序入口地址S407,内存比较程序生成器生成的程序代码段S410装载的起始位置为内存变化载入寄存器程序入口地址S409,同时满足步骤S216的装载规则,即S211指定的起始位置<寄存器初始化程序生成器生成的程序代码段结束位置<步骤S212指定的起始位置<内存初始化程序生成器生成的程序代码段结束位置<步骤S213指定的起始位置<随机生成的指令序列结束位置<步骤S214指定的起始位置<寄存器比较程序生成器生成的程序代码段结束位置<步骤S215指定的起始位置<内存比较程序生成器生成的程序代码段结束位置。实际运行时,装载软件平台上的进程S411会跳转到寄存器初始化程序入口地址,依次执行寄存器初始化程序生成器生成的程序代码段、内存初始化程序生成器生成的程序代码段、随机生成的指令序列、寄存器比较程序生成器生成的程序代码段、内存比较程序生成器生成的程序代码段,然后跳回装载软件平台上的进程继续执行。依据本发明的另一具体实施例,提供一种用于制造后处理器芯片验证的随机验证装置,包括随机指令初始化模块,用于在指令模版中添加保留寄存器和保留内存地址相关的约束,以及增加寄存器初始化程序生成器、内存初始化程序生成器和指令计数器;所述指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目;随机指令生成模块,用于改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,并改变原有指令序列产生终止条件,在指令序列最末尾放置一条跳转指令;随机指令记录比较模块,用于增加随机生成程序记录器、寄存器比较程序生成器和内存比较程序生成器;所述随机生成程序记录器记录随机生成的指令序列的汇编代码段、二进制代码段、序列中每条指令对应的指令计数器的值以及每条指令对应的转换后援存储器页号;所述寄存器比较程序生成器生成一段寄存器比较程序代码,比较运行随机生成的指令序列后待验证处理器中除随机指令初始化模块中保留寄存器外的所有寄存器值和指令级处理器模拟器的模拟结果中对应寄存器的值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息到日志文件中;所述内存比较程序生成器生成一段内存比较程序代码,把待验证处理器运行随机生成的指令序列后全部缓存的内容刷新到内存中,比较待验证处理器运行随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息到日志文件中;平台装载模块,用于转化所述随机指令生成模块和所述随机指令记录比较模块生成的文件为软件平台可调度的文件格式,指定所述寄存器初始化程序生成器、内存初始化程序生成器、寄存器比较程序生成器以及内存比较程序生成器所生成的程序代码段以及随机生成的指令序列在内存中装载的起始位置,并按照所述起始位置分别装载被转化后的以软件平台可调度的文件为格式的程序代码段和指令文件;所述平台装载模块,为了不干扰待装载软件平台的正常运行,包括随机生成的指令序列在内的所有程序代码段都装载在内存中用户态地址空间,且装载不同程序代码段的地址空间没有重叠。其中,在随机指令初始化模块中,指令模版中添加保留寄存器和保留内存地址相关的约束,指令模版中添加保留寄存器相关的约束基本格式为{寄存器号,0},指令模版中添加保留内存地址相关的约束,基本格式为{起始地址末尾地址,0}。其中,在随机指令初始化模块中,增加寄存器初始化程序生成器,寄存器初始化程序生成器生成一段寄存器初始化程序代码,初始化待验证处理器中除在指令模版中添加保留寄存器和保留内存地址相关的约束中保留寄存器外的所有寄存器。其中,在随机指令初始化模块中,增加内存初始化程序生成器,内存初始化程序生成器生成一段内存初始化程序代码,初始化改造随机程序生成引擎中记录的随机生成的指令序列使用到的内存地址。内存初始化通常以页为单位,即初始化所有的随机生成的指令序列使用的内存地址所在的页。其中,在随机指令初始化模块中,增加指令计数器,指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目。其中,在随机指令生成模块中,改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,重新设计的随机程序生成引擎,不再包含寄存器初始化文件生成机制,即随机程序生成引擎不再生成寄存器初始化文件;重新设计的随机程序生成引擎,不再包含内存初始化文件生成机制,即随机程序生成引擎不再生成内存初始化文件;重新设计的随机程序生成引擎遵循在指令模版中添加保留寄存器和保留内存地址相关的约束中添加的保留寄存器和保留内存地址相关的约束,即随机程序生成引擎不使用保留的寄存器和保留的内存地址。其中,在随机指令生成模块中,改造随机程序生成引擎,改变原有指令序列产生终止条件,保证在指令序列最末尾的指令为跳转指令,改变原有指令序列产生终止条件包括总体指令产生数目减1,在指令序列最末尾放置一条跳转指令。其中,在随机指令记录比较模块中,增加随机生成程序记录器,随机生成程序记录器记录随机生成的指令序列的汇编代码段和二进制代码段,分别生成两个文件,即汇编代码段文件和二进制代码段文件。随机生成程序记录器还要记录随机生成的指令序列中每条指令对应的指令计数器(ProgramCounter)的值以及每条指令对应的转换后援存储器(Translationlookasidebuffer,简称TLB)页号,分别生成两个文件。其中,在随机指令记录比较模块中,增加寄存器比较程序生成器,寄存器比较程序生成器生成一段寄存器比较程序代码,比较运行增加随机生成程序记录器中记录的随机生成的指令序列后,待验证处理器中所有的寄存器值和指令级处理器模拟器的模拟结果中寄存器的值;寄存器比较程序生成器生成的程序代码段顺序比较所有的寄存器结果值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。其中,在随机指令记录比较模块中,增加寄存器比较程序生成器,如果增加寄存器初始化程序生成器中寄存器初始化程序生成器初始化寄存器时保留了23个通用寄存器没有初始化,则寄存器比较程序生成器生成的程序代码段顺序比较寄存器结果值时跳过没有初始化的几个寄存器。其中,在随机指令记录比较模块中,增加内存比较程序生成器,内存比较程序生成器生成一段内存比较程序代码,把待验证处理器运行全部增加随机生成程序记录器中记录的随机生成的指令序列后全部缓存(Cache)的内容刷新到内存中,比较待验证处理器运行全部增加随机生成程序记录器中记录的随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行全部增加随机生成程序记录器中记录的随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息到日志文件中,同时在日志文件中记录指令模板中随机生成这个发生错误的指令序列的随机种子数及指令模板对应的配置文件名。其中,在平台装载模块中,指定内存中寄存器初始化程序生成器生成的程序代码段装载的起始位置,为了不干扰待装载软件平台的正常运行,内存中寄存器初始化程序生成器生成的程序代码段装载在用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。其中,在平台装载模块中,指定内存初始化程序生成器生成的程序代码段在内存中装载的起始位置,为了不干扰待装载软件平台的正常运行,内存初始化程序生成器生成的程序代码段装载在内存中用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。其中,在平台装载模块中,指定增加随机生成程序记录器中记录的随机生成的指令序列在内存中装载的起始位置,为了不干扰待装载软件平台的正常运行,内存中随机生成的指令序列装载在用户态地址空间,即装载的起始位置加指令序列程序代码段实际长度应不超出用户态地址空间。其中,在平台装载模块中,指定内存中寄存器比较程序生成器生成的程序代码段装载的起始位置,为了不干扰待装载软件平台的正常运行,内存中寄存器比较程序生成器生成的程序代码段装载在用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。其中,在平台装载模块中,指定内存比较程序生成器生成的程序代码段在内存中装载的起始位置,为了不干扰待装载软件平台的正常运行,内存比较程序生成器生成的程序代码段装载在内存中用户态地址空间,即装载的起始位置加程序代码段实际长度应不超出用户态地址空间。其中,在平台装载模块中,指定的全部起始位置加对应的代码段长度满足递增关系,即指定内存中寄存器初始化程序生成器生成的程序代码段装载的起始位置<寄存器初始化程序生成器生成的程序代码段结束位置<指定内存初始化程序生成器生成的程序代码段在内存中装载的起始位置<内存初始化程序生成器生成的程序代码段结束位置<指定随机生成的指令序列在内存中装载的起始位置<随机生成的指令序列结束位置<指定内存中寄存器比较程序生成器生成的程序代码段装载的起始位置<寄存器比较程序生成器生成的程序代码段结束位置<指定内存比较程序生成器生成的程序代码段在内存中装载的起始位置<内存比较程序生成器生成的程序代码段结束位置。尽管参照优选实施例已经描述了本发明,本领域熟练技术人员将认识到,可以进行形式和细节上的改变,只要不脱离本发明的精神和范围。本发明试图不局限于被公开的具体实施例,如预期用于实施本发明的最佳模式,相反,本发明将包括落入附加权利要求的范围的全部实施例。权利要求一种用于制造后处理器芯片验证的随机验证方法,其特征在于,所述方法包括下面的步骤S1在指令模版中添加保留寄存器和保留内存地址相关的约束,用于屏蔽保留寄存器和保留内存地址不被生成的随机验证程序使用;S2增加寄存器初始化程序生成器、内存初始化程序生成器和指令计数器;S3改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,并改变原有指令序列产生终止条件;S4增加随机生成程序记录器、寄存器比较程序生成器和内存比较程序生成器;S5将运用所述步骤S1到步骤S4的用于制造后处理器芯片验证的随机指令生成方法后生成的文件转化为软件平台可调度的文件格式;S6指定所述步骤S1到步骤S4的用于制造后处理器芯片验证的随机指令生成方法中寄存器初始化程序生成器、内存初始化程序生成器、寄存器比较程序生成器以及内存比较程序生成器所生成的程序代码段以及随机生成的指令序列在内存中装载的起始位置;S7将所述步骤S5转化为软件平台可调度的文件格式的程序代码段以及随机生成的指令序列分别按照所述步骤S6中指定的起始位置装载进相应的内存地址中。2.如权利要求1所述的方法,其特征在于,所述步骤S2中,指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目。3.如权利要求1所述的方法,其特征在于,所述步骤S4中,随机生成程序记录器记录随机生成的指令序列的汇编代码段、二进制代码段、序列中每条指令对应的指令计数器的值以及每条指令对应的转换后援存储器页号。4.如权利要求1所述的方法,其特征在于,所述步骤S4中,寄存器比较程序生成器生成寄存器比较程序代码,比较运行随机生成的指令序列后待验证处理器中除所述步骤1中保留寄存器外的所有寄存器值和指令级处理器模拟器的模拟结果中对应寄存器的值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息。5.如权利要求1所述的方法,其特征在于,所述步骤S4中,内存比较程序生成器生成内存比较程序代码,把待验证处理器运行随机生成的指令序列后全部缓存的内容刷新到内存中,比较待验证处理器运行随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息。6.如权利要求1所述的方法,其特征在于,所述步骤S6中,包括随机生成的指令序列在内的所有程序代码段都应装载在内存中用户态地址空间,且装载不同程序代码段的地址空间没有重叠。7.一种用于制造后处理器芯片验证的随机验证装置,其特征在于,所述装置包括随机指令初始化模块,用于在指令模版中添加保留寄存器和保留内存地址相关的约束,以及增加寄存器初始化程序生成器、内存初始化程序生成器和指令计数器;随机指令生成模块,用于改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,并改变原有指令序列产生终止条件;随机指令记录比较模块,用于增加随机生成程序记录器、寄存器比较程序生成器和内存比较程序生成器;平台装载模块,用于转化所述随机指令生成模块和所述随机指令记录比较模块生成的文件为软件平台可调度的文件格式,指定所述寄存器初始化程序生成器、内存初始化程序生成器、寄存器比较程序生成器以及内存比较程序生成器所生成的程序代码段以及随机生成的指令序列在内存中装载的起始位置,并按照所述起始位置分别装载被转化后的以软件平台可调度的文件为格式的程序代码段和指令文件。8.如权利要求7所述的装置,其特征在于,所述指令计数器包含指令累加器和计数比较器两部分,指令累加器用于累加并统计生成的随机指令数目,计数比较器用于比较生成的随机指令数目是否达到指令模板要求的指令数目。9.如权利要求7所述的装置,其特征在于,所述随机生成程序记录器记录随机生成的指令序列的汇编代码段、二进制代码段、序列中每条指令对应的指令计数器的值以及每条指令对应的转换后援存储器页号。10.如权利要求7所述的装置,其特征在于,所述寄存器比较程序生成器生成寄存器比较程序代码,比较运行随机生成的指令序列后待验证处理器中除随机指令初始化模块中保留寄存器外的所有寄存器值和指令级处理器模拟器的模拟结果中对应寄存器的值,结果一致则继续比较下一个寄存器,直到所有寄存器比较完毕,结果不一致则记录出错信息。11.如权利要求7所述的装置,其特征在于,所述内存比较程序生成器生成内存比较程序代码,把待验证处理器运行随机生成的指令序列后全部缓存的内容刷新到内存中,比较待验证处理器运行随机生成的指令序列后内存中内容发生过变化的地址对应的值与同样运行随机生成的指令序列后指令级处理器模拟器的模拟结果中相应内存地址保存的内容,结果全部一致则结束随机验证过程,结果不一致则记录出错信息。12.如权利要求7所述的装置,其特征在于,所述平台装载模块,包括随机生成的指令序列在内的所有程序代码段都装载在内存中用户态地址空间,且装载不同程序代码段的地址空间没有重叠。全文摘要本发明公开了一种用于制造后处理器芯片验证的随机验证方法及装置。方法包括如下步骤在指令模版中添加保留寄存器和保留内存地址相关的约束;增加寄存器初始化程序生成器、内存初始化程序生成器和指令计数器;改造随机程序生成引擎,去除原有的寄存器初始化文件生成机制和内存初始化文件生成机制,并改变原有指令序列产生终止条件;增加随机生成程序记录器、寄存器比较程序生成器和内存比较程序生成器;将运用前述用于制造后处理器芯片验证的随机指令生成方法后生成的文件转化为软件平台可调度的文件格式;指定不同程序代码段在内存中装载的起始位置;将转化为软件平台可调度的文件格式的程序代码段按照指定的起始位置装载进相应的内存地址中。文档编号G06F11/36GK101826050SQ20101010463公开日2010年9月8日申请日期2010年2月3日优先权日2010年2月3日发明者沈海华,王朋宇,黄静申请人:北京龙芯中科技术服务中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1