随机存取存贮器的快速功能测试法及其系统的制作方法

文档序号:98557阅读:444来源:国知局
专利名称:随机存取存贮器的快速功能测试法及其系统的制作方法
本发明一般讲是关于随机存取存贮器系统的功能测试的,更详细的说,是用有高度可靠性的快速功能测试算法,检测存贮器系统中的故障的概率方法和系统。
半导体存贮器技术的最新发展显著地增加了半导体随机存取存贮器(RAMS)的使用。这类存贮器通常是采用双极或金属氧化物半导体(MOS)技术的大规模集成(LSI)器件。图1用示意图表示随机存取存贮器系统(RAM)10,它主要包括一些存贮器器件12,地址译码器14和与数据和地址总线17、19连接的数据缓冲器16。每个存贮器器件或芯片12包含许多存贮器单元,这些单元按字组成并且有写入和读出能力。经过控制总线21把读/写信号加到RAM器件12上。
在存贮器芯片内任何部分可能发生的物理故障取决于那些诸如元件密度、线路布局和制造方法等因素。检测这些故障的必要的试验过程分为三类,直流参数测试、交流参数测试和功能测试。
在直流参数测试中,对芯片的直流参数检查其不容许的输出电平、高的功耗、输出能力、噪声容限、逻辑信号的上升和下降时间及其他指标。交流参数测试或动态测试,测量交流参数,诸如存贮器存取时间、建立时间和保持时间以检测任何误动作现象。可由交流测试检出的误动作的实例,包括,“慢写-恢复”即当写入周期领先每个读取周期时,存贮器在规定的存取时间里,不能产生正确信息,和“睡眠症(SLEEping Sickn-ess)存贮器在小于规定的保持时间里,丢失信息。
功能测试检测导致存贮器不正常工作的永久性故障。一般讲,假如从任何单元读出的值与最新写入那个单元的值一致,而且与原来写入的值或任何别的单元的内容无关,那么,这个读/写随机存取存贮器可定义为是有作用的或有效的。
一个包含所有可能故障的功能试验是不实际的,因为那样的试验的复杂性将达2″数量级。其中n是存贮器中的单元数。这是因为在一个测量周期期间,监视一个单元,要考虑到在其余单元的所有可能状态的诸多情况,因此,假定一个单元存取时间为500毫微秒,要试验一千位RAM就需要约10293秒。因此,要形成任何实际可行的试验程序,试验必须是不涉及所有可能的故障而仅是那些最可能发生的故障的子集。这称为故障模型试验。
本发明的测试所用的模型假设与所测试的芯片的布局,或者甚至哪些地址线选择芯片以及哪些选择芯片中的位等关系都很小。这个模型是基于存贮器器件的分级,从芯片的最低级单元开始。下一级是芯片本身、接着是芯片版。最高一级是被测的整个系统。分级系统的每一级与地址位(address bits)的子集相联系,这些地址在它们的组成元件之中进行选择。分级系统的级安排成行和列,各有单独的地址位控制。该模型包括按字编制的存贮器系统。分级系统的较高级别通常是一个元件内的全字(Full word),即一个板通常将包含一个全字。例如,一个16位字的系统,是由具有许多16K×1的芯片的单板或多板组成的,在每个板上有全部的(数据)位,但是,字的每个(数据)位有单独的芯片。另一方面,系统可以由2K×8的芯片构成,每个芯片上有8个不同的数据位。
该模型包含以下故障式样1.RAM单元粘连(sticK)。这发生在一个单元总是1或是总是0。一种情况是某单元可能强制成某种状态并且是可读的,但是一旦转变成相反状态,就不能再改变。另一种情况称为转变(transition)故障,该单元出现粘连与选址到它时的写入操作有关,但是由于同时产生了耦合故障而仍然可能被改变。
2.地址位粘连。该故障同时变换两组地址。假如该故障是在分级系统的每个元件包含一个全字的一个级上,那么将影响到这些字的所有数据位。
3.译码器故障。在此,行或列译码器或是当它应该选择时未能选择或是当它不该选择时选择了。第一种情况导致在一个读取中返回0态或1态,这取决于存贮器设计而写入不起作用。多重选择引起写入而影响存贮器单元,在较芯片级高的那些级上,在读取期间的多重选择将不破坏取决于存贮器的设计的多重单元的“与”或者“或”。同样道理,在芯片级上,多重列选择取决于特殊的存贮器芯片设计。假如芯片中多重行被选中并且受影响的单元并不是含有同一个值,则一次读取将读一个不确定的值,并且受影响的单元将被设置成那个值。该故障也将引起在刷新周期其数据被破坏。
4.数据寄存器位粘连。该故障使得存贮器系统受影响元件中的所有字的相同位出现粘连。
5.数据寄存器位的短路或模式敏感。因此,不可能写出数据位的某些集合中具有特定形状的模式的那些字,并且影响到分级存贮器系统的所有下级的元件。
6.静态的耦合故障。在此故障形式中,两个单元耦合在一起以致于两个单元的四个可能状态中的一个或多个状态被阻止了。一个特殊情况是混淆现象,这时状态01和10被阻止了。此外,对一个单元的写入总是成功也会影响其他单元。相反混淆也经常是可能的,其中被禁止的状态是00和11。在一个由触发器组成各单元的静态存贮器中,这情况可能在一个触发器的“真”态和另一个相邻触发器的“假”态之间的耦合而出现。耦合故障必定是在同一个芯片内部的一些单元。
7.动态耦合故障。这里,一个单元的置位可能改变某些别的单元,或者置位或者清除。这并不需要是对称的。
8.模式敏感故障。这种形式的故障使得某种模式信号不可能写入一组相邻的单元中去。
9.地址对数据的短接。这种形式的故障或表现为像数据位粘连一样,地址线淹没数据线;或者像与某些别的地址动态耦合一样,数据线淹没地址线。
10.地址线之间或数据线与读/写线之间短接。假如一个数据或地址被强制为错误状态,将表现为一个粘连地址位或一个粘连数据寄存器位。假如读/写线在要求读出时强制为写入,此存贮器不能回送一个值。并且这个读出的值将是某个固定值,(典型的是全1态或全0态),这取决于存贮器系统的结构。
在GalPat测试中,以“0态”做为背景,对第一个单元(测试单元)取补,然后读取并与存贮器中其他的每一个单元交替地进行。这个序列继续着好像每个存贮器单元变成测试单元一样。接着,这个系统用互补数据执行这同样的序列。Galpat方法的执行时间正比于单元数的平方,但遗漏许多故障。
步进式的测试是依次地通过一组地址,对每个地址做同样的事情。在一种标准的步进式测试中,对存贮器写“0态”为背景后,系统读起始地址内的数据并在那里写一个“1”。对存贮器的每个单元按顺序做上述这种两步的读/写程序一直继续到存贮器的终止地址。然后以相反的顺序测试每个单元并变回到“0”,直到系统返回到起始地址。最后,用互补数据重复测试。在另一种步进式的测试中,不是对所有的单元写同样的二进制数,而是用加入一个散列函数到地址上得到的二进制数的固定模式被依次地写进这些单元中去。
不论哪一种步进式的测试都详尽地对包括不对称的和反向的耦合故障进行测试。在一个1×n存贮器中,假定没有任何转变故障,粘连故障或者多重存取译码故障,但是要求至少有14n步操作。见SuK and Reddy,IEEE Transactions on computc-rs,Vol.c-30,NO-12.December 1981,pp.982-985。
像在受影响的行中相应单元之间的耦合故障一样,译码器故障是明显的。一个任何顺序的标准步进测试,在全部地址用同样的值时,若在受影响的行丢失了已给类型的任何故障,则将丢失那种类型的全部故障。依靠增加在全部可能的组合中相应单元都被演用到的可能性,使用一种固定的序列能改善那种算法。例如,John Fluke Mfg公司生产的9000系列仪器中用过的,一个固定序列的RAM短接测试,对存贮器做一次扫描,同时对每个字单元写入一个值。做第二次扫描时将该值与期望值相比较。若地址有奇校验,在每个字单元写的值可以由合并地址成为一个有数据线宽度的字来得到,并且取补和旋转合并的字。合并形成的字的二进制位近似等价地取决于地址的每一位,使这些测试适合于检测通向译码器的任何地址线上短接引起的混淆现象,并且对任何数据位起作用。尽管如此,所用的组合集是由序列固定的。然而可能存在那样一个序列,它将发现一个特定的存贮器结构的译码器故障。有可能构成一种组合,使得任何已给序列无效。
让TUK表示触发一个存贮器单元为K次的操作,以一个上升跃变(0到1)作为开始,并用TDK表示相应地下降跃变脉冲;T后面不跟U或D则表示第一个阶跃可以是上升或下降。SUK和Reddy指出任何这样的测试必须包含以下内容。上升(指地址中)RTUK1(K1≥2),上升RTDK2(K2≥2),下降RTUK3(K3≥2),下降RTDK4(K4≥2),而且,或K1>2或K2>2,要么另一种序列上升RTK5(K5奇数)必然出现。类似地,K3>2或K4>2或一种下降的序列RTK6(K6奇数)必然出现。
SUK和Reddy建议一种称为测试A的14N测试,它将找出全部粘连故障,过渡故障和多路存取译码故障或全部耦合故障。它假设存贮器初始为全0,并包括以下的序列上升RWCWCWC,上升RWCWC,下降RWCWCWC,下降RWCWC。然而任何少于14N的步进测试将检测不出全部孤立的耦合故障。
SUK和Reddy进一步建议一个称为测试B的16N测试,它找出全部粘连故障的组合、过渡故障以及若不存在多重存取译码故障的耦合故障。测试B包括如下序列上升RWCRWCRWC,上升RWCWC,下降RWCWCWC,下降RWCWC。这个测试先进行一遍初始化,使存贮器为0态,可能找到粘连故障、过渡故障、耦合故障和多重存取译码器故障的全部组合。
Nair、Thattl和Abraham发展的30N测试有以下的序列,其中W0和W1分别表示写入0和写入1。上升W0,上升RW1,下降R,上升RW0,下降R,下降RW1,上升R,下降RW0,上升R,上升RW1W0,下降R,下降RW1W0,上升R,上升W1,上升RW0W1,下降R,下降RW0W1,上升R。
上面的和别的形式的测试是AbAdAir和Reghbati概括的,见《半导体随机存取存贮器的功能测试》(Functional Testi-ng of semiconductor Random Access Memories)Computiny Surveys,Vol.15,NO.3,Septcmber1983,pp.175-198。
上述的每一个测试和我知道的其他测试一样,都要求一个长得不现实的测试时间,否则就是不可靠的,因为这会导致一些故障测不到或某些种类的故障测不到。
本发明的主要目标是在识别最普通的故障的同时,提供在尽可能短的时间内完成的随机存取存贮器的功能测试,即粘连数据单元,故障译码器、故障的地址或数据寄存器以及地址线与数据线之间的故障。
本发明的另一个目标是提供一个用来测试随机存取存贮器中的故障的方法及其系统。它对影响许多不同地址的耦合故障和译码器故障有高的识别概率。
本发明的进一步目标是提供一种使识别存贮器故障的可能性最大的方法及其系统,它使用一种要求尽可能短的测试时间的存贮器测试算法。
一种随机存取存贮器系统故障测试方法包括依次地向阵列的全部单元写入二进制随机数。读取这些数并由响应结果相应地识别任何存贮器故障。因此,许多故障例如译码器故障,在一行或一列中单元数最少时,影响很多单元对。而当向全部单元写入二进制随机数时,未能显示一个单元对上有一故障,其最大概率为0.75,对全部受影响的单元对检测故障的失败概率至多为0.75K,其中K是受影响的单元对数。例如若一列有32个单元,表现为未能察觉到一组动态耦合故障因而不能报告一个差错的概率是0.7532或0.0001004。
从本发明的另一方面来看,此方法包含通过一个单元地址的序列,依次地向那些单元写入二进制随机数,其后是它们的补码。然后通过相反方向的地址顺序,读取那些单元的内容并和起始的期望的内容相比较,然后再写入补数。最后通过地址序列读取那些单元的内容并和第二次的期望内容相比较。从比较的结果可以识别存贮器故障。
装置包括一个可逆的伪随机序列产生器,其生成或者使用硬件,例如循环移位寄存器,或者使用软件,均能产生随机位序列。产生器是一种可逆的,在一个序列期间的写入时,使芯片能够去选择地址的增量或减量变化,以实现双向试验序列。因此,对于每个生成(即“种子”(Seed))的内容的特定的初始设置,产生器产生同样的伪随机序列并发展为可重复的、但有随机特性的序列。根据从存贮器所读取的数和从所产生的特定伪随机序列来的那些期望值,控制线路识别和记录试验期间找到的故障。因为有一个倾向,即在顺序寻址期间,高位地址是不频繁使用的。在依次扫描地址期间,加进了二次的独立的地址函数,每个地址被选中一次且仅一次。地址函数是由存贮器大小来参数化的,以造成全部地址线的真正的基本的活动性。
因此,本发明的下一个目标是提供一种存贮器故障检测中,本质上均等地测试到全部地址线的方法及其系统。
另外的一个目标是提供一种均匀寻址的随机存取存贮器快速的测试算法。
本发明的其他目标和优点,本专业的技术人员从以下的详细说明中,将非常容易的了解到。其中我指出和说明的,仅仅是本发明的最佳实施例。我想简单地结合图示说明本发明的最佳模型。如将要看到的,该发明可能有别的不同的实施例,并且它的一些细节是能够从各种角度被加以修改,但这些完全没有超出本发明的范围。因此,其附图和说明应被认为是基本的说明,而不作为限制。
图1是根据本发明的一种试验用的通常的随机存取存贮器系统方框图。
图2是根据本发明的一个简短的RAM试验算法的图示。
图3-5是根据本发明所获得的说明故障试验结果的表格,与三种不同的故障类型有关;
图6是为实现本发明的一个系统方框图。
按本发明的一个观点,快速步进式RAM系统测试包括三个“扫描”的五个周期测试过程如下其中W表示“写入”,WC表示“向指定的单元写入先前写过的数据的补码”和R表示“读取数据”;以地址增量WWC,地址减量RWC和地址增量R。一次“扫描”在此定义为从一个边缘地址到另一个边缘地址的单元地址序列;一个“周期”是在一个扫描期间,对每个单元的任何访问读或写。因此,当单元地址以增量变化时,依次先写入这些单元一个“1”或“0”,然后是他们的补数。当存贮器地址以减量变化时,先是读取这些单元的内容,然后取补数。读出的单元内容与那些予期的单元内容之间的任何差别就予示有故障。最后,当存贮器地址以增量变化时,再读一次那些单元的内容并与予期内容相比较。因此,对单元地址有三次“扫描”的过程,其中两次完成图2中表示的序列中每个单元的两个周期。因此,对每个单元的访问总次数为5次。要指出的是,序列的第一个“写”周期是可选并可删除,而提供一个仅四个周期的试验序列。无论如何,初始的“写”周期是较好的,可以确保存贮器系统各单元能从0到1和从1到0跃变。
假如,按照本发明的一个观点,用图2表示的试验算法,向全部存贮器单元依次写入一个固定序列的全部二进制位,然后取补等等,可以定位出全部粘连的单元和全部混淆的单元。然而,某些类型的故障,特别是那些与译码器故障有关的故障可能会测不到。因此,根据本发明的另一观点,在每次选址扫描期间,不是向那些单元写入相同数或固定序列数,而是依次地向那些存贮器单元写入随机数来修正上面所说的那种快速步进测试。试验中所写的伪码如下,其中Z(X)是随机函数,
Z(X)是Z(X)的补for a=O to ω-1 domemory 〔a〕=
Z(a)memory 〔a〕=Z(a)end forfor a=N-1 downto o doif memory 〔a〕≠Z(a) then errormemory 〔a〕=Z(a)end torfor a=o to N-1 doif memory 〔a〕≠Z(a) then errorend tor
因此,开始,存贮器的地址增量变化(a=0到N-1),二进制随机数是依次被写入存贮器单元,然后其补数被写入那些单元。接着,存贮器地址减量变化(a=N-1到0),即在存贮器单元N-1到0之间依次寻址,读取这些存贮器单元的内容并与予期的内容相比较。假如有差别,就产生一个出错信息。当存贮器单元地址是减量变化时,存贮器单元的内容被取补。最后,当存贮器地址增量变化时,读取存贮器内容,并将此内容与期望的内容相比较,任何不一致的结果都产生一个出错信息。
这个试验识别所有的粘连故障和不同地址单元中的数之间的所有混淆(正常和返转的)。其次,这个试验检测所有粘连的数据寄存器位,粘连地址位和所有引起混淆的译码故障,受影响的地址中的全0态或全1态。这个试验实际上进一步地检测所有的影响许多地址的故障,包括所有剩余的译码器故障,因为他们影响整个行或列,检测短接或模式敏感(Pattern Sensitive)数据寄存器位和数据与地址的短路。还可能识别数据或地址对控制线的短路。在任何给定的运行期间,此试验至少有75%的机会找到任何静态的耦合故障和25%的机会找到任何动态耦合故障或任何“与”/“或”型多重访问故障,它影响着不同地址单元的单一单元对。此试验有50%的机会识别静态耦合或相同字中的单元间的混淆。此外,任何用不同的种子(seed)去初始化某独特的随机位序列的测试操作,将能测到先前操作期间所测不到的差错。
例如,考虑由于某个坏的译码器引起的“与”/“或”型多重访问故障情况。这样的故障将引起向某列,例如X中的单元的读取命令,送回此单元的内容“与”/“或”另外某列,例如y中相应单元的内容。这种故障可能是不对称的,以致在y列的单元能正确读出。在某种情况下,只有当Z(a)对受影响单元而言取特定值时,故障才能检测出来,即当y列中相应单元是0时,X列中的那个单元是1。因此,若这种“与”/“或”故障仅影响单一单元对,那么检测到故障的概率只有25%。但是,若一列有32个单元,决不会发生这种组合,因此测不出故障的概率是(1-0.25)32=0.0001004。
为证明当有任意数量单元混淆时,上述试验能检测到一个差错,必须考虑两个情况。
1.对于混淆的组中所有单元i和j,Z(i)=Z(j),根据本发明的试验,由RZ(i)W
Z(i)组成的第二步骤,在访问这组中第二单元例如Mj时,由于读取的内容是
Z(i),发现这是错误的值,因为期望Z(j)=Z(i),而执行的是W
Z(i)操作。
2.对于在单元的混淆组中某些单元i和j,Z(i)≠Z(j)。试验的最后步骤发现这组中所有单元包含相同的数据,然而至少其中某些单元本应包含相反的值的。
一个类似的讨论表明甚至“相反的混淆”,往往被检测出来,这里在通向真正的单元混淆的过程读取和写入都变成相反的操作。
打开行的线,许多译码器故障和坏的检测放大器都使许多单元出现粘连,并因此被检测出来。
某些地址寄存器的位粘连,许多译码器故障,及行和列短接在一起,引起单元的混淆,并且被检测出来或如上所述。
其余的几种故障更为复杂,根据本发明,涉及到的几种故障的测试的性能说明如下有故障的行译码器,差错因素。
这种类型的故障发生在当一个行译码器(实质上是一个与门)的一个输入端连续地保持某状态而不受相应的地址线的控制的时候。令受影响的线的有效位数是2k的话,假定这受影响的线加入不翻转的门,这时还不会丧失其普遍性,受影响的门将保持它的输出,一种是它本应输出的值,一种是在一个从受影响的门所控制的单元的地址数减去2k,而得到的那个地址集合所输出的,即某些其他行的全部单元,在此识别作为A行;被受影响的门控制的单元在B行。
对B行单元的读取和写入操作都是正确的。对A行的一个单元的写操作,把两个正确地址即Ma写进入了B行中相应单元M(a+2k)。读取A行的一个单元导致两个单元的内容做了某种组合,在存贮器的输出出现两种结果,并且写回到两个单元。一般说,这种组合在半个存贮器上是“与”操作,其中没有充电表现为1,如果这个组合在半个存贮器中是“或”操作,充电表现为1。
参考图3中的表格,首先考虑的是“与”,根据本发明,对于Z(i)和Z(j)的所有四种可能的规定值,其中j=(i+2k),它描绘了RAM试验的操作。“!”表示一个做为“写入”目标的存贮器单元,“?”表示此存贮器作为“读取”目标,“*”表示已读出一个有错误的值,或那个错误的值已写入某单元,“#”表示已检测出一个差错。比如符号“1→0”表示一个应该已包含1的单元,但是“读取该单元的操作表示其内容为0。
如表中所示,在Z(i)和Z(j)的四个可能的规定值中的三个中,检测出一个差错。因为这些值是随机地选择的,那种仅影响其中的单一单元对的故障,将以概率为p=0.75被检测出来。然而,事实上,这故障将影响A行和B行中那些单元中的所有单元对。因此,若N是一行的单元数,Q是检测不出单一单元对中的故障的概率,Q=1-p=0.25。因为,那些单元的规定值是随机地选定的,所以一个单元对发生故障的事件,是与这行的任何别的单元对的相应事件无关的。因此,这行中的所有单元未能检测出故障的概率是QN,例如,对64K存贮器,N=256,而QN=0.25256=7.4510-155。即使对于1K存贮器,N=32,而QN=0.2532=5.42×10-20。本发明的随机模式(Pattern)比起使用一种固定序列模式,在任何测试序列期间,检测不出一个差错的概率,是一个重大的改进。
在受影响的单元的内容被错误地组合在“或”操作里时,分析法是相同的,除了在Z(i)和Z(j)是00,10,01情况下检测到的故障之外,当译码器故障表现为前面那种步进序列中而不是这里这样时,结果也是同样的。
有故障的列选择器对于这个例子,假如B列选择器是有故障的,因此,虽然全部“写”操作都进行了,而有某个另外的A列,这样,当向A列的一个单元“读取”时,B列中相应单元的数据被组合进去了。结果表现在存贮器的输出。因此实际单元的数据不受影响。组合可能是“与”或者是“或”操作,这取决于存贮器的设计。
首先关心的情况是“或”组合,其分析的方法是类似的。图4中所用的符号和上面定义的相同。此外,“0∶1?”表示被选址的单元实际包含一个“0”,但在读取时该单元由于某些另外单元的影响而回送“1”。
如图4中指出的,从Z(i)和Z(j)的四个可能的规定值中检测出两个差错。因此,p=Q=0.5。对对整个列未测到任何差错的概率,当N=256时,为0.5256=8.64×10-78;当N=32时,概率为2.32×10-10。动态耦合故障。
动态耦合故障发生在有一个特定的转变时,例如,一个单元对另一个单元置位从“0”到“1”(或清除)。这种故障可能由于单元之间的电容耦合而发生。
参考图5的表格,假设由于动态耦合,由于单元i从“0”到“1”的跃变而单元j被置位。只有在一种情况下,即当Z(i)=0和Z(j)=1时,差错被检测出来。因此p=0.25,Q=0.75。有这种故障的整个行未被检测出的概率是QN对1K的存贮器,其中N=32概率为QN=0.7532=0.0001004。
因此,显然使用概率步进法的RAM短路测试,能以一种高的概率率去识别所有类型的存贮器故障。
更可取的是,由可逆的伪随机的发生器随机地产生,写入存贮器单元和随后被读出的数据。伪随机发生器是一种数据产生器,其中相继的数据具有随机特性,但数据序列的长度是固定的,并且通常很长,并做为初始起动产生器的索引(key)或“种子”(“seed”)的函数,它是可重复的。可逆的伪随机的发生器是众所周知的且典型的是硬件型式,由许多循环移位寄存器组成。如上所说,例如,见DiXon,扩谱系统,John Wiley & sons,Inc.1976 at sec.3.2“(线性编码产生器结构)”。然而,伪随机码产生器可能最好用软件实现,如下所述。
这样,码产生器可以包括32个并行的反馈式移位寄存器随机数产生器,由软件实现,产生一个如同X33-X13-1的多项式或更高阶次的多项式。使用典型的多项式,每位都通过相同的周期长度233-1。种子(seed)仅影响起始点。虽然可能出现这种情况,即种子(seed)的选择是任意的,我已通过模似得出结果,种子的性质越好,产生器在测试过程中统计试验越好。据我的经验,最佳结果是从unixc库函数rand()的输出中最有效字节(由表征码选择的,0×7F800000)拼合的字中获得的,这个函数是按照C程序语言叙述的return((rand x=rand x*113515245+12345)&
0×7ffffffff)。
另一方面,unixc库随机函数,修改来产生的32位值,可以用于产生种子(seed)值。因此,这种方式中,软件实现的伪随机产生器建立一个称为SHFTRG的64字长的阵列,较低的33个入口用随机数安置初始值。然后定序增量变化地址,在每个用C程序语言计算每个周期的Z如下Z=SHFTRG〔(i+33)&0×3F〕=SHFTRG〔(i+13)&0×3F〕SHFTRG〔i&0×3F〕对于定序减量地址变化时,计算SHFTRG〔i&0×3F〕=SHFTRG〔(i+13)&0×3F〕(Z=SHFTRG〔(i+33)&0×3F〕)存贮器单元的近似均匀取样可以用步进地通过地址来实现,步进大小大约是黄金分割比G=(5-1]]>)/2=0.618033989乘存贮器大小。存贮器的均匀寻址也是希望的,因为依次选址倾向于突出低位地址线上的活动,而高位地址线的活动性相对地不频繁。最好的是,存贮器应该用地址函数A选址,这样实质上是均匀地操作所有的存贮器位。在每次扫描或测试过程中,这样的地址函数A必须保证每个存贮器地址被访问一次,且仅一次。
因此根据本发明的另一方面,当每个存贮器单元被寻址恰好一次时,提出一种地址函数A(i),以便平均地操作所有地址线。因此将存贮器测试算法修正如下对于i=0到N-1 domemory〔A(i)〕=
Z(i)memory〔A(i)〕=Z(i)end forfor i=N-1到0 doif memory〔A(i)〕≠Z(i)then errormemory〔A(i)〕=
Z(i)end forfor i=0 to N=1 doif memory〔A(i)〕≠
Z(i)then errorend for选择合适的地址函数是由Knuth用一种“费班纳赛散列信号”(Fibonacci hashing)来详加描述的,见,“theArt of computer programming vol.3.sorting and scarching,pages 511~513。地址函数A必须是快速求得的,因此,根据本发明,A(i)=k*i模N,这里N是存贮器的大小,K是相对于N的素数。假如N是2的幂,K可以是任意奇数。反之,为了更通用起见,K可以是近似地等于黄金分割比乘以存贮器大小的数,并且是存贮器大小的相对素数,这使得前面几个地址的探测在整个存贮器地址空间中几乎是均匀分布的,其后的地址逐渐地充满存贮器的空缺直至整个的存贮器都被探测了。
为找到一个合适的K,计算项“K=G*N”。然后K被调整为N的相对素数。假如N是2的幂,K肯定是奇数。对于任意大小的存贮器,其通用方法可以用以下C码表示While(gcd(k,N!=k)k+t其中gcd是函数无符号长度gcd(a,b)无符号长度a,b;
{无符号长度temp;
While(a!=0){temp=a;
a=b%a;
b=temp;
};
return(b);
}图6是一个简化的示意图,表示了快速RAM测试系统的执行过程,它用了一个如上所述的最好由软件构成的伪随机数产生器22,但是也可以由硬件来完成。控制序列发生器20,(最好是一普通的微处理器)和伪随机发生器22相连接,在测试10中,根据上述概率步进测试,用来写入随机数据到存贮器系统和读出存贮器系统的数据。微处理器20通过线26将一个索引(Key)或“种子”(seed)信号,施加到伪随机数据发生器22上,并且从发生器输出第一个随机字存在数据寄存器28中。微处理器20也作用于地址散列器(hasher)30,形成地址函数,第一个地址出现在地址序列中较低边界的地址上,这是由地址寄存器36施加到存贮器系统10的。而由发生器22形成的第一个伪随机字就被写入存贮器系统10的起始地址,该地址由散列器30做为序列的较低边界地址的函数来给定。微处理器10接着就取该字的补,并将它再写入在测试的存贮器系统的被选址的字。对这个序列的相继地址重复这个过程一直到上边界地址,以完成示于图2的第一个扫描。
微处理器20接着控制伪随机序列发生器22以相反的方向重复随机字序列,存贮器系统10通过散列器30,把地址向减量方向变化,即地址是在高和低边界地址之间被排列成序。从存贮器系统数据寄存器28读出的字和从在寄存器32中的发生器22所产生的相应伪随机字相比较,所读的数据和由发生器22形成的相应的数据之间的任何差别,就表明存贮器的一个故障并显示在35上。在这次扫描期间,随着每次‘读取’,对早先写入在测试中的存贮器系统的单元中的字取补,并完成第二次扫描,见图2。
最后,在‘读取’存贮器系统10中的相应字并且存入寄存器32的同时,微处理器20控制伪随机序列发生器22将伪随机字的初始序列加到数据寄存器28,并作比较。读取的数据和发生器22形成的相应数据之间的任何差别指示出一个存贮器故障并在34中显示出来。
因为由伪随机发生器22产生的数据序列是一个由微处理器20起初加到发生器的‘种子’(seed)数据的函数,可以依次地对存贮器10施以同样的测试,以形成一个‘存贮器图象’显示在24上。观察显示器24,使技术人员能够决定,对每个存贮器芯片,故障的图形是否稳定,并由此可决定存贮器系统的质量。此外,通过技术人员的技巧的提高,或是通过软件分析,可能从其图形来得出一个故障的假设。比如,若全部差错与在做测试的许多芯片中的一片相关,那么,该芯片好象是出问题了。若所有的做测试的芯片都显示出一种类似的故障图形,可是这种图样表示故障仅发生在奇数地址,那么,地址线粘连就象是其原因。
因此,在快速RAM试验中,根据本发明,用处理二进制随机数的方法,能在短时间内高概率地识别出存贮器系统的最大限度的故障类型。用不同的‘种子’(seed)重复随机步进测试,其识别全部故障的概率,还可进一步提高。此外,在测试中引入的地址函数,倾向于同等地操作于全部高位地址线,这会进一步改进识别故障的可能性。
在本公开说明中,仅表示和说明了本发明的最佳实施例,但是如上所述,本发明当然还可以用于各种别的组合和场合,并且可在这里所表示的本发明的范围内做些修改和改进。
权利要求
1.一种对有大量存贮单元的随机存取存贮器系统的故障检测方法,所说的存贮器系统中每个单元名义上是唯一可寻址的,该方法的特征在于它包括以下步骤,即步进地向那些单元写入二进制随机数(randombits),读取这些数,并相应地识别任何存贮器的故障。
2.一种对有大量存贮单元的随机存取存贮器系统的故障检测方法,所说的存贮器系统中每个单元名义上是唯一可寻址的,该方法的特征在于它包括以下步骤,即通过单元地址的第一个序列依次地向这些单元写入二进制随机数;通过单元地址的第二个序列读取这些数,然后对这些单元的内容取补;通过与第二个序列相反的单元地址的第三个序列读取这些单元的内容,并把从这些单元读取的内容和期望的单元内容相比较,并相应地识别任何存贮器的故障。
3.一种对有大量存贮单元的随机存取存贮器系统的故障检测方法,所说的存贮器系统中每个单元名义上是唯一可寻址的,该方法的特征在于它包括以下步骤,即通过单元地址的第一个序列依次写入二进制随机数,然后取它们的补数,再依次地写入这些单元;通过与第一个序列相反的单元地址的第二个序列读取这些单元的内容,然后取这些内容的补数;通过与第一个序列相反的单元地址的第三个序列读取这些单元的内容,并且把从这些单元读取的内容与期望的内容相比较,并相应地识别任何存贮器的故障。
4.一种对有大量存贮单元的随机存取存贮器系统的故障检测的方法,所说的存贮系统中每个单元名义上是唯一可寻址的,该方法的特征在于它包括以下步骤,即通过单元地址的第一个序列依次地向这些单元写二进制随机数,然后取补;通过与第一个序列相反的单元地址的第二个序列读取这些单元的内容,然后对这些内容取补;通过单元地址的第一个序列依次地向这些单元写入所说的二进制随机数,把从这些单元读取的数和先前写入这些单元的二进制随机数相比较,并相应地识别任何存贮器的故障。
5.一种对有大量存贮单元的随机存取存贮系统的故障检测方法,所说的存取存贮系统中每个单元名义上是唯一可寻址的,该方法的特征在于它包括以下步骤,即通过一个基本上均匀分布的单元地址的第一个序列依次地向这些单元写入二进制随机数,通过与第一个序列有关的单元地址的第二个序列读这些单元的内容,把读取的内容和期望的内容相比较,并相应地识别存贮器的故障。
6.根据权利要求
5的方法,其中所说的二进制随机数是从伪随机序列得到的,并且读和写步骤是用伪随机位序列控制的。
7.根据权利要求
6的方法,其中所说的伪随机位序列是可逆的,其中所说的单元地址的第一和第二序列分别是正向的和逆向的伪随机序列。
8.根据权利要求
1的方法,包括一个寻址步骤,即对所说的存贮器单元使用一种均匀分布单元地址序列寻址。
9.根据权利要求
2的方法,包括一个寻址步骤,即对所说的存贮器单元使用一种均匀分布单元地址序列寻址。
10.根据权利要求
3的方法,包括一寻址步骤,即对所说的存贮器单元使用一种均匀分布单元地址序列寻址。
11.根据权利要求
4的方法,包括一寻址步骤,即对所说的存贮器单元使用一种均匀分布单元地址序列寻址。
12.一种对有大量存贮器单元的随机存取存贮器系统进行故障检测的装置,所说的每个单元,名义上是唯一可寻址的,其特征包括随机数序列产生装置;对这些存贮单元寻址的装置;向所说的单元写入所说的二进制随机数序列的装置;读出所说单元的内容的装置;比较所说的读取的内容和期望的内容,以识别任何存贮器单元故障的装置;和指出所说的故障的装置。
13.一个对有大量存贮器单元的随机存取存贮系统进行故障检测的装置,所说的每个单元名义上是唯一可寻址的,该方法的特征在于它包括产生二进制随机数序列的装置;通过可选择的第一和第二地址序列来对这些所说的存贮器寻址的装置;通过所说的第一个地址序列对所说的存贮器写入所说的随机数序列的装置;通过所说的第二地址序列读出所说的存贮器的内容及比较所说的读出内容和所说希望内容的装置;反映所说的比较装置的结果以便识别任何存贮器故障的装置;以及指示所说的故障的装置。
14.一个对有大量存贮单元的随机存取存贮器进行故障检测的装置,其特征在于它包括产生一个二进制随机数序列的装置;用可选择的第一和第二地址序列对所说阵列的单元寻址的装置;处理机用于(1)通过所说的第一个地址序列依次向单元写入所说的二进制随机数,然后对这些数取补;(2)通过单元地址的第二个序列读取所说的单元的内容并把所说的内容和期望的内容相比较,然后将这些内容取补;(3)通过所说的地址的第一个序列读所说单元的内容并把所说的这内容和期望的内容相比较;并且(4)根据所说的比较步骤结果,来识别任何存贮器的故障;以及指示所说的故障的装置。
15.根据权利要求
2的装置,其中所说的指示装置包括一个可视显示器。
16.根据权利要求
13的装置,其中所说的指示装置包括一个可视显示器。
17.根据权利要求
14的装置,其中所说的指示装置包括一个可视显示器。
18.根据权利要求
12的装置,其中所说的产生装置包括一个伪随机位发生器。
19.根据权利要求
13的装置,其中所说的产生装置包括一个伪随机位发生器。
20.根据权利要求
14的装置,其中所说的产生装置包括一个伪随机位发生器。
21.根据权利要求
12的装置,其中所说的寻址装置包括产生基本均匀地址的装置。
22.根据权利要求
13的装置,其中所说的寻址装置包括产生基本均匀地址的装置。
23.根据权利要求
14的装置,其中所说的寻址装置包括产生基本均匀地址的装置。
24.一种对有大量存贮单元的随机存取存贮器系统进行故障检测的装置,所说的存贮系统中每个单元名义上是唯一可寻址的,它包括产生一个伪随机位序列的装置;产生可选择第一和第二基本均匀的单元地址序列的装置;通过所说的第一个地址序列向所说的单元写入所说的随机数序列的装置;通过所说的第二个地址序列读出所说的单元内容以及将所说的读出内容与所说的伪随机数序列作比较的装置;响应所说的比较装置的结果指示任何存贮器故障的装置。
25.根据权利要求
24的装置,包括控制所说伪随机数序列的“种子”(secd)的装置。
26.根据权利要求
6的方法,包括用某个“种子”对所说的伪随机位序列控制的步骤,和用不同的“种子”重复所说的方法。
专利摘要
通过在全部存贮器单元并且大体均匀分布的单元地址的第一序列,依次地将随机数(random bits)写入随机存取存贮器系统,然后取补。通过相反的地址序列,读取这些单元的内容并取补。最后,通过单元地址的最初序列,再一次读取这些单元的内容。利用这些单元的读取内容和期望内容之差别,我们能识别存贮单元的故障。最好由可逆伪随机序列发生器,实现软件生成这些随机数(random bits),而用地址函数编程的地址散列程序,产生均匀地址序列,它基本上均等地操作了全部地址线。
文档编号G06F11/22GK86102265SQ86102265
公开日1986年9月3日 申请日期1986年3月4日
发明者戴维·梅里尔·雅各布森 申请人:约翰·弗兰克制造公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1