【芯片测试】:7. Action 与 Operating Sequence
Action 与 Operating Sequence测试执行的时序编排系列Advantest V93000 SmarTest 8 核心概念解析第 7 篇共 8 篇适合读者需要理解 ATE 测试执行编排机制的工程师前言前几篇讲了测试数据Pattern、Spec、DUT Board本篇讲执行仪器动作Action怎么被触发Pattern 和 Action 如何在时间轴上编排Test Method 在什么时候执行什么代码。这是把所有配置接通电源的一环。一、Action仪器的可触发操作Action 定义了一个仪器可以执行的单个操作例如施加一个电压forceVoltage测量一个电流measureCurrent输出一段波形sourceWaveform修改一个仪器状态参数modPowerAction 在 Measurement Specification.spec文件中定义作为仪器配置的一部分。触发 Action 的三种方式触发方式说明Test Method在 Java 代码中显式创建并调用通过 Device Test APIPattern锚点Anchor绑定到 Pattern 的某个向量该向量执行时 Action 被触发Operating Sequence直接列在 Operating Sequence 中按位置顺序执行二、Action 的生命周期Action 的执行不是瞬间的——它有四个阶段理解这些阶段对于编写精确的同步测试至关重要。四个阶段时间轴 ─────────────────────────────────────────────────► Preparation Begin Intended Begin Begin End Deactivation ↓ ↓ ↓ ↓ ↓ ├──── Preparation ─────────├── Activation ─├─ Execution ─├─ Cool-down ─┤ (硬件准备) (对齐暖机) (实际执行) (解锁资源)阶段中文名说明Preparation准备阶段仪器配置自身硬件例如校准内部电路ActivationWarm-up激活阶段等待到精确的时间对齐点确保执行开始的时刻正确Execution执行阶段Action 正式执行施加激励、采集测量结果等DeactivationCool-down去激活阶段执行结束到仪器释放可用让出给下一个操作Preparation 和 Deactivation 的时长由系统内部根据测试套件编程自动计算不能手动指定也不能通过 Action 类型直接得知。关键约束一个 Action 的仪器设置在执行期间不能被修改直到该 Action 执行完毕或被显式终止。重复执行的 Action一个 Action 可以被配置为重复执行有限次数或无限循环有限重复repeatCount// 在 spec 文件中某个 action 的配置 repeatCount 10; // 执行 10 次对于有限重复每次执行都包含独立的 Preparation 阶段。原文 Timing Debug 视图的示例action 重复 2 次共 3 次执行给出了印证总时间 3 × (Preparation Execution) 3 × (320,000 ns 150,000 ns) 1,410,000 ns即每次重复均有完整的 Preparation Execution 流程[Prep Exec] → [Prep Exec] → ... → [Prep Exec] → Deactivation ↑_____________________________ N 次 _____________________________↑无限重复keep-alive 或 infinite loop与有限重复不同对于无限重复的 ActionPreparation、Activation、Deactivation 在整个循环生命周期内只发生一次Preparation → Activation → [Execution → Execution → ...无限] ↑_________直到被终止_________↑ → Deactivation适用场景持续向 DUT 施加某个电压、持续发送时钟保活信号等。无限循环在以下任一条件满足时自动终止仪器被断开连接Operating Sequence 的下一个 Parallel Group 开始使用该仪器Operating Sequence 结束除非 action 在 keep-alive context 中Keep-alive Context可以让某些无限重复的 Action 在一次测量Operating Sequence结束后继续执行用于维持持续的偏置电压或时钟信号跨越多个测试套件的执行边界。Action 的终止条件一个 Action 会在以下情况下结束正常完成测量完毕控制返回调用方所控制的仪器被断开Operating Sequence 执行完毕非 keep-aliveOperating Sequence 中下一个元素使用了同一信号用户显式调用终止三、从 Pattern 触发 Action锚点机制Pattern 和 Action 可以通过**锚点Anchor**精确关联——某个 Action 在 Pattern 的特定向量被执行时触发。两种类型中断型 vs 非中断型中断型InterruptiveActionAction 与 Pattern 使用相同的信号Pattern 必须暂停等待 Action 完成后才能继续Pattern 执行 → → → [向量 n-1 完成] → 暂停 → [Action_A 执行完] → [向量 n 开始]非中断型Non-interruptiveActionAction 与 Pattern 使用不同的信号Pattern 不需要暂停Action 与向量同时开始执行Pattern 执行 → → → [向量 2 开始同时触发 Action_B] → → →Pattern 继续不停 Action_B 执行 [Action_B 开始] →→→→→→→→→→→→→→→→ [Action_B 结束] 两者同时进行Pattern 锚点的 XML 格式!-- 单个 Action 锚点中断型 --ProgramAnchorvector191anchoringinterruptiveInstrumentidVCC1,VCC2,GNDInstructionidactionCallvalueppmuIfVm1//Instrument/Anchor/Program!-- 多个 Action 并行锚点同一向量触发多个 Action --Anchorvector191anchoringinterruptiveInstrumentidpin01InstructionidactionCallvalueaction01//Instrument/AnchorAnchorvector191anchoringinterruptiveInstrumentidpin02InstructionidactionCallvalueaction02//Instrument/AnchorNarrowing指定 Action 作用的信号子集默认情况下一个 Action 作用于其仪器设置中指定的所有信号。使用Narrowing可以限定 Action 只作用于部分信号// 在 Operating Sequence 中指定 narrowing actionCall myAction VCC1 VCC2; // 只对 VCC1 和 VCC2 执行四、Operating Sequence测试执行的时序乐谱Operating Sequence操作序列是 Pattern 和 Action 的高层时序编排框架用.seq文件描述。它回答一个问题这些激励和测量动作以什么顺序、什么时间关系执行两种基本组顺序与并行Sequential Group顺序组内部元素依次执行前一个结束后才开始下一个。可以包含PatternActionWait延迟嵌套的 Parallel GroupParallel Group并行组内部的所有 Sequential Group 同时启动。只能包含 Sequential Group不能直接包含 Pattern 或 Action。嵌套规则Parallel Group ⊂ Sequential Group ⊂ Parallel Group ⊂ …可以无限嵌套Sequential Group 不能直接包含 Sequential GroupParallel Group 不能直接包含 Parallel Group一个执行步骤示例Operating Sequence: [顺序组 1] - Pattern 1 - Action 1 - Pattern 2 - [并行组 1] [顺序组 2]: Pattern 3 → Action 2 [顺序组 3]: Pattern 4 - Pattern 5 - [并行组 2] [顺序组 4]: Pattern 6 [顺序组 5]: Pattern 7含 Action 3 锚点 → Action 4执行流程Pattern 1 → Action 1 → Pattern 2串行执行并行组 1 启动Pattern 3 和 Pattern 4 同时开始Pattern 3 完成 → Action 2 执行Action 2 和 Pattern 4 都完成后 → Pattern 5 开始并行组 2 启动Pattern 6 和 Pattern 7 同时开始Pattern 7 执行到锚点 → Action 3 触发属于 Pattern 的锚点不属于并行组的顺序元素Action 4 与 Pattern 6/7 的并行逻辑执行同步机制Operating Sequence 提供三种同步手段① Parallel Group最常用确保多个顺序组同时开始。系统会自动在较短的组后面插入 paddingbreak vectors使其与较长的组对齐。② Anchored Action通过 Pattern 锚点在特定向量时刻触发 Action实现与 Pattern 内部的精确时间绑定。③ Wait Element在顺序组中插入固定时间的延迟用于等待 DUT 稳定或满足协议时序要求// 在 Operating Sequence 中 patternCall mySetupPattern.pat wait 1ms // 等待 1ms DUT 建立稳定 actionCall myDcMeas注意当wait之后紧跟 action 时action 的 preparation 和 activation 不能与wait前的元素重叠这可能导致 action 的执行被延迟。如有精确时序要求应使用 anchored action 而非 wait。Padding自动填充当并行执行的多个 Pattern 长度不同时系统自动在短 Pattern 的信号上补充 break vectors填充直到所有并行 Pattern 都执行完毕Pattern A长[XXXXXXXXXXXXXXXXXXXX...] Pattern B短[YYYYYYY][padding......] ← 自动填充 break vectorsPadding 对测试程序透明但可能影响测试时间特别是大量并行执行时。两种特殊模式Burst Operating Sequence仅调用其他 Operating Sequence不含标准结构执行速度更快SmartBurst 功能。Burstable Operating Sequence标准 Operating Sequence但满足特定限制以允许被 Burst OS 调用。五、Test MethodJava 代码的四个生命周期方法Test Method 是一个继承自TestMethod的 Java 类有四个可重写的方法分别在不同的执行状态中被调用。publicclassMyFunctionalTestextendsTestMethod{// 可选在 activated → loaded 转换早期执行Overridepublicvoidinitialize(){// 设置测试描述符的默认值// 这些值可以被 test table 的 PreBind 阶段覆盖}// 可选在 PreBind 执行后activated → loaded 转换后期执行Overridepublicvoidsetup(){// 用 Device Setup API 程序化创建配置文件// 优先级高于文件中的配置}// 可选在 loaded → bound 转换中执行Overridepublicvoidupdate(){// 用 Device Test API 修改内存中的测试数据// 不影响原始配置文件}// 必须实现在 testflow running 状态中执行Overridepublicvoidexecute(){// 执行测量评估结果记录日志// 使用 Device Test API}}四个方法的执行时机与职责方法执行时机可以做什么initialize()activated → loaded早期PreBind 之前设置测试描述符默认值这些值可以被 test table 覆盖setup()activated → loaded后期PreBind 之后用 Device Setup API 程序化创建/覆盖配置文件中的设置update()loaded → bound用 Device Test API 修改内存中的测试数据不改源文件execute()testflow running执行测量、判断 pass/fail、记录日志不同方法之间的优先级文件中的配置.spec 等 ↓ 被 setup() 覆盖 ↓ 被 update() 进一步修改仅内存 ↓ execute() 实际运行三套 API 及其职责API用于哪个方法职责Device Setup APIinitialize(),setup()程序化创建/修改配置文件spec、operating sequence 等Device Test APIupdate(),execute()执行测量、修改内存数据、获取结果SSF API由 Device Setup API 内部使用生成/修改 SmarTest Setup Format 文件也可在外部工具中使用额外的 RF Demodulation API提供 RF 信号解调功能适用于无线测试场景。Executor MethodTest Suite 的高层控制器除 Test Method 外SmarTest 还提供Executor Method它继承自ExecutorMethod类。与 Test Method 的区别在于Executor Method 不仅控制测量还可以控制 Test Suite 的执行publicclassSomeCustomExecutorMethodextendsExecutorMethod{publicStringtargetSuiteMain.SubFlow.SomeSuite;Overridepublicvoidexecute(){ISuiteAccessaSuitecontext.getSuiteAccess(targetSuite);// 修改 Test Suite 的参数IParameterAccessaParameteraSuite.getParameter(aParameter);aParameter.setValue(2.0);// 执行 Test SuiteaSuite.execute();}}六、Wait Time仪器动作的等待时间每个 Action 可以配置一个wait time指定动作执行阶段的最短持续时间对于电流/电压强制force动作wait time 是强制信号保持的最短时间对于测量measure动作wait time 是激励稳定后到采样时刻的延迟典型应用场景DUT board 上的 relay 切换时间通常几十 msDPS 范围切换或去合并unganging的建立时间DUT 内部电容充电所需的建立时间测量路径切换后的稳定等待// 在 spec 文件中为某个 action 设置等待时间 action myIfvm { iforce 1mA; waitTime 1ms; // 电流强制后等待 1ms 再结束 }总结概念一句话关键点Action仪器的单个可触发操作定义在.spec从 Test Method/Pattern/OS 触发Action 生命周期四阶段Preparation→Activation→Execution→Deactivation仪器在执行期间不可被修改Pattern Anchor将 Action 绑定到 Pattern 的特定向量中断型同信号vs 非中断型不同信号Operating SequencePattern 和 Action 的时序编排框架顺序组串行和并行组同时启动Padding自动在短 Pattern 后补充 break vectors 以同步对程序透明但影响性能Test Method四个 Java 方法按不同执行阶段被调用initialize/setup/update/execute 各司其职下一篇终篇将解析Test Program 的完整执行流程与状态机从 activate 到 stop 的每个阶段、辅助 Testflow 的触发时机、内存管理与异常处理。