首页> 中国专利> 一种用于处理器算术逻辑单元指令的随机数验证方法

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

摘要

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

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-08-18

    授权

    授权

  • 2015-04-22

    实质审查的生效 IPC(主分类):G06F11/22 申请日:20141112

    实质审查的生效

  • 2015-03-25

    公开

    公开

说明书

技术领域

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

背景技术

目前,SoC的设计与应用已经成为IC发展的主要热点和方向,国内SoC 的技术发展迅速,已经成功设计出了一系列的国产SoC芯片,但是国产SoC芯 片要想获得国内业界的认可和推广应用仍需在功能可靠性方面进行更加深入、 全面的测试验证,尤其需要将处理器指令集的功能验证放到可靠性验证工作的 第一位。

处理器离线随机验证是当前处理器验证的主流方法,其较高层次的实施方 式在系统级验证层面上具有不可替代的地位,但该方法由于随机针对性不强, 即使通过大量的验证用例也会导致错误覆盖率不高,同时开发大量的验证用例 也带来了极大的验证成本。

发明内容

针对现有技术中存在的问题,本发明提供一种能够提高随机验证效率的用 于处理器算术逻辑单元指令的随机数验证方法。

本发明通过以下技术方案来实现:

步骤一,基于March算法,根据运算指令操作数长度L和测试工作量,划 分操作数存储单元的W位/字长度,并选定数据背景;

对W=2n位/字的存储器,取log2W+1个数据背景,若W≠2n,取位/字的数据背景,并选择这组数据背景中的W位;

步骤二,根据March算法原理,对选定的数据背景取反,使选定的数据背 景和取反的数据背景共同组成March元素,得到数据B个March元素序列;

步骤三,使用B个March元素序列,对个操作数单元进行全排列填 写,得到一组个数的备选随机数集合T={Imm1,…,ImmN};

步骤四,根据验证对象的指令格式,从备选随机数集合中任意选取R个进 行组合,得到M=NR个测试随机数集合CT={[Immi1,…,ImmiR]|i=1,…,M; Immi1,…,ImmiR∈T};

步骤五,根据算术逻辑指令结构,将CT实例化运行得到算术逻辑运算指令 代码,并通过计算得出算术逻辑运算标准结果;

步骤六,将CT实例化运行得到算术逻辑运算指令代码与计算得到的算术逻 辑运算标准结果通过比较指令进行比较,自动判断对错,完成验证。

所述的March算法选用面向“字”的March C-算法。

所述的March算法通过反复对每个地址进行读/写0或1的操作,根据数据 背景生成原理,选定的数据背景及其取反数据保证每两个字节之间的测试码出 现00、01、10、11四种情况至少各一次。

与现有技术相比,本发明具有以下有益的技术效果:

由于算术逻辑运算实质上是将操作数读出,计算,然后写入目标寄存器, 其故障发生在读、算、写三个环节,但“算”环节发生的故障对于验证是不可见 的,本发明测试用例根据写入和读出的关系,有针对性地选取随机数覆盖写入 和读出不一致的故障模式,通过将处理器类比为一个存储器进行测试,把成熟 的存储器测试方法引入到处理器测试中来,用存储器的故障模型去覆盖处理器 的错误类型,由于算术逻辑运算指令的操作数和运算结果在处理器指令流中的 读取和回写与处理器对存储器数据的读写传输路径相一致,因此存储器的故障 模型完全可以覆盖算术逻辑运算指令数据通路上的错误,另一方面,除了数据 传输路径,算术逻辑运算指令的运算执行部分依然是处理器内部的黑盒,其计 算错误的模式更加复杂,在随机验证中根本无法进行针对性设计,因此将指令 的运算执行部分作为存储器单元,从更高的系统层次进行针对性验证设计,从 而可以无需关注具体的错误内容而做到其内部的复杂及未知故障的覆盖。 March算法是比较流行的存储器测试方法,对固定故障、状态转换故障、寻址 故障和耦合故障的覆盖率能够达到100%。本发明随机数验证方法,一方面利 用March算法较高的故障覆盖率提高了随机数验证的针对性,另一方面利用其 较小的时间复杂度实现了对操作数数量的控制,大大降低了验证的成本。

