专注于射频工程师,天线工程师和电子硬件工程师的培养
首页 > 技术文库 > 硬件设计 > 可编程逻辑 > SoC设计中结构测试仪的矢量生成原理

SoC设计中结构测试仪的矢量生成原理

时间:2020-12-13 点击:
深亚微米和纳米设计中出现了新的缺陷类型,单开发和使用功能性矢量已经无法满足对产品测试的实际需求。扫描、AC扫描、逻辑内建自测试(LBIST)和存储器BIST这类结构测试方法为理解设计规范、识别生产和设计中的缺陷、描绘和监控产品生产过程以及加速产品上市提供了一种更加有效的方法。

现代矢量生成技术通过采用比过去更多的故障模型,能够在短得多的进度时间内利用更少的测试矢量完成故障覆盖率更大的测试。然而,既采用功能测试矢量也采用其他测试矢量又会带来新的问题,例如矢量数目增多、不同类型的矢量(功能性矢量和结构矢量)应如何选择和组合、如何支持各种各样的故障和缺陷类型、如何决定测量的规格和品质,以及如何将这些测试矢量应用到现代ATE中去。

现代设计过程要求针对不同目的采用多种不同类型的测试矢量,因此矢量提供已不再是一个简单的程序。矢量的用途贯穿了整个设计、验证、质量缓慢提高(ramp up)和生产过程,甚至在附加的库描述、工艺描述、故障分析、老化测试(burn-in)和硅片级评估等方面都有其作用。但最常见的矢量应用还是测试程序。1965年,Gordon Moore提出了著名的摩尔定律“每18个月处理能力将翻一番”,这一定律对矢量也同样适用。根据已应用的矢量数目的增长曲线,我们已经得到了包含上亿个测试矢量的测试程序。

什么是测试矢量?

矢量的一个基本定义是:矢量是每个时钟周期应用于器件管脚的用于测试或者操作的逻辑1和逻辑0数据。这一定义听起来似乎很简单,但在真实应用中则复杂得多。因为逻辑1和逻辑0是由带定时特性和电平特性的波形代表的,与波形形状、脉冲宽度、脉冲边缘或斜率以及上升沿和下降沿的位置都有关系。在ATE(自动测试设备)语言中,这些波形是通过上升和下降沿加上器件管脚对建立时间和保持时间的要求这种格式化描述方式表示的。RZ(归零)、NRZ(非归零)和环绕补码(SBC,surround by complement)信号就是几个用来表示逻辑1和逻辑0的不同信号波形的例子。

数据波形和定时波形中的一个难点就是在一个周期中精确、准确和清晰地定位波形上升沿和下降沿的位置。昂贵的传统ATE通常通过采用增大长度来支持这一功能,同时,增大长度还有利于评估那些带高速接口的各部分之间的准确I/O定时。

结构测试仪

结构测试仪是一种新型ATE,它通过优化其操作和特性集来支持“结构测试”范例,从而降低传统ATE的相关成本。结构化优化是指设计测试仪时,更多地考虑到扫描矢量和BIST矢量应用的方式——扫描方式采用直线矢量,在位移过程中利用一组已经定义好的扫描通道,以低数据率进行评估;BIST则采用芯片内部提供的矢量序列,通过一个片上PLL,BIST可以实速运行,但唤醒时必须采用一个慢速声明信号加一个慢速报告和/或成功-失败(pass-fail)信号。若BIST需要实速运行或需要进行数据率过高的AC操作(超出测试仪所能提供的数据率),可采用矢量对时钟,该时钟能刚好产生一个实速时钟周期而不影响应用于管脚处的数据。

此外,不论用作驱动还是用来进行比较/捕获,结构测试仪均支持比传统ATE更大的存储器。

测试矢量从何而来?

现代测试程序中使用的测试矢量有三个基本来源:大多数功能矢量由循环仿真(cycle-ized simulation)生成;几乎所有扫描矢量均由测试模式自动生成(ATPG)或工程设计自动化(EDA)工具生成;而JTAG、逻辑BIST和存储器BIST这类专门技术矢量则由目标EDA工具生成。此外还有第四类直接在ATE上生成或直接由人工操作员生成的矢量,本文对此类矢量不作讨论。

