
做56G PAM4 SerDes接收机时钟模块从来不是配个振荡器这么简单。项目里最磨人的往往就是RX路径上那颗LC-DCO——它要低抖动、宽调谐、扛得住电源噪声还得在PVT变化下不闹脾气。这篇文章把我在这个项目里的LC-DCO设计思路、电路拆解、校准流程和踩坑记录整理出来给同样在做高速SerDes的工程师当个参考。无论你是刚接手SerDes物理层的小白还是已经被CDR环路折磨过几轮的老人这篇都值得花十分钟慢慢看。1. 为什么56G RX这么依赖LC-DCO——设计需求解构1.1 PAM4调制给时钟恢复带来的三座大山先明确一个基本事实56G这个速率下几乎没有人再用NRZ硬扛。NRZ在56Gbps意味着符号率56GBaud信道损耗、串扰和反射根本压不住均衡器复杂度会爆炸。于是PAM4上场用四个电平承载两个比特符号率降到28GBaud同样的53.125Gbps或56Gbps数据速率UI变成原来的两倍。听起来好像对时钟更友好了事实恰恰相反。PAM4有三个眼每个眼的垂直张开度大约只有NRZ的三分之一信噪比直接损失9.5dB左右。同样的BER目标下留给时钟抖动的余量不但没有增加反而被幅度裕量吃掉一大块。更要命的是PAM4的边沿信息密度变低了——电平从中间层跳到中间层时过零点不够锐利bang-bang鉴相器拿到的边沿相位信息质量变差CDR环路的等效增益下降。这时候时钟源的相位噪声和环路的数字控制精度就成了决定眼图能不能睁开的关键。1.2 为什么是LC-DCO而不是Ring-DCO做时钟的人都知道DCO数字控制振荡器有两种主流架构Ring-DCO和LC-DCO。Ring结构面积小、调谐范围动辄50%以上、跨工艺好迁移很多中低速率SerDes甚至SoC里的通用PLL都爱用它。但到了56G PAM4的RX场景Ring就扛不住了。主要原因有三条。一是相位噪声LC振荡器靠谐振腔的选频特性Q值一般能做到15到30带外相噪衰减比Ring快得多Ring的相噪受限于delay cell的本征抖动几乎每个频率偏移段的噪声都偏大。二是电源噪声敏感度RX链路里数字模块、高速IO、ESD结构全都挤在同一块die上电源上的毛刺无时无刻不在Ring的振荡频率对电源电压变化极其敏感LC-DCO的tank电容和电源之间多了一道滤波抗扰性天然好一截。三是抖动积分的带内噪声LC-DCO在几百kHz到几十MHz的偏频范围内积分相位噪声可以做到很低正好覆盖CDR环路带宽对应的抖动累计区间。代价是面积和调谐范围。一颗电感加一组电容阵列占用面积比Ring大一个数量级调谐范围受限于变容管和开关电容的Cmax/Cmin比值一般只能做到10%到20%超过这个范围Q值就掉得没法看。所以选LC-DCO本质上是用面积换相噪、用校准算法换调谐范围。这个取舍在56G PAM4里是划算的因为RX时钟的质量直接决定误码率。1.3 LC-DCO在RX CDR环路里的位置RX CDR是一个追踪环路不是自由振荡。外面的信号进来经过AFE模拟前端包含CTLE和DFE均衡器之后送到采样器slicer采样器的输出进入鉴相器算出时钟相位和输入数据的相位差这个数字误差信号经过数字环路滤波器输出一个频率控制字作用于LC-DCODCO产生采样时钟回馈到采样器并最终通过时钟树分配给各个采样相位。整个链路上DCO就是那个数字耳朵的调节旋钮——它在每个baud rate周期都在被数字逻辑微调以保证采样点始终落在眼图水平张开最宽的中间位置。这里有个容易被忽视的点TX侧的PLL和RX侧的CDR对DCO的要求完全不同。TX PLL关心绝对频率准确度band切换和锁定完成之后基本就交给环路稳定运行RX CDR则时刻面临频率漂移、信道变化和温度波动DCO的控制码字可能每几个UI就要更新一次。因此LC-DCO不只要在单一频点上性能好还必须在整个码字范围内保持单调、平滑、线性——这三条做到任何一条都不容易三条同时做到就是这篇设计笔记真正要聊的东西。2. 设计需求拆解频率、步进、相噪怎么从系统指标落到电路指标2.1 从28GBaud符号率推DCO的频率规划做设计的第一步永远是先定频率规划而不是先画电路。假设系统目标是56Gbps PAM4符号率28GBaud。如果采用全速率时钟架构DCO要工作在28GHzLC振荡器在这个频点上面的Q值、摆幅、功耗都会变得很难看片上电感的寄生也吃掉了大量调谐空间一般不选。更常见的是半速率结构DCO振荡在14GHz左右经过分频器产生所需的I/Q时钟或多相时钟再驱动多个采样器。锁定14GHz这个中心频率之后马上遇到第二个问题调谐范围多大才够用必须覆盖三部分偏差——工艺角的频偏一个corner下的中心频率漂移可以到5%以上、温度漂移-40到125摄氏度范围内无源器件和晶体管的有效电容变化可达2%到3%、以及校准误差校准计数器本身的量化误差、参考时钟的精度。把这些加在一起±6%到±8%的调谐范围是基线要求再留一点裕量我会把设计目标定在±10%上下。也就是13GHz到15GHz左右。范围定太宽tank里的Cmax/Cmin比值被迫拉大开关电容的Q值恶化相噪变差定太窄出厂测试和现场温度补偿都会报警。这里的取舍决定了后面所有bank设计。2.2 量化步进、Kdco与抖动预算的关系DCO的数字控制律里最核心的参数是Kdco单位MHz/LSB——每改变一个最低有效位振荡频率变化多少。这个值不能拍脑袋定它直接对应量化抖动。设想一个极端情况Kdco等于20MHz/LSBCDR在锁定状态下一个LSB的频率跳变会让采样相位瞬间偏移近千分之二的UI。数字环路为了纠正这个偏移又得发出反向的码字结果就是极限环limit cycle——输出时钟产生周期性的相位抖动频谱上表现为一对明显的杂散边带眼图上就是水平方向持续抖个不停。要压掉这种量化噪声有两个手段。一是让Kdco足够小但这意味着调谐范围被分成更多份bank位数暴涨面积和译码逻辑都不答应。二是引入小数控制位加ΔΣ调制DSM把低位码字动态抖动化将量化噪声整形到高频段再靠LC-DCO的窄带谐振特性自然滤除。我的做法是分三级粗调bank用4位二进制或温度计码每级30到50MHz负责扫频校准锁定目标中调bank用8位温度计码每级4到6MHz负责吸收温度和电源慢漂移细调bank用6位温度计码加低位DSM每级0.5到1MHz配合环路滤波器在正常工作时精细修正相位。加起来等效精度可以达到几十kHz/LSB量化杂散几乎可以忽略。这个分档结构是很多SerDes团队的标准打法区别只在位数配比和DSM阶数参数取舍要靠系统仿真迭代若干轮才能定死。2.3 相位噪声与PAM4眼图指标用TDECQ把账算清楚PAM4 RX的时钟指标最终都要落到眼图和BER上。行业内衡量PAM4发射机质量常用TDECQ接收机侧则更关心采样时刻的抖动预算。我习惯从BER预算倒推DCO的相噪需求。假设系统目标BER是1e-6CDR补偿后的残余抖动预算总共300fs rms其中分配给DCO本身的份额大约80到100fs rms。把这个抖动折到频域主要积分区间是从环路带宽比如10MHz到奈奎斯特频率14GHz中间跨越两个数量级以上。在这个区间里LC-DCO的相噪曲线必须保持足够低的底噪和合理的高频滚降。粗略估算单端抖动80fs rms对应到14GHz载波上的积分相噪大约在-45dBc量级这只是一个工程上的量级参考正式流程最好用完整Pnoise积分脚本计算。再从频谱形状反推如果设计目标是偏频1MHz处-105dBc/Hz左右、底噪约-135dBc/Hz积分下来可以达到这个数。这里最忌讳的是最大最小化思维——相噪做到极低当然好但每改善3dB功耗和面积都要涨一截。项目里我见过团队为了把DCO相噪从-104做到-112把功耗翻了一倍最后发现系统BER并没有变好瓶颈根本不在时钟上。正确的做法是把DCO的相噪指标放进整个RX链路里仿真看它对CDR锁定后的采样时机和BER的影响而不是单独抱着相噪曲线死磕。3. 核心电路实现LC-DCO逐模块拆解3.1 谐振腔电感选型、开关电容阵列与Q值取舍LC-DCO的谐振腔决定这台机器的出厂素质。电感我一般选片上螺旋电感差分结构几圈metal走线形成感值在300pH到1nH之间14GHz频点。设计的关键不在感值而在Q值——电感在tank里贡献的损耗直接决定负阻管需要补多少能量、决定相噪的天花板。14GHz下硅基片上的圆柱形螺旋电感Q值做到20到30已经是相当不错的水准金属层越厚、底下掏空越彻底Q越高。设计时最怕的是为了省面积把电感压得太小Q值跌破15相噪就再也救不回来。可变电容阵列这一块是设计中最需要精雕细琢的部分。粗调和中调bank用MOM电容串联开关管开关管导通时电容接入关断时只剩下寄生电容。开关管的尺寸决定两个矛盾的参数管子越大导通电阻越小、tank损耗越好但管子越大关断寄生电容也越大挤占了Cmax/Cmin的动态范围甚至会让高频端tank的谐振特性变差。实际做法是用脚本遍历不同开关宽度和cap值的组合画出相噪-调谐范围-PVT失配的三维曲线再选工作点。细调bank则倾向于用AMOS变容管或者inversion-mode MOS varactor它的C-V曲线连续适合做精细的频率调节。还有一点容易踩坑MOM电容的温度系数远优于MOS电容所以中调和细调bank尽量用MOM结构粗调bank里可以混用一点MOS器件也不至于伤筋动骨。电容阵列的layout要严格遵守单位cell对称每个bit的走线长度、过孔数量、寄生电感都要尽可能一致否则同一code在正反两个方向扫出来的频率曲线会不对称校准LUT做不平。3.2 负阻单元与振荡条件小信号启动、大信号稳态谐振腔本身是个损耗网络必须靠有源器件提供负阻来补偿。最经典的实现是交叉耦合对——一对NMOS差分对栅和漏交叉相连等效提供一个负阻。CMOS工艺里常用互补结构上面PMOS一对、下面NMOS一对形成电流回路。负阻的绝对值大约为-1/gm单端等效或者-2/gm差分等效它要克服tank的等效并联电阻才能把振荡幅度从热噪声里拉起来。起振条件不能只算一个corner。我的标准是在最快corner、最低温度、最高电压和额定偏置电流的worst case组合下负阻至少要大于tank等效电阻的三倍。为什么是三倍而不是一点几倍因为起振的瞬态过程中tank里的能量建立需要几十到上百个周期如果余量不足起振时间会拖到微秒量级CDR的数字状态机已经在超时误判了。起振太慢的DCO在实际芯片里会表现为偶发性的失锁重启非常难排查。大信号工作区同样重要。振荡器一旦稳定摆幅会被偏置电流和有源器件的非线性钳住。若工作在Class-B电流只在半个周期内导通电流效率低现在很多高速DCO采用Class-C结构把交叉耦合管的直流偏置压低让管子只在振荡波形的波谷附近短暂导通电流以脉冲形式注入tank相位噪声效率明显改善。代价是起振相对困难以及对尾电流的噪声更敏感。工程上我倾向于用Class-C加一个辅助的kick-start电路开机时额外注入一小段强电流保证可靠起振稳态后辅助电路关闭。3.3 数字调谐网络设计温度计码、寄存器译码与LUT校准数字控制码字的实现要关注的不只是能调频更重要的是调得稳、调得准。粗调和中调bank我坚持用温度计码。二进制码确实面积小、译码简单但高位翻转时可能产生瞬时毛刺——比如从0111变到1000如果中间某个bit的翻转更快会出现短暂的code回退或者越界频率瞬间跳变一下再回来CDR环路会把这个毛刺当成真实相位变化去纠正产生抖动尖峰。温度计码的每一位权重相同切换时只有一个单位cell的状态变化天生单调代价是译码器面积和寄存器数量上升对现代工艺来说这些代价完全可接受。细调bank可以直接挂DSM调制器。低位码字经过ΔΣ整形后控制的是单位小电容的开关让平均频率落在整数LSB之间。DSM的选择也讲究一阶DSM实现简单但量化噪声抑制不够需要更高的过采样率三阶以上噪声整形更好但环路容易出现不稳定需要精心设计系数。我实际用下来二阶或三阶MASH结构在DCO低位控制里最顺手噪声整形效果和稳定性平衡很好。所有bank的寄存器更新必须同步。切换code的信号若穿过多个时钟域金属走线上稍有偏差就会造成不同bank的切换时间错开几百psDCO在这几百ps里频率落在错误位置CDR会捕捉到一次人为的相位冲击。我的做法是把并行的bank控制字在同一个寄存器阵列锁存再统一放行保证切换同时发生。至于校准LUT则要在后面的校准流程里细聊这里先记住一个原则bank的切换顺序、频率曲线的去重合并和线性化处理必须做在芯片内部的数字逻辑里不能让测试工程师在ATE上花时间手动找码字。3.4 输出接口与测试通路CML buffer、分频和眼图观测点DCO核心输出的时钟不能直接拉出去乱跑。振荡器本身是个模拟敏感电路任何外部负载的变化都可能拉偏频率、恶化相噪。输出必须经过隔离buffer。第一级buffer用CML电流模式逻辑结构输入阻抗恒定不随频率变化既能驱动后续长走线又不会因为负载变化反过来影响tank。然后才是分频器、时钟树和各种测试MUX。分频器这块要特别留神。如果采用半速率DCO输出14GHz经过二分频得到7GHz多相时钟多相时钟的相位精度直接影响DFE反馈和ADC采样的时间交叠。分频器本身的噪声会叠加到DCO的相噪上所以分频器要选用低噪声锁存器结构并且供电域必须和DCO核心的干净电源隔离。很多项目里DCO相噪仿真做得很好一接上分频器和时钟树抖动翻了一倍查到最后都是电源串扰和分频器尾电流噪声惹的祸。测试通路同样不能马虎。为了在实验室用探针台看DCO输出波形很多芯片会在输出端加一个驱动50欧姆负载的buffer。这个buffer的寄生电容不能直接挂在DCO核心输出上必须挂在隔离buffer之后。我见过有人贪方便测试buffer直接接DCO输出结果探针一压上去频率当场偏了百分之几。正确的做法是DCO核心 - 隔离buffer - 分频器/时钟树/测试MUX三级隔离测试路径的寄生再大也不会影响核心振荡器。PAM4眼图计量的时候观测点选择同样要遵循这个隔离原则——尽量探测分频后的低速时钟或者专门的测试重建时钟别拿探针去戳DCO高频输出那种测量数据除了让自己焦虑以外没有任何意义。4. 仿真验证、PVT校准与实测工程问题4.1 仿真策略起振、扫频、闭环锁定三步走纯电路仿真阶段我通常分三步走。第一步是瞬态起振仿真用Spectre或类似工具跑10到100纳秒看DCO能不能在几个纳秒内建立起足够摆幅频率是否正确。这步一定要覆盖所有corner和极端温度而且要把电源噪声模型注进去——电源上有个几百mV的阶跃DCO的频率是否瞬间跳变再恢复这个行为很有信息量。第二步是开环扫频用PSS周期稳态仿真扫每个bank的码字组合得到频率-码字曲线顺便在同一仿真里跑Pnoise得到相噪随码字变化的二维数据。这些曲线就是后面校准LUT的来源也是判断线性度、单调性、量程覆盖是否达标的最直接依据。第三步是闭环仿真把DCO的S参数行为模型或者相位噪声宏模型插进Matlab/Simulink的CDR行为级模型里跑完整锁定过程和BER仿真。PAM4的CDR仿真要特别注意收敛性——edge密度低bang-bang鉴相器增益小环路带宽设计和DCO的Kdco组合起来是否稳定有时候会让人抓狂。这类问题在纯模拟仿真里根本暴露不出来必须靠数模混合仿真在早期发现。4.2 校准流程开环Scan、多项式拟合与在线温度跟踪LC-DCO的调谐范围虽然可以达到±10%但工艺角偏差常常占掉大半必须靠校准把中心频率拉回目标。校准的第一步是上电FLL粗校把DCO输出分频后和参考时钟作频率比较用计数器测频通过二分查找法快速逼近目标频点。粗校结束后DCO的自由振荡频率应该落在目标频率的±1%以内剩下的偏差交给CDR环路的细调。细调依赖LUT查找表——芯片内部保存了一张码字-频率偏差的补偿表校准逻辑根据温度传感器读数和频率误差实时查表修正码字。很多团队头一回做DCO校准会把LUT做成大而全的直接存查表有的甚至要存几千行。但其实真正到生产测试时发现DCO的频率-码字曲线形状在不同corner下高度相似差的主要是整体平移和增益波动。所以更实际的做法是只存几个关键点的拟合系数用二次多项式来确定码字-频率映射关系再加上温度补偿斜率。这样做LUT体积小一个数量级校准时间也从毫秒级降到微秒级。在线跟踪阶段温度传感器每几十微秒采一次温查表算出当前温度下的期望码字修正量叠加到CDR环路控制字上。这个前馈修正非常关键否则温度突变时CDR环路的有限带宽追不上频率漂移BER会明显劣化。我在项目里实测过有温度前馈的情况下DCO频率漂移可以被压在±0.5%以内而没有前馈时能漂到±3%。4.3 版图与工程落地电源噪声、串扰、ESD与散热版图层面DCO是整颗die上最金贵的模拟模块之一。第一原则电感周围保持空旷。电感下方和四周不要铺金属网格不要走高密度打孔的电源环这些都会在电感周围感应出涡流直接烧掉Q值。很多后端工程师为了满足IR drop要求喜欢在电感底下铺一块大金属仿真时觉得没事流片回来相噪差了5到8dB拆来分析才发现是这块金属把电感Q拖垮了。第二原则电源去耦必须贴近tank。DCO的供电引线从焊盘到tank这段路径上的寄生电阻和电感会在瞬态电流变化时形成电压跌落和反弹。正确的做法是在DCO核心旁边放一大片高质量dcap去耦电容用最短的金属支路直接接到tank的电源和地外部只负责给这片dcap充电。我从经验里得到的教训是dcap的面积和位置要做进前期规划不要等PR阶段再去补电容那时候位置受限补出来的效果往往远不如预期。第三原则ESD结构绝不能挂在DCO核心输出上。时钟线的ESD器件寄生电容高达几百fF直接挂上去会把14GHz振荡器的频率拉偏几个百分点。测试通路和ESD器件都要挂在隔离buffer之后。这个设计约束如果写在spec里后端和IO团队在规划时就会留位置否则等他们做完才发现整个DCO输出路径要返工。5. 常见问题与排查清单踩坑实录5.1 起振失败一个负阻算错引发的连锁反应这个坑我踩得最深。某个版本流片回来低温低压corner下DCO偶发起振失败表现是CDR进入失锁状态然后复位重来频率越高越明显。排查大半天时钟路径的仿真数据都正常后来逐corner重跑起振瞬态才发现低温fast corner下交叉耦合管的阈值电压降低同时tank的Q值因为金属电阻变小而略微升高理论上应该更容易起振才对。问题出在辅助偏置电路——它把偏置电压设定得过于贴近阈值点导致低温下工作点偏移有源器件的跨导掉到不足负阻余量从设计值的三倍直落到一点二倍。起振时间拖长到微妙级被数字状态机判定为失锁触发复位而复位之后又撞上同样的问题形成死循环。解决方案分两层。硬件上把偏置电路的电压温度补偿系数调大让跨导在低温下不掉再加一个kick-start电流注入开机时额外灌50微安的启动电流保证负阻余量充足。数字上把起振超时从几个微秒放宽到几十微秒并加入起振后自检——用频率计数器确认达到稳定振荡后才把控制权交给CDR。从那以后起振问题再没有出现过。这个案例告诉我DCO起振检查光看能不能振远远不够还要看多久能振起来并且要和数字状态机的时序配合着设计千万别把模拟和数字当成两个孤立的世界。5.2 频率台阶突变与杂散开关管寄生引发的隐患另一种高频问题扫频时频率-码字曲线在某一两个码字处突然出现台阶甚至跳变对应的相噪也同步恶化。起初怀疑是layout不对称后来重新做版图提取才发现是某个bank里开关管栅极走线过长形成了LC谐振把部分频率点的等效阻抗抬高了很多让tank的Q值在那个特定码字组合下暴跌。这个现象在纯前仿真里根本不存在必须在spectre加calibre等寄生提取之后才能看到。解决方法是把bank的开关管栅极驱动走线做成树形结构并插入驱动buffer保证每根栅极线的寄生电阻和电容接近同时缩短走线长度。另外温度计码的译码顺序也做了优化——把容易产生耦合跳变的码字对拆开让相邻切换尽量走互补的物理路径。改完之后扫频曲线重新变得平滑相噪也不再出现孤立劣化点。这个案例的教训是DCO设计不能只看原理图版图对性能的影响在大频率点和小尺寸工艺下会被无限放大。做版图后仿真时建议扫一次所有bank BIT的频响曲线看起来最不重要的高位bit往往就是隐藏问题的根源。5.3 锁定后性能跳变电源耦合与校准时序还有一类问题是在CDR已经锁定、系统运行稳定时偶发出现BER突增或者phase hit。用实时示波器抓时钟波形能看到一个明显的相位台阶随后又恢复到正常整个过程大约几百纳秒。查了大概两周最后定位到数字核心的电源负载变化——每当数据链路完成一轮校准或者状态机切到某个模式数字逻辑的翻转活动剧增电源IR drop瞬间拉低几十毫伏通过共享的电源网络耦合进DCO的供电域造成频率跳变。这种问题在仿真里最难复现因为电源网络模型的不确定性太大。根治办法是把DCO的电源域完全独立出来不和任何数字逻辑共享pad、bond wire或片内LDO的输出。DCO的LDO自身也要有足够的环路带宽能够抑制几十纳秒尺度的负载瞬态。此外在校准时序上做了对齐——把DCO校准和数字逻辑重负载操作安排在时间上错开避免同时发生最恶劣的电源扰动。做完这两项phase hit的概率下降了三个数量级。这里最核心的经验是DCO的电源设计不是给个干净的1V就完事而是要理解整颗die的电源网络动态包括负载来源和耦合路径。DCO供电能多独立就多独立这是高速SerDes项目里公认的铁律。5.4 快速排查速查表把这几类经典问题整理成一张表方便设计师在调试现场快速定位。现象可能原因排查步骤常用解法起振失败或起振极慢负阻余量不足、偏置点漂移、kick-start缺失检查各corner下小信号负阻与tank等效电阻比值实测起振时间加大启动电流、调深Class-C工作点、增加kick-start电路频率-码字曲线台阶或跳变开关管栅极走线寄生、bank bit译码时序毛刺做版图后提取扫频检查温度计码切换时序优化栅极走线树、插入驱动buffer、统一bank切换时序锁定后偶发phase hit或BER突增DCO电源受数字负载耦合、码字跨时钟域毛刺、温度突变漂移抓时钟相位毛刺、看DCO电源波形在切换瞬间的跌落、检查温度前馈时序独立DCO电源域、增加校准时序对齐、完善温度LUT前馈相噪超标电感Q值不够、底层金属网格吞噬Q、Class-C失配Pnoise扫描对比仿真与实测、做电感磁场仿真优化电感周围金属布局、加大电感面积、降低开关管导通电阻功耗超标DCO核心偏置电流过大、buffer数量过多、Class-C效率不够拆分各子模块电流测试、排查测试MUX是否误开启调整偏置电流到指标下限、剪裁时钟树buffer、Class-C电流复用这张表后面几行特别是相噪超标和功耗超标在实际项目中出现的频率远超想象。相噪超标往往和版图布局强相关功耗超标则经常是这个buffer加一点、那个buffer加一点慢慢攒起来的。建议每位做DCO的设计师在项目初期就把这些指标列成checklist做成版图和电源域的硬性约束而不是等仿真和测试发现问题再补。我个人的体会是LC-DCO设计最迷人的地方就在于它逼迫你把模拟、版图、数字算法、系统指标和测试工程全部串起来思考。一个看似纯粹的振荡器模块最后往往是整颗SerDes芯片里跨团队协作最密集的角落。我踩过的那些坑很多并不是因为某个电路原理没搞懂而是因为过度关注单一性能指标忽略了系统联动。希望这篇文章能帮你少走几段弯路。如果你正在做类似的高速时钟模块最后再分享一个小技巧把DCO的版图后仿真脚本固化成一个标准回归每次投片前把所有corner、所有bank的频响和相噪数据跑一遍存到release note里哪怕这次没有改动DCO也有参考价值后面排查问题时会感谢当时的自己。