ARTICLE DETAIL

资讯详情

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

差分信号完整性分析:PowerSI S参数提取与BBS模型生成

差分信号完整性分析:PowerSI S参数提取与BBS模型生成 做高速板子的人谁没被“S参数”这三个字支配过。尤其是碰到USB、PCIe、千兆网、CAN、RS485这类差分信号layout画完只是第一步差分走线插损多少、回损够不够、阻抗是否连续这些在流片或者打板之前就必须心里有数。我在这块用过不少工具PowerSI算是日常用得最顺手的一个尤其是做差分S参数提取和宽带SPICE模型生成一条龙下来完全不求人。这篇内容我先说清楚它是什么、能解决什么问题用Cadence Sigrity里的PowerSI对差分信号进行S参数仿真验证差分阻抗、插损、回损等信号完整性指标并把仿真结果转成BBS模型Broadband SPICE供后续时域电路仿真使用。适合PCB设计工程师、SI工程师以及那些正被板级高速链路问题折磨的硬件工程师。我会从仿真前准备、端口设置、实操流程到BBS模型生成一步一步拆开讲最后附上我这些年踩过的坑。内容偏工程实操看完就能照着在自己项目里跑一遍。1. 为什么要用PowerSI做差分信号完整性分析1.1 差分信号、S参数和SI验证的关系差分信号是靠两条走线之间的电压差来传递信息的典型的RS485、CAN、USB、PCIe、Ethernet全是这个套路。接收端看的是A-B或D/D-之间的差值而不是对地绝对电平所以它对共模噪声、地弹、外部干扰都有天然的抑制能力。但这不等于layout随便画就万事大吉两条线如果不等长、间距不一致、参考面不连续差模信号就会部分转成共模整条链路的噪声容限会明显变差严重时直接解析不出数据这也是那些想拿RS485/CAN调试问题的兄弟最头疼的地方。S参数干的事情就是把一个互连网络看成黑盒子用频域反射和传输特性来描述它。S11是回波损耗S21是插入损耗对差分网络还会区分成差模和共模的组合也就是混合模式S参数。做信号完整性验证时我们最关心的几个量——差分阻抗、差分插损、差分回损、模式转换统统可以从S参数里面读出来。可以说拿到一组可靠的S参数等于拿到了整条链路最核心的健康报告。1.2 PowerSI在仿真流程里的定位PowerSI是Cadence Sigrity产品线里的板级/封装级电磁场求解器主要用来从版图提取S参数和阻抗参数。和HFSS这类通用3D全波工具比PowerSI在整板或多网络提取场景下效率高得多特别是做差分串扰分析、电源地阻抗分析时操作更加对口。而ADS更多是做电路级和系统级仿真S参数喂进去之后做通道仿真、眼图分析。这三个工具的关系我习惯理解成PowerSI负责从物理版图里“挖”出频域行为ADS负责拿这些行为去跑时域协议仿真HFSS则是需要精确建模连接器、过孔、天线等局部结构时才拿出来做精细校验。实操中我用的最多的流程就是PowerSI提取差分对S参数导出之后给ADS做SystemSI通道仿真顺便看一下眼图。如果你手头只有PowerSI做完验证和BBS生成也基本够用不一定非得再上ADS。1.3 这次项目要解决的具体问题具体到这个项目目标很直接板上有几对高速差分线要验证它们在整个工作频段内比如到10GHz的差分阻抗是否在设计目标内插损回损是否达标同时把仿真得到的S参数转成BBS模型给后级时域仿真用。这里多提一句有不少人问“MCU没有USB差分信号数据引脚怎么办”这种场景其实先要分清设计架构MCU没有USB PHY的话通常需要外接USB PHY芯片差分对是在PHY和连接器之间走的如果压根只有普通GPIO那就不是差分信号也不存在差分S参数验证的问题。做仿真前先确认信号类型比急着开软件重要得多。2. 仿真前的模型准备与端口设置2.1 叠层参数和材料设置很多仿真结果偏差大根子都出在叠层参数没设对。你从EDA工具导入板子之后第一件事就是检查叠层。材料Dk介电常数和Df损耗角正切直接影响阻抗和插损铜箔粗糙度影响高频损耗。这里没有捷径必须和板厂确认实际使用的板材别拿默认值糊弄。以一块常见的4层板为例L1和L4走信号L2是完整地平面L3走电源。板材用的FR4Dk在1GHz时约4.2Df约0.02铜箔表面粗糙度RMS按0.8微米左右处理。如果你的信号速率很高比如PCIe Gen4、25G以上FR4已经不太够看建议用Megtron6或类似低损耗材料Dk在3.5附近Df能压到0.005以下。PowerSI里每层都可以单独设置介质材料和铜箔模型务必逐层确认。2.2 仿真频率范围怎么定频率范围设多少直接关系到仿真时间与结果有效度。工程上常用经验公式信号最高有效频率约等于0.35除以上升沿时间。比如一个数字信号的上升沿是100ps那有效频率就是3.5GHz左右仿真频谱范围至少要覆盖到这个频点如果是USB 2.0这种上升沿在500ps量级的扫到3GHz都够了而PCIe Gen3/Gen4这种高速链路我习惯直接扫到10GHz以上留够余量看高频衰减趋势。频率扫描方式也要留意PowerSI支持线性扫频和对数扫频。宽频带下我建议起始频率从1MHz或更低开始步进不要太大高频段逐步加密。低频点太少会影响时域转换的准确性因为后面做TDR或BBS拟合时低频行为需要足够的数据支撑。2.3 差分端口设置与回流路径端口设置是整个S参数提取里最容易翻车的一环。差分对要提取混合模式S参数通常需要在一对信号线的驱动端和接收端分别设置差分端口。PowerSI里可以先创建单端端口再配对成差分端口也可以直接用差分端口工具在同一对网络的两个焊盘上加激励。设置端口时最关键的是参考位置。信号回流必须有一个明确路径如果端口参考点选错回流路径就断了仿真结果会出现莫名其妙的谐振或振荡。我的习惯是在差分对两端附近找到最近的GND网络作为端口参考并且确认这对差分线正下方的参考平面是否完整如果有被分割的槽那就先把平面跨分割的问题解决掉再跑仿真不然S参数出来连趋势都不能信。2.4 网络选择和仿真范围裁剪这一点很现实整板仿真在大多数情况下没必要。PowerSI虽然支持整板提取但把所有网络都丢进去网格剖分和求解时间会爆炸。做差分S参数验证时我会在产品树里只勾选目标差分网络以及它们旁边的强耦合干扰网络用来做串扰分析还有关键的GND参考网络。这样既能控制求解规模也能保证端口参考关系完整。如果板子上差分对数量多我建议一批一批跑每批5到10对跑完导出S参数再做后处理。一次选太多网络PowerSI会非常吃力而且某一对结果异常时排查起来也麻烦。3. PowerSI差分S参数仿真实操流程3.1 导入版图与叠层校准我一般直接从Allegro导出后打开PowerSI项目PowerSI对Allegro的BRD文件支持做好其他格式走ODB或者SIP文件也能导入但需要更仔细地检查网络和叠层信息是否完整。文件打开之后先打开Layer Stack界面逐一核对电镀层、介质层、铜箔厚度有偏差就改不要嫌麻烦。叠层校准这一步千万不能跳过。同一块板子如果板材Dk从4.2偏差到4.6差分阻抗可能从100ohm直接掉到90ohm附近正好落到很多协议允许范围之外。板厂给阻抗控制参数时一般会给出等效Dk值直接把那个数值填进去比盲目用默认值强得多。另外铜箔粗糙度也不要忽略粗糙度增加会让高频插损变大对10GHz以上的链路影响尤其明显。3.2 创建差分端口的具体操作我常用的操作路径是在PowerSI的Net管理器里找到差分对网络比如USB_D_P和USB_D_N确认它们组成差分对后在模型树的Ports部分手动创建端口。具体的做法把视图定位到差分对一端的焊盘处选择创建端口工具在第一个焊盘上放置端口正极在第二个焊盘上放置端口负极然后指定参考网络为邻近GND。用同样方法在链路的另一端再放一组端口。两组端口创建完后PowerSI会自动把单端S参数转换成混合模式S参数你就能在后处理里直接看到SDD11、SDD21这些结果。端口位置还有个细节一定要落在网络的实际电气端点比如芯片焊盘或连接器焊盘而不是随手放在走线中间。端点才是信号进入互连网络的物理边界放错了等于把一段走线排除在测量范围之外结果自然不对。3.3 求解模式、网格和频点设置PowerSI里有多种分析模式做互连S参数提取常用到全波或混合求解。默认情况下如果频率到10GHz以上建议选全波或混合求解因为此时过孔谐振、辐射效应等高频行为开始出现如果只是低频段比如2GHz以内的CAN、RS485用常规求解就很快。网格剖分这里不要偷懒。PowerSI支持对不同网络设置网格尺寸信号网络和参考地我习惯设置更精细的网格上限比如1mm到0.5mm电源地可以放宽到2mm。网格越密精度越高代价是求解时间成倍增加所以网格尺寸要有度。我一般先跑一次粗网格全频段确认无重大异常后再对关键网络加密网格重跑高频段验证谐振点这样兼顾效率和精度。3.4 结果怎么看SDD21、SDD11、Zdiff与TDRS参数跑完后处理里第一时间看四条曲线SDD11是差分回损SDD21是差分插损还有SCC22和SDC21共模分量。对于常规差分互连我通常用下面这套参考标准快速判断指标典型要求说明差分阻抗 Zdiff目标值±10%如100ohm对应90-110ohm从Z参数或TDR曲线读取SDD11工作频段内尽量低于-15dB越低越好反射越小SDD21工作频段内尽量大于-3dB插损过大说明走线太长或损耗过大SDC21/SCC21越低越好最好低于-20dB差模转共模反映不对称与耦合问题除了频域曲线我会顺手在PowerSI后处理里做一次TDR看差分阻抗沿走线长度的变化。TDR能直观显示阻抗突变点比如过孔处阻抗偏低、换层处参考平面断裂造成凸起这些在S参数频域曲线里不容易一眼看出来但时域TDR下一目了然。如果TDR曲线在连接器附近有较大的阻抗尖峰说明那个位置的返回路径不连续必须去layout里查。4. BBS模型生成教程重点4.1 什么是BBS模型为什么不能让S参数直接上电路S参数有频率点的限制数据量大而且直接把Touchstone文件丢进SPICE类时域仿真器里会有收敛性差、仿真慢的问题。BBS模型全称Broadband SPICE模型就是通过有理函数拟合把S参数转换为无源、因果的等效电路网表既能保留频域特性又能在时域仿真器中快速工作。另外从商业角度看S参数本质上是频域测量的“照片”直接分享给别人容易被反向观察细节转成BBS之后物理细节被压缩成等效电路协作时传递更方便这在跨公司、跨团队做联合仿真时很实用。4.2 从S参数生成BBS模型的操作步骤在PowerSI里生成BBS模型的操作很简单几乎是一键级别的。S参数结果跑完后在后处理工具中找到Generate Broadband SPICE或类似菜单入口选中需要转换的差分网络设置输出格式与模型类型然后运行生成。PowerSI内部会自动做有理函数拟合给出一组用RLC元件和受控源搭建的等效子电路。生成时有一个参数要特别关注拟合频率范围必须覆盖原始仿真的有效频段最好把DC直流点也纳进去否则时域仿真在低频段会出现偏差。还有极点数量的上限设得越高拟合精度越好但模型网表会变大仿真速度会变慢。一般设置20到40个极点优先满足S参数曲线贴合度。有些版本的PowerSI可以在S参数浏览界面直接右击目标S参数文件选择生成宽带SPICE模型。我之前为了给芯片原厂提供封装模型就是用这个功能把一个4端口差分S参数转成BBS导入到ADS之后的瞬态仿真非常稳没有再出现不收敛的情况。4.3 模型精度验证和无源性检查生成的BBS模型不能直接拿去用得先做一轮质检。把BBS模型和原始S参数放到同一个图里对比看SDD11和SDD21曲线在目标频带内是否重合。如果有明显偏差回到生成界面把极点数量加大或调整拟合算法再重新生成。更要紧的是无源性检查。无源性是指模型在任何频率下都不会产生能量反映到S参数上就是矩阵奇异值不大于1。如果原始S参数本身有无源性违规拟合出来的BBS模型在时域仿真中就可能出现发散。PowerSI/其他工具里一般有Passivity Check功能按一下就知道有没有问题。遇到违规时最直接的办法是回到原始S参数提取阶段检查端口设置和网格剖分把数据本身修好之后重新提取再去生成BBS。5. 常见问题与排查技巧实录5.1 高频抖动、端口闭合和参考地分割问题仿真结果出现高频抖动多半是网格不够细导致谐振点毛刺或者端口位置没放对。遇到这种情况我第一步不是加网格而是先看端口。把端口删掉重新放一次确认参考网络选择的是完整地平面同时检查是否每个端口都成功关联到GND。端口闭合不正常时结果往往会出现不该有的尖峰。参考平面分割是另一个高频问题源。差分对参考层如果有槽、开窗或者被电源分割带切断回流路径会被迫绕行形成大片环路天线S参数曲线中会出现明显的谐振坑。解决办法是回到layout层在分割处附近加缝合地过孔或者调整走线避开分割区域回填后再重新提取。5.2 仿真时间太长怎么办整板全网络仿真肯定慢这没有魔法。合理做法是缩小范围只提取目标差分对参考平面和邻近串扰网络保留其余网络全部删除或设成忽略状态。还可以先用粗网格跑全频段观察总体趋势确认没有异常后再对关注的频段做加密细跑。如果项目里链路特别多建议开多核并行PowerSI对多核心的支持还算不错批量跑S参数可以明显提速。5.3 给新手的几条实操心得最后分享几条我自己折腾下来的体会希望对你有用一是叠层参数是整个仿真准确度的根基宁可多花10分钟逐层确认也不要拿默认值去赌。板厂给的叠层表和阻抗报告是最好的参考直接按那个数据输入PowerSI仿真和实测的偏差通常会很小。二是差分端口设置别嫌麻烦端口的参考地选择直接影响结果正确性。你不确定就多试几组参考位置对比阻抗和S参数变化感性上很快就能建立起“什么才是好的端口设置”的判断。三是别迷信某个频点S参数和TDR一定要结合看。频域看得是整体趋势时域看得是位置问题把两者的信息叠在一起才能精确定位到底是过孔、连接器还是走线宽度变化出了问题。四是BBS模型用之前务必做无源性检查和曲线对比。我有一次生成的BBS模型数据没细看结果时域仿真死活不收敛排查半天才发现拟合频段没覆盖DC模型在低频处整体偏离。这种问题工具不会自动帮你发现一定养成跑完检查的习惯。这个内容后续还能怎么扩展我自己试过一个方向把同一组差分线的S参数同时送进PowerSI和ADS分别在两个工具里做眼图仿真对比眼高、眼宽和抖动指标用来评估“提取-仿真”整条链路的一致性。真做下来会发现很多小细节比如端口参考地选取对眼图的影响比你想象的更大。感兴趣的话下一轮可以单独聊聊这套眼图对比流程。
返回列表