功能矢量

功能矢量也叫行为矢量或操作矢量,这种矢量通常由HDL或RTL行为模型仿真得到。行为仿真后得到一个文件,其中既包含激励也包含电路响应。之所以采用行为模型仿真是因为它代表了最快的仿真方式,而细节信息越多,仿真越详细,运行仿真所需的时间就越长。最常见的用作测试矢量的仿真输出是VCD(Verilog Change Dump)文件。而实际上,验证仿真是一种“基于事件”的仿真,它能够识别观察点的逻辑改变,但ATE并不能使用这种仿真。理想的方法是将这种仿真与一个时钟联系起来应用,从而产生一个与 “测试仪周期”有关,并且同步于“测试仪周期”的输出文件。这种方法叫做“环化 (cyclization)”。但不论是行为仿真还是验证仿真,不论是否采用环化方式(cyclized),要想将这些“格式化设计”矢量应用到目标ATE中,都必须对其进行翻译。如果仿真矢量没有采用环化方式,那么翻译过程就会复杂很多。通过翻译,可以把与每个时钟周期相关的数据映射为目标测试仪所支持的波形。

通常,想要将功能矢量应用到一台ATE上时总会出现一个问题,因为功能矢量需要多种“边缘集”或“定时集”的支持。所谓“边缘集”或“定时集”指的是在某个给定的模式下可能与一个给定管脚有关的多种不同的定时方式(每种不同的电平、边缘位置、周期、脉冲宽度等都代表了一组不同的边缘集或定时集)。原始仿真都是事件驱动的,翻译时必须为目标模式指配波形,不同的模式通常需要不同的波形。但有时,某部分的设计允许当数据发生改变时,在几个时钟周期之间,在某个给定的管脚上执行多项不同的非同步操作(例如控制一个纹波计数器或one-hot状态机)。

功能矢量是针对行为模型构造的,设计功能矢量的目的是利用其对事务处理、操作或逻辑设计设定的行为进行练习。这是对被测设计的门级或电路图级的一级抽象,是对其物理层、布线层或硅片层的二级抽象。要评估功能矢量的质量,必须对其评分,或者利用故障模型在门级对其进行“故障仿真”,或利用缺陷模型在物理层对其进行仿真。而最常用的评分方式则是利用绑定(stuck-at)故障模型进行仿真。此外,在对功能矢量进行评分时还需要进行另一种仿真,那就是针对门级模型的仿真。然后,根据仿真的结果选取那些能够达到最佳故障覆盖率,或能达到目标覆盖率的矢量或模式,而剔除那些覆盖率冗余的模式(所谓覆盖率冗余,指并未发现任何独特的或新的故障)。

在现代的复杂设计中,基本的“结构级”或“示意图级”验证都采用更高效的基于扫描的绑定矢量来进行生产测试和质量评估,功能矢量就只能用于定时、速度性能或频率验证了。但即使是在这种用法上,功能矢量也面临基于扫描的矢量的挑战。

功能矢量也能在结构测试仪上使用,但结构测试仪是针对扫描类矢量更简单的应用格式和更低的数据率进行了优化的,因此功能矢量在用于结构测试仪上时,必须对其所支持的边缘集/定时集的数目加以限制。

结构矢量

随着IC密度和复杂性日益增大以及上市时间持续缩短,继续追求传统的功能测试方法就变得前景堪忧。设计和测试团队在上市时间的压力下,对操作系统所知更少的情况下,必须在更短时间内增大故障覆盖率,并考虑更多的故障类型。他们怎么可能在这样的环境中抽出时间来为复杂SoC开发功能测试矢量(我们购买第三方的IP内核不也是因为我们不具备自己设计这种内核的时间和专业技术吗)?

在IC设计量日益增大的情况下,结构化测试方法为我们提供了一种更加有效的选择。采用结构化测试方法时,工程师使用的是基于硅片结构验证的故障模型,而不是基于硅片行为验证的测试矢量。这种测试通过静态绑定(static stuck-at)故障模型就可以完成。门和连线通过芯片中的DFT来校验,而自动矢量生成和矢量评分则由EDA工具来处理。测试过程如下:首先在门的输入赋一个值,将疑似缺陷节点的值绑定为与其应有值相反的值(例如将1强加给一个绑定0的节点),然后在支撑门的输入赋一个值,使前面的值能够传递到观测点。如果观测点的值与期望值不同,那么就认为检测到一个故障。

