
1. 为什么V93000测试机让人又爱又恨第一次站在V93000面前对着满屏的SmarTest 8界面大多数人都会有同感这玩意儿的入门门槛比想象中高太多了。作为Advantest在SoC测试领域当之无愧的主力机台V93000在全球的装机量摆在那里无论是做消费级芯片、车规芯片还是通信芯片的代工厂和封测厂几乎都绕不开它。SmarTest 8作为这套机台的核心软件平台不只是简单的测试程序编辑器它更像是一个完整的小型操作系统负责把测试工程师的需求翻译成硬件上实实在在的电压电流激励和量测动作。这篇讲义我就是想把这套东西的基本功帮你捋一遍。很多刚入行的测试工程师甚至是在其他测试平台上做了三五年的人第一次切到V93000SmarTest 8时都容易卡在一个点上思路没转过来。SmarTest 8里一切都是分离的——Timing、Level、Pattern、Test Method、Flow各自独立跟老式ATE那种写个大程序的思路完全不一样。加上它自带的那些缩写MCP、DPS、PMU、DC_X、ScaleX、PCL、MMC——光是一堆术语就够喝一壶的。这篇博文会把V93000和SmarTest 8的基础培训内容浓缩成四个大块先从整体架构和核心设计思路讲清楚它为什么长这样然后拆解SmarTest 8里天天要用的核心概念和界面操作接着用一段完整的实操案例把新建测试程序的流程跑通最后整理我在实际调试中踩过的坑和排查技巧。适合刚接手V93000的测试工程师、准备转做ATE测试的在校学生以及想从SmarTest 7或其他平台迁到SmarTest 8的从业者。内容不涉及太偏门的深层调优但保证你读完能自己动手写一个简单的DC测试程序并且知道碰到问题应该从哪个环节去查。2. 先搞懂V93000和SmarTest 8的设计逻辑SmarTest 8这套软件是围绕可复用和并行化这两个词来设计的。它跟老式的ATE测试程序最大的区别在于它把所有测试内容拆成了三个维度器件的电特性Level、时间参数Timing和逻辑时序Pattern。2.1 为什么Level、Timing、Pattern必须拆开你想象一下你手上有十颗芯片它们的工作电压可能都是相同的1.8V但其中五颗跑100MHz另外五颗跑200MHz。如果用老式的测试程序你得写两套完全不同的程序。但在SmarTest 8里这个问题被彻底解决了电压条件放在Level里时钟参数放在Timing里芯片逻辑行为放在Pattern里三者是独立的。你要测试不同速度、不同电压组合只需要在Flow表里切换不同的Level和Timing组合就行Pattern完全可以保持不变。这套逻辑往深了想其实就是把测试这件事从编程变成了配置。你不是在写一个线性过程你是在定义一堆条件参数和波形序列然后让一个入口Test Method去按顺序执行它们。这种思路的好处非常直观复用性强。你要是为一个封装了十种测试项的芯片把Level和Timing都调好了下次再来一颗差不多规格的芯片直接复制改参数就行不需要重写逻辑。SmarTest 8里还有一个移植性的考虑同一个测试程序理论上可以跑在V93000的不同通道板上只要你用的是同一个Pin Configuration。原因就在于它把通道映射也独立出来了你定义的是逻辑上哪个Pin叫什么名字、什么用途而不是通道板上物理的第几号通道。硬件配置变了只需要改映射关系。2.2 SmarTest 8跟SmarTest 5/7到底差在哪很多在V93000上待了很久的老工程师早年用的还是SmarTest 5甚至SmarTest 7。SmarTest 8看起来界面完全变了其实底层逻辑更早就做好了。它的核心变化就是全面转向了模块化和图形化编程方式。这里我举一个很直白的例子在SmarTest 7时代你要定义一个Power-down引脚的时序得在一个编辑器里手动填表格。在SmarTest 8里你可以用一种更接近波形编辑器的可视化方式去画波形系统会直接生成对应的PCLPin Configuration Logic和Timing数据。好处是直观坏处是如果你不熟悉底层出了错误会一头雾水。所以你也经常看到资深的SmarTest 8用户反而会直接去看生成的文本文件比如.py结尾的配置文件——SmarTest 8大量使用Python来承载配置和流程这让调试的灵活度上了一个大台阶。这说明SmarTest 8的定位已经变了它不再只是一个ATE操作界面更是一个测试程序开发框架。官方叫法是基于流程表的软件架构我个人的理解是测试程序由Flow表就是你定义先做什么、后做什么的表驱动上面的每一行操作都是一个Test Method调用每个Test Method的输入参数就是Level、Timing、Pattern这些对象。这就是数据驱动测试的具象化。3. 必须在上手前吃透的核心概念SmarTest 8里跳不掉的名词其实没那么多但每一个都值得花时间去理解。我先按重要程度排个序。3.1 Pin Configuration是地基Pin Configuration引脚配置是整套测试程序里最基础的部分。你在里面定义芯片有几个引脚、每个引脚叫什么名字、是输入输出还是电源地、在哪些测试通道上。这个文件不光是软件用的它决定了整个机台的通道板资源分配。就我个人的实战经验Pin Configuration这里最常出的问题是文件里定义的和DUT连接不相符。比如你有一块通道板定义的是HV级别另一块是LV级别同样的芯片放在不同板上如果Pin Configuration里分配错了测试结果就是一堆乱码而且排查起来特别费时间。V93000的通道板是分类型的PS800、PS1600第五代、DC Scale、HV Scale等不同类型对应不同的电压电流能力。做Pin Configuration之前建议先把板上实际通道类型确认一遍尤其是有混合通道板的测试Socket。3.2 Test Method就是测试执行单元Test Method在SmarTest 8里相当于一个小处理器。每个Test Method都是一段可执行的代码默认用Python实现它会调用底层的API去执行具体的动作——比如施加电压然后量电流、跑一段Pattern、执行一次BIST。这里就有一个特别关键的区分Test Method不是写死在某个测试项目里的它是可以在Flow表里反复调用的。比如说你写了一个dc_measure_vforce_imeas(voltage, current_limit, mode)的Test Method就可以在几十个测试项里反复调用这个函数传不同的参数。这也是为什么SmarTest 8的应用方法特别适合搭一个测试库测试项越多你的库越丰富后面新项目就越省事。对入门者来说刚开始不需要去写复杂的Test Method函数体只需要会用现成的。V93000自带了大量的标准Test Method比如DC测试里的VForce_IMeasure、Pattern测试里的SCAP你直接在Flow表里引用来用就行。等你需要一个标准Method搞不定的功能时再去研究加载自定义Test Method。3.3 Level、Timing和Pattern组成的测试三大件这三个东西往往是新工程师最容易搞混的。Level就是电学条件输入高电平是多少伏输出高电平判定是多少伏电源电压是多少伏。Timing是时序条件信号什么时候变高采样窗口开在什么位置。Pattern是逻辑序列芯片的逻辑行为应该是什么样的。请您想象一个场景你要测一个SRAM芯片的读操作。Pattern告诉你地址总线要给0x1234片选信号要拉高然后在某个时间点读数据总线。Timing告诉你片选信号在第10ns拉高地址总线在第15ns稳定数据总线的采样窗口在第30ns到第40ns之间。Level告诉你所有高电平是1.8V低电平是0V。三者缺一不可。V93000的强大之处在于这三者的配置可以极其精细。Level可以精确到毫伏甚至微伏级别Timing可以精确到几十皮秒级别。但也因为可以调的太细了新手容易在不该去动的地方乱调结果反而把原本正常的结果调坏。我的建议是除非你明确知道要改的是什么否则先用官方默认的Standard Level/Timing模板参数再逐项修。4. 实操一步一步写出你的第一个测试程序下面我就直接以一个最简单的DC测试为例带你把整个流程走一遍。假设被测芯片是一个简单的逻辑芯片有一个电源引脚VDD一个输入引脚IN一个输出引脚OUT。我们要测的是VDD待机电流、输入高电平时的IDD、输出驱动能力VOH/VOL。4.1 新建工程与Pin Configuration第一步打开SmarTest 8软件新建一个Project。SmarTest 8里Project是管理所有测试文件的最小单位新建Project时它会问你用什么类型的Device。选一个Generic Digital Device就可以后面还可以改。新建之后第一件事就是做Pin Configuration。在主界面找到Pin Config入口新建一个Pin Config文件。在这个文件窗口里你要做的事情很简单给引脚分组、命名、指定类型。实际操作里我会把引脚定义成这些组POWERVDD电源INPUTIN普通输入OUTPUTOUT普通输出GROUNDVSS地可以不定义因为电源通道会自动接把引脚分配到物理通道的时候要根据V93000的通道板资源来选择。VDD用DC Scale或HV Scale通道它能施加电流能力强普通数字信号用PS800/PS1600通道适合高速数字波形。这一步虽然看着只是点鼠标但决定了后续能不能跑起来务必和负载板上实际布线方向一致。4.2 创建Level、Timing和Pattern数据Pin Configuration完成后就可以创建Level和Timing了。在SmarTest 8的界面上找到Level标签页新建一个Level Set。这里要定义VDD的施加电压比如1.8VVDD的最大电流限制根据芯片规格书来定比如50mAIN引脚的VIH输入高电平电压比如1.62VOUT引脚的VOH/1.4VVOL/0.4V这是做输出驱动能力测试时用来判定的参考电压这些参数都来自芯片的数据手册Datasheet不需要自己发明。你自己要做的是把手册里的参数抄进Level里去注意单位别搞错。Timing就比较直白了。新建一个Timing文件定义一个标准的读写测试时序列。对于最简单的DC测试不需要非常复杂的时序只要定义一个基本的采样时钟即可通常设为1MHz或100kHz。Pattern的编写可能是入门者最不习惯的部分。SmarTest 8里Pattern可以手工编辑也可以从Verilog/VHDL测试向量自动转换过来。手工编辑格式是PCL语言Pin Configuration Language长得像这样Pattern p_write_header { VDD 1; IN 0; OUT X; }这段代码的意思是说在这个Pattern里VDD置1高电平IN置0低电平OUT不关心X。当然这只是最简陋的写法真正常用的Pattern会带上复杂的循环和分支指令。不过先掌握最基本的结构后面看真正的Pattern就不会懵了。4.3 建立Flow表并加载Test MethodFlow表就是测试程序的执行顺序表可以把它理解成一场测试的节目单。SmarTest 8的Flow表是图形化编辑的每一行是一个Test Step每一列可以设置这个Step的Test Method、Level Set、Timing Set、Pattern文件、上下Limit、测试结果存储位置等等。针对我们这台芯片的测试Flow表大概长这样StepTest MethodLevelTimingPattern量测项判定下限判定上限0VForce_IMeasureLevel_DC1Timing_DCp_all_zeroIDD050mA1VForce_IMeasureLevel_DC2Timing_DCp_all_oneIDD055mA2PatternTestLevel_AC1Timing_AC1p_func_testVOH/VOL--3VMeasure_IForceLevel_DC1Timing_DCp_no_patternVOH1.4V3.3V这里每一行都要认真填写。第0步测的是所有引脚为0状态VDD的电流是多少VForce_IMeasure这个Test Method会先把VDD设成1.8V然后量取VDD流入的电流值。第2步跑功能测试在这个Step里用PatternTest这个Method它会施加预定的Pattern到IN引脚检查OUT引脚的输出是否符合预期Pattern里的X位不会去比对。4.4 运行与调试Flow表配完之后点一下Run就能开始跑。第一次跑通常不会一帆风顺如果你的电平条件、时序条件和实际芯片不匹配很有可能会看到AB类型的错误提示。别慌先去检查几个地方基本能查明白。可能出问题的点Pin Config里的引脚映射和LoadBoard实际接法不一致导致信号送不到芯片。Level Set里的电压设置超过通道板的能力导致施压失败或异常报警。Timing文件里有逻辑自洽问题比如建立时间晚于保持时间出现这种情况运行时会直接报错。SmarTest 8还有一个非常好用的调试方式单步执行。在Flow表上右键可以设置断点让程序跑完某个Step之后停下来这时你可以打开Datalog数据记录表查看每一站的结果数据不用重新整段跑节省大量调试时间。5. 那些官方文档里不会教你的经验做这件事时间长了总会有一些教训是吃了亏才领悟出来的。我把常见的坑集中在这下面希望能给你省点时间。5.1 命名规范从一开始就要立好SmarTest 8支持很长的命名有些工程师就随便写等到项目到后期文件多到连自己都分不清。比如你创建一个Level Set叫ls1过一个星期你自己都想不起来这是给哪个测试用的。我的习惯是每个测试项命名带上模块名和用途比如Level_VDD_IDDQ_1p8V一看就明白这是用于IDDQ测试的1.8V电平配置。这个习惯在多人协作的项目里尤其重要。因为有时候你会接手别人留下的测试程序如果对方的命名逻辑一团乱麻你花在理解上的时间可能比重新写一遍还多。先花三十分钟把名字理顺后面能省出三天。5.2 Datalog和分析你要从一开始就抓Datalog数据日志是测试机台的关键产物之一它会记录每一次测试的原始数据和判定结果。SmarTest 8的Datalog功能可以做非常精细的配置你可以自定义记录哪些项、用什么格式存、是否同步汇总到统计表里。实操中我发现很多新手不会合理配置Datalog结果每次调试都查不到想要的数据。用下来最顺畅的方式是开发阶段把Datalog设为所有量测数据全记录调试阶段改成只记录失败项量产后设为只记录汇总统计。要特别注意Datalog和Yield是我们从测试数据中学习和发现芯片异常的重要来源。早期把格式规范好数据才能沉淀下来后面做数据分析、CPK分析才有料可用。5.3 T5503HS2这类模拟机台给我们的启示顺便提一句最近同行经常讨论的Advantest T5503HS2。有朋友问过我V93000练熟了要不要去学T5503?这得看你的方向。T5503HS2是一款偏模拟/混合信号测试的机台跟V93000侧重数字和SoC测试有定位上的差异。但硬件原理和测试理念是相通的也是Level、Timing、Pattern、Test Method这一套思路只是板卡带宽、通道架构和对应的软件平台不同。在V93000 SmarTest 8上打好的基础比如量测链路、开短路测试、DC参数测试、接触测试的概念换到T5503HS2也是完全适用的。你去翻T5503HS2的测试程序看到VForce_IMeasure、Contact Test、Opens/Shorts这些术语时就知道它们具体在干什么了。5.4 检验Pattern前一定要做静态检查Pattern出问题是最隐蔽的。有时候你觉得Timing和Level都对芯片还是不工作最后查半天发现Pattern文件本身写错了。SmarTest 8自带一个Pattern静态检查工具可以检查Pattern里的信号是否越界、时间定义是否有冲突、循环跳转地址是否正确。我在实际中遇到的典型问题是Pattern里的循环跳转条件标错了标签导致Pattern在某个地址上死循环。这类问题在仿真阶段不容易发现但上了机台就是无尽的timeout。每次生成Pattern之后养成先运行静态检查的习惯这能帮你挡掉80%的Pattern低级错误。6. 个人经验入门V93000最容易走的弯路最后分享一些个人经验都是真实的体会。我最开始接触SmarTest 8时最大的误区是把它当成另一个版本的LabVIEW那样去学一直在研究界面操作。后来发现最有效的方式是先搞懂那三大件Level、Timing、Pattern的物理含义再去看Flow如何把它们串起来。一旦明白了这个总框架剩下的都只是软件功能在哪里的问题。其次是想提醒新人的是不要一上来就指望自己写完整个测试程序。拿一个模块、一个最简单的测试单板从接触测试Continuity Test和开路测试Open/Short Test开始练手。别看它简单实际上要把接触测试写到一个稳定、可靠、不漏测的状态里面有很多细节——比如施压时的电流限制设多大采样延迟设多久怎么判断接触电阻超差。等你把这一小块彻底弄透了再去看复杂的数字功能测试就会有豁然开朗的感觉。另外进入这个领域一定要养成一个习惯多做等级对照和重复性测试。所谓等级对照就是同一颗芯片你用低压测一遍、高压测一遍然后用中点电压再测一遍看结果是否线性重复性测试是同一颗芯片在相同条件下反复测十遍看每次数据是否稳定。这两类实验是检验你Level、Timing、Pattern设置是否靠谱的最好办法也是做量产测试时评估机台稳定性的基础。V93000是一套庞大但逻辑非常自洽的系统SmarTest 8的灵活性和扩展性在ATE软件里算得上是第一梯队。它给你的限制很少几乎什么都能做但这也意味着你自己必须有一套清晰的逻辑来组织你的测试方案。我的观点一直是工具是次要的头脑里的测试流程图才是关键的。软件操作不会可以学但如果你对整个测试链条的物理意义理解不透彻那真的是换一台机器还是会栽跟头。