系统晶片(System-on-a-Chip;SoC)设计具有高效能、较短设计周期及较低制造成本等众多优点,故此设计方法已成为目前IC设计的趋势。但在系统晶片中,电路复杂度及设计方式均与传统的电路截然不同。此外为了缩短设计周期,设计者亦常会整合不同的IP(Intellectual Property),例如微处理器(MPU)、类比/数位及数位/类比转换器(ADC/DAC)、锁相回路(PLL)、数位讯号处理器(DSP)及记忆体等。而各个IP之间通常具有不同的测试策略及控制方式,这使得原本就不易解决的测试问题更显得困难。
不同类型的电路有不同的测试方式,例如说逻辑电路是以扫瞄架构(Scan)与自动测试向量(Automatic Test Pattern Generation;ATPG)为主,而类比/混合讯号电路则多半是测量其功能与参数是否符合规格,记忆体则是以输入测试演算法,由机台自行产生测试图样的方式。因此,若以传统的测试方式来进行系统晶片测试的话,需要同时使用逻辑测试机台、类比/混合讯号测试机台及记忆体测试机台等,或者是选用同时具有上述几种机台能力的系统晶片测试机台。这对于测试成本来说,相当不划算。如何运用可测试设计技术来降低系统晶片的测试复杂度,使用最便宜的测试机台与最短的测试时间,来完成系统晶片的测试,遂成为测试方面的研究主题之一。
本篇文章将介绍目前正在开发的可测试设计技术;这些技术除了应用在一般的晶片之外,也可以应用在系统晶片上,解决系统晶片在测试上的瓶颈。以下就我国目前正在开发的可测试设计技术,分成三个主题来介绍,包括:
- (1)类比/混合讯号电路的内建自我测试技术(AMS BIST);
- (2)记忆体测试技术(Memory Testing);
- (3)系统晶片测试架构(SoC Testing)。
AMS BIST
在AMS BIST技术方面,主要为ADC/DAC与PLL两种电路的BIST技术,以下分别针对这两种不同的BIST技术做说明。
ADC/DAC BIST
首先在ADC/DAC BIST方面,通常在混合信号积体电路的测试上,数位电路和类比电路是分开测试的。数位电路测试技术已相当成熟,但类比电路却缺乏标准的错误模型(fault model)及可测试设计方法。因此,在近年来提出了许多ADC/DAC的BIST技术[1, 2],显示混合信号积体电路的测试技术有相当大的发展空间。
STC的技术则是以积分三角调变器(sigma-delta modulator)为基础的BIST技术[3, 4],应用于测试系统晶片中的ADC及DAC,进行静态(static)与动态(dynamic)的测试。包含了差分非线性误差(Differential Non- Linearity;DNL)、整体非线性误差(Integral Non-Linearity; INL)、信号杂讯比(Signal-to-Noise Ratio; SNR)、谐波失真(harmonics distortion)及单向性(monotonic)等测试。整个内建自我测试的架构如(图一)所示,主要由数位控制电路、全差动比较器、高精确度信号产生器及四个多工/解多工器所组成。
ADC静态测试需使用差动线性斜波信号输入,将理想的线性斜波输入到以软体模拟的积分三角调变器之行为模型来产生Bit_stream数位信号,再将此Bit_stream信号供给1-bit DAC及LPF(Low-Pass Filter)重建成高精确度的差动线性斜波,将ADC的输出以Tally and Weight array方式分析,得其差分非线性误差及整体非线性误差。 ADC动态测试使用single-tone或dual-tone的正弦信号,将ADC的输出由傅利叶转换(Fourier transform)方式分析其信号杂讯比及谐波失真。
DAC静态测试需由1-bit DAC及LPF产生差动线性斜波信号送入全差动比较器之正输入,此斜波信号非常缓慢的上升,而比较器之负输入则连接待测DAC的输出,如(图二)所示。当上升的斜波信号大于DAC输出信号时,比较器输出1,即Trans输出1,此时控制单元之dac_code[12:0]计数加1,并将计数值送入DAC的输入端,使得DAC输出的类比信号增加1 LSB,此时DAC输出信号大于斜波信号,比较器输出0。在斜波信号持续上升追踪DAC信号之同时,控制单元之计数器开始向上计数,直到缓慢上升之斜波信号再度大于DAC输出信号时,Trans送出1,此时会将计数器之计数值由Code[5 :0]送出。此计数值即记录了ti的时间,并再次将dac_code[12:0]计数加1,如此持续的动作,依据所记录之ti,将其总合取平均值相当于1 LSB的宽度。另外DAC之单向性测试,需送入缓慢上升与下降的斜波信号,如此即可完整的测试。
锁相回路
锁相回路(Phase-Lock Loop;PLL)常应用于通讯领域上,例如:时脉从数位资料讯号上的恢复、卫星传输信号的恢复、频率或是相位的调变与解调变及频率倍频等。于PLL电路中内建测试电路便可以自动产生测试样本输入于待测的锁相回路,并自动于晶片内部比对分析待测电路的输出反应是否正确。使用内建测试电路的方法来测试PLL有以下好处:
- (1)通常在SoC中会内嵌PLL当做频率产生器,因此很难使用外部的测试机直接测试它。
- (2)大部分的PLL包含类比电路设计,而且PLL通常是在高频下操作的;快速或具有混合讯号测试能力的测试机,是非常昂贵的。
- (3)相对于外部测试机而言,使用内建测试电路可大幅减少测试时间,并做到全速(at-speed)测试。
PLL具有混合讯号的特性(如时序;timing),因此内建自我测试电路的设计,并不如纯数位电路那般容易与成熟。目前已有专利内建自我测试技术,来解决PLL的测试问题。图三为内建式抖动量(jitter)量测电路之设计方块图[5];此设计可以整合于压控震荡器(Voltage Controlled Oscillator;VCO)或PLL之系统晶片中,以减少量测时输出入接脚或环境杂讯的干扰。根据抖动量的常用的定义,本技术把统计分析的运算设计在电路中,不但可以量得周期抖动量(period jitter)与长时间抖动量(long-term jitter),且不需再输出资料做复杂的统计分析。
相较于其他已知的技巧,本技术之抖动值量测技术,巧妙地运用测试整合法与测试消去法(test integration & test subtraction),以得到更高的精确度与准确度。并且采用全数位设计(all digital standard cell base design),以提高可靠度(reliability)与抗杂讯的能力(noise immunity),所以本技术可适用于不同的制程。此外,量测电路本身亦已植入了可测试设计,可保障抖动值量测电路的可信度。
Memory Testing
随着制程的进步,记忆体在晶片中的比例越来越高,也因此严重影响了晶片的良率。记忆体设计者通常会设计备用的记忆体(备用的列记忆体及行记忆体)来替代损坏的记忆体以提升该记忆体的良率[6-8]。然而加入备用记忆体会增加整体记忆体的面积,对良率也有负面的影响。此外,不同的备用记忆体架构将直接地影响记忆体的修复率,以及内建的备用记忆体分析(Built-In Redundant Analysis;BIRA)电路的面积。此外,为了找出合理代价之下的最大良率,备用记忆体分析(Redundancy Analysis;RA)也成为一个重要的课题。
传统上,处理备用记忆体修复的RA是由测试机台(Automatic Test Equipment;ATE)来运算的,但是嵌入式记忆体的分析及修复很难用ATE来处理。因此内建自我测试与诊断(BIST/BISD)、内建备用记忆体分析(BIRA)及内建自我修复(Built-In-Self-Repair;BISR)渐渐受到重视。以下将介绍BISR架构以及BIST模组与开电源(power-on)之BISR流程。
整个内建式自我修复方法架构如(图四)所示,主要由主记忆体、备用记忆体、BIST、BIRA模组及包装电路(wrapper)所组成。 BIST电路可以用来侦测主记忆体及备用记忆体的错误,而BIRA电路则是根据所提出之RA演算法来决定备用记忆体的取代,包装电路则是用来切换记忆体处于测试/修复与正常工作两种不同模式。
(图五)为开电源(power-on)之BISR流程图。在记忆体的生产过程中,如果备用记忆体发生错误,却将其拿来修复主记忆体,将会发生严重的后果,而开电源BISR流程,就是用来解决这个问题。其流程如下:电源开启后BIST模组会先测试备用记忆体,如果侦测到备用记忆体上有错误时,便会传送一讯号给BIRA模组将此错误的备用行记忆体或列记忆体标记成错误。完成备用记忆体测试之后,BIST模组将会开始测试主记忆体。如果主记忆体侦测到错误时,将会启动BIRA模组并进入RA的流程。 RA流程便会决定该使用备用的行(column)记忆体或列(row)记忆体来修复该错误,再传送一个讯号给BIST模组继续未完的测试。但如果此时已经没有备用的行或列记忆体时,便会传送一个讯号给外部,标明此记忆体已无法修复。
BIST模组区块如(图六)所示,主要由一控制单元(CTR)及一测试讯号产生器(TPG)所组成。控制单元用以接收并处理测试命令,并传送讯号给测试讯号产生器来产生对应之讯号。而控制单元的设计为一有限状态机,当侦测到错误时,TPG会先暂停并传送讯号给BIRA模组,待RA完毕之后,BIRA模组会再传送讯号给TPG以继续未完的测试。
BIRA模组如(图七)所示,由处理单元(PE)以及位址对应单元(ARU)所组成。其中处理单元(PE)是使用有限状态机的方法实现,用以侦测记忆体错误以及判别是否有剩余的备用记忆体可用。若有多余的备用记忆体,便使用它去修复所侦测到的错误,并传送讯号给BIST模组;反之,若已无备用记忆体时,处理单元会进入输出错误的状态并传送讯号给外部。
而位址对应单元(ARU)是用来储存截至目前为止错误单元的位址,并比较目前所测到的错误单元位址与之前储存的位址是否相同。在测试/修复模式时,BIST模组会先测试备用记忆体,如果备用记忆体侦测到错误时,位址对应单元会接收并标记有错之备用记忆体,然而在测试主记忆体的过程中,遇到要修复的行或列时,便将该位址储存于ARU中的行及列位址中。在正常工作模式要存取记忆体时,送入的位址将会和之前存在储存单元中的位址相比较。如果比较结果和之前储存于储存单元中相同的话,信号产生器将触发控制讯号来重新配置主记忆体和备用记忆体之间的输出输入,借此来替换主记忆体中含有错误的细胞。
SoC Testing
Low Power Testing
近年来由于SoC已渐成设计主流,测试时功率消耗所产生的问题已大受重视,这可由最近数年内相关之研究论文急遽增加看出。测试时的功率消耗多寡对测试品质的影响如下所述[9]:
- (1)在测试时若产生较大的平均功率消耗,则可能因而导致温度升高,造成待测电路的可靠性降低。
- (2)为了电路能在正常模式下运作,晶片中各个子电路的分布及power supply/ground 脚位均设计成能承受尖峰功率的消耗,但其设计未必能承受因测试过程中所产生的尖峰功率消耗。如果进行测试时尖峰功率太大,则较大的电流流经power/ground lines,可能会造成power/ground bounce现象,而产生的noise将可能改变待测电路的逻辑状态,导致测试结果的误判。
- (3)若是测试功率消耗过大,则必须要加强晶片封装或脚位对功率的承受能力,或是另外增加冷却装置(cooler),这些必定会增加晶片的整体制作成本。
接着我们将针对扫描测试方式介绍一种可降低测试功率消耗的技术。不同于以往的技术,此技术不仅可降低测试功率消耗,亦可以降低测试应用时间,且只需要极少的硬体负担(hardware overhead)。此技术的基本观念,是只需要对部分的暂存器进行扫描及压缩测试向量,以达到降低测试时间及功率消耗。为了配合此扫描架构,我们提出一测试向量产生过程,去产生适合此架构所需要的测试向量[10]。其中测试向量产生过程包含以下五个步骤:
- (1)Compatible Set Identification:首先对内部暂存器执行输入脚位缩减(inputs reduction)步骤,以得到相容的输入脚位集合(compatible set)。
- (2)Test Generation with Scan Constraints:根据第一步骤之输入脚位缩减结果再进行ATPG产生过程,并得到一组初始的测试向量。在进行ATPG过程中,将配合测试向量产生软体对扫描暂存器加入观察的条件限制(constraints)。
- (3)Reorder the Bit Positions of Test Vectors:根据所产生测试向量资料,再建构扫描线的过程中,将相同数值的扫描暂存器做相邻的排列。
- (4)Test Vector Reordering:根据相容的输入脚位集合的资料执行测试向量排序,其步骤如(图八)所示。在此例子中,test set A被区分成四组,而V1、V5、V6、V11和V12之所以被区分在同一组,是因为它们的(d1 d2)的数值相同。
- (5)Complete Test Set and Patterns Compression:针对上述步骤无法侦测到的错误另行产生测试向量,因此可侦测到所有可测到的错误,并压缩所产生的测试向量以减少所需之测试应用时间。
用(图九)说明所提出之扫描硬体架构。首先对所有的扫描暂存器增加disable的功能,其中控制信号DIS_1可同时控制扫描线(SC_CS1, SC_CS2)的动作,当DIS_1执行时,扫描暂存器将不接受新的输入资料而保持其本身的数值。扫描线(SC_ICS)输出及SC_CS1输出是经由扫描输出线(scan_output)将测试结果输出至外界观察。在此测试架构中,并不需要对测试结果(test response)加入额外的硬体电路,也不需要进行测试结果压缩(compression)。此外在此架构中,我们使用SE和SEL输入控制讯号来控制整体的测试运作。当SE=0及SEL=1时,电路操作于正常模式下,当SE=1时,则进入测试模式,并配合SEL的输入信号,选择不同的测试结果输出外界观察。由实验结果可知,相较于传统的扫描方式,目前的技术可有效地降低扫描测试所需之测试时间及功率消耗。
Software-based Self Testing
通常,在SoC中可能会具有一或多个可程式化的元件(如MPU or DSP);测试此类型可程式化元件复杂度极高且测试方式多数仍是采用完全扫描(Full scan)与ATPG的方式。然而其测试时间与测试所需容量,是与电路中正反器与输出入数目成正比变化,甚至有些SoC的设计,测试机台已无法满足测试的需求了。虽然有人提出以数位逻辑的内建自我测试(logic BIST)技术来解决机台的问题,但它必须面对的是额外硬体负担过高、错误涵盖率偏低(lower fault coverage)等等问题。
软体自我测试(software-based self testing;SWB)即是一套新的测试技术,来解决上述必须面对的问题[11-14]。系统中的处理器(MPU or DSP)不但可以测试本身的好坏,同时可以测试晶片上的其他元件,达到自我测试的功能。此技术的最大优点在于可以减少额外的测试成本和面积。
由于在SoC中的模组是不容易由外接的IO直接测得,因此要先将其待测模组(Module Under Test;MUT)进行分割,并在电路外围加上“虚拟限制电路(Virtual Constraint Circuit;VCC)”;VCC即是来模拟此待测模组在SoC中对其他模组的连线和沟通协定。接着,再将MUT连同VCC一起合成,进行ATPG,产生测试图样,然后把所得到的模组层测试样本转换成指令层的测试程式,并做错误涵盖率的分析。最后,在测试时,载入这些指令来测试此模组。
就软体自我测试技术而言,VCC的合成对于ATPG的错误涵盖率有着重要的影响。由于VCC是用来模拟待测模组和其他模组的讯号的传递和沟通行为,因此VCC将避免ATPG软体产生错误或是不存在于指令集的测试图样。如(图十),由待测电路之输入端的VCC可以知道,VCC有着解码指令集的功能,且它扮演一个很重要的角色,可以在测试该模组时,帮助module-level的测试图样转换成instruction-level 的测试程式(test program);换句话说,若在合成VCC时,限制条件不完整的话,不但会产生指令集无法转换的测试图样,更会影响待测模组的测试效果。
![《图十 Virtual Constraint Circuit基本架构》](/art/2005/05/051128445253/p10.gif)
《图十 Virtual Constraint Circuit基本架构》 |
|
SoC Test Integration
目前的单晶片系统中,包含了不同厂商的IP电路。因此,需要一个新的测试架构来整合SoC的测试。而IEEE P1500的目的即在制定核心电路的测试架构标准[15],此标准必须包括:
- (1)定义embedded cores及system chip间的测试界面。
- (2)建立embedded cores之存取(access)及隔断(isolation)机制,使得这些cores本身所设计的测试向量(test pattern)与程序可重复使用。
- (3)可测试core与core间的连线及测试各种UDL(User Defined Logic)。
- (4)可以将符合P1500标准的core以随插即用(plug-and-play)的方式整合于系统晶片中,有效改善系统整合者与厂商间的测试问题。
IEEE P1500对其标准范围的界定亦相当清楚,其只对核心电路周围之存取及隔断机制建立标准,包括接脚之协定(protocols)及测试模式之控制机制。但系统晶片本身之测试存取机制(Test Access Mechanism;TAM)则留给系统晶片整合者来设计。另外核心电路本身之BIST、Scan、IDDQ等测试架构,则给核心电路设计者去设计,P1500仅负责支援、启动及控制这些测试电路与完成其测试动作。 P1500测试架构标准如(图十一)所示。
P1500之串列存取机制(WSI、WSO)是强制规范好的,但因串列式存取机制仅有单一的资料输入和输出线,在测试时间上显然无法满足单晶片系统的需求,所以P1500标准亦支援并列式测试存取机制。不过此并列式存取机制在P1500的规范里,并未规范如何实现,而是由系统整合者自行定义。目前TAM的设计方式大略可归纳为:(1)Daisy Chained TAM、(2)Bussed TAM、(3)Direct Access TAM [16]。
纵观目前P1500 SoC测试规划中,重点着重在wrapper部分的规范。这部分的规范,与IEEE 1149.1极为相似,必须使用3~4 bits的指令暂存器(Instruction Register; IR)做为指令的存放,如(图十二)左图。若将IR降为1 bit,如图十二右图,并如图中的配合Combination Logic,有效的缩短测试时间。除此之外,尚可对测试排程进行有效的规划,以缩短测试所需的时间与花费。
![《图十二 传统设计(左)与IR reduction(右)的比较》](/art/2005/05/051128445253/p12.gif)
《图十二 传统设计(左)与IR reduction(右)的比较》 |
|
结语
本文介绍了目前国内在可测试设计技术方面的研发成果。从这些技术不难发现,SoC的核心电路测试已趋势朝向自我测试的趋势。至于在整个SoC的测试方面,尽管目前P1500尚未正式成为SoC测试标准,但是此方式确实可以解决目前SoC内部的核心电路不易测试的问题。此外,如何透过自动化技术来整合SoC里所有核心电路的测试,包括整个SoC的测试策略、wrapper与测试控制电路的生成与连结,以及将核心电路的测试图样自动转换成晶片对外I/O埠输入/输出的格式等等,都是未来还需要努力的目标。
(作者任职于工研院系统晶片技术发展中心设计自动化部可测试设计课,本文原文曾刊载于该中心《系统晶片》技术期刊)
<参考文献
[1] Roy, A., Sunter S., Fudoli A., Appello D., "High accuracy stimulus generation for A/D converter BIST", International Test Conference, Proceedings. pp. 1031-1039 , 7-10 Oct. 2002.
[2] Hao-Chiao Hong, Jiun-Lang Huang, Kwang-Ting Cheng, Cheng-Wen Wu and Ding-Ming Kwai, "Practical considerations in applying Sigma-Delta modulation-based analog BIST to sampled-data systems", Circuits and Systems II: Analog and Digital Signal Processing, IEEE Transactions on , Volume: 50 Issue: 9, pp.553-566 , Sept.
[3] Yeong-Jar Chang, Soon-Jyh Chang, Jung-Chi Ho, Chee-Kian Ong, Kwang-Ting Cheng and Wen-Ching Wu, "Built-in High Resolution Signal Generator for Testing ADC and DAC", International Symposium on VLSI Technology, Systems, and Applications, pp. 231~234, October 2003.
[4] Yeong-Jar Chang, Soon-Jyh Chang, Chee-Kian Ong, Jung-Chi Ho, Ting Cheng,Jiun-Lang Huang, Wen-Ching Wu, "BIST for the embedded ADC in ADSL SoC", The 13th VLSI Design/CAD Symposium, August 2002.
[5] Yeong-Jar Chang, Shen-Tien Lin, Kun-Lun Luo and Wen-Ching Wu, "A Testable BIST Design for PLL", The 2003 VLSI Technologies, Systems and Applications, 2003.
[6] S. E. Schuster, "Multiple word/bit line redundancy for semiconductor memories", IEEE Journal of Solid-State Circuits, vol. 13, no. 5, pp. 03, Oct. 1978.
[7] M. Horiguchi, J. Etoh, M. Masakazu, K. Itoh, and T. Matsumoto, "A flexible redundancy technique for high-density DRAM's", IEEE Journal of Solid-State Circuits, vol. 26, no. 1, pp. 12--17, Jan. 1991
[8] Kim, Y. Zorian, G. Komoriya, H. Pham, FP Higgins, and JILL Lewandowski, "Built in self repair for embedded high density SRAM", in Proc. Int. Test Conf. (ITC), Oct. 1998, pp. 1112--1119.
[9] P. Girard, "Survey of low-power testing of VLSI circuits," IEEE Design & Test Computers, vol. 19, pp. 82-92, 2002.
[10] Ji-Jan Chen, Kun-Lun Luo, Yeong-Jar Chang and Wen-Ching Wu. A Novel Scan Design for Reducing Test Application Time and Power Dissipation. Proc. of VLSI/CAD Symposium, 2004.
[11] L. Chen, S. Ravi, A. Raghunathan and S. Dey, "A Scalable Software-Based Self-Test Methodology for Programmable Processors," DAC, 2003.
[12] L. Chen and S. Dey, "Software-Based Diagnosis for Processors," DAC, 2002.
[13] J. Huang, M. Iyer and K.-T. Cheng, "A Self-Test Methodology for IP Cores in Bus-Based Programmable SoCs," VLSI Test Symp., 2001.
[14] W.-C. Lai and K.-T. Cheng, "Instruction-Level DFT for Testing Processor and IP Cores in System-on-a-Chip," DAC, 2001.
[15] http://grouper.ieee.org/groups/1500/
[16] Goel, S.K.; Marinissen, E.J, " Effective and efficient test architecture design for SoCs", Test Conference, 2002. Proceedings. International, 7-10 Oct. 2002 Pages:529 - 538>
|
![](/images/arrow.gif) |
学界、业界现今在开发一套技术,以针对SoC进行整合测试,也就是所谓的P1500标准,而为了描述P1500标准,也同时发展出另一套测试语言CTL(Core Test Language)。相关介绍请见「SoC整合测试技术探索──P1500与CTL简介」一文。 |
![](/images/arrow.gif) |
随着IC产业朝向0.13微米以下线宽与千万闸级以上的SoC趋势发展,EDA工具的配合对于IC设计业者来说重要性日益显著;本文将位读者剖析目前IC设计工具的技术趋势与挑战。你可在「IC设计工具技术趋势与探索」一文中得到进一步的介绍。 |
![](/images/arrow.gif) |
借助于EDA技术,可以实现可测试性设计自动化,提高电路开发工作效率,并获得高品质的测试向量,从而提高测试品质、低测试成本。在「可测试性设计与EDA技术」一文为你做了相关的评析。 |
|
|
![](file:///E|/易立達/hopenet-mag/images/misc_spacer.gif) |