虽然结构化测试法并不是什么新方法,但它已经开始成为一种越来越受欢迎的测试方法,原因是:1. 自动化EDA工具能够用比生成传统功能测试矢量更短的时间生成结构测试矢量;2. 已经有一些EDA工具能够针对绑定、延迟、桥接、开路、存储器缺陷、泄漏和其他的复杂故障模型来生成矢量,这些故障模型可使测试变为更高层次的品质测试。并且这类相关工具也对生成与扫描、内建逻辑自测(BIST)、存储器GIST和Iddq(泄漏测试)相关的逻辑有所帮助。

此外,结构化测试中使用的矢量均非常灵活,而且也携带了更多固有的设计信息。这一优点对基于IP内核的IC设计而言非常关键。有了更全面的测试矢量,工程师就能在对芯片了解更少的情况下组织测试、开发测试程序并进行诊断。而且,如果工程师们正确地贯彻了结构化测试的整个结构,就能利用较少的测试矢量达到较大的测试覆盖率。

结构测试法假设在芯片内插入有DFT功能,而且要求严格遵守设计规则中的测试规则。采用这种方法的开发人员必须延长其时间进度,将添加和验证DFT以及运行ATPG所需的时间考虑进去。有些人认为DFT和ATPG很费时间,这种想法是错误的,因为事实上DFT和ATPG正在取代过去通常在下单后才完成的一些任务。其实,相对于在后设计阶段再来生成功能矢量并编写测试程序而言,将这些任务调整到设计早期来完成能够节省相当多的时间。

采用结构矢量进行测试还有另一个优点,那就是现今的所有主流EDA工具都是以IEEE 1450.1标准规定的STIL(标准测试互换语言)输出的,而如今的结构测试仪可以直接理解这种设计语言,无需翻译,这就消除了测试程序开发过程中错误的一个主要来源,解决了一个大难题。

绑定(stuck-at)扫描矢量

最常见的一种结构矢量是扫描矢量。绝大多数扫描矢量都是由ATPG工具生成的DC扫描矢量或绑定扫描矢量。如果被测设计是一个全扫描设计,那么所有触发器都是扫描结构的一部分,都被组织后编入扫描链,或编入可从该部分的管脚处直接访问的扫描移位寄存器中。这时,矢量生成是组合进行的。如果被测设计是“大部分扫描”或“局部扫描”设计,那么有一些触发器就不属于扫描链,这时矢量生成就必须包含序列分析功能(即矢量生成器必须清楚应怎样使触发器工作)。另外,如果扫描矢量被用来测试或验证设计在实速运行时的特性或行为,或者设计的AC特性或行为,那么要么必须进行一次顺序时间帧分析,要么必须进行一次伪顺序时间帧分析,以生成实速样本周期。

如果扫描矢量是随机创建的(即分配给扫描链元素的值是随机的逻辑值),那么不论这些矢量是来自测试仪还是片上模式发生器(例如一个线性反馈移位寄存器,LFSR),这一应用都被认为是一次BIST。许多时候,扫描矢量是由某些确定性的工具创建的,所谓确定性是指这些矢量都是针对某些特定的故障而开发的。绑定故障模型是最简单的ATPG故障模型,在这种模型中,逻辑电路的一个网点或一个节点(门的输入或输出)必须被指定一个绑定0或绑定1的条件(就好像这个网点或节点被短路到VDD或VSS一样)。在测试这一网点或节点时,必须将其输入驱动到与其绑定值相反的值上(即绑定1的节点或网点必须被驱动为逻辑0),而将疑似缺陷节点的值唯一地连接到一个观测点(只有当错误的结果被传送出来时,观测点才能观测到)。而且还要将逻辑1赋给AND型逻辑的off-path输入,将逻辑0赋给OR型逻辑的off-path输入,借此开通信号的传输通道,从而使故障演练能够完成(图2)。

