
USB 3.0 的差分线跑 5Gbps阻抗要是控不住后面眼图基本没法看。很多做硬件的朋友拿到 SIwave 之后电源完整性那一套跑得挺熟一到 TDR 就卡壳——要么不知道从哪下手要么跑出来的曲线跟实测对不上。这篇就专门聊 SIwave 2024 R2 里怎么把 TDR 仿真跑通拿 USB 3.0 差分线当例子从模型准备到曲线解读一步步走完。不管你是刚接触 SIwave 的新手还是之前只用过它做 PDN 分析的老手跟着走一遍应该都能把差分阻抗这条曲线给整明白。1. 先搞清楚 SIwave 里 TDR 到底是怎么算出来的1.1 TDR 的本质看反射反推阻抗TDR 全称 Time Domain Reflectometry时域反射。它的物理逻辑其实特别朴素往传输线上打一个快沿阶跃信号信号往前走遇到阻抗不连续的地方就有一部分能量反射回来。反射系数 Γ 和阻抗的关系是Γ (Z_L - Z_0) / (Z_L Z_0)Z_0 是参考阻抗差分线一般是 90Ω 或 100ΩZ_L 是当地看到的瞬时阻抗。反射波回到源端的时间和幅度就对应着线上哪个位置、阻抗偏了多少。所以 TDR 曲线横轴是电长度换算出来的位置或时间纵轴是瞬时阻抗。SIwave 里做 TDR底层走的是频域求解加 IFFT 这条路。它先在频域把整条链路的 S 参数主要是 S11回波损耗算出来然后通过逆傅里叶变换把频域响应变回时域再根据反射系数反推阻抗曲线。这一点很关键因为它决定了你后面设置扫频范围、频率步长的时候不能随便填。1.2 为什么频域转时域扫频设置这么要命频域转时域本质上是信息量的搬运。你频域采样的带宽决定了时域的分辨率频域采样的密度决定了时域能看多长。上升时间 vs 带宽TDR 的上升时间 t_r 和需要的带宽 BW 大致满足 BW ≈ 0.35 / t_r。USB 3.0 差分线我们一般关心 35ps 左右的上升时间那带宽至少要到 0.35 / 35ps 10GHz。实际做的时候我会留余量扫到 15GHz 甚至 20GHz因为高频段的信息决定了曲线拐角的锐利程度。频率步长 vs 时间窗频率步长 Δf 决定了时域的总时间窗 T 1 / Δf。你要看 1 米长的线信号来回 2 米按 6.7ps/mm 的等效介电常数算大概需要 13ns 以上的时间窗那 Δf 就得小于 1 / 13ns ≈ 77MHz。SIwave 默认的步长有时候偏大得手动改。提示扫频上限不是越高越好。如果你的模型里过孔、连接器的高频模型只到 10GHz你硬扫到 20GHz那 10GHz 以上的数据是外推出来的反而会把 TDR 曲线搞得毛刺很多。模型带宽和扫频带宽要匹配。1.3 SIwave 2024 R2 里 TDR 的两种触发方式在 2024 R2 这个版本里跑 TDR 有两条路从 SYZ 参数直接生成先跑一次 SYZ 扫描得到 S 参数然后在结果里右键生成 TDR。这种方式灵活S 参数可以复用改 TDR 参数不用重跑电磁求解。在 Simulation 里直接勾 TDR设置求解的时候直接勾上 TDR 输出。这种方式省事但每次改参数都要重新求解慢。我个人的习惯是走第一条路。因为差分线的 S 参数算一次要几分钟到十几分钟如果 TDR 参数比如参考阻抗、上升时间要反复调复用 S 参数能省大量时间。下面实操部分也按这个思路走。2. 动手前的模型准备差分线模型怎么喂给 SIwave2.1 导入 PCB 还是导入 S 参数模型这一步很多人会纠结。我的建议分两种情况如果你有完整的 PCB 设计文件比如 .brd、.tgz 的 ODB直接导入 PCB让 SIwave 自己切差分线、自己算。好处是过孔、参考平面、周围走线的影响全都带进来了最接近真实情况。如果你只关心某一段差分线或者手上只有芯片厂商给的 S 参数模型那就用 S 参数模型导入。速度快但要注意模型本身的参考面和端口定义。USB 3.0 差分线通常是从连接器到芯片这一段中间可能经过 AC 耦合电容。如果做整链路分析PCB 导入更合适如果只是验证某一段走线的阻抗S 参数模型够用。2.2 差分对的识别和端口设置导入 PCB 之后SIwave 需要你告诉它哪两根线是一对差分线。在 2024 R2 里可以在Circuit Element或者Nets里找到差分对定义。这里有几个坑差分对命名很多设计里差分线命名是 USB3_TXP / USB3_TXN 这种SIwave 能自动识别。但如果命名不规范比如 D / D-就得手动指定。端口位置TDR 的端口要放在你想观察的起点。一般放在连接器焊盘或者芯片引脚处。端口设置里有个Reference Impedance差分线填 90Ω 或 100Ω这个值会直接影响 TDR 曲线的基准线。去嵌De-embedding如果端口到实际观察点之间有一段测试走线或者夹具记得做去嵌否则 TDR 曲线开头那段是夹具的阻抗不是你要看的。2.3 材料属性和叠层阻抗算不准的元凶TDR 曲线准不准一半看模型一半看材料。SIwave 里材料属性设置不对阻抗能差出十几欧姆。重点盯这几个参数参数典型值USB 3.0 常用影响介电常数 Dk4.2 ~ 4.5FR4Dk 偏大阻抗偏低损耗因子 Df0.015 ~ 0.02影响衰减对阻抗影响小铜箔粗糙度1 ~ 2μm高频段阻抗略升铜厚1oz 35μm铜厚影响线宽计算注意很多板材厂商给的 Dk 是 1MHz 下的值到了 5GHz 会掉。SIwave 里如果用的是宽频模型比如 Djordjevic 模型记得把高频 Dk 填对。我一般会找板材厂商要宽频 Dk/Df 曲线或者用 SIwave 自带的材料库里的对应型号。叠层设置里参考平面的完整性特别重要。如果差分线下面的地平面被挖空了或者跨分割了TDR 曲线会在那个位置出现明显的尖峰。这不是仿真错了是真实情况就这样。3. 一步步跑通 TDR 仿真从 SYZ 扫描到曲线生成3.1 第一步设置 SYZ 扫描参数打开 SIwave导入模型、设好差分对和端口之后进Simulation - SYZ Scan。关键设置Frequency RangeStart 设 10MHz太低没意义还费时间Stop 设 15GHz 或 20GHz。前面说了USB 3.0 建议至少 10GHz留余量到 15GHz。Frequency Points / Step这里选Linear Step还是Log Step有讲究。TDR 需要的是线性步长因为 IFFT 要求等间隔采样。如果选了 LogSIwave 内部会插值但插值会引入误差。我一般直接选 Linear步长按 1 / (2 × T_max) 来算。要看 20ns 的时间窗步长就设 25MHz。Sweep Type选Interpolating Sweep还是Discrete Sweep。Interpolating 快但频响变化剧烈的地方比如谐振点可能漏掉。差分线这种宽带结构我建议用 Discrete稳。设置完点Solve等它跑完。一个中等复杂度的差分线模型大概 5 到 15 分钟看网格量和频率点数。3.2 第二步从 S 参数生成 TDR求解完成后在结果树里找到SYZ结果右键 -Generate TDR。2024 R2 里弹出的对话框有几个关键参数Reference Impedance填差分阻抗的参考值USB 3.0 一般填 90Ω。注意这里填的是差分阻抗不是单端 45Ω。SIwave 会自动按差分模式处理。Rise Time填你关心的上升时间。USB 3.0 的发射端上升时间典型值在 30~50ps我一般填 35ps。这个值决定了 TDR 曲线的锐度填太小曲线会抖填太大细节被抹平。Time Window时间窗要覆盖信号来回一趟的时间。如果线长 100mm等效介电常数 4.0信号速度约 150mm/ns来回 200mm 需要 1.33ns。但为了看全我一般设 5~10ns。Windowing加窗函数。频域截断会产生吉布斯现象振铃加个 Kaiser 窗或者 Hamming 窗能压下去。但窗加太狠曲线会变钝。我一般用 Kaiserβ 设 6~8。点 OKSIwave 就会算出 TDR 曲线横轴是时间可以切换成距离纵轴是阻抗。3.3 第三步曲线解读——什么样的 TDR 算合格拿到曲线之后怎么看USB 3.0 差分线的阻抗要求一般是 90Ω ± 10%也就是 81Ω 到 99Ω 之间。但实际看曲线的时候不能只看平均值。平坦段曲线中间平坦的部分就是差分线的特征阻抗。如果平坦段在 85Ω 左右说明线宽偏宽或者 Dk 偏大可以微调。起始段曲线开头会有一个从参考阻抗比如 50Ω 单端爬到差分阻抗的过程这是正常的。但如果开头有大的过冲或者下冲说明端口或者焊盘处有寄生。过孔段如果曲线中间有凹坑阻抗下降大概率是过孔处的容性效应。USB 3.0 的过孔要做背钻或者优化反焊盘否则这个凹坑会吃掉眼图裕量。AC 耦合电容如果链路里有 AC 耦合电容TDR 曲线在电容位置会有一个明显的尖峰阻抗升高因为电容在高频段呈现低阻抗但在 TDR 的阶跃信号下电容瞬间是开路的。这个尖峰是正常的但要注意电容焊盘的寄生参数。提示TDR 曲线上的位置和实际物理位置有个换算。SIwave 里可以设置等效介电常数把时间轴换成距离轴。如果换算出来的位置和实际走线长度对不上检查一下 Dk 设置。4. 差分阻抗分析从曲线到设计改进4.1 差分阻抗和单端阻抗的关系很多人会问我单端线控 45Ω差分是不是就自动 90Ω理论上如果两根线完全对称、耦合为零差分阻抗 2 × 单端阻抗。但实际上两根线之间有耦合差分阻抗会略低于 2 × 单端阻抗。差分阻抗的公式近似Z_diff 2 × Z_single × (1 - k)k 是耦合系数跟线间距和线宽有关。线间距越小耦合越强k 越大差分阻抗越低。所以如果你按 45Ω 单端设计实际差分可能只有 80Ω 出头。SIwave 里可以直接看差分模式的 TDR不用自己换算。4.2 影响差分阻抗的几个设计变量跑完 TDR如果阻抗不达标调什么按影响从大到小排线宽线宽增加阻抗下降。这是最直接的调节手段。介质厚度差分线到参考平面的距离增加阻抗上升。线间距间距增加耦合减弱差分阻抗上升趋近 2 × 单端。DkDk 增加阻抗下降。阻焊层阻焊层 Dk 比空气大会略微降低阻抗。我一般会做一个参数扫描在 SIwave 里把线宽、间距、介质厚度设成变量跑几次 TDR看哪个组合最接近 90Ω。2024 R2 支持参数化扫描这个功能很省事。4.3 过孔和连接器的阻抗补偿USB 3.0 的链路里过孔和连接器是阻抗不连续的重灾区。TDR 曲线在这些位置会出现明显的尖峰或凹坑。过孔过孔的寄生电容会让阻抗瞬间下降。补偿方法有增大反焊盘anti-pad直径、做背钻back-drill去掉多余的 stub、在过孔旁边加地过孔。连接器连接器的阻抗通常和 PCB 走线不一样。如果连接器阻抗偏低可以在连接器焊盘处做一段阻抗偏高的走线来补偿。在 SIwave 里可以单独看某一段的 TDR定位到具体位置之后回到 PCB 设计里改再重新仿真。这个迭代过程一般要两三轮。5. 实测和仿真的偏差为什么我的 TDR 对不上5.1 仿真和实测偏差的常见来源跑完仿真拿实测 TDR 一对比发现对不上这是常态。偏差来源主要有偏差来源表现处理方式材料 Dk/Df 不准整体阻抗偏移用实测反推 Dk铜箔粗糙度模型高频段阻抗偏高用 Hammerstad 模型端口/夹具曲线开头异常做去嵌网格精度曲线毛刺加密网格焊接/加工公差局部阻抗波动留设计余量5.2 用实测反推材料参数如果实测阻抗整体比仿真低 5Ω大概率是 Dk 设小了。可以这样反推把 Dk 从 4.2 调到 4.4再跑一次看阻抗降了多少线性插值找到匹配值。这个过程在 SIwave 里很快因为 S 参数可以复用只改材料重跑求解就行。5.3 网格设置对 TDR 曲线的影响SIwave 的网格是自适应网格但 TDR 对网格比较敏感。如果曲线毛刺很多可以试试把Mesh Frequency设到最高关心频率的 1.5 倍。在差分线区域加Local Mesh细化网格。检查有没有Sliver细长三角形这种网格会引入数值噪声。注意网格不是越密越好。网格太密求解时间指数上升而且可能引入数值色散。一般做到曲线光滑、结果收敛就行。6. 几个容易踩的坑和我的实操心得6.1 端口设置里的参考阻抗别填错这是新手最容易犯的错。SIwave 里端口有个Reference Impedance默认是 50Ω。如果你做差分线这里要填差分阻抗90Ω 或 100Ω而不是单端 50Ω。填错了TDR 曲线的基准线就是错的后面全白算。6.2 扫频步长和 IFFT 的关系前面提过频域步长决定时域窗口。但还有个细节IFFT 之后时域点数是固定的等于频域点数所以频域点数越多时域分辨率越高。但点数太多求解时间爆炸。我一般按时域窗口够用 分辨率够看来折中不盲目追求高点数。6.3 AC 耦合电容的处理USB 3.0 链路里通常有 100nF 的 AC 耦合电容。在 SIwave 里电容可以用RLC 元件或者S 参数模型表示。如果用理想电容TDR 曲线在电容位置会有一个非常尖锐的尖峰和实测对不上。建议用电容厂商给的 S 参数模型或者至少加上 ESL等效串联电感和 ESR等效串联电阻。6.4 差分对内的偏斜Skew如果差分对的两根线长度不一致TDR 曲线会出现分裂差分阻抗的读数会变得模糊。USB 3.0 对差分偏斜的要求一般在 5ps 以内对应长度差约 0.75mm。在 SIwave 里可以看差分对的长度报告超了就得绕等长。6.5 温度和高频下的材料变化FR4 的 Dk 随温度变化高温下 Dk 会略升阻抗略降。如果产品要在宽温范围工作仿真的时候可以跑几个温度点看阻抗漂移是否在可接受范围内。这个在 SIwave 里可以通过改材料属性来实现。7. 把 TDR 仿真嵌进日常设计流程7.1 什么时候该跑 TDR不是每个设计都要跑 TDR。我的经验是USB 3.0 及以上速率必跑。5Gbps 以上阻抗不连续对眼图的影响非常明显。长走线50mm跑。长线对阻抗偏差更敏感。有过孔和连接器跑。这些不连续点是主要风险。低速信号一般不用除非有特殊要求。7.2 和眼图仿真的配合TDR 看的是阻抗眼图看的是整体信号质量。两者要配合先跑 TDR确保阻抗在规格内。再跑眼图看裕量。如果眼图裕量不够回到 TDR 找阻抗不连续点优化后再跑眼图。这个迭代流程在 SIwave 其他信号完整性工具里可以串起来。2024 R2 支持导出 S 参数到其他工具做眼图很方便。7.3 建立自己的 TDR 检查清单跑多了之后我整理了一个检查清单每次跑 TDR 之前过一遍[ ] 差分对定义是否正确[ ] 端口参考阻抗是否填对90Ω/100Ω[ ] 材料 Dk/Df 是否用宽频模型[ ] 扫频范围是否覆盖 0.35/t_r[ ] 频率步长是否满足时间窗要求[ ] 上升时间是否和实际驱动匹配[ ] 窗函数是否设置合理[ ] 网格是否收敛[ ] 过孔和连接器模型是否准确[ ] AC 耦合电容是否用 S 参数模型这个清单帮我省了不少返工时间。刚开始跑 TDR 的时候经常跑完才发现端口阻抗填错了白等十几分钟。7.4 关于 SIwave 2024 R2 的一些版本特性2024 R2 相比之前的版本在 TDR 这块有几个改进求解器速度有提升特别是大模型TDR 生成的界面更直观参数说明更清楚支持更多的窗函数选项。如果你用的是老版本有些选项可能没有但核心流程是一样的。最后说个我自己的体会TDR 仿真这事儿参数设置占三分模型准备占七分。模型不准参数调出花来也没用。所以每次跑 TDR 之前花十分钟检查模型比跑完之后对着曲线发愁强得多。差分线的阻抗控制是个细活线宽、间距、叠层、材料每个变量都得抠但抠明白了后面的眼图裕量自然就出来了。