首页> 中国专利> 在微处理器用户态随机验证中实现核心态程序验证的方法

在微处理器用户态随机验证中实现核心态程序验证的方法

摘要

本发明公开了一种在微处理器用户态随机验证中实现核心态程序验证的方法。该方法包括:a)在指令模版中添加异常处理相关的约束;b)对指令级随机验证产生引擎进行改进;c)在指令级处理器模拟器中加入核心态指令的执行机制,设置寄存器,在系统运行核心态指令时提供正确结果;d)在指令过滤器中加入步骤a)中所添加的异常处理相关的约束的过滤装置;e)在仿真环境中加入异常监测逻辑和控制寄存器更新逻辑;f)在仿真环境提供的存储器中预存异常处理程序。本发明具有验证全面、验证效率高的优点。

著录项

  • 公开/公告号CN1892616A

    专利类型发明专利

  • 公开/公告日2007-01-10

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN200610078226.9

  • 发明设计人 沈海华;胡伟武;

    申请日2006-05-12

  • 分类号G06F11/36(20060101);

  • 代理机构11280 北京泛华伟业知识产权代理有限公司;

  • 代理人高存秀

  • 地址 100080 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-12-17 18:08:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-04-22

    专利实施许可合同备案的生效 IPC(主分类):G06F11/36 合同备案号:2015990000066 让与人:中国科学院计算技术研究所 受让人:龙芯中科技术有限公司 发明名称:在微处理器用户态随机验证中实现核心态程序验证的方法 申请公布日:20070110 授权公告日:20080723 许可种类:普通许可 备案日期:20150211 申请日:20060512

    专利实施许可合同备案的生效、变更及注销

  • 2015-03-18

    专利实施许可合同备案的注销 IPC(主分类):G06F11/36 合同备案号:2010990000062 让与人:中国科学院计算技术研究所 受让人:龙芯中科技术有限公司 解除日:20141231 申请日:20060512

    专利实施许可合同备案的生效、变更及注销

  • 2010-03-31

    专利实施许可合同的备案 合同备案号:2010990000062 让与人:中国科学院计算技术研究所 受让人:北京龙芯中科技术服务中心有限公司 发明名称:在微处理器用户态随机验证中实现核心态程序验证的方法 授权公告日:20080723 许可种类:排他许可 备案日期:2010.1.28 合同履行期限:2009.12.16至2028.12.31合同变更 申请日:20060512

    专利实施许可合同的备案

  • 2008-07-23

    授权

    授权

  • 2007-03-07

    实质审查的生效

    实质审查的生效

  • 2007-01-10

    公开

    公开

查看全部

说明书

技术领域

本发明微处理器验证技术,特别涉及一种在微处理器用户态随机验证中实现核心态程序验证的方法。

背景技术

模拟仿真是处理器验证的常用方法。在进行模拟仿真时,测试向量的广泛覆盖是非常重要的。测试向量的产生可以采用多种方法,其中主要的方法包括指令集随机测试产生、手写测试向量和应用程序封装等。

许多RISC架构处理器可以将指令运行在多种模式上,根据不同的运行模式使用不同的地址空间。以MIPS CPU为例,一个MIPS CPU可以将指令运行在两种优先级别上:用户态和核心态。以MIPS R4000为例,32位模式的用户态可用空间为0x00000000~0x7fffffff共2Gbyte(231),64位模式的用户态可用空间为0x0000000000000000~0x000000ffffffffff共1Tbyte(240)。在用户态模式下,程序地址超越用户态地址边界是非法的,将导致系统陷入异常。而在核心模式下,CPU的权限不受任何限制。除了使用地址空间的差异,MIPS CPU在用户态和核心态模式执行的指令也存在差异。有些指令只能运行在核心态模式下或运行在用户态模式会导致系统异常并带来一系列的CPU控制寄存器的复杂变化。尽管与MIPS CPU的指令集定义有所不同,但是其它RISC架构的处理器,例如SUN SPARC等,也具有类似的机制。

