【交流纪实】ReRAM到底怎么测?一场Demo讲清Set、Reset、Read和阵列可视化
2026-06-22 18:00:28

一颗ReRAM单元如何被“读懂”:从Set/Reset到32×32阵列可视化测试

——Resistive Memory Characterization Demo现场技术交流记录

新型存储器件的研发,往往不是从“容量”“接口”“带宽”这些宏观指标开始,而是从最底层的一颗cell开始。

一颗ReRAM单元能不能被set?能不能被reset?读的时候会不会扰动原有状态?同一个阵列里,哪些cell已经进入低阻态,哪些cell仍然停留在高阻态?不同cell之间的电导分布是否一致?如果想做多电平存储,又如何把一个cell精确调到目标电阻值?

这些问题看起来很基础,但恰恰是ReRAM、PCM、MRAM、FRAM以及存内计算芯片研发绕不开的核心问题。

2026年6月12日下午5:30 - 7:00,我们和客户团队进行了一场Resistive Memory Characterization Demo。这次演示基于一颗真实的客户ReRAM测试芯片,阵列规模为32×32,也就是1024个memory cell。整场交流从器件结构讲起,随后展示TMA100平台和扩展板硬件,再进入软件界面,依次演示read、set、reset、差分分析、单cell I-V测量、Python脚本控制,以及后续如何让客户通过demo软件、离线数据和样机进一步熟悉系统。

下面按照现场演示的顺序,把这次交流完整梳理出来。

一、先讲器件:这不是普通存储阵列,而是一组可调电阻

演示一开始,Tamas没有马上进入软件,而是先画了一张器件结构图。

这次测试的对象是一个小型ReRAM阵列,规模为32行×32列,总共1024个memory cell。每个cell可以理解为一个可变电阻,也就是resistive memory element。它的阻值不是固定的,而是可以通过外部电信号改变。

每个cell旁边还有一个select transistor,用来选择当前要操作的cell。只有当某个cell对应的选择晶体管被打开时,系统才能对它进行set、reset或read操作;其他未选cell则保持关闭,避免被误操作。

从连接方式看,阵列上方有word line,用来连接memory cell的一端;下方有bit line或source line,通过select transistor连接到cell的另一端;同时还需要控制select transistor的gate。这样,系统就可以选择某一行、某一列,最终定位到一个具体cell。

Tamas特别强调,ReRAM单元的基本电学操作其实并不复杂,核心就是三个动作:

Set:让cell电导增加,也就是电阻降低。Reset:让cell电导降低,也就是电阻升高。Read:用较低电压读取cell电流,再根据欧姆定律计算它的电阻或电导。

这里最关键的是read操作。因为read本身也需要施加电压,如果读电压太高,就可能无意中触发set或reset,改变cell原来的状态。所以ReRAM测试里,一个非常重要的技术点就是:读电压必须足够低,同时测量系统又要能准确感知很小的电流。

这就是ReRAM characterization和普通数字测试不同的地方。它不是简单判断0或1,而是要在不扰动cell状态的前提下,精确测量模拟电流、电阻和电导。

二、为什么ReRAM天然适合存内计算?

在介绍器件结构时,Tamas顺带解释了这类crossbar阵列为什么经常被用于in-memory computing。

如果把每个ReRAM cell看成一个可调电导,那么阵列中的每一行、每一列就不只是存储bit,而是可以承担模拟计算功能。当对一组行施加不同电压,并在列端读取电流时,流出的电流就是多个cell电导与输入电压共同作用的结果。

从电路角度看,这就是一种模拟vector-matrix multiplication。输入电压可以理解为向量,cell电导可以理解为权重矩阵,列端电流就是乘加结果。

所以,这类ReRAM阵列不仅可以作为非易失存储器研究,也可以用于神经网络加速、模拟矩阵运算和存内计算架构探索。

当然,这也带来更高的测试复杂度。因为工程师不仅关心某个cell能不能存0或1,还关心它的电导值是否可控、是否稳定、不同cell之间是否一致、阵列中是否存在漏电、串扰和半选干扰。

三、真实芯片并不完美,这反而更接近研发现场

Tamas在开场时也说明,这次演示使用的是一颗真实客户芯片,但由于保密原因不能展示全部细节。同时,这颗芯片还处于较早期阶段,并不是一个非常完美的器件。

