☰
IC测试向量与Pattern转换全解析:从STIL/WGL到ATE平台的最后一公里
2026/10/6 1:09:21 网站建设 项目流程

我先说一个很多测试工程师都经历过的事情:仿真波形明明是对的,ATPG也生成了向量,但文件一导入ATE平台,要么报错,要么跑出来的结果对不上,最后折腾半天发现是Pattern转换环节出了问题。在这个行业里,什么都好聊,一聊IC测试向量和Pattern转换,总能勾起大家的痛苦回忆。

这篇内容我会从“测试向量到底是个什么东西”讲起,把WGL、STIL、ATE原生Pattern之间的区别理清楚,然后完整走一遍Pattern转换的流程,最后对比UltraFlex、J750、V93K、T2000这几个主流ATE平台的Pattern格式差异。不管你是刚接手测试开发的工程师,还是被Pattern导来导去折磨过的老手,这篇都值得收藏。

1. 先搞清楚你在转什么:测试向量的本质和那些“接近但不等于”的文件

很多人一上来就打开转换工具、点导入导出,但连Pattern的本质是什么都没完全吃透。这个时候出问题,你根本分不清是工具的问题、格式的问题,还是自己设计的问题。

1.1 仿真波形、WGL/STIL、ATE Pattern三者到底是什么关系

打个比方:仿真波形是设计阶段的“草稿”,告诉你这个芯片在某种激励下应该有什么响应;WGL和STIL是DFT工具根据测试逻辑自动生成的“标准施工图”;ATE的Pattern文件则是测试机台能直接执行的“指令清单”。

它们描述的是同一件事——在什么时间点、把哪个引脚拉到什么电平——但颗粒度完全不同。

仿真波形(比如VCD、FSDB)记录的是所有信号的逻辑变化,属于“信息完整但极度冗余”的格式。一个中等规模的SoC,跑上几毫秒的仿真,VCD文件动辄几个GB,鲁棒性极差,根本不适合直接送给ATE。

WGL和STIL则是面向测试的标准化格式。它们聪明地做了抽象:用“周期(Period)”、“沿(Edge)”、“电平(Level)”这些概念来描述激励和期望响应,并且通过“重复(Repeat)”、“宏(Macro)”等机制把测试向量的体积压下来。

ATE Pattern是最终的执行格式。它已经不再是通用的文本描述,而是针对某个平台的内存深度、时序精度、通道数量优化过的具体数据,可能是文本(如UltraFlex的.ascii),可能是二进制(如V93K的.dat),也可能是混合格式。

1.2 Pattern的一行数据在ATE上到底怎么执行

我拿最简单的数字测试向量来拆解。一个Pattern串(Burst)里,每一行通常包含这么几个要素:

  • 时间点:基于Pattern周期的相对时刻,比如第0ns、第5ns、第9.5ns。
  • 通道状态:对应每个测试通道的电平状态,常见的有D(驱动高)、L(驱动低)、Z(高阻/三态)、X(比较窗口开启但不关心结果)、H(期望读到高)、L(期望读到低)等。
  • 方向控制:对于双向引脚,还需要单独的位来控制方向切换的时间点。

一个Pattern向量行在ATE上的执行过程是:在指定时刻,硬件把数据送到通道驱动比较电路;驱动沿输出激励,比较沿捕获DUT的响应,如果捕获到的电平和期望值不一致,就会产生Fail。

1.3 为什么Pattern文件动辄几百MB:压缩、宏展开和数据存储深度

真正做过量产测试的人都知道,Pattern文件大得离谱。全扫描链的测试向量动辄数十万甚至上百万个周期,如果每一个转变都完整展开,文件大小会非常恐怖。

所以转换器和ATE平台都引入了压缩机制:

  • Repeat机制:连续相同的向量行可以只存一次,加一个重复次数。
  • Macro/Subroutine机制:把固定的时序波形(比如扫描链的Shift序列)定义成宏,在Pattern里反复调用。
  • 硬件压缩/解压:ATE平台本身也支持MISR(多输入特征寄存器)、LFSR(线性反馈移位寄存器)等内建自测试电路的向量压缩,但这类向量通常需要配合片上解压逻辑来使用,不是所有Pattern都能用。