对于RISC架构的处理器来说,在验证过程中充分测试用户态和核心态模式十分重要。由于在核心态模式运行的指令必须处理各种控制寄存器的复杂变化以及由此带来的指令运行方式的变化,特别是可能的异常/例外嵌套,会使程序的行为变得难以预测。指令级随机验证通常在用户态模式下运行。如图1所示,在用户态模式下运行的微处理器随机验证,通常包括六个部分:指令库11,指令模版12、产生引擎13、指令级处理器模拟器14、指令过滤器15、仿真环境16。指令库11中包含处理器支持的所有有效指令;指令模版12是一系列配置文件,用于进行指令的配置和规范,在用户态模式下运行的指令级随机验证系统的指令模版通常会对引起异常的核心态指令加以限制;产生引擎13可以有效支持配置文件约束下的指令生成;指令级模拟器14是待验证的微处理器的最简单参考模型,支持指令级仿真,提供指令的正确执行结果,同时更新指令级处理器模拟器状态;用户态模式的指令,运行在不同的操作数或控制寄存器配置环境下也可能导致系统异常,指令过滤器15根据指令级模拟器提供的执行结果判断产生的指令在用户态模式下运行是否会引起异常,如果会引起异常则及时抛弃引起异常的指令,同时恢复指令产生前的指令级处理器模拟器状态;仿真环境16是包裹在待验证处理器外层的一系列逻辑和操作,主要包括初始化、输入/输出和比较逻辑,可以执行初始化、输入/输出和信号比较等一系列操作。

进行用户态模式随机验证时,产生引擎13根据指令模版12提供的约束从指令库11中选取符合要求的操作码,加入符合约束的操作数,产生出一条符合约束的指令,提供给指令级处理器模拟器14,指令的模拟结果送入指令过滤器15,如果产生的指令会引起系统异常则直接抛弃并恢复该条指令产生前的指令级处理器模拟器状态,则重新产生下一条指令,否则提供指令的模拟结果给仿真环境中的比较逻辑,同时将产生的指令也提供给仿真环境,经处理器执行后,将结果也输出到仿真环境中的比较逻辑,通过二者比较可以检测处理器设计中的错误。

而目前针对核心态指令验证主要依赖手写测试向量和一些应用程序封装的测试向量来完成。用户态随机验证的优势在于对测试向量的约束很灵活,可以是完全约束的指令序列,使其命中指定的测试点,也可以是完全随机的测试序列集,使测试向量尽可能覆盖到角落(corner)状态。与之相比,应用程序封装的测试向量,例如linux,spec cpu 2000,作为固定的指令序列只覆盖有限的固定测试点。而手写测试向量的方法通过列举核心态的指令及控制寄存器的各种状态,采用专家人工书写针对各个测试点的测试向量,这种方法最大的缺点是耗费大量的人工劳动,效率低下,同时,由于核心态指令及控制寄存器的状态组合非常复杂,难以穷举,手写测试向量很难均匀覆盖所有的测试点。显然,只依赖手写测试向量和一些应用程序封装的测试向量无法完成对处理器核心态指令的充分验证。提供一种新方法,在用户态指令级随机验证中支持核心态指令验证,对于更好地进行处理器验证十分重要。

实际上,异常处理是系统进入核心态的重要方式。MIPS R4000异常发生的类型及处理优先级由高到低依次是Reset(重置),soft Reset(软重置),NonmaskableInterrupt(不可屏蔽中断),Address error in instruction fetch(取指地址错),TLB refill in instruction fetch(取指缺页),TLB invalid in instruction fetch(取指页失效),Cache error in instruction fetch(取指缓存错),VirtualConherency in instruction fetch(取指虚一致性错),Bus error in instructionfetch(取指总线错),Integer overflow(整数溢出),Trap(陷阱),System Call(系统调用),Breakpoint(断点),Reserved Instruct ion(保留指令),CoprocessotUnusable(协处理器不可用),Floating-Point Exception(浮点例外),Addresserror in data access(数据访问地址错),TLB refill in data access(数据访问缺页),TLB invalid in data access(数据访问页失效),TLB modified in dataaccess(数据访问),Cache error in data access(数据访问缓存错),Watch(监控异常),Virtual Conherency in data access(数据访问虚一致性错),Bus errorin data access(数据访问总线错),Interrupt(中断)。系统异常发生后程序会转向固定入口地址,不考虑Reset,soft Reset,Nonmaskable Interrupt,64位MIPS处理器常用异常入口地址参见表1。

                      表1

 控制寄存器BEV位  异常种类  入口地址  0  TLB Refill  0xFFFFFFFF 80000000  Cache Error  0xFFFFFFFF A0000100  Others  0xFFFFFFFF 80000180  1  TLB Refill  0xFFFFFFFF BFC00200  Cache Error  0xFFFFFFFF BFC00300  Others  0xFFFFFFFF BFC00380