这点很重要。

很多产品演示会选择一个表现非常漂亮的样品,把所有结果都跑得很整齐。但真正的早期器件研发通常不是这样。first silicon里经常会有坏cell、弱cell、异常行列、set/reset不充分、电流分布不理想、某些区域完全不工作等情况。

这次Demo的价值恰恰在于,它不是用一个“完美器件”展示理想曲线,而是用一个真实、带缺陷的阵列,让客户看到测试系统如何发现这些问题、显示这些问题、分析这些问题。

对于做新型存储器件研发的人来说,这比一张漂亮的宣传图更有参考价值。

四、硬件平台:TMA100加专用Extension Unit

器件结构讲完后,Nicola把镜头转向实验室里的硬件系统。

现场展示的不是TMC100,而是TMA100加一块专用Extension Unit。TMA100本身提供波形发生器、电源、测量资源、I/O接口等基础能力;而Extension Unit则负责把这些资源适配到具体的32×32 crossbar器件上。

设备主板上的资源通过34个SMB连接器以及额外header引出。波形发生器、电源、I/O、测量路径等资源都可以通过这些接口进入应用板。

在这次配置中,Extension Unit是专门为32×32 crossbar器件设计的。板上有一个socket,客户芯片就放在这个socket里。由于芯片比较敏感,现场没有打开socket。围绕芯片,扩展板上分成几个主要区域:

一部分负责word line控制; 一部分负责source line或bit line侧的选择与测量; 一部分负责select transistor相关控制; 同时还通过高速连接和FPGA实现地址选择和配置控制。

简单理解,TMA100提供“仪器资源”,Extension Unit负责“把仪器资源正确接到这颗芯片上”。对于不同客户芯片,TMA100主平台可以复用,但Extension Unit或socket board往往需要根据封装、pinout、阵列结构和端子定义做适配。

现场客户也问到,这块板是不是第三方公司提供的。Tamas明确说明,除了socket里的客户芯片之外,整个测试板和系统都是厂商自己开发的。

五、Extension Unit的作用:不是产生波形,而是做器件适配

后面中文讨论里,客户也进一步问到:波形到底是在左边小板上产生,还是在后面的大设备上产生?

现场解释得很清楚:波形发生、电源、测量等核心资源来自后面的TMA100主设备;Extension Unit主要负责和客户device的适配,包括行列选择、信号路由、socket连接、测量转换、电流路径引出等。

这就像一套通用测试平台加一块客户专用夹具。主机负责提供可编程资源,扩展板负责把这些资源变成适合某颗芯片的连接方式。

对于ReRAM这类新型器件来说,这个适配层非常关键。因为不同客户的芯片可能是裸die,也可能是封装器件;可能是1T1R结构,也可能是selector-based结构;可能有独立word line、bit line、source line、gate,也可能是更复杂的阵列;有些芯片还需要ESD保护、上电时序、数字配置、额外偏置或特定测量路径。

所以,真正能不能测,不只是看仪器规格,而是要看主平台资源、扩展板设计和软件配置能不能一起适配客户芯片。

六、进入软件:32×32 Mini Array测试程序

硬件介绍结束后,Demo进入软件界面。

软件左侧显示已经实现的测试程序列表。现场加载的是针对当前器件的32×32测试程序。第一次启动时,软件会初始化硬件,随后进入interactive panel,也就是交互式操作界面。

这个界面里有多个可用功能,例如initialize、read、set、reset等。每个功能背后对应一段Python脚本,界面上的参数也是由脚本定义出来的。

这点很适合研发阶段。工程师可以先用界面执行基本操作,看到结果;后续如果想修改参数、改波形、组合流程、做cycling或更复杂算法,就可以进入Python脚本层。

七、Read操作:用低电压读取整个32×32阵列

软件演示的第一步是read。

Nicola选择了完整的row和column范围,也就是读取整个32×32阵列。read操作的本质,是在选中的selector、word line和对应读出路径上施加低电压,在指定时间窗口内测量电流。

软件里可以看到read waveform。系统会在波形稳定后的某段时间内采样电流。这个采样窗口非常重要,因为太早采样可能信号还没稳定,太晚又会增加测试时间。对于低电流读出,采样窗口、积分时间和量程选择都会影响最终数据质量。

