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

【芯片测试】: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 按时序编排在一起。

相关文章:

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

Pattern 详解:向量、Sequencer 指令与高速串行 IO系列: Advantest V93000 SmarTest 8 核心概念解析|第 6 篇(共 8 篇) 适合读者: 需要理解数字测试激励数据结构的工程师前言 Pattern(模式&#…...

ICE-T框架:破解机器学习教学黑箱,培养计算与解释性思维

1. 项目概述:为什么我们需要一个全新的机器学习教学框架?在过去的几年里,我亲眼见证了“人工智能”和“机器学习”从一个高深莫测的学术词汇,迅速演变为中小学乃至大学课堂上的热门话题。作为一名长期关注教育技术落地的从业者&am…...

AutoIRT:融合AutoML与IRT,实现自适应测试题目参数的自动化高效校准

1. 项目概述与核心价值在语言能力测评、职业资格认证乃至教育领域的个性化学习路径规划中,计算机化自适应测试(CAT)正扮演着越来越核心的角色。它的魅力在于“千人千面”——系统能根据考生上一题的作答表现,实时调整下一题的难度…...

量子机器学习数据集构建:从核心要素到工程实践

1. 量子机器学习数据集构建:从分类到实践的核心思路量子机器学习(QML)这个领域,现在就像十年前的深度学习,概念很热,但真正能上手、能复现、能出成果的“基础设施”还非常稀缺。我接触过不少从经典机器学习…...

经典通信赋能分布式量子机器学习:NISQ时代的实用化路径探索

1. 项目概述:当量子机器学习遇上分布式架构量子机器学习(QML)这几年火得不行,它背后的逻辑其实挺吸引人的:利用量子态的叠加和纠缠特性,把数据映射到指数级庞大的希尔伯特空间里进行处理。理论上&#xff0…...

机器学习增强无导数优化:Sobolev学习与代理模型实践

1. 项目概述与核心思路在工程优化、材料设计乃至金融建模中,我们常常会遇到一类“黑箱”问题:你有一个复杂的仿真程序或物理实验,输入一组参数,它能吐出一个结果(比如性能指标、成本或误差),但你…...

AI Agent记忆方案大比拼:RAG、Mem0、Zep、Letta怎么选?告别选型迷茫!

本文综述了多种AI Agent记忆方案,包括RAG、Mem0、Zep、Letta、LangMem等,并分析了它们各自的适用场景和优缺点。文章指出,选择合适的记忆方案需要根据具体应用场景来确定,如RAG适合知识库检索,Mem0适合跨会话个性化&am…...

自动去偏机器学习:正交损失与Riesz表示定理驱动的高效统计推断

1. 项目概述与核心价值在统计机器学习和因果推断的实际研究中,我们经常面临一个经典困境:为了捕捉数据中复杂的非线性关系,我们不得不使用像梯度提升树、深度神经网络这类灵活且强大的机器学习模型来拟合干扰参数(例如倾向得分、条…...

ml_edm:基于成本敏感的时间序列早期分类Python工具包详解

1. 项目概述在工业监控、医疗诊断和金融风控这些领域,我们常常面对一个共同的困境:数据是随着时间一点点“流”进来的,但决策却不能等到所有数据都齐备了再做。比如,一台设备传感器传回的振动信号刚开始出现异常,你是立…...

为什么你的MJ图总像“老胶片过曝”?揭秘ISO模拟算法缺陷,5种降颗粒参数组合实测对比(含LUT映射表)

更多请点击: https://kaifayun.com 第一章:为什么你的MJ图总像“老胶片过曝”?揭秘ISO模拟算法缺陷,5种降颗粒参数组合实测对比(含LUT映射表) MidJourney 默认的图像生成流程中隐式嵌入了一套基于扩散步长…...

Agent 状态持久化:基于 Redis 的多轮交互上下文存储方案

一、 引言 (Introduction) 1.1 钩子:从 Siri 答非所问到 AI Agent 的「失忆症噩梦」 你有没有遇到过这种令人血压升高的场景: 早上起床,对着家里的智能音箱(假设它搭载了最新的「多轮对话」AI Agent)说:“嘿…...

开源机器学习项目贡献者角色演化与社区健康度分析

1. 开源机器学习项目中的贡献者角色:一个动态的生态系统在开源软件的世界里,尤其是像TensorFlow、PyTorch这样的机器学习(ML)库,项目的生命力并非仅仅源于几行精妙的代码,而是根植于一个由多元角色构成的、…...

基于共享潜在空间的贝叶斯优化:解决异构算法超参数联合选择难题

1. 项目概述与核心挑战在机器学习项目的落地过程中,我们常常面临一个看似简单实则复杂的选择:面对一个具体的数据集,究竟该用哪个算法,以及这个算法的最佳超参数组合是什么?这个问题,在学术上被称为“联合算…...

Leslie矩阵建模:从种群动力学到捕食竞争与机器学习拟合

1. 项目概述:从矩阵视角看种群兴衰在生态学和种群生物学里,我们总想预测未来:这片森林里的鹿群十年后会怎样?引入狼群后,整个系统会稳定还是崩溃?传统微分方程模型(比如经典的Lotka-Volterra方程…...

B物理反常的全局拟合:有效场论与机器学习解析新物理信号

1. 项目概述:当B介子衰变“不听话”时,我们如何用数学语言寻找新物理?在粒子物理的精密前沿,标准模型(Standard Model, SM)一直是我们理解微观世界最成功的理论框架。然而,物理学家们从未停止过…...

Android加固反调试绕过:Frida动态劫持pthread_create实战

1. 这不是“破解”,而是理解Android加固对抗中的一次典型动态插桩实践你打开B站App,刚点开首页,进程就闪退了;或者在Frida脚本里下断点到pthread_create,App直接静默终止——这不是崩溃日志里常见的NullPointerExcepti…...

从DALL·E 3到Midjourney 6:对比度渲染引擎差异白皮书(附17组跨模型PSNR/SSIM实测数据)

更多请点击: https://codechina.net 第一章:从DALLE 3到Midjourney 6:对比度渲染引擎差异白皮书(附17组跨模型PSNR/SSIM实测数据) 现代文本到图像生成模型在对比度建模策略上存在根本性分歧:DALLE 3 采用基…...

Spark Transformer:稀疏激活优化与计算效率提升

1. Spark Transformer 核心设计解析Transformer架构在自然语言处理领域展现出卓越性能,但其计算密集型特性也带来了显著的资源消耗。传统Transformer模型的前馈网络(FFN)和注意力机制采用全连接计算模式,导致FLOPs(浮点运算次数)居高不下。Spark Transfo…...

从《原神》到《黑神话》都在用的AI Agent中间件:轻量级推理框架v0.9.3内部测试版首次泄露(仅限前500名开发者)

更多请点击: https://codechina.net 第一章:AI Agent游戏行业应用全景图 AI Agent 正在重塑游戏开发、运营与玩家体验的全生命周期。从智能NPC行为建模到实时动态世界生成,从自动化测试脚本到个性化内容推荐,AI Agent已不再局限于…...

车企AI Agent团队组建白皮书(附2024头部厂商组织架构图+7个核心岗位能力雷达图)

更多请点击: https://intelliparadigm.com 第一章:车企AI Agent团队组建的战略意义与行业演进 在智能网联汽车加速落地的背景下,AI Agent已从实验室概念演进为车载系统的核心决策单元——它不再仅执行预设指令,而是具备环境感知、…...

KNO标度律与粒子多重数:从QCD喷注结构到夸克-胶子鉴别的理论推导

1. 项目概述:从粒子计数到喷注身份鉴别 在粒子物理实验里,我们经常面对一个看似简单却极其棘手的问题:眼前这个由上百个粒子组成的“喷注”(Jet),最初到底是从一个夸克还是从一个胶子产生的?这…...

别急着重启!深入理解Ubuntu 22.04的needrestart:守护进程、库文件与系统更新背后的原理

别急着重启!深入理解Ubuntu 22.04的needrestart:守护进程、库文件与系统更新背后的原理在Ubuntu 22.04 LTS的系统维护中,许多管理员都曾遇到过这样的场景:执行apt upgrade后,终端突然弹出"Daemons using outdated…...

新手避坑指南:在Ubuntu 22.04上从零搭建Plexe-SUMO自动驾驶仿真环境

新手避坑指南:在Ubuntu 22.04上从零搭建Plexe-SUMO自动驾驶仿真环境自动驾驶仿真技术已成为学术界和工业界验证算法有效性的重要手段。对于刚接触该领域的研究者而言,环境搭建往往是第一个"拦路虎"。本文将手把手带你完成Plexe-SUMO环境的完整…...

如何用OneMore插件让OneNote成为你的高效笔记神器

如何用OneMore插件让OneNote成为你的高效笔记神器 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 你是否曾经在使用OneNote时感到功能不够用?想要更强大的…...

Windows 11 + Ubuntu 20.04双系统避坑:搞定WiFi图标消失的完整保姆级流程

Windows 11与Ubuntu 20.04双系统WiFi修复全指南1. 双系统网络问题的根源探究刚完成Windows 11和Ubuntu 20.04双系统安装的用户,经常会遇到一个令人头疼的问题——Ubuntu系统下WiFi图标神秘消失。这不是个例,而是双系统环境下相当普遍的现象。要彻底解决这…...

Decompyle++:Python字节码源码恢复实战指南

1. 这不是“反编译”,是字节码层面的源码重建——为什么Decompyle成了Python逆向事实标准你有没有遇到过这样的情况:接手一个只有.pyc文件的遗留项目,没有源码,连__pycache__目录都被人删干净了;或者审计第三方SDK时&a…...

Unity深度调试框架UniHacker:突破IL2CPP可观测性断层

1. 这不是“破解工具”,而是一套面向Unity开发者的深度调试与逆向协作框架“UniHacker”这个名字在社区里常被误读为某种一键解锁Asset Store资源或绕过License校验的黑盒程序——这恰恰是我们今天要彻底厘清的第一件事。它既不触碰Unity官方EULA中关于授权使用的核…...

深度学习框架与编程语言选型指南:从TensorFlow、PyTorch到Java生态的实战解析

1. 项目概述在人工智能浪潮席卷全球的今天,机器学习与深度学习已不再是实验室里的概念,而是驱动产业变革、解决实际问题的核心引擎。无论是识别网络中的异常流量以抵御攻击,还是从海量数字证据中快速定位关键线索,这些技术都展现出…...

3D高斯渲染技术原理与Lumina架构优化实践

1. 3D高斯渲染技术原理与挑战3D高斯渲染(3D Gaussian Splatting)作为神经渲染领域的前沿技术,其核心思想是将3D场景表示为一系列带有属性的高斯分布集合。每个高斯点包含位置(μ)、协方差矩阵(Σ&#xff0…...

大型语言模型推理加速:Lyanna架构与推测解码优化

1. 大型语言模型推理加速的技术挑战在自然语言处理领域,大型语言模型(LLM)的推理速度一直是制约其实际应用的关键瓶颈。传统自回归解码方式需要逐个生成token,这种序列化特性使得计算资源无法得到充分利用。以LLaMA-2-7B模型为例,在NVIDIA A1…...