进一步的,本发明随机数验证方法选用面向“字”的March C-算法,能够有 效的检测大多数存储器简化故障,提高了故障的覆盖率,并且能够减少测试的 成本。

附图说明

图1为本发明的流程图;

图2为本发明生成的操作数及其标准计算结果实例图;

图3为本发明生成的算术逻辑运算指令代码实例图。

具体实施方式

下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的 解释而不是限定。

参见图1,本发明的随机数验证方法包括:

步骤一,根据运算指令操作数长度L和测试工作量,划分操作数存储单元 的W位/字长度,并选定数据背景;

对W=2n位/字的存储器,取log2W+1个数据背景,若W≠2n,取位/ 字的数据背景,并选择这组数据背景中的W位;

步骤二,根据面向“字”的March C-算法原理,对选定的数据背景取反, March算法通过反复对每个地址进行读/写0或1的操作,根据数据背景生成原 理,选定的数据背景及其取反数据保证每两个字节之间的测试码出现00、01、 10、11四种情况至少各一次,选定的数据背景和取反的数据背景共同组成 March元素,得到数据B个March元素序列;

步骤三,使用B个March元素序列,对个操作数单元进行全排列填 写,得到一组个数的备选随机数集合T={Imm1,…,ImmN};

步骤四,根据验证对象的指令格式,从备选随机数集合中任意选取R个进 行组合,得到M=NR个测试随机数集合CT={[Immi1,…,ImmiR]|i=1,…,M; Immi1,…,ImmiR∈T};

步骤五,根据算术逻辑指令结构,将CT实例化运行得到算术逻辑运算指令 代码,并通过计算得出算术逻辑运算标准结果;

步骤六,将CT实例化运行得到算术逻辑运算指令代码与计算得到的算术逻 辑运算标准结果通过比较指令进行比较,自动判断对错,完成验证。

参见图2,3,以自主研发的DSP处理器为验证对象,结合一条32位整点 加法指令(addi reg_rs1,reg_rs2,reg_rd)的随机数验证,对本专利的实施过 程描述如下:

步骤1、划分L=32的操作数存储单元位/字长度W=8=23,则数据背景个数 为log2W+1=4,即0x00、0x55、0x33、0x0f。

步骤2、将4个数据背景取反,得到8个March元素序列,即0x00、 0xff、0x55、0xaa、0x33、0xcc、0x0f、0xf0。

步骤3、使用8个March元素序列对32/6=4个操作数单元进行全排列填 写,得到个备选随机数集合,集合T的部分数据如图2的第一列 所示,其中①为addi指令的第一个随机操作数。

步骤4、add指令结构使用两个操作数,即R=2,生成M=40962个测试随 机数,集合CT的部分实例如图2前两列所示,其中①为addi指令的第一个随机 操作数,②为addi指令的第二个随机操作数,③为addi指令对两个操作数的标 准计算结果。。

步骤5、根据add指令代码实现,将操作数组合实例化为可自动对比验证 的验证用例,部分实例如图3所示,具体执行过程包括:

Ⅰ、将addi指令的第一个随机操作数赋给r0寄存器;

Ⅱ、将addi指令的第二个随机操作数赋给r1寄存器;

Ⅲ、执行addi指令,将两个操作数的计算结果赋给r2寄存器;

Ⅳ、将addi指令的标准计算结果赋给r3寄存器;

Ⅴ、比较r2和r3寄存器是否相等,若错误则跳转wrong处理。

本发明随机数验证方法利用March算法较高的故障覆盖率在系统层面提高 了随机数验证的覆盖率,同时利用March算法较小的时间复杂度实现了对操作 数数量的控制,大大降低了验证成本。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号