功能测试怎么做?简单说就是:给芯片一系列输入信号,看输出对不对。输入和输出的组合,就是测试向量。 今天聊聊向量的基本概念、常见格式,以及新人常遇到的坑。 01 什么是测试向量? 一个测试向量,可以理解为一组在某个时钟周期内,所有输入引脚的逻辑状态(0或1)和预期输出引脚的逻辑状态。 比如一个简单的与门:
每一行就是一个向量。测试系统按照周期顺序,把输入信号施加到芯片引脚,然后在Strobe Edge读取实际输出,与预期值比较。一致则Pass,不一致则Fail。 向量通常很长,几千到几百万行都有。 02 向量从哪里来? 不是测试工程师手动写的,而是从设计工具自动生成的。 设计工程师用硬件描述语言(Verilog/VHDL)完成芯片设计后,会做仿真。仿真时写一套激励(Testbench),跑完会生成一个波形文件,包含所有输入输出的时序值。 把这个波形文件转换成测试机能识别的格式,就是测试向量。 常见转换路径:仿真波形(VCD)→ 转换工具 → 测试向量(WGL或STIL)→ 测试机格式(各ATE厂商私有格式) 03 三种常见的向量格式 VCD:EDA工具最原始的波形输出格式。记录了每个信号在每个时间点的变化,可读性差,体积巨大。一般不直接用于测试机,只作为中间文件。 WGL:一种文本格式,专门用于描述测试向量。它定义了信号如何分周期、如何设置忽略位(X)、如何定义掩码(Mask)等。大多数ATE都支持导入WGL。 STIL:IEEE标准格式(IEEE 1450),比WGL更规范,支持更复杂的时序和测试条件描述。目前主流ATE都支持STIL导入。 新人不需要精通这些格式,但至少要知道:仿真波形不能直接灌给测试机,必须经过转换。 04 常见问题 问题一:向量中出现了X或Z 仿真时某些信号未定义或处于高阻态,生成的向量里会有X或Z。测试机不认识这些状态,直接加载会报错。 解决方法:在转换工具中把X/Z映射为0或1,或者和设计工程师确认该周期内信号不应该出现X/Z,修改Testbench。 问题二:向量长度太大,测试时间过长 几百万行向量,测试时间可能几秒钟。对于量产来说,几秒已经很贵了。 解决方法:向量压缩、跑更高速的测试周期、或者只保留关键路径的向量。设计工程师可以提供一个“简化的功能测试”向量集,覆盖基本功能。 问题三:预期输出与实际输出总是差一拍 这是新手常见错误。仿真波形里,输入变化后输出可能在下一个周期才变化,但转换工具没有调整对齐,导致预期值错位。 解决方法:检查测试程序的Strobe Edge设置,或者重新生成向量时指定延迟模型。 05 向量调试的小技巧 拿到向量后,不要直接跑量产。先做几件事: 低频率预跑:把测试周期放宽(比如从10MHz降到1MHz),确认向量时序正确。 单步调试:只跑前几个向量,看实际输出是否匹配。 用Shmoo扫Strobe Edge:找到稳定的采样窗口。 和设计工程师对齐:如果一直Fail,先确认向量本身是否正确,而不是怀疑测试机。 测试向量是功能测试的“标准答案”。答案错了,考试结果必然错。 三个要点: 向量来源于设计仿真,不是测试工程师手写 常见格式有VCD、WGL、STIL,需要转换才能上机 第一次用向量时,低频率预跑、单步调试、确认正确性再量产 下次功能测试Fail,先别急着调机台。问一句:向量本身对了吗? ![]() |