这里要提醒一句:压缩是在“可读性”和“存储深度”之间做权衡。转换时如果只追求文件小,把宏定义写得太深,到了ATE上反而会因为取指开销、宏调用栈限制而跑不起来。

1.4 这些文件谁生成的:DFT工具链的产出来龙去脉

Pattern的源头是DFT(可测试性设计)工具链。常见的EDA工具,比如Synopsys的TetraMAX/TestMAX、Cadence的Modus、Siemens EDA的Tessent,都会在做ATPG(自动测试向量生成)之后,把测试向量导出为WGL或STIL格式的文件。

这里面有个比较关键的点:ATPG工具导出的是“逻辑视角”的向量,它不知道物理管脚叫什么名字、不知道你的测试板怎么连线、也不知道ATE通道怎么分配。它只知道自己内部模拟的那个网表上的信号名。

所以就有了接下来要说的“最后一公里”问题。

2. 从EDA到ATE的“最后一公里”:为什么STIL/WGL不能直接上机

有个误区我得先纠正:就算你的ATE平台号称“支持STIL原生导入”,你也大概率不能直接把TetraMAX吐出来的STIL文件拉上去就跑。不然转换工程师这个岗位早就不存在了。

2.1 STIL和WGL的身世

WGL是Waveform Generation Language的缩写,出身比较早,最早流行于TSSI和早期DFT工具时代,后来Synopsys的TetraMAX也支持输出WGL。它的语法相对简单,描述波形和向量。

STIL是Standard Test Interface Language,IEEE 1450标准。它比WGL规范得多,把信号定义、时序定义、向量定义、扫描定义等拆分成独立的Block,结构清晰,可扩展性好。现在的DFT工具链和新平台几乎都优先支持STIL。

但注意,STIL标准本身也分很多子规范,比如STIL 1450.1用于DC扫描、STIL 1450.6用于CTL(Core Test Language)。不同工具吐出来的STIL,写法上千差万别。标准只是给了大家一个参考框架,不代表互操作是零成本的。

2.2 STIL不能直接上机的五个原因

我把STIL/WGL和ATE原生格式之间的差距总结成了五层“隔阂”,每一层都会导致转换失败或结果不对:

隔阂类型具体表现潜在后果
管脚映射STIL里的信号名(如pad_data7)和ATE通道名(如CH_104)没有对应关系信号错位,测试全错
时基单位STIL里用的TimeScale可能是1ps或1ns,ATE精度按ps或0.01ns划分,换算错误时序全面偏移,Pattern白转换
电平域STIL只写了VIH/VIL/VOH/VOL逻辑电平,ATE还需要知道驱动电流、负载、比较钳位等物理参数电平设置异常,测试结果失真
测试意图扫锚链的Shift/Capture状态、宏调用、压缩展开逻辑扫描链Pattern无法正确展开
多工位单芯片的向量要复制到4-site/8-site并行站点间Pattern数据不匹配

2.3 转换工具的现实形态:没有银弹,只有链路

做Pattern转换,目前现实中的做法有三类:

  1. ATE厂商自带转换器:泰瑞达的IG-XL、爱德万的Smartest等软件都内置Pattern导入工具,能读入STIL/WGL的一部分子集。优点是和平台匹配度高,缺点是支持度有限,复杂Pattern经常要手动调整。
  2. EDA工具的转换选项:TetraMAX等工具导出时可以选目标格式,但只解决“导出”问题,不解决“上机”问题。
  3. 内部脚本工具:很多公司会基于Perl/Python写一套私有转换脚本,把STIL解析成中间格式,再生成各个ATE平台的目标格式。这看起来最麻烦,但通用性最好,也是我最推荐投入的方向。

2.4 “半标准化”的现状

