
做信号完整性的人应该都跟TDR打过交道。Cadence Sigrity这套工具里的TDR仿真是我这些年排查高速链路问题用得最频繁的功能之一。不管是DDR走线、SerDes差分对还是连接器、过孔这种三维结构Sigrity都能直接在PCB版图上做时域反射分析把链路每一段的阻抗变化拉成一条曲线给你看。这篇文章就以Cadence Sigrity的完整TDR仿真实战为主线从原理、环境准备、仿真操作到曲线解读把整个流程捋一遍。内容偏实操适合手里已经有PCB版图、正准备评估阻抗连续性的工程师如果想系统学习建议跟着步骤在软件里跑一次比单看文档理解深刻得多。1. 为什么用Sigrity做TDR仿真先搞清楚它到底在测什么1.1 TDR不是玄学一个反射公式看懂原理TDR的全称是Time Domain Reflectometry时域反射计。原理其实特别朴素给传输线注入一个快速上升沿的信号信号在链路里走遇到阻抗变化点就会产生反射反射波回到源端后被采样通过反射波的方向和大小还原出链路各点的阻抗。反射的核心公式就一个反射系数 ρ (Z_L - Z_0) / (Z_L Z_0)其中Z_0是传输线的参考阻抗通常是50Ω单端或100Ω差分Z_L是信号实际碰到位置的瞬时阻抗。如果链路阻抗恰好是50Ωρ等于0没有反射波形平得像玻璃。如果某处阻抗变高比如走线宽度变窄、经过连接器端子ΔZ为正反射系数为正返回的波幅度和入射波同极性。反之如果经过过孔反焊盘变小、参考平面被分割导致回流不畅阻抗瞬时变低反射系数为负。反推阻抗时把公式变换一下就是Z_L Z_0 × (1 ρ) / (1 - ρ)仿真软件做的事情就是不断发射阶跃激励、观察反射波形再把反射系数转换成Z-t曲线。回头看这个原理TDR本质上就是在马路上放一个雷达测速点只不过测的不是车速而是路面有没有坑洼。走线宽度突变、过孔残桩、连接器接触点、焊盘边缘全是这条“路面”上的坑洼和坎。1.2 仿真的价值和实测的区别很多人会问有TDR示波器为什么要用Sigrity仿真实测当然重要但有三个瓶颈非常现实第一测量仪器贵一台带差分TDR功能的采样示波器动辄几十上百万很多公司未必愿意配第二测量需要物理样机和测试点位PCB还没打样、芯片还没焊接的时候压根没法测第三测试探针和夹具本身会引入额外的不连续测出来的曲线未必是板子真实的阻抗情况。Sigrity的仿真恰好能解决这几个问题。只要设计文件BRD或ODB格式在叠层参数正确可以在版图阶段就把TDR曲线提前看一遍不需要探针台不需要样品不消耗物料跑一次仿真可能就几分钟。更重要的是仿真可以查看版图上任意网络、任意端口的阻抗曲线哪怕这个网络在物理上根本没有留出测试点。实际应用中我通常把仿真做在硬件打样前。打个比方实测TDR就像装修完入住后才发现水管堵了只能砸墙Sigrity仿真则是在施工图纸阶段就先通一遍水哪里堵一眼就能看到改走线改过孔的成本低得多。仿真结果还能反哺设计规则比如间距、线宽、过孔尺寸项目组直接按结论去约束版图。2. 仿真前的准备数据、环境和模型检查2.1 文件格式与叠层信息的导入Sigrity对EDA文件格式的兼容性做得不错Allegro的BRD可以直接打开ODB也支持。文件导入后的第一步不是急着建仿真而是检查叠层。叠层是整条链路仿真的命根子介电常数、介质厚度、铜箔电导率、损耗正切任何一项有偏差后续算出来的S参数和TDR曲线都会跟着跑偏。导入后建议逐层核对以下几点介质层厚度是否与实际生产叠层一致芯板和半固化片的介电常数是否按厂商推荐值填写铜箔粗糙度模型是否启用。尤其要留意差分线的介质厚度很多情况下差分阻抗偏差大根源是两极间的介质厚度或线宽参数没配好。叠层不正确时TDR曲线整体会呈现出系统性偏高或偏低这种错误往往要浪费好几轮仿真时间才能发现。版图上还需要检查参考平面是否完整。TDR仿真的本质是看场分布参考平面切割、地过孔稀疏都会直接影响局部阻抗所以仿真前先把电源和地网络过一遍确认它们被正确识别为参考网络。2.2 端口设置与激励方式的选择端口位置决定了TDR“从哪看链路”。单端走线一般在发送端芯片的焊盘处设一个端口参考地网络差分链路则用一个差分端口正负极各接一个点参考同样落在差分对的回流面。端口的参考阻抗设置很关键单端端口设50Ω差分端口设100Ω这就是TDR的基准阻抗。切忌端口数量贪多。Sigrity可以对一组网络批量生成端口但每个端口都会增加仿真网格和复杂度理论上没问题实际上跑起来会让你等到怀疑人生。我一般只挑关键网络的关键节点加端口比如连接器两侧、驱动端、接收端、过孔密集区域的两端。激励方式方面TDR仿真本质是在端口处叠加阶跃源。阶跃源的幅度、上升时间、仿真时长三个参数要配合好。幅度一般取0.5V或1V不影响最终阻抗换算结果上升时间要结合需要分辨的最小物理尺寸来选这一点在第三章展开讲。仿真时长要足够覆盖信号沿链路往返一次再多留一点余量否则反射还没有回到源端波形已经截断了。3. Sigrity TDR仿真实战步骤从频域S参数到时域阻抗曲线3.1 在PowerSI中完成频域参数提取虽然最终要看的是时域TDR曲线但Sigrity的典型做法是先走频域这条路先在PowerSI里提取S参数再把S参数导入SystemSI或直接在时域模块里做TDR。频域转时域的好处是S参数文件可以留档后续做眼图、做串扰预算、换不同的激励条件不必重新对版图网格做一次全波求解省去大量重复计算。PowerSI中的具体流程我习惯按下面这几步操作打开设计文件在工程管理器中确认叠层和网络分配无误。在Net Manager中勾选需要分析的网络。TDR关注的是单一链路别把无关的电源网络也选进来否则网格量暴涨。用Pin-to-Pin方式添加端口把端口分配到驱动端和接收端的器件焊盘上。差分网络使用差分端口并设定极性。设置频率扫描范围。建议从低频比如10MHz一直扫到20GHz。原因很直接TDR阶跃的有效带宽和上升时间挂钩经验公式是f_max ≈ 0.35 / t_r。如果目标上升时间是35ps最高频率至少要到10GHz扫到20GHz才有余量。点选Generate S-Parameter运行求解。频率点的步长也要留意。太密会增加求解时间太疏则S参数曲线不够平滑转换到时域后会出现振铃。常规做法是频点总数控制在几百个到两千个之间信道的长链路可以适当加密。3.2 用SystemSI搭建TDR时域链路拿到S参数文件之后进入SystemSI新建一个TDR/TDT仿真工程。SystemSI里搭建拓扑时把前面导出的Touchstone文件作为传输线模型添加进去拓扑的起点接TDR激励源终点接端接电阻。激励源设置是这里面的关键。TDR源通常选择阶跃Step类型的激励设置项包括起始电压、终止电压、上升时间。上升时间的选择策略我要多说两句。TDR的空间分辨率由公式 L_res ≈ v_p × t_r / 2 决定其中v_p是信号在介质中的传播速度。FR4板材中微带线的等效介电常数大约在3.5到4之间传播速度约为光速的50%左右也就是1.5×10^8米/秒量级。如果上升时间t_r取35ps分辨率大约是1.5×10^8 × 35×10^-12 / 2 ≈ 2.6毫米。这意味着两处阻抗不连续点的间距小于2.6毫米时曲线可能把它们糊成一个峰很难分开。如果你想分辨走线末端一个只有几毫米长的stub35ps上升时间已经不太够用可以考虑更快的边沿比如10ps。但边沿越快对S参数的最高频要求也越高数值噪声越难压Simulation耗时也越长。工程上先用自己的设计目标上升时间来跑例如PCIe Gen4/Gen5或DDR5的刷新率对应的实际信号边沿确认没有明显问题后再用更快的边沿做极限验证这是我比较推荐的做法。仿真时长方面需要覆盖往返传播时间。FR4走线的传输延迟大概在150到180ps/英寸假设链路长度6英寸单程延迟约1ns往返约2ns。我习惯设置为单程延迟的10倍以上比如20ns到50ns保证能看到基波反射返回后的稳定收敛段后续判读曲线尾部的基准值会舒服很多。仿真的时间步长设置成上升时间的1/10左右35ps的上升时间配3.5ps步长波形平滑度较好。3.3 运行仿真与波形输出拓扑、激励、各项参数都确认之后直接运行时域仿真。求解器内部的机制是把S参数进行向量拟合Vector Fitting得到状态空间模型再在时域做瞬态分析。这个过程不需要你干预太多但要注意一点收敛后检查一下损耗拟合的误差。如果拟合误差偏大说明S参数的频率响应被简化得有些狠后处理出来的TDR曲线容易在远端出现幅度偏移。仿真完成后后处理模块里选择TDR波形计算。软件会自动把反射电压系数ρ(t)按照公式Z_L Z_0(1 ρ)/(1 - ρ)转成阻抗曲线横轴是时间纵轴是阻抗。输出时可以直接生成Z-t波形同时可以把入射波形、反射波形一起叠加在一张图上方便交叉验证。PowerSI直接做TDR时流程更短在PowerSI界面里选中目标端口运行TDR Analysis设置激励上升时间和参考阻抗软件会在后台自动提取该端口的S参数并换算成时域阻抗曲线。这种方式适合快速健康检查跑完就能看到链路大致情况需要精细控制激励、负载、链路拓扑时还是SystemSI那套组合拳更灵活。4. 结果分析把阻抗曲线读成问题清单4.1 阻抗曲线的标准形态拿到TDR曲线很多新手会懵这一堆尖峰会表示什么其实先记住一个原则曲线纵轴值偏离参考阻抗越大、持续距离越长问题越严重短窄的尖峰对应局部小不连续长距离的凹凸对应走线或者介质区域的系统性偏差。以一条普通50Ω微带走线为例理想曲线是从源端50Ω出发平稳延伸到末端。但实际曲线通常有几类典型形状平坦段稳定在50Ω附近链路正常走线宽度和参考平面高度匹配。持续偏高比如稳定在55Ω以上走线偏窄或层间介质偏厚需要调整线宽。持续偏低比如在45Ω左右走线过宽或参考平面距离过近。一个下凹的窄尖端后紧跟一个上凸十有八九是过孔或者是换层点。过孔因为焊盘、反焊盘、残桩的存在常出现先容性降低再感性抬升的组合形态。末端开放式高阻尖峰对单端走线说明末端没有端接是正常现象。链路上如果出现不该有的高阻峰就要查一下是不是断线、连接器未接触。局部周期性波纹多发生在连接器引脚区域或过孔群密集的换层区代表每隔一小段就出现一个类似的阻抗不连续点。判读曲线时要配合版图坐标把曲线上的异常点映射到具体位置。Sysgtry本身可以联动版图在曲线上选中一个时间点软件高亮对应位置直接能锁定是哪一个过孔、哪一段走线或哪一颗连接器引脚在做怪。这一步实操价值极高。4.2 分辨率、上升时间与定位误差TDR曲线横轴是时间换算到物理距离用公式 d v_p × t / 2。这个除以2来自信号“走过去再走回来”的往返路径。以FR4微带线大约170ps/英寸的时延来算从源端出发到反射点往返多花680ps意味着反射点在差不多2英寸的位置。在判读时必须把这个往返时延换算准确否则定位会差出一倍距离。上升时间造成一项很微妙的偏移实际反射波的到达时刻不是一个干净的点而是按边沿斜坡爬升的过程具体触发点取决于你取哪个阈值。如果链路前端本来就有电抗性阻抗变化上升沿可能被整形导致往后所有反射点的表观位置都偏移一个固定的时间量。这种效应不是仿真误差是TDR的物理本质。加上去——在仿真里可以灵活更换更快的上升时间做对比如果某个特征峰随着上升时间变快而位置前移、幅度变大说明那是真实的小尺度不连续点需要针对性优化如果曲线形态在多种上升时间下都稳定结论的可信度就高很多。定位还有一种常见的“伪峰”现象。比如某个区域内有两个靠得很近的不连续点一个容性一个感性它们的反射在特定上升时间下会抵消一部分只留下一个很小的特征峰。此时切到更快的上升时间两个峰可能就分开了。所以我的习惯是初步分析用设计实际的边沿上升时间定位问题、优化细节时再加一组更快边沿的仿真两相对比导出真正的问题点。4.3 如何反向验证和优化定位到问题区域后可以在版图上做局部修改再跑一次TDR对比。常见的优化方向有下面几种走线阻抗偏差较大但曲线平滑改线宽必要时调整走线所在层的参考平面净空。几次迭代就能把阻抗调回目标值。过孔区域出现明显的下凹/上凸组合优先检查过孔残桩长度能打背钻就打不能打背钻就调整换层位置、把过孔加倍地孔来改善回流路径。还可以尝试优化反焊盘直径。连接器区域反复曲线异常从连接器封装库里检查焊盘宽度、反焊盘形状以及参考平面在连接器引脚区域的净空。差分链路出现窄的共模反射检查差分对在换层区的双线间距是否有突变参考平面是否切割还有连接器区域的地引脚分布是否对称。每改一版我都建议把旧曲线和新曲线叠在一张图里对比只看目标段的差异。如果曲线整体往参考阻抗靠拢说明方向正确差异不大就要怀疑问题根源判断错了回头再看版图结构而不是反复调同一个参数。5. 实操中的高频问题与排查技巧5.1 常见问题速查表我用表格把这几年用Sigrity做TDR仿真时遇到比较多的问题整理一下。问题现象可能原因排查与解决阻抗曲线整体偏高叠层中介质厚度值偏大或介电常数设置偏小核对叠层参数用已知阻抗样板标定Dk阻抗曲线整体偏低介质厚度偏薄或线宽设置偏宽同样先核对叠层再看走线实际宽度曲线振荡剧烈、噪声大频域扫描点数太少或S参数频带不够增加频点提高最高频率必要时加密低频段过孔区先深跌后高耸过孔残桩过长或地孔回流不足加背钻、增加地孔、优化反焊盘两处相邻不连续点看不清上升时间太长分辨率不够改用更快上升时间的激励重跑TDR远端电压基线不回稳仿真时长太短反射未完全收敛延长仿真时长至少覆盖往返延迟的10倍差分TDR中偶模分量异常差分对间距突变或参考面不对称检查差分对几何一致性查看换层区地孔布局仿真曲线和实测曲线形态对不上测试夹具/探头引入额外不连续或S参数未包含封装段在仿真链路里加入夹具模型校准参考面5.2 实测和仿真对不上的排查思路仿真和实测对不上是高频提问区常年霸榜的问题。根据我的经验先不要急着怀疑软件算错多数问题出现在模型范围和参考面差异上。第一确认仿真链路包含哪些部分。很多板级仿真只提取了PCB版图内的链路封装、插座、测试线缆都没算进去。而实测时探头往往怼在连接器或者芯片引脚上链路里天然多了封装引脚和测试夹具的影响。两者对比时必须在仿真拓扑里也把对应模型加进去或者把实测的参考面移到与仿真端口一致的位置。第二检查测试的探头端接。TDR探头本身有特定的接触电感和寄生电容如果在软件后处理时没有做夹具去嵌曲线前端的一小段就会呈现明显的尖峰。这种尖峰经常被误判为PCB的过孔问题很容易白忙一场。第三看看差分探头的极性有没有弄反。差分TDR把正负极弄反曲线会直接变成共模形态让人一头雾水。类似低级错误在实测现场非常常见仿真之前先把探针连接关系核对一遍。第四设定一个合理的容差。仿真模型基于理想化材料参数实际板材的Dk值在不同频率会有色散铜箔粗糙度也不可能100%还原。TDR曲线上某些细节幅度差一点是正常的重点关注不连续点的位置和趋势不要执着于0.5欧姆的绝对一致。5.3 最后一点实用经验最后分享一个小习惯我每次做完TDR仿真都会把S参数文件、TDR曲线截图和版图定位图一起归档到同一个工程文件夹。版本迭代时新曲线和旧曲线叠在一起做回归对比可以清晰地看到每一个设计改动对阻抗的影响写报告或者评审时也能减少很多反复解释。另外TDR仿真不要只当成“验证工具”我更愿意把它当成“设计诊断工具”。每次跑完看看曲线顺手把过孔、连接器、换层区的异常点记下来哪怕是小的“非规范”区域也标到版图上。设计方案评审时直接展示这部分数据说“这里后续可能有反射隐患”比空口强调经验有效得多。这套流程我用下来前期投入的半小时仿真时间往往能省下打样后好几轮的改板成本。值得每个做高速设计的工程师在项目里提前走一遍。