综上所述,由于现有技术的不足,人们希望有一种在微处理器用户态随机验证中实现核心态程序验证的方法,在保持传统用户态指令级随机验证优势的同时,有效支持核心态指令的验证,提高处理器验证的充分性。

发明内容

本发明的目的是克服现有的处理器核心态指令验证依赖手写测试向量和应用程序封装的测试向量来完成的不足,提供一种在微处理器用户态随机验证中实现核心态程序验证的方法。

为了达到上述目的,本发明是通过以下技术方案实现的:

一种在微处理器用户态随机验证中实现核心态程序验证的方法,包括如下步骤:

a)在指令模版中添加异常处理相关的约束,包括允许发生异常处理的类型和数目;

b)对指令级随机验证产生引擎进行改进,加大TLB项数,改变原有指令序列产生终止条件,使得在指令序列最末尾的两条指令为例外触发指令;

c)在指令级处理器模拟器中加入核心态指令的执行机制,在系统运行核心态指令时提供正确结果;

d)在指令过滤器中加入步骤a)中所添加的异常处理相关的约束的过滤装置,包括异常处理计数器、异常类型过滤器、比较逻辑及输出信号;

e)在仿真环境中加入异常监测逻辑和控制寄存器更新逻辑;

f)在仿真环境提供的存储器中预存TLB refill,Integer overflow,Trap,System Call,Breakpoint,Floating-Point Exception异常处理程序。

在上述方案中,在所述步骤a)中,允许发生异常处理的类型包括:TLB refill,Integer overflow,Trap,System Call,Breakpoint,Floating-Point Exception。

在上述方案中,在所述步骤b)中,加大后的TLB项数可以为待验证处理器物理TLB项数的1~64倍之间的任意数;

在上述方案中,在所述步骤b)中,改变原有指令序列产生终止条件包括:总体指令产生数目减2,在产生程序结尾的最后四条指令时保留程序计数器(ProgramCounter,简称PC)值和跳转指令标示,在指令序列最末尾放置两条SYSCALL指令。

在上述方案中,在所述步骤d)中,在指令过滤器中加入的输出信号是一位的指令保存/取消信号,值为1标示取消指令,值为0标示保留指令,初始值设0;

在上述方案中,在所述步骤d)中,在指令过滤器中加入的异常类型过滤器接收指令级处理器模拟器的执行结果信号,把输入的异常类型与步骤a)中允许发生的异常处理类型相比较,比较结果不一致则设输出信号为1,一致则输出信号不变;

在上述方案中,在所述步骤d)中,在指令过滤器中加入的异常处理计数器统计并累加输入的异常信号数,把输入的异常信号数与步骤a)中允许发生的异常处理数目相比较,输入的异常信号数大于允许发生的异常处理数目则设输出信号为1,否则输出信号不变;

在上述方案中,在所述步骤d)中,在指令过滤器中加入的比较逻辑包括:异常数目比较逻辑和异常类型比较逻辑,前者用于比较输入的异常信号数与步骤a)中允许发生的异常处理数目的大小,后者用于比较输入的异常类型与步骤a)中允许发生的异常处理类型是否一致。

在上述方案中,在所述步骤e)中,在仿真环境中添加的异常监测逻辑包括监测处理器结果总线上异常发生的逻辑和监测处理器结果总线上异常类型的逻辑,异常类型监测逻辑只有在异常发生监测逻辑生效时才生效;

在上述方案中,在所述步骤e)中,在仿真环境中添加的异常监测逻辑监测到指令序列末尾的SYSCALL后停止工作,直到监测到异常处理程序返回指令ERET后,再进行存储器比较;

在上述方案中,在所述步骤e)中,在仿真环境中添加的控制寄存器BEV位更新逻辑在异常监测逻辑检测到异常发生时有效,并根据异常监测逻辑监测到的异常类型强制更新控制寄存器BEV位,TLB refill、Integer overflow、Floating-PointException设置BEV位为0,Trap、System Call、Breakpoint设置BEV位为1;

在上述方案中,在所述步骤f)中,在仿真环境中预存异常处理程序的存储器是只读存储器(ROM)和随机存储器(RAM),ROM中存放核心态异常处理程序,RAM中存放用户态异常处理程序;