说句实话,这个行业没有银弹。STIL标准是有了,但各个ATE平台对STIL的“方言变体”支持程度不同:有的支持Signals里的ScanIn/ScanOut属性,有的不认识;有的要求时序块必须展开成周期内所有沿,有的允许缺省。

所以“标准化”这三个字,在Pattern转换这个场景里,基本等于“大家用的是同一个词,但各自的语法略不一样”。理解了这一点,你后面遇到的所有诡异报错就都能淡定了。

3. 完整走一遍Pattern转换流程:从读入STIL到生成ATE可执行向量

下面我用一套通用的转换流程来演示。不管目标平台是什么,核心步骤都是这五步:Pin Map映射、Timing解析、Level设置、向量本体处理、生成上机文件。

3.1 第一步:Pin Map映射文件怎么对应

Pin Map文件(有些平台叫Map File,有些叫Assignment File)的核心作用,是把STIL里的逻辑信号名对应到测试系统实际的物理通道。

举个例子,STIL里有这么一段:

Signals { pad_clk In; pad_data7 InOut; pad_reset In; }

而ATE上实际的通道分配可能是:

CH_001 → pad_clk CH_002 → pad_reset CH_010 → pad_data7 CH_011 → pad_data7 (差分? 不,这是同一个信号的双通道绑定)

转换器要做的就是建立这个映射表。看起来简单,坑却很多:

  • 大小写敏感:有些平台不分大小写,有些分,一旦混了,导入时静默失败。
  • 信号名超长:STIL信号名可能有几十个字符,ATE平台可能截断到16字符,名字一变,引用关系就乱了。
  • 差分对:高速信号可能有正负两支,Pin Map需要把两支绑定到一个逻辑信号上,并且正确分配正沿/负沿。

实操建议:不要相信自动映射。写一个脚本,从STIL的Signals块和ATE平台的Pin Map文件各提取一份信号列表,做diff检查,把不匹配项全部高亮出来,再手动确认。

3.2 第二步:Timing语义如何解析

Timing是Pattern转换里最核心、最容易出错的部分。

STIL里一个典型的Timing块长这样:

Timing { WaveformTable wft_main { Period '20ns'; Waveforms { pad_clk { 01 { '0ns' 0/'10ns' 1/'20ns' 0; } } pad_data7 { Z { '0ns' Z; } } } } }

意思很明确:周期20ns,时钟引脚在0ns拉低、10ns拉高、20ns再拉低。

ATE平台上需要把它翻译成“驱动沿信息”和“比较沿信息”。关键参数包括:

  • 周期(Period):对应ATE的PerPin周期或系统周期。
  • 驱动沿(Drive Edge):引脚状态从上一个值切换到当前值的时间点。
  • 比较沿/窗口(Compare Edge/Window):ATE采集DUT输出的时间窗口,通常在期望响应波形里定义。

这里最容易翻车的是“沿必须在周期内按时间顺序排列”。STIL允许你写一个周期内的多个沿,但ATE硬件可能要求沿列表按时间升序、且不能有重叠。转换时如果没排序或合并,导入直接报错。

另外,Period的单位也要格外注意。STIL里可以指定TimeScale,比如TimeScale 1ns,那么20就代表20ns;如果某个工具默认TimeScale 100ps,那就是2ns。单位差一位,整个Pattern的时序就全乱了。我会在第五部分专门讲这个坑。

3.3 第三步:Level与测量条件

Level是很多人容易忽略的环节。STIL里通常只描述逻辑状态(0/1/Z),具体物理电平是在ATE的Level Setup里配置的。

转换时你至少需要确认以下几项:

  • VIH/VIL:输入驱动高/低电平,通常和DUT的供电电压VDD相关。
  • VOH/VOL:输出期望高/低电平,来自DUT规格书。
  • VT/比较钳位:有些平台用电压比较器做窗口比较,需要设置比较阈值。
  • 负载条件:如Load 50pF或Load 1kΩ,影响驱动波形上升沿。

