基于内存监视的处理器验证方法

文档序号:6482213阅读:130来源:国知局
专利名称:基于内存监视的处理器验证方法
技术领域
本发明涉及对处理器前端寄存器传输级RTL (Register Transfer Level)代码进行功能验证的方法,尤其指在模拟验证后期全系统验 证阶段进行验证查错的方法。
背景技术
验证测试是处理器设计中最费时费力却又必不可少的一个重 要阶段。验证测试阶段所花费的时间一般占整个处理器从设计到实现总时间 的70%以上。受上巿时间的约東,迫切需要高效而又快速的验证方法的出现。
验证包括两个过程:功能验证和时序验证。功能验证有模拟验证、形式化 验证和FPGA原型验证等几种方法。模拟验证通过对RTL代码设计加载激 励以检验其正确性。形式化验证为一种釆用形式化推理验证参考设计和修改 设计是否等价的方法。FPGA原型验证是釆用专门的仿真软件快速建立芯片 设计的硬件原型并加载到逻辑阵列中,模拟芯片的工作过程,与预期的执行 结果进行比对,从而发现错误、修正原来的设计。这三种方法各有优势,互 为补充,其中模拟验证是最基本的验证方法,在验证过程中使用最为广泛。 软件模拟器是处理器的系统级模型,来自于处理器开发公司、开放的源码或 由设计人员自己开发。软件模拟器模拟速度快,在处理器的模拟验证阶段起 着非常重要的作用。
在处理器的全系统功能验证阶段,验证人员主要面临以下几个问题 l.RTL代码模拟数据量大,执行过程复杂。大型验证程序一般要运行l亿个 周期以上,波形文件在20GB以上,在如此大的执行结果中寻找出错点比较 困难;2.验证人员对大型的验证程序算法本身不熟悉或者不完全精通,不能依靠算法本身的流程和执行轨迹来查找错误;3.软件模拟器不一定是由自身 开发的,多数商用软件模拟器也不开源,验证人员只能通过软件模拟器得到 验证程序最终的执行结果,不能通过修改或优化软件模拟器方便地提取所需 要的执行信息。
以上几个问题导致验证工作无法快速而有效地展开。传统的验证方法分 别将某一个验证程序在软件模拟器和RTL模拟器上模拟运行。然后比较两 者的执行结果,如果执行结果不相同,则主要依靠验证人员的经验和对验证
程序算法的熟悉进行人工分析,查找RTL代码中存在的错误后并修改错误, 再重新进行模拟。这种方法必须等到RTL代码模拟完毕之后才能进行结果 比较,但RTL代码的模拟过程是一个非常漫长的阶段,很有可能在RTL代 码开始模拟很短一段时间就出错了,这时剩下的模拟是没有意义的。并且验 证人员需要在大量的执行节拍中找出出错点,这既需要验证人员对验证程序 的了解和精通,也需要靠一定的运气,因此这种方法不但费时费力,而且査 错效率不高。从现有公开的技术来看,处理器开发的过程一般是釆用高级语 言(0^++/87^111 C等)根据系统规范设计软件模拟器,然后进行RTL代码开 发,验证平台是在此过程中统一开发的。目前还没有哪种验证方法能够在使 用不开源的软件模拟器进行处理器开发的情况下,高效地进行验证并准确定 位RTL代码中的错误。