read完成后,测量数据被送入后处理分析软件。现场打开memory map后,可以看到一个32×32的阵列图,每个方格代表一个cell,颜色代表测得的电流大小,也可以理解为电导强弱。

图中绿色区域代表电流较低,通常对应reset后的高阻状态;亮色或较浅颜色代表电流较高,通常对应set后的低阻状态;一些深蓝色或异常区域则代表不工作或表现异常的cell。

由于这颗芯片本身不是很成熟,阵列图并不完美。但这也刚好说明了测试软件的价值:它能把每个cell的状态直观展示出来,而不是只给一个整体pass/fail结果。

八、Set和Reset:改变cell状态,再看阵列怎么变化

完成初始read之后,Nicola继续演示set和reset。

Set操作会对选定区域施加一个脉冲,使cell导电能力增强,也就是电阻降低。Reset操作则施加相反方向或不同条件的脉冲,使cell导电能力减弱,也就是电阻升高。

软件可以对单个cell、某个区域,或者整个array执行set/reset。现场演示中,对整个阵列进行了reset,并与set后的结果进行对比。两张map放在一起后,可以直观看到部分区域的颜色变化。

更进一步,软件可以生成differential map,也就是把set之后和reset之后的电流差异计算出来。这样就能看到哪些cell真的发生了明显变化,哪些cell几乎没有变化。

现场结果显示,部分cell有大约30到50微安量级的电流差异,但也有很多cell保持在类似状态。这再次说明,这颗芯片并不是理想样品,很多cell的set/reset响应并不好。

对研发工程师来说,differential map很有价值。因为单独看两张电流图,有时候不容易判断变化;但差分图可以直接把“发生变化的位置”和“变化幅度”显示出来。对于分析阵列缺陷、行列异常、局部工艺问题、弱切换cell非常有帮助。

九、每个cell都有自己的阻值:不是简单写0和1

客户随后问了一个本质问题:这些不同颜色是不是表示不同的写入状态?是不是相当于阵列里每个ReRAM cell都写了不同weight?

Tamas解释说,可以这么理解:每个cell都有自己的resistance或conductivity value。系统当前测的是电流;由于读电压已知,就可以根据欧姆定律计算出该cell的电阻或电导。

这也是ReRAM与传统数字存储不同的地方。它既可以作为二值存储使用,也就是低阻态和高阻态分别表示0和1;也可以进一步用于多电平存储或模拟权重存储,让不同阻值代表不同权重。

对于存内计算来说,这一点尤其重要。因为权重不是简单0/1,而可能是多个模拟电导值。因此测试系统不仅要能判断cell有没有switch,还要能测量电导分布、分析电导稳定性,并研究如何把cell调到目标电导。

十、单cell I-V测试:从阵列map走到一个具体cell

为了更清楚说明如何从电流得到电阻,Nicola选择了一个角落里的单个cell,做I-V测试。

这个测试只对一个cell施加不同读电压,同时测量对应电流。如果cell行为近似线性,就可以从I-V曲线斜率推算电阻。

现场举例,在200mV读电压下,测得电流大约15μA左右。根据欧姆定律,可以估算出对应电阻在十几千欧量级。随后通过set/reset操作,系统展示了阻值可以发生明显变化。

后续讨论中,厂商提到,对于这颗具体cell或这颗具体器件,set之后的低阻状态大约可以到4kΩ量级;reset之后的高阻状态可能在120kΩ到200kΩ量级。当然,这只是这颗器件、这个cell、这个测试条件下的结果,不能简单外推为所有ReRAM器件的通用数值。

这个单cell测试很有代表性。因为阵列map适合看整体分布,而I-V曲线适合深入理解某个cell的电学行为。真实研发中,两者通常要结合起来:先用map找异常区域,再挑选典型cell做I-V、set/reset、retention、cycling等详细分析。

十一、多电平存储的难点:如何把cell调到目标阻值?

Tamas在单cell测试后进一步展开了一个很重要的话题:multi-level cell,也就是多电平存储。

如果只做二值存储,事情相对简单:set到低阻态,reset到高阻态。比如一个cell可以在4kΩ和120kΩ之间切换,那么可以把它们分别当成两个状态。

但如果希望一个cell存储更多bit,或者用于模拟权重,就不能只停留在高阻和低阻两个极端。工程师可能希望把cell精确调到某个中间电阻,比如50kΩ、80kΩ或其他目标值。

