一种用于处理器算术逻辑单元指令的随机数验证方法

文档序号:6633750阅读:384来源:国知局
一种用于处理器算术逻辑单元指令的随机数验证方法
【专利摘要】一种用于处理器算术逻辑单元指令的随机数验证方法,首先根据运算指令操作数长度,选取March元素序列,划分操作数存储单元,然后使用March元素序列,对操作数单元进行全排列填写,生成一组备选随机数,其次使用备选随机数,根据算术逻辑运算指令格式生成操作数组合,最后根据算术逻辑指令结构,将生成的操作数组合实例化为算术逻辑运算指令代码,并生成算术逻辑运算标准结果,进行自动对比验证。本发明测试用例根据写入和读出的关系,有针对性地选取随机数覆盖写入和读出不一致的故障代码,通过将处理器类比为一个存储器进行测试,把成熟的存储器测试方法引入到处理器测试中来,提高了随机数验证的针对性,同时降低了验证的成本。
【专利说明】一种用于处理器算术逻辑单元指令的随机数验证方法

【技术领域】
[0001] 本发明涉及处理器的离线功能验证方法,具体为一种用于处理器算术逻辑单元指 令的随机数验证方法。

【背景技术】
[0002] 目前,SoC的设计与应用已经成为IC发展的主要热点和方向,国内SoC的技术发 展迅速,已经成功设计出了一系列的国产SoC芯片,但是国产SoC芯片要想获得国内业界的 认可和推广应用仍需在功能可靠性方面进行更加深入、全面的测试验证,尤其需要将处理 器指令集的功能验证放到可靠性验证工作的第一位。
[0003] 处理器离线随机验证是当前处理器验证的主流方法,其较高层次的实施方式在系 统级验证层面上具有不可替代的地位,但该方法由于随机针对性不强,即使通过大量的验 证用例也会导致错误覆盖率不高,同时开发大量的验证用例也带来了极大的验证成本。


【发明内容】