如果故障后果的前向追踪过程以及使能和故障演练路径的后向追踪过程都得出了结论,那么就可以认为逻辑值要么在输入管脚处结束,要么在扫描触发器内结束。用于实施扫描链中所分布测试的数据比特叫做“测试立方(test-cube)”,其他比特可以进行随机填充(padding)。扫描链可以以任何频率填充,其工作频率通常只有几十兆赫兹。一旦某个状态被加载到扫描链之后,扫描使能信号就被取消,以允许出现为期一个时钟周期的“功能响应”,然后再次打开扫描使能,将这次“取样”的结果移出。移出的结果中能够表现测试结果的那些数据比特叫做“有效位”。

AC扫描矢量

随着深亚微米(DSM)和纳米制造工艺不断发展,工艺改变和工艺缺陷已经成为与定时相关的故障条件产生的主要因素。因此,绑定模型开始使某些特定设计市场上的芯片得免除更大量的测试。但在深亚微米和纳米设计中,一个象绑定模型一样的静态故障模型是不可能描述所有故障的。相比而言,动态评估延迟故障模型更好。

延迟故障模型与绑定型故障模型非常相似,但前者内嵌有定时特征,当它发现一个定时上的缺点时,它会将其转换为一个布尔错误(即在采样时刻,观察点会出现一个错误的逻辑值)。有一种延迟故障模型叫做门延迟故障模型或转换(transition)延迟故障模型。这种模型可以用一个门元件的管脚值来表示,它具备慢升(STR)或慢降(STF)逻辑转换特性,或者可以说它的传输延迟远大于正常值。另一种延迟故障模型是“路径(path)”延迟故障模型,它和门延迟故障模型类似,但它是通过一条包含几个门和几个节点连接的传输路径工作,而且它要到某个已知路径的最后一个门才具备慢升和慢降特性。

许多种造成定时不确定行为的缺陷都可以用延迟故障模型来建模。其中包括:阻性栅极氧化物短路和掺杂不足,这两种缺陷会导致晶体管开关速度变慢;布线错误,包括过孔断路和过孔堵塞以及走线断路或畸形的(例如狗骨形),这种布线错误会导致传输路径受阻。金属桥或短路线连接可能会与其他信号产生竞争,因而也可以用延迟模型建模对其建模。此外,还有一种必须接受评估的“软故障”条件,那就是由互电容引发的串扰类信号完整性问题。

一些其他的缺陷也可能造成逻辑上类似延迟的行为,例如在电源通路无法提供足够能量以驱动逻辑模块时出现的电源垮降,或在时钟树驱动器的驱动能力不足或时钟边沿速率重叠时造成的时钟衰弱。这其中有一些延迟十分微小,当他们出现在非关键路径中时可能不会被发现。这种微小的延迟看似一种可接受的缺陷或故障,但它们却可能最终导致芯片出现可靠性问题,或是引发额外资源泄漏之类的一些其他缺陷。

AC扫描就是为达到验证定时一致性的目的,而利用基于扫描的技术来实现实速采样周期。AC扫描也可以用来验证频率一致性(速度分级)、管脚定义一致性(IO定时)或者检查由制造引入的延迟缺陷。工程师们验证频率一致性的方法是保证生产后,设计中,凡是在规定范围内的所有关键的定时通路都满足他们对硅片级的规定要求。而这一分析是在对每一个端点进行分析的基础上进行的(一个端点就是一个寄存器或一个输出管脚),采用从静态定时分析(STA)中提取的关键路径。而管脚定时规范的规定,例如输入建立时间、输入保持时间以及输出有效时间,都是通过保证每个管脚上最坏情况下的最长路径和最好情况下的最短路径都在规定的建立-保持定时范围内来实现的。与进行频率验证和管脚验证时一样,为了定位出现延迟缺陷的位置,需采用AC扫描来测试每个端点上的大量路径,只是需注意,有些非关键路径也可能因为存在延迟而变成关键路径。

以上两种AC扫描故障模型中,转换延迟模型能够检测门和网点处的STR和STF信号,更适合测试总延迟,而路径延迟模型能够检测一条经过完整描述的,由多个网点和门组成的路径上的STR和STF信号,更适合监测关键路径上的微小延迟。二者结合起来就能完成所有定时和频率验证任务。