在上述方案中,在所述步骤f)中,在仿真环境RAM中存放TLB refill、Integeroverflow、Floating-Point Exception的异常处理程序,TLB refill异常入口地址为0xFFFFFFFF 80000000,其它入口地址为0xFFFFFFFF 80000180;

在上述方案中,在所述步骤f)中,在仿真环境ROM中存放Trap、System Call、Breakpoint的异常处理程序,异常入口地址为0xFFFFFFFF BFC00380;

在上述方案中,在所述步骤f)中,在仿真环境中预存的异常处理程序结构的初始部分必须保存所有异常处理程序体中用到的寄存器,结尾部分释放所有保存的寄存器值,保持进出异常处理程序时通用寄存器和存储器现场不变;

在上述方案中,在所述步骤f)中,在仿真环境中预存TLB refill异常处理程序入口地址的首页存放虚实页号转换表,异常处理程序根据发生缺失页的虚页号,查找虚实页号转换表,找到实页号进行换页操作;

在上述方案中,在所述步骤f)中,在仿真环境中为指令产生序列末尾的SYSCALL指令预存的异常处理程序用CACHE指令写回所有缓存中的数据到存储器中。

与现有技术相比,本发明的有益效果是:

本发明对传统的用户模式指令级随机验证技术进行了有效改进,使之在保持传统指令级随机验证优势的同时,有效支持核心态指令的验证,具体包括两方面:

1)验证更全面:由于核心态指令及控制寄存器的状态组合非常复杂,传统的手写测试向量和应用程序封装的测试向量很难做到对核心态验证空间的均匀覆盖,而本发明依托指令级随机验证方法,在用户态指令级随机验证中支持核心态指令验证,使测试向量对验证空间的覆盖更加广泛、均匀。

2)验证效率高:指令级随机验证主要支持用户态处理器验证,基本可以实现测试向量自动产生和验证,节省大量人力资源,效率高;核心态处理器验证主要依赖手写测试向量和一些应用程序封装完成,需要大量的验证专家的人工劳动,效率低;本发明有效融合用户态和核心态处理器验证的过程,提高处理器验证的整体效率。

附图说明

图1是现有技术中用户态模式指令级随机验证系统结构示意图;

图2是本发明应用于指令级随机验证系统的实施方法流程图;

图3是本发明应用于指令级随机验证系统的一个具体实施例示意图;

图4是本发明应用于指令级随机验证系统的异常处理程序具体实施例示意图;

图5是本发明应用于指令级随机验证系统的执行过程流程图;

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细描述:

如图2所示,一种在微处理器用户态随机验证中实现核心态程序验证的方法,包括以下步骤:

步骤1,在指令模版中添加异常处理相关的约束,包括允许发生异常处理的类型和数目;

步骤2,对指令级随机验证产生引擎进行改进,加大TLB项数,改变原有指令序列产生终止条件,保证在指令序列最末尾的两条指令为SYSCALL;

步骤3,在指令级处理器模拟器中加入核心态指令Trap,System Call,Breakpoint的执行机制,根据指令手册设置寄存器,在系统运行核心态指令时提供正确结果;

步骤4,在指令过滤器中加入步骤1中所添加的异常处理相关的约束的过滤装置,包括异常处理计数器、异常类型过滤器、比较逻辑及输出信号;

步骤5,在仿真环境中加入异常监测逻辑和控制寄存器BEV位更新逻辑;

步骤6,在仿真环境提供的存储器中预存TLB refill,Integer overflow,Trap,System Call,Breakpoint,Floating-Point Exception异常处理程序;

下面结合图3和图4详细说明对应图2中示出方法的具体步骤:

在步骤1中,在指令模版中添加异常处理相关的约束主要包括两种:

步骤310,设置允许发生异常处理的类型,包括TLB refill,Integeroverflow,Trap,SystemCall,Breakpoint,Floating-Point Exception,例如“{TLB_REFILL,SYSCALL,FP_EXCEPT}”;

步骤311,设置新的参数用于约束异常处理发生的数目,参数形式采用绝对数字表示,例如“{EXCEPT 5}”。

在步骤2中,对指令级随机验证产生引擎进行改进,包括几个方面:

步骤320,加大TLB项数,为TLB refill异常的发生创造条件,加大后的TLB项数可以为待验证处理器物理TLB项数的1~64倍之间的任意数,例如1024;