问题是:怎么调?

是用较小reset pulse一点点拉高电阻? 还是用较小set pulse一点点拉低电阻? 是否需要write-verify算法? 每次pulse之后要不要read回来比较? 目标值附近如何避免过冲? 不同cell是否要用不同算法? 同一个cell经过cycling之后,算法还是否稳定?

Tamas指出,这正是一个很好的研究课题。Test Mesh系统的优势在于,它足够开放,可以让用户实现和比较不同programming algorithm。比如incremental step pulse programming、set/read/verify、reset/read/verify,或者根据当前电导自适应调整下一次脉冲。

这类研究不是固定仪器菜单能完全覆盖的。它需要工程师不断修改算法、观察结果、再调整策略。平台的开放性在这里就变得非常关键。

十二、客户关心两比特单元:四个电导状态能否区分?

现场还有一个问题来自客户:如果一个ReRAM单元要做two-bit,也就是四个状态,那么四个conductivity value如何定义?能不能测出来?

厂商的回答是,系统当然可以测量conductivity distribution,但具体四个状态是多少,取决于客户器件和编程算法。对于现场这颗Demo芯片,目前看到的主要是两个比较明显的状态:一个低阻态约4kΩ,一个高阻态约120kΩ到200kΩ。要实现稳定四状态,需要进一步开发更精细的中间态编程算法。

这点很现实。测试设备能提供测量能力和算法开发环境,但不会自动保证某颗器件一定能实现可靠MLC。能不能做two-bit,取决于材料、工艺、cell结构、噪声、漂移、retention、cycling稳定性以及programming algorithm。

对于客户来说,这意味着平台可以用来研究四状态电导分布,但最终要靠器件和算法共同证明可行性。

十三、打开Python脚本:测试流程不是黑盒

演示后半段,Nicola打开了set操作背后的Python脚本。

脚本第一部分定义用户界面中的参数,例如row from、row to、column from、column to、set level、word line level、bit line level等。也就是说,软件界面里看到的输入框和默认值,并不是写死的,而是由Python脚本定义。

脚本第二部分读取界面输入,并把这些参数带入底层operation。例如根据用户输入修改cell active level、word line active level、bit line active level,然后生成实际要执行的set operation。

最后,脚本调用run_worker,在用户选择的row/column区域内逐cell执行该operation。

这一段演示非常重要,因为它说明系统不是一个封闭黑盒。用户不只是点按钮,而是可以理解按钮背后的测试逻辑,也可以修改脚本,增加参数,组合新的测试流。

随后Nicola又展示了read multi-scale脚本。这个脚本把两个不同量程的read operation串在一起,cell by cell执行。这样可以在同一次测试中兼顾高电流和低电流范围,避免单一量程看不清不同阻态。

再进一步,还可以写cycling脚本:重复N次set/reset,并在某些cycle之后插入read,比如read after set、read after reset。这样就可以做endurance相关测试。

从这段演示可以看出,Test Mesh的核心不是“内置了几个按钮”,而是提供一个Python可扩展框架,让工程师把自己的实验思路变成可执行测试流。

十四、客户反馈:软件逻辑清楚,但希望能拿到demo程序学习

看到Python脚本后,客户反馈说程序逻辑比较清楚,希望后续能分享一些简单程序,让学生和团队可以先学习。

Tamas表示可以提供一些基础program,帮助客户理解单cell如何测量、如何执行set/reset、如何查看结果。他也强调,软件的基本使用并不复杂:如果只是做基础测量、执行测试、看数据,学习门槛相对低;如果要进入复杂功能,例如自定义算法、多电平编程、cycling优化、复杂后处理,则需要更深入的培训和支持。

客户也提到,希望能有一个简单软件版本,配合demo data,让学生可以先在本地熟悉界面和后处理流程。

这里双方形成了一个很实用的后续方向:即使暂时没有真实device,也可以先提供离线demo数据,让客户在软件里看到map、I-V、差分图、后处理分析等功能。这样可以先建立共同语言,等设备或真实芯片条件具备后,再进入实测阶段。

十五、没有真实device怎么办?先用离线数据,再考虑样机

会议后半段,中文交流中进一步讨论了一个实际问题:真实客户芯片不一定能拿到中国来,厂商手里的这颗Demo芯片也可能因为客户保密和运输限制无法随设备一起发出。

