
经常有朋友问我做高速数字接口验证为什么总要把眼图往芯片里面搬高速SerDes、DDR、PCIe这类接口跑起来之后信号速率上去了芯片引脚和封装带来的反射、损耗在同一条链路里纠缠成一片“毛刺”外部示波器探头根本够不着最佳测量点这时候片上眼图技术就成了既能看波形、又不破坏信号完整性的关键手段。从EOMEye Opening Monitor眼图张开度监测到2-D Eye Scan这条演进路线解决的其实是从“能不能通”到“还剩多少裕量”的判断问题。这篇文章我就把片上眼图从原理到实现一层层拆开来讲。我不会堆一堆“行业趋势”的空话尽量按实际做项目的思路来。内容主要面向高速接口设计、信号完整性验证、芯片测试相关岗位的工程师也适合刚接触SerDes物理层、想理解内建眼图测量到底是怎么一回事的同学。下面直接进入正题。1. 为什么高速接口非得把眼图“搬进”芯片里1.1 外部示波器的三个硬边界要先理解片上眼图为什么出现得先看清楚外部示波器在高速链路上能做的和不能做的。第一是带宽。实时示波器要看几十GHz的信号本身价格就夸张探头、电缆、连接器每一样都在损耗边缘上挣扎。就算你舍得买一台带宽够的示波器探头一上去寄生电容和电感立刻改变了被测节点的阻抗你看到的“真实信号”里面已经混入了人为扰动。对低速电路这不算什么但到了56Gbps甚至112Gbps的PAM4信号上一点点探针负载都可能把眼图张开关小。第二是接入。现代高速接口封装越来越紧凑引脚间距越来越小球栅阵列封装的芯片内核信号直接走微凸点再往上是HDMI、USB-C这种物理层和数据链路层高度整合的PHY。很多节点根本上就没有物理探测点你连示波器探头的落点都找不到。很多芯片测试策略里关键的高速链路只能通过环回模式验证但环回只能证明“收发路径大体工作”并不能给出眼看张开程度这种量化裕量数据。第三是测量时长。外部示波器要统计出低误码率眼图的张开轮廓需要大量采样。示波器虽说可以做到一次触发采集几百万个UI但实际长期抖动、串扰、电源纹波这些低频效应往往需要几十秒甚至几分钟的连续数据才能体现出来。示波器不可能一直挂在那儿跑生产测试这在量产筛片上毫无优势。这三个边界决定了要获得可靠、可重复、又不需要外部设备辅助的眼图信息就必须把测量通路做在芯片内部让收发器电路自己充当“采样示波器”。片上眼图技术解决的就是这个“自测”问题。1.2 片上测量的价值主张做芯片量产测试的人都清楚一个道理能不用外部仪表就不用外部仪表。片上眼图最大的价值不是让你看得更“准”而是让你在无法外接设备或者外接成本极高的环境下依然能获得可比较、可追踪的测量结果。比如芯片老化测试时不可能给每颗DUT都插上昂贵的示波器和差分探头。片上眼图功能被系统控制软件调用几千颗芯片在老化板上同时跑眼图扫测哪个通道眼高下降了多少哪个通道眼宽收窄了多少数据统一回传自动比对。这种场景下精度不需要达到实验室示波器的水平但必须有统一标准、可重复、全温度范围一致。片上眼图的另一个价值在于量产分bin。以前高速接口芯片分配bin只有“良”和“不良”但拥有了2-D Eye Scan之后可以根据眼高、眼宽、眼张面积做更细的分级高速接口性能优异的批次可以做更高级别产品性能一般的批次流向消费级。这件事我们在PCIe Switch芯片项目里实际做过效果非常直接。2. EOM眼图张开度监测是怎么工作的一维判断的核心闭环2.1 EOM的核心流程数据采样、电压扫描与误码统计EOM可以说是片上眼图的“入门形态”它并不画出完整的二维眼图而是在特定时间位置通常是眼图水平中心附近对信号进行电压方向上的扫描用误比特率来判定当前电压阈值下的接收裕量。整个工作流程大致是这样接收器锁定在正常数据路径上CDR时钟数据恢复已经把采样时钟对齐到最佳相位EOM逻辑在原有的数据采样器旁边通过一个可调的电压参考源建立第二个“判决采样器”这个参考电压从信号幅度的低端开始逐步向上扫描在每个电压台阶上EOM采样器与正常数据路径的采样结果进行逐比特比对统计不一致的次数即为该电压位置上的误码数当参考电压逐渐进入眼图中央双采样器判决结果基本一致误码数为零当参考电压移到眼图边缘以上或以下误码率急剧攀升。在这个过程中最关键的是如何把“误码为零”这个结论转换成眼高。我们一般设定一个目标误码率阈值常见的有1e-9、1e-12等等。EOM控制逻辑通过二分查找算法快速逼近满足该误码率阈值的最高和最低电压点两者之差就是统计意义上的眼高。这里用一个简单的伪码描述二分查找逻辑function eom_voltage_search(initial_voltage, direction): low min_voltage high max_voltage for step in range(N): mid (low high) / 2 ber measure_ber(mid) if ber TARGET_BER: if direction UP: high mid else: low mid else: if direction UP: low mid else: high mid return (low high) / 2很多人误以为EOM测的是某个时刻的瞬时电压其实不是。EOM本质上是统计采样它通过大量比特的对比判断某个电压阈值的出错概率跟示波器的余辉其实是同一种思路只是把采样点从二维网格退化到了单个时间位置上的一维电压扫描。正因为它只扫电压不扫时间EOM通常被做成快速判定功能一条通道的完整眼高扫描只需要几十毫秒。2.2 从BIST到片上示波器EOM采样结构的可靠性考量EOM本身是一种BIST内建自测试结构但它在真实应用中对硬件设计有一些特殊要求。最主要的坑是参考电压的产生。EOM的电压扫描精度直接取决于DAC的单调性和噪声。很多芯片用电阻串DAC看起来很简单但电阻串的分压节点在大量比特切换时会有突冲电流电压台阶跳变瞬间的毛刺会造成误码统计偏差。项目里我们用过两种方案一种是加输出缓存放大器但带宽做不高另一种是分段电阻树加高速开关每次切换后等待稳定再开始采样。实测下来后者的重复性更好。另一个问题是第二采样器的输入电容与主数据采样器不一致导致参考采样点与实际数据采样点在时间上不完全重合。EOM测出的“眼中心”有可能是偏移了几皮秒的眼中心这在高数据率下无法忽略。所以靠谱的EOM设计都会把第二采样器的版图布局做得与主采样器完全对称并且在前级加独立的输入缓冲让两个采样路径的延迟尽量一致。我在实际调测中还遇到过更隐蔽的问题EOM的参考电压扫描范围是相对电源轨的但电源存在纹波EOM测出来的眼高里其实混入了电源噪声的影响。这在某些场景下是特性有些场景下是误差。比如你要测量的是“芯片在标称电源纹波下的实际眼高”那没问题但如果你要评估的是收发器自身的性能极限就得给EOM的电压参考源加额外的滤波或采用差分参考架构让它对电源纹波不敏感。3. 从EOM升级为2-D Eye Scan两种典型的实现路线3.1 基于PRBS统计点扫描的构架EOM只测量眼图中心位置随电压变化的裕量不涉及时间偏移所以它无法反映眼图的水平宽度。2-D Eye Scan就要在电压扫描的同时增加时间维度得到真正二维分布的眼图轮廓。最常见的实现方式是用PRBS测试码型激励待测通道接收端的扫描采样器在内部产生一个可调时间偏移和可调电压偏移的二维扫描网格并在每个网格点上统计误码率。这与EOM的二分查找完全不同扫描采样器必须能够在多个时间位置上对码流进行采样并判断该情况下是否出错。系统的扫描流程大致如下初始化把扫描采样器的相位偏移设为0电压偏移设为中心按预定的网格步长循环调整电压阈值和时间相位在每一个二维坐标上让扫描采样器工作一段时间采集N个比特统计误码数误码数超过预置阈值判定该点“不开放”否则判定为“开放”最终把所有网格点的判定结果绘制成二维眼图。这个方案的优点是逻辑简单、面积开销小复用EOM的大部分硬件缺点则是测量时间长。假设眼图范围是2V乘以2UI量化步长为5mV和0.02UI那就是400x10040000个网格点每个点统计10万个比特总比特数就是40亿个。在28Gbps的数据率下大概需要14秒以上。对于实验室调试可能无所谓但对于生产测试来说这是不可接受的。所以工程上对这个架构做了很多优化。常见做法是先粗扫后细扫先用大步进快速找到“危险区域”的边界再在边界附近用小步进加密扫描形成分层网格。还有一种做法是分析眼图的统计规律只扫描等边界的轮廓线也就是用类似等高线搜索的方法找到各个目标BER对应的眼图轮廓这样网格点数量可以减少一到两个数量级。3.2 基于并行采样阵列的二维眼图如果单纯追求单次测量速度可以采用并行采样架构即让多个采样器同时工作分别对应不同的相位偏移和电压阈值。这样一次码流通过就能同时采集多个眼图位置的信息。这种结构的硬件开销很大。每个并行采样器相当于一个独立的小判决电路还要有各自独立的相位插值器。在28Gbps的SerDes接收端一个DLL或PLL驱动的移相网络可能只能稳定输出8到16个相位再多相位的skew会失控。所以并行采样阵列通常限制在中等分辨率例如16个相位点乘以8个电压点共128个采样器。并行架构在PCIe Gen5/Gen6的链路均衡训练中有实际应用场景。因为在训练过程中链路需要快速评估发送端均衡参数调整是否有效如果没有并行眼图扫描每轮参数调整都跑一遍PRBS统计训练时间会拖得非常长。有了并行采样一次突发数据就能拿到足够的信息来判断均衡方向。从我的经验看选择哪种2-D Eye Scan架构核心权衡在于下面这张表对比项统计点扫描架构并行采样阵列架构硬件面积开销低高单次扫描耗时长秒级短毫秒级分辨率可变性灵活软件可控受硬件数量限制适用场景实验室调试、深度诊断生产测试、快速链路训练对时序收敛的要求低高多相位偏斜是难点实际项目中我见过不少两者结合的方案芯片启动阶段用并行粗扫加快训练进入运行模式后用统计点扫描做细粒度的健康监测。这种混合方案不是最优解但确实是工程可落地性最强的。4. 影响片上眼图精度的那些“坑”抖动分配、偏置与校准4.1 EOM摆放位置与寄生通路片上眼图采样器放在哪个位置直接影响它能“看到”什么信号。很多初做片上一体化测试的同仁会忽略这个问题以为采样器只要能接到RX输入缓冲的输出端就行。实际上RX输入路径上有很多关键节点焊盘输入点、ESD保护管后、均衡器输入端、均衡器输出端、判决器输入端。不同位置的眼图形态差异非常大。焊盘输入点看到的是反射最严重、背景噪声最强的信号眼基本是闭合的均衡器输出端看到的是已经经过CTLE和DFE补偿的信号眼图明显张开但这时候的形态已经不再反映链路的原始质量。你要回答的问题决定了采样的位置如果想知道链路上通道本身有多差采样点要尽量靠近焊盘如果想评估最终误码率采样点应该尽可能靠近判决器。EOM和2-D Eye Scan本身存在一个天然的限制它看到的是经过接收前端之后、尚未经过最终判决的信号。这个节点之前的均衡器、自动增益控制、偏移校正电路它们带来的噪声和串扰也会被眼图记录下来。也就是说片上眼图是从采样点往发射端方向“看回去”的链路质量不是纯粹的信道特性也不是完全意义上的接收裕量。理解到这层你才能正确解读眼图扫描结果。4.2 校准回路与两点“自校准”影响片上眼图精度的第二大问题不出在信号通路上而是出在参考量上。EOM和2-D Eye Scan都要依赖内部的时间基准延迟线或相位插值器和电压基准参考DAC这两个基准自身都可能漂移。时间基准方面相位插值器通常需要配合校准码才能保证输出相位的线性度。如果某个电压点的相位插值器本身有0.5 LSB的DNL误差扫描得到的“眼宽”就会系统性偏差几个百分点。很多芯片会在开机或每次扫描前把相位插值器的延迟-编码关系做一次自校准利用延迟锁定环产生的均匀相位间隔作为参考逐级测量相邻相位的实际延迟差再反向修正控制码。电压基准的校准更隐蔽。参考DAC的满量程电压由带隙基准或者电阻分压决定温度漂移和老化都会让它偏离设计值。实现里的做法是给DAC增加两点校准结构一个是零值校准把参考电压强制接到地电位调整失调消除码一个是满量程校准把参考电压接到一个内部精密基准源上调整增益误差消除码。在量产测试插入式测试模式里这两步校准会在每颗芯片出厂前做一次校准表烧录到非易失存储区正常工作时直接加载校准表避免每次扫描都重复校准。这里还要提一个非常容易被忽略的问题EOM扫描期间主数据路径的DFE抽头系数是不是保持不变如果DFE自适应还在跑抽头系数会随着输入码型不断调整那么EOM看到的眼图会跟着抽头系数浮动扫描结果出现“呼吸效应”。做2-D Eye Scan时规范的流程是先把DFE系数钉住再做扫描。我在第一个做EOM的项目里没注意这个问题重复性始终达不到要求最后把DFE adaptive free-running改为frozen之后问题立刻消失。这个经验我建议其他工程师提前记住。5. 实测数据长什么样以及如何解读5.1 二维眼扫描的典型图表从色阶图到限界轮廓2-D Eye Scan的结果通常保存为二维矩阵横轴是采样时间偏移以UI为单位纵轴是采样电压偏移以mV为单位每个坐标点的值表示该位置统计到的误码率。呈现方式有两种主流形式。第一种是色阶图把误码率按对数尺度映射到颜色深度深蓝色表示无误码区域红色表示高误码率区域。这种方法信息量大可以直观看出眼图内部哪些区域出现了“意外的高误码率”往往对应码间干扰、串扰峰值或者其他非理想效应。第二种是限界轮廓图把某个目标误码率对应的边界画成等高线例如1e-6、1e-9、1e-12三条轮廓线就像地图上的等高线一样能明显看到眼图的“高原”和“陡坡”。实际读取结果时我有几个固定习惯。第一先看眼图轮廓的对称性如果上下眼宽不对称通常存在占空比失真左右眼高不对称大概率是上升沿和下降沿响应不一致或者发送端存在非对称的预加重。第二看眼图中心是否存在“小岛”或“空洞”这种局部异常往往指向DFE抽头过冲或反射驻波。第三看高误码率区域的轮廓是否平滑如果轮廓边界呈锯齿状可能是扫描网格步长太大也可能存在周期性抖动源需要结合抖动分解进一步确认。有一次我们调试一款56G PAM4 SerDes接收芯片发射端均衡已经反复调整外部示波器看到的双通道眼图都“看起来完美”但系统误码率就是压不下去。接上2-D Eye Scan后才发现G下面那层眼的右上角区域有一块局部误码率异常升高的“暗斑”范围大概只有0.1UI乘20mV。后来定位到是某个电源域上数字逻辑翻转时产生的固定频率噪声与数据边沿形成了周期性的相位调制。要是没有二维眼图单靠误码仪和示波器这个问题估计得排查好几天。5.2 从功耗、应力来挑选2D眼扫描设计的工程实践做片上眼图功能规划时功耗和设计复杂度往往被低估。EOM只需要一个额外的采样器和一组DAC功耗增加极小。但2-D Eye Scan整体扫描时相位插值器在短时间内会反复切换路径数字控制逻辑高速翻转这部分功耗可能会达到几十毫瓦级别对于某些对功耗敏感的移动芯片不可忽略。所以在芯片设计阶段就要确定眼图测量的工作模式是只支持低频偶发扫描还是支持连续的实时监测前者可以把眼图扫描模块做成完全独立电源域通过电源开关控制平时完全关断只在测试时开启后者则必须把眼图扫描模块与其他模拟前端一起放在常开电源域里前提是功耗预算允许。另外从测试时间成本来看2-D Eye Scan的全扫描数据量很大。一个常见的误码率矩阵原始数据就有几MB如果要通过慢速的串行调试接口传到上位机传输时间甚至会比扫描时间还长。工程上做法是压缩结果只把误码率超过若干档位阈值的位置记录下来例如只输出1e-9和1e-12两个阈值的限界坐标这样一张眼图只有几百个点传输毫无压力。还有一点想重点强调片上眼图测量结果与外部示波器测量结果之间通常存在系统性差异你不能指望两者完全一致。差异的来源在于片上测量点的带宽、负载、噪声基底与示波器不同。在做设计验证时应该先建立两种测量方式的对应关系例如在同一个EVB上同时量片上眼图和示波器眼图找出两者之间的偏差规律之后在生产测试中用片上眼图的绝对数值与历史数据做比对而不是与外部示波器数值直接比较。这样才不会因为“数值对不上”而浪费大量排查时间。我在实际使用中发现判断一套片上眼图功能做得好不好有一个非常粗糙但有效的标准把同一颗芯片放在相同温度和电压条件下连续做20次2-D Eye Scan如果每次扫描出的等高线轮廓面积偏差在5%以内说明这套系统的重复性达标了。如果连这个都做不到后面所有数据分析都建立在沙子上。眼图扫描技术这几年还在往更精细的方向走从二维眼图再到峰值失真分析、甚至内建误码率和抖动分解链路越来越复杂但是“怎么测得更准、更快”这个核心问题一直没有变。理解清楚EOM的实现逻辑理清2-D模糊扫描的两种路径把控好校准和解读的细节这套技术用起来就会非常实在。