步骤321,在指令序列最末尾放置两条SYSCALL指令,目的是在随机指令验证结束后可以通过SYSCALL异常处理写回所有缓存,进一步支持内存比较;根据MIPS指令集的规范,SYSCALL指令的指令码格式为:

31           26  25                                                                 6  5                 0

  000000  任意可用于调试信息传递的代码  001100

6                        20                                                                 6

步骤322,改变原有指令序列产生终止条件,包括:总体指令产生数目减2,在产生程序结尾最后四条指令时保留程序计数器(Program Counter,简称PC)值和跳转指令标示,保证SYSCALL异常处理后的正确返回。

在步骤3中,在指令级处理器模拟器中加入核心态指令Trap,System Call,Breakpoint的执行机制,在系统运行核心态指令时提供正确结果,具体包括:

步骤330,根据MIPS指令手册规范,在指令级处理器模拟器运行核心态指令时修改控制寄存器(Control Register简称CR);

步骤331,根据MIPS指令手册规范,在指令级处理器模拟器运行核心态指令时修改通用寄存器(General Register简称GR)。

在步骤4中,在指令过滤器中加入步骤1中所添加的异常处理相关的约束的过滤装置,具体包括:

步骤340,在指令过滤器中加入输出信号,输出信号是一位的指令保存/取消信号,值为1标示取消指令,值为0标示保留指令,初始值设0;

步骤341,在指令过滤器中加入异常类型过滤器,接收指令级处理器模拟器的执行结果信号,把输入的异常类型与步骤1中允许发生的异常处理类型相比较,比较结果不一致则设输出信号为1,一致则输出信号不变;

步骤342,在指令过滤器中加入异常处理计数器,统计并累加输入的异常信号数,把输入的异常信号数与步骤1中允许发生的异常处理数目相比较,输入的异常信号数大于允许发生的异常处理数目则设输出信号为1,否则输出信号不变;

步骤343,在指令过滤器中加入比较逻辑,包括异常数目比较逻辑和异常类型比较逻辑,前者用于比较输入的异常信号数与步骤1中允许发生的异常处理数目的大小,后者用于比较输入的异常类型与步骤1中允许发生的异常处理类型是否一致。

在步骤5中,在仿真环境中加入异常监测逻辑和控制寄存器BEV位更新逻辑,具体包括以下步骤:

步骤350,在仿真环境中添加的异常监测逻辑,包括监测处理器结果总线上异常发生的异常发生监测逻辑351和监测处理器结果总线上异常类型的异常类型监测逻辑352,只有在异常发生监测逻辑监测到异常发生后,异常类型监测逻辑才生效;

步骤353,在仿真环境中添加的异常监测逻辑监测到指令序列术尾的SYSCALL后停止工作,直到监测到异常处理程序返回指令ERET后,再进行存储器比较;

步骤354,在仿真环境中添加的控制寄存器BEV位更新逻辑用于控制寄存器BEV位的强制更新,在异常监测逻辑检测到异常发生时有效,根据异常监测逻辑监测到的异常类型强制更新控制寄存器BEV位,TLB refill、Integer overflow、Floating-Point Exception设置BEV位为0,Trap、System Call、Breakpoint设置BEV位为1。

在步骤6中,在仿真环境中预存异常处理程序的存储器是只读存储器(ROM)和随机存储器(RAM),ROM中存放核心态异常处理程序,RAM中存放用户态异常处理程序。对于允许发生的异常处理类型TLB refill,Integer overflow,Trap,System Call,Breakpoint,Floating-Point Exception,异常处理程序的存放如下:

步骤460,在仿真环境RAM中存放TLB refill、Integer overflow、Floating-Point Exception的异常处理程序,TLB refill异常入口地址为0xFFFFFFFF 80000000,其它入口地址为0xFFFFFFFF 80000180;

步骤461,在仿真环境ROM中存放Trap、System Call、Breakpoint的异常处理程序,异常入口地址为0xFFFFFFFF BFC00380;

步骤462,在仿真环境中预存TLB refill异常处理程序入口地址的首页存放虚实页号转换表,异常处理程序查找虚实页号转换表换页;表2是一个虚实页号转换表的具体实施例。

                  表2

  虚页号  实页号  110100100010001111001111000  1  110100100010001000111010001  2  011001010001100100010001011  3  …  ……  001010001100100110010001000  n

异常处理程序的设计包括:

