测试向量基础

测试向量,说白了就是告诉ATE机台该怎么给芯片施加信号、在什么时间点采样结果的一串指令。你可以把它想象成一份“芯片行为乐谱”,机台照着它演奏,看看芯片是否跑调。

我刚入行时对向量不太在意,觉得仿真过了就行。结果有一次流片回来的芯片,在ATE上怎么测都不对,查了好几天才发现是向量里的时序定义和实际机台的周期对不上。嗯,从那以后我对向量格式和时序定义就格外小心了。

测试向量格式——STIL与WGL

做ATE测试,躲不开两种主流向量格式:STIL(Standard Test Interface Language)和WGL(Waveform Generation Language)。它们都是IEEE标准,但用法和侧重点不太一样。

特性STILWGL
全称Standard Test Interface LanguageWaveform Generation Language
标准化IEEE 1450 标准事实标准(主要由Synopsys推动)
核心结构按周期定义波形集(WaveformTable)按事件定义时序(TimingBlock)
可读性较好,层次清晰偏程序化,适合自动生成
兼容性主流ATE厂商(Teradyne, Advantest等)均支持早期Tester兼容性好,但Extract工具支持稍弱
适用场景复杂时序、IP核测试、多site并行测试传统数字测试、ATE快速调试

我个人习惯:如果项目周期允许,优先用STIL。它把周期、波形集、引脚分组定义得清清楚楚,后期换更高速的机台时,只需要改Timing部分,向量主体几乎不用动。不过有一次我在旧项目里遇到一台只支持WGL的老机台,花了两天把STIL转成WGL,才顺利测完。

避坑提醒:我曾经碰到过一个案例——供应商给的向量文件声称是STIL格式,但实际只是个“披着STIL外壳”的WGL流,里面的WaveformTable居然用事件驱动写法。结果加载到机台后时序全乱。所以拿到向量后,先用解析器校验一下格式完整性。

向量生成原理

向量怎么来的?它不是拍脑袋写的。通常从数字后端或验证团队拿到仿真波形(.vcd或.fsdb),然后经过一系列步骤变成ATE能吃进去的格式。我把流程拆成几步:

  1. 读入网表和仿真波形——找到芯片所有IO引脚上的信号翻转点。
  2. 时序定义——确定测试周期(例如100ns)、各种信号的边沿位置、采样门控。
  3. 波形映射——将仿真中的“高低电平”翻译成ATE支持的波形操作(比如NRZ、DNRZ、SBC等)。
  4. 格式转换——用工具(比如TSSI、WaveGen、定制脚本)生成STIL或WGL文件。
  5. 校验与优化——跑仿真对照,缩并相同周期(减少向量深度),调整驱动/采样窗口。

你想想看,如果第三步映射错了,比如把一个窄脉冲映射成了宽脉冲,测试结果肯定骗人。我记得有一次,一个DDR接口的向量,因为波形映射工具把上升沿对齐到了周期的90%位置而不是50%,导致数据窗口采样失败。后来手动改了映射表才搞定。

小技巧:在格式转换前,先做一个“空跑”仿真——把生成的向量回读进仿真器,对比原始波形。如果完全一致,再拿给ATE用。这一步能省掉很多半夜调试的时间。

时序定义与周期

测试周期是向量的心脏。一个周期通常包含驱动(Drive)、采样(Compare)、屏蔽(Mask)三个阶段。具体的时序参数在STIL里通过WaveformTable定义:

参数含义常用值(举例)
period周期时间(所有信号必须在一个周期内完成状态切换)100 ns → 10 MHz
ForceDown / ForceUp驱动低电平 / 高电平的起始时间(相对周期起点)10 ns / 30 ns
CompareHigh / CompareLow采样高/低电平的起始时间75 ns
Window采样窗口宽度20 ns
Tr / Tf信号上升 / 下降时间(有的机台需要显式指定)2 ns / 2 ns

更关键的是,周期决定了测试频率。你设计跑1GHz,但ATE机台的周期精度只有200ps间隔,那就得把周期设成1ns(1000ps),里面所有边沿对齐到200ps的倍数上。我曾经遇到过一个项目,芯片内部用PLL倍频到2GHz,但ATE采样窗口只有5ps的步进,差点测不了。后来通过提高向量压缩率,用较短链测试才绕过这个限制。

真正实战中,你会看到时序定义里有“多周期”(multicycle)和“分频”(divide-by)的概念。比如DDR接口读数据,数据信号可能在两个周期后才被CPU采样。这时要在向量里显式声明多周期关系,否则ATE会误判。

核心要点:
- 测试周期必须大于或等于芯片内部最慢路径的传播延迟。
- 边沿位置设置要保证采样时刻处于数据稳定窗口内。
- 多周期时序:用STIL的multicycle关键字或WGL的WAIT指令处理。
- 不要为了追频率而把周期设太小,留出20%的裕度。
测试向量生成与执行流程 设计网表 & 仿真波形 时序定义 & 周期 格式转换 (STIL / WGL) 校验 & 优化 ATE 加载执行 测试结果分析 & 反馈闭环 反馈(调整时序/向量) 核心工作流 ① 从仿真波形提取信号变化 → ② 定义测试周期和边沿位置 ③ 波形映射并生成STIL/WGL → ④ 校验后加载到ATE ⑤ 执行测试 → 分析结果,调整时序/向量后迭代
实用建议:在实际项目中,我习惯先拿一个最简测试图案(Pattern)跑通链路,再逐步增加向量深度。如果一开始就把几百万条向量全载入,出了问题排查非常痛苦。

最后提一嘴周期。很多人觉得周期越小越好,测速嘛。其实不是的。周期太小,驱动波形可能还没稳定你就采结果了。我见过一个团队把周期压到70ns,结果芯片在某温度下时延变长,死活测不过。把周期放宽到85ns后,一次就过了。所以周期设定要兼顾设计裕度和机台精度。

再次提醒:向量文件中出现X(不定态)或者Z(高阻)时,一定要在时序定义里指定驱动和采样的行为。否则ATE可能会报错,或者把高阻当成低电平来判断——那后果就是良率爆炸。