ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PowerSI差分S参数提取全流程:从端口配置到TDR校验实战指南

PowerSI差分S参数提取全流程:从端口配置到TDR校验实战指南 1. 差分S参数到底是什么工程师为什么要亲自提取它先讲个我自己踩过的坑。两年前我负责一块高速板卡的仿真验证板子上有一对USB 3.0差分线因为赶进度我直接拿了芯片厂商提供的评估板S参数模型去跑通道仿真结果眼图测出来一片大好误码率低得可以开香槟。结果样机回来一上示波器实测眼图明显收敛得不好根本找不到那个“仿真里完美”的影子。后来我才想明白——厂商评估板的走线层、参考平面、过孔结构和我的实际设计完全不一样尤其是过孔附近的阻抗突变直接吃掉了大部分噪声预算。从那天起我给自己定了一条规矩凡是自己画的关键差分信号S参数必须用PowerSI自己提绝不复用别人现成的模型。那S参数到底是个什么东西通俗讲它就是一个多端网络的“传递函数”描述信号从一个端口进去之后有多少能量从哪个端口出来又有多少被反射回来。工程上常用[S11]和[S21]来分别代表回波损耗和插入损耗。但差分信号不能只有一套S参数。一对差分线必然有4个物理端口。两条线各自都有入射和反射所以完整的描述是4×4的矩阵。为了工程处理方便我们通常会把单端的4×4结构通过数学变换转成混合模式S参数也就是常说的SDD21差模输入到差模输出的传输系数这个就是我们最关心的“差分插损”SDD11差分回波损耗反映阻抗匹配好坏SCC21 / SCC11共模传输和共模反射用来评估共模噪声的传播情况SDC21 / SCD21模式转换项反映差模和共模之间的互相干扰直白说SDD21越接近0 dB越好SDD11越低越好。如果你的SDD21在5 GHz就掉到-3 dB以下那这链路就属于“不能忍”级别。而模式转换项如果被拉高通常说明走线不对称、参考面不连续或者端口周围存在明显的不一致。PowerSI这类工具的价值在于它是基于电磁场求解的频率域仿真工具能够直接从版图物理结构出发考虑叠层、铜箔、过孔、参考平面等所有细节把S参数算出来。你甚至可以在板子还没投出去之前就把各种“作死设计”的后果提前看个明白。现在高速接口越来越多PCIe、USB、DDR、SerDes、甚至RS485和线扫相机里的LVDS差分信号都会用到S参数来做信号完整性仿真。特别是MCU这类小封装场景很多设计师发现MCU没有USB差分信号引脚只能绕道用外部USB PHY这种绕线设计恰恰更需要用S参数验证走线质量。不管是做消费电子还是工业控制板卡自己掌握PowerSI提取S参数这个能力迟早都会用上。2. 准备工作模型导入、叠层修正、网络裁剪2.1 导入文件格式怎么选PowerSI支持很多种输入格式实际工作中我主要用到两种ODB和BRD/SPB。如果你用的是Cadence自家的Allegro直接从菜单导出选ODB格式最省事。如果是别的EDA工具比如PADS、Mentor、Zuken也都能导ODB。这个格式最大的好处是把版图、叠层、钻孔信息打包在一个文件夹里交换起来非常方便。还有一点导入时界面会让你选择“叠层方向”和“单位”。单位选mil或mm都行但要和原始设计保持一致否则后面看叠层可能会有比例错乱的问题。我建议导入后先花五分钟简单浏览一遍版图确认元件位置、板框尺寸和参考设计一致再往下走。2.2 叠层参数决定仿真可信度很多人忽略这个环节但我必须强调**S参数提取的结果85%取决于叠层参数给得对不对PowerSI的求解器只是把它算出来。**叠层的关键参数主要有四个参数含义对结果的影响介质介电常数Dk绝缘材料相对介电常数直接影响传输线阻抗和信号速度介质损耗角正切Df绝缘材料的损耗特性高频段插损的主要来源铜箔厚度铜层的物理厚度影响直流电阻和趋肤效应铜箔粗糙度表层凹凸程度5 GHz以上损耗明显增加FR4板材一般Dk取4.24.6之间Df在0.0150.025左右。但不同厂家、不同型号的板材料差异很大。比如同样是FR4生益S1000-2M和联茂EM-370(D)在高频损耗上的表现差别不小。我在实际项目中通常会直接问板厂要板材Datasheet再把具体Dk/Df填进去。PowerSI里修改叠层位置一般叫Stackup Editor。你需要核对每一层的厚度、铜厚、板材类型。这里特别容易忽略的是绿油层SolderMask和铜箔表面粗糙度Roughness。绿油层在表层微带线的阻抗计算中影响很大粗糙度在10 GHz以上对插损的贡献更是显著。别偷懒都填上。2.3 网络裁剪别把整块板子都拿去算初学者最常见的错误是恨不得把整个PCB全丢进去仿真。我不建议这么干。PowerSI虽然是全波求解器但整板仿真的网格数量和求解时间都是灾难级的。正确做法是裁剪出和你关心的差分信号相关的区域。我的习惯是在原图上画一个矩形区域把差分走线连同它的参考层保留出来宽度至少为走线中心距的35倍或者干脆保留两侧各50 mil以上的铜皮。同时把这一区域内不相关的走线、元件焊盘、铺铜碎片全部删除确保网络列表干净。这一步看似繁琐但做好之后后续操作效率能提升好几倍。而且裁剪出的模型更小收敛性更好不容易出现那种“网格划分半天就是过不去”的卡死状态。2.4 电源网络和地网络的指定在PowerSI里如果你不指定哪些网络是电源Power哪些是地Ground后面做参考面提取的时候它会把你绕晕。软件需要知道你关心的信号线“参考”的是哪一个平面层。具体操作上在Net Manager里把VCC、VDD这类网络赋给Power类把GND赋给Ground类。对于多层板中分割过的电源平面还要检查是否在仿真区域内存在完整的铜皮覆盖。如果某个电源层在走线正下方被挖掉了一大块这个信号的回流路径就会变得很长仿真出来的S参数也会如实反映出这个糟糕设计——这句是真的我后面会在坑章节详细说。提示裁剪模型时一定要确认保留区域里电源地网络是完整的不要因为裁剪导致参考平面边缘悬空太近。边缘距离至少要大于走线到参考层距离的20倍否则边缘效应会污染仿真结果。3. PowerSI差分端口配置成败都在这一步3.1 每个差分对需要两个端口端口配置是PowerSI提取S参数最核心的一步几乎所有的“结果不对”最后都能追溯到这里。在PowerSI中对一对差分信号操作时需要分别为P正端和N负端建立单独的离散端口Discrete Port然后把它俩组合成一个差分端口对Differential Port。比如在Allegro中看到一对名为USB_DP和USB_DM的信号线那么在PowerSI中我需要打开Port Manager在USB_DP走线的某个位置放置一个正向离散端口在USB_DM走线上同样的位置放一个负向离散端口选中两个端口右键组合为Differential Port要点在于P和N两个离散端口必须位于同一横截面位置也就是在物理位置上要正对着不能一个在X方向偏了5 mil另一个又偏了另外的方向。有一个小技巧把视图切到2D平面放大到端口附近检查两个端口之间的间距是否和差分对的中心距一致。3.2 端口正负极方向务必一致这个坑我踩过一次。有次我提取了一对PCIe差分线的S参数SDD21看起来挺正常但把S参数丢到时域做TDR阻抗曲线在端口处直接掉出一个凹坑。查了半天发现是因为我把N端的端口参考方向放反了正负极顺序不一致导致模式转换项异常。差分对两端正负极方向不一致相当于是把一对“正常说话”的双绞线接反了极性信号和回流的关系完全混乱。在PowerSI中每个离散端口上有个极性标志。P端口的箭头和N端口的箭头必须指向同一方向同时要保证沿着信号流向看P在左边N在右边或者按照你定义的正方向。组合成差分端口后软件会在结果里自动给一个差分阻抗参考通常是100欧姆差模。检查一下这个值是否匹配你的设计目标。3.3 端口位置选择的原则端口放在哪里也很有讲究。如果你是提取“整条链路”的S参数比如从连接器焊盘到接收芯片焊盘那么端口就应该分别放在链路两端的器件焊盘中心。注意是焊盘中心不是走线末端。否则过孔、stub、焊盘这些影响会被错误地排除在外。如果你只想提取某一段走线的S参数比如两个过孔之间的那段那么端口就放在过孔出口之后足够远的地方。太靠近过孔过孔的寄生效应会耦合到端口上太远又会把额外的走线包含进来。我的做法是端口放在距离过孔边缘至少20 mil以外的直线走线上如果条件允许50 mil更稳妥。同时端口附近的走线最好是等宽的如果走线有宽度渐变尽量避免把端口放在渐变段上。3.4 求解频率范围的设定S参数是一个随频率变化的量PowerSI需要你在仿真前设定频率范围。直接体现为两个参数扫描最高频率Max Frequency和点数Number of Points。最高频率的选取原则很简单至少覆盖信号最高有效频率通常是数据速率的0.5倍也就是奈奎斯特频率的1.52倍。举个例子如果是5 Gbps的PCIe 2.0奈奎斯特频率是2.5 GHz那么最高频率至少要设到5 GHz。如果信号上升沿特别陡谐波含量丰富建议直接设到10 GHz甚至更高。点数决定频率步进影响着时域TDR转换结果的精度。因S参数是频域数据做IFFT变成时域后时域窗口总长度 1 / 频率步进。如果频率步进太粗时域窗口太短会看不到链路早段的反射细节。我一般会设至少2001个点如果仿真时间允许401甚至801个点更好。4. 仿真执行全波还是准静态这是一个权衡4.1 区分全波和准静态求解器PowerSI内部提供不同的求解模式。这个选择对绝大多数用户来说都是“经验之谈”我尽量说得明白点。准静态Quasi-static求解模式忽略部分高频辐射和色散效应计算速度快、内存占用低适合处理尺寸相对小于波长的结构。对于绝大多数板级走线提取S参数来说准静态的精度已经足够。全波Full-wave求解模式严格求解麦克斯韦方程组能够准确描述辐射、表面波和色散效应。适合频率极高比如毫米波、或者结构中存在强耦合、强辐射的场景。在我的项目里如果最高频率在10 GHz以下而且链路长度不超过几个波长我直接用准静态模式速度和稳定性都很好。如果目标是超高速SerDes比如25 Gbps以上或者结构中有大面积的参考面不连续我会切到全波模式对比一次。重要提示不要盲目追求全波。全波仿真对网格质量非常敏感网格没剖好的全波结果可能比精心设置的准静态结果更难收敛、更不可信。4.2 网格设置与仿真精度平衡PowerSI是自适应网格剖分能够根据频率自动加密。我一般不会去手动调网格尺寸但需要关注一个参数最大网格频率Maximum Frequency for Meshing。这个参数决定了自适应网格加密的目标频率。如果设得过高网格会异常细密仿真时间飙升如果设得过低高频段的精度不够。我的经验是让网格频率和扫描最高频率保持一致或者略低一档。仿真时间的预估给你个参考一个裁剪后的8层板模型面积大约5 cm × 3 cm2001个频点准静态模式在我电脑上8核16线程跑完大概需要20分钟到1小时。如果跑全波动不动就是好几个小时。所以第一次跑的时候我强烈建议先用比较少的频点比如501个快速验证流程没问题再把点数加上去跑正式结果。4.3 仿真中途可以看什么仿真过程中PowerSI会实时更新频点和收敛日志。我会关注下面几个指标Passivity无源性S参数矩阵的特征值是否小于1。如果出现非物理的无源性违例Passivity Violation说明结果有问题需要调整网格或检查模型。Causality因果性系统是否满足因果律。PowerSI一般会在求解结束后给出检查报告如果因果性指标很差后面做时域仿真也会不准。收敛残差每轮迭代后的残差是否下降。如果残差震荡或反弹通常是网格问题或参考层缺失。这些词听起来复杂但理解一个原则就行**S参数本质上是描述一个线性无源网络所以它的能量不可能凭空增加。**如果看到S11在某段频率上大于0 dB或者无源性校验失败那基本可以断定模型设置存在严重问题别急着导出结果。5. 结果校验与导出别把错误数据拿去喂给通道仿真器很多人提完S参数就快乐地导出然后直接丢进时域仿真。我必须说**连基本的校验都不做等于拿着没有校准的万用表去量电压。**下面是我的标准校验流程。5.1 检查插入损耗和回波损耗曲线算完后第一件事是看SDD21曲线。理想情况下低频段应该接近0 dB。如果低频段就掉了1 dB以上先怀疑端口参考阻抗设置是否有问题或者链路中有明显的直流电阻损耗。再看SDD11。在整个关注频带里回波损耗应该保持在-15 dB以下好的设计能做到-20 dB以下。如果某个频点上SDD11凸起一个峰大概率在对应波长处存在阻抗突变可以用TDR定位。5.2 转换到时域做TDR验证PowerSI自带S参数到时域的转换功能可以直接查看TDR时域反射计轮廓。这一步非常推荐。TDR轮廓显示的是沿链路方向的瞬态阻抗分布。你可以直观看到阻抗起点是否为设定参考值附近比如100 Ω走线中间是否有明显的阻抗凹陷或凸起过孔、焊盘处是否出现“尖刺”末端是否开路反射系数接近1有一次我提完一对LVDS差分线的S参数从插损和回损看都正常但TDR轮廓在过孔位置出现了一个明显的120 Ω阻抗凸起。后来查版图发现过孔附近参考层被挖掉了一圈返回路径被迫绕行等效增加了局部电感。这种问题在频域曲线上往往“潜伏”得很好但时域一眼就能看穿。5.3 DC点与低频起点的处理S参数仿真一般从某个低频比如10 kHz或1 MHz开始。但很多通道仿真器需要DC点来做直流一致性计算。如果PowerSI没有自动输出DC点你需要手动补一个DC点数据方法是如果模型中有导通网络DC点S211S110理想无损如果信号路径上有隔直电容DC点S210S11-1完全反射实际上PowerSI通常会自动计算DC点我只需要在导出设置里确认一下即可。但如果你手动处理数据千万别忘了这一点否则时域仿真器会因为缺少DC值而无法正确计算直流工作点。5.4 导出Touchstone文件校验通过后就可以导出S参数文件了。Touchstone格式是最通用的S参数交换格式扩展名是.s4p4端口或者.s2p2端口。在导出设置时需要注意阻抗参考选50 Ω还是100 Ω差分取决于你下游工具的默认设置。我会用100 Ω差分参考这样和实际链路阻抗一致使用时不容易混淆。频率单位通常选GHz数据类型选Magnitude/Angle幅度/相位或者Real/Imaginary都行导出的文件命名我习惯用这种格式信号名_速率_板卡版本_v1.s4p方便日后追溯。我曾见过有人导出文件命名为test.s4p三个月后自己都忘了里面是哪条链路的模型只好重新提一遍浪费半天时间。6. 那些让我折腾到半夜的问题清单这一章我把自己这几年在PowerSI实操中遇到的典型问题整理一下条条都是真实踩坑经历希望能帮你避开。6.1 差分相位极性反了结果“看似完美”却是错的前面提到过一次这里再展开讲。PowerSI里组合差分端口时如果P和N的极性定义不一致那么SDD21曲线其实也会“像模像样”但SDC21差转共模项会异常偏高。我当时排查的方法很简单把导出的s4p文件在ADS里面打开看一眼SDC21曲线。正常设计它的值应该比SDD21低20 dB以上但我当时看到的SDC21只比SDD21低6 dB左右这就说明模式转换严重百分之百是端口极性定义问题。回到PowerSI重新检查两个端口的参考方向改完再跑问题立刻消失。所以任何时候结果中模式转换项异常第一优先检查端口极性而不是怀疑结构本身。6.2 参考层不连续导致TDR阻抗突变前面提过的LVDS案例。这类问题在高速差分设计中占比极高。因为布线工程师在走线换层时只关注了走线层和过孔经常会忽略参考平面的完整性。如果差分线从L2层换到L5层但L5层下方对应的地平面被一个大的电源分割槽切断回流路径就会绕很大一圈等效电感上升阻抗自然“顶”上去。解决办法是在PowerSI里把信号换层区域放大检查所有参考层的铜皮完整性。如果发现地平面被分割至少要复查换层过孔旁边有没有缝合地过孔。缝合地过孔数量不足引起的返回路径问题TDR看得一清二楚频域插损在高频会明显下垂。6.3 网格太多导致仿真时间爆炸常见情况是模型中包含了那种没必要的圆形大铜皮或者铺铜碎片。这些结构本身对差分信号没什么影响却会让网格剖分器疯狂细化算得极慢。我的习惯是仿真前把金属层上的碎铜、孤岛铜皮删干净。软件操作上可以用层透明度把不需要的层隐藏起来选中碎铜区域直接删除。如果保留区域内有不需要的元件封装也应该一并删除——尤其是一些大面积的散热Pad会严重拖慢仿真速度。有一个经验值**一个正常的差分链路模型节点数Mesh Nodes通常控制在100万以内跑准静态模式就很流畅。**如果看到节点数突破了500万那我建议立刻回去精简模型。6.4 频点数量过多导致输出文件巨大有个项目里我图省事直接把频点数设成了10001个想着反正一劳永逸。结果仿真跑完导出的s4p文件足足有60多MB下游通道仿真器加载一次要等好几分钟而且很多频点数据在20 GHz以上根本用不到。后来我学乖了按实际需要导出。如果只需要验证5 Gbps链路那就导出500 MHz到10 GHz的频段点数1001个文件只有几MB处理起来非常轻快。如果后面要做高速的SerDes仿真那就覆盖到信号三次谐波以上频段宁宽勿窄但点数可以适当稀疏。6.5 仿真结果和手算阻抗对不上这种情况我也遇到过。比如我按微带线阻抗公式手算得到100 Ω但PowerSI跑出来的TDR阻抗显示只有92 Ω。排查下来发现是叠层里绿油层的Dk设置不够准确。绿油的Dk通常在3.54.0之间但如果板厂实际用的是别的型号会造成表层阻抗偏差。所以做表层微带线仿真时别忽略绿油层。如果板厂能提供绿油的具体参数务必填进去如果提供不了至少把厚度设为0.5 mil左右Dk设为3.8这样误差会小很多。7. 实测验证与反复迭代仿真毕竟是仿真PowerSI提取的S参数再精确也只是一种“电磁仿真结果”。真正能拍板的是样机实测。我通常走这样一套流程7.1 把S参数和VNA实测对比板子打样回来后有条件的话用矢量网络分析仪VNA实测S参数和PowerSI仿真结果放在一起对比。如果两者偏差在可接受范围低频段插损差异通常应小于0.5 dB回波损耗趋势一致就说明仿真模型可信度高后续改版可以直接依赖新模型的仿真结果做决策。有些公司没有VNA那就用TDR示波器实测差分阻抗。实测的TDR轮廓和仿真TDR轮廓对比重点看阻抗突变点出现的位置是否一致。如果位置不一致通常意味着模型遗漏了某个结构比如测试点过孔焊盘、或者参考层空洞。7.2 实测与仿真不一致怎么办如果发现实测和仿真差异很大优先检查下面几个方面叠层参数是否和实际板厂成品一致板厂有时会临时换料或者调整阻抗控制参数端口位置是否覆盖了连接器、保护器件等额外结构ESD保护芯片、共模电感、排阻这些都会影响S参数测试夹具的影响SMA头、测试线本身就有损耗对比时要扣除有一次我和同事为了一个DDR信号的仿真偏差问题吵了整整两天最后发现是因为板厂在制作过程中把差分线的线宽从5 mil改到了4.5 mil为了控制阻抗而我们的仿真模型里还用的是原设计5 mil。当我把线宽更新到4.5 mil重新提取S参数后和实测数据几乎完美吻合。7.3 后续还可以怎么用这些S参数提取好的S参数不只是看两个曲线图那么简单。它可以作为一颗“种子”继续发酵出很多有价值的东西。我会把它导入到系统级的通道仿真器中比如Cadence的SystemSI、Keysight的ADS配合芯片的IBIS-AMI模型做完整的信号链路仿真输出眼图、浴盆曲线和误码率预估。如果在频域S参数里发现某些频点存在共振峰可以结合板上电源分配网络PDN的S参数一起分析判断是不是走线与电源平面之间形成了腔体谐振。这类问题纯粹靠经验猜难度很大但有了S参数数据基底很清晰分析路径也就明确了。8. 几条个人体会供你参考最后聊几句掏心窝的话。**PowerSI提取S参数这件事真正的难点从来不是软件操作而是对“物理模型”的理解。**叠层设置、端口位置、参考层处理、网格取舍这每一步都是在和电磁场的底层定律打交道。你越能理解传输线理论和回流路径的本质操作起来就越有底气。我的一个工作习惯是在每块板的SI仿真开始前先建一个表格记录每条关键差分信号的名字、速率、最高仿真频率、目标差分阻抗、对应端口名、S参数文件路径。这个表看起来简单但在多板卡协作时尤为关键。配合规范的命名习惯可以省下大量的沟通成本。给初学者的建议也很简单不要一上来就追求全波仿真和超高频率。先把一条USB 2.0全速480 Mbps或者RS485这类低速差分信号跑通整个流程理解SDD21、SDD11、TDR轮廓之间的关系再逐步挑战PCIe、SerDes这类高速接口。低速时各种效应不敏感环境更宽容更容易建立起正确的直觉。至于那些“MCU没有USB差分引脚怎么办”、“线扫相机里差分信号怎么处理”这类问题本质上都是同一个回答——先搞清楚你的差分链路物理结构是什么样的再决定怎么模型化、怎么仿真。差分信号分析不求人框架和工具你都有了剩下的就是多跑几次多看TDR轮廓多和实测数据做对比。踩过几次坑之后你对S参数这件事的理解会远超那些只会点两下鼠标调出个曲线就发朋友圈的“自动化操作员”。
返回列表