CPU 可测试性设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CPU可测试性设计
董婕李吉檀彦卓徐勇军李晓维
摘 要 可测试性设计(Design-For-Testability,DFT)已经成为芯片设计中不可或缺的重要组成部分。它通过在芯片的逻辑设计中加入测试逻辑提高芯片的可测试性。在高性能通用CPU的设计中,可测试性设计技术得到了广泛的应用。本文结合几款流行的CPU,综述了可应用于通用CPU等高性能芯片设计中的各种可测试性方法,包括扫描设计(Scan Design),内建自测试(Built-In Self-Test,BIST),测试点插入(Test Point Insertion),与IEEE 1149.1标准兼容的边界扫描设计(Boundary Scan Design,BSD)等技术。
1 引言
随着集成电路制造工艺的发展,计算机系统的核心部件—CPU的设计变得愈加复杂。时钟频率、IPC(instructions per clock)、片内多线程等性能指标不断提高,使得CPU的测试挑战变得越来越突出,测试的成本在芯片成本中所占的比重也在升高,从而影响了芯片的量产时间(Time to V olume)和上市时间(Time to Market)。为了降低CPU芯片的测试难度,降低测试成本,在设计阶段进行可测试性设计[1]来提高芯片的可测试性,既为芯片验证测试和失效分析带来便利,又能缩短产品的上市时间。
可测试性(Testability)作为衡量硬件设计的一个属性,是反映为某一特定芯片产生测试程序的难易程度的一个量化参数,主要包括两个方面:可控制性和可观察性[1]。可测试性设计对电路的修改必须以不改变原始设计的功能为前提。但是由于需要在原始设计中增加必要的硬件逻辑,因此不可避免地会在一定程度上影响系统的性能、面积、功耗等参数。图1反映了不同面积开销下的DFT 技术对芯片性能的影响。在进行可测性设计规划的时候必须慎重考虑这些因素。可测试设计的任务就是在提高可测试性和确保芯片的性能、减小面积开销、降低功耗这些因素之间合理地选择一个折衷方案,使得在获得良好的可测试性的同时将DFT设计所带来的负面影响降低到最小。
图1 DFT技术与性能在面积开销上的关系
可测试性设计技术可以分为两大类:结构化的方法和全定制的方法[1]。结构化方法将DFT逻辑加入到电路之中,使得电路可以依照某种传统的预定义的过程进行测试;而全定制方法只对那些为了满足特定的测试需要,影响可测试性的关键地方增加DFT逻辑。不同商家的CPU的DFT设计大多是将传统的结构化的DFT技术和针对芯片自身特点的全定制技术结合在一起。先用结构化的方法
得出DFT设计的大致轮廓,然后针对芯片中结构化方法没有覆盖到,然而却可显著提高可测试性的部分采用全定制的方法。通过对这两种方法的结合,最终得到一个比较理想的解决方案。
本文对Pentium,AMD,Alpha,PowerPC,UltraSparc,MIPS等系列CPU芯片的可测试性设计方案,按照传统的DFT技术分类方法分别进行分析研究。重点介绍它们在实现过程中结合芯片性能等其它因素所做的一些特殊处理。相关技术同样适用于其他芯片的可测试性设计。少数CPU出于性能上的考虑,完全采用全定制的方案将不作为本文的重点。
2 技术原理和应用
由于CPU性能上的要求不断提高,引入大量的设计约束以实现可测试性设计也变得越来越困难,不同芯片所采用的方法差异也很大。为了简单起见,我们还是按照比较成熟的可测试性设计技术的分类方法展开讨论:主要包括内部扫描设计、存储器测试、内建自测试、测试点插入、边界扫描设计等。结合几款CPU芯片的具体实例,对其值得借鉴或关注的关键技术进行详细分析。
2.1 内部扫描设计
时序电路可以模型化为一个组合网络和一组带记忆元件(触发器)的反馈。内部扫描设计就是把这些记忆元件修改为扫描触发器,并连接成为扫描链(相当于可以移位的寄存器)。扫描链的输入在芯片管脚可控,其输出在管脚可观测,从而达到对记忆元件的取值进行控制和观测的目的。主要有三种扫描设计的方法:Muxed DFF,Level Sensitive Scan Design(LSSD),Clocked- Scan[1]。在CPU中大多用前两种扫描方法。
(a)增加延迟、共享时钟(b)不增加延迟、需测试时钟
图2 两种主要的扫描触发器
考虑到芯片面积及性能的约束,根据记忆单元是否被全部地替换成扫描触发器,扫描设计有“全扫描”和“部分扫描”之分。全扫描设计的优点在于可以高效地利用自动测试向量产生(Automatic Test Pattern Generation,ATPG)算法,采用组合电路模型,产生高效的测试向量,对门级固定型故障达到很高的故障覆盖率。采用全扫描设计可以大大减少对功能测试的依赖,有利于故障分析,并为芯片调试提供了良好的可观察性。然而,全扫描设计对电路本身有很高的要求,必须遵循很多设计规则。在某些情形下,比如存在很多异步逻辑,全扫描设计则难以实施,此时可以采用部分扫描设计。部分扫描相对灵活得多,不仅节省面积开销,而且可以减小对电路性能的影响。其代价是测试向量产生困难,故障覆盖率可能会有一定程度上的下降。
全扫描设计在CPU的可测试性设计技术中占有重要地位。AMD-K6[2]采用全扫描的设计方法,设计中共有4条扫描链,37000个可扫描单元;PowerPC 750[3]系列大多数都采用LSSD全扫描方法,在尽量减小对芯片性能影响的同时,保证了极高的测试覆盖率。
当然,也有的CPU采用部分扫描的方法,但是扫描触发器的比率都较高,有的是接近全扫描。AMD-K7[4]的扫描设计中可扫描触发器的比率达到89.8%;UltraSparc/[5]
ⅠⅡ中除了某个关键功能模块用部分扫描之外,其它所有模块都采用了全扫描,大约使用了22000个扫描单元,并用一个单一的测试时钟域来简化设计,方便调试和系统级扫描操作;Alpha 21364采用Muxed DFF扫描方法,在嵌入的Alpha 21264核的外围逻辑实现了部分扫描,并采用了定制扫描岛屿(Scan Island)[6]的结构,但因为可扫描单元的比率低(15%~40%),并没有发挥这种结构的优势,在测试过程中仍然主要依赖功能向量集进行全速测试(At-speed Testing)。有的CPU并没有采用传统的扫描设计:Pentium Pro(P6)[7]放弃使用扫描设计和基于扫描的内建自测试,而采用定制的面积和性能开销较少的DFT 技术;MIPS R10000[8]也没有采用扫描设计,而是运用了一种类似于扫描的增加测试点的全定制方法。
扫描设计在实现过程中有很多需要注意的地方,包括:多时钟域合并、时钟门控、异步逻辑、总线竞争、嵌入式存储器等IP核的处理等。其中大部分都可以通过测试点插入的方法进行处理,但一般还是希望能从上层的设计中加以避免。这里主要针对总线竞争的处理进行讨论。图3(a)为一种典型的可能出现竞争现象的电路结构。在CPU一般工作模式下由译码器产生的选择信号只有一个有效。但是在扫描过程中,来自于扫描触发器输出的选择信号,可能同时也被选通,从而导致竞争。这可以通过加入测试点或从设计中避免。如图(b)所示,增加一个译码器,在CPU一般工作模式下让其所有输出为‘1’而保持正常功能;在扫描模式下,其输出可以保证所有的选择信号仅一个有效。这样就避免了竞争的发生,其代价只是在通路上增加了一级与门的延时。而且在大多数情况下通路上本身已经有缓冲器,则用与门代替该缓冲器,从而使得对延时的影响更小。
(a)可能引起总线竞争(b)总线竞争消除
图3 扫描设计中总线竞争的处理
2.2 存储器测试
在通用CPU中一般包含大量嵌入式存储器模块,如数据和指令缓存器、寄存器文件、各种队列等。它们是提高CPU性能的有效手段。存储器结构规整,占据了芯片的很大部分面积,所以存储器测试显得十分重要。对存储器的可测试性设计在整个CPU的可测试性设计中占有重要地位,一般是通过采用March算法[9]实现的,大部分采用的是内建自测试模式。
存储器内建自测试(Memory Built-In Self-Test,MBIST)是较通用的一种有效的测试嵌入式存储器的方法。它通过把存储器测试逻辑固化到芯片内部而使得原本复杂、耗时的测试过程变得简单易行,同时大大降低了测试成本。MBIST的硬件逻辑一般由MBIST控制器、地址产生器、数据产