一种宇航用带EDAC功能SRAM存储器功能验证方法与流程

文档序号:13259204阅读:302来源:国知局
一种宇航用带EDAC功能SRAM存储器功能验证方法与流程
本发明涉及一种宇航用带EDAC功能SRAM存储器功能验证方法,属于宇航元器件应用验证技术领域。

背景技术:
受宇宙空间中辐射的影响,航天器上的静态随机存储器(StaticRandomAccessMemory,SRAM)可能会发生单粒子翻转效应(SignalEventUpset,SEU)。SEU可能会造成存储器某一位的数据从一个稳态变化到另一个稳态,而存储器的数据变化又会使星载计算机系统的指令或是数据出错,严重时可能导致整个星载计算机系统的崩溃。因此,需要寻找一种办法来纠错或是容错。实现星载计算机SRAM容错或纠错的办法有很多,采用带EDAC功能的SRAM存储器是最直接的办法。随着工艺尺寸的不断缩小,存储容量的不断扩大,SRAM存储器的测试复杂度越来越大,为提供合格的存储器产品,必须针对各种电路故障,优化测试向量,提高产品的测试覆盖率。带EDAC功能的SRAM存储器是一种新型的存储器,目前已有的功能验证方法都是针对不带EDAC功能的SRAM存储器设计的。本发明即在此背景下,为了实现对带EDAC功能的SRAM存储器全面有效的验证,提出了相应的功能验证方法。

