软硬件系统可测试性设计
发布日期:2020-12-07 07:30 浏览次数: 次
建立可测试性设计是开发软硬件系统的关键,尤其是那些对工作可靠性要求高的系统。若没有可测试性设计,在产品正式使用之前就很难发现设计缺陷,而且工作中出现的故障也很难检测和诊断。
以前通过检测输入/输出特性来评估系统整体性能的方法已不再适用于复杂系统,而且复杂系统的测试设备和测试过程也相应复杂。采用可测试性设计可以增加系统的可测试性,提高产品质量,并减少产品投放市场的时间及测试费用。
我们把系统理解为由硬件和软件模块组合而成的整体,每个模块都是系统的独立部件,有严格定义的功能。每个模块都是硬件或软件或是它们的组合。DFT观念就是基于这种抽象系统层次上的检测,具备系统所有模块综合可测试性的功能。
传统上,硬件的设计者和测试工程师注重于设计的制作准确性,查找、排除现场故障两方面。对这类问题,他们已提出了多种有序和有效的解决方法,包括扫描设计和自检。但他们忽略了对设计的验证,设计仅取决于设计者的技巧。然而,设计者们认为,那些测试特征的结构化测试设计不仅有利于制造和维修,还能大大简化产品的设计验证过程,某些情况下能使设计验证周期从几周降至几天。
与此相反,软件的设计者和测试工程师的目标是设计的有效性和验证性。(与硬件不同的是,软件在使用时不会损耗,因此,工作故障是由于设计错误而形成,而不是由于不正确的复制或磨损。)与增加测试手段不同,软件人员致力于改善程序格式和规范,如模块化设计,程序的结构化,程序通用规范和对象化设计均被证明可以有效地简化测试。
如果能明确地区分设计的硬件和软件部分,这些处理方法是有效的。但当两部分界限模糊时,就会出现问题。例如,在系统设计初期,我们对系统层次上的测试策略很清楚,但不能确定哪些部分将在硬件中执行,哪些部分将在软件中执行。又如,在通用硬件上运行的功能软件,我们为了增强性能而将它改为硬件实现,设计者就必须确保这是一个可测试的、完整的且与执行选择项无关的设计。支持软、硬件综合设计要求使用“综合测试”技术,将软件和硬件测试技术结合在一起形成一个整体。
存取问题
独立模块的存取数目有限,使复杂系统的可测试性能受到限制。虽然多模块系统设计和执行时,可以将它细分成各个部分,但装配到一起以后,复杂系统的状态就成了具有各组成部分的多种复杂性的黑盒子。
例如,我们可以用一个状态机构来模拟模块的工作。状态包括转换和条件,通过确定所有状态的变化可以测试一个模块的动态响应。一般说来,如果一个模块有N个状态,(N个状态空间),则至少有N个状态变化,相应的,至少要进行N次不同的测试。
多模块复杂系统的状态数目增长极快。系统黑盒子包含了所有模块的状态空间,例如系统由K个模块组成,每个模块有N个状态,那么系统的状态空间是NK。我们称这种增长模式为状态空间的爆涨。
显然,如果能独立测试每个模块,模块化系统的可测试性就会大大提高。因此,模块化的软、硬件设计还需包括测试存取通道,以保证能够进行分离的模块测试。研究人员已广泛地采用这种各个击破的处理方式来测试复杂的、模块化数字电路。
系统级可测试性设计
系统可测试性设计必须明确分离系统的功能规范和实际软、硬件系统的运行。在设计过程中,我们先制定出系统的功能规范,由这个规范可对系统有明确且详尽的理解(不会被执行的细节弄糊涂)。这样的规范为系统的软、硬件划分和选择合适的组合提供了坚实的基础。
系统级可测试性设计必须在规范中增加系统级测试要求,以增加系统内部模块的可控性和可观测性。而后,必须将独立的测试要求转变为实际的软、硬件要求。在规范中设置测试要求会对实际系统产生很大影响,一种设计思路是像现有的测试设备一样来实现测试要求,如边界扫描通道测试技术。同时,测试要求也引起了软硬件测试设备的更新。
设计规范与实际执行相分离是现代设计方法的基本原则。这种方法包括结构化和反向分析设计以及软、硬件综合设计。因此系统级可测试性设计完全适用于这些现代设计方法。 技术规范中的系统级可测试性
其基本原则是:通过将系统划分成各个模块来解决系统测试的复杂性。在系统中插入测试功能,先测试单个模块,再测试模块间的相互作用,进而完成整个系统的测试。硬件测试(例如常规测试)就采用了这种原则。
在系统设计规范中,系统级可测试性设计策略有两部分。
(1)系统部分:结构化、模块化的设计方法自然可以增加可测试性,但制定系统划分的大体准则可以进一步加强系统的可测试性。
(2)增加测试功能:这使得在测试时能控制和观测单个模块以及模块间的相互作用。先在设计规范中确定测试功能,不考虑系统的运行细节,在其次的设诗步骤中再将测试功能与实际的软硬件系统运行结合考虑。http://www.zhijiegl.com/