做显存颗粒测试的同行,大概都撞见过这样的场面:程序在实验室台架上跑得好好的,一上量产就有那么一批料,在特定数据图案下读回错码,换一颗同批次又好了,再换一颗又不行。你把程序翻了个底朝天,时序表、电平表、扫描范围全对过一遍,还是找不到毛病。十有八九,问题不在你的功能图案写得对不对,而在前面的GDDR5训练没做扎实——训练窗口偏了,后面所有读写校验都是在悬崖边上跑。
这篇东西想聊的就是 GDDR5 在 ATE 上做接口训练这件事:它到底在解决什么问题、卡点在哪里、参数怎么一步步调出来、以及量产环境里哪些坑是会反复咬人的。内容偏向做过一段时间高速接口测试、但训练流程还靠"照抄前人程序"的朋友——尤其是那种程序能跑但不知道为什么能跑、窗口裕量靠拍脑袋的处境。我会把每一步的意图和取舍讲明白,参数给到可以直接抄的程度,同时说明哪些数值是量级参考、需要按你自己的板子和平台去标定。
1. 先把"训练"在 ATE 语境下说清楚
1.1 为什么 GDDR5 在 ATE 上不能"接上就读写"
系统板上的显存接口,是控制器和颗粒之间长期配合的关系。控制器知道自己板子上的走线大概多长,上电后有一套自动流程去试探、对齐、收敛,训练完就进入正常读写,整个过程对上层是黑盒。ATE 完全不是这个逻辑:它要在没有任何自适应能力的前提下,用仪器强制产生一组精确的时钟和数据波形,然后在毫秒级时间内判断这颗颗粒合格还是不合格。
GDDR5 的接口结构决定了这件事的难度。数据在 WCK 差分时钟上双沿传输,命令地址走 CK 单端时钟,数据选通 DQS 与数据 DQ 之间的相位关系有明确的窗口要求,写入时 DQS 相对 CK 的位置也得落在一个规定的区间里。也就是说,ATE 不只是要"发出正确的电平",它还要把边沿放在正确的位置上,而且这个位置对每颗 DUT、每个工位、每条通道都可能不一样。
这就引出了训练的本质:它是一次参数搜索,目标是在多维参数空间(发送边沿位置、接收采样边沿位置、驱动电平、比较阈值、参考电平)里,找到那个让读写都能稳定通过的区域,并且把工作点放到这个区域的中心。找不到区域,说明链路或程序有问题;区域太窄,说明裕量不够,量产会飘。这两件事的判定标准完全不同,但都建立在同一次训练之上。
顺带说一句,GDDR5 的驱动结构和低压差分不太一样,它的输出级带终端匹配,ODT 的开关状态会改变通道阻抗,进而改变你看到的波形形状。很多人在训练时忽略 ODT 配置,结果窗口莫名其妙窄了一截,后面怎么调都调不回来。
1.2 训练在整条测试流程里的真实位置
把训练放进流程里看,顺序大致是:接触与开短路检查、上电与复位序列、模式寄存器配置(含参考电平、驱动强度、ODT、延迟相关项)、接口训练、全速功能图案校验、时序与电平裕量扫描、功耗与低功耗模式验证。训练卡在中间偏前的位置,这个位置很关键——它是"前置条件"而不是"测试项",一旦训练失败,后面所有读写结果都失去意义,你没法区分是颗粒坏还是接口没对齐。
实际项目里我倾向于把训练结果本身也当成测试数据留存,不只是拿它来配参数。原因很实在:训练出来的窗口宽度、窗口中心位置、Vref 最佳点这些量,对工艺漂移、封装寄生、批次差异都很敏感。累积几百颗料的数据,你会看到分布的形状,一旦某批料窗口整体左移,你能提前知道要调板子或调程序,而不是等到功能测试大批量失效才反查。这一点在导入新批次或换封装厂时特别值钱。
还有个小细节值得强调:训练必须在最终的工作频率和电压下做,不能图省事在降频状态下训完再切回全速。降频时 UI 变宽,容错能力完全不同,你在 3 Gbps 下找到的"中心"拿到 6 Gbps 下可能已经贴边了。这个错误非常常见,因为降频调试确实快、确实容易过。
1.3 ATE 训练与系统级训练的本质差异
系统里的训练是"够用就行":控制器只要收敛了、误码率达标了,它就停下,你不知道它停在哪、裕量多少。ATE 要的是可测量、可判定、可复现——同一个程序,今天跑和下周跑,同一颗 DUT 的结果必须落在几个皮秒以内;换一台同型号平台,结果要能对上。
这三个词对应三种工程要求。可测量意味着你需要把搜索过程中的中间量暴露出来,做成数据日志;可判定意味着你要定义什么叫"训练成功",是窗口宽度大于某个门槛,还是中心点落在某个区间内;可复现意味着所有影响结果的因素——温度、电压、探针接触、程序版本、板子批次——都得被控住或者被记录。
我见过最典型的翻车是:程序里用了"扫到第一个通过点就停"的策略,结果不同 DUT 停在不同位置,良率看着正常,但下道工序或客户端的间歇失效比例偏高。原因很简单,第一个通过点几乎一定在窗口边缘,那是最差的工作点。正确做法永远是扫完整个范围再取中心,哪怕多花几百毫秒。
2. 三个绕不开的硬约束:时序、信号完整性、电平判据
2.1 时序分辨率与边沿放置精度
先算一笔账。6 Gbps 的数据率,一个 UI 是 166.7 ps;8 Gbps 时是 125 ps。而主流 ATE 的 per-pin 时序边沿分辨率在几十皮秒量级,具体看平台,20 到 50 ps 都算常见。这意味着什么?如果你的搜索步进就是一个最小边沿步进,那么在 166.7 ps 的窗口里你只能落下三到八个点,根本画不出窗口的形状。
解决办法有几个,可以组合用。一是多次采样平均:同一个边沿位置重复读写若干次,用统计结果代替单次判定,这样即使边沿量化粗,判定精度也能提上来。二是利用多组 timing set 的相位组合:不同 timing set 的量化误差不完全一致,交叉使用能凑出更细的有效步进,但这个做法对平台的边沿一致性要求高,得先验证。三是接受粗量化、靠插值和裕量补:窗口边界用通过/失败的翻转点估计,然后用 guardband 吃掉量化误差。
我更倾向第一加第三的组合。多采样平均的代价是测试时间,但换来的是可复现;插值加 guardband 的代价是裕量,但保证了量产稳定。第二种做法听着聪明,实际上如果平台本身的边沿线性度不好,你凑出来的细步进反而是假的,数据看着漂亮,相关性一塌糊涂。
提醒:在写搜索循环之前,先把平台的边沿线性度测一遍。让所有通道输出同一个边沿位置,用一个高带宽示波器或者时域反射的方式看实际落点,把偏差记下来。这个动作花不了多少时间,但能避免后面所有数据都建立在一个错误假设上。
另一个容易被忽略的点是边沿位置与频率的关系。有些平台在不同周期下边沿精度会变,你在低频下校准的偏移量,切到高频未必还成立。所以校准要在目标频率下做,或者至少在目标频率下复验一次。
2.2 负载板寄生与信号完整性
ATE 的通道带宽、DUT 板的走线、探针或弹簧针的寄生,合起来构成了一个和系统板完全不同的信道。GDDR5 的边沿速率很快,几十皮秒的上升时间,任何一点阻抗不连续都会在波形上留下反射,反射叠加到判决点上,窗口就缩了。
工程上能做的事情,按性价比排序大概是这几条。第一,走线等长与阻抗控制,差分对内部失配控制在几个皮秒以内,单端线相对参考时钟的偏斜也要控制;这不是为了好看,失配直接转换成窗口的不对称,你在 shmoo 图上会看到一块斜着的通过区。第二,参考平面完整,避免跨分割,信号的回流路径断了,串扰和共模噪声一起上来。第三,去耦电容的位置,高频去耦要贴近器件引脚,放远了等于没放。第四,并行工位之间的隔离,相邻工位的信号线走太近,一个工位在跑大电流图案时,另一个工位的判决点会抖。
有一类问题特别隐蔽:探针或接触件的接触电阻在几十毫欧到几欧之间波动。这个量级对直流测试没影响,但对高速波形来说,它改变了终端匹配,反射系数变了,窗口形状跟着变。表现就是同一颗 DUT 反复插拔,训练结果不一致;或者同一工位跑一段时间后结果慢慢漂移,因为接触面氧化或沾污。碰到这种情况,清洗接触件往往比调程序管用。
我一般会在程序里加一个训练结果的离散度检查:同一颗 DUT 连续做三次训练,窗口中心的偏差超过某个阈值就报警。这个检查抓接触问题的效率比什么都高,而且几乎不增加测试时间。
与"高频"无关但同样致命的是电源完整性。GDDR5 在读写翻转时电流变化很剧烈,如果 DUT 板上电源阻抗在某个频段偏高,电压会瞬间塌陷,判决阈值跟着漂。这类问题的表现形式是"图案相关失效"——特定的数据翻转组合失败,换一个图案就过。很多人第一反应是去改时序,其实是电源的事。
2.3 参考电平与比较器窗口
接收方向的判据本质上是比较器:输入电压高于阈值判 1,低于判 0。阈值放哪儿,决定了你看到的窗口。GDDR5 的读数据参考电平通常通过模式寄存器配置颗粒内部的 Vref,而 ATE 侧的比较器阈值是另一个可调量,两者要配合。
这里有个概念上的坑:颗粒内部的 Vref 影响的是它自己接收写入数据时的判决,而 ATE 比较器阈值影响的是它判断颗粒输出数据时的判决。训练读方向时,你调的是后者;训练写方向时,你调的是前者。两个方向的最优值不一定相同,因为它们面对的通道和噪声源不一样。
实操上,参考电平的扫描步进建议在几个毫伏到十几毫伏量级,扫描范围覆盖标称值上下各百分之十到十五。判定方法不是找"第一个通过点",而是画出一条通过/失败曲线,取通过区间的中点,同时记录区间宽度。宽度就是裕量,中点就是工作点。
有一点必须说清楚:比较器阈值不是越高越好或者越低越好。阈值偏移会同时影响上升沿和下降沿的判决时刻,在高速下表现为占空比失真。你在 shmoo 上看到的通过区如果是斜的或者不对称的,先怀疑阈值和边沿速率不匹配,再怀疑走线。
| 约束维度 | 典型量级 | 主要影响 | 优先处理顺序 |
|---|---|---|---|
| 时序边沿分辨率 | 20~50 ps | 窗口形状测量不准 | 先做平台标定 |
| 走线失配 | 几 ps 到几十 ps | 窗口不对称、斜移 | 板子设计阶段解决 |
| 接触电阻波动 | 几十毫欧到几欧 | 结果不可复现 | 清洗加离散度监控 |
| 比较器阈值量化 | 几 mV 到十几 mV | 占空比失真 | 扫描加中点取值 |
| 电源阻抗峰值 | 与图案翻转率相关 | 图案相关失效 | 去耦与平面优化 |
3. 参数调优实战:从建基线到全速验证
3.1 建立可复现的训练基线
调参之前,先要有基线。没有基线的调参就是在流沙上盖楼,你今天调好一个点,明天换个环境又不对,你永远不知道是参数的问题还是环境的问题。
基线的构成要素我一般这么定:一颗已知良品作为金样,固定在某个工位、某个插座位置上;程序版本锁定,任何参数改动都要记版本;环境条件记录,温度、电源设定、气源压力都写进日志;连续跑二十次,统计每个训练量的均值和标准差。这二十次的数据才是你后面判断"改动有没有效果"的参照系。
金样的选择有讲究。不能随便拿一颗能过的料,最好是窗口宽度处在分布中位数附近、且经过多次复测确认稳定的。窗口特别宽的金样会掩盖问题,窗口特别窄的又容易在调试中失效让你误判。
这一步还有一个容易被跳过但很值的动作:用示波器在 DUT 引脚处抓一次实际波形。把 WCK、DQS、DQ 的相位关系、幅度、上升时间都看一眼,和你程序里假设的一致不一致。我遇到过好几次程序里写的延迟和实际波形差了大半个 UI,原因是模板从别的项目拷过来没改,后面所有训练实际上是在错误的起点上搜索,虽然也能搜到通过区,但那个通过区是畸变的,裕量评估完全失真。
注意:波形抓取要用足够带宽的探头和足够高的采样率,并且探头的负载效应要评估。低带宽探头看到的边沿是假的,用它来校准会让你把参数调偏。
3.2 写训练:DQ 与 DQS 的对齐策略
写方向的训练目标是让 DQS 的跳变沿落在 DQ 数据眼的正中间。GDDR5 对写 DQS 相对 CK 的位置有明确要求,通常表述为一个以四分之一周期为中心、上下各有容差的区间。ATE 侧的操作对象是发送边沿的延迟量。
我的搜索策略分三段。第一段粗扫,步进取 UI 的八分之一到十六分之一,范围覆盖整个可能的相位区间,目的是找到通过区的大致位置和个数。为什么要看个数?因为高速链路里经常出现多个通过区,一个主区加若干由反射造成的假区,假区通常很窄。第二段细扫,在主区附近用 UI 的三十二分之一甚至更细的步进扫,把边界精确到几个皮秒。第三段验证,把工作点设在主区中心,用多种数据图案跑一遍全速读写,确认没有图案相关的边。
给一段搜索逻辑的伪代码,思路是粗扫定位加二分细化:
def find_write_window(start_ps, stop_ps, coarse_step_ps, refine_tol_ps, probe): # 粗扫: 找出所有连续通过区间 points = [] pos = start_ps while pos <= stop_ps: points.append((pos, probe(pos))) pos += coarse_step_ps regions = group_contiguous_pass(points) if not regions: raise RuntimeError("no passing region found, check wiring or levels") # 取最宽的区间作为主区 main = max(regions, key=lambda r: r.width) lo, hi = main.left_edge, main.right_edge # 二分细化左右边界 lo = bisect_edge(lo - coarse_step_ps, lo, refine_tol_ps, probe, expect_pass_right=True) hi = bisect_edge(hi, hi + coarse_step_ps, refine_tol_ps, probe, expect_pass_right=False) center = (lo + hi) / 2.0 return {"left": lo, "right": hi, "center": center, "width": hi - lo}几个实现上的要点值得强调。probe函数不能只做一次读写,至少重复若干次取全通过才算通过,否则单次噪声会让边界跳来跳去。二分细化的终止条件用绝对步进而不是迭代次数,方便不同频率下统一。还有,边界的定义要统一,是"最后一个通过的点和第一个失败的点之间",这个约定写进注释,不然换个人接手会理解错。
图案选择上,不要只用一种。全 0、全 1、棋盘、 walking one、以及伪随机序列都跑一遍,取最差的那个作为判据。原因很实际:全 0 全 1 时几乎没有同时翻转,串扰和电源噪声最小,窗口看着漂亮;伪随机序列翻转密集,才是真实工况。只测全 0 全 1 就下结论,是量产翻车的经典路径。
3.3 读训练:门控窗口与 Vref 的联合扫描
读方向是 ATE 主动采样,训练对象是采样边沿的位置。这里的搜索空间是二维的:采样时刻和比较器阈值。两个维度耦合,单独扫一个会得到误导性的结论。
比如你固定阈值扫时刻,可能得到一条很宽但偏高的通过带;换成固定时刻扫阈值,又会得到另一条带。真正的最优工作点在二维平面的中心,只有做二维扫描才能看到。二维扫描的代价是测试时间,步进乘以步进,很容易失控。工程上的折中是先粗后细的二维扫描:两个方向都用较大步进扫一遍,找到通过区域的重心,再在这个重心附近用小范围、小步进做一次局部二维扫描。
判定通过区是否健康,有几个经验特征。健康的通过区应该是一个连通的、形状接近矩形或椭圆的块,边界平滑。如果出现孤立的通过小岛,多半是噪声碰巧通过,不能用作工作点。如果通过区呈明显的斜条状,说明时刻和阈值之间存在强相关,通常对应占空比失真或者边沿速率不匹配。如果通过区被一条竖直或水平的窄缝切断,先怀疑某个特定时刻或电平下的固定图案失效,而不是随机的。
裕量的定义要写进程序而不是口头约定。我习惯用内缩比例:在通过区边界基础上,每边内缩百分之十五到二十五,取内缩后的矩形中心作为工作点,同时把内缩后的最小宽度作为裕量指标记录。内缩比例取多少,取决于你的平台稳定性:离散度大就多缩,稳定性好可以少缩。这个值一旦定了不要随意改,改了之后历史数据就不可比了。
| 通过区形态 | 常见原因 | 处理方向 |
|---|---|---|
| 连通、方整、边界平滑 | 正常 | 直接取中心 |
| 斜条状 | 时刻与阈值强相关,占空比失真 | 检查边沿速率与阈值匹配 |
| 多个孤立小岛 | 噪声或反射造成的偶发通过 | 提高采样次数,查走线与端接 |
| 中间有窄缝 | 特定图案或特定电平失效 | 换图案复测,查电源与串扰 |
| 整体偏窄 | 裕量不足 | 查驱动强度、ODT、接触电阻 |
提示:二维扫描的数据一定要落盘。后面分析批次分布、做相关性比对、排查客户退回,全靠这份原始数据。只保存最终工作点,等于把最有价值的信息扔了。
3.4 用 Shmoo 图量化裕量并设置 Guardband
Shmoo 图的价值不在"好看",在于它把多维参数空间的可通过性可视化成一张地图,你能一眼看出工作点离悬崖有多远。
我一般会出三张:写方向的相位-电平图、读方向的时刻-阈值图、以及全速下的频率-电压图。前两张用来定工作点和裕量,第三张用来判断器件在不同工作条件下的稳定性边界。频率-电压那张特别有用,因为它能告诉你这颗料是"刚好过"还是"轻松过"——斜率高、边界陡的,说明接近极限。
量化裕量的具体做法:在通过区内取工作点,然后沿每个维度分别向两侧推进,记录失效前的距离,取四个方向中最小的那个作为该维度的裕量。这个"最差方向裕量"比"平均裕量"有意义得多,因为失效总是从最薄弱的方向开始。
Guardband 的设置要和裕量挂钩而不是拍脑袋。一种可操作的方式是:统计一批已知良品在各维度的最差方向裕量,取分布的低分位数(比如百分之五),把这个值作为门槛,低于门槛判不合格。同时工作点内缩量要保证"即使参数漂移,仍在通过区内"。这两条一起用,既能拦住边缘料,又不会把好料错杀。
量产里还有个现实问题:裕量门槛设太严,良率掉;设太松,客户端失效。我的经验是先用小批量做双向验证——取一批判为边缘的料,做加速应力或者多次复测,看它们在应力后是否失效。如果失效比例明显高于中心料,说明门槛方向是对的,只是位置需要微调。这个动作做一轮,比在会议室里争论参数应该设多少有用得多。
3.5 温度电压角落与量产可复现性
训练参数在常温常压下找到,不代表在全角落都成立。GDDR5 的延迟随温度变化,驱动能力随电压变化,这两个效应叠加,工作点会漂。漂多少,得实测。
做法是选三个角落:高温低压、低温高压、常温常压,各做一次完整训练,把三组工作点画在同一张图上。如果三组的工作点重叠区域还够大,说明可以取一个折中的固定参数覆盖全角落;如果重叠区域很小甚至不重叠,就必须做分角落的参数表,按测试时的温度档位切换参数。
分角落参数表的管理成本不低,容易出错——切错档位、参数表和程序版本不匹配,都是常见的批量事故。所以能用固定参数覆盖就尽量用,前提是在角落验证时留够裕量。我一般要求角落验证时,最差角落的最差方向裕量仍不低于常温下裕量的百分之六十,达不到就老实做参数表。
可复现性还有一层意思是跨平台的一致性。同一份程序换一台同型号设备,结果应该能对上。对不上的原因通常是校准状态不同、板子批次不同、或者接触件磨损程度不同。建议在程序里加一个快速自检:用金样跑一次训练,和基线数据比对,超出容差就在开始量产前拦住。这个自检花几十秒,能省掉一整天的批量返工。
4. 常见问题排查实录
4.1 典型失效现象与根因对照
排查这件事,顺序比聪明重要。我的习惯是先排除"物理层"——接触、电源、温度,再怀疑"参数层"——时序、电平、扫描范围,最后才怀疑"逻辑层"——图案、模式寄存器配置。因为物理层问题的发生概率远高于逻辑层,而逻辑层一旦错了通常表现为大面积失效,不会时好时坏。
按这个顺序整理一张速查表,遇到问题时从上往下过:
| 现象 | 优先怀疑 | 快速验证动作 |
|---|---|---|
| 同一颗料反复插拔结果不同 | 接触电阻波动 | 清洗接触件,复测三次看离散度 |
| 前几颗正常,连续跑一段时间后失效 | 温漂或电源热漂移 | 监控板温与电源纹波,隔时复测 |
| 特定数据图案失效,换图案正常 | 电源完整性或串扰 | 换伪随机图案对比,查去耦与相邻通道 |
| 训练能过,全速功能大面积失败 | 训练工作点在假通过区 | 重画 shmoo,看通过区连通性 |
| 单工位异常,其他工位正常 | 该工位通道或板子问题 | 交换工位复测,定位通道还是 DUT |
| 换批次后窗口整体偏移 | 封装或工艺差异 | 累积分布对比,评估是否需调板 |
| 边界跳变无规律 | 采样次数不足或噪声 | 提高重复次数,加中值滤波 |
表格里最容易被误判的是第四行。训练能过、功能全挂,直觉会认为是颗粒坏了,实际上很可能是训练搜到了一个由反射造成的假通过区,工作点落在那儿,功能测试一上强度就崩。判断方法很简单:看通过区的宽度和形状,假区通常很窄,而且离主区有一段距离。
4.2 几条踩坑换来的经验
第一条,也是我认为最值钱的:训练失败的料不要直接判死。先用手动方式在同一位置重跑一次,如果这次过了,说明是偶发问题——接触、噪声、或者程序里的判定太严。这一颗料的复测成本是几秒钟,但能帮你发现系统性问题。我遇到过一整批被判失败的料,复测全过,最后查出来是某个工位的接触件磨损,如果不复测,这批料就被冤枉了。
第二条:别迷信第一次调出来的最优参数。刚调通的时候,人容易把那个点当成真理,后面所有数据都围着它转。实际上第一版参数通常偏激进,因为它是在最理想的状态下调出来的——板子干净、温度稳定、没有量产压力。我现在的做法是调通之后主动往回缩,缩到"看起来有点浪费裕量"的程度,量产阶段反而省心。
第三条:把训练时间当成一个要优化的指标,而不是不可避免的成本。一次完整二维扫描可能要几百毫秒,并行工位乘上去,测试时间就上去了。优化的方向不是砍掉扫描,而是分级扫描:首件或者换批次时做完整扫描,量产件做简化扫描(小范围、少步进),只在简化扫描结果超出预期范围时才触发完整扫描。这个策略能把平均时间压下来一大截,同时保留发现异常的能力。
第四条:记录一切。工作点、窗口宽度、扫描原始数据、环境条件、程序版本、板子编号,全都落盘。出问题的时候,这些记录是你唯一能回溯的线索。我见过最难受的情况是客户退回一批料,你手里只有通过/失败的结果,没有任何过程数据,只能靠猜。
第五条,关于沟通:训练参数这种东西,只写在程序里不写在文档里,等于没写。换个人接手,看到一堆魔数,不敢改也不会改,最后就是"这程序别动,动了就出事"。我现在要求每个关键参数旁边必须有注释,写清楚这个值是怎么来的、在什么条件下有效、改了会影响什么。这个习惯救过我好几次。
5. 测试时间预算与并行效率
5.1 训练耗时到底花在哪里
把训练耗时拆开看,大致是三块:参数设置与稳定等待、扫描采样、判定与数据记录。很多人只盯着第二块想优化,实际上第一块往往占比不小,尤其是需要切换 timing set 或者切换驱动配置的时候,平台的建立时间省不掉。
扫描采样的耗时等于(扫描点数)×(每点重复次数)×(单次读写时间)。这三个因子都能优化,但方式不同。减少扫描点数要靠分级策略,不能靠降低精度;减少重复次数要看噪声水平,噪声低的平台可以少重复,但得先测出来;单次读写时间取决于图案长度,短的图案快但覆盖不足,这里要做取舍。
我的经验比例是:首件的完整训练可以占到单颗测试时间的相当一部分,量产件通过分级扫描能压到首件的一小部分。这个比例因产品而异,但趋势是一致的——把完整的留在首件,把简化的留给量产,是性价比最高的做法。
5.2 并行工位的一致性与相关性维护
多工位并行时,最怕的不是某个工位慢,而是工位之间结果不一致。同样的料,工位一过工位二不过,你没法判断是料的问题还是工位的问题。
维护一致性有几个动作是必须做的。定期用金样跑全工位,对比每个工位的训练结果与基线,偏差超限就校准或维修。记录每个工位的漂移趋势,如果某个工位的结果随时间单调偏移,那是老化或者磨损的信号,提前处理比事后救火好。工位间的物理隔离要检查,尤其是电源和地,共阻抗耦合会让一个工位的大电流动作污染另一个工位的判决。
还有一个容易忽略的点:并行测试时的训练顺序。如果多个工位同时做训练,总电流会有波动,可能影响彼此的电源稳定性。错开训练时机,或者错开大电流图案的执行时刻,能减少相互干扰。这个调整在程序里加几行延时就能做到,效果却很明显。
相关性维护不是一次性的工作,是个持续的过程。我一般会把它写进日常点检清单,和接触件清洗、校准验证放在一起,按固定周期执行。清单化的好处是不依赖某个人的记忆,人员变动时流程还在。