引 言
单向双端口SRAM是一种专用的存储器,它具有独立的写地址总线和读地址总线,不仅可以实现单端口的读写,还可以对不同地址的存储单元进行同时读写操作,提高了SRAM的性能。本文分析了单向双端口SRAM的失效模式,并描述了相应的基于字的检测算法。
存储器模型
图1表示了3×3的单向双端口SRAM模块的结构示意图,输入为读地址总线、写地址总线和输入数据总线,输出为输出数据总线。每一个存储单元都有四个端口,分别是数据写入(BW),数据读出(BR),写地址端口(WA)和读地址端口(RA)。在这种结构中,同一列单元的数据写入端和读出端连到总线上,输出采用了线与的方式。对于字长大于1的存储器来说,读地址和写地址一次选中一行,一行中所有的存储单元 组成字,读写都是基于字的操作。由于读写总线分离,可以通过读地址和写地址选中不同的字,实现同时读写。
失效模型
存储器的失效表现为单元不能被正确地写入和读出,失效模型表示引起失效的原因。设计不当、制造工艺引入的缺陷和硅片上的点缺陷都会引起存储器的失效。失效使电路的结构发生变化,通过模拟分析出电路失效行为,上升到功能级,总结出功能失效模型。单向双端口SRAM的失效模型可以分为单元失效,单元耦合失效,地址译码失效,同时读写失效和复合失效。
单个存储单元失效
固定0/1失效(SAF),单元存储值固定为0/1。固定开路失效(SOF),单元不能被读写,由于输出线与,读出数据为固定值。转换失效(TF),单元存储值不能由0 变为1,或由1变为0。
存储单元间的失效
对一个单元的读写操作改变了另一单元存储值,称为耦合失效(CF),两个单元分别被称为耦合单元和被耦合单元。相邻单元,同一行和同一列单元更易于发生耦合失效。由于读写是基于字的操作,耦合失效又可以分为字间耦合失效和字内耦合失效。
地址译码失效
地址译码失效(AF)包括了四种情况:1. 对某一地址,没有单元被存取;2. 对某一单元,没有地址可以对其存取;3. 对某一地址,多个单元被同时存取;4. 对某一单元,同时被多个地址存取。由这四种失效子模式组合引起的失效可以等效成固定0/1
失效和单元耦合失效。
同时读写失效
由于同时读写操作的相互影响,导致写入或读出错误的值而引起的失效。
复合失效
多个耦合失效,或耦合失效和地址译码失效复合在一起。复合失效可以相互掩盖而可能通过检测,必须合理地选择测试算法,以小的测试复杂度,达到大的失效覆盖率。
单向双端口SRAM的检测算法
目前对存储器的检测算法主要基于功能级的失效模型,测试算法必须满足失效发生的条件,通过写入或读出测试向量激活失效,并通过读操作检测出来。当读出值与预期值不同时,可以判定存储器失效。
队列测试方法具有测试时间短、结构简单、易于用自检测电路实现而被普遍采用。它包含了一组测试元素,时间复杂度为O (n),n表示存储单元的容量。以MATS+法为例,表示方法为{ (Write0)m1;( read0,Write1)m2;( read1,Write0)m3},包括了3组测试元素M1、M2、M3,其中T ( read1,Write0)表示以地址递减的顺序对每一个单元进行读1和写0操作,总的时间复杂度为5n。
由于读写操作都是基于字的,因此采用基于字的检测方法,把失效检测划分成三部分,字间失效检测、字内失效检测和同时读写失效检 测。下面以3位字长的单向双端口存储器为例来说明测试算法。
字间失效检测
字间检测采用传统的队列测试算法,March C+算法覆盖了固定0/1失效,固定开路失效和转换失效,地址失效和字间耦合失效,基于字的MarchC+算法表示为:
时间复杂度为14B,B为存储器字的容量。
字内失效检测
字内检测针对字内各存储位之间的耦合失效,考虑字内任意一位会受到两侧相邻位的耦合,可以构造出图2中的状态图。图2覆盖了所有的状态和相邻位之间的耦合失效,圆圈表示相邻三位的状态,连线上的符号表示由状态转换引起的失效类型,以〈W1,W1:↓〉为例,表示了对两侧相邻位写入1时置中间位为0,则时写入111并读出可以检测这一失效。因此,对相邻三位执行下列操作序列,
Write000,Write111,read111,read111,Write000,read000,read000,
Write001,Write110,read110,read110,Write001,read001,read001,
Write010,Write101,read101,read101,Write010,read010,read010,
Write011,Write100,read100,read100,Write011,read011,read011,
可以检测出相邻位之间的耦合失效。在测试序列中包括了两次连续的读出,第一次读出检测由前一次写操作引起的失效,第二次读出检测由第一次读出引起的失效。
将上述的检测序列转化成队列测试的形式,得到如下的结果:
时间复杂度为35B,B为存储器字的容量。字内失效检测算法和字间失效检测算法包含了相同的测试元素,因此对两种算法进行合并,在失效覆盖率相同的情况下,减小测试的时间复杂度。可以得到如下结果:
时间复杂度为41B,B为存储器字的容量。
同时读写失效检测
单向双端口存储器允许同时读写不同单元。假定这种失效模型仅仅在相邻的字间发生,检测同时读写失效的测试算法为:
表示对当前地址写入111,同时对下一地址读出000。通过对相邻单元分别写入和读出,判定这种操作方式是否会引起失效。时间复杂度为10B,B为存储器字的容量。
与传统测试算法的比较
以上以3位字长为例,介绍了单向双端口存储器的检测方法,包括了字间失效的检测、字内失效的检测和同时读写失效的检测,总的时间复杂 度为51B。对于由任意位组成的字,可以对上述算法中的3位测试向量拓展成相应字长的测试向量,测试的时间复杂度不变。上述算法中对字间失效和字内失效的测试时间复杂度为41B,传统的测试方法采用了March C+算法检测,使用多个不同的测试向量,如0000,0101,0011等,实现对字间失效和字内失效的检测,这种测试方法不能保证对字内失效检测的覆盖率,March C+测试算法的时间复杂度为14B,因此当使用的测试向量大于3个时,测试的时间复杂度将大于上述针对字间失效和字内失效设计的测试算法。
结 论
分析了单向双端口SRAM的失效,描述了基于字的队列检测算法,可以有效地检测字间失效、字内失效和同时读写失效,具有失效覆盖率高和测试时间复杂度低的优点。