如何对嵌入式存储器进行测试和可测性设计?

如何对嵌入式存储器进行测试和可测性设计?,第1张

引言

近年来,消费者对电子产品的更高性能和更小尺寸的要求持续推动着SoC(系统级芯片)产品集成水平的提高,并促使其具有更多的功能和更好的性能。要继续推动这种无止境的需求以及继续解决器件集成领域的挑战,最关键的是要在深亚微米半导体的设计、工艺、封装和测试领域获得持续的进步。

SoC是采用IP复用技术的一种标准设计结构,在多功能电子产品中得到了广泛的应用。SoC的典型结构包括CPU存储器、外围逻辑电路、多媒体数字信号编解码器和接口模块等。现在的SoC中,存储器通常占据整个芯片的大部分面积,并且可能包括各种类型的嵌入式存储器,如DRAM、SRAM及Flash存储器等,可满足不同的应用需要。目前SoC设计要求存储器的容量不断地增大,嵌入式存储器在SoC中所占的面积百分比也随之不断增加。另外,SoC的复杂度不断地提高而集成电路工艺尺寸在不断减小,这就导致嵌入式存储器的制造缺陷比例也不断地增加。因此嵌入式存储器的故障率对于SoC的总成品率的影响越来越大,而保证低故障率的关键是高效率和高故障覆盖率的嵌入式存储器测试方案。

在我国,集成电路测试及可测性设计,特别是存储器的测试研究相对国际上的研究比较落后。目前,我国自主研究的测试算法以及开发的测试设备还没有形成产业化,还不能与国际上先进的集成电路测试设备相抗衡。而近几年来,我国在集成电路领域加大了投入,集成电路产业也得到了长足的进步。

集成电路测试也是一个知识密集型的高投入领域,一直是我国集成电路产业发展的制约因素。半导体工业成本发展的特点就是它的单位功能制造成本以每年平均25%~30%的比例下降,而测试成本却以每年平均10.5%的比例提高。随着集成电路复杂度的不断提高,为其设计的测试电路也越来越复杂,测试电路占用的芯片面积及设计制造成本也变得更高。

本文对嵌入式存储器的测试及可测性设计进行研究总结,为我国存储器测试的研究以及集成电路测试产业的发展奠定坚实的技术基础。

嵌入式存储器测试方法

半导体存储器自20世纪60年代开始设计生产以来,在设计结构、产品的性能和存储的密度等各方面发生了巨大的变化,现在嵌入式存储器技术的发展已经取得了很大的成就,并被广泛应用于各类基于SoC芯片设计的电子产品中,已经成为大多数电子系统中必不可少的组成部分,在人们的生产生活中起到了举足轻重的作用。嵌入式存储器的测试方法主要包括以下三类:

存储器直接存取测试

此类测试方法把嵌入式存储器部分从整个系统中分离出来,由专用的存储器测试电路连接到存储器接口上对嵌入式存储器进行测试,系统框图如图1所示。

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第2张

图1 存储器直接存取测试

片上微处理器测试

这种测试方法利用SoC上的微处理器构造测试系统对嵌入式存储器进行测试。首先,选择对嵌入式存储器进行测试的测试算法,利用微处理器的汇编语言编写相应的测试算法程序;然后,通过微处理器汇编语言的编译器得到可执行代码;接下来,将可执行代码下载到系统中,通过微处理器的运行产生相应的测试向量,并按照测试算法对嵌入式存储器进行测试。测试的结果由微处理器进行比较评估,也可以由专门设计的结果处理电路进行结果判定。

这种测试方法的优点是利用SoC现有资源,而不需要设计额外的测试电路,也不需要对现有电路进行任何修改,因此不会增加额外的面积开销,也不会降低性能。这种测试方法可以采用任何一种测试算法对嵌入式存储器进行测试,可以提供全故障诊断和进行全速测试。但是这种测试方法也有一定的缺点,首先芯片中的嵌入式存储器部分或者全部与微处理器不相连,需要有专用的接口电路对测试算法的二进制代码进行处理,其次不同测试算法的编程和程序修改需要大量的时间和人力,还有这种测试方法不能测试存储测试程序的存储器。

存储器内建自测试

存储器内建自测试(Build-in Self Test, BIST)是近几年里大量应用于存储器测试领域里的一种非常重要的技术。这种技术利用芯片内部专门设计的BIST电路进行自行测试,能够对嵌入式存储器、组合和时序逻辑电路等具有复杂电路结构的嵌入式模块进行全面的测试。存储器BIST电路将产生测试向量的电路模块以及检测测试结果的比较模块都置于芯片的内部,在测试完成后,将测试的结果通过芯片的测试管脚送出到芯片的外部,从而增加了很少的管脚用于进行测试。存储器BIST电路的结构包含三类:与系统正常运行并发的存储器BIST电路结构;与系统正常运行不能并发的存储器BIST电路结构,在存储器BIST电路运行期间,必须中断系统的正常运行,同时存储器内不能保存系统运行的任何信息;与系统正常运行不能并发,但是在存储器BIST电路运行期间,可以保存系统运行时的内容,并在系统测试结束后恢复运行。

针对不同的嵌入式存储器,需要专门针对可能产生的各种缺陷类型,采用一种或多种测试算法来设计专用BIST电路。通常嵌入式存储器的BIST电路包括测试向量产生模块、测试算法控制模块和结果分析模块。结构框图如图2所示。

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第3张

