公开/公告号CN1936860A
专利类型发明专利
公开/公告日2007-03-28
原文格式PDF
申请/专利权人 中国科学院计算技术研究所;
申请/专利号CN200510086445.7
申请日2005-09-20
分类号G06F11/36(20060101);
代理机构11280 北京泛华伟业知识产权代理有限公司;
代理人高存秀
地址 100080 北京市海淀区中关村科学院南路6号
入库时间 2023-12-17 18:25:15
法律状态公告日
法律状态信息
法律状态
2015-04-22
专利实施许可合同备案的生效 IPC(主分类):G06F11/36 合同备案号:2015990000066 让与人:中国科学院计算技术研究所 受让人:龙芯中科技术有限公司 发明名称:一种在指令级随机测试中支持EJTAG测试的实现方法 申请公布日:20070328 授权公告日:20080723 许可种类:普通许可 备案日期:20150211 申请日:20050920
专利实施许可合同备案的生效、变更及注销
2015-03-18
专利实施许可合同备案的注销 IPC(主分类):G06F11/36 合同备案号:2010990000062 让与人:中国科学院计算技术研究所 受让人:龙芯中科技术有限公司 解除日:20141231 申请日:20050920
专利实施许可合同备案的生效、变更及注销
2010-03-31
专利实施许可合同的备案 合同备案号:2010990000062 让与人:中国科学院计算技术研究所 受让人:北京龙芯中科技术服务中心有限公司 发明名称:一种在指令级随机测试中支持EJTAG测试的实现方法 授权公告日:20080723 许可种类:排他许可 备案日期:2010.1.28 合同履行期限:2009.12.16至2028.12.31合同变更 申请日:20050920
专利实施许可合同的备案
2008-07-23
授权
授权
2007-05-23
实质审查的生效
实质审查的生效
2007-03-28
公开
公开
查看全部
技术领域
本发明涉及微处理器验证技术,特别涉及一种在指令级随机测试中支持增强联合测试行动组(Enhanced Joint Test Action Group,以下简称EJTAG)测试的方法。
背景技术
指令级随机测试是通用微处理器验证的常用方法,如图1所示,通常包括五个部分:指令库11,指令模版12、产生引擎13、指令级模拟器14、仿真环境15。指令库11中包含处理器支持的所有有效指令;指令模版12是一系列配置文件,用于进行指令的配置、规范和过滤;产生引擎13可以有效支持配置文件约束下的指令生成;指令级模拟器14是待验证的微处理器的最简单参考模型,支持指令级仿真,提供指令的正确执行结果;仿真环境15是包裹在待验证处理器外层的一系列逻辑和操作,主要包括初始化、输入/输出和比较逻辑,可以执行初始化、输入/输出和信号比较等一系列操作。进行指令级随机测试时,产生引擎根据指令模版提供的约束从指令库中选取符合要求的操作码,加入符合约束的操作数,产生出一条符合约束的指令,提供给仿真环境,经处理器执行后,将结果输出到仿真环境中的比较逻辑;同时,该条指令也提供给指令级模拟器,指令的模拟结果作为参考值也提供给仿真环境中的比较逻辑,通过二者比较可以检测处理器设计中的错误。
随着嵌入式系统在越来越多的领域得到广泛的应用,嵌入式微处理器核的验证也越来越受到重视,许多原来应用在通用处理器的验证技术也被移植到嵌入式微处理器核的验证中。然而,嵌入式微处理器核的一些特性会对通用处理器验证技术提出新的挑战。与通用处理器不同,为了便于软件开发和调试,嵌入式微处理器核设计时需要提供交叉调试器。交叉调试器由功能处理模块、控制应用程序模块两部分组成:功能处理模块运行在宿主机上,控制应用程序模块运行在目标机上。交叉调试器主要功能是调试运行在目标机上的可执行代码,一般应能够提供执行程序、添加删除断点、单步执行、修改代码、查看和修改变量值等基本调试功能。
片上调试(On Chip Debugging)是实现交叉调试器的常用方法。在处理器内部嵌入额外的控制模块,当满足了一定的触发条件时进入某种特殊状态。在该状态下,被调试程序停止运行,主机的调试器可以通过处理器外部特设的通信接口访问各种资源(寄存器、存储器等)并执行指令。EJTAG是嵌入式CPU上由硬件实现的一个模块,用于实现片上调试,协助进行开发板监控程序和OS的移植、运行开发板诊断程序等。EJTAG可实现的功能包括采用多种模式设置硬件断点、单步执行等,实现方式:处理器在某个调试例外(包括单步调试,硬件断点等等)产生以后进入到调试模式下,一直到DERET指令执行以后从调试模式退出来。在这段时间里,处理器执行调试例外处理程序,在例外处理程序中,可以进行各种EJTAG操作。常见的EJTAG调试例外参见表1。系统退出调试模式以后允许应用程序或是系统代码继续执行。
对于包含EJTAG片上交叉调试器的嵌入式CPU验证,传统的指令级随机测试技术,只考虑连续指令的仿真验证,并未覆盖EJTAG的测试和验证,而作为嵌入式CPU的一个组成部分,针对EJTAG的验证显然是必不可少的。目前,测试EJTAG主要以手写测试向量的方法来实现,通过列举EJTAG的各种状态,采用专家人工书写针对各个测试点的测试向量,这种方法最大的缺点是耗费大量的人工劳动,效率低下,同时,由于EJTAG的各种状态组合非常复杂,难以穷举,手写测试向量很难均匀覆盖所有的测试点。
综上所述,由于现有技术的不足,人们希望提供一种改进的指令级随机测试嵌入式CPU的方法,在保持传统指令级随机测试优势的同时,有效支持包含EJTAG片上交叉调试器的微处理器核的测试和验证。
发明内容
本发明的目的是克服现有的指令级随机测试技术无法实现片上交叉调试器测试的不足,从而提供一种在指令级随机测试中支持EJTAG测试的方法,该方法可以有效支持包含EJTAG片上交叉调试器的微处理器核的测试和验证,同时不影响指令级随机测试原有的性能优势。
为了达到上述目的,本发明是通过以下技术方案实现的:
一种在指令级随机测试中支持EJTAG测试的实现方法,包括如下步骤:
a)在指令库中添加EJTAG调试指令SDBBP/DRET,指令SDBBP用于引起EJTAG调试例外,指令DRET用于调试例外返回;
b)在指令模版中加入步骤a)中所添加调试指令相关的约束;
c)对指令级随机测试产生引擎进行改进,加入存取指令判断、程序计数器(Program Counter,简称PC)随机抽取、存取地址记录、存取数据记录、跳转指令记录,同时添加相应的输出信号;
d)在指令级模拟器中加入调试指令SDBBP/DRET的执行机制,同时加入调试控制寄存器(Debug Control Register,简称DCR),在系统进入EJTAG调试中断时提供正确结果;
e)在仿真环境中加入信号输入、输出和比较逻辑;
f)在仿真环境提供的存储器中预存EJTAG调试例外处理程序;
在上述方案中,在所述步骤b)中,调试指令相关的约束包括:一个是每一条SDBBP指令必须有一条DRET指令与之相匹配,另一个是设置新的参数用于调整调试例外发生的比例。
在上述方案中,在所述步骤c)中,指令级随机测试产生引擎添加的输出信号包括:随机提取的程序计数器(PC)有效信号、load/store指令提示信号、随机抽取的与load/store指令相匹配的地址、随机抽取的与load/store指令相匹配的数据、与load/store指令相匹配的程序计数器(PC)值、分支转移指令提示信号、调试例外计数信号。
在上述方案中,在所述步骤d)中,指令级模拟器提供的在系统进入EJTAG调试中断时的正确执行结果包括:一是控制寄存器(Control Register简称CR)的修改,二是调试控制寄存器(Debug Control Register,简称DCR)的修改。
在上述方案中,在所述步骤e)中,在仿真环境中添加的输入信号即为所述步骤c)中产生引擎的输出信号包括:随机提取的程序计数器(PC)有效信号、load/store指令提示信号、随机抽取的与load/store指令相匹配的地址、随机抽取的与load/store指令相匹配的数据、与load/store指令相匹配的PC值、分支转移指令提示信号、调试例外计数信号;
在仿真环境中添加的输出信号包括:调试指令出错信号、程序计数器(PC)调试例外出错信号、地址调试例外出错信号、数据调试例外出错信号。
在上述方案中,在所述步骤e)中,在仿真环境中添加的比较逻辑包括,调试指令结果比较逻辑、程序计数器(PC)调试例外结果比较逻辑、地址调试例外结果比较逻辑、数据调试例外结果比较逻辑。
在上述方案中,在所述步骤f)中,在仿真环境中预存调试例外处理程序的存储器是只读存储器(ROM)或随机存储器(RAM)。
在上述方案中,在所述步骤e)中,仿真环境中添加的比较逻辑包括所有的通用寄存器(General Register简称GR)、浮点寄存器(Float Point Register简称FR)、控制寄存器(Congtrol Register,简称CR)和调试控制寄存器(Debug Control Register,简称DCR)的比较。
在上述方案中,在所述步骤e)中,仿真环境中添加的比较逻辑要求数据调试例外结果比较逻辑只在地址调试例外结果比较逻辑生效时才生效。
与现有技术相比,本发明的有益效果是:
对传统的指令级随机测试技术进行了有效改造,使之在保持传统指令级随机测试优势的同时,有效支持包含EJTAG片上交叉调试器的微处理器核的测试和验证,具体包括两方面:
1)测试更全面:传统的手写测试向量很难做到对所有测试空间的均匀覆盖,而依托随机测试产生,可以使测试向量对测试空间的覆盖更加全面、均匀。
2)测试效率高:手写测试向量需要大量的测试专家的人工劳动,效率低,而随机测试产生基本可以实现测试向量的自动生成,节省大量人力资源,效率高。
附图说明
图1是现有技术中指令级随机测试系统结构示意图;
图2是本发明应用于指令级随机测试系统的实施方法流程图;
图3是本发明应用于指令级随机测试系统的一个具体实施例示意图;
图4是本发明应用于指令级随机测试系统的执行过程流程图;
表1常见EJTAG调试例外;
表2调试例外处理程序返回地址;
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细描述:
如图2所示,一种在指令级随机测试中支持EJTAG测试的方法,包括以下步骤:
步骤1,在指令库中添加EJTAG调试指令SDBBP/DRET;
步骤2,在指令模版中加入调试指令相关的约束;
步骤3,对指令级随机测试产生引擎进行改进,加入存取指令判断、程序计数器随机抽取、存取地址记录、存取数据记录、跳转指令记录,同时添加相应的输出信号;
步骤4,在指令级模拟器中加入调试指令SDBBP/DRET的执行机制,同时加入调试控制寄存器(DCR),在系统进入EJTAG调试中断时提供正确结果;
步骤5,在仿真环境中加入信号输入、输出和比较逻辑;
步骤6,在仿真环境提供的存储器中预存调试例外处理程序;
下面结合图3详细说明对应图2中示出方法的各步骤:
在步骤1中,对于在指令库31中添加EJTAG调试指令包括两个方面:
步骤310,在指令库中加入调试指令的指令名称“SDBBP”和“DRET”;
步骤311,在指令库中加入调试指令SDBBP/DRET的指令码;根据无内部互锁流水级的处理器(Microprocessor without Interlocked Piped Stages,简称MIPS)指令集的规范,32位SDBBP的指令码格式为:
31 26 25 6 5 0
6 20 6
DRET的指令码格式为:
31 26 25 24 6 5 0
6 1 19 6
在步骤2中,对于在指令模版32中加入调试指令相关的约束包括两种:
步骤320,一种是每一条SDBBP指令必须有一条DRET指令与之相匹配,例如“{SDBBP,DRET}”。
步骤321,另一种是设置新的参数用于调整调试例外发生的比例,参数形式可以采用绝对或相对比例数字,例如“SDBBP 1%”。
在步骤3中,对于指令级随机测试产生引擎33的改进包括如下方面:
步骤330,添加存取指令判断逻辑;
步骤331,通过识别操作码标记并记录所有的load/store存取指令;
步骤332,进一步保存所有load/store指令的存取地址记录和存取数据记录;
步骤333,添加分支转移指令判断;
步骤334,通过识别操作码标记并记录分支转移指令;
步骤335,从程序计数器栈中随机抽取程序计数器值并加以记录;
步骤336,添加相应的输出信号,输出信号有七种:一是随机提取的PC有效信号,二是load/store指令提示信号,三是随机抽取的与load/store指令相匹配的地址,四是随机抽取的与load/store指令相匹配的数据,五是与load/store指令相匹配的PC值,六是分支转移指令提示信号,七是调试例外计数信号。
在步骤4中,分为如下过程:
步骤340,对于在指令级模拟器34中加入调试指令SDBBP/DRET的执行机制;首先添加调试指令入口,可通过标准操作码或内部自定义编码标示入口;
步骤341,调试例外提示信号设置;
步骤342,虚拟存储器的修改;
步骤343,通用控制寄存器(CR)和调试控制寄存器(DCR)的修改。
在步骤5中,对于在仿真环境35中加入信号输入、输出和比较逻辑,具体过程如下:
步骤350,添加输入信号,即为步骤3中指令级随机测试产生引擎的输出信号(即参见步骤336),共有七种:一是随机提取的PC有效信号,二是load/store指令提示信号,三是随机抽取的与load/store指令相匹配的地址,四是随机抽取的与load/store指令相匹配的数据,五是与load/store指令相匹配的PC值,六是分支转移指令提示信号,七是调试例外计数信号;
步骤351,添加比较逻辑,有四种,一是调试指令结果比较逻辑,识别SDBBP/DRET调试指令,将所有待测微处理器的GR、FR、CR和DCR的值与指令模拟器的输出进行比较,二是PC调试例外结果比较逻辑,识别PC断点,将所有待测微处理器的GR、FR、CR和DCR的值与指令模拟器的输出进行比较,三是地址调试例外结果比较逻辑,识别LOAD/STORE指令的地址,将所有待测微处理器的GR、FR、CR和DCR的值与指令模拟器的输出进行比较,四是数据调试例外结果比较逻辑,在LOAD/STORE指令地址匹配的基础上,识别LOAD/STORE指令的被存取数据,将所有待测微处理器的GR、FR、CR和DCR的值与指令模拟器的输出进行比较;仿真环境中添加的比较逻辑要求数据调试例外结果比较逻辑只在地址调试例外结果比较逻辑生效时才生效;根据调试例外提示信号,所有比较逻辑的结果送至步骤352中相应的输出信号。
步骤352,仿真环境中添加输出信号,有四种,一是调试指令出错信号,二是PC调试例外出错信号,三是地址调试例外出错信号,四是数据调试例外出错信号。
在步骤6中,对于在仿真环境提供的存储器中预存调试例外处理程序,在仿真环境中提供的存储器可以是只读存储器(Read-only Memory,简称ROM),也可以是随机存储器(Random Access Memory,简称RAM);本实施例采用ROM;预存的调试例外处理程序可以采用手写或随机产生,但返回地址需要根据步骤5中输入的分支转移指令提示信号和比较逻辑的不同结果组合分别处理,参见表2。
下面结合图4和图2说明利用本发明提供的方法进行嵌入式CPU验证的过程:
步骤41,首先读取并解析指令模版;
步骤42判断指令长度是否与指令模版中的约束参数相匹配;若是,则结束整个验证过程,执行步骤48;若否,执行步骤43;
步骤43,根据指令模版中定义的各种约束从指令库中选取指令;
步骤44,随机指令产生引擎产生指令;
步骤440,分支转移指令判断;若是,执行步骤441;若否,执行步骤442;
步骤441,通过识别操作码标记并记录所有的分支转移指令,执行步骤442;
步骤442,load/store存取指令判断;若是,执行步骤443;若否,执行步骤444;
步骤443,load/store存取指令及其存取地址记录和存取数据记录;
步骤444,完成PC值随机抽取和记录;然后进行两个独立运算过程,分别执行步骤46和步骤47;
步骤46,产生引擎产生的指令被送入指令级模拟器;
步骤460,判断是否为EJTAG断点指令;若是,执行步骤461;若否执行步骤462;
步骤461,根据具体调试断点类型修改相应的CR、DCR,同时设置例外提示信号,然后执行步骤472;
步骤462,直接修改GR、FR、其他CR和内存,然后执行步骤472;
步骤47,产生引擎产生的指令被送入方针环境;
步骤470,送入仿真验证环境的指令被装载入待测微处理器中运行;
步骤471,保存在寄存器和内存中的结果由信号线输出到仿真环境中;
步骤472,同步等待模拟器结果送入仿真环境,用于后续步骤的比较操作;
步骤473,在仿真环境中判断是否发生了调试断点例外;若是,执行步骤474;若否,执行步骤475;
步骤474,比较调试例外运行结果是否与指令级模拟器仿真结果一致?若是,执行步骤475;若否,执行步骤476;
步骤475,比较标准指令运行结果是否与指令级模拟器仿真结果一致?若是,则返回指令选取过程,执行步骤42;若否,执行步骤477;
步骤476,发出调试例外出错警告,执行步骤49;
步骤477,发出标准指令出错警告;执行步骤49;
步骤49,异常终止验证过程。
由上述可知,本发明的优点是通过在指令库和指令模版中添加EJTAG调试指令及相关约束,在指令级随机测试产生引擎和仿真环境中添加少量比较逻辑和记录操作,克服了现有的指令级随机测试技术在片上交叉调试器测试领域的不足,有效支持EJTAG测试。
需要说明的是,本文中涉及的步骤,如果没有特别说明,就是指按照书写顺序向下执行。
最后应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
机译: 一种以M成功形式实现伪随机测试信号中的错误的方法
机译: 将数据记录在记录介质上的方法,再现记录在具有驱动数据输入区域,数据区域的记录介质上的数据的方法以及从行中排开的数据驱动区域,用于再现和 /或相对于记录介质写入数据。用于记录和/或再现记录在记录介质中的数据的设备,其中驱动数据的输入区域,数据区域和驱动数据的驱动区域按顺序排列用于记录设备和/或复制的一行光学记录介质。该记录介质可以通过计算机进行读取,并由处理指令编码,以实现通过以下方式在记录介质上记录数据的方法:记录介质可以为我获取它,然后由处理指令编码的计算机读取该记录介质,以实现一种再现记录在具有保险的记录介质中的数据的方法以及驱动
机译: 在无线网络中管理无线电资源的方法;每台机器的指令程序,有形地体现在一种信息支持手段中,并且可由数字数据处理器执行,以执行针对控制信道重配置的动作。网络元素;移动台;和用于操作网络节点B的方法,