如果设备来了但没有device,客户仍然可以熟悉硬件、软件和基本流程,但无法做完整实测。因此现场提出两个可行方案:

第一,提供离线demo软件和已有测试数据。客户可以在没有设备的情况下,先学习后处理软件,查看已有array map、differential map、I-V数据和分析功能。

第二,后续考虑把demo设备发到中国,即使暂时没有真实device,也可以帮助客户熟悉系统结构、软件环境、脚本逻辑和操作流程。等客户自己的芯片或适配板准备好后,再进入真实测试。

客户明确表示,还是希望能把设备拿过来熟悉一下。因为新型存储方向发展很快,团队需要尽快了解这类工具的能力和使用方法。

十六、后续还需要高清演示视频和二次技术交流

除了demo软件和样机,现场还提出希望厂商录制一些高清演示视频,用于展示软件主要功能和Gemini后处理能力。这样一方面可以帮助当前客户团队内部学习,另一方面也可以用于后续向潜在客户介绍。

Tamas表示这需要时间准备,但方向上可以支持。

同时,双方也同意后续可以组织第二次更深入的交流。第一次Demo的目标是让客户快速建立整体印象:设备长什么样,怎么连接,软件怎么运行,数据如何显示,Python脚本大概如何组织。第二次交流则可以更聚焦,比如:

如何针对客户自己的器件定义端子和操作? 如何做single cell characterization? 如何设计set/reset/read/verify算法? 如何做MLC多电平编程研究? 如何做cycling和endurance测试? 如何使用后处理软件分析大量cell数据? 如果没有真实device,如何先用demo data培训学生?

最后,现场还决定把Tamas拉进已有讨论群,方便客户、学生、代理和厂商之间后续直接沟通问题。

十七、这次Demo真正说明了什么?

如果只看演示动作,这次会议做了几件事:介绍了ReRAM cell结构,展示了TMA100+Extension Unit硬件,读取了32×32阵列,做了set/reset,生成了差分图,测了单cell I-V,打开了Python脚本,并讨论了demo软件和后续培训。

但更深层看,这场Demo说明的是新型存储器件characterization的一套完整方法:

先理解器件结构和端子定义; 再把TMA100资源通过Extension Unit连接到芯片; 用低读电压读取阵列,避免扰动状态; 用current map观察整体电导分布; 通过set/reset改变cell状态; 用differential map找出真正发生切换的cell; 选择典型cell做I-V曲线和电阻计算; 再通过Python脚本扩展到multi-scale read、cycling、write-verify和MLC算法研究。

这和传统存储测试很不一样。传统数字存储更多关注数据能不能正确读写;而ReRAM characterization更关注模拟电学状态能否被精确控制、测量和保持。

对于研究型客户来说,一台设备是否“好用”,不只是看硬件参数有多高,而是看它能不能让工程师快速从现象走向判断:哪一类cell有问题,哪种pulse有效,哪种读电压安全,哪种算法能把阻值拉到目标区间,哪些异常来自器件,哪些异常来自测试条件。

结语:ReRAM测试不是读一个电流,而是读懂一个器件

ReRAM、PCM、MRAM这类新型非易失存储器件,真正有意思的地方在于:它们不是简单的0和1,而是介于材料、电路、算法和系统之间。

一个cell的电阻值,背后可能对应材料状态变化; 一个阵列的current map,背后可能对应工艺均匀性; 一次set/reset失败,背后可能是脉冲条件不合适,也可能是器件本身缺陷; 一个中间电导状态,可能是未来MLC和存内计算权重的基础; 一个Python脚本,则可能决定工程师能不能快速验证新的programming algorithm。

这次Resistive Memory Characterization Demo最大的价值,不是展示了一颗完美芯片,而是展示了一套面对真实、不完美、仍在研发中的器件时,如何快速测量、快速分析、快速迭代的方法。

对于做新型存储和存内计算研发的团队来说,这类工具真正解决的不是“能不能打一颗pulse”,而是如何把一颗cell、一行阵列、一组电流分布,变成可理解、可比较、可优化的研发数据。

从这个角度看,一颗ReRAM单元被读出来的,不只是电流值,而是整个器件研发过程中的下一步方向。

更多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公众号,点击底部菜单栏即可免费获取。如有任何技术问题,也可直接在公众号内留言交流。