图2 存储器BIST电路结构

存储器的测试算法

存储器测试需要根据测试算法的要求产生大量的测试向量,要反复对所有的存储器单元进行读/写 *** 作,并与预期值进行比较。测试算法设计的目标是能够尽可能多地检测出存储器的各种故障。为了在尽可能短的测试时间和测试费用限制下测试出最多的存储器故障,选择高效的测试算法是至关重要的。目前应用比较广泛的存储器测试算法主要包括伪随机存储器测试算法、确定性存储器测试算法,以及March系列存储器测试算法三类。

伪随机存储器测试算法

这类算法利用n位反馈移位寄存器产生伪随机序列对嵌入式存储器进行测试。反馈移位寄存器可以通过如式(1)所示的n元反馈函数的多项式来进行构造。如果移位寄存器以作为反馈函数,则称之为反馈移位寄存器。

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第4张

如果n级反馈移位寄存器呈线性结构,则称之为线性反馈移位寄存器,可构造为如式(2)所示的多项式形式,共包含2n个移位寄存器。

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第5张

不满足公式(2)的反馈移位寄存器称为非线性反馈移位寄存器,其共包含个移位寄存器。与线性反馈移位寄存器包含的移位寄存器总个数比较发现,非线性反馈移位寄存器具有的移位寄存器总数更多,结构更复杂。

确定性存储器测试算法

这类算法的形式很多,需要根据被测存储器的结构特征和关注的故障选择适合的测试算法,产生测试向量,以便提高测试故障覆盖率,主要用于存储器结构相对规则,并与关注的故障类型相关度高的存储器测试。下面介绍三种比较典型的确定性存储器测试算法。

(1)MSCAN(Memory SCAN)算法

这种算法就是简单地对存储器的每个单元写0,然后读出每个单元的内容验证是否为0;再对每个单元写1,然后读出验证。算法公式如式3所示。

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第6张

MSCAN测试算法的复杂度与存储单元数量N成正比,其测试复杂度为

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第7张

从测试复杂度可以看出此算法花费的测试时间较短,另外此算法能够测试SAF故障,也能测试存储器在最差情况下所消耗的功耗,还可以作为进行其它较复杂测试算法之前对存储器的初始化 *** 作,但是此算法的测试故障覆盖率较低。

(2)Checkerboard算法

这种测试算法在向存储单元赋值时要求0和1交替赋值,也就是每个存储器单元与周围的四个单元的值都不同。然后再读取每个存储器单元的数值,并检验其正确性。算法公式如式5所示。

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第8张

Checkerboard测试算法的复杂度同样与存储单元数量N成正比,其测试复杂度为

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第9张

在如上的测试完成后,还需要交换0和1的位置再按照算法的要求交替写入和读取并验证。这种算法执行速度较快,能够测试数据保留故障、固定故障和一半的转换故障。

(3)GALPAT(Galloping Pattern)算法

这种算法也称为漫游或者乒乓测试。首先需要初始化存储器的所有单元为0(或1),然后按照地址从小到大的顺序对某被测单元写1(或0)的 *** 作,接下来读取被测单元的数值进行验证。算法公式如式7所示。

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第10张

GALPAT测试算法的复杂度为

如何对嵌入式存储器进行测试和可测性设计?,如何对嵌入式存储器进行测试和可测性设计?,第11张

这种测试算法的测试故障覆盖率较高,能够测试固定故障、状态传输故障、图形敏感故障以及大部分耦合故障。但根据公式8可知,该测试算法需要花费的测试时间较长,对于大容量存储器来说并不适合。

March系列算法

March系列算法是在存储器测试领域得到广泛研究和应用的测试算法,原因在于其具有较高的故障覆盖率,并花费较少的测试时间。此系列算法已经成功运用到大容量的SRAM测试,SDRAM测试等存储器测试领域,并出现了大量的改进算法。

March系列算法通过有限状态机的控制,对存储器的每个单元进行读写 *** 作,读写的顺序会按照算法的要求,分为地址升序和降序等方式。这样,通过算法设计的对存储单元的各种读写过程,能够测试出绝大部分存储器故障。

常见的March系列算法包含MATS算法、March X算法、March C-算法等。各种算法的不同之处就是包含的March元素各不相同。每种March算法包含多个March元素,每个March元素都由地址变化顺序、读写的 *** 作和 *** 作的数据三部分组成。用表示读写的顺序可以是升序,也可以是降序;表示读写的顺序为升序;表示读写的顺序为降序;表示从存储器单元中读取的向量应该为第n个向量;表示向存储器单元中写入第n个向量。

结束语

嵌入式存储器的测试及可测性设计是随着SoC的发展而逐步发展的研究领域,近些年的研究成果取得长足的进步,但是其测试难度也是相当大的,主要问题如下:无法通过芯片的封装引脚直接访问嵌入式存储器,造成对嵌入式存储器的可控制性以及可观测性较低;任何一种测试算法都不能测试所有的故障类型,增加了测试的难度;随着嵌入式存储器容量的不断增加,所花费的测试时间也不断地增加,测试向量也越来越多,超过了目前的ATE处理能力。总之,嵌入式存储器测试及可测性设计仍需要广大学者继续努力研究。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2716342.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存