【芯片测试】:6. 向量、Sequencer 指令与高速串行 IO

Pattern 详解:向量、Sequencer 指令与高速串行 IO

系列: Advantest V93000 SmarTest 8 核心概念解析|第 6 篇(共 8 篇)
适合读者: 需要理解数字测试激励数据结构的工程师


前言

Pattern(模式)是 SmarTest 测试中最"庞大"的数据单元,可能包含数亿个向量,占据数 GB 的存储空间。理解 Pattern 的结构,不仅关系到写出正确的测试,更关系到如何在有限的测试机内存中高效组织数据。

本篇覆盖三个层次:

  1. 基础:Pattern 的文件结构、Vector 的格式、Signal Group
  2. 存储:向量内存的硬件组织与优化(Memory Pooling)
  3. 高级:SOC 多核测试的 Virtual Pattern,以及高速串行接口的 Link Scale / HSIO

一、Pattern 的基本结构

一个 Pattern 是**向量序列(vectors) Sequencer 指令(sequencer instructions)**的组合,存储为 .pat 文件(本质是 zip 压缩包,包含多个子文件):

复制代码
pattern_file.pat (zip archive)
    ├── program     ← Sequencer 指令(循环、跳转、Action 锚点等)
    ├── vectors     ← 向量数据(状态字符阵列)
    ├── comments    ← 注释(可选)
    └── metadata    ← 元数据(可选)

Vector(向量)

Vector 是一个状态字符的线性数组,每个位置对应一个 DUT 信号(或信号组)在当前 device cycle 的波形。

复制代码
向量示例(5个信号,向量编号31245):

信号:  CLK  DATA0  DATA1  RESETn  IO_OUT
向量:   1     0      1      H       X

