十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

V93000与SmarTest 8入门:从零构建ATE测试程序的完整路径

V93000与SmarTest 8入门:从零构建ATE测试程序的完整路径 干这行的人迟早会撞上一台叫V93000的机器。我当年刚转做ATE测试工程师第一次踏进实验室看到测试头展开的样子说实话挺震撼——几层板卡密密麻麻插在一起旁边立着Linux工作站上面跑着一个叫SmarTest的软件。带我的老工程师丢给我一本厚厚的英文培训手册说“从第一章开始看看完来帮我调DIB”。结果我啃了两周连TestFlow和TestMethod都分不太清。后来踩了无数坑才慢慢摸清这套系统的学习路径。这篇文章我就按照“一个新人最需要先知道什么”的顺序把Advantest V93000和SmarTest 8的核心知识点、实操步骤、常见坑位重新整理一遍。如果你刚入行做芯片测试或者公司马上要导入V93000又或者只是想搞明白TestFlow、Pattern、Levels这些词到底在说什么这篇内容都适合你。这里不涉及深度的DSP算法或射频调试聚焦在最关键的“基础”上——帮你建立起对整套系统的整体认知并且能动手把最简单的测试项跑起来。1. 站在ATE测试工程师的角度看V93000与SmarTest 81.1 V93000在行业中的定位一台能测SoC的“精密信号收发器”V93000在Advantest的产品线里属于SoC测试主力机型它最大的特点是模块化测试头里的通道板卡、模拟板卡、射频板卡可以根据被测芯片DUT的需求灵活组合。比如你测一颗MCU可能只需要几百个数字通道加几路电源换成一颗射频SoC就得加装射频板卡和混合信号板卡。这种架构让同一台机器在不同项目之间切换的成本大大降低所以从消费电子到车规芯片很多量产工厂和封测厂都在用它。我个人的理解是V93000本质上就是一台超高速、高并发的“精密信号收发器”。数字通道可以产生特定时序的驱动波形也能在特定时刻采集DUT的输出再与预期值比对。SmarTest 8就是指挥这些硬件的“总导演”。新人第一次接触V93000最需要建立的一个认知是这台机器不是像万用表那样“接上就测”而是必须先告诉它三件事——被测芯片有多少根引脚、每根引脚的电气条件是什么、在什么时间点给什么信号。把这些规则全部定义好之后机器才会按照测试程序批量执行。很多新人以为做测试就是“把板子放上去看结果”这是最大的误解。1.2 SmarTest 8的作用把硬件能力“翻译”成可执行的测试SmarTest 8是运行在V93000配套工作站上的测试开发与执行环境早期版本叫SmartTest后来统一为SmarTest 8。它主要干三件事定义测试环境硬件配置、Pin、Levels、Timing、开发测试流程TestFlow、执行测试并输出结果。很多新人第一次打开SmarTest 8都会被界面吓到觉得菜单多、弹窗多、术语多。其实它背后的逻辑并不复杂所有操作最后都会落到测试程序文件里软件界面只是把配置过程图形化了。你通过界面做的每一步设置本质上都是在修改测试程序的某个属性。这里顺便提一下T5503HS2。Advantest的测试机产品线里T5500系列主要面向存储器芯片测试比如DRAM、NAND Flash这类高并行度存储产品T5503HS2就是其中速度较快、针对高速存储器接口的机型。V93000和T5503HS2经常会在同一个测试厂里共存——一颗SoC芯片量产时用V93000配套的独立存储颗粒则可能上T5500系列。明白两者定位差异能帮你理解为什么有些测试概念在两种平台上相通但具体操作完全不同。1.3 学习V93000/SmarTest 8的典型路径经常有人问我学SmarTest 8到底从哪里入手我的建议顺序是这样。第一先把硬件架构搞清楚知道测试头、DIB、探针台/分选机之间怎么连接。第二学会在SmarTest 8里查看系统配置理解当前机器的通道资源。第三从最简单的DC测试比如开短路测试、漏电流测试开始用现成的TestMethod跑通一个流程。第四再慢慢接触Pattern编写、时序调试等更细致的内容。这个路径的好处是每一步都有看得见的成果学习动力不容易断。别一上来就啃Pattern语法或者急着写复杂TestMethod那样很容易劝退。测试程序开发的本质是“先会跑再会走”把最简单链路跑通一次后面所有复杂功能都是在这个骨架上长出来的。2. 上手SmarTest 8前必须搞懂的5个底层概念2.1 通道、Site、测试头先分清“测什么”和“在哪测”把“通道Channel”放在第一位。V93000的每个数字通道对应DIB上的一个引脚连接点通道数量决定了你最多能同时驱动和采集多少个信号。通道按板卡划分比如一块PS1600板卡提供一定数量的通道多块板卡插在测试头上组成整台机器的通道资源。系统配置System Configuration文件会记录当前机器有哪些板卡、哪些通道可用、通道类型和地址。Site是另一个容易混淆的词简单理解就是“同时测几个DUT”的并行度配置。如果DIB上放了4个测试位点SmarTest 8里就可以配置成4个Site并行测试。并行测试是量产效率的核心所以SmarTest 8里几乎所有资源Levels、Timing、Pattern都支持多Site共享或独立配置。新人可以先不管太多并行细节但一定要知道Site的存在不然后面看多点测试结果时容易懵。测试头Test Head就是装板卡、连接DIB的那一大块硬件。测试头通过线缆连到系统控制器DIB装在测试头顶部。量产时分选机或探针台把芯片压在DIB或探针卡上然后再开始测试。这个物理链路看起来简单但调试中很多问题恰恰出在接触环节后面会专门讲。2.2 从Pin到Pattern一条测试信号的完整旅程我习惯用一个“旅行”的类比来解释测试信号的路径。你编写一个Pattern测试向量里面写好了某个周期内各Pin的状态比如“第3个周期CLK引脚下升沿DATA引脚驱动1并期望返回1”。这个Pattern文件经过SmarTest 8编译后变成测试头硬件能识别的二进制波形数据。测试头里的时序发生器按照你配置的Timing周期、边沿位置把数据转换成实际电压波形经过通道板卡驱动到DIB最终到达DUT引脚。同时通道板卡在比较沿采样DUT输出将结果与Pattern中的期望值比对产生Pass/Fail信号。这条链路上的每一环都可能出错Pin配置错了信号到不了正确的引脚Timing设错了采样点落在波形变化中间结果不稳定Pattern语法写错了编译直接报错。所以调试测试程序时我通常沿着这条链路逐级排查——这比瞎试快得多。很多新人遇到Fail就不知所措其实只要把链路走一遍问题基本能定位到具体环节。2.3 Levels和Timing芯片的“电气规矩”和“时间规矩”Levels定义的是电压规矩驱动高电平VIH、驱动低电平VIL、输出高判定阈值VOH、输出低判定阈值VOL、参考电压、负载电流等。这些值来自DUT的规格书Datasheet。比如某颗芯片输入高电平最低是2.0V那VIH通常设在2.5V左右留出余量输出高电平最低1.8VVOH比较阈值就设在1.8V以下。Levels设置不当的典型表现是功能测试能过但电压margin测试总是fail。Timing定义的是时间规矩测试周期Period、信号上升沿的时间点驱动沿、比较沿的时间点。比如一个周期是100nsCLK在20ns处产生上升沿DATA在50ns处被采样。Timing设置不当的典型表现是Pattern看起来明明对但跑出来的结果时好时坏或者只在某个频率下失败。要记住一点V93000不是“给出一个电压然后读结果”那么简单它是在极短的时间窗口内完成驱动、采样、判定。所以Levels和Timing必须同时正确电气规矩和时间规矩缺一不可。2.4 TestFlow、TestSuite、TestMethod三个必须分清的软件对象这三个词是SmarTest 8里出现频率最高的也是新人最容易搞混的。TestMethod是某个测试动作的最小执行单元本质上是一段编译好的动态库代码完成一个具体测试算法比如“测开短路”“测静态漏电”“测工作电流”。SmarTest 8里通常不需要自己写TestMethod系统自带一批现成的比如dc_test、toggle_test等只需要配置参数。TestSuite是TestMethod的“带参实例”集合。你可以把同一个TestMethod用不同参数实例化成多个测试项比如“IDD漏电流测试”这个TestMethod配上常温参数就是常温漏电测试项配上高温参数就是高温漏电项。TestFlow是一棵“执行树”定义了这些TestSuite按什么顺序跑、跑完某一步后根据结果跳到哪里、是否循环、是否记录数据。量产程序里的TestFlow通常要精心设计比如先做接触测试再上电、做功能测试、做参数测试如果接触测试失败就跳过后续步骤减少无效测试时间。理解这三者关系你就抓住了SmarTest 8程序开发的主干选择或编写TestMethod配置参数生成TestSuite再把TestSuite按逻辑组织成TestFlow。2.5 校准Calibration为什么结果不准先别怪DIBV93000虽然是精密设备但硬件本身就存在通道间延迟差、电压偏置差等非理想因素。校准Calibration的作用就是在执行测试前通过标准件和软件算法把这些误差补偿掉确保每个通道发出的电平、每个边沿的时间点都尽量准确。很多新人遇到“同一个DUT在A机台和B机台测试结果不一致”的问题第一反应是DIB设计问题。但我建议先确认两边的校准是否都正常完成校准版本是否一致。SmarTest 8里可以通过校准管理界面查看校准状态和报告。量产环境中校准通常由厂里的工程师定期执行但作为测试开发人员你必须知道什么时候需要重校——比如更换了板卡、移动了测试头、发现某类测试结果明显偏移时。校准这件事平时容易被忽略但一出问题就是大问题。我在后面会专门举一个因为忘校准导致测试数据异常的真实案例。3. SmarTest 8实操从空工程到跑通一个DC测试项3.1 创建工程并加载硬件配置进入实际操作。第一次打开SmarTest 8先新建一个Project工程向导会引导你选择硬件配置。注意这里选的配置文件必须和当前测试头的实际板卡安装一致否则后面打开测试程序时会出现通道不匹配的报错。操作路径大概是在SmarTest 8主界面选择File - New - Project指定工作目录接着加载System Configuration一般用系统管理员事先导出的.cfg文件。加载成功后你能在界面上看到可视化的板卡布局和通道列表可以逐个Channel确认通道是否存在、类型是否正确。我建议新人第一次操作时把身边的设备工程师叫上用一台空闲测试头对照实际板卡位置看配置界面印象会深很多。光在电脑上看截图学不会这一步因为硬件和软件是强绑定的。3.2 定义Pin、Levels、Timing配置好硬件后下一步是定义DUT的Pin。在SmarTest 8里新建或打开一个Device可以理解为一个Pin定义集合通常有两种方式从已有的Pin list文件导入支持csv或txt格式或者界面上手动添加。Pin类型一般分为数字信号Digital、电源Power、地Ground、时钟等。这里有个常用技巧把Pin按功能分组比如“数字输入组”“电源组”“双向组”。后面设置Levels和Timing时按组操作会高效很多尤其是上百个Pin的芯片逐个设置会让人崩溃。以开短路Continuity测试为例说明Levels设置。这个测试不关心完整功能只验证每个Pin到通道之间是否电气连通。一般给Pin施加一个小电流比如-100uA测量Pin电压是否落在某个范围内。在SmarTest 8里这个配置主要在TestMethod参数中完成不需要复杂的Levels配置。但如果做功能测试就必须把每个Pin的VIH/VIL/VOH/VOL都按Datasheet填好。Timing设置建议从Block出发。一个Pattern通常由若干Block组成每个Block定义自己的周期和边沿。在Timing编辑界面里可以新建Block设置周期值、驱动沿和比较沿。这里有个容易踩的坑当你只改了Levels但没改Timing时之前编译好的Pattern不会自动重新编译测试跑的仍是旧数据。所以每次改完Levels/Timing记得在测试程序上重新执行编译Build操作。3.3 用TestMethod加TestSuite搭出测试流程配置好基础后开始搭测试流程。我强烈建议从现成的开短路测试起步。在Test Method库中找到开短路测试方法一般是dc_continuity或类似名称双击添加并配置参数要测的Pin列表、电流值、判定上限和下限。配完参数后在TestSuite窗口就能看到生成的新测试套件名字可以自定义比如“Continuity_Test”。接着新建一个TestFlow在流程图上把“Continuity_Test”拖进去。TestFlow里有一个重要概念——Bin和Step结果。你可以设置如果Continuity_Test失败就跳到Bin1比如“接触不良Fail”测试流程结束如果通过就继续下一步。这个机制对量产很重要但对学习来说先把流程跑通、能看到PASS/FAIL结果就算成功。配置完成后在SmarTest 8中执行“编译”Build/Compile把测试程序转换成可执行格式。如果编译通过就可以加载到测试头上运行了。3.4 加载执行与数据记录查看程序加载后在SmarTest 8界面点Run测试头会按照TestFlow开始执行。执行过程中你会看到实时状态当前执行的TestSuite、每个Site的Pass/Fail、Datalog数据记录窗口输出的测试值。SmarTest 8的Datalog支持多种格式最常见的是文本格式和STDF格式。STDF是半导体测试行业的通用数据格式可以导入到良率分析系统中做统计。刚开始学习时用文本格式就够了直接在界面上看数据比较直观。跑完整个流程后我习惯性先看两个东西第一Datalog里的实测值是否在合理范围第二每个测试项对应的Bin分布是否和预期一致。如果开短路测试显示所有Pin都通过说明整个链路硬件配置、Pin定义、Levels、Timing、TestMethod、TestFlow基本是通的。这个最简单的流程就是你以后所有复杂测试程序的“地基”。4. 常见问题与排查技巧实录4.1 程序加载类问题我见过最多的报错是“Pin assignment mismatch”或者“System configuration does not match”意思大概是当前测试程序里定义的Pin和加载的系统配置对不上。遇到这种问题先别急着删程序重写按顺序排查。第一确认加载的系统配置是不是当前这台机器对应的配置第二检查Pin名是否拼写错误或大小写不一致第三看是否有Pin被定义成了错误类型。实操中很多问题是复制别人程序后忘了改Pin名导致的。另一个高频问题是编译不报错、但运行时报“Pattern execution error”。这个大概率是Pattern里的时序或电平引用出了问题比如Pattern调用的Timing Block不存在或者Pattern里有引脚没有对应的Pin配置。排查这类问题我会先在SmarTest 8的编译日志里搜索“error”关键字看具体定位到哪个对象然后再回到对应Pattern或Timing界面检查。日志里的行号信息通常已经很明确了。4.2 测试结果异常类问题结果异常分两类一类是结果完全不可复现、测三次三个样一类是结果能复现但明显不在合理范围内。第一类基本指向接触不良或时序采样不稳。接触不良的典型现象是开短路测试偶发Fail或者功能测试时快时慢通过。这种情况先查DIB针痕——用显微镜看测试点上的压痕是否均匀然后清洁DIB和探针/插座必要时重新校准。时序采样不稳则表现为结果和测试频率强相关可以通过把Timing里的比较沿往波形的“平坦区”移动来验证。第二类结果能复现但不在合理范围通常要么是Levels设置错误比如把VOH误设成了输入电平要么是校准过期。我处理过一个真实案例某颗芯片漏电流测试一直偏大查了半天DIB和测试程序都没问题最后发现是上次更换板卡后没有重新校准导致通道的电压偏置过大。重新校准后问题立刻消失。所以DUT数据异常时校准状态应该成为默认排查项。4.3 独家避坑技巧与排查速查表说几个比较零碎但很实用的经验。第一点SmarTest 8的界面操作大多可以通过命令行或脚本替代。比如用Tcl脚本批量修改Timing、批量导出Datalog能省大量重复劳动。等你把基础操作熟悉后非常建议学一点Tcl脚本开发效率会有质的提升。第二点调试时尽量用单Site模式。量产程序都是多Site并行测试但调试阶段多Site同时跑出问题时很难定位是公共设置不对还是某个Site的接触问题。切成单Site能更快锁定责任对象。第三点做好版本管理。测试程序文件经常是多人在一台机器上改目录下可能躺着十几个命名带final、final2的版本。我的习惯是每次重要修改后在文件里记录变更日志每个版本提交到版本管理工具。这在工厂环境里特别重要因为你不知道哪次改动会把别人的调试成果覆盖掉。为了便于日常对照我把高频问题整理成一张速查表可以截图贴在工位上问题现象大概率原因排查顺序程序加载报Pin不匹配系统配置加载错误 / Pin名不一致1检查配置 2检查Pin名 3检查类型编译通过但运行报Pattern错误Pattern引用块不存在 / Pin缺配置1查编译日志 2检查Timing Block 3检查Pin结果不稳定、复现性差接触不良 / 采样点设置不当1看针痕 2清洁DIB 3调整比较沿结果稳定但数值异常Levels设置错误 / 校准过期1核对Datasheet电平 2重新校准多Site结果不一致单Site接触问题 / 配置覆盖错误1切单Site对比 2检查各Site独立配置第四点也是每次带新人都会强调的测试程序出问题时不要先怀疑SmarTest软件本身有Bug。V93000是很成熟的商业系统软件层面的重大缺陷早被全球用户磨得差不多了。绝大多数问题都出在配置、接触、校准这三类原因上。先把老三样排查完再往复杂原因想效率会高很多。我自己从第一次打开SmarTest 8到能独立搭一个完整量产测试程序大概花了三个月。如果当初有人把上面这些“为什么”先讲清楚这个时间至少能缩短一半。现在每次带新人我都会先让他把这几块内容过一遍再去碰机器效果比直接丢英文手册好很多。你照着这个顺序学应该也能绕开我当年走过的那些弯路。
返回列表