上个月调一块带连接器的测试板,眼图闭合得厉害,接收端幅度只有发送端的六成。板子不算复杂,走线不长,理论上不该差到这个程度。我在CST里把整条链路建出来做TDR时域仿真,才发现问题根本不在走线本身,而是连接器引脚焊盘处一个非常小的容性突变——它在50Ω系统里反射了约20%的能量,实实在在把眼图打穿了。
这篇文章就把我这次用CST做TDR时域反射仿真、阻抗分析、以及后处理交叉探测的完整过程写出来。重点是几个思路:TDR到底在测什么、CST里怎么搭一套能复用的TDR仿真、阻抗曲线怎么判读、以及“同时取两个点”这件事的几种实现方式。文章末尾补充了我在CST和Sigrity之间切换时踩过的差异坑。适合做信号完整性仿真的硬件工程师、连接器或封装仿真工程师,以及刚接触CST想在时域里看阻抗曲线的新手。我不会逐个菜单教,但所有参数设置背后的理由都会讲清楚。
1. TDR到底在测什么:反射系数、分辨率与两条获取路径
1.1 一个“回声定位”的类比把反射原理讲清楚
TDR(Time Domain Reflectometry,时域反射法)的原理一点也不玄:往被测链路里送一个上升沿很陡的阶跃信号,信号沿着链路往前跑,如果链路阻抗处处都是目标值Z0,就不会有反射,源端看到的波形就是入射阶跃本身。一旦遇到阻抗不等于Z0的位置,一部分能量会折返回源端,源端电压变成入射波叠加上反射波。
反射系数公式是:
Γ = (Z_DUT - Z0) / (Z_DUT + Z0)
反过来,从反射系数推该点阻抗:
Z_DUT = Z0 × (1 + Γ) / (1 - Γ)
举一个实在的例子。50Ω系统里出现一个75Ω的突变,Γ = (75-50)/(75+50) = 0.2,20%的信号被反射。这个量级足以让高速串行链路的眼图明显劣化。我在开头说的连接器案例,反射系数差不多就是这个量级。
这个原理可以类比小时候在山谷里喊话:对着山谷喊一声,根据回声什么时候回来、声音大小,能判断对面是悬崖还是墙壁、离自己多远。TDR就是电版的回声定位,只是它测的不是声音,是电压反射波,而且精度高得多。
1.2 空间分辨率预算:上升沿和可见最小缺陷的关系
TDR能不能看到某个尺寸的缺陷,不取决于仿真软件,取决于激励信号的上升沿。空间分辨率的估算公式:
ΔL = v_p × t_rise / 2
这里除以2是因为信号从源端跑到突变点、再反射回源端,走的是双程。举一个常见例子。FR4基板上的微带线,有效介电常数ε_eff取3.3,信号传播速度v_p = 3×10^8 / √3.3 ≈ 1.65×10^8 m/s。如果用50ps的上升沿,最小可分辨长度约4.1mm。也就是说,一个3mm的过孔stub在这条链路上只会显示为一个模糊的凹陷,具体多长、什么形状,很难分辨。
如果要做封装级或连接器级的TDR,需要分辨毫米级别甚至更小的结构,上升沿就要压到12ps左右。所以在CST里设激励之前,先想清楚一件事:你要找的缺陷最小尺寸是多少?这个尺寸决定你需要多陡的上升沿,上升沿又决定仿真带宽和网格规模。这个问题没想清楚,后面跑出来的曲线要么糊成一片,要么白白消耗大量算力。
1.3 同一根链路,两条获取TDR曲线的路线
在CST里拿TDR曲线有两条路,很多人只走其中一条,实际上两条都要会用。
第一条路:用波导端口激励,先算出宽带S参数,再由后处理从S11变换出TDR阻抗曲线。S11做逆傅里叶变换得到冲激响应,再对时间积分一次得到阶跃响应,最后按反射系数公式转成阻抗-时间曲线。这条路结果最稳定、端口定义规范,适合和实测TDR仪器做对比,也是我最常用的方式。CST较新版本在1D Results下直接有TDR创建入口,不同版本菜单位置略有差异,搜“TDR”就能找到。
第二条路:直接在时域求解器里用自定义的阶跃激励,然后在链路上布探针,记录每个点的瞬态电压。这条路物理过程直观,能看到阶跃前沿传播到哪个位置、反射波怎么叠加,配合多探针做交叉探测特别顺手。缺点是要自己从波形里算反射系数,不如第一条路省事。
两条路在CST里不是互斥的。我的习惯是先走第一条路拿到整体Z(t)曲线、确定突变点在哪,再走第二条路针对突变区域布探针,看具体的电压波形细节。
2. CST里搭一套能用的TDR仿真:从模型、激励到探针布置
2.1 建模时三个容易被忽略的“隐性反射源”
TDR建模不需要特别复杂的几何,介质基板、走线、参考地就够,但这三个细节决定结果可信度。
第一,参考地必须完整。地平面在模型里至少要超过走线边界3倍线宽,如果地平面被过孔阵列或分割槽切碎,仿真里的回流路径和实物不一致,TDR曲线后半段一定是错的。这个坑我踩过:早期建模习惯把地平面画成刚好贴着走线的矩形,结果TDR曲线上多出一个莫名其妙的小台阶,查了半天发现是地平面边缘绕射造成的。
第二,走线两端要留出足够的馈线段再接端口。端口参考面离被测结构太近,端口本身的反射和被测结构的反射会在时间上重叠,根本分不清。端口参考面的位置相当于实测TDR时探头的接触点,离DUT越近,越容易污染前端的阻抗值。我的习惯是馈线段长度至少是目标分辨率对应空间距离的3倍,能更长就更好。
第三,过孔这类三维结构要按实际叠层建模到关键参数。过孔TDR对孔径、反焊盘直径、stub长度高度敏感。不一定每个过孔都要画完整的细节模型,但影响阻抗的几何参数必须准:孔径、反焊盘直径、stub长度、焊盘直径。铜箔粗糙度对TDR的阻抗测量影响不大,但对高频损耗有影响,如果你的TDR主要用于阻抗突变定位,可以暂时忽略粗糙度,减少网格量。
2.2 激励信号和带宽怎么定:先算分辨率,再定参数
TDR的精度由激励的上升沿决定,上升沿对应的等效带宽近似为:
f_BW ≈ 0.35 / t_rise
想做12ps上升沿,等效带宽至少约29GHz。这个带宽值不是随意设的,它直接决定时域求解器的网格剖分和仿真时长。
CST时域求解器默认的激励是高斯脉冲,用于算S参数是够的。如果你想在探针上直接看到阶跃响应,可以自己定义激励信号,幅度按实际测试电压来,比如2V,上升沿设为目标值,持续时间覆盖整个反射回到源端的时间窗口。我的做法是先在“Excitation Signal”添加自定义阶跃,然后在端口设置里选这个信号。
一个重要提醒:上升沿越短,网格越密、仿真时间越长。设激励之前先算一下分辨率预算,如果只是想定位毫米级突变,把上升沿做到30ps就够,没必要追12ps,省下的算力相当可观。
2.3 求解器、网格与PML:跑之前先想清楚四件事
时域求解器里有几个参数直接决定TDR结果质量。
频率范围不是越大越好。CST时域求解器的网格按频率上限剖分,频带设太宽,网格数量成倍增长,仿真时长暴涨。按分辨率需求反推带宽即可,多出来的频率不会让你的TDR曲线更有价值。
网格收敛是TDR仿真最需要耐心的地方。粗网格下,突变点会被“糊”成一个宽而浅的包络,峰值偏低,位置勉强能看。局部加密后,峰变尖、变深。我的工作流是:先用粗网格跑一遍,锁定可疑突变区,再对该区域局部加密,对比两次曲线的峰值位置和深度,偏差小于5%就认为收敛。如果峰值偏移超过一个网格尺寸,继续加密。
PML边界也不是零反射的,对低频分量更容易穿透。检查方法很直接:把最远突变点到端口的距离换算成时间再乘2,如果你设置的观察窗口比这个时间短,边界反射进不了窗口,就安全。否则要扩大边界与结构之间的真空区域,或者缩短观察窗口。
最后,探针要在求解前就加好。CST不是每次跑完都能补探针的,改激励、改网格之后要重新审查探针定义,这个细节无数次让同事抓狂。
2.4 探针布置思路:在每个可疑结构前后各放一只
探针(Probe/Point Monitor)是交叉探测的基础。我一般这样布:
- P0:源端附近,作为入射波参考
- P1:第一个可疑结构之前
- P2:第一个可疑结构之后
- P3:链路末端
每个结构都按“前一点、后一点”的方式布置。两个点的波形做对比,能算出这个结构的反射系数、插入损耗对上升沿的劣化程度。探针记录的是时域电压波形,需要判断容性还是感性时可以同时输出电场,观察反射波的极性变化。
探针记录的是时域电压波形,后处理时可以把多条曲线叠加到同一个坐标系,先看整体,再逐段放大。
3. 阻抗曲线判读:突变定位、类型识别与差分链路
3.1 三类典型阻抗突变在曲线上的特征
拿到TDR阻抗曲线之后,第一步不是找数值,而是看形状。不同物理结构在曲线上有不同的特征:
| 突变类型 | TDR曲线特征 | 常见来源 |
|---|---|---|
| 容性突变 | 曲线向下凹陷,随后恢复 | 过孔焊盘、stub、T型分支的寄生电容 |
| 感性突变 | 曲线向上凸起 | 细长过孔、连接器引脚、电感封装 |
| 串联电阻 | 曲线从原阻抗跳上台阶并保持一段 | 走线变窄、欧姆接触不良 |
| 末端开路 | 曲线一路冲高 | 链路未接负载,正常参考 |
| 末端短路 | 曲线跌到接近0 | 焊锡桥连、短路故障 |
现实中的结构往往不是单一类型。一个过孔,本身是感性突起,但旁边的焊盘和stub又引入容性,看到的曲线可能是先凸后凹的复合波形。这时候不要只看峰值,要看局部斜率变化,以及凹陷和凸起之间的边界对应哪个物理尺寸。
有一类常见误判我要特别提一下:TDR曲线上一个宽而缓的包络,经常被当成一个大突变,实际上它可能是好几个小突变在分辨率不足时叠加的结果。碰到这种情况,先把上升沿收紧再跑一次,往往能看出包络里藏着两三个独立的峰。
3.2 从反射时间反推物理位置:一个连接器案例
TDR曲线的横轴是时间,要把它换算成距离才能和模型坐标对应。公式:
d = v_p × t / 2
v_p按有效介电常数算,t是反射波回到源端的时间。以我那个连接器案例为例,TDR曲线上t≈1.85ns处出现凹陷,按v_p≈1.65×10^8 m/s,距离d≈152mm。对照模型坐标,正好落在连接器引脚的位置。
这里有个工程经验:如果一张板有多处可疑点,TDR曲线上会有多个尖峰,把每个尖峰都换算成距离,然后对着叠层和器件坐标逐个匹配,能快速缩小怀疑范围。这个方法比在打样后用VNA逐段测快得多,也是TDR在仿真阶段最大的价值——提前知道问题在哪,不用等实物回来再头痛。
3.3 差分链路怎么读:Zdiff怎么算、怎么读
差分走线做TDR时,更关心的是差分阻抗Zdiff,不是单端Z(t)。在CST里可以先跑单端S参数,再定义差分端口对;也可以对两条单端线分别布探针,后处理计算Vdiff = V+ - V-,从差分反射系数反推Zdiff。
一个常见误区:差分阻抗不等于两条单端线各自TDR阻抗直接相加。它和线间距、耦合系数密切相关。耦合强时,Zdiff会明显偏离“单端减耦合”的估算结果。所以做DDR、SerDes差分链路检查时,一定直接用差分TDR曲线来判断过孔区、连接器区是否保持在目标差分阻抗容差内,不要用单端曲线去猜。
差分TDR在实测中会有一个现象:共模和差模的反射系数不一样,导致测出来的Zdiff和Zcom曲线形状不同。仿真里同样如此。判断差分突变时,把Zdiff和Zcom两条曲线叠在一起看,能区分耦合突变和共模噪声问题。
4. 交叉探测实战:同时取两个点的四种做法与一个完整案例
4.1 求前布探针,比事后“鼠标取点”靠谱得多
很多人在CST里纠结“怎么同时鼠标取两个点”,我理解这背后有两层需求:一是同时监测两个物理位置的信号,二是在同一张曲线图里读出两个坐标值。先说结论:如果你要做的是对比两个位置的波形,一定要在求解前布探针,不要指望事后在结果图上临时取点。探针记录的才是真正意义上的“同时”——两个点在同一时刻的物理信号。事后取点只能拿到静态曲线上两个坐标值,拿不到时间维度。
我在仿真开始前就把P0到P3四个探针定义好,求解完成后,所有探针的瞬态电压曲线自动出现在1D Results里。选中两条曲线,右键叠加到同一个坐标轴,就能看到两个位置在同一时刻的波形对比。这条路径最稳定、最省事,也最容易被新手忽略——他们常常跑完了才想起来要看某个点的波形,然后发现探针没布。
4.2 同一张曲线里标记多个坐标点的操作
如果确实没有提前布探针,只能在已算出的曲线上取点,也有办法。在1D Plot窗口中,右键选择Evaluate,会弹出一个数值评估窗口。用鼠标在曲线上点击一个位置,数值会显示在结果列表里;点一下添加,继续点第二个位置,两个点的横纵坐标可以同时显示。这个操作对应了不少人问的“一个鼠标取两个点”——本质是添加多个采样标记,而不是同时按住两个光标。
另一个更快的方式是直接在Evaluate窗口里输入X轴坐标值,软件自动算Y值,一次输入两个坐标,两个点的值同时出来。手输坐标的精度比鼠标点高得多,尤其当你要读的点正好不在网格节点上时,鼠标点击容易落偏。
如果是3D场图上要同时看两个点的场强,路径不同。在2D/3D场图的后处理工具里,选择Evaluate Point模式,在模型上左键依次点击两个位置,结果窗口会同时显示两个点的场值,也可以把这两个点的值送进后处理模板做差值。这个方法多用于看某个频点或某个时刻两个位置的场分布对比,和时域波形对比的目的大不一样。
4.3 后处理差值:另一种“同时取点”
交叉探测还有一个高级用法,不是单纯取两个点,而是用后处理模板对两个探针的波形做算术运算,得到P2 - P1、P2/P1这类曲线。
P2 - P1这个操作非常有用:它直接显示信号从P1传到P2发生了多大的形变。P2和P1的波形完全重合时,差值是零;有反射或损耗时,差值在阶跃边沿处出现尖峰或台阶。把差值曲线上每个尖峰对应的时间换算成距离,再对到模型坐标,就能知道每段结构对信号的劣化贡献。这个方法比肉眼对比两条波形更敏感,能看出5%以内的幅度差异。
CST的后处理模板支持这类自定义公式,结果可以作为一条新曲线输出。我的习惯是每个TDR项目都加一条P2-P1或P3-P2的差值曲线,它相当于把链路“分段测量”,定位问题的效率比只看源端反射高很多。
4.4 双探针定位反射源:连接器案例的完整复盘
回到开头那个连接器案例,完整走一遍交叉探测的流程。
P0放在源端附近,P1放在连接器前约3mm,P2放在连接器后,P3放链路末端。跑完看四根探针的波形:
- P0处先看到入射阶跃,随后在阶跃平台上叠加了一个反向的反射台阶。反射台阶的幅度对应反射系数Γ≈0.2,和Z(t)曲线上那个容性凹陷一致。
- P1处,入射阶跃先到,反射波从连接器返回后叠加上来。P1离连接器足够远(3mm),入射波和反射波没有重叠,所以能清楚分辨。
- P2处,透过连接器的阶跃幅度比P1处小,边沿也变缓。通过P2幅度和P1幅度之差,直接算出连接器对阶跃的插入损耗。
- P3处波形和P2对比,能判断末端匹配是否正常。
这里有个经验值:P1和连接器的距离至少是一个上升沿对应的空间距离,否则入射波和反射波会部分重叠,分不清。30ps上升沿对应的空间距离约2.5mm,所以我设了3mm。如果你是针对高密度封装做探测,上升沿可能只有十几ps,这个距离还可以再短,但要记住物理限制。
5. 换工具时容易翻车的几个点:CST与Sigrity做TDR的差异
5.1 求解逻辑不同:三维全波与版图驱动
很多同事问我:CST做TDR和Sigrity做TDR有什么区别?要不要都学?这个问题没有标准答案,取决于你的对象。
CST时域求解器基于FIT(有限积分法),直接求解Maxwell方程组的离散形式,模型是真实三维几何。这意味着你能看到完整的电磁场传播过程、能精确建模过孔反焊盘、连接器外壳、封装solder ball这些三维细节,得到的是全波精度的场解。
Sigrity的TDR类分析更偏向版图驱动的场路协同。它从布局布线数据中提取传输线和耦合模型,再结合电路激励做瞬态分析,面对完整PCB版图、DDR总线这类超大网络时效率非常高。
做个不严谨但传神的对比:CST像用显微镜看单个结构,Sigrity像用路线图看整条链路。两者不是替代关系,而是分工关系。我的工作流是先CST做关键互连结构的精细TDR分析,再在Sigrity里做全链路批量TDR检查,互相验证。
5.2 结果对不上的时候,按什么顺序排查
跨工具对比TDR结果不一致是常态,但不代表工具之间谁对谁错。按这个顺序排查,基本能定位到原因。
第一,端口参考面是否一致。CST的波导端口参考面和Sigrity的激励端口位置必须对应,端口位置差1mm,TDR曲线前端就可能差几个欧姆。第二,仿真带宽和上升沿设置是否一致。一个用100ps上升沿、一个用30ps,曲线会差很远,这不算工具差异,是测试条件差异。第三,回流路径建模差异。CST严格按地平面形状解回流电流,地平面被分割时差异尤其明显;Sigrity如果使用理想参考面假设,会低估地平面不连续造成的影响。第四,去嵌入方式不同。两个工具都提供去嵌入,但设置的参考面不同,直接决定TDR曲线开头的读值。
我踩过一次比较大的坑:两种工具在一条有分割地平面的走线上差了10Ω以上,查了整整一天,最后发现CST模型里地平面分割槽的宽度画错了。不是工具问题,是模型问题。这个经历说明,跨工具对比之前,模型几何的一致性才是最耗时的环节。
5.3 什么时候该用CST,什么时候该用Sigrity
简单给一个选型参考:
| 任务类型 | 推荐工具 | 原因 |
|---|---|---|
| 连接器、封装、过孔精细TDR | CST | 三维全波建模,能看到场分布 |
| 大型PCB完整链路TDR扫查 | Sigrity | 版图导入方便,批量网络处理效率高 |
| 和实测TDR仪器对比 | CST | 端口定义规范,后处理与仪器可比性强 |
| DDR/SerDes全总线眼图与TDR协同 | Sigrity | 场路协同、SPICE模型联动更成熟 |
| 电磁辐射与耦合分析 | CST | 全波求解器天然支持 |
这个表不是绝对的。如果你手上只有CST,做大板级TDR不是不行,只是建模和网格成本高。反过来说,如果你只有Sigrity,做连接器精细TDR会比较吃力,因为三维细节建模不是它的强项。我更倾向于建议两类工具各配一套,互相参照。
6. 六类“伪TDR尖峰”与对应的规避方法
6.1 端口反射:最容易被误判成DUT缺陷
波导端口本身不是理想边界,会带来轻微反射。这个反射如果落在TDR观察窗口内,就会被当成DUT的阻抗突变。规避方法是给DUT前后加一段馈线,让端口反射的时间点移到窗口外;或者使用去嵌入功能,把端口效应去掉。判断是否为端口反射的办法很简单:把馈线长度改成不同值,重跑一次,如果TDR曲线上某个尖峰的位置跟着变了,那基本就是端口反射。
6.2 网格不收敛:尖峰会随网格变深
TDR对突变点附近的网格非常敏感。粗网格下,过孔和焊盘显示为一个宽而浅的低谷,峰值偏低、边界模糊;加密后尖峰会变深、变锐。如果尖峰深度随网格变化超过5%,说明没收敛,不能采信。
我的收敛性检查流程:先粗网格跑一遍定位突变区,再对该区域加密,对比两次峰值位置和深度。位置偏移小于一个网格尺寸、深度偏差小于5%,就认为收敛。如果算力允许,直接在可疑区域做局部网格加密,比全模型加密省时得多。
6.3 PML边界泄漏:低频反射会污染后段曲线
PML边界对低频分量不是完全吸收,观察窗口越长,边界反射泄漏回来的可能性越大。检查方法:确认最远突变点到端口的双程传播时间小于观察窗口。如果观察窗口设得比这个时间长,就要扩大边界与结构之间的真空区域,或者把PML层数增加。
6.4 探针自身的容性负载
探针点在走线上会引入一个小电容,在TDR曲线上表现为一个小小的凹陷。如果探针间距很近,探针之间的寄生耦合还会互相干扰。实操中我的探针间距一般不小于0.5mm(针对常见PCB叠层),对比两条探针曲线时,要意识到每个探针本身也是一个小缺陷。对比P1和P2的波形时,把探针电容的影响算进去,否则会高估结构的容性突变。
6.5 上升沿带宽不足:小突变被“糊”掉
这是最隐蔽的一类伪象。上升沿太宽,小尺寸突变在TDR曲线上被平滑掉,看起来像是“没有缺陷”,实际上只是看不见。前面反复强调的分辨率预算就在这里发挥作用:先确定需要发现的最小缺陷尺寸,再反推上升沿和带宽。如果曲线太平滑,先检查激励上升沿,不要急着加大网格。
6.6 观察窗口太短:反射还没回来曲线就结束了
TDR观察窗口必须覆盖最远突变点的双程反射时间。窗口太短,后面的突变根本看不到。这个错误常见于改版时把链路加长了一段,但观察窗口沿用旧值。我的习惯是设置窗口时留出20%余量,并主动算一遍最远点的双程时延作为底线。
最后分享两个实际操作中养成的习惯。一是每次TDR仿真结束后,把Z(t)曲线和模型截图存到同一个项目文件夹,后续实测数据也放一起。项目隔几个月再回看时,不用重新推理就能对上号。二是新建TDR项目时,第一件事就是写清楚分辨率预算和端口参考面位置,作为仿真设置说明。很多时候返工不是因为技术不过关,而是因为参数记录不完整。CST的TDR功能本身不难,难的是把“看到的曲线”和“结构上的尺寸”始终对应起来——这是每一根高速链路背后真正的功夫。