可测性设计技术【摘要】随着微电子技术的迅速发展、芯片集成度的不断提高以及电路板复杂性的不断增加,传统的测试模型和测试方法已经不能满足当前的测试要求,测试费用急剧增加。
本文介绍了可测试性设计的内涵、意义和分类,可测试性设计有两种方法:专项可测试性设计和结构化可测试性设计(边界扫描和内建自测试),并讲述了这些方法的基本原理。
【关键词】可测试性设计;边界扫描;内建自测试随着数字电路集成度不断提高,系统日趋复杂,对其测试也变得越来越困难。
当大规模集成电路LSI和超大规模集成电路VLSI问世之后,甚至出现研制与测试费用倒挂的局面。
这就迫使人们想到能否在电路的设计阶段就考虑测试问题,使设计出来的电路既能完成规定的功能,又能容易的被测试,这就是所谓的可测性设计技术。
因此也就出现了可测性的概念。
一、基本概念在可测性的概念出先不久之后,人们又遇到了一个难题,即大家设计出来的电路在测试方面到底谁优谁劣,没有统一的标准,因此就需要对电路的测试难易程度进行数量描述,即可测性分析。
可测性分析是指对一个初步设计好的电路或待测电路不进行故障模拟就能定量地估计出其测试难易程度的一类方法。
在可测性分析中,经常遇到三个概念:可控制性、可观察性和可测性。
可控制性:通过电路的原始输入向电路中的某点赋规定值(0或1)的难易程度。
可观察性:通过电路的原始输入了解电路中某点指定值(0或1)的难易程度。
可测性:可控制性和可观察性的综合,它定义为检测电路中故障的难易程度。
可测性分析就是对可控制性、可观察性和可测性的定量分析。
但在分析过程中,为了不失去其意义,必须满足下面两条基本要求:(1)精确性,即通过可测性分析之后,所得到的可控制性、可观察性和可测性的值能够真实的反映出电路中故障检测的难易程度。
(2)复杂性,即计算的复杂性,也就是对可控制性和可观察性的定量分析的计算复杂性要低于测试生成复杂性,否则就失去了存在的价值。
二、可测性设计的意义据统计资料表明,检测一个故障并排除它,所需的开销若以芯片级为1,则插件级为10,系统级为100,机器使用现场为1000。
这表明,故障一定要在芯片级测出并排除它,绝不能把坏芯片带到插件中去。
但由于现在的芯片,一般都是几千到几百万个门的电路,而外部可用于测试的端脚又非常的少,因此,芯片的测试是一件十分困难的事。
尽管新的测试方法不断涌现,但由于集成技术的快速发展,测试生成的速度远远赶不上集成度的增长的需要。
根据很多实验证实,测试生成和故障模拟所用的计算机的时间与电路中门数的平方到立方成正比,也就是说测试的开销呈指数关系增长。
但另一方面,由于微电子技术的发展,研制与生产成本的增长速度远远小于指数增长。
因此,就使得测试成本与研制成本的比例关系发生了极大的变化,有的测试成本甚至占产品总成本的70%以上,出现了测试与研制开销倒挂的局面。
图2.1 测试生成处理开销与电路规模的关系1所示。
图中DT表示可测性设计,UD表示无拘束设计,H表示测试开销,G表示电路中的门数。
从图中可以看出,对于无拘束设计,测试开销将随电路规模的增大呈指数上升,而采用了可测性设计之后,测试开销与电路规模基本上呈线性增长关系。
因此,我们可以得出结论:对于LSI和VLSI,可测性设计是必不可少的。
三、可测性设计的目标可测性设计,简单地说,就是使逻辑电路易于测试的设计,或者说是以改善逻辑电路可测性、可诊断性为目标的设计。
可测性设计并不是改变原来电路的功能和能力,而是尽量少用附加的硬件,力求用一个简单的测试序列去测试逻辑电路的一种设计方法。
从上述观点出发,可得可测性设计目标为:(1)缩短测试序列的生成时间,也就是对被测电路生成测试码时,所用的算法尽量简单。
(2)缩小测试序列的集合,即使测试施加时间尽量缩短。
四、可测性设计的分类为了达到上述的可测性设计的目标,一般来说都会增加硬件的费用。
在这方面有两种基本的策略:一种是为了获得最大的可测性而不惜成本地作设计;另一种是采取一些有效的方法,增加少量或有限的硬件开销来提高电路的可测性。
基于这两种基本策略,把可测性设计方法分成两类:一类是专项设计,即按功能基本要求,采取一些比较简单易行的措施,使所设计电路的可靠性得到提高。
它是针对一个已成型的电路设计中的测试问题而提出来的。
它采用传统的方法对电路某些部分进行迭代设计,以提高可测试性。
另一类是结构设计,是从设计一开始就建立测试结构,每个子电路都具有嵌入式测试的特征。
它是根据可测性设计的一般规则和基本模式来进行电路的功能设计,主要包括扫描技术和内建自测试两种测试技术。
这两类设计中,前者处理时序电路是十分困难的,不能根本解决测试问题。
因此对时序电路可测性设计,只有采取结构设计才能解决测试时序电路的困难。
对于上述两类设计,它们的基本设计思想是一致的,首先要把电路分块。
因为电路的测试序列长度与电路的输入数与元件数有关。
前文提到,产生电路测试码时间与电路的门数的平方到立方成正比。
因此可以直观的看出若把电路均匀分成两块,则计算测试时间可下降到四分之一至八分之一左右。
其次是提高电路的可控制性值与可观察性值,也就是提高电路的可测性值。
提高了电路的可测性值,也就减少了测试矢量产生与施加的开销。
五、专项可测试性技术设计专项可测试性常用的方法是用可测试性的度量值来寻找有限的附加测试点和控制点,以提高电路的可观性和可控性,从而提高电路的可测试性。
为了对可测试性进行量化分析,Goldstein于1979年提出了可测试性度量的概念进而对可测试性的两个度量:可控性值和可观性值进行了定义,Goldstein 于1980年提出的SCOAP(Sandia Controllability/Observability Analysis Program)可测试性度量被广为接受。
SCOAP可测试性度量规定电路中每个节点由6个参量来描述,即组合0可控性(CC0),组合1可控性(CC1),时序0可控性(SC0),时序1可控性(SC1),以及组合可观性(CO)和时序可观性(SO)。
可控性值范围在1~∞之间,可观性值位于0~∞之间。
线路度量值越高,控制和观测将越困难。
可控性值的估计:定义1:欲置节点N值为组合逻辑值0(1),需要对相关节点赋以确定组合逻辑值的最小赋值次数,称为节点N的组合0(1)可控性值,用CC0(N)(CC1(N))表示。
定义2:欲置节点N值为时序0(1),需要对相关节点赋以确定时序逻辑的最小赋值次数,称为节点N的时序0(1)可控性值,用SC0(N)(SC1(N))表示。
实际上,时序可控性值提供了控制节点所需的时段数。
为了计算数字系统各节点的可控性值,首先将原始输入的组合可控性值置为‘1’,时序可控性值置为‘0’。
然后,从原始输入开始,按照电路描述,用表5.1列出的标准单元可控性值计算公式,依次计算电路各节点的可控性值。
表5.1标准单元的可控性值计算公式可观性值的估计:定义3:为把节点N的信息传播到原始输出,所需最少的组合逻辑值赋值次数叫节点N的组合可观性值,CO(N)表示。
定义4:为把节点N的信息传播到原始输出,所需最少的时序逻辑值赋值次数叫节点N的时序可观性值,SO(N)表示。
为了计算电路各节点的可观性值,首先将原始输出端的可观性值置为‘0’。
然后,从原始输出开始,按照表5.2列出的标准单元可观性值计算公式,用前面已算出的可控性值,即可求出电路各节点的可观性值。
表5.2标准单元的可控性值计算公式专用可测试性技术采用迭代的方法对局部电路进行修改,而结构化可测试性设计技术则是从全局的角度出发对电路进行系统化设计,在结构化可测试性技术形成之前,采用传统方法改善可测试性,例如时序电路测试前先进行初始化,插入测试点,及电路分块。
以图5.1(a)为例,说明专项可测性技术的具体实现:图5.1(a)原始电路图5.1(a)电路中1,2,3为原始输入,对图中各节点进行‘0’可控性值的计算,如下:CC0(1)=CC0(2)=CC0(3)=CC1(1)=CC1(2)=CC1(3)=1(原始输入)CC0(4)=CC1(3)+1=2CC1(4)=CC0(3)+1=2CC0(7)=min[CC0(1),CC0(2)]+1=2CC0(8)=CC1(2)+1=2CC0(10)=min[CC0(8),CC0(9)]+1=3(CC0(9)虽然没有计算,但是显然大于2)CC0(11)=[CC0(7)+CC0(10)]+1=6CC0(6)=CC1(11)+1=min[CC1(7),CC1(10)]+1=CC1(7)+1=CC1(1)+CC2(2)+2=4CC1(4)=CC0(3)+1=2CC0(5)=CC0(6)+CC0(4)+CC1(4)=7+2+2=11CC0(12)=CC0(5)+CC0(4)+CC0(4)=11+2+2=15CC0(9)=CC0(5)+CC0(12)+1=11+15+1=27可见在节点9处的‘0’可控性值最大,为27,即该点可控性最差,如在该节点处插入两输入与门,则CC0(9)将由27降为2。
插入与门后的电路如图5.1(b)所示。
因此电路的可控性值减小,可控性将提高。
同样,对图2.3所示电路,可计算出各节点的‘1’可控性值和可观性值。
通过插入或门和引出观测点则可降低节点的‘1’可控性和可观性值。
图5.1(b)插入与门后的电路六、边界扫描技术边界扫描测试是通过在芯片的每个I/O脚附加一个边界扫描单元以及一些附加的测试控制逻辑实现的,BSC主要是由寄存器组成的。
每个I/O管脚都有一个BSC,每个BSC有两个数据通道:一个是测试数据通道,测试数据输入、测试数据输出;另一个是正常数据通道,正常数据输入(Normal Data Input,NDI)、正常数据输出(Normal Data Output,NDO)。
如图6.1所示。
在正常工作状态,输入和输出数据可以自由通过每个BSC,正常工作数据从NDI进,从NDO出。
在测试状态,可以选择数据流动的通道:对于输入的集成电路(Integrated Circuit,IC)管脚,可以选择从NDI或从TDI输入数据;对于输出的IC管脚,可以选择从BSC输出数据至NDO,也可以选择从BSC输出数据至TDO。
图6.2给出了基本扫描单元的电路,模块MUX21是一个二选一,PI:并行输入,PO:并行输出,clk1和clk2是两个时钟信号,SI:串行输入,SO串行输出,shift:移位/装载,test mode:测试方法选择。
每一个扫描单元有四个端口:PI,PO,SI 和SO,具有移位(Shift)、捕获(Capture)、刷新(Update)三种功能。
图6.1 边界扫描单元BSC的连接图6.2 基本的边界扫描测试单元BSC边界扫描的整体结构如图6.3所示,主要由以下硬件组成:1.具有4或5个引脚的测试存取通道(Test Access Port,TAP);2.一组边界扫描寄存器,指令寄存器(Instruction Register,IR)数据寄存器(Data Register,DR);3.一个TAP控制器。