
1. 那条 DDR 跑不满的链路暴露的是整条工作流板子打样回来第三天硬件同事把探头往我桌上一放“DDR 2133 就是不过降到 1600 才勉强跑起来你帮我看看。”这是我做信号完整性SI这些年最熟悉的一幕。外行以为 SI 工程师就是坐在那儿跑仿真、出几张眼图报告实际从项目立项到量产签核我们的工作贯穿了一条很长的链路读原理图、定叠层、算阻抗、写约束、前仿真、后仿真、配合 PI 做电源、上板实测、定位差异、写签核文档。任何一环掉链子最后都会以“板子跑不起来”的形式压到某个具体的人头上。那天下午我做的第一件事不是打开示波器而是把三个月前的叠层文件和约束表翻出来。结果很典型第 3、4 层之间的介质厚度在量产版本里被改薄了Layout 因为空间紧张又把一段地址线的换层次数从两次加到了四次四个过孔 stub 叠在一起在 2.4 GHz 附近挖了一个谐振坑。示波器上那个“眼图塌掉”的现象本质上是几个月前一次没走变更评审的叠层微调。1.1 把 SI 工作拆成六个阶段很多人问流程我一般直接画一张表。这张表不是教科书上的理想流程而是我在实际项目里跑过几十遍、被砍过需求也被加过急单之后总结出来的版本阶段典型介入时间主要交付物最容易出问题的点需求导入原理图评审前链路清单、速率清单高速网表漏统计叠层与阻抗结构定厚度后叠层文件、阻抗表介质厚度临时改约束输出Layout 起板前约束表、区域划分图等长分组写错前仿真布局阶段拓扑扫描报告IBIS 模型用错 corner后仿真布线 80% 后通道眼图、S 参数提取端口没去嵌实测签核回板后相关性报告、签核单夹具没去嵌这张表的价值在于它把“SI 工程师”这个模糊的岗位拆成了六个能被追责、能被排期、能被评价的具体动作。1.2 越早介入越省事有三个时间点是“回头是岸”的窗口错过一个后面的成本就翻一倍。第一个窗口在原理图评审。这时候改一个拓扑、换一个驱动成本几乎为零。我见过太多项目等到 Layout 走完线才发现 DDR 的地址线用了 T 型拓扑而控制器根本不支持读写平衡训练只能推倒重来。第二个窗口在叠层确定。介质厚度和铜厚一旦发给板厂再改就要重新做阻抗测试板。第三个窗口在约束发放。约束发出去之前一切都还能谈发出去之后Layout 已经按你的数字开工了改一个等长公差意味着几十根线重走。注意如果你所在的团队没有“原理图评审必须 SI 参与”这条规矩先把这条规矩立起来比买任何仿真软件都值。2. 动手算阻抗之前先把链路拓扑从原理图里抠出来很多人拿到项目第一反应是打开二维场求解器算阻抗。我的习惯是先花半天时间把原理图里所有需要关注的网络捞出来画成一张链路图。这一步不做后面所有仿真都是无源之水——你连信号从哪走到哪、中间经过几个器件都不知道仿真出来的眼图好看也没意义。捞网络这件事听起来简单做起来最容易漏。我一般的做法是先按接口分类存储类、高速串行类、时钟类、模拟类再按速率排序把每个接口的驱动端、接收端、中间器件、端接方式全部标出来。这个过程里最容易被忽略的是那些“看起来不快”的信号比如 50 MHz 的时钟、SPI 的时钟线它们的上升时间可能只有几百皮秒照样要考虑传输线效应。2.1 四种拓扑决定了后面所有的约束怎么写拓扑不是画着好看的它直接决定了约束表长什么样。点对点一个驱动对一个接收最简单。约束重点是阻抗、损耗、参考平面连续性不需要等长分组除非是差分对内部。菊花链Fly-by驱动依次串到多个接收端DDR3/DDR4 的地址命令组典型用法。分支很短但每条分支的 stub 长度需要控制而且要配合控制器的读写平衡训练。T 型/星型驱动分成几路等长分支到各个接收端DDR2 时代的常见选择。分支等长是硬要求且分支点的阻抗不连续会带来反射。带端接的远端分支高速串行链路里常见端接电阻的位置和阻值要跟驱动阻抗匹配。我见过最典型的一个错误是把 DDR4 的地址线按 T 型等长去做。等长做得很漂亮误差控制在 5 mil 以内但因为没有用 Fly-by控制器没有做写平衡训练的机会最后只能靠降频挽救。2.2 器件手册里必须翻的三处信息链路的另一半信息在器件手册里。我的经验是只要翻三处地方八成的问题都能提前发现驱动的输出阻抗和 slew rate 设置。很多控制器支持多档驱动强度和摆率选错档位仿真结果能差出一倍的眼高。接收端的端接方式。是片上 ODT 还是外部电阻ODT 的阻值有几档可选这些直接决定了拓扑能不能收敛。封装的引脚电感和电容。现在很多器件手册会给出封装的 RLC 模型如果不带封装一起仿真高频段的回波损耗会差很多。2.3 一张链路清单表能省掉后面一半的扯皮我习惯在项目启动时输出一张链路清单表格式大概是这样的网络名速率拓扑驱动器件接收器件目标阻抗目标眼高DDR_DQ0-73200 MT/s点对点SoCDRAM40 Ω120 mVPCIE_TX08 GT/s点对点 AC 耦合SoC连接器85 Ω 差分60 mVCLK_100M100 MHz点对点时钟芯片SoC50 Ω—这张表最大的作用不是技术而是管理。当硬件说“这个网不用管”Layout 说“这个间距放不下”的时候你可以直接指着表说这是立项时定下来的目标改可以走变更评审重新评估。3. 叠层和阻抗八成的 SI 问题在开工前就该被按死叠层是整条链路的地基但它在项目里的地位往往很低——通常是结构定完厚度、板厂给了个推荐叠层SI 才被拉进来确认一下。这种顺序本身就是风险。厚度、铜厚、介质材料这三个东西一旦定了后面阻抗能调到什么程度、能走多细的线基本就锁死了。3.1 叠层不是排得越对称越好看新手看叠层喜欢看对称性觉得上下对称就是好叠层。对称确实能减少板子翘曲但对 SI 来说比对称更重要的是这几件事每一层高速信号都要有紧邻的完整参考平面。信号层和参考平面之间的介质越薄走线越容易做细串扰也越小。电源平面和地平面要成对出现并且尽量靠近。这对 PI 至关重要平面间的介质薄高频去耦效果好。高速层尽量安排在内层用带状线。外层微带的阻抗受绿油和工艺影响大一致性不如内层。避免两个信号层直接相邻。真的避不开就把走线方向交叉 90 度并加大间距。3.2 阻抗计算的变量里哪个最容易算错阻抗计算的公式书上都有微带线大概是Z0 ≈ 87/√(εr1.41) × ln(5.98h/(0.8wt))差分阻抗大约Zdiff ≈ 2×Z0×(1-0.48×e^(-0.96×s/h))。这些公式给出的是起点真正决定结果的是那几个变量的取值。我踩过的坑里出错频率最高的三个变量是介质厚度 h、有效介电常数 εr、差分对间距 s。介质厚度会随着板厂的压合工艺波动标准 FR4 的芯板厚度公差能到 ±10%。所以阻抗控制不是算一个数而是算一个范围跟板厂确认他们能做到的公差然后在约束里写上“50 Ω ±10%”这种可执行的指标。有效介电常数更容易被忽略。微带线一半在介质里一半在空气里实际的 εr 介于 1 和板材标称值之间绿油还会再拉高一点。我一般直接让板厂用自己的场求解器算一遍拿他们的结果跟我的对比差异超过 5% 就一起查参数。差分间距 s 则是 Layout 手里最容易被“优化”掉的东西。为了省空间间距一压再压紧耦合确实能把差分阻抗压下来但同时也把共模抑制变差、把损耗抬上去。我给 Layout 的规矩是间距允许在 ±20% 范围内调整超出范围要回来确认。3.3 什么速率才值得换板材板材选型永远是一个成本问题。FR4 便宜、工艺成熟但损耗大。我的判断经验大致是走线长度在一两英寸以内、速率在 5 Gbps 以下FR4 基本够用。速率到 8~10 Gbps或者走线超过 10 英寸就该考虑中损耗板材。到 25 Gbps 以上或者背板级的超长通道低损耗板材加背钻基本是标配。具体数字要看损耗预算。插入损耗的经验值是普通 FR4 大约 0.4~0.5 dB/inch/GHz中损耗板材 0.2~0.3低损耗板材能到 0.1~0.15。你可以先用这个数估一下整条通道的损耗再决定要不要加钱换材料。注意换板材不只是换 Df。Dk 变了阻抗也跟着变叠层要重算阻抗测试板要重做。这笔账要提前算进去。3.4 过孔 stub最容易忽略的那截“天线”过孔是整条链路里最不像传输线的传输线。信号从表层走到内层多余的那段孔壁就变成了一根悬空的 stub。这截 stub 的谐振频率大致是f c/(4L√εr)L 是 stub 长度。算一下就知道1.5 mm 的 stub 在 εr4.3 的板材里谐振点大约在 24 GHz听起来很远但 stub 越长谐振点越低。3.6 mm 的 stub谐振点就掉到 10 GHz 附近了。背钻就是把这段 stub 钻掉。要钻多少、留多少残余 stub取决于你的最高关注频率。一般按谐振频率的 3 倍余量来倒推允许的 stub 长度。比背钻更省事的是换层策略。我在约束里通常会写同一条高速链路尽量少换层必须换层时同一对差分线的两个过孔要挨近旁边的地过孔要在 100 mil 以内。这条约束不花钱但效果立竿见影。4. 约束输出交给 Layout 的是施工图不是一堆规则约束表是 SI 工程师跟 Layout 之间唯一的正式接口。这张表写得好不好直接决定了后面是天天被追着问还是可以安心做仿真。4.1 约束清单的六个维度我现在写约束基本按六个维度组织一个维度写一段尽量不写成几千行的规则清单阻抗单端、差分的标称值和公差。等长哪些线要等长、以谁为基准、公差多少。间距组内线间距、组间间距、跟其他网络的隔离距离。参考平面允许参考哪一层、不许跨分割、换层时的处理要求。区域哪些区域禁止走线、哪些区域必须走在地平面上。端接和器件端接电阻的位置、去耦电容的摆放半径、ESD 器件的位置。表格形式比纯文字好因为 Layout 是拿着它一条条勾的。我给每个网组都做一行后面留一列给 Layout 回签。4.2 等长匹配最容易犯的两个错第一个错是只做组内等长不做组间时序预算。DDR 的 DQ、DQS、CLK 之间是有明确时序关系的只把数据组内部等长做齐数据组和时钟之间的偏斜没算照样过不了。正确的做法是先算总预算从控制器到 DRAM 的一个时钟周期里扣掉驱动偏斜、封装偏斜、接收建立保持窗口、串扰、抖动、ISI 的余量剩下的才是 PCB 走线能用的偏斜额度。第二个错是等长不换算成延时。等长说的是物理长度真正起作用的是延时。同样长度的线走内层和走外层延时差大约 10% 到 15%。我一般直接给 Layout 延时公差单位 ps附上换算表走的层传播延时ps/inch长度换算mil/10ps外层微带约 145约 69内层带状线约 170约 59这两个数字是我们团队内部长期用的经验值FR4 材质、普通叠层下误差可以接受。换算成延时之后Layout 走线时可以边走边算比事后量长度再调整效率高得多。4.3 返工率最高的三类约束写法我复盘过自己发出去的约束返工率最高的写法有三种。第一种是“走线尽量短”。这种约束没有可执行的标准Layout 只能凭感觉。改成“从驱动焊盘到接收焊盘的总长度不超过 1200 mil且至少 70% 的长度走在第 4 层”就清楚多了。第二种是“避免跨分割”。这句话对 Layout 来说等于没说因为他不知道哪块区域是分割的。正确写法是把禁止跨越的平面边界在叠层图上标出来附上坐标。第三种是“参考平面要完整”。完整性是个连续量不是布尔量。我一般会给出允许的参考平面开槽宽度上限比如“参考平面上不允许有超过 50 mil 宽的槽且槽不能横跨信号路径”。5. 前仿真在板子还没画完之前先判一次“死刑”前仿真是我最看重的一步。它的价值不在于给出最终结论而在于在改造成本还很低的时候先把不可能的方案排掉。5.1 拓扑扫描怎么做才有意义前仿真的核心动作是拓扑扫描。假设你的链路里有几个可调项走线长度、端接阻值、驱动强度、过孔数量。把这些做成参数跑几十组组合看眼图怎么变化找出对结果最敏感的那一两个参数。我一般的做法是先跑一个基准组合看眼图大概什么水平然后每次只动一个参数画出趋势曲线。做完一轮之后你就能回答几个关键问题这条链路能容忍多长的走线端接电阻用 40 Ω 还是 50 Ω要不要加串联电阻5.2 IBIS 模型的坑一半来自“用错”而不是“模型烂”IBIS 模型的问题十次里有七次是用错不是模型本身烂。最常见的错是用错 corner。很多模型提供了 typical、slow、fast 三组参数对应的驱动强度和上升时间都不一样。做最坏情况分析时要按信号类型选单端信号的上升沿通常看 fast corner下行沿看 slow corner差分对则要关注两组 corner 之间的偏斜。第二个错是忘了带封装。IBIS 模型里的封装参数R_pkg、L_pkg、C_pkg如果留空或者填了个默认值高频段的仿真结果基本不可信。第三个错是版本太老。老版本模型可能不支持新驱动器的某些配置模式仿真出来跟实测差一大截。拿到模型先看版本号和发布日期跟器件批次对一下。5.3 眼图和浴盆曲线看哪几个数字眼图不是看长得漂不漂亮是看几个具体数字。眼高和眼宽这是最直观的两个量但要注意是在什么误码率下测的。统计眼图的眼高会随 BER 目标变化必须写清楚是 1E-12 还是 1E-15。总抖动 TJ要拆成随机抖动和确定性抖动看。确定性抖动里数据相关抖动DDJ通常占大头一部分来自 ISI跟通道损耗直接相关。浴盆曲线的开口宽度在目标 BER 下的水平开口才是真正的时序余量。我的习惯是看报告先翻到最后一页的边际值表。眼高余量、眼宽余量、抖动余量这三个数只要有一个是负的这条链路就要重新设计。6. 后仿真从 S 参数提取到通道眼图后仿真是在 Layout 布线基本完成之后做的。跟前仿真相比它的输入从“假设的拓扑”变成了“真实的几何结构”可信度高一截但工作量也大一截。6.1 提取之前的准备清单提取 S 参数之前有几件事必须确认否则出来的结果全是错的层叠参数跟板厂最终版本一致。包括每层的介质厚度、Dk/Df、铜厚、绿油厚度。这几个参数里任何一个对不上阻抗和损耗都会偏。提取端口设置正确。端口要垂直于走线方向参考平面要作为端口的参考导体端口尺寸要小于最高频率对应波长的十分之一。去嵌设置正确。如果是连接器或者封装引脚的通道要把夹具和封装的影响去掉或者明确说明保留。网格设置合理。网格太粗结果不准太细跑不动。我的经验是按最高关注频率的波长做自适应网格一般设置成每波长 15 到 20 个网格点。6.2 拿到 S 参数先别急着仿真先体检S 参数拿到手第一件事是做质量检查三件事必查无源性所有端口的反射能量不能超过入射能量之和。如果仿真器报出 S 参数的奇异值大于 1说明数据有问题要回去查提取设置。因果性输出不能早于输入。数值仿真的离散化会产生轻微的因果性破坏一般可以接受但如果破坏严重时域波形会出现前导振荡眼图会假性变好。互易性无源线性网络的 S 参数矩阵应该是对称的S12 和 S21 应该基本相等。如果差太多说明模型里混进了有源器件或者端口设置有问题。这三项检查花不了十分钟但能挡掉后面一整天的返工。6.3 通道仿真的结果怎么判读通道仿真是把 TX 的 IBIS-AMI 模型、提取出来的 S 参数通道、RX 的均衡模型串起来跑最后得到接收端的眼图。看结果时我关注三件事。第一是均衡器的工作点。CTLE 的增益和 DFE 的抽头数不是越大越好过度均衡会放大高频噪声眼图看着开了误码率测试却过不了。第二是反射和串扰的贡献。有些眼图闭合不是损耗造成的而是反射。判据是看回波损耗在哪个频段超标再回头看几何结构。第三是与规格的对照。PCIe、USB、以太网这些接口都有规范的仿真结果要按规范里的参考接收机模型来判。不要自己造一套判据那样做出来的报告没人认。7. PI 不是附赠品PDN 阻抗和去耦电容的协同现在很多团队把 SI 和 PI 放在一起做这是对的。电源噪声会直接调制信号的眼高两者本来就分不开。7.1 目标阻抗到底怎么定目标阻抗的核心公式是Ztarget (Vdd × 允许纹波百分比) / 瞬态电流。举个数1.0 V 的电源允许 5% 纹波就是 50 mV负载瞬态电流 10 A目标阻抗就是 5 mΩ。这个 5 mΩ 看起来简单实际上要在很宽的频段上维持住很难。PDN 的阻抗随频率变化有几个明显的谐振峰低频段由 VRM 的环路带宽决定中频段由大容值电容决定高频段由小封装电容和平面电容决定。几个频段交界的地方容易出现反谐振峰峰值可能比目标阻抗高好几倍。7.2 电容选型和摆放的现实约束电容的选择不是容值越大越好。每个电容都有自谐振频率f 1/(2π√(LC))超过自谐振频率之后就变成电感了去耦效果急剧下降。封装越小ESL 越小自谐振频率越高。一个 0402 封装的 100 nF 电容ESL 大约 0.7 nH自谐振频率在 19 MHz 左右换成 201 封装自谐振频率能提到 40 MHz 以上。所以去耦网络要按频段搭配大容值电容压低频小容值小封装电容压高频中间用几个中等容值填补。摆放上越靠近芯片电源引脚越好从引脚出发的走线要短、要宽、要直接打过孔到平面。我见过最常见的 PI 问题是电容放了一排但走线要绕半个板子才能到芯片。这种情况下电容基本只在低频有效高频的噪声还是靠平面间电容和封装内部电容扛。7.3 SI 和 PI 互相甩锅时检查这几点当信号眼图不好看SI 和 PI 互相怀疑的时候我一般按这个顺序检查回流的路径。高速信号的回流走的是阻抗最低的路径如果参考平面被切碎回流被迫绕路环路面积变大辐射和串扰都会恶化。参考平面的噪声。在参考平面上测一下地弹和电源纹波如果平面噪声的幅度接近眼高那问题多半在 PDN。同步开关噪声。多个驱动器同时翻转的时候共享的电源和地引脚上会有感应噪声。看现象是眼图在某些码型下突然塌掉其他码型正常。8. 上板之后实测和仿真对不上怎么一步步查板子回来真正的考试才开始。实测和仿真对不上是常态关键是要有一套不慌乱、能收敛的排查顺序。8.1 测量手段各自的能力边界每种测量手段都有自己的边界用错了比不测还糟。TDR看阻抗不连续很直观但空间分辨率受限于上升时间。35 ps 的上升时间在 FR4 里对应大约 0.26 mm 的分辨率比这更小的结构它分不清。VNA频域信息全S 参数精确但对校准非常敏感。SOLT 校准适合同轴接口TRL 校准适合夹具和平面结构。眼图仪/采样示波器看眼图和抖动最直接但探头和夹具的影响一定要去嵌否则测出来的眼图是探头加通道的复合结果。实时示波器看偶发异常和调试码型最方便但带宽和采样率要算够。带宽一般按上升时间的 0.35 倍来估采样率要满足奈奎斯特加余量。8.2 一条从夹具到通道的排查顺序我一般按“从外到内”的顺序查先排掉测试系统本身的问题。第一步测一个已知良好的参考通道。用同一套探头、同一个夹具测一块确认没问题的板子如果参考通道的结果正常说明测试系统没问题。第二步去嵌夹具。夹具的延时和损耗会叠加到被测通道上。用 2x-thru 法或者 AFR 做去嵌去嵌前后对比一下差异大的说明夹具影响不可忽视。第三步看阻抗剖面。用 TDR 沿着链路走一遍看有没有明显的阻抗不连续点。过孔、连接器、端接位置是最常见的三个不连续点。第四步频域定位。如果时域看不出问题用 VNA 测插入损耗和回波损耗跟仿真结果对比看差异出现在哪个频段。第五步换码型、换速率。如果特定码型下才出问题多半是 ISI 或 DDJ如果所有码型都出问题多半是反射或阻抗不匹配。8.3 仿真-实测相关性是攒出来的相关性不是一次做出来的是一个项目一个项目攒出来的。我的做法是每做完一个项目把仿真的 S 参数和实测的 S 参数叠在一张图上记录差异。差异往往集中在几个地方连接器的模型不准、过孔模型的电容偏大、板材的 Df 取值偏小。攒上十几个项目之后你就会发现自己的仿真结果有一个系统性的偏差比如插入损耗总是低估 10%。把这个偏差作为一个修正因子写进下次仿真的设置里仿真和实测的距离就会越来越近。注意相关性数据要按板材、按板厂分类记录。不同板厂的压合工艺差异能让你精心标定过的修正因子完全失效。最后说个我自己一直在用的小习惯。每做完一个项目我会写一份两三页的复盘只写三件事这次仿真跟实测差在哪、哪些约束写法被 Layout 误解了、下次哪些参数要提前跟板厂确认。这份复盘不给别人看就是给自己下一次开工时翻。做过十几个项目之后你会发现真正让工作变轻松的不是仿真软件升级了而是这份越写越厚的笔记。