这里有一个常见的知识盲区:仿真里的逻辑1在ATE上不一定等于VIH。有时候DUT驱动能力不足、板上走线电容过大,导致输出电平在比较窗口内没有稳定到VOH之上,ATE会判定为Fail。这种问题通常不是Pattern的错,而是Level设置不合理。转换时一定要同步核对Level,不能只看波形。

3.4 第四步:向量本体处理和压缩展开

向量本体是Pattern文件里最庞大的部分。STIL里向量可能是这样组织的:

Vector { '0ns' { pad_reset = 1; } '20ns' { pad_clk = 0; pad_data7 = Z; } Capture; }

或者扫描链测试里用宏调用:

Macro Shift_1 { Vector { ... } } Vector { Shift_1; Shift_1; Capture; }

转换要做的事情有这么几件:

  1. 展开宏:把每个宏调用的向量序列展开成具体的行,或者保留宏定义但转成ATE平台的Subroutine格式。
  2. 处理Repeat:把连续的重复向量合并成Repeat指令,减少文件体积。
  3. 处理扫描链:扫描链的Shift、Load、Unload语义要精确翻译成ATE上的连续时钟驱动和数据串行输入输出。
  4. 展开压缩向量:如果ATPG做了测试向量压缩(比如使用了片上解压逻辑),转换时需要把压缩后的数据展开成硬件可执行的Pattern,或者保留压缩格式并对接平台的解压配置。

这一步对工具要求最高。需要说明的是,很多压缩向量展开是DFT工具和ATE平台共同完成的,转换脚本只负责格式翻译,不能改动数据内容。

3.5 第五步:生成上机文件和校验

生成目标平台的Pattern文件后,验证工作比生成工作更重要。

一个可靠的验证流程至少包含三层:

  1. 语法级验证:用ATE平台软件的离线导入/编译功能做dry-run,确认没有语法错误。
  2. 语义级回放:如果能导出波形,把ATE Pattern的关键周期波形和仿真波形做对比,确认沿位置、电平、期望值一致。
  3. 硬件级小批试跑:在一个site上先跑少量向量,确认能够稳定Pass/Fail,再做全量Pattern和全site并行。

我见过不少人跳过第2步,直接上机,结果Pattern在低良率批次上死活不过,最后发现是某个比较沿差了0.5ns。省掉的验证步骤,最终都会以Debug时间的方式还回来。

4. 主流ATE平台Pattern格式横向对比:UltraFlex、J750、V93K、T2000

聊完共性,咱们来看差异。很多人对“转格式”这件事印象停留在“换了个文件后缀”,其实完全不是。不同ATE平台的Pattern格式存储方式、时序精度、宏能力、压缩策略都不同。

4.1 四大平台的Pattern格式和软件生态一览

我直接用一个表格说明:

平台厂商软件框架Pattern文件格式特点
UltraFlexTeradyneIG-XLASCII.ascii/ 二进制.bin基于IG-XL,宏定义能力强,支持高级时序功能
J750TeradyneIG-XL (支持J750)Waveform.wav/.pat中低端量产利器,波形格式直观但文件体积偏大
V93KAdvantestSmarTest / Stylus.pat+.dat/.bin模块化架构,Pattern数据用二进制存,存储深度极大
T2000Advantest程序生成器.stil-like原生支持STIL语义,但对复杂宏支持有限

这里要特别说明一下,J750的.wav格式和UltraFlex的.ascii格式虽然都是文本,但语法完全不同。如果你把J750的格式直接丢给UltraFlex,大概率是导入失败;反之也一样。

4.2 时序精度、存储深度和宏能力的对比

