第1部分 **测试方法
第1章 绪论
本书旨在讨论片上系统(SoC)测试的相关问题,包括建模及片上系统测试解决方案的设计和优化。重点是测试调度,因为要测试的系统越来越复杂,测试数据量不断增加,所以如何组织测试变得越来越重要,并且器件尺寸小型化使得新的故障类型不断出现。本书主要站在系统的角度进行讨论,日益复杂的SoC使得测试解决方案的设计人员很难掌握每个决策对系统测试解决方案的影响,而针对每个测试单元的局部优化几乎不会对全局方案产生影响。
从系统的角度看,需要考虑的一个重要因素是计算成本与建模和优化粒度的关系。与只考虑少量细节的模型相比,一个考虑大量细节的细粒度模型显然是*选。但是,细粒度模型会导致高计算成本,因为SoC的规模越来越大,测试解决方案的设计过程本质上是一个迭代过程,计算成本的控制很重要。此外,随着设计参数数量的增加,设计空间变大,*重要的是决定哪些问题需要花费精力计算。
多年来,一块芯片上集成的晶体管数量大幅增加。摩尔预测,一块芯片上集成的晶体管数量大约每18个月翻一番[198]。图1.1中,展示了英特尔处理器预测晶体管数量(摩尔定律)与实际晶体管数量的对比,预测的精确性令人吃惊。
图1.1 英特尔处理器预测晶体管数量(摩尔定律,直线表示)与实际晶体管数量(+表示)的对比[107, 198]
芯片设计是一项由晶体管数量增加、器件尺寸小型化和更短的开发时间驱动的挑战。在更高的抽象层级对系统进行建模可以处理越来越多的晶体管,器件尺寸小型化需要了解晶体管级设计的相关知识。可以通过重复使用以前的设计或设计的一部分(模块或内核)来缩短设计时间。基于内核的设计是一种替代方法,因为它允许将预定义和预验证的逻辑块(即所谓的内核)与胶合逻辑相结合构成完整的系统。可以重复使用以前设计的内核,也可以从内核供应商处购买。
SoC设计工程师的工作是设计片上系统。设计工作包括决定在片上系统中使用哪些内核,以及如何将内核嵌入到系统中。内核可能源自公司以前的设计,或者从其他公司(内核供应商)购买,也可以重新设计内核。SoC测试工程师是为片上系统设计测试解决方案的人。图1.2(b)显示了简化的SoC设计流程。在图1.2(a)中,SoC设计工程师和SoC测试工程师的工作是按顺序进行的。SoC设计工程师完成设计后,SoC测试工程师开始着手构建测试解决方案。图1.2(c)显示了顺序设计流程的替代方案,其中,SoC测试工程师早在SoC的设计阶段就参与其中。后一种方法的优点是SoC测试工程师可以对设计决策产生影响,比如内核的选择。在集成设计流程中,SoC测试工程师需要工具来评估不同的设计决策。例如,如果两个不同的处理器内核可以解决同一个问题,但两个处理器的测试特性不同,那么SoC测试工程师需要决定应该选择哪一个内核。
图1.2 SoC设计流程
之所以在设计阶段就考虑测试成本,是因为测试成本正在成为SoC设计的瓶颈。图1.3绘制了一个晶体管的成本和测试成本[106]预测。有趣的是,一块芯片上集成的晶体管数量增加的同时,一个晶体管的成本正在下降,一个晶体管的测试成本则保持不变,从图1.3可以清楚地看出,一个晶体管的相对测试成本正在增加。
图1.3 一个晶体管的成本和测试成本[106]预测
器件尺寸的小型化和不断提高的性能导致新故障类型的出现,有了新故障类型就需要建立新的故障模型,这也是预期会面临的挑战之一。建立新故障模型将进一步增加SoC 的测试数据量,测试时间变得更长,这使得测试调度变得更加重要。摩尔[198]指出一块芯片上晶体管数量将急剧增加,但每个晶体管的功率耗散(以下简称功耗)会降低。很可能出现这样的情景,晶体管可以被设计出来,但它的工作能力会被限制。对于想要在系统中不断增加功能的设计人员来说,这可能会令人沮丧。但是,测试人员可以利用这一现象。因为这意味着额外的可测性设计(design for testability,DFT)的成本降低了。这部分逻辑可以仅作为用于测试目的的逻辑引入。而且,还可以利用逻辑冗余来提高良率。测试期间的功耗是另一个重要问题。为了使每个测试向量尽可能检测更多的故障,希望激活尽可能多的故障位置。系统高频活动会导致更高的功耗。系统以及一个节点的功耗都有可能超出允许的范围,并且一个测试单元在测试过程中可能产生导致系统损坏的功耗。
本书主要内容分为三个部分。第1部分包含以下章节,绪论(第1章)、设计流程(第2章)、可测试性设计(第3章)、边界扫描(第4章)。第2部分包含5个章节,第5章介绍系统建模,第6章介绍测试冲突,第7章介绍测试功耗,第8章介绍测试访问机制(TAM)设计方法,第9章讨论测试调度。第3部分(第10~15章)详细讨论SoC测试应用,这部分是一组论文的汇编,涵盖了使用可重构的内核封装器的测试调度、测试调度和TAM设计、集成在测试解决方案设计流程中的内核选择,以及基于缺陷的测试调度。
第2章 设计流程
2.1 引言
本章简要介绍设计流程,以便在接下来的章节中引出对建模粒度的讨论。
技术的发展使得系统集成的晶体管数量急速增加。然而,技术发展所允许进行的设计与考虑成本(时间、金钱、人力)之后可能进行的设计之间存在差距。所谓生产率差距就是指利用现有技术进行设计的可能性与在合理的时间内完成设计的可能性之间的差距,这种差距正在不断扩大。生产率[120]定义为
这意味着如果生产率保持稳定,设计时间将急速增加(保持设计团队规模不变)。另一种选择是扩大设计团队的规模,以保持设计时间不变。但是,这两种方法都不可行。相反,EDA(电子设计自动化)工具的发展可以提高生产率,这意味着必须开发更好的建模和优化技术。
为了使设计者能够更好地处理技术发展导致的设计复杂性,开始的时候可以在较高的抽象层级进行系统建模。在高层级规范上进行的半自动综合和优化(设计者使用计算机辅助设计(CAD)工具)将设计从抽象建模转换为*终电路(图2.1)。与较低抽象层级相比,较高抽象层级的系统建模包含的具体实现细节较少。Gajski等人[64]用Y形图表示设计流程,其中三个方向分别是行为、结构和几何。
图2.1 设计流程
2.2 高层级设计
自上而下的设计流程的优点是,将设计指定为具有较少实现细节的高抽象层级,然后再综合成具有高度实现细节的模型,从而简化对设计方案的探索,并且在这个过程中我们可以轻松地设计备选方案。高抽象层级的模型包含的细节更少,对设计的处理更容易,可以添加更多的优化步骤,这意味着在设计空间可以进行更彻底的搜索。
在设计流程中,通常会对系统进行建模。建模的目的是了解系统的功能,添加布局、布线细节。到目前为止,已经开发了很多技术。在VHSIC(超高速集成电路)计划的倡议下,开发了名为VHDL(VHSIC硬件描述语言)的数字电路描述语言[120]。VHDL语言在1987年成为IEEE标准,*近一次修订是在1993年[268]。另外,图形描述有助于人们更容易地理解设计。图形描述的例子有框图、真值表、流程图、状态图(Mealy和Moore状态机)、状态转换图。网表用于枚举所有设备及其连接。SPICE(仿真电路模拟器)就是一个面向器件结构的仿真器[265]。EDIF(电子设计交换格式)可以简化不同CAD(计算机辅助设计)系统之间的设计传输。另外,为了标注设计中的延迟信息,开发了SDF(标准延迟格式)[252]。
2.3 基于内核的设计
自上而下的设计流程也有许多缺点。其中一个就是在较高的抽象层级,实现的细节不太明显。这使得在高抽象层级不可能讨论某些详细的设计问题。在超微米技术中,技术的发展使得器件尺寸高度小型化,需要对晶体管级的设计细节有所了解,而在高抽象层级中能够捕捉到的信息较少就成了一个问题。另一个问题是,在自上而下的设计流程中,有一个基本假设,即系统是**次设计。而在现实中,很少有系统是从头开始设计的。大多数都是更新以前设计的系统。这意味着以前系统的小部分甚至大部分内容都可以在新的系统中重新使用。此外,以前设计中一些已经用于完全不同系统的逻辑块也可以用在新系统中。甚至可以从其他公司购买逻辑块(内核)。例如,CPU核心就可以从不同的公司购买并用于设计中。
在基于内核的设计环境中,逻辑块,即所谓的内核,会被集成在系统里[84]。这些内核可能源自公司先前开发的设计,也可能是从其他公司购买的,或者是新设计的。内核集成设计工程师的工作是选择在设计中使用哪些内核,内核集成测试工程师的工作是设计测试解决方案,也就是让设计变得可测。内核集成设计工程师从不同的内核供应商手中选择内核。内核供应商可以是一家公司、参与先前设计的设计师或为系统开发新内核的设计师。
展开