CN104461798A - 一种用于处理器算术逻辑单元指令的随机数验证方法 - Google Patents
一种用于处理器算术逻辑单元指令的随机数验证方法 Download PDFInfo
- Publication number
- CN104461798A CN104461798A CN201410635510.6A CN201410635510A CN104461798A CN 104461798 A CN104461798 A CN 104461798A CN 201410635510 A CN201410635510 A CN 201410635510A CN 104461798 A CN104461798 A CN 104461798A
- Authority
- CN
- China
- Prior art keywords
- march
- data background
- imm
- instruction
- logical operation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
一种用于处理器算术逻辑单元指令的随机数验证方法,首先根据运算指令操作数长度,选取March元素序列,划分操作数存储单元,然后使用March元素序列,对操作数单元进行全排列填写,生成一组备选随机数,其次使用备选随机数,根据算术逻辑运算指令格式生成操作数组合,最后根据算术逻辑指令结构,将生成的操作数组合实例化为算术逻辑运算指令代码,并生成算术逻辑运算标准结果,进行自动对比验证。本发明测试用例根据写入和读出的关系,有针对性地选取随机数覆盖写入和读出不一致的故障代码,通过将处理器类比为一个存储器进行测试,把成熟的存储器测试方法引入到处理器测试中来,提高了随机数验证的针对性,同时降低了验证的成本。
Description
技术领域
本发明涉及处理器的离线功能验证方法,具体为一种用于处理器算术逻辑单元指令的随机数验证方法。
背景技术
目前,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算法较小的时间复杂度实现了对操作数数量的控制,大大降低了验证成本。
Claims (3)
1.一种用于处理器算术逻辑单元指令的随机数验证方法,其特征在于:
步骤一,基于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实例化运行得到算术逻辑运算指令代码与计算得到的算术逻辑运算标准结果通过比较指令进行比较,自动判断对错,完成验证。
2.根据权利要求1所述的用于处理器算术逻辑单元指令的随机数验证方法,其特征在于:所述的March算法选用面向“字”的March C-算法。
3.根据权利要求1所述的用于处理器算术逻辑单元指令的随机数验证方法,其特征在于:所述的March算法通过反复对每个地址进行读/写0或1的操作,根据数据背景生成原理,选定的数据背景及其取反数据保证每两个字节之间的测试码出现00、01、10、11四种情况至少各一次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410635510.6A CN104461798B (zh) | 2014-11-12 | 2014-11-12 | 一种用于处理器算术逻辑单元指令的随机数验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410635510.6A CN104461798B (zh) | 2014-11-12 | 2014-11-12 | 一种用于处理器算术逻辑单元指令的随机数验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461798A true CN104461798A (zh) | 2015-03-25 |
CN104461798B CN104461798B (zh) | 2017-08-18 |
Family
ID=52907894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410635510.6A Active CN104461798B (zh) | 2014-11-12 | 2014-11-12 | 一种用于处理器算术逻辑单元指令的随机数验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461798B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997408A (zh) * | 2016-01-22 | 2017-08-01 | 奇捷科技股份有限公司 | 电路验证 |
CN112365917A (zh) * | 2020-12-04 | 2021-02-12 | 深圳市芯天下技术有限公司 | 非易失存储器指令组合验证方法、装置、存储介质和终端 |
CN113608914A (zh) * | 2021-08-10 | 2021-11-05 | 安谋科技(中国)有限公司 | 一种芯片、芯片的功能安全检测方法、介质和电子设备 |
CN116597886A (zh) * | 2023-07-18 | 2023-08-15 | 深圳中安辰鸿技术有限公司 | 对npu中的lsu进行验证的方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4903266A (en) * | 1988-04-29 | 1990-02-20 | International Business Machines Corporation | Memory self-test |
JPH06231000A (ja) * | 1993-02-03 | 1994-08-19 | Hitachi Ltd | データ処理装置の試験方法 |
CN1269546A (zh) * | 1999-04-05 | 2000-10-11 | 株式会社日立制作所 | 具有内置自检功能的处理器 |
CN1567209A (zh) * | 2003-06-26 | 2005-01-19 | 上海华园微电子技术有限公司 | 微处理器的随机测试方法 |
CN102902906A (zh) * | 2012-09-26 | 2013-01-30 | 中国航天科技集团公司第九研究院第七七一研究所 | 微处理器指令集验证方法 |
-
2014
- 2014-11-12 CN CN201410635510.6A patent/CN104461798B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4903266A (en) * | 1988-04-29 | 1990-02-20 | International Business Machines Corporation | Memory self-test |
JPH06231000A (ja) * | 1993-02-03 | 1994-08-19 | Hitachi Ltd | データ処理装置の試験方法 |
CN1269546A (zh) * | 1999-04-05 | 2000-10-11 | 株式会社日立制作所 | 具有内置自检功能的处理器 |
CN1567209A (zh) * | 2003-06-26 | 2005-01-19 | 上海华园微电子技术有限公司 | 微处理器的随机测试方法 |
CN102902906A (zh) * | 2012-09-26 | 2013-01-30 | 中国航天科技集团公司第九研究院第七七一研究所 | 微处理器指令集验证方法 |
Non-Patent Citations (1)
Title |
---|
于文考 等: "基于March C-算法的单片机存储器测试", 《现代电子技术》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997408A (zh) * | 2016-01-22 | 2017-08-01 | 奇捷科技股份有限公司 | 电路验证 |
CN112365917A (zh) * | 2020-12-04 | 2021-02-12 | 深圳市芯天下技术有限公司 | 非易失存储器指令组合验证方法、装置、存储介质和终端 |
CN112365917B (zh) * | 2020-12-04 | 2021-11-05 | 芯天下技术股份有限公司 | 非易失存储器指令组合验证方法、装置、存储介质和终端 |
CN113608914A (zh) * | 2021-08-10 | 2021-11-05 | 安谋科技(中国)有限公司 | 一种芯片、芯片的功能安全检测方法、介质和电子设备 |
CN113608914B (zh) * | 2021-08-10 | 2024-04-26 | 安谋科技(中国)有限公司 | 一种芯片、芯片的功能安全检测方法、介质和电子设备 |
CN116597886A (zh) * | 2023-07-18 | 2023-08-15 | 深圳中安辰鸿技术有限公司 | 对npu中的lsu进行验证的方法及相关设备 |
CN116597886B (zh) * | 2023-07-18 | 2023-10-24 | 深圳中安辰鸿技术有限公司 | 对npu中的lsu进行验证的方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104461798B (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10204698B2 (en) | Method to dynamically inject errors in a repairable memory on silicon and a method to validate built-in-self-repair logic | |
US10699796B2 (en) | Validation of a repair to a selected row of data | |
CN105706059B (zh) | 非易失性存储器中的错误校正 | |
CN102902906B (zh) | 微处理器指令集验证方法 | |
CN103890733B (zh) | 用于将错误注入存储器的方法和装置 | |
CN104376877A (zh) | 对存储器中的永久错误进行错误识别的电路装置和方法 | |
CN104461798A (zh) | 一种用于处理器算术逻辑单元指令的随机数验证方法 | |
CN103984630A (zh) | 一种基于at697处理器的单粒子翻转故障处理方法 | |
US20200026519A1 (en) | Processor trace extensions to facilitate real-time security monitoring | |
CN103678115B (zh) | 在混合模式程序中检测源代码差错的位置的设备和方法 | |
CN105304144A (zh) | 存储器错误检测方法及装置 | |
CN107850641A (zh) | 片上***(SoC)的***级验证 | |
CN103838626A (zh) | 一种处理串行任务的数据处理装置及方法 | |
US8626965B2 (en) | Using a DMA engine to automatically validate DMA data paths | |
CN111723020A (zh) | 一种电能表测试软件的测试方法、装置及其设备 | |
CN102147831A (zh) | 逻辑验证方法和装置 | |
CN103793263B (zh) | 一种基于PowerPC处理器的DMA事务级建模方法 | |
Canizares et al. | An expert system for checking the correctness of memory systems using simulation and metamorphic testing | |
US9009548B2 (en) | Memory testing of three dimensional (3D) stacked memory | |
CN104969198A (zh) | 数据路径完整性验证 | |
US7954012B2 (en) | Hierarchical debug information collection | |
Lee et al. | Evaluation of error detection coverage and fault-tolerance of digital plant protection system in nuclear power plants | |
CN105279043A (zh) | 一种对单片机软件错误进行恢复的方法及*** | |
CN108763148B (zh) | 一种支持上注的容错存储器控制器 | |
Souza et al. | Empirical evaluation of a new composite approach to the coverage criteria and reachability testing of concurrent programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |