账号:
密码:
最新动态
 
产业快讯
CTIMES / 文章 /
微处理器测试的SoC时代新挑战
系统级晶片设计专栏(5)

【作者: 吳正一,黃俊郎】2003年05月05日 星期一

浏览人次:【5073】

在现在的电子产业中,微处理器(microprocessor)的重要性无庸置疑。除了被用来当做电脑的中央处理单元(central processing unit;CPU)外,也是许多电子消费产品的大脑。自Intel 4004问世以来至今,随着微处理器在晶片面积、性能与复杂度各方面的快速成长,其设计验证(design verification)与生产测试(manufacturing testing)的难度也随之增加。本文的主题为微处理器的生产测试技术,内容将涵括目前主要的测试策略、在系统晶片(System on Chip;SoC)时代所面临的新挑战以及可能的解决之道。


微处理器模型

如(图一)所示,吾人可将微处理器分割为处理器(processor)与记忆体两部份,而前者又可更进一步分为控制单元(control unit)与资料通道(datapath)。一般而言,资料通道包含对资料进行各种数学、逻辑运算的电路与存放暂时运算结果的暂存器;控制单元则为一有限状态机器(finite state machine;FSM),根据指令对资料通道送出适当的控制信号;记忆体则储存软体程式与资料。


和一般的数位电路相比,微处理器最大的不同在于其高度的可程式性(programmability)-由储存在记忆体的软体程式决定所执行的任务。除此之外,微处理器通常会有较高的电路复杂度与性能要求。因此,将针对一般数位电路所发展的测试技术或方法直接运用在微处理器上经常会有效率过低、无法满足规格(如性能或晶片面积)等问题。


《图一 微处理器模型》
《图一 微处理器模型》

微处理器测试

生产测试的主要目的在于决定生产过程有无问题。依据激发、侦测电路瑕疵的理念不同,微处理器测试图样(test pattern)可分为功能(functional)测试图样与结构性错误(structural fault)测试图样。前者让待测微处理器执行所设计的功能以确定其可以正常运作无误;后者则分析电路结构(一般为逻辑闸阶层),找出可以激发电路瑕疵并使其错误效应能被观察到的电路输入图样。测试图样的品质是由错误涵盖率(所侦测到的结构性错误比例)的高低与所须的测试时间长短来决定。


以下我们将就处理器部份的功能与结构性错误测试作进一步的说明。 (记忆体测试与逻辑电路测试截然不同,有兴趣的读者可参考[1]。)


功能测试

微处理器的功能测试图样的来源主要有二;其一为微处理器发展过程中,设计者为检查设计是否正确所写的功能验证程式(通常包含所有的指令与一些运算元的组合)。由于是由设计者提供,将这些功能验证程式用在生产测试并不会增加任何测试图样产生的负担。另一个功能测试图样的来源则是测试工程师为确保测试品质能达到要求所产生的功能测试程式。功能测试主要的限制与缺点如下:


  • (1)手动产生的测试程式,其品质的好坏与设计者或测试工程师的经验相关性太大。


  • (2)功能验证或测试程式通常是以高阶的硬体描述(如Verilog或VHDL等高阶描述语言)为基础产生,其品质评断的标准通常为程式码函盖率(code coverage),很难据以推算吾人真正关心的错误涵盖率。


  • (3)完全的功能测试,虽然可以涵盖所有的结构性错误,由于所须的测试时间太长(如果可能的话),并不可行。



由于功能测试可以在微处理器的工作速度下执行(亦即at-speed testing),因此能侦测到一些只影响系统时序(timing)而不会造成逻辑错误的电路瑕疵。所以虽然有上述问题,功能测试图样仍为微处理器生产测试不可或缺的一部份。


结构性错误测试

由于现有的自动测试图样产生器(Automatic Test Pattern Generation;ATPG)技术并无法处理像微处理器这么复杂的循序电路(sequential circuit),可测试性设计(Design-for-Testability;DfT)已成为微处理器结构性测试的必要手段。目前,藉由加入完全或部份扫瞄链(full or partial scan chain)以增加记忆体元件(flip-flop or latch)的可控制性与与可观察性的方法,可以使现有的自动测试图样产生器能产生高错误涵盖率的测试图样,是最广为采用的方法。例如,在升阳的UltraSparc中,几乎所有的单元都使用完全扫描(惟一的例外使用部份扫描);IBM的500 MHz CMOS S/390与超微(​​AMD)的K6微处理器皆采用完全扫描设计。


