ARTICLE DETAIL

资讯详情

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

基于Ansys SIwave的差分线S参数提取与仿真优化实战

基于Ansys SIwave的差分线S参数提取与仿真优化实战 做高速PCB设计这行的兄弟碰到高速接口信号质量差、眼图张不开、EMC过不了的情况多半逃不开一个动作——回头查传输线的设计。代码调不出奇效、原理图也没多少空间可以抠的时候定量地把走线“体检”一遍才是正道。我用Ansys SIwave做差分线S参数提取和仿真优化有几年了这工具在板级信号完整性分析里算得上首选。今天这篇就把整个流程、里面的关键细节和踩过的坑掰开揉碎聊一聊给正在搞差分线仿真优化的同行一个参考。1. 项目梳理与SIwave选型逻辑1.1 为什么要专门做差分线S参数仿真现在的高速接口从LVDS、USB、PCIe到HDMI、SATA基本都是差分传输。差分信号天生抗干扰、EMI辐射小、电平摆幅低这些都是老生常谈。但在真实PCB上差分线能保持理想对称结构的情况少之又少。线宽在制造中有公差、层叠可能不对称、参考平面出现开窗或者过孔反焊盘尺寸不一致这些都会破坏差分对的对称性。一旦对称性出问题一部分差模信号就会转换成共模信号。共模分量在S参数里叫模式转换这种转换带来的麻烦比单纯的回损插损恶化更隐蔽。如果你只看S11和S21可能觉得链路一切正常但共模分量恰恰是超标的辐射源EMI测试时会教做人。更现实的是速率持续往上走PCIe 5.0单通道到32GbpsUSB4到40Gbps链路损耗预算紧张到零点几个dB都要扣着算。S参数提取在设计阶段预判“这条差分线到底能不能用”几乎是唯一靠谱的办法。所以做差分线S参数仿真不是为了凑一份评审报告而是为了在产品量产之前把高频风险提前拆掉。1.2 SIwave的定位与选型思考提到S参数仿真工程师脑子里会蹦出一堆工具HFSS、Q3D、SIwave还有各家PCB软件自带的插件。这些工具各有各的地盘。HFSS是三维全波电磁仿真精度高适合对连接器、过孔、封装互连这种局部精细结构做建模分析缺点是模型大了以后计算资源需求非常夸张整板仿真基本跑不动。Q3D更偏寄生参数提取做电容电感矩阵比较方便但频变效应处理不够细。SIwave不一样它做的是板级信号完整性与电源完整性仿真不需要把整块PCB建成无数细节的3D模型而是基于层叠结构和平面结构做电磁场求解。对于差分线链路、平面谐振、过孔阵列这类问题SIwave提取S参数的速度和精度平衡得很好。我的选型习惯是整板级差分链路、电源平面谐振分析、串扰评估用SIwave单颗过孔的特殊结构、连接器区域、非规则三维互连结构用HFSS精细建模而一个复杂的差分链路可以在SIwave里跑完板级再把关键过孔区域提取出来交给HFSS做精细化验证两边S参数通过Touchstone文件做级联。这套组合拳在工程上效率很高。另外新版本的Ansys Electronics Desktop把SIwave和HFSS的交互做得更顺滑了打开同一个项目直接调HFSS求解器省了不少来回导数据的功夫。1.3 模型导入与叠层校准仿真准不准的命门从Altium Designer导出PCB到SIwave我一般走ODB格式也可以用Ansys的Ansoft格式。导入之后的第一件事不是急着仿真而是检查叠层。SIwave里叠层材料参数如果设置不对后面所有结果都是空中楼阁。叠层里最关键的两个参数是介电常数Dk和损耗正切Df。Dk影响走线阻抗和波长Df直接影响高频损耗也就是S21的斜率。很多工程师喜欢直接把PCB厂家给的Dk和Df填进去但这个操作有坑。厂家手册里的Dk往往是1MHz或者1GHz条件下用谐振法测的到了10GHz甚至更高频段材料的频变特性会导致实际Dk和Df都与手册值有不少偏差。我在实际项目中吃过这个亏——仿真的S21在10GHz处比实测低快2dB后来用网分实测数据把Df反推修正以后才对上。所以更可靠的做法是如果手上有阻抗测试条或网分实测数据优先用实测S参数反推叠层参数再把修正后的Dk/Df填回SIwave。没有实测条件时至少在允许范围内做Dk±5%、Df±20%的敏感性分析给自己留出设计余量。除了板材的Dk和Df铜箔表面粗糙度对高频损耗的影响也绝对不能忽视。10GHz以上趋肤效应把电流赶到铜箔表面粗糙的表面相当于额外增加了损耗路径。SIwave里提供了铜箔粗糙度模型可以针对内层和外层设置不同的粗糙度参数。如果不设置这一项高频段S21的仿真值会比实际偏乐观误差随频率升高越来越大。提示叠层参数校准是差分线S参数仿真里最花时间、但价值最大的一步。一次准确的反推能让你后续所有板子仿真都受益。2. 差分线S参数提取实操全流程2.1 端口设置选对端口是成功的一半端口设置对S参数结果的影响往往比网格设置还大。SIwave里主要用两类端口Wave Port和Lumped Port。Wave Port适合从板边沿引入信号的场景比如连接器在板边、需要把端口定义在规则截面上它能直接模拟外部激励。但Wave Port对端口处的截面形状要求比较高板级仿真里不是每条走线都方便拉一个标准化截面因此用得相对少。Lumped Port是一个集总端口直接定义在某一点适合走线内部的激励激励。差分线仿真我默认选Lumped Port然后在端口编辑器里把两个单端端口合并成一个差分端口对。合并差分端口的时候正负极性一定要检查。很多新手在这里翻车端口自动命名的时候极性乱排仿真结果里SDD21和SCC21对调查半天查不出原因。设置完成之后要单独确认一下差分对的参考平面。如果端口处的参考平面有缺口、被其他走线穿过或者参考地平面不完整端口本身就会引入不该有的模式转换。我的习惯是端口尽量设置在走线相对平直、远离过孔、附近没有同层干扰线的区域这能让S参数结果更干净。2.2 网格设置与求解频率范围网格密度直接决定仿真精度和计算资源消耗之间的平衡。SIwave的自适应网格能覆盖大部分常规情况但差分线这种长条形的细走线我还是建议手动对关注的区域做局部加密。特别是差分线的边缘、过孔附近的铜箔、参考平面的缝隙处这些位置往往是电磁场集中变化的地方。网格太粗的话阻抗不连续处的谐振不会被正确捕捉S11曲线就会出现比较明显的误差。怎么判断网格够不够细经验做法是仿真完以后看关注区域的网格单元尺寸最高仿真频率对应的电磁波波长至少要有10到20个网格单元。举个例子如果要仿真到25GHz在FR4材料里波长大约6mm网格尺寸最好控制在0.3mm以内也就是300微米级别。差分线线宽一般就0.1到0.2mm所以网格通常要取到100微米量级才能看得清细节。扫频上限怎么定如果信号速率是10Gbps关注到5次谐波扫频上限至少要覆盖到25GHz。上限设太低看不到高频段的谐振峰设太高网格负担和求解时间成倍增加。建议先用较宽的扫频范围和插值算法跑一遍粗扫定位到有问题的频段后再做精细化扫描这样既省时间又不会漏掉关键频点。2.3 去嵌入与参考面校准S参数提取出来以后要去掉端口本身带来的寄生效应才能得到真实链路的行为。SIwave里有一个去嵌入的过程说白了就是把端口位置人为引入的那一段额外延时和电抗从结果里“剪”掉。如果不去嵌S11曲线上会多出一些由端口造成的相位偏移和纹波在低频段影响不明显但到了高频段会干扰对真实回波损耗的判断。具体操作上SIwave可以用“端口延时的设定”来做参考面校准也可以在设置差分端口类型时选择GCPW等更贴近实际情况的端口模型。如果项目里要用S参数结果和实测做对比那去嵌入这一步必须认真做否则仿真和实测很难对上。还有一个容易忽略的点如果被测板需要接SMA头再上网分仿真模型里最好把SMA连接器的3D模型也加进去。连接器的寄生对高频段谐振影响非常大我见过不少案例是仿真和实测在5GHz以下对得很好再往上就分叉加上连接器模型以后结果才收敛。2.4 求解器设置与资源管理SIwave的求解器配置相对HFSS要轻量很多但也不能完全放养。求解的时候把多核并行选项打开、合理设置内存上限能够明显缩短求解时间。我习惯在运行前先做一次“裁剪”只保留差分链路以及它周围必要的地过孔和参考平面其余无关的布线、器件、平面全部裁掉或者设为无效。整板仿真裁完以后速度能快好几倍而且结果几乎不变。有一次我仿真一块12层服务器主板整板直接跑四五个小时才跑完一轮S参数效率太低了。后来把链路周围2毫米内的对象全部保留其余全干掉四十分钟就跑完一组差分S参数结果和整板仿真对比偏差很小。从那以后除非是做整板谐振和EMI分析否则我都先把模型裁干净再说。做参数扫描优化的时候这个习惯能省下的时间非常可观。3. 结果判读与优化技巧3.1 从S参数曲线里看出门道S参数结果拿到手第一眼先看关键指标。S11是回波损耗反映的是差分阻抗匹配程度。理想情况下S11越负越好通常工程要求全频段低于-15dB高速率协议里有更严格的要求。如果S11在某个频点明显抬升说明那个频率附近存在阻抗突变点需要回TDR或几何模型里定位。S21是插入损耗体现整条链路的损耗情况Dk/Df值偏高、走线过长、过孔数量多S21都会掉得厉害。不同协议对S21的预算要求不一样PCIe 5.0对差分走线的总损耗预算是相当紧张的设计时基本上要按dB/mm这个级别去估算。我最推荐的功能其实是SIwave里的TDR阻抗曲线。S参数曲线判断“哪里有异常”可以但要精确定位“异常出在哪个位置”TDR直观得多。TDR曲线能看出整条差分链路上的阻抗变化线宽突变、过孔stub、参考平面缺口都会在TDR曲线上形成凸起或者凹陷。根据时间轴乘以传播速度就能换算成距离直接告诉你去PCB哪个位置查问题。我在实际项目中经常靠TDR反向定位到某一个过孔的反焊盘尺寸不对或者在某个拐角处线宽被改窄了这些靠眼睛在PCB图上找得找半天。这里补充一个差分阻抗的公式概念差分阻抗Zdiff和单端阻抗Z0、耦合系数k的关系是Zdiff 2 × Z0 × (1 − k)。耦合越强线距越小k越大Zdiff越低。很多设计目标要求匹配100Ω差分阻抗实际工程里不会用公式去手算得太细基本都是靠场仿真微调线宽和线距SIwave里跑一个TDR就能看到Zdiff是否在100Ω±10%的范围内。3.2 模式转换参数容易被忽略的EMI隐患混合模式S参数会把差分端口拆成四组SDD、SCC、SDC、SCD。SDD21是插损SDC21是差模到共模的转换项SCC21是共模传输SCD21是共模转差模。做差分线S参数提取时很多人只盯着SDD21和S11模式转换项基本不看。这个习惯我强烈建议改掉。SDC21数值越大说明差分链路的不对称性越严重产生的共模辐射越多。EMI测试超标的时候回头查SDC21往往能直接找到问题链路。举个例子我之前处理过一个HDMI接口的整改项目辐射频点集中在2.4GHz附近常规手段查了好几轮没结果。后来把HDMI差分线在SIwave里跑了一遍混合模式S参数发现SDC21在2.4GHz有非常明显的尖峰顺着链路定位到一对差分线在换层处旁边有一颗走线跨过参考平面槽回流路径不好还破坏了对称性。调整了换层过孔附近的地过孔和走线间距以后SDC21降了十来个dB辐射频点也压下去了。这种问题单看SDD21和S11完全发现不了。3.3 优化手段从参数调整到结构改动差分线S参数不达标的时候优化手段可以从几个方向展开。线宽和线距如果TDR显示阻抗整体偏高就适当加宽线宽如果偏低就收窄线宽。线距影响耦合系数需要平衡阻抗和串扰。调整的时候注意保持差分对内部的等长和对称性。过孔处理过孔对差分信号的影响在高频尤其明显。反焊盘尺寸太小过孔产生的寄生电容就会偏大S11上会出现谐振毛刺。如果过孔是盲孔或者埋孔设计上可能还好如果是通孔多余的stub会在高频形成谐振腔效应。解决手段是加背钻back drilling把过孔多余的铜柱钻掉差分S参数在10GHz以上的表现会有明显改善。参考平面和回流路径差分链路下方如果参考平面不连续回流电流就得绕路等效于在信号路径上串联了一个电感。对差分线来说最好保证整条链路下方的参考地平面完整换层处搭配足够的地过孔。等长蛇形线高速总线做等长补偿的时候蛇形线区域如果间距过近相邻线段之间耦合加强会让局部阻抗发生变化S参数也会受影响。走线尽量采用accordion样式蛇形线之间的间距保持在3倍线宽以上。3.4 基于S参数迭代优化与系统级验证S参数提取本身不是终点优化完的S参数最终要用于系统级仿真验证。SIwave可以直接把S参数导出成Touchstone格式.sNp文件这个文件我建议养成存档习惯。后续把sNp文件导入到链路仿真工具里配合IBIS-AMI模型跑眼图和BER仿真能评估真实协议下的信号裕量。很多工程师把S参数仿真完就停了实际上如果设计的是高速SerDes至少做一次带均衡器模型的全链路眼图评估才知道现在的S参数余量够不够。参数优化迭代时要结合PCB制造工艺公差做敏感性分析。比如线宽按±10%、板材Dk按±5%变化看S11和S21波动多少。这种分析看起来多花几次仿真时间但对量产良率影响非常大。我见过一个案子仿真优化时刚好卡在协议规定的临界值上结果板材批次Dk一波动量产板S参数直接超标最后只能改版费时费力。提前把敏感性分析做了就能在设计阶段把中间值调得离限值远一点。4. 常见问题与排查技巧实录4.1 License和启动报错最影响进度的一类坑仿真本身没跑起来就卡在环境问题上这可能是工程师最无奈的场景。SIwave相关的报错里出现频率最高的就是License问题。比如弹窗提示“Connection timed out while reading data……”这种多半是许可证服务进程没启动或者网络原因导致客户端连不上服务器。另外还有一种常见提示是failover feature {product} is not available通常在电脑主机名改变、网卡MAC地址变更之后出现因为许可证文件里的HostID和当前机器对不上。还有一个经典报错是“启动求解器模块时出错”有时候和工作目录路径里有中文或空格有关有时候是杀毒软件把求解器进程给拦了。这类环境问题基本都有固定的排查思路按顺序走最快。先确认许可证服务启动状态再检查许可证文件中记录的HostID和本机是否一致然后试着以管理员身份启动Electronics Desktop或License Manager。安装路径尽量不要出现中文和空格更不要装在系统盘的“Program Files”下被权限卡脖子。还有一个硬技巧重装Ansys前先把旧版本的License服务完全卸载并清理干净注册表残留否则新旧版本打架能把人搞崩溃。4.2 仿真速度慢或者内存爆掉SIwave仿真慢大多数不是软件本身的问题而是模型和求解设置不够收敛。第一类元凶是网格过度细分或者自适应网格在某个局部区域不断细化也无法收敛导致网格数量爆炸式增长。第二类是扫频范围设置过宽且点数过密尤其用离散扫频的时候频率点一多直接干到几十小时跑不完。第三类是整板对象太多板上的器件、平面、走线全都在求解域里。处理办法也是有套路的。第一优先做模型裁剪只保留链路实际经过的走线、过孔和附近参考平面。第二用插值扫频代替离散扫频插值法能在保证精度的同时大幅减少计算量。第三对不关心的区域把网格锁到较粗级别用局部网格细化的方式聚焦到关键区域。如果就是要跑宽频频段先粗扫一遍找出关键频点再针对性细化。4.3 S参数曲线出现异常抖动或者非物理结果S参数曲线应该平滑连续如果出现锯齿状跳变或者不自然的毛刺优先怀疑频率步长是否足够。插值扫描时如果误差容限设置太松曲线就会在谐振点附近出现波动。另外端口设置不合理也会引入非物理的模式比如差分端口合并极性不对或者端口参考地选择错误会导致结果里混入虚假的模式分量。还有一个被很多人忽略的点仿真模型里如果有未正确去除的电源模块、晶振、分立器件等有源或者无源器件它们的寄生参数会叠加到S参数上导致曲线出现吸收峰。如果是整板仿真拿到S参数前要把对高频链路影响无关的器件剔除掉或者至少在判读时识别出哪些谐振是真实PCB结构产生的哪些是器件模型带来的。4.4 仿真结果和实测对不上的排查思路仿真和实测对不上是最考验经验的部分。最直接的原因是叠层参数不准Dk和Df偏差导致损耗曲线斜率不一致。其次是铜箔粗糙度没设置高频段插损仿真会比实测乐观。还有一个常见问题是被测板上的阻焊层影响没有建模。很多人觉得阻焊层对差分线影响不大但频率超过10GHz以后阻焊层的介电损耗是不可忽略的尤其是绿油的Df往往比板材还差。排查思路建议是从低频到高频逐步比对找出分叉的频点。如果低频对得好、高频整体偏离优先怀疑材料参数和铜箔粗糙度。如果高S11曲线出现频移优先怀疑Dk设置偏高偏低了。更高阶的做法是用一组实测S参数反推修正叠层参数也就是“曲线拟合法”这需要实测数据质量足够好。只要把这一步校准到位后续同一种板材的新项目仿真准确度能提升一整个档次。写到这自己在SIwave里做差分S参数提取和优化时经常踩的坑基本都梳理完了。回头想差分线S参数仿真其实没有太多玄学最关键的还是叠层校准、端口设置这两个前期动作。这两步做扎实了后续优化迭代基本不会跑偏。我个人的体会是一定要抽时间做一次仿真和实测的对比把板材的Dk和Df参数反推准确。一旦校准好了后续同类板材的板子再建工程S参数仿真的可信度就立起来了。还有一个习惯了顺手分享给大家每一轮优化跑完把S参数结果导出成sNp文件备份并记录当时的叠层参数、线宽线距、过孔设置这些关键信息。下次改版或复盘时直接翻存档对比效率和准确性都要高很多。
返回列表