含义:CLK 驱动高,DATA0 驱动低,DATA1 驱动高,
      RESETn 输出期望高,IO_OUT 不关心(don't care)

每个状态字符(如 01HLXZ)都在 wavetable 中有对应的波形定义(参见第 4 篇)。每个向量中,每个信号必须有且仅有一个状态字符。

Pattern 可以用在哪里

  • 直接绑定在 Test Suite 上:最简单用法,一个 test suite 直接指定一个 pattern
  • 通过 Operating Sequence 调用:多个 pattern 和 action 按时序编排后,由 test suite 使用 operating sequence

二、Signal Group in Pattern:批量广播

什么是 Signal Group

Signal Group 允许把多个拥有相同波形需求的信号合并成一个"组",在 pattern 中只写一列状态字符,SmarTest 自动将该状态字符广播给组内所有信号。

适用场景

场景 1:多核 SOC 中的相同 IP 核

例如一个 DUT 上有 16 个 CPU core,每个 core 的 CLK 信号都需要相同的时钟波形。使用 signal group IO07_CPU,将 16 个 CLK 信号合并,pattern 中只写一列。

场景 2:多个相同功能模块

PCIe 接收信号组 RXp3 包含 8 路 PCIe 信号,测试时发送相同激励,使用 signal group 可以大幅减少 pattern 的列数和 binding 时间。

内存的注意点

虽然一个 signal group 在 pattern 中看起来只有一列,但底层每个信号仍然有自己独立的 pogo pin 和向量内存 。数据在 binding 时被复制到每个信号各自的内存中。如果要避免这种内存复制,需要使用 Pin Scale Intra-site Memory Sharing(同一 channel group 内存共享)。


三、Sequencer 指令:控制 Pattern 执行流程

Pattern 不是线性播放的,Sequencer 指令可以在向量中插入控制流:

指令类别 功能
Loop / Repeat 重复执行一段向量 N 次
GenVec 生成并执行 N 个向量
Call / Jump 跳转到 pattern 的另一处
MatchLoop 循环执行直到 DUT 响应匹配期望值(动态等待)
BreakPoint 在并行 pattern 中标记同步点;配合 break vector 使用
Action Anchor 在特定向量位置触发一个 Action(仪器操作)
CTIM / CLEV 在 pattern 执行中途切换 timing set 或 level set

MatchLoop 是一个特别有用的指令,常用于:

  • 等待 DUT 完成内部初始化(busy-wait)
  • 等待 DUT 输出特定响应后才继续

四、向量内存的硬件组织

数字卡的物理结构

以 PS5000 为例,一张卡有多个逻辑板(Logical Board) ,每个逻辑板对应 DUT board 上一个 pogo block(16 个 pogo pin)。每个逻辑板内有两个测试处理器(Test Processor) ,每个处理器控制一个 8-channel group 的内存。

复制代码
PS5000 卡(单张)
    ├── Logical Board 1
    │    ├── Test Processor A → 8-channel group(CH01~CH08)
    │    └── Test Processor B → 8-channel group(CH09~CH16)
    ├── Logical Board 2
    │    ├── ...

关键约束: 内存共享和 pooling 只能发生在同一个 channel group 内(PS5000 Xtreme Pooling 是例外)。

Pin Scale Memory Pooling:自动利用碎片内存

不同信号对向量内存的需求差异极大:

  • 深扫描信号(Deep Scan):通过高速串行接口传输大量扫描数据,需要 GB 级内存
  • 控制信号(CLK、RESET、SYNC 等):只需要少量向量内存

这种不均衡导致大量内存碎片。Memory Pooling 机制自动利用"富余"信号的空闲内存来存储"缺口"信号的向量数据:

复制代码
Channel Group(8 channels)
    CH01: Signal S01(需要 48 MiB,已许可 64 MiB,剩余 16 MiB)
    CH06: Signal S07(需要 62 MiB,已许可 112 MiB,剩余 50 MiB)
                   ↑
    S02 需要 110 MiB,但自身只有 64 MiB 许可
    → Memory Pooling 自动将 S02 的额外数据存入 S07 的剩余空间
    → S02 可以访问 S07 的"捐出"内存,无需物理搬运

Memory Pooling 是完全透明的,无需修改测试程序或 pattern,系统自动完成。

约束:

  • Donor 和 Recipient 必须在同一个 4/8-channel group 内
  • Recipient 的许可内存级别必须 ≥ Donor(只能向"上捐")
  • 不支持级联(A 捐给 B,B 无法再捐给 C)

Xtreme Memory Pooling(PS5000、PSMLS B 专属)

当深扫描信号需要的数据超过整个 channel group 的容量时,Xtreme Memory Pooling 允许跨 channel group 转移数据:

复制代码
Channel Group A(内存空闲)     Channel Group B(深扫描,内存饱和)
        ↓                                  ↑
    存储 B 的向量数据  →→→  运行时复制到 B  →→→  执行完释放  →→→  接收下一批

这实现了"流水线式"的数据供给,使得深扫描信号可以执行远超单个 channel group 容量的向量序列。


五、Virtual Pattern:SOC 多核测试的抽象

随着 SOC 的复杂度增加,DUT 内部有多个 IP 核(Core A、B、C...),每个核有自己的接口信号。但这些核的信号不一定直接连接到测试机的 pogo pin------它们可能是 DUT 内部路由,只能通过扫描链间接访问。

SmarTest 引入Virtual Signal 和 Virtual Pattern来处理这种情况。

三个层次的信号

层次 名称 描述
物理层 DUT Pin / Pogo Pin 实际与测试机接触的管脚
逻辑层 DUT Signal 测试程序中使用的逻辑信号名(通过 .dbd 映射到 pogo pin)
虚拟层 Virtual Signal IP Core 的内部信号,不直接连接 pogo pin

Virtual Vector 与 Virtual Pattern

Virtual Vector:m 个 virtual signal 在一个 core cycle 的状态字符数组(类比 DUT 的 vector)

Virtual Pattern:一系列 virtual vector 的序列,描述某个 IP Core 的激励或期望响应(类比 DUT 的 parallel pattern)

例如一个有 5 个 IP 核(A、B、C、D、E)的 SOC:

复制代码
Core A:  Asig0  Asig1
         虚拟向量序列 → Virtual Pattern A

Core B:  Bsig0  Bsig1  Bsig2  ...  Bsig7
         虚拟向量序列 → Virtual Pattern B

Core C:  Csig0  Csig1  ...  Csig4
         虚拟向量序列 → Virtual Pattern C

...(D、E 类似)

每个 IP Core 有自己独立的 Virtual Pattern,它们捕获了该 Core 在功能测试中应该发送和接收的完整数据序列。

重要限制

  • Virtual Pattern 不能是 site-specific(不支持不同 site 发不同数据)
  • SmarTest 8 的 .pat 文件原生支持 virtual pattern 格式
  • Virtual Pattern 不通过标准 pogo pin 接口直接执行,而是由 Link Scale / HSIO 序列化后传输

传统的 ATE 测试使用并行 pogo pin 接口 传输向量数据。随着 DUT 数据量增加,并行接口的带宽和引脚资源不足,出现了通过**高速串行接口(HSIO)**传输扫描数据的方案------这就是 Link Scale

Link Scale 使用 USB3PCIe4 这两种 HSIO 协议与 DUT 通信:

复制代码
测试机 Link Scale 卡
        ↓(USB3 或 PCIe4 高速串行链路)
DUT 上的 DUT Scan Controller(DFT 组件)
        ↓(内部路由)
各 IP Core 的 Scan Chain

DUT 上必须有一个DUT Scan Controller,它负责接收 HSIO 数据包,解包后将扫描数据路由到各个内部扫描链。

Link Scale HSIO Pattern 是在 Virtual Pattern 基础上,增加了序列化信息和 DUT Scan Controller 控制指令的扩展格式:

复制代码
Link Scale HSIO Pattern = 序列化的 Virtual Pattern 数据
                        + (可选)DUT Scan Controller 控制指令

一个 HSIO Pattern 可以包含多个 Virtual Pattern,或包含让 DUT Scan Controller 自动生成 Virtual Pattern 的指令(DUT 自生成模式)。

前向映射(Forward Mapping)

前向映射是将 Virtual Pattern 的状态字符序列化为 HSIO 比特流的过程,规则包括:

  • 添加包头元信息(描述 pattern 结构)

  • 将信号名称替换为 DUT 内部标识符

  • 按 LSB/MSB 顺序、大端/小端字节序排列比特

    Virtual Pattern A → [包头] [信号ID映射] [数据比特流] → USB3/PCIe4 传输
    Virtual Pattern B → [包头] [信号ID映射] [数据比特流] ↗
    (两个 pattern 可打包在同一个 HSIO 数据包中)

后向映射(Backward Mapping)

DUT 响应的序列化输出需要被还原为与 Virtual Pattern 对应的数据结构,这个过程叫后向映射(Back Mapping)

复制代码
DUT HSIO 输出流  →  反序列化  →  按信号分配的并行结构  →  标记失败周期

结果有两种形式:

  • Raw Result Data:直接从 HSIO 比特流中提取的原始失败比特
  • Back-mapped Data:将失败比特映射回 Virtual Signal 的失败周期(更易于分析)

工具链分工

Link Scale 的前向/后向映射不是 SmarTest 功能,而是由第三方 EDA 工具完成(例如 Synopsys TestMAX ALE)。SmarTest 的职责是:

  1. 接受已序列化好的 HSIO Pattern
  2. 通过 Link Scale 卡物理传输
  3. 收集 DUT 的 HSIO 响应输出
  4. 将 raw 结果或 back-mapped 结果提供给测试方法

七、Pattern 相关的数量限制速查

限制项 数值
每个 wavetable 最大波形数 256
Pattern 文件大小 无硬性上限(受内存约束)
向量数必须是 X-Mode 的倍数 X8 模式 → 向量数必须是 8 的倍数
每个 tester cycle 最大 drive/receive edge 数(X1,PS1600/PS5000) 8
Signal Group 内信号数 无硬性上限

总结

概念 一句话 关键点
Pattern 向量序列 + sequencer 指令 .pat 是 zip 文件,包含 program/vectors 等
Vector 所有信号在一个 device cycle 的状态字符数组 每信号一个状态字符
Signal Group 相同波形信号的批量广播 省列宽,但底层仍有独立内存
Memory Pooling 利用闲置内存为高需求信号服务 自动透明,跨 channel group 需 Xtreme Pooling(仅 PS5000、PSMLS B)
Virtual Pattern 针对 IP Core 内部信号的抽象向量序列 不直接连 pogo pin,需序列化传输
Link Scale / HSIO 通过 USB3/PCIe4 串行传输扫描数据 DUT 需要 DUT Scan Controller;前/后向映射由 EDA 工具完成

下一篇将介绍 Action 与 Operating Sequence,讲清楚仪器动作的生命周期,以及如何把 Pattern 和 Action 按时序编排在一起。


相关推荐
Meraki.Zhang21 小时前
【芯片测试】:3. DUT Board Description 与 Measurement Specification 详解
芯片测试
Meraki.Zhang1 天前
【芯片测试】:SmarTest 开发环境入门
芯片测试
Meraki.Zhang2 天前
【芯片测试】:Driver、Comparator、PMU 与 Active Load
芯片测试
Meraki.Zhang2 天前
【芯片测试】:什么是 VCDSTIL?
芯片测试
Meraki.Zhang2 天前
【芯片测试】:基于时钟的时序提取
芯片测试
黑猫学长呀6 天前
存储宝典第6篇:测试机台的PE板和PPB板有什么区别?
测试工具·fpga开发·ssd·芯片测试·ate·存储芯片·测试机台
Meraki.Zhang7 天前
【芯片测试】:SmarTest 8 Software Overview
芯片测试
Meraki.Zhang7 天前
【芯片测试】:SmarTest 8 Hardware Overview
芯片测试
Meraki.Zhang15 天前
【芯片测试】:斜坡直方图测试
芯片测试