A Brief Introduction of Memory Testing in Software Evaluation

12
浅谈软件评估中的存储器测试 孔睿迅 (广州威凯检测技术有限公司 电工产品检测所, 广东省 广州市 510663A Brief Introduction of Memory Testing in Software Evaluation Kong Ruixun (Testing Station of Electromechanic Products, Guangzhou VCan Certification and Testing Institute, Guangzhou 510663, Guangdong, China) 摘要: 自对应于 GB4706.12005 这一版本的各家电产品的特殊要求标准陆续发布以来,软件评 估(Software Evaluation)这一产品测试中的新领域也越来越多的被各相关技术人员所接触。 虽说这只是产品检测的一个技术领域,但是由于和目前开展时间较久的安全、性能、电磁兼 容等相比,其关注之处和对相关人员技术知识结构的要求的差别迥异,故大部分技术人员对 其了解甚少。本文的目的旨在通过对软件评估涉及的存储器方面的测试做一个较为全面的叙 述,期望以点带面,协助相关技术人员加深对软件评估的理解,进而运用至实际工作中。 0 引言 软件评估的实质是通过软件来保证使用于家用和类似用途电器中的嵌入式硬件(比较常 见的是单片机 MCU,本文后续以 MCU 为主展开相关的叙述)在出现故障的时候,整机能够 采取适当的措施以避免危险。 本文主要围绕单片机所用的存储器展开讨论,从硬件底层结构分析了各类可能在存储器 制造和实际使用过程中产生的缺陷,并结合标准的要求,对相关软件算法做了较为详细的解 释,同时部分算法给出了伪代码程序。期望通过对单片机这一部件的分析,为单片机其他硬 件模块的软件评估打下一个基础。 需要注意的是,由于我国集成电路工业的落后,对于集成电路缺陷的分析在国内的研究 还不多,很多专业术语还未有成型的中文翻译,故本文中较多处中英文混用,请读者注意, 并以英文为准。 1 面向缺陷的测试 集成电路工业和其他工业产业一样,也不是一个“完美”的产业,在芯片的制造过程中 同样会产生缺陷。缺陷的种类很多,从由于污染而造成的小范围的点状缺陷到诸如晶体管故 障导致的大范围缺陷都存在。

Transcript of A Brief Introduction of Memory Testing in Software Evaluation

浅谈软件评估中的存储器测试

孔睿迅  (广州威凯检测技术有限公司  电工产品检测所,  广东省  广州市   510663)  

A Brief Introduction of Memory Testing in Software Evaluation Kong Ruixun

(Testing Station of Electromechanic Products, Guangzhou VCan Certification and Testing Institute, Guangzhou 510663, Guangdong, China)

摘要:  

自对应于 GB4706.1-­‐2005这一版本的各家电产品的特殊要求标准陆续发布以来,软件评

估(Software  Evaluation)这一产品测试中的新领域也越来越多的被各相关技术人员所接触。

虽说这只是产品检测的一个技术领域,但是由于和目前开展时间较久的安全、性能、电磁兼

容等相比,其关注之处和对相关人员技术知识结构的要求的差别迥异,故大部分技术人员对

其了解甚少。本文的目的旨在通过对软件评估涉及的存储器方面的测试做一个较为全面的叙

述,期望以点带面,协助相关技术人员加深对软件评估的理解,进而运用至实际工作中。  

0 引言

软件评估的实质是通过软件来保证使用于家用和类似用途电器中的嵌入式硬件(比较常

见的是单片机 MCU,本文后续以 MCU为主展开相关的叙述)在出现故障的时候,整机能够

采取适当的措施以避免危险。  

本文主要围绕单片机所用的存储器展开讨论,从硬件底层结构分析了各类可能在存储器

制造和实际使用过程中产生的缺陷,并结合标准的要求,对相关软件算法做了较为详细的解

释,同时部分算法给出了伪代码程序。期望通过对单片机这一部件的分析,为单片机其他硬

件模块的软件评估打下一个基础。  

需要注意的是,由于我国集成电路工业的落后,对于集成电路缺陷的分析在国内的研究

还不多,很多专业术语还未有成型的中文翻译,故本文中较多处中英文混用,请读者注意,

并以英文为准。  

1 面向缺陷的测试

       集成电路工业和其他工业产业一样,也不是一个“完美”的产业,在芯片的制造过程中

同样会产生缺陷。缺陷的种类很多,从由于污染而造成的小范围的点状缺陷到诸如晶体管故

障导致的大范围缺陷都存在。  

这其中的不少缺陷都会影响集成电路的功能。集成电路的制造商一般都会通过各类测

试、在提交芯片至客户前发现这些缺陷,从而保证出厂产品的质量。面向缺陷的测试就是在

这种情况下产生的。所谓的面向缺陷的测试,与面向对象的编程类似,是直接针对那些引起

集成电路不正确动作的缺陷的测试。  

缺陷产生的地方是随机的,同时其所造成的影响一般而言也是不可预知的。而造成缺陷

的因数是一批在一个较大范围内波动的变量。为了简化识别这些缺陷,可将这些“无限”的

缺陷空间按照一定的规则简约成一组“有限”的“故障模式”。所谓的“故障”是指一种确

定的、离散分布的电路行为。故障一般被认为是位于某一特定电路中的(例如某一门电路的

损坏),但是它们也可以在数学的层面上被抽象成一个实现逻辑功能的电路。故障模式的选

择一般基于其预期的使用目的,例如用于生产质量的预测、缺陷诊断、缺陷容差的确定等。  

2 典型的缺陷物理机制

CMOS电路的故障原因和其表现形式多种多样,但是由于历史承袭等原因,目前它们主

要被分为两大类   -­‐  短路和开路。短路指在不需要的时候产生了电气传导,而开路指在需要

的时候却没有产生电气传导。两者主要的产生原因如下:  

2.1 短路产生的原因

短路可由额外的导电材料或是缺乏足够的绝缘材料而产生,常见的有:  

� 光刻印刷错误  

� 可导电颗粒的污染  

� 不完全蚀刻  

� 绝缘材料的破裂  

� 栅氧化层缺陷  

 

图 1  栅氧化层短路  

2.2 开路产生的原因

造成开路的原因与短路类似,主要有以下几类:  

� 光刻印刷错误  

� 阶梯覆盖  

� 电迁徙  

� 绝缘颗粒污染  

� 不完全蚀刻  

3 存储器概述

存储器这一器件在现今的半导体芯片中比比皆是,其对于这些芯片的产量和质量都有着

直接的影响。所以就单体来讲,在当下和将来与半导体芯片相关的测试中,存储器的测试将

会是其中最重要的部分。目前来说,单独的存储器还占有整个存储器市场的半壁江山,但是

随着消费电子、手持设备以及个人通讯产品的发展,嵌入式的存储器的市场将会越来越大,

在可以预见的将来,其份额应会超过九成。本文所要讨论的单片机的内存也属于嵌入式芯片

的范畴。  

另一方面,从具体产品来看,存储器往往占了半导体芯片物理尺寸的大部分,所以相应

地要对存储器区域投以更多的关注,以确保在设计及测试方面也占有“大部分”。存储器不

但占据芯片物理尺寸的大部分,而且这部分往往也是整个芯片“密度”最大的地方:存储器

中相邻两个结构之间的尺寸比芯片其他部件的都要小,这也使得存储器成为最容易出现故障

的部件。  

3.1 存储器分类

存储器是用于数据(Data)及代码(Code)存放、读取和修改的物理期间。按照通用的

分类方法,可以将存储器分为两大类:只读存储器(ROM)和随机访问存储器(RAM)。存

储器的基本类型可以参见图 2。  

3.2 故障模式

由于故障类型的多样化以及实际情况的复杂性,对故障单个进行分析显然没有太多的实

际应用价值,所以在面向缺陷的发展过程中产生了故障模式这一概念,用来对各类缺陷进行

一个分类,之后建立系统的分析方法。建立故障模式,有利于建立测试方法,有利于进行故

障模拟,同时也有利于产品质量预计与错误诊断。  

 

图 2  存储器的基本类型  

目前在存储器故障模式主要有如下几类:  

� Single  Stuck-­‐at故障模式  

这个应该说是建立的最早且至今仍被广泛引用的一个故障模式。IEC  60730-­‐1/GB  14536.1

标准中存储器故障也包含此类。  

所谓的 Stuck-­‐at 故障模式,指的是电路中某单一节点被假设为具有固定的逻辑值

(Stuck-­‐at  0或 Stuck-­‐at  1)的一种故障模式。该故障模式通常表示某一节点和电源(Stuck-­‐at  

1)或地(Stuck-­‐at  0)直接相连。  

� Transition故障模式  

在这类模式下,一个单元可以存储“1”或者“0”,但是只能向一个方向转换。一旦这

个单元的状态改变之后,它将不能回退到原先的状态。这有点类似上述的 Stuck-­‐at故障,差

别在于上电时这个单元可以为“1”也可以为“0”。  

� 耦合故障模式  

耦合故障指的是对于故障单元(一般称为 aggressor)的操作会引起相邻单元(一般称

为 victim   cell)产生错误的一种故障。耦合故障分为状态耦合故障和转换耦合故障,前者是

故障单元的状态会引起相邻单元的改变,后者是故障单元的转化会引起相邻单元的错误的操

作。  

� 寻址故障模式  

一种在行/列解码器中出现的故障,会导致寻址出现故障,一般会出现如下几种错误:  

—  存取某一个特定地址时,没有对应的单元会被实际存取;  

—  存取某一个特定地址时,有多于一个单元会被实际存取;  

—  某一个特定的单元,永远不会被存取;  

—  某一个特定单元会被多个地址存取。  

� 位模式故障模式  

产生于可编程的 ROM器件。在进行编程时,“0”可能会被编程成“1”,反之亦然。  

� 桥接故障模式  

存储器中出现的非预期的阻性通路,一般而言呈现低阻态。  

� 数据保持故障  

存储器不能按要求在一定时期内保持数据。  

除了上述较为常见的故障模式外,还有开路故障、临近单元敏感故障、参数故障、恢复

故障、时序故障等,本文不再详述。  

4 嵌入式单片机所使用到的存储器技术

就目前而言,市面上绝大部分的 MCU都具有上述两种类型的存储器:用于存储固件的

ROM和用于临时数据存储的 RAM。  

用于存储固件的 ROM在早期一般使用掩模 ROM(Mask  ROM),之后采用了可使用紫外

线进行擦除的 EPROM,自上世纪 90年代后开始才广泛的采用了 EEPROM和 Flash。而 RAM

则普遍采用 SRAM,这主要是因为 DRAM所存储的数据需要通过刷新来保持,相应的电路较

为复杂所造成的。  

4.1 SRAM 的结构

CMOS存储器单元的示意图可以参考图 3。这是常用的 6管式单元,也即由 6个晶体管

构成(每个反相器中 2个晶体管,其中一个 nMOS,一个 pMOS)。其中,2个 nMOS晶体管

作为开关器件。当开关在 Word  Line的控制下处于关闭状态时,两个反相器连接到两个状态

相反的 Bit  Line上,此时该单元可以进行读写操作。当开关打开时,反相器存储并保持数据。

图 4描述了较为具体的 SRAM的架构。  

 

图 3  CMOS存储器单元  

 

图 4  SRAM的一般构架  

4.2 ROM 的结构

ROM的基本结构可以参见图 5。m-­‐Bit的地址被解析为 2m地址线,同一时间只有一根地

址线处于选中状态。与存储器矩阵相连的是 n   bit的数据线。在数据线和地址线的相交处的

晶体管的状态决定了数据线是逻辑 0状态还是逻辑 1状态。  

 图 5  ROM的基本结构  

5 微观层次的存储器故障

由于半导体存储器实质上是物理电路,引起他们故障的各类缺陷可以从电气的角度很好

地描述,也即从晶体管这一微观的层面可以很好地描述各类故障模式。  

从微观的角度上来讲,一大类的故障涵盖了保持或干扰故障模式。正常的单元能够按预

期保持存储与其间的“1”、“0”,而缺陷单元则会出现各类问题。对于 DRAM的单元,这意

味着其不能在一个刷新周期保持数据;对于 SRAM的单元,这意味着其不能将数据保持至新

的数据的写入。对于非易失性的 ROM来说,干扰故障是指其状态的非预期的改变。  

在 SRAM中下拉强度与传输强度的比值一般被称为 Beta值。图 6中,T3、T4为下拉器

件,T1、T2 为传输器件。一个较小的 Beta 比值(1.0 左右)意味着传输器件的强度和下拉

器件的强度相同,这会导致这一单元在进行读操作时丢失其所保存的数据。而当 Beta 比值

大于 2.0 时,单元就有足够的稳定性而不会在进行读操作时丢失所保存的数据。而当 Beta

比值足够大时,则会导致单元过于稳定而无法进行写操作。当单元出现缺陷时,将会影响该

Beta 比值,从而导致相应的各类故障。图 3 中的下拉缺陷,因为削弱了单元真值侧的下拉

能力而减小了 Beta比值,单元将会出现上述的在读操作时保持“0”出现困难”。  

 图 6  SRAM故障说明  

除了单元本身的缺陷外,,存储器的外围器件存在的问题也可能导致故障的出现。从图

7中我们可以看出,写电路、读出放大器、解码器等部件出现的问题都有可能影响存储器单

元。例如解码器出现问题后,会导致存储器运行时指向错误的位置、指向不存在的位置或是

指向多个位置。这些故障都是灾难性的,但同时也是较易发现的。  

 

图 7  随机存储器模块图  

6 存储器测试模式

6.1 ROM 测试

ROM 由于其与 RAM 不同的只读性质,其测试相对而言简单许多。其基本思想是遍历

ROM中的相关的单元,以检查其所存储数据的正确性。一般采用校验和、CRC等方法实现,

相对较为简单,后文就不再展开赘述。  

6.2 RAM 测试

从本质上来说,所有的 RAM 测试所做的相同:将某一数值写入相应的单元,再读取这

一单元的内容并和之前写入的值相比较;如果这两个值相同,则这一单元地址便通过了相应

的测试;而如果两个值不同,则这一单元地址的本测试失败。根据不同的算法,存储器地址

的存取顺序以及所写入及校验的值会有相应的差异。  

6.3 常用的 RAM 测试方法

存储器的测试模式对于提供高效、有质量的嵌入式存储器测试有重要意义。为了选择或

开发最适合的测试模式,需要对存储器的设计及制作工艺有相应的了解;之后再选择相应的

故障模式。当然不存在一种“万能”的模式可以用来进行所有的存储器测试。  

在过去的数十年间,所开发的存储器测试模式为数众多,由于篇幅所限,本文只能就其

中流行最广也是最重要的几种模式做一阐述。通过对这几种模式的分析,也能够让我们了解

如何针对新的存储器、新的科技开发出出新的测试模式用以侦测故障。  

存储器测试模式中有不少经常用到的术语,在此先稍作解释。基准单元(Base  Cell,BC),

指的是我们当前所关注的那一个存储器单元,是正在测试中的那一个单元。基准单元物理上

被若干个相邻单元(Neighborhood  Cell,NC)所包围,一般情况下相邻单元为 8个,可以参

考图 8。字(Word)由多个单元构成,这些单元可通过一个单一的地址进行存取。  

             

             

    NC   NC   NC      

    NC   BC   NC      

    NC   NC   NC      

             

             

图 8  基准单元及相邻单元关系  

测试模式的复杂度体现了存储器测试中所需的周期数。一个 4N的测试模式说明存储器

中的每个位置被存取 4 次,其中的 N 是待测存储器地址总数。一般使用 n 表示待测存储器

中的位(Bit)的数量,这在评估那些以位作为基础运行的存储器经常用到。(存储器可以是

以位为基础运行的,也可以是以字为基础运行的;前者每一位对应一个地址,而后者每一字

对应一个地址。从实践的角度来说,大部分的存储器以字为基础进行运行。)    

地址的排序方式(也即是测试存储器是如何选择下一个存储器单元的问题)对于存储器

测试的效率有着重要的影响。一般说来,目前存在的主要的三种地址排序方式为:步进式

(Marcking)、走块式(Walking)及急速式(Galloping);其他还包括诸如随机式等方式,但

是实际中应用较少,同时也缺乏足够的应用价值,所以本文也不涉及。  

在步进式测试中,被测试单元的地址按序递增或递减,这也是存储器的地址三种排序方

式中使用率最高的一种。走块式测试中,被测试单元的地址也是按需递增或递减,其和步进

式的不同之处在于基准单元被存取之后其数据状态的不同。在步进式排序方式中,在进行完

一个给定的序列后,基准单元的值变为和该序列刚开始时的相反状态。随着测试的进行,越

来越多的单元的值变为与该序列刚开始时的相反状态,到与该序列对应的测试结束后,所有

相关单元的值均变为与该序列刚开始时的相反状态。而在走块式排序方式中,情况正好相反,

在测试过程的任意一个时间点上,有且仅有一个单元的值与本序列该开始时相反,而在与该

序列对应的测试结束后,所有相关单元的值均与该序列刚开始时相同。急速式排序方式相较

步进式与走块式排序方式,需要更多的周期数。对于每一个基准单元,在其值改变前后,都

需要对其他单元进行存取,其复杂度便为 N2。这也使得该排序方式在实操性上不如前两者。  

目前常用的一些测试模式如下:  

� 存储器扫描(Memory  Scan)模式  

最简单的测试模式。通过对一定范围的单元写 0写 1,然后再读取进行校验来进行,所

以也被叫做 01算法。  

伪代码如下:  

For  I  =  0  to  (n-­‐1)       ;n是本次测试包含的被测单元数量  

  Write  0  to  Cell  I  

  Then  read  it  for  correctness  

  Write  1  to  Cell  I  

  Then  read  it  for  correctness  

Next  I  

� 棋盘(Checker)模式  

对被测存储器区域写入 01相间的(类似国际象棋黑白相间的棋盘)数据,之后读取进

行校验的一种模式。不少情况下,可以以互补数据再进行一次测试。  

伪代码如下:  

For  I  =  0  to  (n-­‐1)  step  size  =  2     ;n是本次测试包含的被测单元数量  

  Write  Cell  I  according  to  checker  pattern  

  Write  Cell  (I+1)  according  to  checker  pattern  

Next  I  

 

For  I  =  0  to  (n-­‐1)  

  Check  Cell  I  for  correctness  

Next  I  

 

For  I=0  to  (n-­‐1)  step  size  =  2  

  Write  complement  of  Cell  I  to  Cell  I  according  to  checker  pattern  

  Write  complement  of  Cell  (I+1)  to  Cell  (I+1)  according  to  checker  pattern  

Next  I  

 

For  I  =  0  to  (n-­‐1)  

  Check  Cell  I  for  correctness  

Next  I  

� 急速(Galloping  Patterns,GALPAT)  模式  

急速模式有多种实现的方法,在此只举最常用的一种。  

该模式首先对被测存储器区域单元做全写 0处理,之后由最低地址开始读取单元内容,

校验(应为 0)之后对该地址单元写 1,同时对其余单元进行读取并校验,地址加 1对下一

单元进行相同操作,重复至最高地址。之后从最高地址开始读取单元内容,校验(应为 1)

之后对该地址单元写 0,同时对其余单元进行读取并校验,地址减 1对下一单元进行相同操

作,重复至最低地址  

伪代码如下:  

For  I  =  0  to  (n-­‐1)     ;n是本次测试包含的被测单元数量  

  Write  0  to  Cell  I  

Next  I  

 

For  I  =  0  to  (n-­‐1)  

  Read  from  Cell  I  and  check  for  correctness  

  Write  1  to  cell  I  

  Read  from  cells  (0  to  (I-­‐1))  and  ((I+1)  to  (n-­‐1))  and  check  for  correctness  

Next  I  

 

For  I  =  (n-­‐1)  to  0  step  size  =  -­‐1  

  Read  from  cell  I  and  check  for  correctness  

  Write  0  to  cell  I  

  Read  from  cells  ((n-­‐1)  to  (I+1))  and  ((I-­‐1)  to0)  and  check  for  correctness  

Next  I  

7 结论

本文通过面向缺陷的测试这一概念的引入,从硬件及微观的层面分析了存储器出现故障

的情况,并针对硬件及其故障叙述了相关测试的算法。其实与软件评估相关的 MCU的各个

硬件部件的故障分析及算法设计,都可以按照这一模式进行处理;因为无论是 MCU的算逻

部件、寄存器、PC指针,还是地址解码、外部通讯、AD转换等,微观的缺陷都是一样的,

通过对缺陷的分析,可以导出或建立市级可用的故障模式,有了故障模式,则对于缺陷的侦

测也将变得容易处理。  

希望本文能够对检测行业的相关从业人员对于理解和实施软件评估这一新兴的产品测

试有所助益。  

参考文献

[1]  GB  14536.1-­‐2008  《家用和类似用途电自动控制器  第 1部分:通用要求》  

[2]GB  4706.1-­‐2005  《家用和类似用途电器的安全  第 1部分:通用要求》