由于读写操作都是基于字的,因此采用基于字的检测方法,把失效检测划分成三部分,字间失效检测、字内失效检测和同时读写失效检 测。下面以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,
可以检测出相邻位之间的耦合失效。在测试序列中包括了两次连续的读出,第一次读出检测由前一次写操作引起的失效,第二次读出检测由第一次读出引起的失效。
将上述的检测序列转化成队列测试的形式,得到如下的结果: