1. 从一块10G差分板翻车说起:S参数在SI验证里的分量
1.1 差分信号真正的优势,是共模抑制而不是“多一根线”
去年我做了一块10Gbps的SerDes通道板,回板测试时眼图一直打不开,误码率居高不下。一开始怀疑是芯片配置问题,后来用近场探头扫了一圈,发现有一对差分走线在换层过孔附近有明显的能量辐射,顺着链路往回查,问题出在过孔反焊盘处的阻抗突变,两根线的回流路径也被相邻地孔打散了。这段问题如果当时在投板前用S参数扫一遍,十分钟就能暴露出来,根本不用等到样机出来再对着示波器发愁。
很多人觉得差分信号就是“两根线一起走”,其实差分的核心价值在于接收端只认两根线的差值,外部噪声同时耦合进来会被当成共模信号直接抵消。正因为这个共模抑制能力,USB、PCIe、CAN、RS485这些高速或长距离接口才会不约而同采用差分结构。但代价是,两根线之间的耦合对称性极其敏感——线宽线距、参考平面完整性、过孔残桩、换层位置,任何一个环节不对称,都会造成差模分量向共模分量转化,最后表现为辐射超标或者眼图劣化。
要抓住这些频率相关的现象,静态量阻抗是不够的。阻抗测试只能看到测试点附近某个频段的等效情况,而一条差分走线在整个传输带宽内的反射、损耗、串扰、模态转换,必须用频域的S参数才能完整描述。S参数在整个信号完整性验证里相当于通用语言:芯片厂商给IBIS模型,里面要配封装S参数;系统级链路仿真,要把PCB走线、连接器、线缆的S参数串起来;哪怕做TDR反推阻抗分布,底层也是S参数经过傅里叶变换得到的。可以说,SI验证的所有环节到最后都会落回S参数。
PowerSI这类基于物理版图的提取工具,在整个流程里承担的是“把真实互连变成数学描述”的角色。版图里每一段走线、每一个过孔、每一层平面的耦合,都被场求解器折算成多端口的S参数。相比手工搭等效电路或者用2D截面估算,这种提取方式的优势在于真实版图长什么样就仿真什么,不需要人为简化过多细节,差分过孔、缝隙跨越、平面谐振这些高频效应都能体现出来。
1.2 为什么说S参数比“测阻抗”多看到一个维度
阻抗测试一般用TDR时域反射仪,或者用网分做单频点测量。它能告诉你“某一段的特征阻抗大概是多少”,但给不出整条链路的频率响应。举个直观例子,一条走线在1GHz时回波损耗可能很好,到5GHz时因为某个过孔电容效应突然劣化,静态阻抗测试根本发现不了。而S参数天生就是按频率扫描的,每一个频点都能看到反射和传输情况。做差分信号完整性验证,基本要求就是覆盖信号工作频带及谐波范围的S参数数据。
从S参数里还能反推很多东西。比如根据SDD11可以换算出差分阻抗随频率的变化趋势,虽然严格说是频域阻抗,但已经能反映过孔换层、线宽变化带来的阻抗不连续。再比如通过逆傅里叶变换把S参数转成TDR曲线,就能看到整条链路上哪个位置阻抗突变最大,这对定位问题太有用了。后面我会在指标解读那节详细讲这些应用场景。
2. PowerSI提取差分S参数前的核心设置
2.1 叠层材料参数:Dk、Df和铜箔粗糙度一个都不能省
真正开始提取S参数之前,最容易被跳过但又最影响结果的就是叠层和材料参数。PowerSI做场求解时,介质层厚度、介电常数Dk、损耗角正切Df直接决定传输线的特征阻抗和插入损耗曲线。如果叠层厚度差个10%,差分阻抗可能差出七八欧,S参数结果也就失真了。
这里特别提醒铜箔粗糙度。很多板厂的叠层表里只给Dk和Df,不提铜箔粗糙度,但高速信号在10GHz以上对铜箔表面粗糙度非常敏感。同样的走线,光滑铜箔和标准HTE铜箔的插入损耗在高频段差距可以超过0.5dB每英寸。PowerSI里一般支持设置表面粗糙度模型,实际项目中至少要把铜箔类型按板厂实际用料填进去,哪怕取典型值也比默认“光滑”要靠谱得多。
2.2 参考平面与回流路径:确保地平面不是“马赛克”
差分信号的返回电流并不完全只在差分对内部流动,还有相当一部分走参考平面。如果在提取S参数时没有正确设置参考平面网络,或者版图里地平面存在大面积挖空、分割槽,仿真器看到的回流路径就和实际电路完全不一样,提取出来的S参数自然失真。
在PowerSI里,一般需要指定一个或几个电源地网络作为参考。常见做法是把所有地网络和主要电源网络都设为参考网络,让求解器在提取过程中自动考虑回流路径。如果只把某一块铺铜设成参考,而这条差分线实际跨过了一个被切断的平面区域,仿真结果就会出现“这条路根本不通”的情况,和你拿万用表量地不通是一个道理。
2.3 差分端口定义:极性错了后面全白做
差分S参数提取的核心操作是端口定义。所谓端口,就是信号进入和离开仿真模型的“激励点”。在PowerSI里定义差分端口,本质上是把两个单端端口组合成一个差分端口对,一个为正、一个为负。
操作上需要注意三点。第一,正负极性必须和芯片引脚的实际逻辑一致,发射端的正端接到差分对的正线,接收端的正端也要对应接到对方的正线,如果某一侧极性接反,SDD21会直接塌下去,看起来像链路断裂。第二,端口位置要尽可能贴近实际芯片引脚焊盘,不要留出一段未仿真的走线头,否则会把多余的寄生电容算进去。第三,差分对的两根线不要分别定义成两个独立的单端S参数再在外部做混合模式转换,最好在工具里直接定义成差分端口组,这样数据管理方便,也不容易搞错极性。
2.4 扫描频率范围和求解精度设置
频率范围怎么取,要看信号速率。经验公式是最大频率至少取到信号的一倍波特率,再留出余量至2~3倍更好。比如10Gbps的NRZ信号,波特率是10Gbaud,基波频率5GHz,但要让眼图和串扰结果可信,S参数至少扫到20GHz,最好到30GHz。频率上限太低,看不到过孔和高次模式的影响,下限则要从低频开始,最好覆盖到几十kHz甚至直流附近,方便后面做TDR变换和瞬态仿真时保持因果性。
PowerSI里通常有快速扫描和自适应扫描等模式。快速扫描适合前期方案阶段快速迭代,精度要求不高;自适应扫描会在S参数变化剧烈的地方自动加密频点,适合最终signoff验证。如果机器性能允许,我一般直接用自适应扫描,跑出来的曲线更平滑,省得后面看到尖刺还要怀疑是网格问题。
3. 跑通一条差分对,从版图到S参数文件全流程
3.1 实际操作步骤串联
一次完整的差分S参数提取流程,按下面的顺序做基本不会乱:
- 导入版图文件,确认层叠信息完整,铜箔、介质、阻焊这些参数都填好。
- 检查网络列表,把要提取的差分对找出来,可以用网络名称过滤,也可以直接高亮一对线。
- 以“选择性提取”方式只保留目标差分对及其邻近耦合网络,把无关的电源网络、低速信号全部屏蔽或移除。这样求解规模小不少,仿真速度快很多,而且结果更聚焦。
- 创建差分端口。手动模式下,在发送端和接收端各放一对正负端子,组合成差分端口。如果链路有中间走线分支,也要在分支点加端口。
- 设置频率范围和扫描方式。
- 运行提取。跑完后先看有没有警告,特别是有没有“端口未连接到导电网络”或者“参考网络断连”这类错误。
- 检查初步结果,比如SDD21曲线是否平滑、SDD11是否在合理范围内。
- 导出S参数文件,格式可以是标准的Touchstone文件,差分4端口一般存成.s4p。
上面这串步骤看着不复杂,但每一步都有细节。比如导入版图后第一件事不是急着选网络,而是先把层叠厚度和材料参数核对一遍。我见过有人拿着默认的FR4参数去仿真10GHz信号,Dk填的是3.0而不是实际的3.6,阻抗全偏了,后面所有结果都不可信。
3.2 选择性提取和全板提取的取舍
PowerSI可以整板提取,也可以只提取一部分网络。全板提取的好处是完整考虑所有耦合和平面效应,但计算量巨大,跑一次可能要好几个小时,而且结果文件动辄上GB,对后续处理和阅读都是负担。选择性提取只保留目标信号和它周围的敏感区域,仿真速度快一个数量级,缺点是如果没有把关键耦合对象包进来,比如相邻一对高速差分线会影响串扰,就会漏掉这部分效应。
对初学者我的建议是:先做单对走线的选择性提取,把流程和指标解读跑通,再逐步扩大范围。做serdes通道时至少要把同层相邻的差分对一起放进提取范围,否则串扰分析无从谈起。做电源完整性或全板谐振分析时,才值得跑全板提取。
3.3 频率点和带宽的选择逻辑
有人喜欢直接拍一个频率范围,比如“0到20GHz,步进100MHz”。但更好的做法是根据信号的上升沿来估计有效带宽。一个简单近似是BW约等于0.35/Tr,Tr是信号的上升时间。如果差分信号上升沿是35ps,那么有效带宽大约10GHz,再取2倍余量到20GHz就够了。这比随便拍脑袋要科学得多。
扫描步进方面,在关键频段可以适当加密。比如看回波损耗时,谐振点的窄带凹陷在稀疏频点上很容易被漏掉,自适应扫描就是为此设计的。如果只有手动等间距扫描,我宁愿把频点设密一点,哪怕多花点计算时间,也不要在结果里看到莫名其妙的跳变才后悔。
3.4 如何判断一次提取是否可靠
拿到S参数结果不要急着导出去,先做两个快速自检。一个是看SDD21在整个频段是否呈现单调衰减趋势,如果出现异常上扬,通常意味着模型存在寄生谐振或者端口设置有问题。另一个是看低频段SDD11是否趋近于0 dB(即反射极小),如果低频反射就很大,多半是端口或者参考网络设置不对。
另外PowerSI里一般会输出每次求解的误差估计,或者提示某个频点不收敛。不要忽略这些警告,高频段网格粗了会直接影响过孔区域的提取精度。遇到这种情况,先加密该区域的网格再重跑,而不是急着用现有文件。
4. 把S参数变成BBS模型:宽带SPICE的生成与应用
4.1 BBS模型解决了S参数的哪个痛点
为什么有了S参数还要生成BBS模型?这是很多工程师的疑问。S参数本质是频域数据,把它用到时域仿真工具里,比如ADS里做瞬态眼图仿真,就要做频域到频时域的转换,也就是傅里叶反变换。这个过程中,如果S参数在某个频点不光滑、存在非因果性或者无缘性,瞬态仿真就会不收敛,或者出现“仿真开始前自己震荡起来”这种让人抓狂的现象。
BBS模型,也就是宽带SPICE模型,解决的问题正是这个。它不是直接丢一堆频点,而是用一个由RLC元件和无源元器件组成的等效电路网表去拟合原始S参数行为。由于电路天然是因果和稳定的,把它放进瞬态仿真器里,不仅收敛性好,仿真速度也比直接处理原始S参数快许多。
做个类比,S参数像是给了一堆“测量照片”,BBS模型则是根据照片重建了一个“等效实体机构”。你在电路仿真里摆放这个机构,拧起来的手感和真实器件更接近,而且不会因为照片分辨率不够而卡壳。
4.2 BBS模型的生成步骤
在PowerSI相关的模型生成工具里,从S参数生成BBS模型的操作一般包含这样几个环节:
- 把上一步导出的Touchstone S参数文件作为输入。
- 设定目标带宽,通常和S参数的带宽一致,也可以按下游仿真需要设置。
- 选择模型精度和阶数。阶数越高,拟合精度越好,但生成出来的网表越大,仿真速度越慢。一般从默认阶数开始,如果拟合误差大再逐步提高。
- 执行拟合,查看误差报告。重点检查SDD11和SDD21在通带内的拟合误差是否小于某个阈值,比如1%。
- 导出BBS模型文件,常见的有.bbs格式或者可以直接复制的SPICE网表格式。
需要提醒的是,BBS模型生成时要注意端口顺序和S参数保持一致。如果4端口S参数对应的是TX正、TX负、RX正、RX负,生成的BBS模型也必须按这个顺序接进电路仿真器,否则仿真结果完全不对,而且很难排查。
4.3 把BBS模型接入整条SerDes链路
有了BBS模型,下游的链路仿真就顺理成章了。通常我们会把发送端芯片的IBIS模型、封装S参数、板上走线的BBS模型、连接器S参数、接收端封装和IBIS模型串联起来,搭成一条完整的SerDes链路。链路仿真里可以跑眼图、抖动、误码率,还能做参数扫描,看看不同均衡设置下的裕量。
BBS模型在这条链里承担“真实物理走线”的角色。相比直接放S参数元件,BBS的收敛性更好,跑批量参数扫描时尤其明显。之前我跑一个链路抖动仿真,直接放S参数元件经常遇到“奇异点导致不收敛”,换成分段BBS模型之后,同样的仿真一遍跑通,速度还快了近一倍。
4.4 S参数和BBS模型的分工
| 对比维度 | 原始S参数 | BBS模型 |
|---|---|---|
| 数据本质 | 各频点复数值数组 | 等效电路网表 |
| 时域仿真收敛性 | 较差,受频点密度影响大 | 较好,天然无源稳定 |
| 仿真速度 | 高频点时较慢 | 一般更快 |
| 可编辑性 | 只能整体替换 | 可以局部调整电路参数 |
| 适用场景 | 频域指标分析、TDR反推 | 系统级时域仿真、眼图抖动 |
规划验证流程时,通常频域分析用S参数,时域系统仿真用BBS模型,两者互补而不是互相替代。
5. 实战复盘:三个高频翻车点与完整排查链路
5.1 翻车点一:端口极性不一致,SDD21出现“断崖”
现象:提取出来的SDD21在很低的频率就掉到负几十分贝,看起来像链路断开了一样,但用万用表量走线是通的。
排查链路:先检查差分端口极性。PowerSI里每个差分端口由正负两个端子组成,如果发送端按正常极性定义,接收端却反了,那差模信号在接收端正好被抵消,SDD21自然上不去。这个问题在手工创建端口时特别容易发生,尤其是接收端信号序没看清芯片手册的时候。
处理方式:把接收端差分端口的两个端子交换,重新仿真。如果SDD21恢复平滑下降,就证明根源是极性。为了避免这类低级错误,我现在的习惯是创建端口时就在网络图上把正负端子高亮成不同颜色并逐一核对,不要等仿真完再回头找原因。
5.2 翻车点二:参考平面被分割,返回电流绕远路
现象:SDD11在某个频段出现异常谐振尖峰,同时SDD21也有波动。
排查链路:第一反应不是急着加密网格,而是先看这条差分线的整条路径是否完整覆盖在同一参考平面上。打开版图查看平面层,很可能是某块地平面被其他走线的反焊盘挖成一个不连通的“孤岛”,返回电流只能绕到更远处回流,相当于在信号路径上多了一段寄生电感,谐振点就出现了。
处理方式:把被切断的平面区域重新连通,或者确保过孔周围有足够的地孔缝合。改完平面后重新提取,谐振消失。这个坑在多层板中非常普遍,特别是BGA出线区域,因为扇出密度高,地平面经常被切割得七零八落。
5.3 翻车点三:频率上限不够,眼图仿真“最后一段”失真
现象:频域指标看着还行,但用BBS模型做10Gbps眼图仿真时,眼图张开度明显偏小,而且和实测对不上。
排查链路:检查S参数的频域范围。如果只扫到10GHz就停了,而信号本身有效带宽已经到14GHz以上,那么BBS模型在带宽外是外推出来的,拟合精度没有保证,眼图仿真时高频分量没有被正确建模,结果自然偏保守。
处理方式:把S参数提取上限提高到信号波特率的2~3倍,重新生成BBS模型。改完后眼图比之前更接近实测。从那以后,我在设置频率范围时给自己定了一个规矩:至少取波特率的2.5倍,宁多勿少。
5.4 过孔Stub和焊盘切除,两条容易被忽略的支线
除了上面三个典型问题,还有一些看起来不起眼但影响不小的细节。差分过孔如果在高速层穿越到内层后还留下长长一段到背钻不彻底的残桩,在10GHz以上会产生明显的谐振凹陷,这对S参数来说相当于在链路上多了一个“小坑”。仿真前先确认过孔残桩长度,能背钻就背钻。
另一个是焊盘切除。有些内层走线穿过未连接层的焊盘时,如果该焊盘没有做反焊盘处理,金属残盘会形成额外电容,造成阻抗不连续。PowerSI提取时会把版图上真实存在的东西都算进去,所以如果想让仿真结果好看,先得让版图本身干净。这个逻辑反过来也成立——如果S参数里看到莫名的高频谐振,别急着怀疑软件,先回去查版图,多半是物理上有什么东西没处理干净。
我现在做新项目,只要叠层定下来,第一件事就是把关键差分对单独拎出来,按这套流程跑一遍完整验证,形成标准操作。看着像是多花了半天时间,但换来的却是后面省下几周调试时间。那次10Gbps翻车的板子,后来我重新提取S参数、生成BBS模型,在仿真里精准复现了现场故障点,然后再对照版图修改,一次改板就通过了。信号完整性这种事情,等板子贴完芯片再慌,成本就完全不一样了。