对转换延迟故障模型和路径延迟故障模型都可以进行分析,并且可根据对矢量对的需要在两个时间帧内完成这两种模型分析。第一个时间帧用于建立错误值并发起一次转换,第二个时间帧用于捕捉转换的结果。所有公开可用的ATPG工具从一段时间以前,就都开始支持这种对转换进行的触发-捕捉分析了。AC扫描中采用的矢量生成技术已经成熟,但其应用却仍不够成熟。

绑定扫描和AC扫描的主要区别在于时钟定时。能实现时钟定时的方法有很多种,但此处只需要一个实速时钟脉冲。多路D触发器型扫描的测试时钟通常采用系统时钟,而LSSD型扫描的测试时钟则通常采用专用的测试时钟。时钟定时原本应该并不复杂,但现代的设计中多存在多个时钟区域、多种时钟频率、由时钟演变而得的时钟,以及庞大的可能负荷有上万个寄存器的时钟分布树,这就使得时钟设计决不可能简单了事。 对有些器件而言,大多数常用测试仪的时钟定时能力已经能够满足要求,在测试这样的器件时,测试所使用的时钟通常由芯片外部,经由系统时钟管脚灌入芯片内部,既用做移位时钟也用做捕捉时钟。这种定时方式对那些工作在200-400MHz以下的设计是相当简单的。然而当测试仪的定时能力无法满足器件对频率的要求时,或者当需要添加昂贵的高速焊盘才能从芯片外部引入时钟时,最常用的办法就是利用片上的锁相环或延迟锁相环(DLL)提供系统时钟。这时,外部提供的时钟更符合测试仪的定时能力,只作为参考时钟;作用于系统(很多时候也作用于扫描结构)的内部时钟是PLL提供的时钟。在这种情况下,实速移位和采样耗费的功率就成了人们最关心的问题。扫描转换(toggling)的功耗可能超过预计值,但为解决“测试功耗”问题而对这部分进行额外仔细的设计并不经济,而且可能导致晶圆尺寸过大。要解决这一问题,可以只提供一个频率较低的移位时钟,然后再允许使用一个实时采样时钟。为器件提供这种类型定时时钟的方法有很多。

还有一个与时钟定时相关联的问题,那就是扫描移位使能(SE)信号的声明和消除。“移位时触发”和 “捕捉时触发”这两种方法均能解决SE信号的应用问题。所有主流EDA矢量生成(ATPG)工具都支持这两种方法,但它们各有各的折衷和局限。

LOS技术和LOC技术

业界对这两种方法有一种普遍的误解,认为不论LOS还是LOC方法都可以用在现有的设计扫描结构上。这种看法是错误的。因为应用不同的方法时,物理扫描结构(即扫描位的顺序和扫描使能)会有不同的要求。LOS方法不论表面看起来还是实际运作起来都与常规DC扫描十分相似,只是采样间隔有所不同。采用LOS法时,首先向扫描链中压入一对测试矢量,为扫描链中的倒数第二次移位(第n-1次移位)安排一个状态。最后一次移位会复制所有的状态数据,并从触发位开始触发。然后将扫描移位使能信号取消,这时,采得的样本就是捕捉到的值。ATPG工具很容易计算出应该为扫描链中剩余的n-1个空间安排怎样的状态。

对于那些应用频率较低的设计,移位时钟和采样时钟可采用同一频率,整个操作看起来与绑定扫描别无二致。而对于那些频率要求较高的设计,则可以采用较慢速度进行移位操作,然后在最后一次移位和采样操作之间开始引入实速周期。如果实速周期比移位周期的时间间隔要短,那么这种技术就叫做周期切换(cycle-switching)或叫做周期缩短(cycle-shrinking)。如果通过控制占空比来实现实速周期,到达最后一次移位时,启动时钟出现在本周期的后部分,而捕捉周期的捕捉时钟出现在下一个周期的前半部分,那么这种技术就叫做时钟交替(clock-chopping)或占空比调制(duty-cycle modulation)。LOS技术中关键的问题就在于SE信号必须在最后一次移位和引入实速采样时钟之间被取消。在高频情况下,这一要求就可能导致SE信号变成一个十分关键的信号,无法再由测试仪提供。这时就只能将其看作一个时钟,为它建立一个分布树,并且在可能时将其寄存在芯片内部(这又给ATPG工具带来了一个问题)。