技术实现要素:
本发明的技术解决问题是:克服现有技术的不足,提供了一种宇航用带EDAC功能SRAM存储器功能验证方法。本发明的技术解决方案是:一种宇航用带EDAC功能SRAM存储器功能验证方法,步骤如下:(1)将SRAM存储器的EDAC纠错模式开启,进行MarchC-算法功能验证,并将每个测试向量的验证结果通过串口发送给上位机,如果所有测试向量的验证结果均为0,令总体计数器的值维持不变;否则,令总体计数器的值加1;总体计数器的初值为0;(2)将SRAM存储器的EDAC纠错模式关闭,再次进行MarchC-算法功能验证,并将每个测试向量的验证结果通过串口发送给上位机,如果所有测试向量的验证结果均为0,令总体计数器的值维持不变;否则,令总体计数器的值加1;(3)对SRAM存储器的进行1bit注错测试,并将测试结果上传给上位机,测试结果包括多个SBE软计数器的值和多个SBE硬件计数器的值,如果所有SBE软计数器值均为0并且所有SBE硬件计数器值均为512K,则令总体计数器的值维持不变;否则,令总体计数器的值加1;(4)对SRAM存储器的进行2bit注错测试;并将测试结果上传给上位机,测试结果包括多个MBE软计数器的值和多个MBE硬件计数器的值,如果所有MBE软计数器值均为0并且所有MBE硬件计数器值均为512K,则令总体计数器的值维持不变;否则,令总体计数器的值加1;之后进入步骤(5);(5)判断总体计数器的值,如果总体计数器的值为0,则所述带EDAC功能的SRAM存储器功能验证通过,否则表明SRAM存储器功能异常。所述步骤(1)和步骤(2)中进行MarchC-算法功能验证均通过如下方式进行:(2.1)从首地址0x00000按递增顺序,将SRAM存储器中所有地址均初始化为0x00000000,设置错误计数器,并初始化为0;(2.2)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFFFFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFFFFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.3);(2.3)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFFFFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x00000000;如果不同,则令错误计数器加1,同时也将该地址数据写为0x00000000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.4);(2.4)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFFFFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFFFFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.5);(2.5)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFFFFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0000000;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0000000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.6);(2.6)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x55555555;如果不同,则令错误计数器加1,同时也将该地址数据写为0x55555555;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.7);(2.7)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x55555555进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xAAAAAAAA;如果不同,则令错误计数器加1,同时也将该地址数据写为0xAAAAAAAA;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.8);(2.8)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xAAAAAAAA进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x55555555;如果不同,则令错误计数器加1,同时也将该地址数据写为0x55555555;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.9);(2.9)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x55555555进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x33333333;如果不同,则令错误计数器加1,同时也将该地址数据写为0x33333333;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.10);(2.10)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x33333333进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xCCCCCCCC;如果不同,则令错误计数器加1,同时也将该地址数据写为0xCCCCCCCC;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.11);(2.11)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xCCCCCCCC进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x33333333;如果不同,则令错误计数器加1,同时也将该地址数据写为0x33333333;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.12);(2.12)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x33333333进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0F0F0F0F;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0F0F0F0F;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.13);(2.13)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0F0F0F0F进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xF0F0F0F0;如果不同,则令错误计数器加1,同时也将该地址数据写为0xF0F0F0F0;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.14);(2.14)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xF0F0F0F0进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0F0F0F0F;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0F0F0F0F;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.15);(2.15)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0F0F0F0F进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x00FF00FF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x00FF00FF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.16);(2.16)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00FF00FF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFF00FF00;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFF00FF00;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.17);(2.17)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFF00FF00进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x00FF00FF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x00FF00FF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.18);(2.18)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00FF00FF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0000FFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0000FFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.19);(2.19)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0000FFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFF0000;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFF0000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.20);(2.20)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFF0000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0000FFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0000FFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(2.21);(2.21)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0000FFFF进行比较,如果相同,则表明该地址数据正确;如果不同,则令错误计数器加1;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,延时100ms后进入步骤(2.22);(2.22)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0000FFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFF0000;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFF0000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,延时100ms后进入步骤(2.23);(2.23)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFF0000进行比较,如果相同,则表明该地址数据正确;如果不同,则令错误计数器加1;遍历所有地址之后,将错误计数器的值上传给上位机。所述步骤(3)对SRAM存储器的进行1bit注错测试具体通过如下方式进行:(3.1)确定对SRAM存储器进行1bit注错测试的注错数据为0x00000001,在SRAM存储器的单错标识管脚SBE上连接SBE硬件计数器,初值为0;设置SBE软计数器,其初值也设置为0;所述SBE硬件计数器对SRAM存储器的单错标识管脚SBE输出脉冲信号进行计数;(3.2)开启SRAM存储器的EDAC纠错模式;(3.3)将SRAM存储器中所有地址均写入0x00000000;(3.4)关闭SRAM存储器的EDAC纠错模式;(3.5)将SRAM存储器中所有地址均写入注错数据;(3.6)开启SRAM存储器的EDAC纠错模式;(3.7)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据已经被SRAM存储器自动纠正;如果不同,则令SBE软计数器加1;遍历所有地址之后,将SBE软计数器和SBE硬件计数器的值上传给上位机,并将将SBE软计数器和SBE硬件计数器清零,之后进入步骤(3.8);(3.8)将注错数据左移1位,重复步骤(3.2)~(3.7),之后再将注错数据左移2位,再重复步骤(3.2)~(3.7),以此类推,直到将注错数据左移32位,重复步骤(3.2)~(3.7);32次循环执行完毕后,进入步骤(3.9);(3.9)将注错数据置为0x00010001,重复步骤(3.2)~(3.7),之后再将0x00010001左移1位,重复步骤(3.2)~(3.7),以此类推,直到将0x00010001左移16位,重复步骤(3.2)~(3.7)。所述步骤(4)对SRAM存储器的进行2bit注错测试具体通过如下方式进行:(4.1)确定对SRAM存储器进行1bit注错测试的注错数据为0x00000003,在SRAM存储器的双错标识管脚MBE上连接MBE硬件计数器,初值为0;设置MBE软计数器,其初值也设置为0;所述MBE硬件计数器对SRAM存储器的双错标识管脚MBE输出脉冲信号进行计数;(4.2)开启SRAM存储器的EDAC纠错模式;(4.3)将SRAM存储器中所有地址均写入0x00000000;(4.4)关闭SRAM存储器的EDAC纠错模式;(4.5)将SRAM存储器中所有地址均写入注错数据;(4.6)开启SRAM存储器的EDAC纠错模式;(4.7)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与所述注错数据进行比较,如果相同,则表明该地址数据未被SRAM存储器自动纠正;如果不同,则令MBE软计数器加1;遍历所有地址之后,将MBE软计数器和MBE硬件计数器的值上传给上位机,并将将MBE软计数器和MBE硬件计数器清零,之后进入步骤(4.8);(4.8)将注错数据左移1位,重复步骤(4.2)~(4.7),之后再将注错数据左移2位,再重复步骤(4.2)~(4.7),以此类推,直到将注错数据左移32位,重复步骤(4.2)~(4.7);32次循环执行完毕后,进入步骤(4.9);(4.9)将注错数据置为0x00030003,重复步骤(4.2)~(4.7),之后再将0x00030003左移1位,重复步骤(4.2)~(4.7),以此类推,直到将0x00030003左移16位,重复步骤(4.2)~(4.7)。本发明与现有技术相比的有益效果:(1)本发明提供了一个完整的、全面的宇航用带EDAC功能SRAM存储器功能验证方法,可根据器件应用验证的需要,随时对验证项目或方法进行调整和测试,对于宇航用带EDAC功能SRAM存储器功能验证具有重要意义。(2)本发明跟普通MarchC-算法相比,通过增加字内的耦合故障测试数据背景时序,将数据宽度从1位增加到32位;同时,对其中一对互为反码的数据背景进行延时测试,实现覆盖数据保持故障。(3)本发明可以对SRAM存储器的固定故障、转换故障、耦合故障、地址译码故障、读破坏故障、错误写通故障、数据保持故障达到100%覆盖率;且算法复杂度低,对32位宽度的存储单元只需23步即可完成验证。(4)本发明采用1bit和2bit注错测试,可以对带EDAC功能SRAM存储器的每一个存储单元的每一个bit数据位进行注错测试,与实际单粒子试验相比,具有实现简单、验证效率高的优点。(5)本发明中的数据是针对容量为512K位宽32bit的带EDAC功能SRAM存储器设计的,其它容量和位宽的带EDAC功能SRAM存储器功能验证方法可以通用,只需对相应数据做适应性修改即可。附图说明图1为本发明带EDAC功能SRAM存储器功能验证方法流程图;图2为本发明带EDAC功能SRAM存储器MarchC-算法流程图;图3为本发明带EDAC功能SRAM存储器1bit注错测试流程图;图4为本发明带EDAC功能SRAM存储器2bit注错测试流程图;具体实施方式如图1所示,本发明提供了一种宇航用带EDAC功能SRAM存储器功能验证方法,步骤如下:(1)将SRAM存储器的EDAC纠错模式开启,进行MarchC-算法功能验证,并将每个测试向量的验证结果通过串口发送给上位机,如果所有测试向量的验证结果均为0,令总体计数器的值维持不变;否则,令总体计数器的值加1;总体计数器的初值为0;如图2所示,进行MarchC-算法功能验证均通过如下方式进行:(1.1)从首地址0x00000按递增顺序,将SRAM存储器中所有地址均初始化为0x00000000,设置错误计数器,并初始化为0;(1.2)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFFFFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFFFFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(13);(1.3)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFFFFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x00000000;如果不同,则令错误计数器加1,同时也将该地址数据写为0x00000000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.4);(1.4)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFFFFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFFFFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.5);(1.5)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFFFFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0000000;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0000000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.6);(1.6)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x55555555;如果不同,则令错误计数器加1,同时也将该地址数据写为0x55555555;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.7);(1.7)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x55555555进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xAAAAAAAA;如果不同,则令错误计数器加1,同时也将该地址数据写为0xAAAAAAAA;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.8);(1.8)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xAAAAAAAA进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x55555555;如果不同,则令错误计数器加1,同时也将该地址数据写为0x55555555;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.9);(1.9)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x55555555进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x33333333;如果不同,则令错误计数器加1,同时也将该地址数据写为0x33333333;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.10);(1.10)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x33333333进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xCCCCCCCC;如果不同,则令错误计数器加1,同时也将该地址数据写为0xCCCCCCCC;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.11);(1.11)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xCCCCCCCC进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x33333333;如果不同,则令错误计数器加1,同时也将该地址数据写为0x33333333;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.12);(1.12)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x33333333进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0F0F0F0F;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0F0F0F0F;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.13);(1.13)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0F0F0F0F进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xF0F0F0F0;如果不同,则令错误计数器加1,同时也将该地址数据写为0xF0F0F0F0;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.14);(1.14)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xF0F0F0F0进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0F0F0F0F;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0F0F0F0F;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.15);(1.15)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0F0F0F0F进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x00FF00FF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x00FF00FF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.16);(1.16)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00FF00FF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFF00FF00;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFF00FF00;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.17);(1.17)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFF00FF00进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x00FF00FF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x00FF00FF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.18);(1.18)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00FF00FF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0000FFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0000FFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.19);(1.19)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0000FFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFF0000;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFF0000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.20);(1.20)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFF0000进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0x0000FFFF;如果不同,则令错误计数器加1,同时也将该地址数据写为0x0000FFFF;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,之后进入步骤(1.21);(1.21)从末地址0x7FFFF按递减顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0000FFFF进行比较,如果相同,则表明该地址数据正确;如果不同,则令错误计数器加1;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,延时100ms后进入步骤(1.22);(1.22)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x0000FFFF进行比较,如果相同,则表明该地址数据正确,并将该地址数据写为0xFFFF0000;如果不同,则令错误计数器加1,同时也将该地址数据写为0xFFFF0000;遍历所有地址之后,将错误计数器的值上传给上位机,再将错误计数器的值清零,延时100ms后进入步骤(1.23);(1.23)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0xFFFF0000进行比较,如果相同,则表明该地址数据正确;如果不同,则令错误计数器加1;遍历所有地址之后,将错误计数器的值上传给上位机。(2)将SRAM存储器的EDAC纠错模式关闭,再次进行MarchC-算法功能验证,并将每个测试向量的验证结果通过串口发送给上位机,如果所有测试向量的验证结果均为0,令总体计数器的值维持不变;否则,令总体计数器的值加1;本步骤中再次进行MarchC-算法功能验证的步骤与步骤(1)中相同;(3)对SRAM存储器的进行1bit注错测试,并将测试结果上传给上位机,测试结果包括多个SBE软计数器的值和多个SBE硬件计数器的值,如果所有SBE软计数器值均为0并且所有SBE硬件计数器值均为512K,则令总体计数器的值维持不变;否则,令总体计数器的值加1;本发明提供了一种带EDAC功能SRAM存储器1bit注错测试方法,先进行低16bit注错测试,然后进行高16bit注错测试,最后进行低16bit和高16bit同时注错测试,通过循环位移,将验证每一个bit数据位的纠错功能,具体操作过程中,首先初时化注错数据,低16bit注错数据为0x00000001,高16bit注错数据为0x00010000,高低16bit同时注错数据为0x00010001。首先开启EDAC模式,对全地址写入数据0x00000000;然后关闭EDAC模式,进行错误注入;接着打开EDAC模式开始读取数据,同时判断SBE标志位是否置为高电平,并记录翻转次数。具体如图3所示,对SRAM存储器的进行1bit注错测试具体为:(3.1)确定对SRAM存储器进行1bit注错测试的注错数据为0x00000001,在SRAM存储器的单错标识管脚SBE上连接SBE硬件计数器,初值为0;设置SBE软计数器,其初值也设置为0;所述SBE硬件计数器对SRAM存储器的单错标识管脚SBE输出脉冲信号进行计数;(3.2)开启SRAM存储器的EDAC纠错模式;(3.3)将SRAM存储器中所有地址均写入0x00000000;(3.4)关闭SRAM存储器的EDAC纠错模式;(3.5)将SRAM存储器中所有地址均写入注错数据;(3.6)开启SRAM存储器的EDAC纠错模式;(3.7)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与0x00000000进行比较,如果相同,则表明该地址数据已经被SRAM存储器自动纠正;如果不同,则令SBE软计数器加1;遍历所有地址之后,将SBE软计数器和SBE硬件计数器的值上传给上位机,并将将SBE软计数器和SBE硬件计数器清零,之后进入步骤(3.8);(3.8)将注错数据左移1位,重复步骤(3.2)~(3.7),之后再将注错数据左移2位,再重复步骤(3.2)~(3.7),以此类推,直到将注错数据左移32位,重复步骤(3.2)~(3.7);32次循环执行完毕后,进入步骤(3.9);(3.9)将注错数据置为0x00010001,重复步骤(3.2)~(3.7),之后再将0x00010001左移1位,重复步骤(3.2)~(3.7),以此类推,直到将0x00010001左移16位,重复步骤(3.2)~(3.7)。(4)对SRAM存储器的进行2bit注错测试;并将测试结果上传给上位机,测试结果包括多个MBE软计数器的值和多个MBE硬件计数器的值,如果所有MBE软计数器值均为0并且所有MBE硬件计数器值均为512K,则令总体计数器的值维持不变;否则,令总体计数器的值加1;之后进入步骤(5);本发明提供了一种带EDAC功能SRAM存储器2bit注错测试方法,先进行低16bit注错测试,然后进行高16bit注错测试,最后进行低16bit和高16bit同时注错测试,通过循环位移,将验证每2bit数据位的检错能力,具体操作过程中,首先初时化注错数据,低16bit注错数据为0x00000003,高16bit注错数据为0x00030000,高低16bit同时注错数据为0x00030003。首先开启EDAC模式,对全地址写入数据0x00000000;然后关闭EDAC模式,进行错误注入;接着打开EDAC模式开始读取数据,同时判断MBE标志位是否置为高电平,并记录翻转次数。如图4所示,对SRAM存储器的进行2bit注错测试具体为:(4.1)确定对SRAM存储器进行1bit注错测试的注错数据为0x00000003,在SRAM存储器的双错标识管脚MBE上连接MBE硬件计数器,初值为0;设置MBE软计数器,其初值也设置为0;所述MBE硬件计数器对SRAM存储器的双错标识管脚MBE输出脉冲信号进行计数;(4.2)开启SRAM存储器的EDAC纠错模式;(4.3)将SRAM存储器中所有地址均写入0x00000000;(4.4)关闭SRAM存储器的EDAC纠错模式;(4.5)将SRAM存储器中所有地址均写入注错数据;(4.6)开启SRAM存储器的EDAC纠错模式;(4.7)从首地址0x00000按递增顺序,读取SRAM存储器中每个地址的数据,并将读取出的数据与所述注错数据进行比较,如果相同,则表明该地址数据未被SRAM存储器自动纠正;如果不同,则令MBE软计数器加1;遍历所有地址之后,将MBE软计数器和MBE硬件计数器的值上传给上位机,并将将MBE软计数器和MBE硬件计数器清零,之后进入步骤(4.8);(4.8)将注错数据左移1位,重复步骤(4.2)~(4.7),之后再将注错数据左移2位,再重复步骤(4.2)~(4.7),以此类推,直到将注错数据左移32位,重复步骤(4.2)~(4.7);32次循环执行完毕后,进入步骤(4.9);(4.9)将注错数据置为0x00030003,重复步骤(4.2)~(4.7),之后再将0x00030003左移1位,重复步骤(4.2)~(4.7),以此类推,直到将0x00030003左移16位,重复步骤(4.2)~(4.7);(5)判断总体计数器的值,如果总体计数器的值为0,则所述带EDAC功能的SRAM存储器功能验证通过,否则表明SRAM存储器功能异常。本发明说明书中未作详细描述的内容属本领域专业技术人员的公知技术。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1