1、测试性设计概述
测试性设计是指在系统、分系统、设备、组件和部件的设计过程中,通过综合考虑并实现测试的可控性与可观测性、初始化与可达性、BIT 以及和外部测试设备兼容性等,达到测试性要求的设计过程。
测试性设计是一个复杂的过程,有很多因素需要考虑。如,测试接口要标准、通用、简单,测试点的设置应支持产品各个层次测试的需要;要考虑工效学、自动化、障碍物、可达性、可视性;由电路板内诊断和传感器构成的自测试应象产品自身一样轻便;能对模块化部件一次完成多个功能的测试;能对多个独立的功
能部件进行并行测试;尽可能通过系统级测试实现故障检测来缩短测试时间;测试应直观、非破坏性,并尽量不使用专用工具,等等。为构造一个产品的测试性,设计人员一般需要以下五个方面的知识。
①了解部件和产品信息及其表示方式;
②能预测部件在一定条件下的行为;
③能观测软件程序的运行、输入参数和输出,测试和测量的硬件节点;
④通过内建功能可跟踪部件性能和行为的状态;
⑤能控制程序的输入、输出、运行和行为。
另外,测试性设计的目的是提高系统的故障诊断和隔离能力,忽视故障诊断的要求,盲目地追求可测性,必然导致设计费用和系统资源的浪费。反之,如果只从故障诊断考虑问题,而忽视实际的可测性,必然会降低可操作性。故障诊断方法的改进可以降低可测性的要求,同时可测性的提高可以增强故障诊断能力和
系统的可靠性。因此需要可测性设计同故障诊断技术相结合来优化系统可测性设计。
总之,测试性设计是与产品功能设计并行的复杂工作,企业测试部门的效益不能仅从设计阶段的投入衡量,而要从他在产品整个寿命周期获得的利益考虑。
按照产品的结构层次,测试性设计可以分为系统级测试性设计、电路模块的测试性设计、电路芯片的测试性设计和软件的测试设计等。
系统级测试性设计的基本原则是:
(1)通过将系统划分成各个模块来解决系统测试的复杂性;
(2)在系统中插入测试功能,先测试单个模块,再测试模块间的相互作用,进而完成整个系统的测试。
电路模块的测试性设计技术技术主要有:内建自测试设计技术、扫描通路设计技术和测试总线技术等。另外,传统的测试方法建立在对电路的功能测试基础上。但随着电路复杂性增加,对功能测试矢量的收集是一个巨大的工作量。而实际上,电路都是有一些独立的或近似独立的功能块所组成。因此,对这些功能块
分别进行测试则更有效,一种称为结构化测试的电路测试设计方法应运而生。由于这些功能块不一定具有相应的输入/输出引脚,因此需要插入一些新的结构。
系统级芯片(SoC)往往包含着一个或多个模拟的功能块。随着系统级芯片越来越多的使用,模拟电路的测试性设计技术也逐渐引起测试界的重视。而目前
大多数电路的测试性设计都集中在数字电路,在数字逻辑电路中广泛应用的测试性设计技术不能简单移植于模拟电路。目前对模拟电路的测试性设计主要采用以下几种方式:第一:功能结构重组。此方法是利用电路的功能结构经过重组,利用输出信号判别电路是否发生错误;第二插入测试点;第三进行数模/模数转换。
即在芯片设计中加入模数转换器和数模转换器,把待测电路的模拟输出信号变成数字信号,把待测电路的数字输入信号变成模拟信号,从而实现激励和响应的传播。
目前复杂的系统基本上都是由软件和硬件组成,而且系统对软件的依赖越来越大,很多过去由硬件实现的功能逐渐由软件所代替。系统设计中不考虑软件的测试性是不完善的。但是,软件的测试更为复杂。主要问题是缺乏对软件响应的了解,缺乏测试模型、合适的测试准则和测试方法。通常对软件的测试采用统计
方法或者启发式的检查,或者用其它的方式计算同一个变量,等等。这些方法并不能保证软件没有问题。目前能够做的就是通过对大量的功能空间的分析,来提供定性的基于统计的质量保证。

