做高速板子的人,谁没被“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走电源。板材用的FR4,Dk在1GHz时约4.2,Df约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与TDR
S参数跑完,后处理里第一时间看四条曲线: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,分别在两个工具里做眼图仿真,对比眼高、眼宽和抖动指标,用来评估“提取-仿真”整条链路的一致性。真做下来会发现很多小细节,比如端口参考地选取对眼图的影响比你想象的更大。感兴趣的话,下一轮可以单独聊聊这套眼图对比流程。