发明内容
本发明要解决的技术问题是在拥有一个软件模拟器但没有 其源代码的条件下,提供一种高效的RTL代码的验证方法。在功能模拟验 证阶段,由计算机来记录和查找验证激励在软件模拟器和RTL代码模拟器 模拟情况的差异,找到RTL代码模拟结果的第一个出错点,以加速验证的执行。
本发明的技术方案是先将验证程序在软件模拟器上进行模拟,在模拟 的同时监视软件模拟器中寄存器映射的内存的变化,并对该段内存进行釆
样,生成软件模拟器执行信息。接着在RTL代码进行模拟的同时,釆集RTL 执行信息并进行初级检索, 一旦初级检索发现不匹配, 一方面立即暂停RTL 代码的模拟,另一方面通过生成精确同步点和高级检索,找到RTL级代码 模拟出错的节拍,修改RTL代码中的错误后进行重新模拟。具体步骤如下
第一步,将验证程序在软件模拟器上进行模拟,在模拟的同时釆用内存 监视的方法监视软件模拟器中寄存器组(记为Ao,A1,A2,...Ai...,An-1, n为寄 存器个数)映射的内存的变化,并对该段内存进行釆样,生成软件模拟器执 行信息。主要分为寄存器定位和信息釆集两个步骤。
步骤l,定位Ao,A,,A2,…Ai…,An-沖每个寄存器在内存中的位置。假设每
个寄存器均有g个字节,并且运行软件模拟器的计算机是按照字节编址的。 定位Ao,A! ,A2,... A;... ,An-在内存中位置的方法如下
1. 编写一个汇编程序对Ao进行写操作,写入Xp使用内存查看工具(如 CheatEngine、 Tsearch等)观察内存,找到Xi所在的位置。 一般情况 下,将会有N (N>1)个内存地址的内容为X^将这些地址记录下 来,记为集合(addr—A}, i=2;
2. 对Ao写入Xi(X^X一…^Xi-^Xi),观察内存将内容等于Xi的地址 赋给(add—B},将(addr—A)和(addr—B)进行与搡作,结果赋给 {addr—A}, i=i+l;
3. 重复第2步直到(addr—A)中的元素个数为l, {addr—A》中唯一的一个地址即为Ao在内存中的位置,记为y。 软件设计者在编程过程中会把具有相似属性的变量定义为数组或者结
构体,而数组或结构体中的元素在内存中是连续存放的,Ao,Ai,A2,…Ai…,A^ 就符合这种情况。基于此,若Ao的地址为y,则Ai的地址为y+g, Aj的地 址为y+i*g, An—!的地址为y+(n-l)* g, i为正整数。
步骤2,釆集八()入^2,...^...^1.1的信息。方法是调用内存读取函数(如 C语言中的函数ReadProcessMemory()),在频率f下(f和初级检索、高级 检索的速率相关, 一般取f:25次/秒)对以地址y开始的一段内存空间(从y 到y+ (n-lfg)的值进行釆样。即每隔时间T ( T=l/f)读取y到y+ (n-l)*g这 段内存空间的值并保存到软件模拟器执行信息文件中,供初级检索使用,因 此软件模拟器执行信息文件存储的是各个釆样点的Ao,A1,A2,...Ai...,An-1的 值。
第二步,釆集RTL代码执行信息。将RTL代码中的寄存器记为 REG—RTL,在RTL代码中处理器的每个功能部件以REG—RTL的写使能作 为触发条件,监视功能部件写REG—RTL的过程,每一个写REG—RTL操作 包括以下信息当前模拟时间、进行写操作的部件名称、要写入的REG一RTL 的编号、写入该REG一RTL的数值,将上述写REG一RTL相关的信息保存到 RTL代码执行信息文件中,同一个模拟时间点的写REG—RTL操作的集合记 为一组写REG—RTL操作。在RTL代码中处理器的取指部件以程序计数器 PC (program counter)值发生变化作为触发条件,记录PC值的相关信息, 它包括当前的PC值和当前模拟时间,将PC值的相关信息也保存到RTL代 码执行信息文件中。这样在RTL代码模拟的同时,RTL代码的执行信息(包括写REG—RTL相关信息和PC值变化的相关信息)按照模拟时间的顺序保 存在RTL代码执行信息文件中。
第三步,对RTL代码执行信息文件进行初级检索,初步定位RTL代码 执行信息文件在M个写REG—RTL操作中发生错误。M为软件模拟器执行 信息中相邻两个釆样点之间对应的写寄存器操作的最大数目。初级检索的过 程是
3.1将RTL代码执行信息当前寄存器组Current_REG—RTL清零,将RTL 代码执行信息指针RTL—Pointer指向RTL代码执行信息文件中的第一组写 REG_RTL操作,将软件模拟器执行信息指针An^Pointer指向软件模拟器执 行信息文件中的第 一个釆样点,将计数器Counter清零。
3.2读取当前Arc—Pointer指向的软件模拟器执行信息文件中采样点的 Ao,A,,A2,…Ai…,A^的值,并将A。A,A2,…Ai…,A^的值赋给软件模拟器执 行信息当前寄存器组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 次。
M的大小和釆样频率f成反比,和软件模拟器模拟的速率成正比,经过 试验统计,在采样频率为25次/秒时, 一个执行3000万次写寄存器操作的验 证程序,在软件模拟器执行信息釆集阶段将被采样3万次左右。平均下来, 相邻两个釆样点之间将会有1000次左右的写寄存器操作,实际上由于其它 一些因素造成相邻两个采样点之间的写寄存器操作数目并不平均,但经过统 计该数目不会超过l万次,因此可将M设为1万。
第四步,生成精确同步点。同步点是指软件模拟器执行到某一个时刻, 该时刻之前的Ao,AhA2,…Ai…,An-i的变化和RTL模拟器的某一次写 REG—RTL搡作之前的执行轨迹都是完全匹配和对应的。精确同步点是软件 模拟器执行到某一个时刻,该时刻之前的Ao,Ai,A2,…Ai…,A^的变化和RTL 模拟器的REG—RTL—Begin之前的执行轨迹都是完全匹配和对应的。生成精 确同步点的方法如下编写程序在RTL执行信息文件中找到 REG—RTL_Begin前面最近的一处PC值,统计该PC值在RTL执行信息文件 中REG_RTL—Begin之前出现的次数s,初始化s,=s.将验证激励重新加载至软件模拟器,并在软件模拟器中的该PC值处设断点,向软件模拟器发送运 行命令,等待软件模拟器运行暂停后,将s,减l,继续向软件模拟器发送运 行命令,如此循环,直至S'变为零。这时,软件模拟器就执行到了和
REG—RTL一Begin相对应的时刻即精确同步点。
第五步,对RTL代码执行信息文件进行高级检索,精确定位某一次写 REG一RTL操作出现错误。方法是从精确同步点出发,编写程序向软件模 拟器发送单步运行命令,等待内存数据稳定后,读取AoA,A2,…Ai…,A^的 值,然后读取RTL代码执行信息文件中以REG—RTL—Begin开始的一组写 REG—RTL搡作,比较当前AQ,A1,A2,...Ai...,An_1的内容和当前REG一RTL的 内容是否相同,若相同,则继续向软件模拟器发送单步运行命令,直到软件 模拟器运行到某一拍,其Ao,AhA2,…Ai…,A^的内容和REG—RTL的内容不 一致为止,这个节拍对应的写REG—RTL操作即是高级检索得出的RTL代码 模拟出现错误时的那一次写REG—RTL操作。
在高级检索阶段完成以后,验证人员可以根据高级检索得出的某一次具 体的写REG—RTL操作,快速地定位RTL代码中出现错误。这时错误的类型 一般就是某个运算部件在同样的源操作数下,计算结果与软件模拟器不同, 或某个load操作从存储器中读出的数据与最近写入的数据不同。验证或设计 人员可以通过对微体系结构和RTL代码的了解,快速地定位和修改存在故 障的部件。
采用本发明可以达到以下技术效果
1.本发明定位精度高,本发明通过初级检索和高级检索的相互配合,能 够在较短的时间内精确定位到RTL模拟的某 一 次的写寄存器搡作出现错误;
2. 釆用本发明进行验证时,验证人员不需要理解验证程序的原理、算法 和执行步骤,甚至可以完全不了解该验证程序,因此本发明具有验证
程序无关性;
3. 适用范围广,适合具有一个不开源的软件模拟器,同时进行处理器设 计时的验证工作,软件模拟器只需要提供设置断点、单步运行等基本 的功能即可;
4. 验证查错的效率高,本发明将验证查错的绝大部分工作转化为计算机 来处理,减少了验证人员的工作量,很好地提高了查错效率。


图l是传统的功能验证方法的流程图; 图2是本发明的总体流程图3是本发明第一步定位软件模拟器中寄存器Ao在内存中位置的流程
图4是本发明第一步软件模拟器执行信息釆集过程示意图; 图5是本发明第三步初级检索的流程图; 图6是本发明第三步初级检索的执行过程和执行结果示意具体实施例方式
图l是背景技术所述传统的功能验证方法的流程图 一个验证程序首先 在软件模拟器上进行模拟,再在RTL代码模拟环境中进行模拟,然后将该 验证程序在软件模拟器和RTL代码模拟环境中模拟的结果进行比对。若两 者的执行结果相同,则认为RTL代码通过了该验证程序。若两者的执行结果不同,则认为RTL代码存在错误,需要验证人员从错误的执行结果当中 人工定位错误,找到错误后修改错误,再重新进行模拟。
图2是本发明总体流程图
第一步,将验证程序在软件模拟器上进行模拟,在模拟的同时监视软件 模拟器中寄存器映射的内存的变化,并对该段内存进行釆样,生成软件模拟 器执行信息。
第二步,在RTL代码进行模拟的同时,釆集RTL执行信息并进行第三 步的初级检索。 一旦初级检索发现不匹配, 一方面立即暂停RTL代码的模 拟,另一方面通过第四步的生成精确同步点和第五步的高级检索,找到RTL 级代码模拟出错的节拍,修改RTL代码中的错误后进行重新模拟。
图3是本发明第一步定位软件模拟器中寄存器Ao在内存中位置的流程

3.1对软件模拟器中的寄存器Ao写入X"利用内存查看工具读取内存, 并将内容等于&的内存地址记录至集合(addr一A),将i初始化为2;
3.2对寄存器A。写入Xi(X^X^…^Xi-^Xi),利用内存査看工具读取 内存,并将内容等于Xi的内存地址记录至集合(add匸B》,将(addr—A〉和 (addr^B》进行与操作,结果赋给(addr一A),若此时《addr—A}中的元素为1则 转3.3,否则i = i+l并转至3.2;
3.3 {addr_A}中唯一的一个地址即为软件模拟器的寄存器Ao在内存中的 映射地址,记为y。
图4是本发明第一步的软件模拟器执行信息釆集过程示意图。软件模拟 器在运行时,其寄存器会在内存中存在映射。首先定位寄存器Ao在内存中的映射地址y,软件模拟器中的所有寄存器Ao,A^A2,...Ai…,A^在内存中的 映射地址在y到y+(n-l^g之间,然后通过调用内存读取函数,每隔一段时 间T读取寄存器在内存中映射地址的数值,并保存到软件模拟器执行信息文 件,该文件存储的是各个釆样点的AoA^A^.A^.A^的值。
图5是本发明第三步初级检索的流程图。初级检索过程如下
5.1将RTL代码执行信息当前寄存器组Current_REG—RTL清零,将RTL 代码执行信息指针RTL—Pointer指向RTL代码执行信息文件中的第一组写 REG—RTL操作,将软件模拟器执行信息指针Arc—Pointer指向软件模拟器执 行信息文件中的第一个釆样点,将计数器Counter清零。
5.2读取当前Arc—Pointer指向的软件模拟器执行信息文件中釆样点的 Ao,Ai,A2,…Ai…,An-i的值,并将Ao,A!,A2,…A,…,A^的值赋给软件模拟器执 行信息当前寄存器组Current一REG一Arc,读取当前RTL—Pointer指向RTL代 码执行信息中的 一 组写REG—RTL操作,并根据该组操作更新 Current_REG—RTL,将Counter增加当前的 一 组写REG—RTL操作中被写的 寄存器的个数。接着比较Current—REG一RTL和Current—REG一Arc的值,如 果两者相等,则执行5.3,否则执行5.4;
5.3将当前RTL_Pointer指向的一组写REG—RTL操作的第一个记为 REG—RTL—Begin,并将Counter清零,接着查看当前Arc—Pointer是否指向 软件模拟器执行信息的末尾。如果是指向软件模拟器执行信息的末尾则初级 检索完毕,且没有发生不匹配,说明该验证程序通过了 RTL模拟,验证完 毕,可以开始验证下一个验证程序;如果不是指向软件模拟器执行信息的末 尾则将指针RTL—Pointer和Arc—Pointer均增1,转5.2;5.4比较Counter是否小于M,如果是则将指针RTL—Pointer增1,转 5.3,否则将当前RTL—Pointer指向的一组写REG—RTL操作的最后一个记为 REG—RTL一End,并且触发RTL模拟的暂停,初级检索完毕。向验证人员报 告RTL模拟器信息文件中写REG一RTL操作REG—RTL—Begin之前是执行正 确的,在写REG一RTL操作REG一RTL—End之前,错误出现。
图6是本发明第三步初级检索的执行过程和执行结果示意图。初级检索 粗略地确定软件模拟器执行信息和RTL代码执行信息中不一致的地方。RTL 代码执行信息文件存储的是所有的写REG_RTL操作和PC值信息,软件模 拟器执行信息文件存储的是一系列的采样点处八0厶1,八2,..人...,八11_1的值。图 中r表示某个采样点和RTL代码执行信息匹配, 表示某个釆样点和RTL 代码执行信息不匹配。该图表示的是经过初级检索之后从釆样点0至釆样点 h均能与RTL代码执行信息向匹配,但釆样点h+1不能与RTL代码执行信 息相匹配。与釆样点h相对应的一组写REG—RTL操作的最后一个被标记为 REG—RTL—Begin,从REG—RTL—Begin到REG—RTL—End有M个写REG—RTL 操作。初级检索能够确定这M个写REG一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操作。
2.如权利要求1所述的基于内存监视的处理器验证方法,其特征在于 所述生成软件模拟器执行信息分为寄存器定位和信息釆集两个步骤步骤l,定位Ao,A!,A2,…Ai…,An-!在内存中位置,方法如下1) .编写一个汇编程序对Ao进行写操作,写入X,,使用内存查看工具 观察内存,找到&所在的位置,将内容为Xt的N个内存地址记录下 来,其中N^1,记为集合(addr—A},令1=2;2) 对Ao写入Xi, X^X2A.. ^X"-Xj,观察内存将内容等于Xi的地 址赋给(add一B),将(addr—A)和(addr—B)进行与操作,结果赋给{addr—A}, i=i+l;3).重复第2)步直到(add匸A》中的元素个数为l, (addi^A》中唯一的一个地址即为Ao在内存中的位置,记为y; Ao的地址为y, Ai的地址为y+g, Ai的地址为y+Pg, A^的地址为y+(n-l" g, g为每个寄存器的字节数,i为正整数;步骤2,采集A0,Al,A2,…Ai…,An-l的信息,方法是调用内存读取函数,在 频率f下对从y到y+(n-l)*g的内存空间的值进行釆样,即每隔时间T读取 y到y+ (n-l)*g这段内存空间的值并保存到软件模拟器执行信息文件中, T=l/f。
3. 如权利要求2所述的基于内存监视的处理器验证方法,其特征在于所 述^25次/秒。
4. 如权利要求1所述的基于内存监视的处理器验证方法,其特征在于 所述M设为1万。
全文摘要
本发明公开了一种基于内存监视的处理器验证方法,要解决的技术问题是在拥有一个软件模拟器但没有其源代码的条件下,提供一种高效的RTL代码的验证方法。技术方案是先将验证程序在软件模拟器上进行模拟,在模拟的同时对软件模拟器中寄存器映射的内存进行采样,生成软件模拟器执行信息;接着在RTL代码进行模拟的同时采集RTL执行信息并进行初级检索,若初级检索发现不匹配,立即暂停RTL代码的模拟并通过生成精确同步点和高级检索,找到RTL级代码模拟出错的节拍。本发明定位精度高,具有验证程序无关性,适用范围广,验证查错的效率高。
文档编号G06F17/50GK101615209SQ20091004392
公开日2009年12月30日 申请日期2009年7月17日 优先权日2009年7月17日
发明者胜 刘, 勇 李, 李振涛, 杨焕荣, 陈书明, 陈吉华 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1