☰
SIwave 2024 R2 TDR仿真实战:USB 3.0差分线阻抗控制与曲线解读
2026/10/7 6:36:04 网站建设 项目流程

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 有两条路:

  1. 从 SYZ 参数直接生成:先跑一次 SYZ 扫描,得到 S 参数,然后在结果里右键生成 TDR。这种方式灵活,S 参数可以复用,改 TDR 参数不用重跑电磁求解。
  2. 在 Simulation 里直接勾 TDR:设置求解的时候直接勾上 TDR 输出。这种方式省事,但每次改参数都要重新求解,慢。

我个人的习惯是走第一条路。因为差分线的 S 参数算一次要几分钟到十几分钟,如果 TDR 参数(比如参考阻抗、上升时间)要反复调,复用 S 参数能省大量时间。下面实操部分也按这个思路走。

2. 动手前的模型准备:差分线模型怎么喂给 SIwave

2.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.5(FR4)Dk 偏大,阻抗偏低
损耗因子 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 Range:Start 设 10MHz(太低没意义,还费时间),Stop 设 15GHz 或 20GHz。前面说了,USB 3.0 建议至少 10GHz,留余量到 15GHz。
  • Frequency Points / Step:这里选Linear Step还是Log Step有讲究。TDR 需要的是线性步长,因为 IFFT 要求等间隔采样。如果选了 Log,SIwave 内部会插值,但插值会引入误差。我一般直接选 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。

点 OK,SIwave 就会算出 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,如果阻抗不达标,调什么?按影响从大到小排:

  1. 线宽:线宽增加,阻抗下降。这是最直接的调节手段。
  2. 介质厚度:差分线到参考平面的距离增加,阻抗上升。
  3. 线间距:间距增加,耦合减弱,差分阻抗上升(趋近 2 × 单端)。
  4. Dk:Dk 增加,阻抗下降。
  5. 阻焊层:阻焊层 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 看的是阻抗,眼图看的是整体信号质量。两者要配合:

  1. 先跑 TDR,确保阻抗在规格内。
  2. 再跑眼图,看裕量。
  3. 如果眼图裕量不够,回到 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 之前,花十分钟检查模型,比跑完之后对着曲线发愁强得多。差分线的阻抗控制是个细活,线宽、间距、叠层、材料,每个变量都得抠,但抠明白了,后面的眼图裕量自然就出来了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询