与LOS处于竞争低位的LOC方法其实是由LOS衍变而来的,只是LOS只需一个采样周期就可完成,而LOC需要两个采样周期。首先要将一个状态扫描入被测部分,然后进行一次采样,改变寄存器中的触发位,然后再进行第二次采样,捕捉转换后的实时结果。与LOS类似,采样时钟也可以用作实时时钟,或时钟交替和占空比控制。但与LOS最大的不同是,LOC只要求“俘获时触发”时钟为实时时钟,而且SE信号在前一个时钟周期内就已经被取消,不会变成关键信号。

LOS和LOC各有其优缺点,但总的来说,他们对软件ATPG工具或对硬件扫描结构都是比较有利的。二者相比而言,LOS在ATPG工具上比较容易实施,因此运行时间比较短,矢量紧缩度也较好。但要求移位位具备独立性(这就可能导致扫描路线不是最佳路线)才能保证故障覆盖率较高,LOC则要求ATPG工具进行更多操作(即运行时间更长、矢量紧缩度更差),但并不要求在扫描链中进行任何比特排序。而且采用LOC方法后,可以进行更大面积的硬件优化。

扫描结构

扫描结构的配置会对矢量的最终形式和它们对ATE存储器大小的要求产生至关重要的影响。尽管结构测试仪是针对扫描矢量优化过的,但仍不能排除产生阻碍矢量使用或使矢量使用复杂化的配置或条件。例如创建一种要求以PLL频率(可能在几百兆赫兹范围)进行移位操作的扫描结构,或者需要多种边缘集的扫描结构。有的扫描结构对存储器的要求甚至可能超出当前结构测试仪所支持的深度扫描驱动存储器。

过去,由于对扫描矢量存在一些普遍的误解和实现上的问题,构造出的扫描结构效率较差,所以人们总认为扫描矢量很难管理。例如,若在一条扫描链上放置6万个触发器,以便将需要的专用测试管脚数缩减到两个(一个用作扫描数据输入,另一个用作扫描数据输出),结果测试仪只能使用一个数据通道,这时,如果采用2,000个扫描矢量,那么这个数据通道就需要12亿时钟周期的存储能力。

但EDA扫描插入工具已经日益成熟,人们也开始了解扫描测试法能够带来的经济效益,因而,更高效的扫描结构随之产生。许多扫描链都放弃了专用的测试管脚,转而开始使用借用的输入和输出管脚,而各扫描链本身也被配置得更加平衡(即所有的扫描链都被配置成同样大小)。此外,还有一些其他优化措施,如将时间域分割后划入扫描域、不再支持加载和停放(load-and-park)以及将扫描长度变为可配置。

为保证扫描结构能够提供矢量,同时也为了保证所生成矢量的安全性,在矢量生成过程中采用了许多测试规则(DRC):禁止驱动竞争、禁止时钟信号用作数据也禁止数据用作时钟并且不支持组合反馈。

在已经出现的问题中,纳米技术对扫描结构的影响是最应引起注意。因为在纳米工艺中,布线缺陷是最常见的问题,而扫描则是一种对布线十分敏感的结构。现代设计中常会出现大量这样的问题:由于扫描链断裂而导致扫描链受阻,数据移位被迫停止,或者扫描链出现保持时间问题,从而导致比特跳过和数据模糊出现。要解决这些问题,就需要创建一种新的矢量来验证扫描链并对其进行快速诊断。

本文小结

对尺寸和复杂度均惊人的现代ASIC和SoC而言,要想实现全面测试,使其达到我们要求的品质等级,必须采用一个相当可观的测试矢量阵才行。今天的设计测试既需要功能矢量也需要结构矢量,必须将二者结合起来使用。然而事实已经证明,在矢量生成、故障覆盖率,甚至在应用中,结构化方式都比功能化方式更有效。采用结构矢量需要DFT支持,但在芯片中插入DFT的技术和生成矢量的技术都已经成熟起来,所有主流EDA厂商都支持这两种功能。

CopyRight © 2009-2021,易迪拓培训 All Rights Reserved,沪ICP备05048810-2号 版权所有

网站地图

Top