虽然可以帮助达到高错误涵盖率,扫瞄链由于采用序列式的(serial)测试图样输入与捕捉资料输出,使得测试时间显著地增加。为了缩短测试时间并减少对外部自动测试仪器(automatic test equipment;ATE)的依赖,在晶片上加入测试图样产生器(test pattern generator)或测试反应分析器(test response analyzer)的内建自我测试( Built-In Self-Test;BIST)设计,采用度也有日渐升高的的趋势。


大部份的内建自我测试技术以线性回授移位暂存器(linear feedback shift register, LFSR)来产生pseudo-random测试图样,而以MISR(multiple input signature register)来压缩测试回应,并且以扫瞄链为传送测试图样与测试回应的媒介(亦即内建自我测试并不会取代扫瞄练)。对逻辑电路而言,因为pseudo-random图样的错误涵盖率通常低于自动测试图样产生器产生的测试图样,接受度尚不高。 (IBM的S/390用了256000个自我测试图样达到95%的静态错误涵盖率。)不过,对大容量的内嵌式记忆体而言,内建自我测试似乎是惟一的有效解决方案,在Digital的Alpha 21164、超微的K6与IBM S/390均有记忆体自我测试功能。


以扫瞄链为基础的结构性错误测试,除了测试时间长之外,还有以下问题:


  • (1)此方法无法连续地供应测试图样(测试图样是序列式地输入扫瞄链),因此无法直接用来侦测与系统时序相关的错误。


  • (2)在测试过程中,功率消耗可能会数倍于正常工作模式。



这些测试时间、功率与测试效率的问题,在SoC设计中将会更为严重。在复杂的SoC设计中,内嵌式微处理器必须与其它的智财核心(IP core)分享有限的测试资源(如晶片接脚、测试时间等),传统的测试方法将会导致过高的测试成本。因此,以结构性错误为目标的自我测试程式产生技术,最近又开始吸引学术界与工业界的注意。


结构性错误导向的测试程式产生技术

(图二)所示为以结构性错误导向的微处理器测试程式产生方法的概念性流程图。其输入包含低阶的结构描述(如逻辑闸阶层的电路描述)、错误模型(fault model)与高阶的硬体描述(HDL description)、指令集(instruction set)。和功能测试不同的是,这个测试程式产生器(test program generator)须要有低阶的电路描述与错误模型来找出可以激发或观察电路瑕疵的指令。结构性错误模拟器(structural level fault simulator)则是用来决定错误是否被侦测到,并评估测试程式的错误涵盖率。


由于是针对结构性错误来产生测试程式,此测试技术结合了功能测试与结构性测试的优点:


  • (1)所产生的测试程式可以在微处理器的额定速度下执行,因此可以用来侦测动态错误。


  • (2)没有测试时功率消耗剧增的问题。


  • (3)测试程式是以结构性错误为标的,与生产测试的目标相同。




《图二 结构性错误导向测试程序产生流程》
《图二 结构性错误导向测试程序产生流程》

结构性错误测试程式合成

接下来下以一假想的微处理器中ALU的结构性错误为例,介绍产生测试程式的可能方法。 (图三)为示为待测ALU与和其相邻的单元。其中A与B为ALU的运算元输入;C共有三个信号,分别对应到ALU可以执行的加、减与对A的反相运算(此三个控制信号在任何时间仅有一个为1,亦即one-hot encoding);D为运算结果。测试程式产生步骤如下:


  • (1)以ALU为待测电路,使用ATPG产生可侦测目标错误的测试图样。在此步骤中,吾人必须藉由修改ALU或ATPG使C为one-hot encoding。假设ATPG产生之测试图样为(A,B,C)=(00001111,00111111,010)。


  • (2)C=010对应的是减法,因此实现此测试图样首先要将00001111写入AC,执行减法运算(B值来自记忆体),再将运算结果存入记忆体以观察错误是否存在。


  • (3)对应的程式片段为:(MEM[X]指记忆体位址X)



《公式一》
《公式一》

(4)执行错误模拟,将侦测到的错误自错误列移去。


(5)重复步骤1至4,直到错误列成为空集合或已达到预计的错误涵盖率。


(6)将所合成的各个程式片段结合(必要时可以加入分析或压缩测试结果的子程式),便得到生产测试程式。


(7)最佳化此测试程式以减少所须记忆体空间或执行(亦即生产测试)时间。


