ARTICLE DETAIL

资讯详情

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

高速PCB设计必会:用PowerSI提取S参数做信号完整性仿真

高速PCB设计必会:用PowerSI提取S参数做信号完整性仿真 搞高速PCB设计这几年最让我心里没底的时刻不是布局走线被打回重改而是板子画完了、评审也过了、马上要送去投产了几个人围着屏幕问这条10G差分线到底能不能跑拐角这么多、过孔这么密损耗会不会超标信号完整性分析不能靠猜口说无凭要么拿实物上矢量网络分析仪测要么就在设计阶段把S参数曲线仿真出来。我习惯用Cadence Sigrity PowerSI 2024这工具做这件事从PCB导入到S参数提取整套流程跑顺之后一个简单的双端口通道从建模到看曲线半小时左右复杂板也就多花点时间比起改版重测省得多了。这篇文章我打算把这套流程完整拆开从工具定位、文件准备、层叠设置到端口添加、仿真运行、S参数曲线判读最后再把这几年的踩坑记录整理出来。不管你用没用过Sigrity只要手里有Allegro或者ODB设计文件照着做就能把一条完整的高速链路仿真跑通再做电源完整性阻抗分析也不难。1. 为什么是Power SI工具定位与适用场景1.1 信号完整性分析到底在分析什么信号完整性英文Signal Integrity简写SI核心就一句话保证信号从发送端到接收端波形还能保持足够的幅度、边沿和时序余量。问题是现在的高速数字信号边沿越来越陡一个10Gbps的PAM4信号上升时间往往在20ps以内。这么陡的信号进入PCB走线遇到的任何阻抗不连续都会产生反射过孔是反射源、换层是反射源、连接器更是反射源相邻走线之间还有串扰介质本身会吸掉一部分高频能量这些都会让波形的眼睛闭合。静态时序分析只能算传播延迟算不了这些频域效应。要准确知道一条链路在10GHz频率下的损耗和反射情况最直接的办法就是看S参数。S参数也学名散射参数描述的是多端口网络里入射波和反射波、传输波之间的关系S11回波损耗反映反射大小S21插入损耗反映传输损失。这个参数就是一个频域快照频率从低到高扫一遍整个通道的特性就出来了。1.2 Power SI的核心功能边界Sigrity PowerSI是Cadence Sigrity家族里的频域仿真工具主打的是PCB、封装、连接器的电磁场建模与S参数提取。它跟其他三维全波工具最不一样的地方在于PowerSI针对PCB的平面结构做了大量优化比如差分走线、电源平面、过孔阵列都可以用经过验证的快速算法来求解不需要像普通3D电磁软件那样划分海量四面体网格。这就意味着同样一块20层的高速背板用PowerSI做频域扫频耗时可能比通用3D电磁场软件少一个数量级。PowerSI能做的事情好记一是提取S参数输出Touchstone格式的.sNp文件给系统级仿真工具做收发器协同仿真二是做电源分配网络PDN阻抗分析看电源平面的谐振点在哪Z参数曲线是否满足目标三是做TDR时域反射分析看通道上的阻抗突变位置。它的强项是频域和平面结构如果要做共模噪声近场辐射、天线这类天线类问题还是得靠HFSS这类通用3D电磁工具强扭的瓜不甜工具边界要清楚。1.3 适用场景和影响范围PowerSI的影响范围从消费电子一路铺到工业、通信、车载。只要板子上有高速接口比如PCIe、DDR4/5、SerDes、USB4、HDMI就绕不开信号完整性分析。特别是在这些高速协议里发送端加了TX EQ均衡、接收端有CTLE和DFE这些均衡参数能不能把损耗补回来前提依然是PCB通道本身的S参数要靠谱。规格书上给的走线长度限制就是用类似仿真在给定叠层下算出来的。电源完整性PI这块也离不了PowerSI。现在芯片核电压越来越低DDR或GPU核心供电的电压容差动辄3%板级PDN里任何谐振都会让电压纹波超限。用PowerSI跑一遍PDN阻抗曲线提前看到谐振峰再调整去耦电容容值和摆放位置是每个电源设计工程师都该掌握的技能。这工具不算便宜License也不便宜但产出价值对高速产品来说完全是值得的。2. 仿真前的准备工作从PCB到可仿真的工程2.1 版本与运行环境先说版本2024版本的PowerSI界面整体还是经典的Sigrity风格相比前几个版本最大的变化是导入向导更智能Allegro PCB的兼容性更好而且对多核并行的利用率有提升。PowerSI支持Windows和LinuxWindows下建议内存至少32GB起步因为PCB板级模型动辄几十万、上百万个网格量内存太小很容易卡在网格剖分阶段。固态硬盘也是刚需仿真产生的临时文件都不小机械硬盘在写缓存时会让人等到怀疑人生。License方面PowerSI通常跟Sigrity Suite其他工具打包授权主要用到的功能模块是PowerSI 3D-EM和PowerSI PI这两个模块控制着S参数提取和PDN阻抗分析能力。启动软件前先确认环境变量和License配置正确不然打开后所有菜单都是灰色的这个坑新手很容易遇到。还有一点建议如果电脑配置不高先关掉其他大型软件仿真时内存不够导致崩溃前面导入和设置就白干了。2.2 需要准备的输入文件PowerSI支持的输入格式比很多人想象中丰富最常用的是Cadence自家Allegro的.brd文件其次是ODB、GDSII、Gerber等版图格式。如果是Allegro设计最好在建模前先做一次数据库检查保证没有未定义的封装、没有悬空的走线和铜箔。另一个非常实用的小习惯是PCB源文件路径不要带中文和空格。PowerSI的底层几何引擎对ASCII路径特别敏感一旦路径里出现中文导入时很容易报“cannot read database”这类错误这是我在项目里踩得最实在的坑。如果手里只有Gerber文件也可以建但代价是会丢失网络连接关系电源网络、地网络的识别就全靠手动操作10层板以上按层去点选网络几乎是不现实的事情。所以条件允许的话尽量用ODB或者Allegro原生的.brd文件来做仿真输入。BOM表不是必需物但如果有可以用来对照器件型号方便在仿真时用厂商提供的S参数模型替换默认的规格描述。2.3 层叠和材料参数的设定层叠参数是仿真精度的大头。PowerSI导入Allegro文件后层叠信息通常会一起带进来但注意“带进来”不代表“正确”。不同公司画板时习惯不一样有的层叠把铜箔厚度写在铜箔类型里有的把介质厚度合并了导入后需要逐层核对。层叠里面的关键参数是介质的介电常数Dk、损耗角正切Df、介质厚度以及铜箔的方阻或电导率。FR4作为最常见的板材Dk一般取值4.2到4.5之间但Df差别很大普通FR4的Df在0.015到0.02左右高速板材如Megtron6、Giga-RF的Df可以压到0.002以下。Df直接影响高速信号的高频损耗普通FR4在10GHz时损耗会变得相当吓人如果设计标称要用高速材料但层叠里忘了改Df仿真出来的S21就会过分乐观。铜箔方面常规走线用半盎司18微米或1盎司35微米铜厚导入时如果铜厚为0则完全无法模拟趋肤效应引起的损耗这部分要特别检查。还有一个小细节是阻焊层。对精确的微带线仿真来说阻焊层会影响阻抗模型功率上大概有1%到2%的差别。PowerSI可以在层叠里加入阻焊层材料不过如果仿真目标是内层带状线或者只是做设计前期评估阻焊层可以先不建省一点网格量速度上会更友好。2.4 网络筛选与电源域分配导入完成、层叠确认之后就要开始整理“仿真视野”了。PCB上网络数量动不动几千个如果全做电磁场求解就算超级计算机也够呛。PowerSI里有一个Design Setup或者Net Management的面板在里面可以把当前关注的核心信号网络加入分析列表。比如做DDR4仿真就选上时钟信号、数据选通信号、地址命令信号等关键网络做电源完整性就选上核心电源网络和对应的地网络。关键一步是把电源网络和地网络进行属性标记。PowerSI里可以选中一个网络右键设置为Power Net或者Ground Net这个动作直接决定后续端口参考方式的正确性。如果不把GND设成地很多后续操作都找不到参考层S参数提取时端口就会报警。而电源网络标记后在做PDN阻抗分析时可以直接把该网络作为目标自动检查它和地之间的Z参数省去大量手动添加端口的时间。3. 核心环节实现从PCB导入到S参数曲线提取3.1 导入PCB设计文件打开PowerSI 2024在Start Page里选择New Project填好工程名称和保存路径然后进入设计导入。主菜单选择File → Import Design或者直接在工具栏点Import Design图标。弹出的对话框里文件类型选Allegro BRD找到你的.brd文件单位一般保持跟原设计一致因为Allegro大部分是mil少数是mmPowerSI能自动识别遇到识别异常时手动检查页面右上角单位显示就行了。导入过程的长短取决于板子规模和磁盘速度工程师最好养成好习惯在导入期间不要动鼠标耐心等待进度条走完因为此时主线程在做数据库解析强行点击界面很容易让程序失去响应。导入成功后PowerSI会自动在Analyze面板里生成三维视图看到的是一层层展开的PCB模型此时可以旋转观察层叠结构、高亮网络。如果板子上有大量嵌入式器件或埋阻埋容PowerSI会尝试建立这些器件的简化电模型成功的话会在层叠里对应显示。3.2 层叠和材料核对导入完成后第一件事不是急着加端口而是打开Stack-up视图逐层核对。我习惯按“从顶层到底层”的顺序检查重点看每个导电层层名、铜厚、材料类型每个介质层的厚度和Dk、Df。PowerSI的层叠编辑器基本像一张Excel表双击单元格就能改改完立即生效不用等重启。如果设计用的是混合叠层比如高速信号层在顶层内层用了高速材料底层却是普通FR4一定要在介质层里对应清楚。PowerSI是逐层赋材料的不是全板统一材料搞错了损耗和阻抗都会差。验证层叠合理性的一个快速方法是在某个单根微带走线上跑一次小范围阻抗扫描看特征阻抗是否落在预期范围。比如单端50欧姆、差分100欧姆假如层叠给错成单端60欧姆就要回头检查线宽和介质厚度了。3.3 频率扫描与端口设置频率范围直接决定了仿真规模。对10Gbps的NRZ信号三次谐波就到了15GHz所以S参数扫频至少要覆盖到信号基频的3到5倍通常我扫到15GHz或20GHz。扫描模式可以选择线性或对数想要在低频段看到电源谐振就用对数扫频想要高频段平滑的S21曲线就线性等间隔扫频。采样点数量关系到曲线分辨率和仿真时间比如20GHz范围内设2001个点每个频点都要做一次电磁求解点数越多越慢。实际项目里一般先用500到1000个点跑通流程确认模型正常后再加点数。端口设置是S参数提取的核心操作。在PowerSI里手动添加端口的逻辑很简单在某个网络端点处定义一个激励同时指定回流参考通常参考就是地平面。对于差分管脚直接选Add Differential Port程序会把一对端口组合成差分端口。如果是复杂的DDR总线也可以利用Auto Port/Fast Model机制把指定总线上的网络批量生成端口再给每个端口编号后处理时方便对照网络名。端口位置的选择也是有讲究的。信号仿真端口最好设置在器件的芯片引脚位置也就是BGA焊盘处因为那里才是设计中真正驱动信号的位置。如果你把端口设在连接器附近等于把BGA到连接器这段通道的效应全忽略了S参数自然失真。另一个细节是添加端口时尽量保证回流参考正确选定为最近的参考地否则S参数会莫名多了参考回路带来的谐振毛刺。3.4 运行仿真与S参数导出设置好频率范围和端口后回到工具栏点Simulation或者Run选择仿真类型。PowerSI的求解器通常有几种可选模式比如Broadband Spice、Full-Wave、Hybrid等等。如果是高速差分通道的S参数提取Full-Wave精度最高但速度相对慢如果做的是电源平面PDN阻抗可以用专有的AC阻抗求解速度会快很多。这里给一个实际经验第一遍先别上全量模型把关注的几条链路单独建出来快速验证模型没问题后再放回整板层面。仿真运行时会显示求解进度条同时对内存的占用会明显上涨。不要急着关界面PowerSI在输出结果前会把频域矩阵汇总、整理成Touchstone文件这个过程有时看起来像卡住了其实是在写文件。完成后进入Result或者Output面板找到S参数结果可以直接看到幅频曲线和相频曲线。导出S参数一般用File → Export → Touchstone注意选择格式是.s2p还是.s4p取决于端口数量PowerSI会自动算出对应端口维度的S参数文件。3.5 S参数曲线的判读数据出来之后真正的分析才开始。S11曲线看的是回波损耗反射越强S11幅度越大。对高速PCB通道来说目标通常是S11在关注频段内低于-10dB做得好的通道能在15GHz内压到-15dB以下。如果S11曲线在某个频点出现一个尖锐的上冲说明这个频率附近存在某处阻抗共振可以去检查过孔stub长度、连接器附近的地参考是否连续。S21曲线看的是插入损耗数值越小负得越多说明损耗越大。S21曲线本来就随着频率升高而下降这是趋肤效应和介质损耗共同作用的结果。如果S21在高频段出现过快的塌陷或者谐振下降说明介质Df设高了或通道上有明显阻抗不连续。判读时把仿真S21和协议规范里的损耗预算做对比比如PCIe Gen4要求参考通道总损耗在特定长度上有上限直接能看出这根走线还有多少余量。这条曲线就是要发给结构、硬件、FPGA的“官方结论”。4. 常见问题与排查技巧实录4.1 导入失败或层叠信息丢失我遇到最多的导入失败九成是因为文件路径里有中文或空格另一半是Allegro版本与PowerSI的兼容问题。PowerSI 2024对较老的.brd文件支持还可以但如果你用的是Allegro 17.x以上保存的二进制格式导入前最好在Allegro里用File → Export → Downrev Design另存一份较低版本。另一个笨办法是把板子里的空网络、孤立焊盘尽量清理干净再导出PowerSI对非功能性铜箔特别敏感导入时报warning可以忽略报error就必须处理否则结果不可信。层叠信息丢失的表现是导入后发现所有介质层厚度都变成默认值或者铜箔厚度全是0。这种情况通常是因为brd文件里的层叠描述用了非标准字段。解决方法是手动在Stack-up里重新赋值或者从原PCB设计文件里导出层叠表在PowerSI里对照填写。如果板上有埋阻层PowerSI不一定能识别需要手动把这些层改为阻抗材料模型否则仿真时整层都会被当成普通介质结果完全不对。建议养成在所有仿真报告里附一份层叠表的习惯方便溯源。4.2 仿真耗时长与内存不足功率越大、频率点越多、模型越精细耗时越长这是必然的。整板级别全波仿真动辄数小时甚至内存直接耗尽崩掉这股压力我深有体会。一个非常好用的技巧是用PowerSI的“部分导入”功能在导入时可以只选择某个区域或某个网络组不需要整板参与求解。比如只关心某两个连接器之间的高速通道就只用Rectangle Region功能框选这个区域物理范围其他部分不建模网格数量可以下降一个量级。内存不足还跟网格剖分策略有关。在求解设置里打开网格控制可以对大平面网格设置最大单元尺寸默认值往往过于保守。好比一间教室你只需要看清每一排座位没必要铺满显微镜级别的网格。对于0.5mm过孔或连接器区域局部细化网格就行电源平面这些大面积区域用较粗网格计算量立刻降下来。线条非常密集的差分对区域把网格最小尺寸改大一点也能明显提速。初次尝试时先跑一个100MHz到5GHz的短扫描完成后再加频率上限是控制风险的好办法。4.3 S参数曲线异常抖动仿真跑完S参数曲线出现锯齿状抖动或者莫名其妙的谐振尖峰这种情况多数不是板子真有那么大问题而是建模细节没抓好。首先检查端口参考地有没有选错如果参考地设在了分离开的地网络比如AGND和GND没连通就相当于把两个地平面之间的窄缝效应引入了模型仿出的S21上会有很多毛刺。其次检查大平面的电源/地过孔孔密度过孔密度不足会导致供电路径在高频段出现谐振S参数曲线也会跟着抖动。还有一种常见情况是频率扫描点太稀疏比如线性扫频只有101个点曲线在高频段的谐振峰会被漏掉变形得像一条锯齿。不要把点数设太少扫频过程中如果频率点跨过了谐振峰曲线可能看起来“丢段”。如果确认模型没问题只是曲线不够平滑可以先查看曲线属性的平滑宽度适度增加平滑因子。但在报告里一定保存原始曲线处理后的曲线只做展示不能当结论。4.4 保姆级避坑清单下面这份清单是我做完多个项目后整理出来的把最容易忽略但影响最大的点浓缩成了一张表直接照做能省掉大部分返工理由。检查项具体动作常见后果文件路径路径和工程名不要使用中文、空格导入失败、报“cannot read database”层叠参数核对所有铜厚、介质厚度、Dk/Df损耗估计偏差曲线失真地网络标记先设置Ground网络再设Power网络端口参考错误、S参数抖动端口位置设在芯片BGA焊盘处不设在连接器附近漏掉通道前端效应频率点数扫频点数不少于500线性/对数选好谐振峰丢失、曲线锯齿网格设置大平面粗网格、小特征局部细化内存溢出、仿真时间爆炸参考地连续检查端口附近地过孔是否足够参考回路谐振出现在曲线里导出格式确认端口数对应的Touchstone版本系统级仿真导入S参数失败这个清单在我手头项目里救过不止一次。特别是“先设地网络再设电源网络”这个顺序很多人不放在心上结果一单仿真跑出来S21在3.5GHz出现一个深度很夸张的下陷排查到最后才发现是GND网络没正确标记PowerSI自动给端口找了一个不存在的回流参考白白浪费了一整天。4.5 仿真结果与实测对不上的排查思路最后一个问题非常实际仿真S参数跟实验室的矢量网络分析仪实测对不上。如果出现这种情况先别怀疑软件精度多数差在三个地方。第一实验室校准的参考面跟你仿真端口的参考面不一定一致探针端的线缆、测试夹具会带来额外损耗比较时要扣除这部分夹具效应。第二PCB加工厂的实际叠层跟设计叠层存在误差介质厚度波动、铜箔粗糙度、阻焊厚度都会造成高频损耗偏差所以生产板仿真时要把加工厂提供的叠层参数回填到模型里。第三实物上的焊盘和过孔不一定跟Gerber完全一致BGA区域扇出的过孔尺寸、背钻深度是否精确都会影响高频匹配。匹配精度上低频段仿测一致性通常在1dB以内高频段受铜箔粗糙度影响比较大可以调整PowerSI材料库里的表面粗糙度模型来校准。这就要求你在建模时保留材料参数的可调空间不要把Df、粗糙度这些写成死值。项目复盘时如果发现实测损耗总比仿真高一点就把粗糙度参数往上调直到曲线贴合后这个模型就成了你这个项目的“标定模板”后面同类板卡的仿真会越用越准。最后再分享一个个人习惯每次做S参数仿真前我都会先把板子上与高速通道无关的测试点、排阻、调试串孔先清掉或设为不建模。这样做不仅是为了跑得快更是为了让结果更接近真实工作状态。信号完整性分析说到底是一个“模型逼近现实”的过程工具再智能判断权都在你手里少看那些花哨的3D色彩图多盯着S参数曲线本身问几个为什么水平自然就上来了。
返回列表