
做高速SerDes接收机的人大概率都遇到过这个场景系统联调时CDR锁不住打开仿真却发现振荡器跑得挺好。等把探针怼到版图上LC-DCO的输出端才发现频率偏了2GHz或者相位噪声比预算高了6dB。设计一款56G PAM4 SerDes的RXLC-DCO从来不是“能振荡就行”的辅助模块而是直接影响抖动容限和误码率的硬骨头。这篇文章就围绕这个模块把从架构选型、参数估算到版图落地和硅后调试的完整过程拆开讲给正在做类似项目的同行一个可参考的路径。1. 56G PAM4 RX到底需要什么样的时钟源1.1 SerDes RX与CDR的关系SerDes接收机的基本任务是把高速串行数据恢复成并行数字码。56G PAM4意味着单lane速率是56Gbps符号率是28Gbaud——每个符号携带2bit信息。接收机要正确采样这些符号必须有一个与发送端数据节奏同步的本地时钟这个时钟由时钟数据恢复电路CDR产生。CDR由两部分组成鉴相器负责比较数据边沿与本地时钟边沿的相位关系而压控/数控振荡器则根据这个相位误差调整输出频率和相位形成一个负反馈环路。我遇到过不少刚接触SerDes的工程师以为CDR的时钟源可以随便用一个PLL产生的固定频率时钟。但实际操作中发送端的数据率并不是标称的28Gbaud而是存在ppm量级的偏差并且带有一定随机抖动和确定性抖动。CDR必须能够跟踪这些频率起伏也就是说振荡器的频率必须能“微调”。所以RX侧用的一定是压控振荡器或数控振荡器而不是一个固定频率的晶振。在数字辅助的CDR架构里VCO被替换为DCO用数字控制字直接改变频率这也是现在先进制程SerDes的主流做法。1.2 为什么环振DCO在PAM4场景下撑不住很多入门级的SerDes接收机尤其是低速或者测试芯片喜欢用环形振荡器做DCO。它的优点是面积小、调谐范围宽、实现简单拿标准单元库配合反相器和电容就能拼出来。但在56G PAM4这个档位环振的劣势会被急剧放大。首先是相位噪声环形振荡器缺乏高Q值的储能元件相位噪声通常比同等频率下的LC振荡器差10到20dB。在PAM4调制下信号只有三个电平眼实际是四个幅度级幅度容限远小于NRZ任何额外时钟抖动都会直接压缩眼图高度。其次是频率切换速度与功耗的矛盾。要让环振在14GHz甚至28GHz工作需要很大的尾电流功耗预算根本不允许。我接触过的56G PAM4 RX设计目标抖动裕量通常要求时钟TIE RMS抖动在几百飞秒以内环振很难达到。还有一个细节是电源噪声抑制环振对电源电压变化极其敏感在同时存在大量数字逻辑开关的RX芯片里电源毛刺会直接变成相位噪声。LC-DCO在这三个方面都明显更优代价是面积大、调谐范围窄、设计复杂需要额外校准。1.3 LC-DCO的设计指标怎么定设计LC-DCO不能上来就画电路先要把指标量化。以56G PAM4 RX为例数据率为28Gbaud如果CDR采用半速率架构LC-DCO的中心频率就定在14GHz。为什么选半速率而不是全速率因为28GHz的LC振荡器在相同工艺下Q值更低可达范围更窄功耗也更高用14GHz再经过二分频器产生7GHz时钟可以组织更灵活的数字CDR逻辑。当然全速率结构在特定架构下也有优势比如可以减少分频器功耗但多数量产芯片在56G这个速率段仍然倾向于半速率。关键指标有四类调谐范围、频率分辨率、相位噪声和功耗。调谐范围要覆盖PVT工艺、电压、温度偏差一般留8%到12%的余量。比如14GHz中心频率最低要做到13.2GHz最高做到14.8GHz。频率分辨率也就是最小步长要与CDR环路的量化噪声和Σ-Δ调制器配合通常要做到1MHz/LSB甚至更小。相位噪声指标取决于系统预算假设目标是0.15UI的时钟抖动预算对应到14GHz频点1MHz频偏处的相位噪声往往要在-105dBc/Hz到-115dBc/Hz之间。功耗则直接受制于整个RX lane的功耗目标一般一个LC-DCO加输出缓冲要控制在8到15mW范围。把这些指标列成表格设计才有方向。设计指标典型目标值说明中心频率14GHz半速率CDR对应28Gbaud PAM4调谐范围13.2~14.8GHz覆盖PVT偏差最小频率步长≤1MHz/LSB配合CDR数字环路相位噪声1MHz offset≤ -105dBc/Hz确保PAM4眼图裕量功耗8~15mW整个RX lane预算2. LC-DCO的拓扑与核心算子拆解2.1 负阻振荡器从LC回路到起振条件LC振荡器的核心是一个有损耗的LC并联谐振回路。理想情况下电感和电容并联后能量在两者之间来回交换产生正弦振荡。但真实电感有串联电阻电容也有寄生电阻如果不补充能量振荡会逐渐衰减。解决办法是用一个有源电路产生“负阻”抵消LC回路的正电阻损耗。最常见的拓扑是交叉耦合NMOS对两个管子栅极交叉连接到对方漏极从差模角度看呈现出负阻 -2/gm。起振条件要求负阻的绝对值小于回路等效并联电阻也就是gm足够大。但在设计时不能只考虑“能起振”还要兼顾振幅摆幅、噪声和可靠性。振幅太低输出摆幅不够后级电路噪声容限差振幅太高管子进入深三极管区或击穿边缘相位噪声反而恶化。实际设计会把偏置电流和交叉耦合管的尺寸放在一组折衷关系里迭代电流决定振荡振幅管子的gm决定负阻大小而栅长和栅宽又同时影响寄生电容和噪声。电源电压越低这个问题越棘手1V以下电源时通常还需要考虑用NMOS加PMOS互补交叉耦合结构来扩大摆幅、降低对偏置点的敏感度。2.2 数字调谐网络粗调电容阵列与细调变容管DCO与VCO最大的区别就是频率控制端从连续的模拟电压变成了离散的数字码。14GHz的LC-DCO调谐网络必须分成粗细两层。粗调通常采用开关电容阵列每个单元由两个MIM电容串联差分结构加上一个开关管接地或接电源通过外部控制字决定哪些电容接入谐振回路。粗调用来覆盖PVT带来的频率偏移一般用二进制加权或温度计编码。二进制加权面积小温度计编码单调性好、毛刺小。在高速设计里我倾向于温度计编码因为它能避免由失配引起的非线性导致DCO增益变化过大。细调则用变容管实现常见的是反型MOS变容管accumulation-mode MOS varactor它的电容值会随栅压变化。数字控制字通过DAC转换成模拟电压或者直接用多位varactor阵列以数字方式切换。细调的作用是提供足够小的频率步长让CDR环路能够精确对准数据频率。设计时要格外注意细调的DCO增益变化——当粗调档位切换时总电容变化单位控制码对应的频率变化量也会改变。这会对CDR环路带宽造成影响所以通常需要做DCO增益归一化处理或者在算法层面对控制码做补偿。2.3 电感的建模与选型电感是LC-DCO里最“物理”的元件也是仿真和实测差异最大的地方。纳米级工艺里片上电感一般用顶层厚金属走单圈或多圈螺旋实现常见的差分电感可以同时提供谐振所需的感值和较好的Q值。选电感时首要考虑的是感值大小对功率和面积的影响感值大了电容阵列面积变小、功耗略低但电感面积变大、Q值可能会下降因为金属损耗和衬底损耗占比不同。感值小了电容变大、调谐范围变宽但需要更大的尾电流维持振荡振幅。在14GHz附近我用过250pH到400pH的差分电感Q值一般在20到30之间考虑EM提取之后。仿真时最忌只做电感原理图模型。我每设计一版都会对电感单独做电磁场EM仿真用场求解器提取S参数或等效π模型然后把寄生电阻、寄生电容和衬底耦合一起带入电路仿真。很多新手忽略的是电感的金属填充dummy fill影响——版图完成后工艺厂会自动填金属块这些金属块虽然不连地但会引入额外涡流损耗让Q值下降5%到10%。如果不提前在EM仿真里加金属填充做验证芯片回来后锁不住、相噪超标是常有的事。2.4 相位噪声的来源与预算LC振荡器的相位噪声理论上有成熟的莱森Lesson模型。在频偏Δf处相位噪声由三部分主导谐振回路Q值、噪声源主要是尾电流管和交叉耦合管的沟道热噪声、闪烁噪声、以及振荡振幅。大致关系是相位噪声与Q的平方成反比与噪声功率成正比与信号功率成反比。所以提高相位噪声性能有三个方向提高电感Q值、增大振荡振幅受电压和可靠性限制、降低偏置电流源噪声。实际设计里交叉耦合管自身的噪声贡献也不可忽略。经典做法是在交叉耦合管源极加一个谐振在二次谐波的电感用来滤除偶次谐波电流噪声但这会增加面积和复杂度。更常见的让步做法是把尾电流管设计成低噪声结构或者干脆去掉尾电流管用“尾电阻”偏置节省电压余量但会降低共模抑制。在做56G PAM4 RX时相位噪声预算不能只看频谱指标还要算随机抖动RJ。我习惯在Cadence里做瞬态加噪声仿真直接提取过零点的抖动分布再换算成TIE RMS因为频谱积分和高斯近似在某些PAM4场景下会低估最坏情况抖动。3. 一个具体的设计实例14GHz半速率LC-DCO3.1 频率规划与电容阵列位数估算先给一个可复现的估算过程。假设工艺是16nm FinFET设计一个14GHz中心频率的LC-DCO电感选L300pH。LC谐振频率公式 f1/(2π√(LC))那么中心频率下需要的总电容是C_total 1/(4π²f²L) ≈ 1/(4×3.1416²×14e9²×300e-12) ≈ 430fF这430fF里已经包含交叉耦合管的寄生电容、输出缓冲管的寄生电容、电感的寄生电容和连线电容。我一般先做一版不含调谐管的本征仿真提取出固定寄生电容大概150fF那么留给调谐网络的电容就是280fF。假设调谐范围要求12%也就是最低频率13.2GHz最高14.8GHz对应电容上限为484fF、下限为385fF注意调谐电容是并入总电容的。所需调谐电容变化量为484-38599fF再减去可见的细调电容范围粗调开关电容阵列至少要覆盖约80fF的变化量。如果粗调采用温度计编码的开关电容单元每个单元设计成2fF差分等效那么需要40个单元可用6位64档来表达余量刚好覆盖失配。细调变容管阵列的步长由DCO分辨率决定。若要求最低频率步长0.4MHz/LSB对应电容分辨率ΔC C_increment / (2 × Δf/f) 近似为 C_total × 2×Δf/f ≈ 430fF × 2×0.4MHz/14GHz ≈ 24.6aF也就是说细调每位的电容变化量要控制在25aF量级这是一件相当精细的事。单靠变容管的物理尺寸很难做到这么小所以实际中会用多个变容管并联成“单位开关”再用Σ-Δ调制器在时间维度上求平均实现更小的有效步长。这也是数字CDR的优势不需要把模拟分辨率做到无限小而是用高速调制和过采样换取精度。3.2 DCO增益K_DCO确定与环路配套DCO增益是数控振荡器非常重要的参数它把数字控制码与输出频率联系起来单位是Hz/LSB。CDR环路的带宽、相位裕度、锁定速度都受K_DCO影响。对LC-DCO来说K_DCO并不像环振那样平滑粗调档位之间的K_DCO可能差2到3倍。因此我在设计时会给CDR数字滤波器留一组校准寄存器上电后先做一个粗调频率扫描测出每个粗调档位的实际频率然后计算对应的细调增益存入查找表。CDR运行时会根据当前粗调档位动态调整环路增益系数这比单纯靠模拟设计压住K_DCO变化要稳健得多。具体到环路参数假设CDR目标带宽为4MHz28Gbaud PAM4通常取数据率的1/1000到1/2000那么数字滤波器的比例路径和积分路径增益要结合K_DCO和鉴相器增益来算。如果K_DCO设置为8MHz/LSB而鉴相器输出4bit的相位误差那么比例路径增益稍作衰减就能满足稳定性。锁定时间方面从失锁到锁定5MHz频偏一般要求在10μs以内否则系统开机功耗优化和快速唤醒模式会受到很大影响。这些都需要在数字仿真里用行为级模型和实际RTL一起跑。3.3 关键仿真流程与结果判定LC-DCO的仿真不能只看振荡频率和相位噪声还要覆盖起振、频率切换、电源扰动和工艺角。我的标准仿真清单包括以下几项第一是起振仿真。确认在慢工艺角、低压、高温SS/0.85V/100℃仍然能在设定时间内起振。起振时间过长意味着在CDR锁定过程中可能产生错误采样。第二是扫频仿真把所有粗调控制字扫一遍画出频率-控制字曲线检查有没有跳码、重叠或双调现象。好的曲线应该是单调的相邻档位频率差不超过最大步长的两倍。第三是相位噪声仿真用PSSPnoise在每个工艺角下提取1kHz到10MHz甚至100MHz的相噪曲线计算积分抖动。第四是瞬态加噪声仿真模拟有无电源噪声时的过零抖动尤其关注调制器开关切换导致的确定性抖动。第五是共模和振幅特性确保差分输出摆幅不低于后端采样器最低要求。我见过很多仿真在理想电源下非常漂亮接上从系统级模型提取的电源噪声波形后相位噪声直接恶化5dB。所以我在仿真时习惯在供电节点加一个包含纹波和毛刺的电源模型而不是直接接电压源。这样虽然仿真慢一些但结果更接近硅片真实表现。3.4 版图布局与供电处理LC-DCO的版图是整个RX链路里最容易翻车的部分之一。先说布局差分的交叉耦合管要尽量靠近保证两个NMOS管的源漏和栅极走线完全对称电感占据较大面积放在最外侧或者顶层层与其余电路保持一段隔离距离。调谐电容阵列放在电感下方或旁边时要尤其注意它们与电感磁场的耦合——金属走线如果形成环路会像次级线圈一样捡拾电感磁场改变有效感值甚至引起振荡模式跳变。设计时我尽量把开关电容阵列的开关管放在一起通过完整的GND屏蔽减少耦合。供电处理也至关重要。LC振荡器对电源噪声的敏感度极高我在功耗允许的范围内给DCO加了一个独立的LDOLDO的输出再接RC滤波到LC-DCO的偏置网络同时放置多级去耦电容从几百fF到几pF不等。数字控制码的走线必须远离电感和交叉耦合管否则每次控制字切换产生的电流毛刺会通过电磁耦合和衬底路径进入振荡回路。这里我的习惯是控制码先经过一个本地锁存器同步再驱动开关管避免不同位的开关动作时间差异造成瞬间频率毛刺。4. 硅后调试中的常见问题与排查实录4.1 频率覆盖不足是电感走偏还是寄生失控芯片回来后最常遇到的是频率范围整体偏低比如设计目标13.2到14.8GHz实测只有12.8到14.2GHz。第一步不要急着改版先诊断是哪个环节的电容多算了。用片内自测逻辑把粗调扫一遍看看最低档和最高档的频率偏移量是否一致。如果一致说明是固定寄生电容偏大如果不一致则可能是指数级失配或开关管导通电阻偏大。电感感值走偏也是常见的坑。量产时工艺厂会做dummy fill额外金属填充会改变电感周围的电磁环境等效感值和Q都会变化。所以硅后调试的一个重要步骤就是测量电感直流通路上的谐振曲线反推实际感值。如果感值偏差超过5%那就要回到EM仿真循环里校准模型。另一个很容易被忽略的是封装的效应键合线或焊球的寄生电感会和片上电感形成新的谐振结构在某些频段出现异常阻抗。我在测试时偶尔会看到控制字扫到某个中间值时频率跳变几百MHz起初以为是片上问题最后发现是封装和测试电路板走线的寄生电容引起的。解决的办法是测试板和插座尽可能减少走线长度同时把DCO输出经过的ESD和缓冲器电路在仿真里建模到位。4.2 相噪恶化开关管、尾电流与衬底漏电的轮番排查相位噪声比仿真高6dB的情况首先挨个验证偏置点。用片内监控电路读取尾电流管的实际栅压和漏极电流确认没有因为电压余量不足进入线性区。开关电容阵列的开关管导通电阻会直接降低谐振回路Q值尤其在高温低电压下导通电阻增大Q下降明显。这时相噪的频率偏置依赖性会出现反常——远离载波频点的噪声抬高但近端噪声变化不大。这与单纯电源噪声主要在偏置点附近甚至更广表现不同。衬底噪声是另一个隐形杀手。LC-DCO所在位置如果有数字逻辑翻转衬底电位波动会调制交叉耦合管的阈值电压形成相位噪声。排查方法也简单关闭相邻数字模块看相噪是否立刻变好。如果确实如此就需要在版图上增加保护环、深N阱隔离或者把数字块移到更远的区域。量产版本里我通常会预留多组可选工艺选项允许在硅后通过测试针脚开关不同的隔离结构。4.3 粗调切换毛刺与数字码同步CDR锁定的过程中DCO控制字会根据频率误差不断切换粗调档位。如果粗调档位的频率步长很大比如50MHz每步那么切换时数据时钟相位会发生短暂跳变。对于PAM4接收机这个跳变可能导致误码率峰值。排查时会发现误码集中在特定的粗调码过渡区域而同一档内误码正常。解决思路分两块模拟侧把开关电容管的切换时序做成先开后合或先合后开减少瞬间电容变化造成的频率冲击数字侧在粗调切换之前插入中间档位就是用细调先預补偿粗调的频率差然后再切换粗调。这个方法实测下来很有效但会增加CDR算法的复杂度和校准时间。另一个非常容易被忽略的地方是控制码跨时钟域同步——粗调码常由数字逻辑提供DCO工作在模拟域二者时钟不同步控制码任何一拍的亚稳态都会产生毛刺。我的做法是给所有控制位加一组寄存器链在DCO偏置时钟域统一打拍后再驱动开关管。4.4 电源扰动导致的确定性抖动PAM4系统里有一种抖动叫确定性抖动来源于电源VDroop。当RX通道的DFE、均衡器或输出驱动器开关时芯片内部电源会瞬时跌落几毫伏到几十毫伏。这种跌落如果恰好耦合到LC-DCO的调谐节点就会周期性干扰频率形成与数据图案相关的抖动。它在眼图上表现为某些特定序列的眼宽或眼高变差。排查时要抓两件事一是电源跌落与数据图案的时序关系可以用逻辑分析仪触发数据序列同时观察DCO供电端的示波器波形二是DCO对电源扰动的敏感度在测试中用外部信号注入一个可控纹波测量相噪或抖动的响应谱。如果响应强烈就要在版图或封装层面加强供电退耦或者在系统层面做电源序列的错相处理。我这次设计里采用了独立低噪声LDO加片内RC滤波敏感度明显降低但代价是LDO的压差和功耗偏高整个RX lane的功耗预算多了约2mW。4.5 问题速查表现象可能原因排查顺序频率范围整体偏低固定寄生电容偏大、电感感值偏大先扫全码频再反推L和C频率范围窄且高低温差异明显开关管电阻变大、变容管变化率不足测各温度下curve核对varactor模型相噪远端恶化开关管导通电阻、缓冲器噪声逐个关断缓冲/不同调谐档位对比相噪近端恶化尾电流闪烁噪声、电源纹波调制查电源纹波频谱检查偏置滤波粗调切换时误码码转换毛刺、亚稳态、K_DCO跳变观察码过渡时波形启用中间档特定图案相关抖动电源跌落与数据图案耦合时钟/数据采样示波器叠加分析5. 从样片到量产的几点经验5.1 PVT下的自动校准策略LC-DCO在实验室里调到最优并不代表量产芯片也能达到同样性能。温度从0℃升到100℃DCO中心频率可能漂移2%到3%而粗调档位如果固定不变CDR锁定范围就可能不够。所以量产芯片必须包含上电自校准流程先用频率检测器扫描粗调档位选择离目标频率最近的档位然后进入细调阶段通过CDR自身闭环把相位误差收敛。这个流程看起来简单但校准速度很考验设计我见过有些芯片开机校准要花近百微秒这在数据中心的应用场景里是灾难因为系统要求快速唤醒。我的优化办法是把校准分成粗扫和精扫两步粗扫以大步长快速逼近精扫只在粗扫选定档位附近做有限次迭代这样可以把上电锁定时间压到10μs以内。温度漂移的跟踪也很重要。片内温度传感器读取温度后可以动态调整DCO的偏置电流和粗调档位减少温度变化对环路带来的重新校准需求。这组温度补偿数据需要在三温测试时标定写入片上存储。5.2 测试环境对LC振荡器的影响样片测试时测试环境带来的误差经常比芯片本身还大。14GHz信号从焊盘经由测试板到示波器或频谱仪每一段走线都在损耗中而LC-DCO的输出阻抗匹配如果做得不好信号反射会反过来扰乱振荡器工作状态。所以在设计输出缓冲器时我习惯用开漏结构外加测试板上的50Ω端接来匹配同时缓冲器本身要有足够的反向隔离避免负载变化反射回DCO核心。测量相位噪声时还要注意频谱仪的相位噪声底噪如果仪器本身噪声高于待测器件测出来的曲线会被仪器底噪淹没。我用信号源分析仪SSA测量同时通过互相关法把仪器底噪降下来。鉴于此很多项目宁可多做一个片上分频后的低频输出测试点频率降低后测试难度大大减小也能反推高频信号的抖动特性。5.3 迭代版本中我改进了什么流片迭代最能暴露设计短板。我的第一版LC-DCO在功能上完全正常但功率偏高主要原因是交叉耦合管尺寸偏大、偏置电流取值过高。在第二版里我做了一组电流可编程的尾电流源让系统根据链路实际抖动和温度自动调节偏置电流有好几个dB的功耗优化空间。第二版还增加了粗调档位间的重叠设计即使工艺偏差导致某些档位无效仍然能保证频率覆盖单调连续。阻尼电阻也做了可编程控制这样在极端工艺角下可以通过软件把阻尼电阻调大牺牲一点点相位噪声换取起振裕量。控制逻辑方面我引入了粗调切换的“孤岛模式”当CDR已经锁定在一个粗调档位时禁止频繁切换粗调只允许细调范围内做小步进调整。这大大降低了粗调毛刺引起的误码风险实测误码率改善了一个数量级以上。我个人在实际操作中的体会是LC-DCO设计没有“一锤定音”的捷径真正可靠的设计来自对每一个寄生参数、每一段供电网络和每一个PVT角落的较真。特别是PAM4这种高密度调制方式时钟源的一点抖动都会被数据检测器放大到误码率里。建议接触这个模块的同行在原理图阶段多花时间做电感建模和电源完整性预分析把硅后可能踩的坑往前挪到仿真环节。最后再分享一个小技巧每次改版后把历史版本的频率曲线、相噪曲线和版图寄生报告保存成模板对照新旧数据能快速定位“是哪次改动带来了性能回退”这比事后翻仿真日志高效得多。