做新型存储器件研发的人,大多都会遇到一个共同问题:器件还在早期硅片阶段,工艺、结构、阵列、读写算法都在不断变化,但测试需求已经等不及了。
传统ATE当然强大,但它往往更适合已经比较稳定、测试流程比较明确、后续要进入量产验证的阶段。对于早期研发来说,真正麻烦的并不是“能不能测”,而是每一次器件结构变化、每一次波形调整、每一次算法迭代,都要重新搭建测试流、重新调试程序、重新导出数据、再重新分析结果。
2026年6月12日下午4:00 - 5:30,我们和客户工程师做了一场关于ReRAM如何测试的技术交流。整场交流围绕一个32×32 crossbar阵列展开,演示对象是一颗用于in-memory computing和vector-matrix multiplication方向的早期测试芯片。因为这颗芯片还处在first silicon阶段,器件本身并不完美,很多cell的set/reset行为并不理想。但也正因为如此,这场演示反而更接近真实研发现场:不是拿一个完美样品跑标准流程,而是看一套测试平台如何面对一个“不听话”的早期器件,快速搭建测试、观察现象、修改脚本、分析数据,并和客户一起讨论下一步如何适配真实芯片。
下面按照现场演示的时间顺序,把这次Test Mesh Demo做一个完整梳理。
Demo刚开始,Thomas先抛出了一个很直接的观点:在某些研发应用中,Test Mesh会比传统ATE更合适。
这里的“更合适”不是说ATE不强,而是说两者面对的场景不同。ATE的优势在于高并发、高稳定性、高吞吐、量产级测试能力;但在新型存储器件研发阶段,工程师最需要的往往是快速搭建实验、快速修改测试流、快速看到数据结果。
Thomas强调了三个点:
第一,ATE编程和调试周期长。对于一个还在不断变化的测试芯片,测试流可能今天要改set pulse,明天要改reset条件,后天又要增加read-after-write或者disturb测试。如果每次都走传统ATE开发流程,时间会非常长。
第二,Test Mesh更适合快速实验。现场提到,很多测试flow可以在几个小时内搭起来,而不是以周为单位等待。
第三,数据分析被集成进系统。测试完成后,结果不是先导出一堆log,再靠工程师手工处理,而是直接进入分析工具,马上看到array map、distribution、differential map等可视化结果。
这就是整场Demo的主线:Test Mesh不是只负责“施加波形”,而是把测试开发、执行和数据分析放在同一个平台里。
正式看硬件之前,Thomas先用一页图说明了Test Mesh平台的配置思路。
因为新型存储器件的结构差别很大,平台也不能只做成一种固定形态。比如:
如果客户做的是crossbar阵列,或者in-memory computing架构,那么更适合使用Gemini相关配置,也就是这次Demo所展示的方向。
如果客户的test chip是基于address decoder的结构,那么DMA相关配置会更合适。DMA可以驱动TXU,因此有些客户会根据不同DUT同时使用DMA和TXU。
如果客户已经进入更高级阶段,器件带有digital interface,或者部分操作已经数字化,但底层仍然需要访问memory array,那么可以考虑TMY-100与Gemini组合。
换句话说,Test Mesh不是一台固定仪器,而是一套可根据DUT结构重新组合的平台。对于ReRAM、PCM、MRAM、FRAM,以及各类crossbar/in-memory computing测试芯片来说,前端接口、阵列组织、选择方式、读写端子、波形需求都有很大差异。平台能否适配,关键不只是通道数量,而是硬件扩展板、波形源、数字控制、软件脚本和数据分析能不能一起跟着变化。
接着,Nicola把镜头转到实验室里的Gemini硬件平台。现场设备是打开状态,没有盖上外壳,方便客户看到内部结构。
系统主机侧有CPU和CodeX接口卡,接口卡上有一组34个SMB连接,用来把Test Mesh资源连接到外部扩展板。通过这组连接,可以引出波形发生器、数字通道、电源、电流参考以及测量相关资源。
这次Demo使用的是专门面向in-memory computing crossbar应用的扩展板。扩展板上有socket,用来放置客户的测试芯片。围绕socket,板上分成几个功能区域:
一部分用于word line相关控制; 一部分用于source line或drain/source侧的选择; 一部分用于selector控制; 同时还配有用于cell addressing的FPGA逻辑和高速连接。
现场演示的阵列是32×32结构,因此可以理解为有32条word line、32条selector line、32条bit line或对应的source/drain访问路径。每个区域都可以选择active和inactive两类波形,比如被选中的cell施加active电压,未选中的cell施加deselected voltage,从而避免误操作未选单元。
这里客户特别问了三块区域的含义。Thomas和Nicola解释说,在这颗Demo芯片里,某些命名和传统word line、bit line、source line叫法不完全一样,因为这是in-memory computing方向的测试芯片,不同客户对端子的命名也不一样。平台本身并不限制信号名字,Python脚本里可以根据客户器件定义成word line、source line、bit line、gate、drain、selector等任何更符合客户习惯的名称。
这点很重要。新型存储器件不是标准SSD,也不是标准DRAM。不同团队对cell结构、selector、source/drain、word line的定义可能不同。测试平台如果强行套固定命名,反而会增加沟通成本。Test Mesh的做法是让硬件资源可配置,让软件参数名也可配置。
硬件介绍过程中,现场还特别说明了扩展板和socket board的意义。
这次使用的扩展板是为一个特定客户的32×32 crossbar芯片设计的,里面有该芯片需要的信号路径、socket、调试点、保护电路和测试连接。板上还预留了一些SMB接口,用于调试特定cell或特定信号。
如果换成客户自己的芯片,尤其是封装形式、pinout、阵列结构、端子定义不同,就需要重新设计对应的socket board或base board。平台中很多模块可以复用,例如波形源、数字通道、测量单元、FPGA寻址逻辑等,但DUT接口板通常需要根据客户文档定制。
这也是后续待办里很关键的一项:客户需要把芯片文档、封装信息、pin定义、阵列组织和基本操作条件发给Thomas团队,由厂商评估如何做对应的Test Mesh配置和socket board。
硬件介绍结束后,Demo转到软件界面。
软件启动后,需要先打开一个server,然后进入用户界面。界面里能看到已经实现的program列表。现场选择的是一个面向32×32 ReRAM/crossbar阵列的配置。
第一次进入系统时,需要执行initialize。初始化过程中,软件会读取扩展卡EEPROM里的校准参数。这个设计很实用,因为不同扩展卡、不同socket board、不同测量路径都会有自己的校准信息,把这些参数放在扩展卡里,软件启动时自动读取,就可以减少人工配置错误。
初始化完成后,系统进入interactive模式。界面中列出了当前可以执行的功能,例如read、set、reset、cycling、IV sweep、disturb等。每一行背后其实都是一个Python脚本。后面演示也专门打开了这些脚本,让客户看到界面参数和底层操作之间是如何绑定的。
软件演示从read操作开始。
read界面里可以设置row和column范围,比如从哪一行到哪一行、从哪一列到哪一列。也可以选择pattern,例如读取整个array,或者只读取某些特殊pattern或子区域。对于这次Demo,先读取完整32×32阵列。
接着设置read condition。这里可以定义读操作时施加到不同端子的电压,比如selector level、cell level、word line level、source/drain侧电平,以及测量量程。现场还演示了read waveform,大约14微秒的波形窗口中,黄色或绿色标记区域表示真正采样的时间窗口。
客户问到这个测量窗口是什么意思。Thomas解释说,系统会在信号稳定后的指定窗口内采样,采样速度可以达到10ns级别。如果积分窗口设为1微秒,就会采大约100个样本;如果设为2微秒,就会采大约200个样本,最后返回这些样本的平均值。积分时间越长,噪声越低,但测试时间也会相应增加。
这个设计体现了研发测试中常见的取舍:要更快,还是要更低噪声?要单次快速扫描,还是要更稳定的电流读数?这些都可以通过软件参数调整。
read操作执行完成后,结果马上进入分析工具。界面显示的是一个32×32 current map,每个格子对应一个cell的电流。
鼠标移到任意cell上,可以看到具体的row、column和电流值。客户马上根据颜色问:浅色、深色分别代表什么?是不是可以理解成data 0和data 1?
厂商解释说,这颗Demo芯片是一个早期样品,目前并不能简单认为某些颜色就是稳定的0或1。很多cell没有表现出理想的switching行为,有些处于中间状态,有些可能本身有缺陷。因此,在这个阶段,更准确的理解是:颜色代表测得的cell current,而不是已经可靠映射为逻辑状态。
这也是早期器件研发里经常遇到的情况。工程师希望看到清晰的HRS/LRS分布,但first silicon往往并不会这么配合。测试平台此时的价值不是“证明器件完美”,而是帮助工程师快速看到阵列里哪里正常、哪里异常、哪些行列有系统性问题。
除了current map,软件还可以立即生成distribution图。横轴是电流,纵轴是落在对应电流区间的cell数量。对于小阵列,人眼看map也许还能判断;但如果未来是更大的array,distribution和筛选工具就非常必要。
接下来,工程师演示set和reset。
一开始,Nicola对阵列中的部分区域执行set操作,然后再次read。客户观察后发现,set之后并没有看到明显的高低电流状态变化。随后又执行reset,再读一次,结果仍然不是特别理想。
客户直接指出:对于ReRAM来说,set之后应该进入低阻态、高电流;reset之后应该进入高阻态、低电流。但现场看到的结果并没有明显switching。
Thomas也很坦率地解释:这颗芯片不是一个成熟器件,而是非常早期的silicon,所以表现并不完美。正因为器件本身不稳定,才更适合用来演示分析工具如何帮助定位问题。
随后,软件生成了set之后、reset之后,以及set/reset之间的differential map。这个差分图显示的是两次状态之间电流变化的差异。虽然整体切换不理想,但在阵列底部某些区域,仍然能看到几十微安级别的变化。通过distribution和筛选功能,还可以把变化超过某个阈值的cell标记出来,例如筛选电流变化超过50微安的cell,系统会在map中用醒目标记显示对应位置。
这个功能在大阵列中尤其重要。如果只是32×32,人眼还能慢慢找;如果是几万、几十万甚至更大规模cell,工程师不可能靠肉眼检查。能够快速筛选异常cell、弱切换cell、高电流drop cell,对于工艺调试和失效分析非常有价值。
现场客户很快把问题转到测试效率。
对于32×32阵列,总共约1024个cell。客户问,如果对每个cell做一次set,总时间是多少?现场看到一次set全阵列大约是0.27秒,也就是271毫秒左右。
客户进一步追问:如果未来要做大量cycling,这个时间会不会太长?如果目标是一轮set/reset在几十微秒量级,系统能不能做到?
这个问题非常关键。因为在ReRAM、PCM、MRAM这类器件研究中,工程师经常要做大量循环,比如每个cell做成千上万次set/reset,然后观察endurance、漂移、分布变化和失效模式。如果每个操作都要毫秒级开销,整体测试时间会很长。
厂商解释说,现场看到的时间包含了不少软件和数据处理开销,并不等同于纯pulse时间。Test Mesh的软件架构分为Python层和C++底层。Python负责脚本、参数、流程和界面交互;真正高速执行的部分在C++层。但如果每次只从Python调用一个单cell操作,就会有Python到C++函数调用的开销,单次调用可能达到毫秒级。因此,不能用“Python逐cell调用”的方式去做速度敏感测试。
正确的做法是把操作批量化,让C++层一次扫描整个matrix,或者把多个pulse、多个操作组合成一个低层sequence执行。这样可以显著降低函数调用开销。
这段讨论非常有价值,因为它说明了Test Mesh的使用方法:它不是让用户用Python一条一条慢慢打pulse,而是用Python描述实验逻辑,再把高速重复操作下沉到C++和硬件层执行。
随后,工程师演示cycling功能。
cycling脚本可以设置循环次数,例如10次、1000次等;也可以设置每隔多少cycle做一次read。例如现场设置10次set/reset循环,并在第5次和第10次之后读取状态。
客户问,一个cycle是set和reset各一次,还是set算一次、reset算一次?厂商解释,这里的cycle可以理解为set/reset成对重复,例如10个cycle就是10次set加10次reset。
现场执行了一个小区域的cycling测试,并生成read after set cycle 5、read after set cycle 10等结果图。map中可以看到某些区域颜色发生变化,同时也出现了疑似disturb或异常行列行为。整个10次cycling大约耗时7秒,但里面包含数据记录、sleep等待和读回分析,不是纯粹的pulse执行时间。
客户对这个时间提出了质疑,认为如果按单cell、单cycle计算,开销太大。厂商也认可这一点,并解释当前Demo脚本没有为极限速度优化。如果真正要追求高cycling速度,可以改变算法组织方式:例如对一个cell连续做很多次set/reset/read,再移动到下一个cell,而不是每次都在阵列中频繁切换地址。这样,地址切换和函数调用开销只需要付一次,整体效率会高很多。
这段讨论非常接近真实项目落地。Demo里跑通功能是一回事,客户真正关心的是未来能不能用在自己的器件上做高效率、大规模循环测试。厂商给出的方向是:硬件具备能力,但测试脚本和算法组织需要根据客户目标优化。
为了说明平台的可定制性,Nicola现场打开了set操作背后的Python脚本。
脚本大致分成几部分:
第一部分定义界面参数,例如row from、row to、column from、column to、selector level、word line level、bit line level、pulse width、measurement scale等。也就是说,用户在界面上看到的输入框、默认值、参数名称,都是Python脚本定义出来的。
第二部分读取用户在界面中设置的参数。如果用户没有设置,就使用默认值。
第三部分根据这些参数修改已有的底层operation。例如取一个set operation模板,把cell active、word line active、bit line active等波形参数改成用户指定的值,然后生成一个新的operation,再调用底层worker执行。
这套机制的好处是,工程师既可以用图形界面直观地看波形、改参数,也可以直接写Python脚本,把操作串起来。比如现场马上演示了如何把set和reset组合在一起:在同一个脚本里先执行set,再执行reset,甚至可以定义自己的“my set”“my reset”“my cycling”操作。
这比传统固定菜单式仪器灵活很多。对新型存储器件来说,很多算法在一开始并不存在标准答案。客户可能今天想做单脉冲set,明天想做incremental step pulse programming,后天想做set-read-verify-reset-read-verify。只要底层资源支持,脚本就可以快速组合。
客户对波形方向也很关注。
在ReRAM等两端或三端器件中,set/reset往往和电压方向有关。客户看到示波器上的波形后,问这是不是单向操作,还是双向操作?从屏幕上看,两个pulse好像方向类似。
厂商进一步查看operation定义,并解释这颗Demo芯片中,set和reset施加在不同端子路径上。set时使用selector加word line路径;reset时使用selector加bit line或drain/source侧路径。也就是说,从cell角度看,这是bidirectional pulsing,只是示波器当前探测的通道可能只显示了某一路信号,所以视觉上容易误解。
随后工程师切换示波器探头,分别查看drain和source侧波形,进一步说明两个端子的电压关系。
这段交流说明,做新型存储器件测试时,仅仅“软件显示打了set pulse”是不够的。客户需要确认实际端子上的波形、方向、幅值、间隔和被选/未选线路状态。Test Mesh通过图形波形定义、脚本参数和示波器验证,把这些问题放在同一个调试环境里处理。
客户还问到一个硬件扩展问题:当前界面里似乎只有6个waveform generator,如果客户芯片端子更多,能不能增加?
厂商解释,这取决于具体系统型号和配置。例如TMY2可支持更多waveform generator,现场这块TKS2 crossbar扩展板实际连接了6个waveform generator。不同系统可以配置4个、6个、8个、12个等资源组合,具体要看DUT需要多少独立模拟波形、多少数字控制、多少测量通道。
这说明后续配置不能只看“平台名字”,必须回到客户芯片本身:有几个端子需要独立波形?有几个端子只是数字选择?哪些线需要测电流?哪些线只需要force voltage?是否需要active/inactive两套电平?是否需要同步采样?这些都会影响最终硬件配置和扩展板设计。
演示后半段,工程师又展示了multi-scale read。
对于ReRAM这类器件,低阻态和高阻态的电流可能相差很大。如果只用一个量程,低电流区域可能看不清,高电流区域又可能接近饱和。因此系统支持把两个read operation串联起来,用不同测量scale读取同一个cell或同一区域。
现场演示中,把两个read操作拼接在一起,分别使用不同量程。示波器上可以看到两个read pulse非常接近,中间间隔很短,系统在两次read之间完成量程切换。Thomas强调,这种快速切换是Test Mesh的优势之一,因为它可以在同一次测试flow里覆盖更宽动态范围。
这对研发分析非常实用。很多时候,工程师不只是想知道cell有没有电流,而是想同时看低阻态、高阻态、中间态、异常漏电和弱切换cell。如果每次都手工换量程,不仅慢,而且容易破坏测试一致性。
在客户确认主要问题都已经回答后,厂商又简单展示了其他可用测试功能。
其中一个是IV characteristics。系统可以对某条line或某个cell扫电压,例如从0到某个电压点,按一定step扫描,同时测量电流,得到I-V曲线。现场提到,这对ReRAM、PCM等器件的基本电学特性分析很有用。
另一个是disturb测试。工程师展示了disturb脚本思路:先做initial operation,然后对未选cell或特定线路施加某种干扰条件,中间可以加入较长等待时间或特定脉冲,再读取前后变化。对于crossbar阵列来说,disturb非常重要,因为未选线路、半选cell、相邻cell都可能受到影响。真正的阵列级可靠性,不只是单个cell能不能set/reset,还包括被选操作会不会影响未选区域。
Demo接近尾声时,客户问到自己的实际芯片适配问题。客户的器件不是裸die测试结构,而是封装芯片,希望知道Test Mesh是否可以支持。
厂商确认,封装器件可以测试,但需要客户提供完整文档。包括封装形式、pinout、端子定义、阵列结构、工作电压、保护电路、是否需要上电时序、是否有digital control、是否有ESD diode或其他限制等。
厂商拿到资料后,可以设计对应socket board,把Test Mesh资源连接到客户芯片上,并在软件里根据客户定义创建对应操作、参数名、测试脚本和分析流程。
这也是这次会议后最重要的下一步:客户先提供芯片文档,厂商评估适配方式,再决定是否准备demo设备发到中国,甚至安排工程师到现场支持安装、培训和初始测试。
如果只看表面,这次Demo演示了read、set、reset、cycling、IV、disturb、current map、distribution、differential map、Python脚本和波形控制。
但更深一层看,它展示的是一种适合早期器件研发的测试方法:
先用硬件扩展板把客户芯片接入平台; 再用Python快速定义端子名称、参数和操作; 用图形界面检查波形和测试条件; 执行read/set/reset/cycling等基础实验; 把结果直接送入数据分析工具; 通过current map、distribution和differential map快速发现异常; 再根据器件表现修改pulse、量程、测量窗口、算法顺序和测试区域; 最后把成熟的测试flow沉淀成可重复执行的脚本。
对于ReRAM、PCM、MRAM、FRAM,以及in-memory computing crossbar芯片来说,这种工作方式很有意义。因为这些器件的早期研发并不是标准化流程,而是不断试错、不断修改、不断对比数据。平台越开放,工程师越容易跟上器件变化;数据分析越及时,工程师越快知道下一步该改什么。
新型存储器件的测试,最难的地方往往不是“能不能打一个set pulse”或者“能不能读一个电流值”。真正难的是:
为什么某些cell切换明显,某些cell几乎不动? 为什么同一个阵列里有几条line表现异常? 为什么set/reset之后看不到预期的HRS/LRS分布? 为什么一个量程看不全,需要multi-scale read? 为什么cycling时间看起来很长,瓶颈到底在pulse、寻址、Python调用,还是数据记录? 为什么Demo里器件表现不好,但这反而更接近真实first silicon调试? 客户自己的封装芯片接上来之后,如何快速把这些测试流迁移过去?
这次Test Mesh Demo的价值就在这里。它没有把测试包装成一个简单的pass/fail结果,而是把器件行为一层层展开:从端子连接,到波形定义;从单cell电流,到全阵列map;从set/reset前后对比,到差分筛选;从Python脚本,到C++底层优化;从当前Demo芯片,到未来客户自有封装器件的socket board适配。
对于做ReRAM、PCM、MRAM、FRAM和存内计算芯片的研发团队来说,这类平台最重要的意义不只是“替代ATE”,而是在器件还没有完全成熟、测试流程还在不断变化的时候,给工程师一个可以快速试验、快速修改、快速分析的工具。
在早期研发阶段,时间往往比设备规格表更宝贵。能不能把一个想法当天变成测试流,能不能把一次异常马上变成可视化结果,能不能根据器件表现快速改下一版实验,这些才决定了研发迭代的速度。
Test Mesh这次演示的核心价值,也正是在这里。
更多PCIe5&6.0, CXL, NVMe SSD, SAS/SATA, NVMe over Fabric (NVMoF), NAND,新型存储技术NVM(RRAM/ReRAM, FRAM/FeRAM, MRAM, PCM, 3D-NOR, SRAM/DRAM等) DDR5/LPDDR5以及UFS测试方面的问题想咨询,可以查看Saniffer公司2026.2.24最新更新的测试工具白皮书15.1版本,我们已经整理收录在Saniffer公众号的【白皮书】菜单中。
欢迎关注Saniffer公众号,点击底部菜单栏即可免费获取。如有任何技术问题,也可直接在公众号内留言交流。