法律状态公告日
法律状态信息
法律状态
2015-04-29
未缴年费专利权终止 IPC(主分类):G01R31/3185 授权公告日:20130403 终止日期:20140310 申请日:20110310
专利权的终止
2013-04-03
授权
授权
2011-09-28
实质审查的生效 IPC(主分类):G01R31/3185 申请日:20110310
实质审查的生效
2011-08-17
公开
公开
技术领域
本发明涉及系统芯片(SoC)测试技术领域。
背景技术
在工程设计中引入“系统芯片”(System-on-Chip,SoC)可以简化设计,缩短产品上市时间,并且增加系统稳定性。然而随着SoC规模增大,SoC测试逐渐成为其制造过程中的瓶颈,SoC测试费用也不断增加。而SoC测试时间则是影响SoC测试成本和效率的重要因素。
SoC测试通常包括三部分:测试访问机制(TAM)、测试封装(Wrapper)、测试调度(Scheduling)。测试访问机制描述IP(Intellectual Property)核的测试端口如何被外界访问,测试封装则是为IP核外加一层接口以实现特定的TAM,最后测试调度描述了IP核测试的先后顺序。
文献Vikram Iyengar,Krishnendu Chakrabarty and Erik Jan Marinissen,Test Wrapper andTest Acces Mechanism Co-Oprimization for System-on-Chip(针对SoC的测试封装及测试访问机制的联合优化)Internationl Test Conference 2001,该文献中提出了一种基于BFD(BestFit Decrease)的算法,该BFD算法最初被设计用于解决装箱问题。该方法提出比较早,而且具有运行效率高、结构简单等优点,因此被广泛采用。该方法的缺点是:BFD算法并不具备全局优化的能力。运用该方法将IP核内部扫描链逐条添加到Wrapper扫描链上时,只考虑当前每条Wrapper扫描链长度,而没有一个全局性的指导原则。因此BFD算法最后得到的是局部最优解,而在某些情况下,局部最优解不等同于全局最优解。该文献所介绍的方法具有简单、高效的优点,但不具备全局优化的能力。
为了克服上述基于BFD算法的不具有全局优化这一缺点,文献Niu Daoheng,WangHong,Yang ShiYuan,Cheng BenMao,Jin Yang,Re-Optimization Algorithm for SoCWrapper-Chain Balance Using Mean-Value Approximation(基于平均值近似的SoC扫描链平衡算法)Tsinghua Science and Technology 2007 July P61~66提出一种基于平均值的Wrapper扫描链平衡算法实现SOC测试的方法。对于一个特定的IP核及给定的Wrapper扫描链数目,该算法首先计算Wrapper扫描链长度平均值,然后以这个Wrapper扫描链长度平均值作为全局指导原则,将内部扫描链分别添加到Wrapper扫描链上。因此,对于某给定的IP核,按照基于平均值的Wrapper扫描链平衡算法,最理想的结果就是最后每条Wrapper扫描链长度均相等且等于其平均值。但是在实际处理问题过程中,最后Wrapper扫描链很少有机会每条均相等且等于平均值。更实际的情况是,Wrapper扫描链的最终长度在其平均值附近波动,波动大小由Wrapper扫描链平衡算法及IP核的内部扫描链长度等因数共同决定。
另外上述的基于平均值的Wrapper扫描链平衡算法实现SOC测试的方法并不总是优先处理当前最长内部扫描链,这样做带来诸多弊端。该种方法虽然具有全局优化的能力,但是它并不总是优先处理当前最长内部扫描链,而且其全局优化的指导原则并不贴近实际情况。
发明内容
针对现有SoC测试中的测试封装扫描链平衡方法中存在的不足,本发明提供了一种SoC测试中的基于平均值余量的测试封装扫描链平衡方法。
本发明所述的SoC测试中的基于平均值余量的测试封装扫描链平衡方法的过程为:
首先,计算Wrapper扫描链长度平均值;
然后,根据获得的长度平均值确定误差限,所述误差限为所述长度平均值的1%至3%;
最后,根据所述误差限及Wrapper扫描链长度平均值计算得到取值区间,把该取值区间作为全局优化的指导原则,实现测试封装扫描链平衡。
上述计算Wrapper扫描链长度平均值的过程可以为:
步骤A1、根据公式获得IP核内部扫描链长度之和Lsum;L是所有IP内部扫描链的集合,L1表示集合L内的第一个元素,len(L)表示集合L内元素的数目,Llen(L)表示集合L内最后一个元素;
步骤A2、根据公式Smean=Lsum/len(S)获得Wrapper扫描链长度平均值Smean;S是Wrapper扫描链集合,Slen(S)表示Wrapper扫描链集合内最后一个元素。
所述误差限Err为1%Smean至3%Smean。
根据所述误差限及Wrapper扫描链长度平均值计算得到取值区间的过程可以为:
根据所述误差限,获得误差上限为Sup=Smean(1+Err),误差下限为Sdown=Smean(1-Err),所述取值区间为[Sup,Sdown]。
所述根据取值区间作为全局优化的指导原则,实现测试封装扫描链平衡的过程为:
步骤C1、将集合L降序排列获得降序排列后的集合L,同时将集合S清零;
步骤C2、依序从降序排列后的集合L内取一个数Li,并将其添加到集合S中同时满足两个条件的第一个Si中;所述两个条件为:Si<Sdown和Sj+Li≤Sup;如果集合S中不存在满足上述条件的元素Sj,则将Li添加到S集合中最小的Sj中;
步骤C3、对集合S内的元素降序排列获得降序排列后的集合S,然后,返回执行步骤C2,直到取完集合L内的所有元素,再执行步骤C4;
步骤C4、将IP核的每个双向端口作为长度为1的扫描链,然后,逐一将每一个双向端口添加到集合S中最小的Sj中,获得新集合为SL;
步骤C5、将IP核的每个输入端口看成长度为1的扫描链,然后,逐一将每个输入端口均添加到集合SL的最小值的Sj中,获得输入扫描链集合SI;
步骤C6、将IP核的每个输出端口作为长度为1的扫描链,然后,逐一将每个输出端口添加到集合SL的最小值Sj中,获得输出扫描链集合SO。
在SoC测试中,无论测试访问机制、测试封装及测试调度机制如何工作,SoC测试最终都需要落实到对单个IP核进行测试。如果每个IP核的测试时间都相应有所缩短,则整个SoC的测试时间必定缩短。
本发明采用Wrapper扫描链平衡算法的原理实现缩短单个IP核测试时间这一目标,进而缩短SoC测试时间。
鉴于Wrapper扫描链的最终长度是在其平均值附近波动的,因此,本发明不是把Wrapper扫描链长度的平均值作为全局优化的指导原则,而是把Wrapper扫描链长度平均值附近的某一个范围(例如平均值±1%)作为全局优化的指导原则,这样更贴近实际,并且能够达到很好的技术效果。
附图说明
图1是IP核扫描插入模型。
具体实施方式
具体实施方式一、本实施方式所述的SoC测试中的基于平均值余量的测试封装扫描链平衡方法的过程为:
首先,计算Wrapper扫描链长度平均值;
然后,根据获得的长度平均值确定误差限,所述误差限为所述长度平均值的1%至3%;
最后,根据所述误差限及Wrapper扫描链长度平均值计算得到取值区间,把该取值区间作为全局优化的指导原则,实现测试封装扫描链平衡。
本实施方式所述的扫描链平衡方法以Wrapper扫描链长度平均值附近的一个范围作为全局优化的指导原则,使其更贴近实际情况,并且本算法始终优先处理当前最长内部扫描链。
本实施方式中,计算Wrapper扫描链长度平均值的过程可以为:
步骤A1、根据公式获得IP核内部扫描链长度之和Lsum;L是所有IP内部扫描链的集合,L1表示集合L内的第一个元素,len(L)表示集合L内元素的数目,Llen(L)表示集合L内最后一个元素;
步骤A2、根据公式Smean=Lsum/len(S)获得Wrapper扫描链长度平均值Smean;S是Wrapper扫描链集合,Slen(S)表示Wrapper扫描链集合内最后一个元素。
本实施方式中,所述误差限Err为1%Smean至3%Smean。
本实施方式中,根据所述误差限及Wrapper扫描链长度平均值计算得到取值区间的过程可以为:
根据所述误差限,获得误差上限为Sup=Smean(1+Err),误差下限为Sdown=Smean(1-Err),所述取值区间为[Sup,Sdown]。
本实施方式中,所述根据取值区间作为全局优化的指导原则,实现测试封装扫描链平衡的过程为:
步骤C1、将集合L降序排列获得降序排列后的集合L,同时将集合S清零;
步骤C2、依序从降序排列后的集合L内取一个数Li,并将其添加到集合S中同时满足两个条件的第一个Sj中;所述两个条件为:Sj<Sdown和Sj+Li≤Sup;如果集合S中不存在满足上述条件的元素Sj,则将Li添加到S集合中最小的Sj中;
步骤C3、对集合S内的元素降序排列获得降序排列后的集合S,然后,返回执行步骤C2,直到取完集合L内的所有元素,再执行步骤C4;
步骤C4、将IP核的每个双向端口作为长度为1的扫描链,然后,逐一将每一个双向端口添加到集合S中最小的Sj中,获得新集合为SL;
步骤C5、将IP核的每个输入端口看成长度为1的扫描链,然后,逐一将每个输入端口均添加到集合SL的最小值的Sj中,获得输入扫描链集合SI;
步骤C6、将IP核的每个输出端口作为长度为1的扫描链,然后,逐一将每个输出端口添加到集合SL的最小值Sj中,获得输出扫描链集合SO。
步骤C4中,逐一将每一个双向端口添加到集合S中最小的Sj中,获得新集合为SL的过程为:将第一个双向端口添加到S中最小的Sj中,获得新的集合SL,然后将第二个双向端口添加到新的集合SL中最小的Sj中,再次获新的集合SL,如此重复,直到所有双向端口均添加完毕,获得最终的新集合SL。
步骤C5中,逐一将每个输入端口均添加到集合SL的最小值的Sj中,获得输入扫描链集合SI的过程为:将第一个输入端口添加到集合SL中最小的Sj中,获得输入扫描链集合SI,然后将第二个输入端口添加到输入扫描链集合SI中最小的Sj中,再次获得输入扫描链集合SI,如此重复,直到所有输入端口均添加完毕,获得最终的输入扫描链集合SI。
步骤C6中,逐一将每个输出端口添加到集合SL的最小值Sj中,获得输出扫描链集合SO的过程为:将第一个输出端口添加到集合SL中最小的Sj中,获得输出扫描链集合SO,然后将第二个输出端口添加到输出扫描链集合SO中最小的Sj中,再次获输出扫描链集合SO,如此重复,直到所有输出端口均添加完毕,获得最终的输出扫描链集合SO。
Wrapper扫描链平衡介绍:因为SoC芯片的对外引脚数目有限,不可能把IP核的所有测试端口均引到外部引脚上,所以在实际的测试过程中通常将IP核的测试端口串成几条扫描链,通过这些扫描链将测试向量输入测试端口。参见图1所示,为IP核扫描插入模型示意图,根据该模型可得:
输入扫描链长度=内部扫描链长度+输入端口链长度;
输出扫描链长度=内部扫描链长度+输出端口链长度。
IP核测试过程为:
第一步:在测试时钟作用下,测试向量通过输入扫描链被输送到IP核测试端口;
第二步:当测试向量被输送到测试端口之后,IP核的工作状态就确定了,让IP核在该状态下工作一个周期,同时捕获IP核在该状态下的测试响应;
第三步:在测试时钟的作用下,通过输出扫描链将测试响应移出。
设IP核一共包含P组测试向量,测试时钟周期为Ttest。为了缩短测试时间,可以在移出当前测试响应时,同时移入下一组测试向量,这一操作所需时间为:T1=Smax×Ttest。那么,只有在第一次移入测试向量时与输出扫描链无关,所需时间为:T2=SImax×Ttest;以及最后一次移出测试响应时与输入扫描链无关,所需时间为:T3=SOmax×Ttest。每移入一组测试向量,都需要IP核工作一个周期以捕获测试响应,当一共有P组测试向量时,这部分的时间为:T4=P×Ttest,SImax是最长输入扫描链,即SImax=max(SI);SOmax是最长输出扫描链,即SOmax=max(SO);Smax是最长扫描链,即Smax=max(SImax,SOmax)。
因此,IP核的测试时间为:
T=(P-1)×T1+T2+T3+T4=Ttest[P×(Smax+1)+min(SImax,SOmax)],
由上式可知,缩短SImax、SOmax可以缩短IP核测试时间。因此Wrapper扫描链平衡算法的主要目标就是缩短SImax、SOmax,本实施方式所述的方法就是能够缩短SImax、SOmax。
为了缩短IP核的测试时间,测试人员需要对IP核做扫描链平衡处理,具体处理过程为:IP核供应商向SoC设计人员提供IP核时,同时提供该IP核的测试信息,包括:输入端口数目、输出端口数目、双向端口数目、IP核内部扫描链数目及内部扫描链长度。SoC设计人员需要把这些测试端口串联成Wrapper扫描链,同时在Wrapper扫描链数目确定的前提下,尽量缩短其长度。
例如,对于ITC′02SOC Test Benchmarks中的d695.soc内Module 4,假设SoC设计人员需要将该IP核封装成2条Wrapper扫描链。已知Module 4有36个输入端口,39个输出端口,4条长度分别为54、53、52、52的内部扫描链,没有双向端口。那么SoC测试人员合理的做法是这样的:
第一步:将4条内部扫描链首尾相连成2条长的内部扫描链,其长度分别为54+52与53+52。
第二步:将输入端口串联成2条长度均为18的输入端口链,然后把这2条输入端口链分别添加到那2条长的内部扫描链上,这样就得到2条输入扫描链,其长度分别为54+52+18=124及53+52+18=123。
第三步:将输出端口串联成2条输出端口链,其长度分别为19及20,与第二步类似,将输出端口链也添加到那2条长的内部扫描链上,这样就得到2条输出扫描链,其长度分别为54+52+19=125及53+52+20=125。
如果IP核还包含双向端口,那么双向端口也要被串联成2条扫描链,并添加到Wrapper扫描链上。
下面提供一种实现本实施方式所述方法的伪代码:
上述伪代码的算法复杂度分析如下:
第1行代码为求和,其算法复杂度为O(len(L))。
第2~5行代码的运行时间为常量。
第6行代码为排序算法,若采用二分的思想,则该过程的复杂度为O(len(L)log(len(L)))。
剩下的代码可以看成这样的一个整体过程:从L内取一个元素,在将其添加到S的某个数当中,该过程最坏的情况就是L内的每一个元素均遍历S内的所有元素,其复杂度为O(len(S)len(L))。
由上述分析可获得所述伪代码的算法复杂度为:
O(len(L)log(len(L))+len(L)(len(S)+1)),它和文献文献Niu Daoheng,Wang Hong,YangShiYuan,Cheng BenMao,Jin Yang,Re-Optimization Algorithm for SoC Wrapper-ChainBalance Using Mean-Value Approximation(基于平均值近似的SoC扫描链平衡算法)Tsinghua Science and Technology 2007 July P61~66中介绍的扫描链算法的复杂度一致。相比文献Vikram Iyengar,Krishnendu Chakrabarty and Erik Jan Marinissen,Test Wrapper and TestAcces Mechanism Co-Oprimization for System-on-Chip(针对SoC的测试封装及测试访问机制的联合优化)Internationl Test Conference 2001中介绍的算法复杂度,仅仅只增加一个求和分量O(len(L)而已,因此从复杂度上分析,本算法并不比现有两种算法复杂,即采用上述伪代码不会增加硬件资源的占用和增加程序运行时间,但却能达到了减少测时间的技术效果。
机译: 基于扫描的自动测试图案生成(ATPG)测试电路,使用该测试电路的测试方法以及扫描链重新排序方法
机译: 基于扫描的自动测试码型生成(ATPG)测试电路,使用该测试电路的测试方法以及扫描链重新排序方法
机译: 用于控制测试扫描链中的可平衡锁的测试模式的装置和方法。