从硬件层面看,各平台的时序能力和存储深度差异很大:

  • UltraFlex:以高通道数、高时序精度著称,支持非常复杂的per-pin timing set切换、edge placement精度可以达到几十ps量级。它的Pattern格式里,每个pin的驱动沿/比较沿可以独立定义,灵活性很高。
  • J750:定位中低端量产,时序精度相对粗一些,但胜在稳定可靠、使用成本低。它的.wav格式是按周期组织的,读起来很直观,但遇到超复杂时序就得依赖IG-XL的宏系统。
  • V93K:新一代(如V93000)的Pattern数据采用二进制格式存储,文件读入、传输效率高,存储深度也非常可观。配合SmarTest,宏和测试向量的管理能力很强。
  • T2000:架构相对特殊,它的软件环境更贴近STIL语义,但真正用起来,大家还是喜欢先做一层转换和校验。

对Pattern转换来说,有个比较现实的差异是:二进制格式(V93K)对解析工具不太友好,你要做文本级别的diff、检查、debug会比较麻烦,通常得借助平台自带工具导成文本才能看。而文本格式(J750 wav、UltraFlex ascii)在调试阶段稍友好一些,但文件体积大,传输和导入也慢。

4.3 同一份STIL走四个平台的差异

假设你手里有一份TetraMAX生成的STIL文件,包含一条扫描链Pattern,想要分别烧到四个平台上,实际工作量是完全不同的:

  • UltraFlex:IG-XL的Pattern Import工具对STIL的支持相对成熟,导入后基本能生成主Pattern,但宏调用、scan配置需要人工检查。如果时序块定义不标准,可能需要手动重建WaveformTable。
  • J750:导入时容易遇到WGL/STIL的宏定义和J750的waveform模板不匹配的问题,通常需要先用IG-XL的Pattern Wizard重新定义波形表,再导入向量。
  • V93K:SmarTest的Pattern Import工具支持STIL,但生成的dat文件是二进制的,debug时必须用Unload命令转回文本,步骤多一步。好处是导入性能好,大文件也不怕。
  • T2000:原生STIL语义听起来很美好,但实测下来,它对“非标准”STIL的宽容度较低,必须在源头上保证STIL符合特定子集规范,否则解析直接卡死。

所以,我之前给团队的建议是:先确定你的主要量产平台是哪个,让DFT工具在导出时就朝着这个平台的STIL子集去写,减少后续转换的额外修正。有些公司会把不同平台的STIL“方言”整理成规范文档,反向要求DFT工程师在TetraMAX导出时选对选项,这是一个很有效的管理动作。

4.4 多工位并行的Pattern共享问题

另一个容易被忽略的差异是多工位(Multi-Site)并行。Pattern文件本身是单芯片的,要跑在32-site的测试板上,需要把每芯片的波形数据复制到每个站点。

不同平台的实现方式不同:

  • UltraFlex/J750:IG-XL用“Site Map”机制,一个Pattern源文件可以映射到多个site,站点间数据共享同一份Pattern存储,复制成本低。
  • V93K:多site通过Pattern数据映射和通道映射实现,但Pattern的存储深度按site分配,如果配置不对,可能出现“站点数量增加导致单站可用的Pattern深度下降”这类诡异现象。

转换时如果发现“多加了一个site,Pattern就跑不完整”,优先检查的是这个,而不是重新转换Pattern。

5. 转换与Debug中最容易翻车的几个地方:我踩过的坑和处理方法

讲了这么多,最后放点实战经验。我说的这些坑,几乎每次流片测试都会有人踩一遍,早看到早避免。

5.1 时间单位错位:一个乘除法引发的“血案”

有一年在导一个DDR接口测试的Pattern时,所有功能测试都过了,就是Timing相关的边缘测试一直Fail。查了很久,最终发现是STIL里的TimeScale是1ps,而转换脚本里默认按1ns解析了。所有沿时间都偏了1000倍,等于整个Pattern的时序全部错位。

从那以后,我在所有转换脚本的第一行都加了单位断言:读取STIL头部的TimeScale字段,如果不是预期值直接报错终止,不允许带病转换。

单位检查的优先级应该最高,因为它不会报语法错误,只会让测试结果全部不对,而且你根本想不到去找它的茬。

5.2 X态处理:仿真里的“未知”不能直接搬到ATE上

