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

发布时间:2026/5/24 6:02:02

【芯片测试】:6. 向量、Sequencer 指令与高速串行 IO Pattern 详解向量、Sequencer 指令与高速串行 IO系列Advantest V93000 SmarTest 8 核心概念解析第 6 篇共 8 篇适合读者需要理解数字测试激励数据结构的工程师前言Pattern模式是 SmarTest 测试中最庞大的数据单元可能包含数亿个向量占据数 GB 的存储空间。理解 Pattern 的结构不仅关系到写出正确的测试更关系到如何在有限的测试机内存中高效组织数据。本篇覆盖三个层次基础Pattern 的文件结构、Vector 的格式、Signal Group存储向量内存的硬件组织与优化Memory Pooling高级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 不关心dont care每个状态字符如0、1、H、L、X、Z都在 wavetable 中有对应的波形定义参见第 4 篇。每个向量中每个信号必须有且仅有一个状态字符。Pattern 可以用在哪里直接绑定在 Test Suite 上最简单用法一个 test suite 直接指定一个 pattern通过 Operating Sequence 调用多个 pattern 和 action 按时序编排后由 test suite 使用 operating sequence二、Signal Group in Pattern批量广播什么是 Signal GroupSignal Group 允许把多个拥有相同波形需求的信号合并成一个组在 pattern 中只写一列状态字符SmarTest 自动将该状态字符广播给组内所有信号。适用场景场景 1多核 SOC 中的相同 IP 核例如一个 DUT 上有 16 个 CPU core每个 core 的 CLK 信号都需要相同的时钟波形。使用 signal groupIO07_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 setMatchLoop是一个特别有用的指令常用于等待 DUT 完成内部初始化busy-wait等待 DUT 输出特定响应后才继续四、向量内存的硬件组织数字卡的物理结构以 PS5000 为例一张卡有多个逻辑板Logical Board每个逻辑板对应 DUT board 上一个 pogo block16 个 pogo pin。每个逻辑板内有两个测试处理器Test Processor每个处理器控制一个8-channel group的内存。PS5000 卡单张 ├── Logical Board 1 │ ├── Test Processor A → 8-channel groupCH01~CH08 │ └── Test Processor B → 8-channel groupCH09~CH16 ├── Logical Board 2 │ ├── ...关键约束内存共享和 pooling 只能发生在同一个 channel group 内PS5000 Xtreme Pooling 是例外。Pin Scale Memory Pooling自动利用碎片内存不同信号对向量内存的需求差异极大深扫描信号Deep Scan通过高速串行接口传输大量扫描数据需要 GB 级内存控制信号CLK、RESET、SYNC 等只需要少量向量内存这种不均衡导致大量内存碎片。Memory Pooling机制自动利用富余信号的空闲内存来存储缺口信号的向量数据Channel Group8 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 捐给 BB 无法再捐给 CXtreme Memory PoolingPS5000、PSMLS B 专属当深扫描信号需要的数据超过整个 channel group 的容量时Xtreme Memory Pooling允许跨 channel group 转移数据Channel Group A内存空闲 Channel Group B深扫描内存饱和 ↓ ↑ 存储 B 的向量数据 →→→ 运行时复制到 B →→→ 执行完释放 →→→ 接收下一批这实现了流水线式的数据供给使得深扫描信号可以执行远超单个 channel group 容量的向量序列。五、Virtual PatternSOC 多核测试的抽象随着 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 SignalIP Core 的内部信号不直接连接 pogo pinVirtual Vector 与 Virtual PatternVirtual Vectorm 个 virtual signal 在一个 core cycle 的状态字符数组类比 DUT 的 vectorVirtual Pattern一系列 virtual vector 的序列描述某个 IP Core 的激励或期望响应类比 DUT 的 parallel pattern例如一个有 5 个 IP 核A、B、C、D、E的 SOCCore 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 序列化后传输六、Link Scale / HSIO高速串行扫描传统的 ATE 测试使用并行 pogo pin 接口传输向量数据。随着 DUT 数据量增加并行接口的带宽和引脚资源不足出现了通过**高速串行接口HSIO**传输扫描数据的方案——这就是Link Scale。Link Scale 的架构Link Scale 使用USB3或PCIe4这两种 HSIO 协议与 DUT 通信测试机 Link Scale 卡 ↓USB3 或 PCIe4 高速串行链路 DUT 上的 DUT Scan ControllerDFT 组件 ↓内部路由 各 IP Core 的 Scan ChainDUT 上必须有一个DUT Scan Controller它负责接收 HSIO 数据包解包后将扫描数据路由到各个内部扫描链。Link Scale HSIO PatternLink 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 MappingDUT 响应的序列化输出需要被还原为与 Virtual Pattern 对应的数据结构这个过程叫后向映射Back MappingDUT HSIO 输出流 → 反序列化 → 按信号分配的并行结构 → 标记失败周期结果有两种形式Raw Result Data直接从 HSIO 比特流中提取的原始失败比特Back-mapped Data将失败比特映射回 Virtual Signal 的失败周期更易于分析工具链分工Link Scale 的前向/后向映射不是 SmarTest 功能而是由第三方 EDA 工具完成例如 Synopsys TestMAX ALE。SmarTest 的职责是接受已序列化好的 HSIO Pattern通过 Link Scale 卡物理传输收集 DUT 的 HSIO 响应输出将 raw 结果或 back-mapped 结果提供给测试方法七、Pattern 相关的数量限制速查限制项数值每个 wavetable 最大波形数256Pattern 文件大小无硬性上限受内存约束向量数必须是 X-Mode 的倍数X8 模式 → 向量数必须是 8 的倍数每个 tester cycle 最大 drive/receive edge 数X1PS1600/PS50008Signal Group 内信号数无硬性上限总结概念一句话关键点Pattern向量序列 sequencer 指令.pat是 zip 文件包含 program/vectors 等Vector所有信号在一个 device cycle 的状态字符数组每信号一个状态字符Signal Group相同波形信号的批量广播省列宽但底层仍有独立内存Memory Pooling利用闲置内存为高需求信号服务自动透明跨 channel group 需 Xtreme Pooling仅 PS5000、PSMLS BVirtual Pattern针对 IP Core 内部信号的抽象向量序列不直接连 pogo pin需序列化传输Link Scale / HSIO通过 USB3/PCIe4 串行传输扫描数据DUT 需要 DUT Scan Controller前/后向映射由 EDA 工具完成下一篇将介绍Action 与 Operating Sequence讲清楚仪器动作的生命周期以及如何把 Pattern 和 Action 按时序编排在一起。

相关新闻