步骤463,在仿真环境中预存的异常处理程序结构的初始部分保存所有异常处理程序体中用到的寄存器,结尾部分释放所有保存的寄存器值,保持进出异常处理程序时通用寄存器和存储器现场不变;

步骤464,TLB refill异常处理程序根据发生缺失页的虚页号,查找虚实页号转换表,找到实页号进行换页操作;

步骤465,入口地址为0xFFFFFFFF 80000180的异常处理程序体可以包含不会发生异常嵌套的任意小于32条的指令;

步骤466,在仿真环境中为指令序列末尾的SYSCALL指令预存的异常处理程序用CACHE指令写回所有缓存中的数据到存储器中,用于存储器比较。

下面结合图5和图2说明利用本发明提供的方法进行处理器指令级随机验证的过程:

步骤51,首先读取并解析指令模版;

步骤52,设定指令长度约束为指令模版设定的指令长度减2;

步骤53,仿真环境初始化;

步骤54,装载异常处理程序;

步骤55,判断已产生指令数是否与设定指令长度约束相匹配;若是,执行步骤580;若否,执行步骤560;

步骤560,根据指令模版中定义的各种约束从指令库中选取指令;

步骤561,随机指令产生引擎产生指令;

步骤562,产生引擎产生的指令被送入指令级处理器模拟器;

步骤563,根据模拟器输出结果判断指令是否会导致异常;若是,执行步骤564;若否则进行两个独立运算过程,分别执行步骤566和步骤587;

步骤564,指令模拟结果送入过滤器,检测产生的指令是否符合异常处理相关的约束;

步骤565,根据指令通过过滤器后的输出结果判断是否要取消产生的指令;若是,执行步骤55;若否,则进行两个独立运算过程,分别执行步骤566和步骤587;

步骤566,根据模拟器输出结果修改相应控制寄存器CR和通用寄存器GR;

步骤567,根据模拟器输出结果修改虚拟内存,然后执行步骤575;

步骤587,产生引擎产生的指令被送入仿真环境;

步骤588,仿真环境中的异常监测逻辑判断异常是否发生;若是,则判断并保存异常类型,执行步骤571;若否,执行步骤570;

步骤570,送入仿真验证环境的指令被装载入待测处理器中运行;然后执行步骤574;

步骤571,根据异常类型进行控制寄存器BEV位的更新,装载指令到待测处理器中运行;

步骤572,根据异常类型转异常入口地址执行异常处理程序;

步骤573,异常处理程序结束,返回仿真环境,执行步骤574;

步骤574,寄存器和内存中的执行结果输出到仿真环境中保存;

步骤575,同步等待模拟器结果送入仿真环境,用于后续步骤的比较操作;

步骤576,比较指令运行结果寄存器是否与指令级模拟器仿真结果一致?若是,则执行步骤577;若否,则执行步骤59;

步骤577,产生指令数加1,然后返回指令选取过程,执行步骤55;

步骤580,随机指令产生引擎产生两条SYSCALL指令;

步骤581,产生引擎产生的指令被送入仿真环境;

步骤582,仿真环境中的异常监测逻辑监测并发现SYSCALL异常发生,设置控制寄存器BEV位,并将指令装载入待测处理器中运行;

步骤583,转异常入口地址0xFFFFFFFF BFC00380执行异常处理程序;

步骤584,异常处理写回所有Cache有效项到内存;

步骤585,异常处理程序结束,返回仿真环境;

步骤586,比较指令运行结果内存是否与指令级模拟器仿真结果一致?若是,则结束整个验证过程;若否,则执行步骤59;

步骤59,发出指令出错警告;

步骤60,异常终止验证过程。

由上述可知,本发明通过在指令模版中添加异常处理相关约束,对指令级随机验证产生引擎进行部分改进,在指令级处理器模拟器中加入核心态指令的执行机制,在指令过滤器中加入异常处理相关的约束的过滤装置,以及在仿真环境中添加少量逻辑和预存异常处理程序,提供一种在微处理器用户态随机验证中实现核心态程序验证的方法,克服现有的处理器核心态指令验证依赖手写测试向量和应用程序封装的测试向量来完成的不足,在保持传统用户态指令级随机验证优势的同时,有效支持核心态指令的验证,提高处理器验证的充分性。

需要说明的是,本文中涉及的步骤,如果没有特别说明,就是指按照书写顺序向下执行。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号