此测试程式可以被存在微处理器的非挥发性记忆体上(non-volatile memory),或在生产测试过程中由自动测试仪器写入待测微处理器的记忆体中。测试程式执行完毕后,吾人检查所储存的测试回应值是否正确以判断晶片是否有结构性错误。


除了上述靠分析电路与指令集结构来合成测试程式的方法外,也有一些技术是采用随机的方法来产生测试程式,而依靠错误模拟来决定是否已达到所要求的错误涵盖率。


《图三 待测ALU与和其相邻的单元》
《图三 待测ALU与和其相邻的单元》

指令阶层的可测试性设计

在上个例子中,待测微处理器的架构与指令集都很简单,因此吾人可以很容易地找出ALU输入信号值的限制──C为one-hot encoding,并合成实现ATPG测试图样的测试程式。然而,可以预见的是,随着微处理器架构日益复杂,仅靠微处理器原有的指令集来侦测错误将会变得不可行或达不到所须的错误涵盖率。解决此问题的方法之一为指令阶层的可测试性设计。


指令阶层的可测试性设计,其基本观念​​系加入专门用于测试用途的指令(须配合适当的硬体改变),以降低合成测试程式的困难、提升可达到的错误涵盖率或减少测试时间。为达到上述目标,可能的测试指令有:


(1)增加记忆体元件(主要是状态旗标)可控制性或可读取性的指令。


(2)压缩测试结果的指令。


与扫瞄链设计相比,加入测试指令同样也须要修改微处理器电路,但却有上述结构性错误测试程式技术的优点。


结语

随着内嵌式微处理器的日渐复杂与普及,传统的生产测试方法若无技术上的重大突破,可能会成为未来系统晶片产业的瓶颈。以结构性错误导向的测试程式加上指令阶层可测试性设计的生产测试策略,既能在晶片的工作速度下进行,又有达到高错误涵盖率的潜能,已引起许多国内外研究团队的重视,是一个相当有希望的解决方案。


(作者为台大SoC中心研究教授)


<参考文献


[1] R. D. Adams, High Performance Memory Testing - Design Principles, Fault Modeling, and Self-Test, Kluwer Academic Publishers, 2003.


[2] A. Carbine, and D. Feltham, "Pentium Pro Processor Design for Test and Debug," International Test Conference, pp. 294-303, 1997.


[3] D. K. Bhavsar, and J. Edmondson, "Alpha 21164 testability strategy," IEEE Design & Test of Computers, Vol. 14, No. 1, pp. 25-33, 1997.


[4] M. E. Levitt, "Designing UltraSparc for testability," IEEE Design & Test for Computers," Vol. 14, No. 1, pp. 10-17, 1997.


[5] T. D. Foote, et al., "Testing the 500-MHz IBM S/390 microprocessor," IEEE Design & Test of Computers, 1998.


[6] C. Stolicny, "Alpha 21164 manufacturing test development and coverage analysis," IEEE Design & Test for Computers, Vol. 15, No. 3, pp. 98-104, 1998.


[7] Z. Navabi, VHDL: Analysis and Modeling of Digital Systems, McGraw-Hill, 1993.


[8] J. Shen, and J. A. Abraham, "Native mode functional test generation for processors with applications to self test and design validation," International Test Conference, pp. 990-999, 1998.


[9] L. Chen, and S. Dey, "Software-Based Self-Testing Methodology for Processor Cores," IEEE Transactions on CAD of Integrated Circuits and Systems, Vol. 20, No. 3, pp. 369-380, March 2001.


[10] W. C. Lai, J. R. Huang, and K. T. Cheng, "Embedded-software-based approach to testing crosstalk-induced faults at on-chip buses," VLSI Test Symposium, pp. 204-209, 2001.


'[11] P. Parvathala, K. Manaparambil, and W. Lindsay, "FRITS - A Microprocessor ​​Functional BIST Method," International Test Conference, pp. 590-598, 2002.


相关文章
第九届盛群杯HOLTEK MCU创意大赛报告 低价位高功能数字舵机开发平台
comments powered by Disqus
相关讨论
  相关新闻
» 是德、新思和Ansys共同开发支援台积电N6RF+制程节点射频设计迁移流程
» 美光32Gb伺服器DRAM通过验证并出货 满足生成式AI应用要求
» Cadence结合生成式AI技术 开创多物理场模拟应用新时代
» AMD公布2024年第一季财报 成长动能来自AI加速器出货增长
» 调研:2027年超过七成笔电将是AI PC 并具备生成式AI功能


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK85CC9ALS0STACUK6
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw