做 PCIe 这行久了,被问得最多的一个问题就是:"这条链路跑不上去,我到底该加 Redriver 还是换 Retimer?"问的人里有刚入行的硬件工程师,也有做了几年服务器整机的老手,甚至还有软件同事——他们只关心一件事:插上卡能不能认到设备、能不能跑满带宽。每次我都会反问一句:你知道这几个词分别指什么吗?结果十有八九答不上来,或者把 Retimer 和 Redriver 当成一回事,把 Buffer 和 Driver 混着叫。这几个词在 PCIe 信号链里天天出现,Datasheet、原理图、BOM、厂商选型表里到处都是,但真正能把它们摆在一张桌子上讲清楚差别的人并不多。这篇就按我自己的理解,从信号怎么走、协议怎么协商、板子怎么画、问题怎么查这几个角度,把这五个东西一次讲透,尽量少绕弯子,多讲能直接用在项目上的判断方法。
1. 先搞清链路:PCIe 信号为什么非要中间器件
1.1 一条链路从发送到接收要闯几关
PCIe 的本质是一对差分线,一端发一端收,听起来简单,但真实系统里这条路径很长。信号从芯片的 SerDes 出来,先过封装内部的走线和 bump,再进 PCB 表层或内层走线,中间可能穿过过孔、连接器、金手指、线缆、背板,最后再进对端芯片的封装和接收缓冲。每一段都在消耗信号质量,而且消耗的方式不一样:PCB 走线主要是频率相关的插入损耗,高频衰得多、低频衰得少,结果是眼图被"压扁";过孔和连接器带来阻抗不连续,产生回波和反射;相邻走线、参考平面开槽、连接器针脚之间又会产生串扰。
Gen1、Gen2 时代这件事没那么痛苦,2.5 GT/s 和 5.0 GT/s 的奈奎斯特频率只有 1.25 GHz 和 2.5 GHz,普通 FR4 板材、几十厘米的走线,只要阻抗控制住、长度别太夸张,基本能开眼。到了 Gen3 的 8 GT/s、Gen4 的 16 GT/s,情况就完全变了:奈奎斯特频率抬到 4 GHz 和 8 GHz,同一段走线的损耗几乎是翻倍地涨。Gen5 的 32 GT/s 把奈奎斯特推到 16 GHz,这就不是"走线尽量短"能解决的了,很多时候必须在线路中间放一个器件,把已经被衰减、被扭曲的信号重新"整形"再送出去。
1.2 三种损耗与两个"眼睛"
判断需不需要中继器件,业内通常看三个量:插入损耗(Insertion Loss)、回波损耗(Return Loss)和串扰(Crosstalk)。插入损耗是你最该关心的,它直接决定信号还能不能睁眼。行业的习惯做法是把插入损耗画成频率曲线,单位是 dB,然后在奈奎斯特频率那一点上看数值。比如 Gen4 在 8 GHz 上,CEM 规范给整个通道(含发送端封装、走线、连接器、接收端封装)的目标损耗大致是 28 dB 这个量级,Gen3 在 4 GHz 上大约 22 dB,Gen5 在 16 GHz 上约 36 dB。这些数值是业内广泛引用的量级,具体项目还是要以你手上的规范版本和芯片厂商的仿真模型为准,别拿一个数字套所有板子。
回波损耗管的是"反射回来的能量有多少",它和阻抗控制质量直接相关。差分阻抗如果不是规范要求的那个值,反射就会变严重,眼图上的表现是高电平抖动、交叉点模糊。这里有个很多新手会踩的坑:PCIe 的差分阻抗并不是常见的 100 Ω,CEM 规范要求的是 85 Ω 这个量级(带容差),照搬 USB 或者以太网的 100 Ω 经验去做,损耗和回波都会变差。第三个是串扰,尤其是连接器和过孔区域,密集排布的时候近端串扰会直接吃掉眼高。
1.3 什么时候必须加器件
我的经验判断是这样的:先按板材和走线做一次粗略预算,如果估算出来的通道损耗已经贴近规范目标值的 80% 以上,就别赌了,方案里预留中继器件的位置。具体到数值,普通 FR4 在 8 GHz 的插入损耗大概在 0.5 到 1.0 dB/inch 这个区间,取决于线宽、铜厚和板材;好一点的低损耗板材能压到 0.3 到 0.5 dB/inch。假设你有一条 10 inch 的 Gen4 链路,光走线就吃掉 6 到 10 dB,再加两个连接器各 1.5 到 2 dB,加两端封装各 2 到 3 dB,很容易就突破预算。
这时候你要做的不是马上冲去买 Retimer,而是先分清楚"缺的是什么"。缺的是驱动能力、只是单纯幅度不够,用 Buffer 或者简单的 Driver 就够;缺的是高频补偿、信号形状还完整但衰减太厉害,用 Redriver;如果是长背板、跨机箱、线缆连接这类通道损耗已经大到 Redriver 补不回来的程度,才轮到 Retimer 上场。至于 Switch,那是另一条思路,它解决的是"接口数量不够"和"拓扑要扩展"的问题,不是单纯为了救信号。
2. 五个名词拆开看:Retimer、Redriver、Buffer、Driver、Switch
2.1 一张表先看骨架差异
我在给团队做培训的时候,习惯先甩一张表,把最关键的分野摆出来:是否恢复时钟、是否感知协议、能不能扩展拓扑。这三条基本决定了器件的定位和价格。
| 器件类型 | 是否恢复时钟 | 是否协议感知 | 典型延迟量级 | 相对成本 | 能否扩展拓扑 |
|---|---|---|---|---|---|
| Redriver | 否 | 否 | 亚纳秒级 | 低 | 不能 |
| Retimer | 是,带 CDR | 是,但对软件透明 | 数纳秒级 | 高 | 不能 |
| Buffer | 否 | 否 | 亚纳秒级 | 低 | 可做扇出分配 |
| Driver | 否 | 否 | 亚纳秒级 | 低 | 不能 |
| Switch | 是,内含 SerDes 并终结事务层 | 是,完整的协议设备 | 数十到数百纳秒 | 最高 | 能,端口扩展 |
这里要强调"对软件透明"这几个字。Retimer 虽然感知链路训练过程,但它不会出现在操作系统的设备树里,不占总线号,也不占配置空间。你在系统里lspci是看不到 Retimer 的,看不到 Redriver,也看不到 Buffer。能看到的 Switch,是一个或者多个 PCI-PCI 桥设备,有 BDF,有配置空间,这才是它和 Retimer 的本质区别。
2.2 Redriver:模拟补偿的"放大器",便宜但有天花板
Redriver 干的事情说穿了就是把信号再放大一遍,顺便做点高频补偿。它内部通常是一个连续时间线性均衡器(CTLE)加一级增益级,把高频部分多提一点、低频部分少提一点,让被通道压扁的眼图重新张开。它不需要恢复时钟,不需要做时钟数据恢复(CDR),所以延迟极低,通常只有几十到几百皮秒,对整个链路的时序几乎没有影响,功耗也低,一个通道几十毫瓦这个量级,封装小、价格便宜,一颗四通道的可能只要几块到十几块钱。
但 Redriver 有几个天生短板,选型时一定要记住。第一,它不区分信号和噪声,增益是"一视同仁"的,链路里的串扰、反射、随机噪声会跟着有用信号一起被放大。第二,它不能消除抖动,发送端和通道带来的确定性抖动、随机抖动照样往后传,抖动的累积不会因为 Redriver 而减少。第三,它对链路损耗的补偿是有上限的,一般能补 8 到 15 dB 这个量级的通道损耗,再多它就压不住了。
还有一个特别容易搞错的点:PCIe 用的是线性Redriver,不是限幅型。线性 Redriver 会把信号按比例放大,保留幅度信息,让接收端的 DFE 还有发挥空间;限幅型会把信号切成方波,幅度信息全丢,接收端均衡反而失效。这两种器件封装可能差不多,型号差一个字母,用在 PCIe 上效果天差地别,采购的时候千万核对手册里那行 "linear" 字样。
2.3 Retimer:带 CDR 的信号再生器
Retimer 的思路完全不同:它先把进来的模拟信号"读"出来,通过 CTLE 和判决反馈均衡(DFE)恢复出 0 和 1,用 CDR 从数据流里把时钟提出来,然后用这个干净的时钟重新发送一遍。这个过程相当于在链路上重新开了一个发送端,前一级累积的抖动被切断,信号质量回到了接近芯片出厂的状态。
代价也很明显。第一是延迟,因为要走一遍 CDR 和重新发送,延迟通常在几纳秒这个量级,具体多少要看器件手册,选型时务必核对;PCIe 规范对 Retimer 引入的延迟是有约束的,不能随便大。第二是功耗和成本,一个四通道 Gen4 Retimer 的功耗可能是 Redriver 的三到五倍,价格也是好几倍。第三是复杂度,Retimer 需要配置,需要上电初始化,需要参与链路训练过程,出问题的面比 Redriver 大得多。
关于协议层面,有一点值得展开说。Retimer 必须能在链路训练的关键状态(比如 Detect、Polling 这些阶段)正确转发信号,同时要在正常工作时快速进入低延迟直通模式;一旦它配置错了、初始化没完成,或者固件里某个均衡档位设得不合适,表现就是链路训练不上、只认到 Gen1,或者跑一段时间掉链。很多 Retimer 还要求支持独立参考时钟(SRIS)和公共参考时钟两种模式,板子上时钟方案改了,器件配置也得跟着改,这个后面会细说。
2.4 Buffer 与 Driver:最容易被叫混的两个词
这两个词在中文语境里经常被翻译成"缓冲"和"驱动",听起来差不多,实际用途差得挺远。Buffer 的本意是"隔离"和"扇出":输入一路信号,输出多路,目的是不让后级负载反过来影响前级。典型的 PCIe 场景是参考时钟分配——主时钟源出来之后要送给 CPU、Switch、插槽、网卡、SSD 好多地方,直接并联会互相拉扯,这时候就要用时钟 Buffer,一颗出四路、八路,每路独立驱动。这类器件对加性抖动要求极严,Gen5 时代常要求加性抖动在几十到一百飞秒这个量级,选错了整条链路的时钟裕量就没了。
Driver 更多指"把驱动能力提上去",输入输出一般是 1:1,不一定做扇出。它出现的场合往往是那些"不起眼但很要命"的地方:复位信号走太长导致边沿变缓,需要 Driver 整形;SMBus 挂的设备太多、容性负载太大,需要 Bus Buffer 或者叫总线扩展器;参考时钟要穿过一个连接器到子卡,也需要 Driver 提高驱动能力。这些信号速率不高,但时序要求硬,翻车了照样让系统起不来。
这里有个实操经验:复位信号(PERST#)的整形千万别随手加一级反相器或者普通逻辑门。PERST# 是低有效,上电时序有明确要求,中间加一级会引入额外的延迟和不确定的上电状态,我见过好几块板子就是因为加了个反相器,结果上电时设备概率性识别不到,查了两周才发现是这级器件在上电瞬间输出不确定。
2.5 Switch:协议设备,不是信号器件
PCIe Switch 是整个家族里最"重"的一个。它内部有上行端口、下行端口,每个端口后面都是一个虚拟的 PCI-PCI 桥,有独立的配置空间,参与完整的枚举过程。上行端口接主机,下行端口挂设备,主机看到的是"桥下面挂着的设备"这种拓扑。你手上那块 x16 的 CPU 直连通道,如果拆成四个 x4 给四块 SSD,用的大概率就是一颗 Switch。
因为 Switch 内部每个端口都有自己的 SerDes,信号进去要经过接收、解码、缓存、重新发送,所以它顺带也起到了"信号再生"的作用,长链路经过 Switch 之后信号质量反而变好了。但千万别把它当 Retimer 用:它的延迟是几十到几百纳秒量级,因为它要处理事务层、要做流控、要缓存数据包;它的功耗和价格也完全不是一个量级,主流的 PCIe 4.0/5.0 Switch 芯片价格往往在几十到几百美元,还要配散热片。
Switch 真正值钱的地方在于拓扑能力:端口扩展、通道拆分(比如上行 x16 拆成 x8+x4+x4)、非透明桥(NTB)做双主机共享、分区隔离、热插拔支持、错误上报与隔离。这些功能没有一个能用 Retimer 或者 Redriver 替代。如果你遇到的是"接口不够用"、"需要多个设备共享一个上行端口"、"要做双控冗余",那答案只有 Switch。
3. 速率一步步往上走,器件选型怎么跟着变
3.1 从 Gen3 到 Gen6:奈奎斯特频率与损耗预算
选型的第一步是把速率换算成频率,因为器件的带宽、补偿能力都是按频率标的。
| 代次 | 单通道速率 | 编码方式 | 每通道单向带宽 | 奈奎斯特频率 |
|---|---|---|---|---|
| Gen1 | 2.5 GT/s | 8b/10b | 约 250 MB/s | 1.25 GHz |
| Gen2 | 5.0 GT/s | 8b/10b | 约 500 MB/s | 2.5 GHz |
| Gen3 | 8.0 GT/s | 128b/130b | 约 985 MB/s | 4 GHz |
| Gen4 | 16.0 GT/s | 128b/130b | 约 1969 MB/s | 8 GHz |
| Gen5 | 32.0 GT/s | 128b/130b | 约 3938 MB/s | 16 GHz |
| Gen6 | 64.0 GT/s | PAM4 + FLIT | 约 7877 MB/s | 16 GHz(符号率 32 GBd) |
这张表最值得盯的是最后一列。Gen5 从 16 GT/s 翻到 32 GT/s,奈奎斯特频率直接从 8 GHz 跳到 16 GHz,通道损耗在同一个板子上可能凭空多出十几个 dB,这也是为什么 Gen5 时代 Retimer 的存在感突然变强。到了 Gen6,速率先翻倍到 64 GT/s,但改用了 PAM4,每个符号带 2 bit,符号率只有 32 GBd,奈奎斯特频率还是 16 GHz,和 Gen5 一样。表面上看"频率没涨",实际难度更大,因为 PAM4 把眼图分成三层,眼高只剩 NRZ 的三分之一,对信噪比、线性度、均衡能力的要求高得多,Gen6 还引入了 FEC,器件怎么配合规范还在演进,做新平台的朋友最好紧盯规范更新和芯片厂的应用手册。
3.2 均衡能力到底在谁手里
链路能不能跑起来,本质上是"发送端均衡 + 通道 + 接收端均衡"这三段加起来能不能把眼图打开。发送端有 FFE(前馈均衡),接收端有 CTLE 和 DFE,中间如果放了 Redriver,它贡献一段 CTLE 增益;放了 Retimer,相当于在中间重新开了一组完整的收发端,把问题割成两段分别解决。
这就解释了一个常见困惑:为什么同样的板子,换成另一家的芯片就跑不到 Gen4?因为各家发送端 FFE 的档位、接收端 DFE 的 taps 数量、CTLE 的调节范围都不一样。链路预算是按规范算的,但实际芯片的均衡能力有强有弱。当你在链路中间加 Redriver 时,接收端看到的是"被补偿过的信号",如果 Redriver 的 CTLE 补偿曲线和接收端 DFE 打架,反而可能比不加还差。我见过一个典型案例:加 Redriver 之后 Gen4 反而训练不上,把 Redriver 的增益档位从最高调到中间档,问题立刻解决——因为过度补偿把高频噪声一起抬起来,DFE 的判决反而更容易出错。
3.3 参考时钟架构:Common Refclk 与 SRIS
这一块是 Retimer 项目里最容易翻车的地方,也是 Redriver 完全不用操心的地方。PCIe 的参考时钟有两种架构:一种是公共参考时钟(Common Refclk),两端共用同一个时钟源,扩频(SSC)是同源同相的;另一种是独立参考时钟(SRIS),两端各自用自己的时钟,各自带扩频,允许 ±300 ppm 的频差。
Retimer 夹在中间,必须知道它面对的是哪种架构,因为两种模式下它的内部时钟处理方式不一样。如果配置错了,表现往往是链路能训练但训练得很慢、偶尔掉链,或者干脆上不去。Redriver 因为不恢复时钟,对这两种架构基本无感,这也是它在一些老平台改造项目里更受欢迎的原因之一。
这里顺带提一个实际痛点:SRIS 模式下,如果 Retimer 的固件版本比较老,可能只支持其中一种模式,采购时要和 FAE 确认清楚,别等到板子回来了才发现要改配置。我建议在做原理图阶段就把时钟方案定下来,然后在 BOM 里标注 Retimer 必须支持的模式,这条信息最好直接写进设计规格书。
3.4 延迟、功耗、散热与成本的连锁反应
延迟不是纸上参数,它会影响系统设计。Retimer 的延迟虽然只有几纳秒,但在一些对延迟敏感的场合(存储阵列、实时采集卡、多级级联的背板)是需要累加考虑的,如果一条链路上串了两级 Retimer,延迟就要叠加。Switch 的延迟更大,用作数据通路时一般无所谓,但如果拿 Switch 做低延迟转发,就得提前和业务侧对齐预期。
功耗带来的连锁反应更直接。Retimer 和 Switch 都是瓦级器件,热量要算进整机风道。我做过一个机箱项目,原本计划上 Retimer,仿真发现风道末端温度偏高,最后改成在结构上把 Retimer 挪到风扇正前方,才把结温压下来。Redriver 和 Buffer 基本是毫瓦到百毫瓦级别,散热上一般不用特别操心,但也不能完全不管,尤其是放在密闭小板上的时候。成本上,一颗 Gen4 四通道 Redriver 和一颗同规格 Retimer 的价格可能差三到五倍,Swtich 又是另一个数量级,做预算时要把这些差距算进去。
4. 落地实操:从链路预算到原理图再到点灯
4.1 链路预算怎么估:一个 Gen4 x16 的实例
我拿一个真实项目做个估算演示,数据做了简化,只说明方法。板子是一块 Gen4 x16 的加速卡,从金手指到主控芯片,走线大约 7 inch,中间没有连接器,板材是中等损耗的 FR4 改进型,8 GHz 下取 0.6 dB/inch。走线损耗约 4.2 dB,金手指连接器按 1.5 dB 算,主控芯片封装按 2 dB,发送端(主机侧)封装和走线按 3 dB 算,加起来约 10.7 dB。Gen4 的目标量级是 28 dB,看起来还有 17 dB 的裕量,那是不是不用加器件了?
不一定。上面算的只是"平均值",实际还要考虑三件事:一是走线的阻抗不连续和过孔带来的额外损耗,二是温度升高后铜损和介质损耗的漂移,三是批次差异和板材参数波动。工程上一般会留 20% 到 30% 的裕量,也就是实际按 20 dB 左右去准备。如果这个项目还要支持 Gen5 的向上兼容,那奈奎斯特变成 16 GHz,损耗可能直接翻到 20 dB 以上,这时候方案里预留一颗 Retimer 的位置就比较稳妥了。
提示:链路预算不是一次算完就完的,最好在原理图阶段、PCB 阶段、样板阶段各算一次,每一版都拿仿真或者实测数据去修正,别用初版数字走完全程。
4.2 器件放哪、AC 耦合电容放哪
中继器件的位置不是随便放的。Redriver 一般放在通道损耗的"中点"或者稍微靠前一点,因为它的补偿能力有限,放太靠后信号已经被压得太扁,补不回来;放太靠前又浪费了它的增益。Retimer 通常放在长链路的中间或者接收端之前,因为它能重新开眼,位置弹性比 Redriver 大一些,但也要避开噪声大的区域,比如电源模块旁边。
AC 耦合电容是另一个关键细节。PCIe 规范要求 AC 耦合放在发送端,容值常见是 100 nF。加了 Retimer 之后,Retimer 的接收侧和发送侧各自需要 AC 耦合,也就是说一颗 Retimer 会引入两组耦合电容,位置和容值都要按厂商参考设计来。我见过有人照搬原来的单一电容方案,结果 Retimer 侧缺少耦合,链路根本起不来。到 Gen5 时代,有些设计会评估更大的容值来改善低频响应,这个要结合规范和仿真结论,别自己拍脑袋改。
走线方面,差分对内两根线必须严格等长,Gen4/Gen5 一般控制在几 mil 以内,因为对内偏斜会直接变成共模噪声;lane 与 lane 之间的等长要求宽松得多,接收端有去偏斜机制,不用做成"蛇形大合唱",那样反而增加损耗和串扰。过孔尽量少,必须换层的时候用背钻或者盲埋孔,避免长残桩在 8 GHz 以上形成谐振。
4.3 电源、去耦与参考时钟
中继器件对电源噪声比普通逻辑器件敏感得多,因为它的输入信号可能只有几百毫伏。我的做法是每个电源引脚一个 0.1 µF 加上一组并联的 1 µF 和 10 µF,靠近引脚放置,回路面积尽量小;如果器件有独立的模拟电源和数字电源,一定要分开走线,最后单点汇合。电源纹波控制不好,眼图上看不出来,但误码率会莫名其妙地高,这种问题最难查。
参考时钟的质量直接决定链路余量。给 Retimer 和 Switch 供时钟的时候,优先用低抖动时钟源,走线做差分、包地、远离高速数据线。Gen5 平台上,参考时钟的抖动要求比前几代严得多,源头没选好,后面加什么器件都补不回来。还有个容易被忽略的点:时钟 Buffer 本身的加性抖动必须算进总预算,别只盯着晶振的指标看。
4.4 上电配置:Pin Strap 还是 SMBus
Redriver 一般靠引脚配置,几个 strap 脚决定增益档位和工作模式,硬件拉高拉低就行,简单可靠。Retimer 就复杂多了,通常有两种配置方式:引脚模式和管理总线模式(I2C 或 SMBus)。引脚模式适合快速点亮,但可调参数少;总线模式能读写寄存器、调整均衡档位、读取状态,适合调试和量产调优,代价是要有固件配合,主机侧或者 BMC 要能访问到这条总线。
这里有个实践经验:一定要把配置总线的访问路径留出来,哪怕量产后不用。调试阶段能读寄存器,效率完全不一样。另外,Retimer 的固件或配置表版本要记录在案,不同版本的默认均衡参数可能不一样,换批次之后出问题,第一件事就是核对版本号。
4.5 调试实测:眼图、误码率与 LTSSM 日志
点亮之后的验证一般分三层。第一层是"能不能认",系统枚举正常、链路宽度和速率符合预期。第二层是"能不能稳",跑压力测试、反复插拔、开关机循环、高低温循环,观察有没有掉链和降速,同时抓 LTSSM 状态迁移日志,看链路是在哪个状态反复横跳——是卡在 Polling,还是进了 L0 之后偶尔回 Recovery。第三层是"余量有多少",用误码仪做接收端压力测试,加抖动、加电压偏移、加通道模拟,看是否满足规范要求;有条件的话做眼图扫描,看眼高眼宽的实际数值。
我的习惯是第一次调试就把这三层都过一遍,不要等量产前才发现余量只有 1 dB。压力测试尤其重要,实验室里常温跑通不代表现场能稳,机箱内温度升高 20 度,损耗和抖动都可能变化,很多"偶发掉盘"就是这么来的。
5. 常见问题与排查实录
5.1 只训练到 Gen1 或者频繁降速
这是最高频的问题,原因基本集中在四处。第一处是参考时钟,抖动超标或者架构配置错误(该用独立时钟模式却按公共时钟配),链路协商不上去就会退到最低速率。第二处是 AC 耦合电容,位置错了、容值不对、漏掉了,都会导致训练异常。第三处是器件的均衡配置,Redriver 增益档位不合适,或者 Retimer 的默认档位和通道损耗不匹配。第四处是 PERST# 时序,复位释放太早或者太晚,链路训练会乱。
排查顺序我一般这么走:先用示波器看参考时钟有没有、频率对不对、幅度够不够;再看 PERST# 和电源的先后关系;然后用管理总线读 Retimer 的状态寄存器,看它的链路状态和错误计数;最后才怀疑板材和走线。这个顺序能省下大量时间,因为前三条都是能在半小时内确认的,改板子可就得等两周。
5.2 热插拔识别不到或者需要重新枚举
热插拔相关的坑集中在检测引脚和电源时序上。卡的检测通常靠金手指上的短针,短针比长针短,保证插入时电源和地先接通、检测后触发。如果这块做错,插卡瞬间的浪涌或者状态抖动会导致识别失败。另外,热插拔需要上游端口支持,如果上游是普通 CPU 直连通道,可能本身就不具备热插拔能力,这时候要么换 Switch 来提供这个能力,要么接受"关机插拔"。
还有一种表现是"插上去能认,但拔下来系统不知道",这是拔出检测没做好,或者驱动/固件侧没有正确处理。排查时先确认硬件检测信号有没有变化,再看系统侧有没有收到事件,两头都确认了才定位得到。
5.3 兼容性坑:跨厂商、老平台与新固件
兼容性问题最难缠,因为它不是"坏了",而是"某些组合不行"。我遇到的典型场景有三类。一类是链路中间同时挂了 Redriver 和 Retimer,两级均衡叠加,接收端看到的信号被过度整形,反而是去掉其中一级才正常。第二类是主板 BIOS 版本旧,对 Retimer 的初始化流程支持不完整,新卡在老平台上只能跑到 Gen2。第三类是不同厂商的 SSD、网卡对链路余量的要求不一样,A 家的卡能跑,B 家的卡就是不行,这时候要做的是把链路余量做厚,而不是去修某一张卡。
说句实在话,这类问题没有银弹,只能靠组合测试覆盖。我的建议是项目早期就准备一个"设备矩阵",把要用到的卡、要支持的平台列出来,逐个验证,把不行的组合记录下来,能换器件就换,换不了就调均衡参数,实在不行就在规格书里写清楚支持范围。
5.4 问题速查表
| 现象 | 优先怀疑 | 快速验证手段 |
|---|---|---|
| 只认到 Gen1 | 参考时钟抖动、SRIS 配置、AC 耦合 | 示波器看时钟,读器件状态寄存器 |
| 训练成功但跑压测掉链 | 均衡档位、电源噪声、散热 | 调增益档位,测电源纹波,测结温 |
| 热插拔不识别 | 检测引脚、电源时序、上游端口能力 | 量检测信号,查上游端口支持 |
| 换一张卡就不行 | 链路余量不足、兼容性 | 眼图/误码率测试,换卡对比 |
| 插上 Retimer 后反而更差 | 过度补偿、配置模式错误 | 降增益档位,核对配置模式 |
| 系统看不到中继器件 | 正常现象(透明器件) | 查拓扑确认,不要试图寻找 |
6. 选型与替代的经验账
6.1 成本、功耗、面积三者怎么排
做选型的时候,我一般按这个优先级排:先满足链路余量,再看功耗和散热能不能受得了,最后才压成本。原因很简单,链路余量不够是"做不出来",成本和功耗是"做得贵一点",前者是硬门槛。实际项目里,很多人反过来,先选便宜的 Redriver,仿真发现不够再换 Retimer,方案推倒重来,浪费的时间比省下来的钱多得多。
具体到数值参考:一颗四通道 Gen4 Redriver 的功耗通常在几百毫瓦以内,Retimer 大概是它的三到五倍,Switch 又要再上一个台阶;面积上,Retimer 和 Switch 都需要额外的电源网络和散热措施,PCB 上要预留的空间比封装本身大不少。Gen5 平台上,Retimer 的功耗进一步上升,散热设计要提前介入,别等到热仿真报告出来才发现风道不够。
6.2 替代料验证清单
器件缺货或者要降本的时候,替代验证是个体力活。我整理了一份自己常用的清单:第一,带宽和补偿能力是否覆盖目标速率和奈奎斯特频率;第二,是否支持需要的参考时钟架构(公共时钟和独立时钟);第三,配置方式和寄存器是否兼容,固件是否要改;第四,延迟是否在规范允许范围内;第五,封装和引脚定义是否兼容,能不能直接换;第六,功耗和结温是否在散热能力内;第七,厂商的参考设计和仿真模型是否齐全,有没有 FAE 支持。
这七条里,第二条和第七条最容易被忽略。参考时钟架构不匹配,板子回来直接不能用;没有仿真模型和参考设计,通道优化会非常痛苦。我在一次替代选型里就吃过亏,新器件手册指标全对,但没有 S 参数模型,通道仿真做不了,只能靠实测反复试,多花了一个月。从那之后,我把"有没有模型"列成了硬性门槛。
最后分享一个我自己一直在用的做法:在原理图里给中继器件预留旁路(bypass)通路。做法是用 0 欧电阻或者跳线,允许把中继器件从链路上彻底摘掉。调试阶段这个通路能帮你快速判断"问题是不是出在中继器件上",量产阶段万一器件出问题,还能有个应急手段。这个小小的预留,我在两个项目里都用上了,其中一次直接定位到是 Retimer 的初始化配置错误,省下了重做板子的时间和费用。