ARTICLE DETAIL

资讯详情

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

Power SI走线阻抗与耦合检查实战:从叠层端口到TDR串扰排查

Power SI走线阻抗与耦合检查实战:从叠层端口到TDR串扰排查 1. 为什么走线阻抗和耦合检查值得单独拿出来做干了这么多年硬件我越来越觉得一块板子能不能跑稳往往不取决于你用了多贵的芯片而是取决于那些看起来“理所当然”的地方——走线阻抗是不是全程可控相邻走线之间会不会互相干扰。尤其是现在DDR、PCIe、USB这些接口速率越拉越高几十皮秒的上升沿意味着任何一点阻抗不连续或者耦合噪声都可能直接让眼图闭合。很多人在layout阶段凭感觉走线等板子回来发现误码率下不来再回头查折腾的时间比一开始就做仿真多好几倍。Power SI这个工具说白了就是Cadence Sigrity套件里专门做频域和时域信号完整性分析的模块。它的强项在于你可以把PCB的叠层、走线、过孔、平面信息读进来然后针对性地做阻抗曲线扫描和耦合串扰评估。和那些纯二维的场求解器比Power SI能更真实地还原三维结构下的电磁场分布尤其是当走线跨越分割平面或者经过密集过孔区域的时候三维仿真的价值就体现出来了。我写这篇东西是想把用Power SI做走线阻抗和耦合检查的完整流程捋一遍。从叠层参数怎么设、端口怎么加、TDR曲线怎么解读到耦合检查里近端远端串扰怎么看、哪些参数最容易设错再到实际仿真和实测对不上的时候该往哪个方向排查。目标读者是那些已经知道阻抗要控50欧姆、知道串扰不好但真正动手做仿真时不知道从哪下手的硬件工程师和layout工程师。看完你至少能自己跑通一遍流程知道每个设置背后的道理遇到异常结果时有个排查的方向。提示Power SI的仿真精度高度依赖叠层参数和材料模型的准确性如果你拿到的叠层是“大概估的”那阻抗仿真结果和实测差个十几欧姆一点都不奇怪。2. 仿真前的整体思路与关键决策2.1 先想清楚你要回答什么问题很多人一打开Power SI就急着导文件、画端口结果跑完发现结果看不懂或者看懂了但不知道该怎么改。问题出在动手之前没想清楚这次仿真是要验证单根线的阻抗连续性还是看一对差分线的耦合情况还是评估某几根敏感线之间的串扰量级。我的习惯是在打开软件之前先在本子上写三行字第一行我要检查的目标网络名和它的速率要求第二行我关心的指标是什么是阻抗波动范围、还是串扰电压峰值、还是眼高眼宽第三行我预期的结果是什么范围如果仿真出来偏离这个范围可能是什么原因。这三行字花不了五分钟但能让你在后面的设置里少走很多弯路。举个例子如果你要检查的是DDR4的DQ线速率3200Mbps那单端阻抗目标一般是40欧姆左右具体看控制器要求允许波动范围通常在正负10%。你要看的指标是沿着走线长度的阻抗曲线重点关走过孔、换层、跨分割这些位置。而如果你要检查的是PCIe Gen3的差分对那阻抗目标是85欧姆或100欧姆差分耦合检查的重点是差分对之间的串扰因为差分对内部的耦合是设计好的对间的耦合才是要控制的。2.2 为什么选Power SI而不是其他工具Sigrity套件里做信号完整性的模块有好几个Power SI、SpeedXP、System SI各有侧重。Power SI的优势在于它同时支持频域S参数提取和时域TDR/TDT分析而且是真正的三维全波求解器对于走线跨分割、过孔密集区域这些结构它的结果比二维工具可靠得多。SpeedXP更偏向于系统级链路仿真适合做通道分析但如果你只是要看某几根线的阻抗和耦合Power SI更直接。另一个原因是Power SI和Cadence的Allegro PCB Editor配合得很好你可以直接从Allegro里导出仿真需要的文件叠层信息、网络信息都能带过来省去大量手工设置的功夫。当然如果你用的是其他layout工具Power SI也支持导入ODB或者GDSII格式只是叠层和材料参数可能需要手动补全。2.3 仿真流程的总体设计整个流程我一般分成四步走。第一步是模型准备把PCB文件导进来设置叠层和材料参数检查网络和器件模型。第二步是端口设置根据你要检查的内容在走线的起点和终点加端口如果是差分线还要设置差分端口。第三步是仿真配置选择做TDR分析还是S参数提取设置扫频范围和激励信号。第四步是结果解读看阻抗曲线是否平稳看耦合系数是否在可接受范围内。这四步里第一步和第二步最容易出问题也最影响结果的可信度所以我会在后面展开讲。第三步的设置相对固定但扫频范围的选择有讲究设置不当会导致结果失真或者仿真时间过长。第四步需要你对传输线理论有基本的理解不然看到曲线跳变也不知道是正常还是异常。注意Power SI的仿真时间和你设置的扫频范围、网格密度直接相关。一个包含几十根走线的区域如果扫频到20GHz网格设得很细跑几个小时是常事。所以前期一定要把仿真区域裁剪好只保留你关心的部分不要整个板子全跑。3. 模型准备与叠层参数设置3.1 导入PCB文件时要注意什么Power SI支持多种导入方式最省事的是直接从Allegro的.brd文件导入叠层、网络、器件信息都能自动识别。如果你用的是其他工具可以导出ODB格式再导入。导入的时候有几个地方要特别留心。第一是单位。Power SI默认可能是mil或者mm导入之前确认一下和你设计时用的单位一致不然叠层厚度差一个数量级阻抗结果就完全不对了。第二是叠层映射导入后要去叠层编辑器里检查每一层的厚度、材料、铜厚是否和你的实际叠层表一致。第三是网络映射确认你要仿真的网络没有被误识别为电源或者地网络。我遇到过好几次导入后发现某根信号线被归到了电源网络里原因是那根线在某个区域和电源平面重名了。这种问题在导入后的网络检查里能看出来如果你不检查直接加端口跑仿真结果就是那根线根本没有信号仿真结果全是噪声。3.2 叠层参数怎么设才靠谱叠层参数是阻抗仿真的地基这里设错了后面全白搭。你需要关注的核心参数有三个每层的介质厚度、介电常数Dk、损耗角正切Df。铜厚也要设对因为它影响走线的横截面积进而影响阻抗。介质厚度和铜厚一般从PCB厂的叠层报告里能拿到这是最准的。如果没有就找板厂要一张标准叠层表按照他们的常用结构来设。Dk和Df这两个参数很多人的做法是直接用FR4的典型值Dk4.3Df0.02。但我要说这个做法在低频下问题不大到了几个GHz以上Dk和Df随频率变化很明显用恒定值会导致阻抗和插损的仿真结果和实测偏差较大。正确的做法是从板材供应商那里拿到Dk和Df的频率曲线比如松下、罗杰斯这些厂商都会提供材料数据表。在Power SI里你可以把Dk和Df设成频率相关的函数这样仿真结果更接近实际。如果实在拿不到曲线至少把Dk设成你工作频率附近的典型值比如你跑5GHz的信号就不要用1MHz下的Dk值。还有一个容易忽略的地方是阻焊层。阻焊层的Dk通常在3.5到4.0之间厚度大概0.5到1mil。如果你做的是表层走线的阻抗仿真阻焊层会影响阻抗值大概会让阻抗降低一两欧姆。要不要考虑阻焊层看你对精度的要求。如果只是做相对比较比如看两根线哪根阻抗更高可以暂时忽略如果要和实测对标最好加上。3.3 走线几何参数的确认叠层设好之后要去检查走线的几何参数包括线宽、线距、铜厚。Power SI会从导入的文件里自动读取这些信息但有时候会因为文件格式的问题读错。我建议你在导入后用工具里的测量功能手动量几根关键走线的宽度和你的设计值对比一下。线宽对阻抗的影响是线性的线宽越大阻抗越低。以常见的FR4叠层为例如果介质厚度是4milDk4.3线宽从5mil变到6mil阻抗大概会从50欧姆降到47欧姆左右。这个变化量在仿真里能清楚看到所以线宽一定要量准。还有一个细节是走线的截面形状。实际PCB上的走线不是完美的矩形蚀刻之后截面会变成梯形上窄下宽或者上宽下窄取决于蚀刻工艺。Power SI里可以设置截面形状默认是矩形。如果你要和实测精确对标可以改成梯形设置上底和下底的宽度比。这个影响在细线比如4mil以下上更明显粗线可以忽略。提示如果你不确定板厂的蚀刻特性可以先按矩形跑一遍然后拿实测结果反推调整截面参数直到仿真和实测吻合。这个过程叫“模型校准”是提高仿真可信度的重要手段。4. 端口设置与TDR仿真配置4.1 端口怎么加才不影响结果端口设置是Power SI仿真里最讲究技巧的一步。端口加得不对要么结果不收敛要么曲线出现莫名其妙的谐振。基本原则是端口要加在你关心的走线的两端一端做激励一端做接收参考地要选最近的完整平面。对于单端走线端口是信号对地。你要在走线的起点焊盘或者过孔处加一个正端在最近的地平面或者地过孔上加一个负端。这里的关键是“最近”负端离正端越远引入的寄生电感越大高频下的阻抗曲线就会翘起来。如果走线是通过过孔换层的端口最好加在过孔的正上方或者正下方不要加在过孔旁边的走线上因为过孔本身的阻抗不连续也需要被观察到。对于差分走线端口要设成差分模式正负两个信号分别接端口的两个极参考地可以悬空或者接一个大的参考平面。差分端口的阻抗是两条线之间的阻抗不是各自对地的阻抗所以设置的时候要选对模式。Power SI里可以设置端口的终端类型一般选差分阻抗值设成你设计的差分阻抗比如85欧姆或100欧姆。还有一个坑是端口去嵌。如果你仿真的走线是通过连接器或者封装连到芯片的那你需要把连接器和封装的影响去掉只保留PCB走线的部分。Power SI支持端口去嵌但设置起来比较麻烦需要你提供去嵌结构的模型或者长度。如果你的仿真区域只包含PCB走线不涉及连接器那就不用管去嵌。4.2 TDR仿真的参数设置TDR仿真的原理是给走线加一个上升沿很陡的阶跃信号然后看反射回来的波形根据反射系数推算出走线各点的阻抗。在Power SI里你可以设置激励信号的上升时间、幅度和参考阻抗。上升时间的选择很关键。上升时间越短能分辨的阻抗变化越精细但需要的仿真带宽也越高。一般来说上升时间设为信号实际上升时间的1/3到1/5就能捕捉到主要的阻抗不连续。比如你的信号上升时间是100ps那TDR的上升时间可以设成20到30ps。如果你设得太短比如5ps那仿真带宽要跑到几十GHz仿真时间会急剧增加而且结果里会包含很多高频噪声反而不好解读。参考阻抗一般设成你设计的目标阻抗比如50欧姆。这样TDR曲线会围绕50欧姆波动偏离50欧姆的地方就是阻抗不连续的位置。扫频范围的选择也有讲究。TDR仿真的频率上限和上升时间的关系是带宽约等于0.35除以上升时间。如果你的上升时间是20ps那带宽大概需要17.5GHz。Power SI里可以直接设TDR的上升时间软件会自动计算需要的扫频范围。但如果你手动设扫频范围记得要覆盖这个带宽否则高频分量丢失阻抗曲线的细节会被抹平。4.3 网格划分与仿真收敛Power SI的网格划分是自动的但你可以设置网格密度。网格越密结果越准但仿真时间越长。对于走线阻抗仿真我一般先用默认的网格跑一遍看结果是否合理。如果阻抗曲线很平滑说明网格够用如果曲线毛刺很多或者某些位置的值明显不对可以适当加密网格。自适应网格加密是个好东西。Power SI可以根据仿真结果自动加密那些场变化剧烈的区域比如走线边缘、过孔附近。开启自适应加密后你不需要自己判断哪里该加密软件会帮你做。代价是仿真时间会增加但换来的是结果更可靠。收敛判断方面主要看S参数的收敛情况。Power SI会输出每次迭代的S参数变化量如果连续两次迭代的变化量小于你设的阈值就认为收敛了。一般设0.01或者0.005。如果一直不收敛可能是端口设置有问题或者网格太粗或者仿真区域里有谐振结构。注意仿真不收敛的时候不要盲目增加迭代次数。先检查端口和网格这两处的问题解决了收敛通常就快了。盲目增加迭代次数只会浪费时间。5. 耦合检查的关键设置与结果解读5.1 耦合检查到底在检查什么耦合检查说白了就是看一根线攻击线上的信号有多少跑到了另一根线受害线上。跑到了多少用耦合系数或者串扰电压来衡量。近端串扰是信号在攻击线近端产生的噪声远端串扰是信号在受害线远端产生的噪声。对于微带线远端串扰通常是负的对于带状线远端串扰接近零因为带状线两边都有参考平面电场被束缚得更好。在Power SI里做耦合检查你需要设置两条或者多条走线的端口然后提取它们之间的S参数。S参数里的S21是插入损耗S31是近端串扰S41是远端串扰。看这些参数的幅度就能知道耦合的强弱。耦合检查的目标通常不是让串扰为零那做不到而是让串扰控制在接收端能容忍的范围内。比如一个接收端的噪声容限是100mV那你的串扰峰值就不能超过这个值还要留一定的余量。具体留多少余量看你的信号裕量和误码率要求。5.2 攻击线和受害线的设置技巧设置耦合检查的时候攻击线和受害线的选择很重要。一般来说攻击线是那些翻转频繁、摆幅大的信号比如时钟、数据选通、高速差分对。受害线是对噪声敏感的信号比如模拟输入、复位信号、低摆幅的差分对。在Power SI里你可以同时设置多根攻击线看它们对同一根受害线的叠加影响。这个功能在检查总线串扰的时候特别有用因为实际工作时总线上的多根线可能同时翻转它们的串扰会叠加。端口设置上攻击线的近端加激励远端接匹配负载。受害线的两端都接匹配负载近端和远端的负载上分别测量串扰电压。匹配负载的阻抗设成走线的特性阻抗这样没有反射串扰测量更准确。5.3 串扰结果怎么看串扰结果一般看两个东西时域的串扰电压波形和频域的S参数曲线。时域波形能直接看到串扰的峰值、宽度和振荡情况。频域曲线能看到串扰在哪些频率上更严重。时域串扰电压的峰值是你的主要关注点。如果峰值超过了接收端的噪声容限那就需要改设计。改的方向有几个增大线间距、减小耦合长度、在两条线之间加地线或者地过孔、调整叠层让走线更靠近参考平面。频域上近端串扰的S31曲线通常随着频率升高而增大因为高频耦合更强。远端串扰的S41曲线在微带线里是随着频率升高而增大在带状线里则比较平坦且值很小。如果你看到远端串扰在某个频率上突然变大那可能是走线在那个频率上发生了谐振需要检查走线长度和信号波长的关系。还有一个指标是耦合长度。耦合长度越长串扰越大。对于微带线当耦合长度超过信号上升时间对应的空间长度的一半时串扰会趋于饱和。这个空间长度等于上升时间乘以信号在介质中的传播速度。比如上升时间100ps传播速度是光速除以根号Dk大概15cm/ns那空间长度就是1.5cm一半就是0.75cm。如果你的耦合长度超过0.75cm串扰就不会再随长度增加了这时候再减小耦合长度就没用了得从间距和叠层上想办法。5.4 差分对的耦合检查差分对的耦合检查比单端线复杂一些因为差分对内部的两根线本身就有耦合而且是对称的这种耦合是有益的。你要检查的是差分对之间的耦合也就是一对差分线对另一对差分线的干扰。在Power SI里你可以把每对差分线设成差分端口然后提取差分对之间的S参数。看差分对之间的近端串扰和远端串扰判断是否在可接受范围内。差分对之间的耦合通常比单端线小因为差分信号的电场主要束缚在两根线之间对外辐射小但这不是绝对的如果两对差分线靠得太近耦合仍然会很大。差分对耦合检查的一个重点是看共模噪声。如果两对差分线之间的耦合不对称会产生共模噪声共模噪声辐射强还可能引起EMI问题。在Power SI里可以分别看差模到差模的耦合和差模到共模的耦合后者就是共模噪声的来源。提示差分对之间的间距至少要保证在3倍线宽以上如果空间允许5倍线宽更稳妥。如果实在挤不下至少要在两对差分线之间加一排地过孔能明显降低耦合。6. 常见问题与排查技巧实录6.1 仿真结果和实测对不上怎么办这是最常被问到的问题。仿真跑出来阻抗是50欧姆实测是45欧姆或者仿真串扰是30mV实测是80mV差这么多是仿真不准还是实测有问题我的经验是先查叠层参数。仿真和实测差距最大的来源就是叠层参数不准。Dk设成4.3实际可能是4.5介质厚度设成4mil实际可能是3.8mil。这些差异累积起来阻抗差个几欧姆很正常。解决办法是从板厂拿到准确的叠层报告用实测的阻抗数据反推Dk和介质厚度校准模型。如果叠层参数校准后还是对不上再查端口设置。端口加的位置不对或者参考地选得太远都会让仿真结果偏离。检查端口是不是加在了走线的实际端点参考地是不是最近的完整平面。如果走线经过了过孔端口有没有加在过孔的位置。还有一个容易被忽略的因素是测试探头的影响。实测阻抗的时候TDR探头的寄生电容和电感会影响测量结果尤其是高频下。仿真里没有探头模型所以两者对不上。如果你要做精确对标可以在仿真里加上探头模型或者在实测时用去嵌技术把探头的影响去掉。6.2 仿真跑得很慢或者不收敛仿真慢的原因通常是网格太密、扫频范围太宽、或者仿真区域太大。我的做法是先跑一个粗略的仿真扫频范围设窄一点网格设稀一点看看结果的大致趋势。如果趋势对了再逐步加密网格、展宽频带做精细仿真。不收敛的原因可能是端口设置有问题比如端口短路了或者悬空了或者仿真区域里有谐振腔体。检查端口的两端是不是正确连接到了信号和地检查仿真区域里有没有孤立的大铜皮或者未连接的金属结构。这些结构会在某些频率上谐振导致仿真不收敛。还有一个技巧是分段仿真。如果整条走线很长包含很多过孔和换层可以把它分成几段分别仿真然后把S参数级联起来。这样每段的仿真规模小收敛快而且能定位到具体是哪一段出了问题。6.3 阻抗曲线异常跳变的排查TDR阻抗曲线上出现跳变说明那个位置有阻抗不连续。常见的跳变位置和原因有这几种跳变特征可能原因排查方法阻抗突然升高走线变窄、参考平面缺失、过孔反焊盘过大检查该位置的线宽和平面完整性阻抗突然降低走线变宽、有分支线、参考平面过近检查是否有未端接的支线或测试点阻抗周期性波动走线经过周期性结构如过孔阵列或网格地检查走线下方平面的网格密度阻抗逐渐升高走线损耗大或者参考平面是网格地且网格稀疏检查材料Df和平面结构排查的时候先把TDR曲线的横轴从时间换算成距离这样能直接定位到板上的具体位置。换算方法是距离等于传播速度乘以时间的一半因为信号是往返的。传播速度等于光速除以根号Dk。比如Dk4.3传播速度大概是14.5cm/ns。如果你的TDR曲线在2ns处有一个跳变那对应的位置大概在14.5cm处。6.4 串扰超标了怎么改串扰超标改的方向有几个按优先级排第一增大线间距。这是最直接有效的方法。线间距从1倍线宽增加到3倍线宽串扰能降低一半以上。如果空间允许优先用这个方法。第二减小耦合长度。如果耦合长度已经超过了饱和长度减小它没用得先判断是否饱和。判断方法前面说过看耦合长度是否超过上升时间对应空间长度的一半。第三改变叠层让走线更靠近参考平面。走线离参考平面越近电场越集中在走线和平面之间线间的耦合就越小。把走线从表层移到内层两边都有参考平面串扰会显著降低。第四在两条线之间加地线或者地过孔。地线要接地良好每隔一段距离打过孔到地平面。如果地线没有接地反而会变成一根天线串扰更大。第五调整走线拓扑避免长距离并行。如果两条线必须并行尽量让它们在不同的层走或者用蛇形走线打乱并行关系。但蛇形走线本身会引入阻抗不连续要权衡。提示改串扰的时候不要一次改多个参数一次改一个仿真看效果这样才能知道哪个参数最有效。我见过有人一次性把间距、叠层、端接全改了结果串扰是下来了但阻抗又不对了回头再查根本不知道是哪个改动引起的。7. 一些实操中的个人体会仿真这件事做久了会发现工具只是工具真正决定结果质量的是你对问题的理解和对细节的把控。Power SI功能很强但它的结果好不好取决于你给的输入对不对。叠层参数、端口设置、网格密度每一项都影响最终结果而每一项都有可以优化的空间。我刚开始用Power SI的时候总觉得仿真跑完看到曲线就完事了后来发现同样的结构不同的人设参数跑出来的结果能差百分之二三十。那时候我才意识到仿真不是按几个按钮就完事的它需要你对传输线理论、电磁场分布有基本的理解知道每个参数背后的物理意义才能判断结果是否可信。另外一个体会是仿真和实测是互补的不是替代关系。仿真能在设计阶段快速迭代帮你排除明显不合理的方案但最终还是要靠实测来验证。实测不仅能验证仿真还能反过来校准仿真模型让下一次仿真更准。这个循环做几轮之后你的仿真模型会越来越接近实际仿真结果的可信度也会越来越高。最后分享一个小技巧做阻抗和耦合仿真的时候把仿真区域裁剪到只包含你关心的网络和最近的参考平面不要贪多。区域越小网格越容易控制仿真越快结果也越干净。如果你需要看整板的耦合情况可以先跑一个粗略的全板扫描定位到问题区域再针对那个区域做精细仿真。这样效率最高也不容易漏掉关键问题。
返回列表