[0004] 针对现有技术中存在的问题,本发明提供一种能够提高随机验证效率的用于处理 器算术逻辑单元指令的随机数验证方法。
[0005] 本发明通过以下技术方案来实现:
[0006] 步骤一,基于March算法,根据运算指令操作数长度L和测试工作量,划分操作数 存储单元的W位/字长度,并选定数据背景;
[0007] 对W = 2n位/字的存储器,取log2W+l个数据背景,若W关2n,取叫位/字的 数据背景,并选择这组数据背景中的W位;
[0008] 步骤二,根据March算法原理,对选定的数据背景取反,使选定的数据背景和取反 的数据背景共同组成March元素,得到数据B个March元素序列;
[0009] 步骤三,使用B个March元素序列,对「1/,1个操作数单元进行全排列填写,得到 一组个数JV = 5「讲1的备选随机数集合T = Umm1,…,ImmJ ;
[0010] 步骤四,根据验证对象的指令格式,从备选随机数集合中任意选取R个进行组合, 得到 M = Nk个测试随机数集合 Ct = {[Immn,…,ImmiJ I i = 1,…,M ;Immn,…,ImmiK e T};
[0011] 步骤五,根据算术逻辑指令结构,将Ct实例化运行得到算术逻辑运算指令代码,并 通过计算得出算术逻辑运算标准结果;
[0012] 步骤六,将Ct实例化运行得到算术逻辑运算指令代码与计算得到的算术逻辑运算 标准结果通过比较指令进行比较,自动判断对错,完成验证。
[0013] 所述的March算法选用面向"字"的March C-算法。
[0014] 所述的March算法通过反复对每个地址进行读/写0或1的操作,根据数据背景 生成原理,选定的数据背景及其取反数据保证每两个字节之间的测试码出现00、01、10、11 四种情况至少各一次。
[0015] 与现有技术相比,本发明具有以下有益的技术效果:
[0016] 由于算术逻辑运算实质上是将操作数读出,计算,然后写入目标寄存器,其故障发 生在读、算、写三个环节,但"算"环节发生的故障对于验证是不可见的,本发明测试用例根 据写入和读出的关系,有针对性地选取随机数覆盖写入和读出不一致的故障模式,通过将 处理器类比为一个存储器进行测试,把成熟的存储器测试方法引入到处理器测试中来,用 存储器的故障模型去覆盖处理器的错误类型,由于算术逻辑运算指令的操作数和运算结果 在处理器指令流中的读取和回写与处理器对存储器数据的读写传输路径相一致,因此存储 器的故障模型完全可以覆盖算术逻辑运算指令数据通路上的错误,另一方面,除了数据传 输路径,算术逻辑运算指令的运算执行部分依然是处理器内部的黑盒,其计算错误的模式 更加复杂,在随机验证中根本无法进行针对性设计,因此将指令的运算执行部分作为存储 器单元,从更高的系统层次进行针对性验证设计,从而可以无需关注具体的错误内容而做 到其内部的复杂及未知故障的覆盖。March算法是比较流行的存储器测试方法,对固定故 障、状态转换故障、寻址故障和耦合故障的覆盖率能够达到1〇〇%。本发明随机数验证方法, 一方面利用March算法较高的故障覆盖率提高了随机数验证的针对性,另一方面利用其较 小的时间复杂度实现了对操作数数量的控制,大大降低了验证的成本。
[0017] 进一步的,本发明随机数验证方法选用面向"字"的March C-算法,能够有效的检 测大多数存储器简化故障,提高了故障的覆盖率,并且能够减少测试的成本。

【专利附图】

【附图说明】
[0018] 图1为本发明的流程图;
[0019] 图2为本发明生成的操作数及其标准计算结果实例图;
[0020] 图3为本发明生成的算术逻辑运算指令代码实例图。

【具体实施方式】
[0021] 下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而 不是限定。
[0022] 参见图1,本发明的随机数验证方法包括:
[0023] 步骤一,根据运算指令操作数长度L和测试工作量,划分操作数存储单元的W位/ 字长度,并选定数据背景;
[0024] 对W = 2n位/字的存储器,取log2W+l个数据背景,若W尹2n,取2「 lQg,l位/字的 数据背景,并选择这组数据背景中的W位;
[0025] 步骤二,根据面向"字"的March C-算法原理,对选定的数据背景取反,March算法 通过反复对每个地址进行读/写〇或1的操作,根据数据背景生成原理,选定的数据背景及 其取反数据保证每两个字节之间的测试码出现〇〇、〇1、1〇、11四种情况至少各一次,选定的 数据背景和取反的数据背景共同组成March元素,得到数据B个March元素序列;
[0026] 步骤三,使用B个March元素序列,对个操作数单元进行全排列填写,得到 一组个数TV = 的备选随机数集合T = Umm1,…,ImmJ ;
[0027] 步骤四,根据验证对象的指令格式,从备选随机数集合中任意选取R个进行组合, 得到 M = Nk 个测试随机数集合 CT = {[Immn,…,ImmiK] I i = 1,…,M ;Immn,…,ImmiK e T};
[0028] 步骤五,根据算术逻辑指令结构,将Ct实例化运行得到算术逻辑运算指令代码,并 通过计算得出算术逻辑运算标准结果;
[0029] 步骤六,将Ct实例化运行得到算术逻辑运算指令代码与计算得到的算术逻辑运算 标准结果通过比较指令进行比较,自动判断对错,完成验证。
[0030] 参见图2, 3,以自主研发的DSP处理器为验证对象,结合一条32位整点加法指令 (addi reg_rsl,reg_rs2,reg_rd)的随机数验证,对本专利的实施过程描述如下:
[0031] 步骤1、划分L = 32的操作数存储单元位/字长度W = 8 = 23,则数据背景个数 为 log2W+l = 4,即 0x00、0x55、0x33、0x0f。
[0032] 步骤2、将4个数据背景取反,得到8个March元素序列,即0x00、0xff、0x55、0xaa、 0x33、Oxcc、OxOf、OxfO。
[0033] 步骤3、使用8个March元素序列对32/6 = 4个操作数单元进行全排列填写,得到 # = 8「3_ = 4096个备选随机数集合,集合T的部分数据如图2的第一列所示,其中①为addi 指令的第一个随机操作数。
[0034] 步骤4、add指令结构使用两个操作数,即R = 2,生成M = 40962个测试随机数,集 合Ct的部分实例如图2前两列所示,其中①为addi指令的第一个随机操作数,②为addi指 令的第二个随机操作数,③为addi指令对两个操作数的标准计算结果。。
[0035] 步骤5、根据add指令代码实现,将操作数组合实例化为可自动对比验证的验证用 例,部分实例如图3所示,具体执行过程包括:
[0036] I、将addi指令的第一个随机操作数赋给r0寄存器;
[0037] II、将addi指令的第二个随机操作数赋给rl寄存器;
[0038] III、执行addi指令,将两个操作数的计算结果赋给r2寄存器;
[0039] IV、将addi指令的标准计算结果赋给r3寄存器;
[0040] V、比较r2和r3寄存器是否相等,若错误则跳转wrong处理。
[0041] 本发明随机数验证方法利用March算法较高的故障覆盖率在系统层面提高了随 机数验证的覆盖率,同时利用March算法较小的时间复杂度实现了对操作数数量的控制, 大大降低了验证成本。
【权利要求】
1. 一种用于处理器算术逻辑单元指令的随机数验证方法,其特征在于: 步骤一,基于March算法,根据运算指令操作数长度L和测试工作量,划分操作数存储 单元的W位/字长度,并选定数据背景; 对W= 2n位/字的存储器,取log2W+l个数据背景,若W关2n,取2「心^1位/字的数 据背景,并选择这组数据背景中的W位; 步骤二,根据March算法原理,对选定的数据背景取反,使选定的数据背景和取反的数 据背景共同组成March元素,得到数据B个March元素序列; 步骤三,使用B个March元素序列,对「i/ifl个操作数单元进行全排列填写,得到一组 个数TV= 的备选随机数集合T=Umm1,…,ImmJ; 步骤四,根据验证对象的指令格式,从备选随机数集合中任意选取R个进行组合,得到M=Nk 个测试随机数集合Ct = {[Immn,…,ImmiK]|i= 1,...,M;Immn,…,ImmiKeΤ}; 步骤五,根据算术逻辑指令结构,将Ct实例化运行得到算术逻辑运算指令代码,并通过 计算得出算术逻辑运算标准结果; 步骤六,将Ct实例化运行得到算术逻辑运算指令代码与计算得到的算术逻辑运算标准 结果通过比较指令进行比较,自动判断对错,完成验证。
2. 根据权利要求1所述的用于处理器算术逻辑单元指令的随机数验证方法,其特征在 于:所述的March算法选用面向"字"的MarchC-算法。
3. 根据权利要求1所述的用于处理器算术逻辑单元指令的随机数验证方法,其特征在 于:所述的March算法通过反复对每个地址进行读/写O或1的操作,根据数据背景生成原 理,选定的数据背景及其取反数据保证每两个字节之间的测试码出现〇〇、〇1、1〇、11四种情 况至少各一次。
【文档编号】G06F11/22GK104461798SQ201410635510
【公开日】2015年3月25日 申请日期:2014年11月12日 优先权日:2014年11月12日
【发明者】宁宁, 游军, 许辉勇, 宫瑶 申请人:中国航天科技集团公司第九研究院第七七一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1