当前位置: 首页 > news >正文

【芯片测试】: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 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 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 SignalIP 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 序列化后传输

六、Link Scale / HSIO:高速串行扫描

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

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

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 按时序编排在一起。


http://www.jsqmd.com/news/875530/

相关文章:

  • 工业物联网智能计量网络入侵检测:机器学习实战与边缘部署
  • LoRA专家混合技术评测:RAMoLE如何实现动态任务适配与性能提升
  • 机器学习赋能高维量子导引检测:从SVM到ANN的实践探索
  • C#/Halcon:简单介绍在AOI设备软件中的应用
  • 基于图元随机游走的网络嵌入:提升同质性与下游任务性能
  • 量子机器学习采样加速:热力学视角下的双向量子制冷器
  • 量子机器学习在消费电子异常检测中的应用与实战解析
  • Claude Code-入门篇-Claude-Code基础与环境配置
  • 为Claude Code配置Taotoken后端,告别封号与Token不足困扰
  • AI Agent安全治理框架缺失导致客户数据泄露?(Gartner 2024新评估模型首次落地解读)
  • 图数据管理与图机器学习:双向赋能的技术融合与实战解析
  • 含光热电站的冷、热、电综合能源系统优化调度【节点网络】附Matlab代码
  • 【芯片测试】:7. Action 与 Operating Sequence
  • 新手避坑指南:在Ubuntu 22.04上从零搭建Plexe-SUMO自动驾驶仿真环境
  • 年薪50万必备技能:.NET云原生架构实战,3分钟部署全球可用的微服务
  • GE 和 Runtime:不是上下游,是协同决策
  • Midjourney --style raw + 调色板协同失效?3步诊断流程+4类硬件级色彩配置冲突解决方案
  • 反应坐标映射:非马尔可夫开放量子系统的高效模拟方法
  • B物理反常的全局拟合:有效场论与机器学习解析新物理信号
  • 神经材质:NeRF之后,下一代数字内容的“皮肤”革命
  • Harness Engineering:麻绳还是马绳
  • SVM在频繁模式挖掘中的应用:从高维稀疏数据中提取判别性关联规则
  • Leslie矩阵建模:从种群动力学到捕食竞争与机器学习拟合
  • 从《原神》到《黑神话》都在用的AI Agent中间件:轻量级推理框架v0.9.3内部测试版首次泄露(仅限前500名开发者)
  • 别急着重启!深入理解Ubuntu 22.04的needrestart:守护进程、库文件与系统更新背后的原理
  • Telnet与SSH协议安全本质对比:从明文传输到公钥认证
  • 神经阴影:当AI学会“画影子”,实时渲染的下一个突破口
  • KNO标度律与粒子多重数:从QCD喷注结构到夸克-胶子鉴别的理论推导
  • 从语义网到神经符号系统:知识图谱与LLM融合实战指南
  • 为什么你的MJ图总像“老胶片过曝”?揭秘ISO模拟算法缺陷,5种降颗粒参数组合实测对比(含LUT映射表)