VCD仿真里,X代表未知状态;STIL里也允许出现X。但到了ATE上,“未知”这个状态没有物理对应——你不能让ATE去“比较一个未知值”。

转换时需要把X拆成两类处理:

  • 输入方向的X:通常改成驱动0或1,具体取决于该信号在测试向量中有没有作用。如果X是初始化状态,就按复位时序驱动成确定的0。
  • 输出方向的X:通常改成关闭比较窗口,或者用Don't Care语义处理,让ATE不去判断这个时刻的电平。

但麻烦的是,ATPG工具生成的STIL里,X态的语义可能非常复杂,需要结合上下文判断。我就遇到过X出现在双向引脚上,转换工具默认把它当三态处理,但DUT实际上在驱动它,导致测试输出全Fail。这种问题靠自动转换脚本很难完全解决,所以导入完成后,手工抽查几条含X态的向量是很有必要的。

5.3 双向引脚方向控制:方向位错一个周期,整条扫描链全废

双向引脚(InOut)在Pattern转换里特别容易出错,因为方向控制的语义在两个CAD工具和ATE平台之间没有统一标准。

在STIL里,一个InOut引脚的状态集合通常包含DRIVE0、DRIVE1、Z,但方向切换和驱动数据变化的时序关系可能有两种写法:

  1. 方向和电平同时更新;
  2. 方向先更新,电平后更新。

如果转换工具没搞清楚该平台到底支持哪种方式,出来的Pattern在高速双向总线上就会出现总线冲突或读数错位。

我的处理方法是:在转换后的文件里搜索所有InOut引脚的相关向量行,人为检查方向切换的时刻是否与数据变化错开至少一个保护间隔。这个操作很笨,但能救命。

5.4 压缩向量展开后的容量与执行时间矛盾

有的ATE平台支持硬件向量压缩展开,但展开后的Pattern在平台上实际运行时,执行时间可能比预想的要长。原理是:压缩向量需要片上解压逻辑配合,而解压逻辑往往要跑额外的时钟周期。

这里的矛盾在于:ATPG生成的压缩向量是从“减少测试数据量”的角度优化的,但没有考虑ATE上解压操作的时钟开销。有时候一个压缩Pattern看起来只有几MB,展开后要跑几十万个周期的解压序列。

所以我建议,在选型对比压缩向量时,除了看文件体积,还要看“执行时间”和“程序深度占用”。如果测试时间预算很紧,可能用未压缩的Pattern反而更划算,因为节约了回放解压序列的时间。

5.5 上机验证策略:先小后大、先单后多

不管是新写的Pattern转换脚本,还是拿到了新版本的STIL,我强烈建议上机验证遵循这个顺序:

  1. 单site、单Pattern:先用一个site、跑最短的一条Pattern,确认导入、编译、空跑没有问题。
  2. 单site、全Pattern:熟悉了单个操作后,再跑全套Pattern,检查Pattern切换、上下文加载是否正常。
  3. 多site、单Pattern:验证Site Map映射是否准确,多工位是不是能保持同步。
  4. 多site、全Pattern:最后才做量产前的全流程验证。

这个方法看起来保守,但可以让你在出问题时一眼定位到是转换问题、映射问题还是平台问题,而不是一团乱麻。

5.6 最后分享一个实用小技巧

用脚本做文本级别的快速验证时,别光看文件大小和行数。一个我一直在用的笨办法是:从源STIL里提取所有引脚名、时序块名称、宏调用名称,从目标ATE文件里也提取一份,然后统一排序列出diff。如果两份名单完全一致,说明转换在结构语义上没有丢失;如果对不上,哪怕工具没报错,也一定有问题。

这个脚本我用过无数次,每次都能在正式上机之前拦住至少一两个潜在的严重错误。别嫌它土,好用就是硬道理。

Pattern转换这东西,说难不难,说简单也不简单。理解了格式之间的语义差异,掌握一套稳扎稳打的验证流程,大部分问题都能在进洁净室之前就消弭于无形。希望这篇内容能帮你在测试向量这条路上少踩几个坑。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询