存储器故障诊断算法的研究与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储器故障诊断算法的研究与实现
存储器是各种设备中保存信息的主要部件,随着存储器芯片的密度和复杂度的日益提高,设计一个良好的测试算法来测试存储器变得尤为重要,存储器按功能,主要可分为随机存储器(RAM)和只读存储器(ROM)。
随机存储器(RAM)按照存储阵列所用的类型可分为静态随机存储器
(SRAM)、动态随机存储器(DRAM),只读存储器(ROM)可分为掩模编程ROM和现场可编程ROM。
2 存储器的故障模型
讨论存储器的检测办法,就必需先建立存储器单元的故障模型,也就是要求把物理故障模型化为规律故障,通常可以用功能模型或灰匣子模型将存储器故障模型化,典型RAM功能模型1所示,该模型是由Vande Goor 提出的简化功能DRAM模型。
对于图1的功能模型,存储器的故障主要表现有3类:(1)地址故障(AF),主要表现为4种形式(2所示)。
(2)读写规律模块故障。
主要表现为在读写电路中,某些检测的出或者写入驱动器的规律部分,可能产生开路、短路或者I/O固定的故障,在读写电路的数据线之间存在交错耦合的干扰。
(3)存储单元阵列故障,因为存储单元阵列是存储器内规模最为复杂的一个模块,因此浮现故障的概率最大,故障的类型也最为复杂,主要是因为存储器单元内的数据线开路、短路以及串扰所引起的。
对于上述的功能模型去掉其中的某些规律模块,就可用于ROM的测试。
3 存储器的简化功能故障
基于以上各模块的故障表现形式,又因为地址译码故障和读写规律故障可以等效的功能映射为存储器单元阵列故障,故可把存储器故障简化为下列四种功能故障:
(1)固定故障(stuck-At Fault,SAF)
单元或连线的规律值总为0或总为1的故障,单元/连线总是处于有故障的状态,并且故障的规律值不变。
(2)转换故障(Transition Fault.TF)
转换故障是SAF的一种特别状况,当写数据时,某一存储单元失效使得0→1改变或1→0改变不能发生,表现为固定故障的形式。
(3)耦合故障(Coupling Fault,CF)
存储单元中某些位的跳变导致其他位的规律发生非预期的变幻,它既可以发生在不同单元之间,也可以发生在同一单元不同位之间。
(4)相邻矢量敏化故障(Neighborhood Pattern Sensitive Faults,NPSF)
一个单元因相邻单元的活动导致状态不正确,一个单元的相邻单元可能有5个,也可能有9个,3的(a)、(b)所示。
4 存储器故障诊断算法分析针对存储器故障模型中的各种故障,人们提出了各种诊断算法,目前主要用法的算法有:Checkerboard算法(棋盘法)、Gallop算法(奔跳法)、March算法(举行法)等。
4.1 Checkerboard算法(棋盘法)
棋盘法的测试过程是首先对每一个存储单元赋值,使得每一个单元与其紧相邻的各个单元的值都不同,4所示,即把囫囵存储阵列分为两块a、b,然后采纳如下过程对a、b举行读写;
(1)对分块a(b)中的单元写0(1);
(2)读全部单元;
(3)对分块a(b)中的单元写1(0);
(4)读全部单元;
(5)该算法理论上操作的次数是O(N),其中N为存储器容量,可以检测SAF故障和相邻单元的桥接故障,其故障笼罩率较低。
4.2 Gallop算法(奔跳法)
Gallop算法也称为1(0)漫游或乒乓测试,测试过程如下:
(1)部分地址单元清0(1);
(2)A0写1(0),然后A1读0(1),A0读1(0),然后A2读0(1),A0读1(0),接着A3读0(1),A0读1(0),直到所有单元;(3)将A0改写为0(1),写A1为1(0),重复以上步骤。
囫囵过程就像1(0)在囫囵阵列中漫游一样,图5表示1漫游的状况,该算法具有较高的故障笼罩率,能检测SAF故障、TF故障以及CF故障,单位该算法操作次数是O(N2)需要较长的测试时光。
4.3 March算法(举行法)
(1)所有单元中写0;
(2)读A0单元的0,然后再改写为1,然后读A1的0,再改写A1为1,直到An-1。
这样全部单元均为1;(3)然后从An-1到A0作读1写0再读0的操作。
该算法的操作次数为O(N),能检测所有的SAF故障、AF故障以及TF故障。
5 一种基于棋盘算法的改进及实现
通过讨论和对照上述3个算法发觉,Checkerboard(棋盘)算法和March 算法以线性方式举行读写,因此存储器操作次数与存储器容量N成正比,Gallop算法虽然有较高的故障笼罩率,但因为其对存储器刺激次数过多,因此,在实际测试中不是一种很经济的测试算法,Checkerboad 算法只实现了0→1或1→0的读写,所以不能测试变迁故障。
而March 算法恰恰实现了这两个状态的转换,但March算法操作次数(6N)要多于Checkerboard算法的操作次数(4N),对于大容量存储器的测试,March算法将需要比Checkerboard算法更多的测试时光来完成囫囵测试过程,因此结合March算法的特点,对Checkerboard算法举行如下改进。
(1)对分块a(b)中单元写1(0);
(2)对分块a(b)中的单元写0(1);
(3)读全部单元;
(4)对分块a(b)中的单元写1(0);
(5)读全部单元。
这样囫囵存储器就同时经受了由0→1和1→0两个读写状态,就可以测试出变迁故障,写改进后Checkboard算法对存储器的操作次数为5N 次,而March算法对存储器的操作次数则需要6N次,大大地节约了测试时光。
以一个X(行地址)、Y(列地址)地址复用的128×128的存储器矩阵为例,按改进后的算法编写的测试图形片断6。
实际的算法图形要协作读写的时序,因此图形更为复杂,但对存储器的操作次数与理论是全都的,改进的Checkerboard算法虽然用法了较少的存储器操作次数,但其只能诊断出部分AF故障,与March算法相比,是以牺牲故障笼罩率为代价来提高测试速度的。
在实际的生产型测试中,地址译码模块因为结构较存储矩阵要容易得多,因此浮现故障的概率远远小于存储矩阵,且改进的Checkerboard 算法也能诊断部分的AF故障,是一种经济的测试算法。
6 结语
文章在理解分析的基础上结合各算法的特点对Checkerboard算法举行了改进及实现,通过讨论发觉,任何事物都有两面性,每种算法对不同的类型故障的探测能力各有千秋,但不会尽善尽美,改进的算法虽然提高了测试速度,但这种改进牺牲了故障笼罩率。
但就实际的测试需要而言,是彻低符合要求且行之有效的,在实际应用中,要按照存储器的故障类型和测试需求来挑选合适的诊断算法,才干达到惬意的效果。