[发明专利]面向兼容设计的微处理器硅后验证装置与验证方法有效
申请号: | 201510004794.3 | 申请日: | 2015-01-06 |
公开(公告)号: | CN104573228B | 公开(公告)日: | 2017-06-27 |
发明(设计)人: | 郭阳;刘畅;扈啸;陈书明;陈跃跃;孙永节;鲁建壮;刘宗林 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F17/50 | 分类号: | G06F17/50 |
代理公司: | 国防科技大学专利服务中心43202 | 代理人: | 郭敏 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 兼容 设计 微处理器 验证 装置 方法 | ||
1.一种面向兼容设计的微处理器硅后验证装置,面向兼容设计的微处理器硅后验证装置由调试主机、开发板、主控芯片和从控芯片组成:
调试主机与主控芯片、从控芯片相连;调试主机和主控芯片通过第一联合测试工作组JTAG1相连,和从控芯片通过第二联合测试工作组JTAG2相连;调试主机上有利用CCS集成开发环境开发的两套软件:主控程序和从控程序,主控程序是负责生成主控芯片测试激励、控制主控芯片执行测试激励、比对主控芯片与从控芯片执行测试激励结果和处理从控芯片执行结果错误的软件;从控程序是负责生成从控芯片测试激励、控制从控芯片执行测试激励的软件;
开发板是配备了多种接口和总线的通用开发板,可以部署多个处理器芯片,芯片间由数据总线连接,每个芯片拥有与调试主机通信的独立接口;主控芯片、从控芯片插到开发板上;
主控芯片为已通过验证的芯片或目标芯片,主控芯片与调试主机和HPI总线相连;主控芯片通过JTAG1与调试主机相连,通过HPI总线进行通信和访问开发板上其它资源;主控芯片从调试主机下载主控程序,运行主控程序,负责生成主控芯片测试激励、控制主控芯片执行测试激励、比对主控芯片与从控芯片执行测试激励结果和处理从控芯片执行结果错误,检查结果再次通过JTAG1传给调试主机;
从控芯片为待验证的兼容芯片,从控芯片与调试主机和HPI总线相连;从控芯片通过JTAG2与调试主机相连,通过HPI总线进行通信和访问开发板上其它资源;从控芯片从调试主机下载从控程序,运行从控程序,负责激励生成、激励运行;
其特征在于所述主控程序流程为:
第一步,定义验证过程中的敏感点集,敏感点集由敏感点构成,敏感点为浮点运算中对运算结果精度和准确度影响较大的特殊数值,包括正负零、正负无穷大以及无效数;令敏感点集中敏感点个数为KpNum,KpNum为正整数;在主控芯片地址空间中分别定义以ADDR1、ADDR2、ADDR3、ADDR4、ADDR5、ADDR11和ADDR12为起始地址的存储空间,定义RADDR2等于ADDR2,RADDR2的值为多段第一测试激励程序在主控芯片中存储的起始地址;
第二步,定义指令模型和测试激励模板;
第三步,定义主控程序循环变量LoopNum1=0,定义程序预定循环次数MAXLOOP1,MAXLOOP1为正整数,定义临时变量j=0,定义主控程序同步标志位MFlag,MFlag为1时表示主控芯片已经处于等待接收从控芯片发送第二测试激励程序的状态;
第四步,复位主控程序同步标志位,即MFlag置0;
第五步,生成第一测试数据,构成第一测试数据集DataSet1,方法是:主控程序对敏感点集中的每一个敏感点,利用正态分布随机数生成函数生成KN个以敏感点为中心、固定值为方差、符合正态分布的第一测试数据,KN为正整数;敏感点集中KpNum个敏感点生成出的KpNum*KN个第一测试数据构成第一测试数据集DataSet1,DataSet1存放在主控芯片中以ADDR1为起始地址的存储空间;
第六步,按照第二步定义的指令模型随机生成IN条待测试指令,IN为正整数,IN>KpNum*KN/2;对于每条待测试指令,根据第二步定义的测试激励模板随机生成第一测试激励程序;串行地为IN条待测试指令生成IN段第一测试激励程序,为每条待测试指令生成第一测试激励程序的过程相同,均包括以下步骤:
6.1若待测试指令为运算类指令,首先从DataSet1中随机选择OpNum个操作数;然后在待测试指令前生成搬移指令,搬移指令作用为将操作数搬移到对应的寄存器中;在待测试指令后生成第一存储指令,第一存储指令作用为将运算结果存储到主控芯片地址为ADDR4的存储空间;最后将第一测试激励程序存储到主控芯片地址为ADDR2的存储空间;转6.3;
6.2若待测试指令为控制类指令,首先在待测试指令前生成第二存储指令,第二存储指令作用为将当前状态寄存器值存储到主控芯片地址为ADDR4的存储空间;然后在待测试指令后生成第三存储指令,第三存储指令作用为将执行后状态寄存器值存储到主控芯片地址为ADDR4的存储空间;最后将第一测试激励程序存储到主控芯片地址为ADDR2的存储空间;转6.3;
6.3ADDR2增加一个地址位,地址位=机器字宽/8,ADDR4增加一个地址位,j增1,若j<InsNum,表示所述待测试指令尚有指令模型没有生成第一测试激励程序,转第六步,若j≥InsNum,表示主控程序已经为该待测试指令的所有指令模型生成第一测试激励程序,若已经为IN条待测试指令生成IN段第一测试激励程序,转第七步,否则,转第六步;
第七步,检测从控程序同步标志位SFlag,如果SFlag=1,表示从控程序处于等待状态,将第六步生成的IN个第一测试激励程序全部发送到从控芯片地址为ADDR8的存储空间,转第八步;如果SFlag=0,表示从控程序处于忙碌状态,转第七步;
第八步,MFlag置为1,表示主控芯片进入等待状态;
第九步,接收从控程序发送的IN个第二测试激励程序,存入主控芯片地址为ADDR3的存储空间;
第十步,主控程序根据RADDR2的值重载地址ADDR2并跳转到地址ADDR2,顺序执行主控程序生成的IN个第一测试激励程序,然后跳转到地址ADDR3,顺序执行从控程序生成的IN个第二测试激励程序,第一测试激励程序执行结果记录在起始地址为ADDR4的存储空间,第二测试激励程序执行结果记录在起始地址为ADDR5的存储空间;
第十一步,主控程序检测从控程序执行结果已返回标志位ResultFlag,若ResultFlag=1,表示从控程序已经将从控芯片执行的IN个第一测试激励程序和IN个第二测试激励程序执行结果返回给主控芯片,转第十二步;若ResultFlag=0,表示从控程序还未将从控芯片执行的IN个第一测试激励程序和IN个第二测试激励程序执行结果返回给主控芯片,转第十一步;
第十二步,对比主控芯片和从控芯片分别执行IN个第一测试激励程序和IN个第二测试激励程序的结果,如执行结果不同,转第十三步;否则,LoopNum1增1,若LoopNum1<MAXLOOP1,表示主控程序尚未达到程序预定的循环次数,转第四步,若LoopNum1≥MAXLOOP1,表示主控程序已经达到程序预定的循环次数,向调试主机返回完成信号,转第十四步;
第十三步,记录发生错误的第一测试激励程序或第二测试激励程序以及主控芯片和从控芯片执行第一测试激励程序或第二测试激励程序的结果,并将记录内容通过JTAG1传给调试主机;
第十四步,主控程序结束;
所述从控程序流程为:
步骤1.与主控程序的第一步相同,定义敏感点集;在从控芯片地址空间中分别定义以ADDR6、ADDR7、ADDR8、ADDR9和ADDR10为起始地址的存储空间,用于存放从控程序在后续执行过程中临时产生的数据和代码,定义RADDR7等于ADDR7,RADDR7的值为多段第二测试激励程序在从控芯片中存储的起始地址,用于对地址ADDR7进行重载;
步骤2.定义指令模型和测试激励模板;
步骤3.定义程序循环变量LoopNum2=0,LoopNum2控制验证过程中从控程序随机生成测试数据的循环遍数,定义与主控程序相同的预定循环次数MAXLOOP2,MAXLOOP2等于MAXLOOP1;定义临时变量k=0;定义从控程序同步标志位SFlag,SFlag为1时表示从控芯片已经处于等待接收主控芯片发送第一测试激励程序的状态;定义从控程序执行结果已返回标志位ResultFlag,ResultFlag为1时表示从控程序已经将第一测试激励程序和第二测试激励程序执行结果写回到主控芯片存储空间;
步骤4.复位从控程序同步标志位,即SFlag置0,ResultFlag置0;
步骤5.与主控程序的第五步相同,生成第二测试数据,构成第二测试数据集DataSet2,DataSet2存放在从控芯片中以ADDR6为起始地址的存储空间;
步骤6.按照步骤2定义的指令模板随机生成IN条待测试指令,对于每条待测试指令,根据测试激励模板随机生成第二测试激励程序;串行地为IN条待测试指令生成IN段第二测试激励程序,为每条待测试指令生成第二测试激励程序的过程相同,均包括以下步骤:
6.1′若待测试指令为运算类指令,首先从DataSet2中随机选择OpNum个操作数;然后在指令前生成搬移指令,搬移指令作用为将操作数搬移到对应的寄存器中,在指令后生成第四存储指令,第四存储指令作用为将运算结果存储到从控芯片地址为ADDR10的存储空间;最后将第二测试激励程序存储到从控芯片地址为ADDR7的存储空间;转6.3′;
6.2′若待测试指令为控制类指令,首先在指令前生成第五存储指令,第五存储指令作用为将当前状态寄存器值存储到从控芯片地址为ADDR10的存储空间;然后在指令后生成第六存储指令,第六存储指令作用为将执行后状态寄存器值存储到从控芯片地址为ADDR10的存储空间;最后将第二测试激励程序存储到从控芯片地址为ADDR7的存储空间;转6.3′;
6.3′ADDR7增加一个地址位,ADDR10增加一个地址位,k增1,若k<InsNum,表示所述待测试指令尚有指令模型没有生成第二测试激励程序,转步骤6;若k≥InsNum,表示从控程序已经为该待测试指令的所有指令模型生成第二测试激励程序,若已经为IN条待测试指令生成IN段第二测试激励程序,转步骤7;否则,转步骤6,为下一条待测试指令生成第二测试激励程序;
步骤7.从控程序同步标志位SFlag置1,表示从控芯片已经处于等待接收主控芯片发送第一测试激励程序的状态;
步骤8.接收主控程序发送的IN个第一测试激励程序,存入从控芯片起始地址为ADDR8的存储空间;
步骤9.检测主控程序同步标志位MFlag,如果MFlag=1,即主控程序处于等待状态,将从控程序生成的IN个第二测试激励程序发送到主控芯片起始地址为ADDR3的存储空间,转步骤10;否则,转步骤9;
步骤10.从控程序根据RADDR7重载地址ADDR7的初始值并跳转到地址ADDR7,顺序执行从控程序生成的IN个第二测试激励程序,然后跳转到地址ADDR8,顺序执行主控程序生成的IN个第一测试激励程序,第一测试激励执行结果和第二测试激励程序执行结果分别记录在起始地址为ADDR9和ADDR10的存储空间;
步骤11.将第一测试激励执行结果发送到主控芯片地址为ADDR11的存储空间,第二测试激励程序执行结果发送到主控芯片地址为ADDR12的存储空间,并将从控程序执行结果已返回标志位ResultFlag置1;
步骤12.LoopNum2增1,若LoopNum2<MAXLOOP2,表示从控程序尚未达到程序预定的循环次数,转步骤4;若LoopNum2≥MAXLOOP2,表示从控程序已经达到程序预定的循环次数,从控程序结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510004794.3/1.html,转载请声明来源钻瓜专利网。