[发明专利]基于内存监视的处理器验证方法有效
申请号: | 200910043921.5 | 申请日: | 2009-07-17 |
公开(公告)号: | CN101615209A | 公开(公告)日: | 2009-12-30 |
发明(设计)人: | 陈书明;刘胜;李勇;李振涛;陈吉华;杨焕荣 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F17/50 | 分类号: | G06F17/50 |
代理公司: | 国防科技大学专利服务中心 | 代理人: | 郭 敏 |
地址: | 410073湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于内存监视的处理器验证方法,要解决的技术问题是:在拥有一个软件模拟器但没有其源代码的条件下,提供一种高效的RTL代码的验证方法。技术方案是先将验证程序在软件模拟器上进行模拟,在模拟的同时对软件模拟器中寄存器映射的内存进行采样,生成软件模拟器执行信息;接着在RTL代码进行模拟的同时采集RTL执行信息并进行初级检索,若初级检索发现不匹配,立即暂停RTL代码的模拟并通过生成精确同步点和高级检索,找到RTL级代码模拟出错的节拍。本发明定位精度高,具有验证程序无关性,适用范围广,验证查错的效率高。 | ||
搜索关键词: | 基于 内存 监视 处理器 验证 方法 | ||
【主权项】:
1.一种基于内存监视的处理器验证方法,其特征在于包括以下步骤:第一步,将验证程序在软件模拟器上进行模拟,在模拟的同时采用内存监视的方法监视软件模拟器中寄存器组A0,A1,A2,...Ai...,An-1映射的内存的变化,并对该段内存进行采样,生成软件模拟器执行信息,n为寄存器个数;第二步,采集RTL代码执行信息:将RTL代码中的寄存器记为REG_RTL,将写REG_RTL相关的信息包括当前模拟时间、进行写操作的部件名称、要写入的REG_RTL的编号、写入该REG_RTL的数值保存到RTL代码执行信息文件中,同一个模拟时间点的写REG_RTL操作的集合记为一组写REG_RTL操作;并将程序计数器PC值的相关信息包括当前的PC值和当前模拟时间,也保存到RTL代码执行信息文件中;第三步,对RTL代码执行信息文件进行初级检索,初步定位RTL代码执行信息文件在M个写REG_RTL操作中发生错误,M为软件模拟器执行信息中相邻两个采样点之间对应的写寄存器操作的最大数目;初级检索的过程是:3.1将RTL代码执行信息当前寄存器组Current_REG_RTL清零,将RTL代码执行信息指针RTL_Pointer指向RTL代码执行信息文件中的第一组写REG_RTL操作,将软件模拟器执行信息指针Arc_Pointer指向软件模拟器执行信息文件中的第一个采样点,将计数器Counter清零;3.2读取当前Arc_Pointer指向的软件模拟器执行信息文件中采样点的A0,A1,A2,...Ai...,An-1的值,并将A0,A1,A2,...Ai...,An-1的值赋给软件模拟器执行信息当前寄存器组Current_REG_Arc,读取当前RTL_Pointer指向RTL代码执行信息中的一组写REG_RTL操作,并根据该组操作更新Current_REG_RTL,将Counter增加当前的一组写REG_RTL操作中被写的寄存器的个数;接着比较Current_REG_RTL和Current_REG_Arc的值,如果两者相等,则执行3.3,否则执行3.4;3.3将当前RTL_Pointer指向的一组写REG_RTL操作的第一个记为REG_RTL_Begin,并将Counter清零,接着查看当前Arc_Pointer是否指向软件模拟器执行信息的末尾,如果是指向软件模拟器执行信息的末尾则初级检索完毕,且没有发生不匹配,说明该验证程序通过了RTL模拟,验证完毕;如果不是指向软件模拟器执行信息的末尾则将指针RTL_Pointer和Arc_Pointer均增1,转3.2;3.4比较Counter是否小于M,如果是则将指针RTL_Pointer增1,转3.3,否则将当前RTL_Pointer指向的一组写REG_RTL操作的最后一个记为REG_RTL_End,并且触发RTL模拟的暂停,初级检索完毕;向验证人员报告RTL模拟器信息文件中写REG_RTL操作REG_RTL_Begin之前是执行正确的,在写REG_RTL操作REG_RTL_End之前,错误出现,且在REG_RTL_Begin和REG_RTL_End之间写REG_RTL操作的数目不超过M次;第四步,生成精确同步点,同步点是指软件模拟器执行到某一个时刻,该时刻之前的A0,A1,A2,...Ai...,An-1的变化和RTL模拟器的某一次写REG_RTL操作之前的执行轨迹都是完全匹配和对应的;精确同步点是软件模拟器执行到某一个时刻,该时刻之前的A0,A1,A2,...Ai...,An-1的变化和RTL模拟器的REG_RTL_Begin之前的执行轨迹都是完全匹配和对应的;生成精确同步点的方法如下:编写程序在RTL执行信息文件中找到REG_RTL_Begin前面最近的一处PC值,统计该PC值在RTL执行信息文件中REG_RTL_Begin之前出现的次数s,初始化s’=s.将验证激励重新加载至软件模拟器,并在软件模拟器中的该PC值处设断点,向软件模拟器发送运行命令,等待软件模拟器运行暂停后,将s’减1,继续向软件模拟器发送运行命令,如此循环,直至s’变为零。这时,软件模拟器就执行到了和REG_RTL_Begin相对应的时刻即精确同步点;第五步,对RTL代码执行信息文件进行高级检索,方法是:从精确同步点出发,编写程序向软件模拟器发送单步运行命令,等待内存数据稳定后,读取A0,A1,A2,...Ai,...,An-1的值,然后读取RTL代码执行信息文件中以REG_RTL_Begin开始的一组写REG_RTL操作,比较当前A0,A1,A2,...Ai...,An-1的内容和当前REG_RTL的内容是否相同,若相同,则继续向软件模拟器发送单步运行命令,直到软件模拟器运行到某一拍,其A0,A1,A2,...Ai...,An-1的内容和REG_RTL的内容不一致为止,这个节拍对应的写REG_RTL操作即是高级检索得出的RTL代码模拟出现错误时的那一次写REG_RTL操作。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910043921.5/,转载请声明来源钻瓜专利网。
- 上一篇:一种电源机箱
- 下一篇:一种接触指示的电气柜装置及其使用方法