ARTICLE DETAIL

资讯详情

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

从.brd到S参数提取:PowerSI仿真避坑指南与完整流程

从.brd到S参数提取:PowerSI仿真避坑指南与完整流程 如果说画板是体力活儿那从 .brd 里把 S 参数提取出来就是一场和“默认设置”的战争。很多工程师第一次把 Cadence Allegro 的版图文件丢进 Sigrity PowerSI点完 Open 之后不是报错、就是仿真结果形态诡异——明明叠层、走线、过孔都在出来的 S11 却像一碗烧糊的粥。这篇文章就是我把自己从几次整板提取里踩出来的坑、以及最后固定下来的完整流程掰开揉碎写给你看。不管你是刚开始接触 SI/PI 仿真的硬件工程师还是已经做过几轮 S 参数提取但总被结果“带偏”的板级设计人员这里面的东西都应该能帮上忙。PowerSI 做 S 参数提取这件事门槛其实不在软件操作本身而在于它之前和之后的各个环节。文件版本、铜皮状态、叠层参数、模型赋值、端口位置、甚至一个中文路径都可能让仿真结果变得完全不可信。下面我按实际项目推进的顺序把每一个容易翻车的点都拉出来过一遍。1. 为什么 .brd 文件到了 PowerSI 里经常“见光死”1.1 版本不对口文件根本打不开Cadence 工具链版本太多了。Allegro 17.2、17.4 对应 Sigrity 可能是 2019、2021、2023 等PowerSI 不是所有版本都能打开所有版本的 brd。我自己踩过的17.4 的板子丢给只有 Sigrity 2019 的机器打开直接提示文件版本过新。对策分几步项目开始前就统一团队内部的 Cadence 版本连同 Sigrity 版本一起固定下来签入版本管理。如果对方给你的是新版本文件你可以在新版本的 Allegro 里 File Save a Copy As把文件另存为 16.6 格式注意高版本默认不开放降级保存需要先在 User Preferences 里打开允许 downlevel 的开关use_legacy_downlevel_save。不要试图让 PowerSI 去“猜”旧格式旧格式反而容易丢失新特性比如某些高版本里新类型过孔或者嵌入走线结构。还有一个热词提到的高频问题“allegro 17.2 版本软件打开 brd 文件时没有弹出 allegro pcb designer product choice”。这个弹窗本身是在选择你要使用 PCB Designer 的哪个产品模块和 PowerSI 并没有直接关系。如果它不出现通常是你之前勾了“Don‘t show this dialog again”或者 License 授权方式变了。恢复办法是在 User Preferences 里重置对应的dont_ask开关或者在开始菜单重新运行产品选择器。很多人因为“打不开 brd”误以为是仿真工具坏了顺手把 PowerSI 重装一遍这就太冤枉了。1.2 DBDoctor 决定 PowerSI 的第一印象Allegro 的文件在长期编辑、拆分、复用后数据库里会有大量悬空走线、未更新铜皮、无效 Symbol。直接喂给 PowerSI轻则导入后少铜皮重则程序崩溃。业内比较通用的共识是在转给任何第三方工具前先跑一次 Database Check也就是 DBDoctor。DBDoctor 怎么跑打开 Allegro PCB Editor在 File Properties 里有 Database Check 按钮也可以在命令窗口直接运行dbdoctor。勾上所有检查项特别是 Dangling Lines、Off-grid 之类。跑完它会告诉你有没有 Error有 Error 就先修修完再存盘。很多人省这 30 秒结果导入 PowerSI 后看到一屏错误又回头检查浪费的时间反而更多。文件完整性是 S 参数提取的地基这一关不过后面所有步骤都是空中楼阁。1.3 别碰的弯路ODBC 与 AD 格式互转热词里“cadence 怎么设置 odbc 数据源”和“cadence 的 pcb 如何转换为 ad 的 pcb 格式”出现的频率不低这两个问题放在 PowerSI 的语境下特别容易误导新人。ODBC 数据源是 Capture CIS 统一管理元件库时连接数据库用的跟 PowerSI 的 S 参数提取没有关系。很多人在安装完 Cadence 后看到 ODBC 相关提示以为不配置就不能仿真其实可以放心跳过。如果你确实需要 CIS 的数据库功能才去控制面板里建系统 DSN选择对应的数据库驱动这属于元件库管理范畴不要和仿真混在一起。至于把 brd 转成 AD 格式再转回来或者转成其他中间格式再导入 PowerSI这是我非常不推荐的做法。转换过程会丢失叠层结构、动态铜皮属性、过孔反焊盘、网络名后缀等大量关键信息。转换方式风险对 S 参数提取的影响原始 .brd 直接导入 PowerSI低保留完整叠层和铜皮属性brd 转 AD 再转回 brd极高叠层、网络、反焊盘全乱基本不可用brd 导出 DXF/ODB 再导入中可作为兜底但需要重新整理层叠和模型如果不是公司流程强制要求永远用原始 .brd 喂 PowerSI这是省时省力的第一原则。2. 交付前的板件体检铜皮优先级、动态铜皮与叠层陷阱PowerSI 不是 Allegro它不会帮你“自动纠错”。它把 brd 里的几何和网络读入后直接做网格剖分所以版图里任何“视觉上正确”但“数据库里没更新”的内容都会变成仿真里的错误。2.1 动态铜皮没更新导入进去全是洞Allegro 的动态铜皮有两种显示状态rough 状态只是示意smooth 状态才是最终图形。如果你画完铜皮后没有做 Update ShapesPowerSI 读到的 Shape 可能只是边界框大平面铺铜会被拆成碎片散热焊盘、地铜皮丢失后回流路径就不对S 参数的插损和回损全是错的。操作建议在 Allegro 里执行 Display Status查看 Dynamic Shapes 是否都是 up to date。执行 Tools Update Shapes选择 All把动态铜皮全部平滑更新。更新之后再用 Database Check 复查一遍。如果用了负片铺铜检查花焊盘连接方式PowerSI 会严格按热焊盘的窄脚计算直流电阻和低频损耗高压大电流场景建议改用 Full Contact或者至少在仿真模型里做相应修改。我之前有一次仿真 S 参数1GHz 以下损耗异常偏大找了两天最后发现 Layer 3 的整块地铜皮在库文件里还是 rough 状态根本没有参与回流。这种问题在频域曲线上非常隐蔽漏掉一步排查可能耗费几天。2.2 铜皮优先级的误区与电源层分割热词里“cadence 铜皮 优先级”问的人不少。在 Allegro 里两个不同网络的铜皮如果重叠系统会用优先级和 Island 来处理覆盖关系高优先级覆盖低优先级。有工程师以为设置优先级就能“软处理”短路实际上在 PowerSI 看来被覆盖的区域是实实在在的隔离区不存在“部分短路”这种状态。所以电源层分割线、走线避让、Shape 边界一定要真的正确。电源层分割线也就是 Anti Etch也要重点检查。如果分割线断了一小段或者拐角处有空隙平面在高频下可能被切开造成 S 参数中出现异常谐振峰。我在实测项目里见过一个 1.2V 电源岛因为分割线少画了 10 mil仿真在 2.4GHz 出现一个很大的反谐振尖峰改完分割线后尖峰消失。这个问题的定位非常隐蔽你要是硬调电容模型永远调不出来。做法上如果你是做高速或者高频板我强烈建议把电源层改成正片铺铜用多个铜皮和 Clearances 做分割而不是依赖负片 Anti Etch。负片层导入第三方工具时更容易出现形状映射问题尤其是中间层反焊盘不同的过孔。2.3 活动类和子类、板框与 0 宽线的隐患“活动类和子类”在 Allegro 里其实就是当前可编辑的图层对象左下角选项面板会显示当前 Class 和 Subclass比如 Etch/Top、Etch/Bottom、Board Geometry/Outline 等。你当前在哪个活动层决定了你编辑的是走线、板框还是丝印。很多人不重视这个等到了 PowerSI 里发现 Outline 找不到了回头才发现板框当时画在了其他 Subclass 上。PowerSI 导入后识别板框主要依赖 Board Geometry/Outline 或 Design_Outline。如果找不到 Outline后面的区域剖分、去耦区域划分都会出问题。所以交付前检查这几点Board Geometry / Outline 上有没有完整闭合的板框。有没有 DXF 导入后留下的多余线段。所有没有网络的 Dangling Lines、孤岛铜皮是否已清理。0 宽线和 Dangling 线段最坑的一点是会让网格剖分生成无数微小三角形仿真速度骤降而且会在扫频结果里出现高频毛刺。清理方法是在 Tools Database Check 里勾选 Dangling Lines然后逐个删掉。这些线段在版图里往往肉眼看不出来但求解器会忠实地把它们算进电磁模型里。2.4 叠层信息不全与单位混乱的隐患.brd 文件里不是总有完整的叠层厚度和材料参数。尤其当团队早期用第三方工具建叠层、或者从旧流程迁移时PowerSI 导入后很多层介质厚度是默认值你在叠层编辑器里看到的 DK4.2 和 DF0.02 很可能是程序猜的不是板厂真实数据。单位混乱是另一个常见幺蛾子。Allegro 中可以把设计单位切成 mil 或 mm但内部精度并不会因为切换而变化。问题出在导入或导出时如果没有统一单位PowerSI 拿到的坐标会差 25.4 倍。我见过有人把整块板厚 1.6mm 当成 64 mil 来填结果谐振频率整体偏移 30% 以上。流程上建议在 Allegro 里确认设计单位Setup Design Parameter Editor Design 页。在 PowerSI 导入对话框里选择同样的单位。叠层编辑器里逐个核对实际物理厚度以板厂叠层表为准。叠层检查我习惯做成 Excel 模板层名、铜厚、介质厚度、材料、DK、DF、铜箔粗糙度每次新项目直接往里填导入后逐项核对。不用太复杂但能省掉后面无数 Debug 时间。3. PowerSI 导入与叠层材料设置仿真精度从这个环节开始分高下3.1 导入流程与版本兼容选项PowerSI 打开 brd 通常就是 File Open弹出文件类型里选 Allegro .brd。如果你的软件版本支持一般可以直接读入不支持时会在打开时报错此时需要回 Allegro 做版本转换。还有一些文件是从第三方集成环境里导出来的文件头不标准PowerSI 也会拒绝碰到这种情况可以先在 Allegro 里重新存一次再导。导入前建议把工作目录放到纯英文路径。我不敢说所有崩溃都是中文路径引起的但我遇到的this application has quit unexpectedly弹窗里至少一半和中文路径、杀毒软件实时扫描有关。把 Sigrity 的临时目录和数据目录都设置到本地大容量硬盘上别放 NASPowerSI 在网格剖分阶段对内存和临时文件要求都非常高。导入后先扫一眼 PowerSI 里的图层列表确认四件事走线层和电源层都在。网络名没有丢失后缀。过孔类型完整。板框识别正确。这五分钟的检查比后面跑完全场再回来找问题划算得多。很多用户在导入后直接点仿真等了半小时出来一个奇怪曲线最后发现是某个层根本没导入这个成本就太高了。3.2 叠层材料的参数填写与损耗模型叠层材料是 S 参数准不准的根基。铜的电导率一般用 5.8e7 S/m这个大部分时候不用动。介质材料要特别小心因为 DK 和 DF 都是频率的函数。很多人直接填低频下的 Datasheet 值比如 1MHz 的 DK4.5拿去仿 10GHz 的信号相位延迟和损耗全偏了。正确做法是查板材供应商提供的频变曲线或者至少用 1GHz 以上频点的典型值。DF 更是关键。普通 FR4 在 1GHz 的 DF 大约 0.02到了高频可能更高低损耗板材如 Megtron6 可以到 0.002 左右。如果你只是做 PI 分析、PDN 阻抗DF 的影响相对小但做高速 SerDes 通道仿真DF 错了损耗能偏出 20%。铜箔粗糙度在 5GHz 以上就不能忽略了。PowerSI 里提供了粗糙度模型常见有 Hammerstad 和 Huray 两种。Huray 模型需要给定铜箔凸起半径和密度参数可以从板材商那边要没有数据时用经验值也可以关键是别选 zero roughness。平滑铜箔和标准铜箔在 20GHz 下的导体损耗差异非常显著选错会让插损曲线的斜率明显失真。3.3 过孔反焊盘与背钻信息过孔的反焊盘决定过孔与参考平面之间的容性直接影响换层阻抗。Allegro 过孔库里如果没有正确设置 Anti Pad或者建 Via 时只在某些层设置了 Anti PadPowerSI 导入后会默认成金属完全覆盖结果过孔对地短路仿真出来的驻波、插损全部离谱。背钻也要检查。高速板里过孔残桩是信号完整性的天敌残桩长度不同谐振陷波位置完全不同。PowerSI 能从 brd 中读取背钻信息但前提是版图里背钻层和孔深都定义正确。导入后最好在过孔属性里核对一遍每个过孔的 Start Layer / Stop Layer不要只信大概。经验做法仿真前先做一个简单验证只提取一段微带线加过孔换层的 S 参数看看特征阻抗是否跟自己算的一致。如果这个都不对整板仿真结果就不用指望了。这个验证通常只要跑几十秒到几分钟但能把过孔模型层面的错误彻底排除掉。3.4 元件模型的赋值没有模型的电容就是一颗“电阻”PowerSI 里最容易被轻视的就是无源器件模型。.brd 里只有元件的位号和封装没有电学模型。如果某个贴片电容没有分配模型PowerSI 可能把它当作 0Ω 短路或者开路来处理具体取决于默认设置不管哪种你都会得到一个和物理完全对不上的 PDN 谐振。去耦电容模型我建议这样处理优先从电容原厂下载等效电路或 S 参数模型村田、TDK 都有在线工具直接按容值和封装尺寸选型。拿不到原厂模型时根据封装尺寸选典型 ESL/ESR。我自己常用基础值0402 电容 ESL 0.3nH、ESR 50mΩ0603 电容 ESL 0.5nH、ESR 70mΩ。这些值虽然不够精确但比当短路强太多了。磁珠一定要用阻抗频率曲线模型它本身就是设计来在特定频段呈现高阻的用理想电感模型替代仿真结果基本没有参考价值。电源芯片、FPGA 的扇出模型可以用封装模型或简化的 RLC 寄生模型至少把 BGA 焊盘和走线到封装边缘的寄生包含进去。我先给你打个预防针第一次给整板电容分配模型会非常费时间但做完后你会发现 PDN 阻抗曲线有本质的变化。这个步骤跳过了后面所有谐振分析都是在自嗨。4. 端口定义、扫描参数与 S 参数提取的实战细节4.1 目标网络与端口位置的选择逻辑打开 PowerSI 后第一步不是点仿真而是想清楚你要提取什么。S 参数不是“整个板子”的 S 参数而是某个端口网络之间的响应。你要提取一条高速链路就只选这条链路上的 Nets你要做 PDN 阻抗分析就选电源和地网络。PowerSI 里一般流程是用 Pick 工具选择你需要关注的 Nets。在当前 Nets 上放置电路端口可以是 Single-ended 或 Differential。如果是 PDN在 VRM 输出端和负载端分别放置 Power Port 或 Circuit Port。确认回流路径单端端口最好紧挨着参考地引脚或过孔端口环路越小提取的寄生电感越可靠。端口位置我建议严格放在 BGA 焊盘、连接器引脚、芯片电源管脚的 Pad 上不要在走线中段挖口。因为端口一放置就相当于在该位置引入一个集总参考点位置不同串联进去的走线长度就不同S 参数当然不同。另外选中同一网络这个操作在 Allegro 里可以用右键 Temp Group 加过滤条件快速完成到了 PowerSI 里也类似先建立过滤器再框选别一个个点。4.2 去耦电容摆放与 PDN 谐振PDN 仿真最终要看的通常是 Z11 或者 S21。目标阻抗法大家都会背Ztarget ΔV / ΔI。比如 1.8V 电源允许 5% 纹波就是 90mV瞬态电流变化 10A目标阻抗就是 9mΩ。标准很简单难的是在整个频段内都压住这个值。去耦电容摆放位置对 PDN 曲线的影响非常直观。同一个 BGA 封装下面电容离电源引脚近 100 mil等效电感可能就多 0.2nH高频阻抗尖峰就会变高。PowerSI 可以在你调整电容位置后重新提取 S 参数比反复改板快太多这也是 PowerSI 最重要的价值之一。我一般会做几个对比方案A 方案是当前版图的原始布局B 方案是把一半电容挪到靠近芯片侧C 方案是换更大容值器件。用 S 参数或 Z11 曲线摆在一起对比高频尖峰往哪个方向走、反谐振点在哪里一目了然。这个动作放在改板之前能省下至少一轮投板周期。4.3 频率扫描设置与网格剖分扫频设置直接决定仿真时间和精度。PowerSI 一般支持线性扫频、十倍频程扫频和自适应扫频。我的经验是做宽带通道 S 参数用十倍频程扫频比如 10MHz 到 20GHz每个 decade 8 到 10 个点先快速看形态。锁定谐振频段后改成线性扫频或者加细点把尖峰处分辨出来。如果要拿结果做 TDR频率上限要够高至少到 20GHz否则时域分辨力不够突变位置看不准。网格剖分这块PowerSI 的自动网格一般能用但窄缝、反焊盘、连接器焊盘附近最好手动指定更小的网格尺寸。网格太疏高频 S 参数会出现明显的台阶或尖刺网格太密全板仿真实内存直接爆掉。如果机器只有 16GB 内存我建议把整板拆开或者用布局提取的方式先跑通关键路径别一上来就全板全频段。4.4 仿真崩溃、不收敛与结果为空的对策这个环节我攒了一堆经验列出来给你省时间内存报错通常是网格太密或者模型文件太大。先把频率上限降低跑通再逐步提高并把临时目录切到本地盘。模型缺失报错回去检查所有无源元件的模型分配尤其那些你没注意到的排阻、电容排。不收敛频率相关模型在外推时可能出现负电阻或奇异值。最简单的处理是把该元件换成理想 RLC 模型再跑如果还不行检查端口数量是不是明显不合理。this application has quit unexpectedly这个弹窗几乎是万能桶。我遇到最多的是中文路径、杀毒软件实时扫描、超大网格三件事。把工程放到英文目录关掉杀毒软件对 Sigrity 目录的扫描并行核数从 8 降到 4基本能解决。结果全是 0 或者曲线是乱的大概率是 Nets 选错了或者端口放到了没有电流路径的位置。检查端口有没有跨接在正确的网络之间。仿真不是一次就过的艺术调试仿真本身也是项目周期的一部分预算里最好留出这部分时间。4.5 输出 S 参数与 Touchstone 文件规范仿真完成后PowerSI 可以输出 Touchstone 格式的 S 参数文件。这里有几个容易踩的规范问题端口顺序导出的 sNp 文件里端口顺序是你放置端口的顺序换工具后一定要有端口映射表不然级联时正负极接反。参考阻抗默认 50Ω但如果你做差分有些工具会期望 100Ω 差分阻抗导出前先确认下游工具的要求。Touchstone 版本老版本 1.0 不支持混合参考阻抗新版本 2.0 可以如果你的下游工具比较旧直接用 1.0 最省事。文件命名我习惯用“网络名_频率范围_端口数”命名例如PCIe_GEN4_10M20G_4port.s4p。不然过一个月你自己都找不到哪个文件对应哪块板。输出完 S 参数接下来才能做 TDR、眼图、通道仿真。到这一步“从 .brd 到 S 参数提取”的主流程已经全部走通。5. 提取结果的合理性自检与高频翻车现场5.1 无源性与因果性检查一个物理上可实现的互连网络一定是无源的。也就是说在无源介质和铜箔组成的模型里S11 不应该超过 0dBS21 的幅度也不应该出现奇异尖峰。PowerSI 结果里如果 S11 某些频点超过 0dB基本可以判定模型里有源器件混进来了、或者某个元件模型给了负阻值。这时候先查所有模型分配而不是怀疑软件。因果性检查更细致时域响应不应该在激励之前出现。很多简化模型在 GHz 以上会轻微违例但只要不影响 TDR 趋势和眼图工程上可以接受。但如果你要做高精度时域仿真因果性修正是必要的。PowerSI 自带的 Passivity Check 和 Causality Check 功能可以帮忙快速判断不用自己写脚本。5.2 与 TDR 联动验证把问题钉在板子上热词里“sigrity 怎么仿真 tdr”问的人很多常见做法就有先在 PowerSI 里提取通道 S 参数然后把 sNp 文件拿到 Sigrity 的 SystemSI 或其他工具里做 TDR或者直接用 PowerSI 内置 TDR 功能。TDR 的好处是能把阻抗突变的位置沿物理通道标出来。一个典型排查案例某 10Gbps 通道仿真 S21 在 5GHz 出现深陷波。用 TDR 一拉曲线发现中间有一段阻抗从 50Ω 掉到 38Ω位置正好在 BGA 过孔换层区。查过孔定义发现该过孔的反焊盘在第三层没设置平面把过孔短路了。修正反焊盘后重提 S 参数5GHz 陷波消失。这种问题如果只看频域曲线很容易误判是连接器型号选错了。5.3 高频谐振与电源平面去耦的实际教训PDN 仿真最常见的误判是反谐振峰。我之前做过一块 DDR4 主板PowerSI 仿真出来的 Z11 在 1.2GHz 有一个 2Ω 的尖峰超过目标阻抗很多。按常规思路我把去耦电容从 0402 换到 0201又调整了一轮位置尖峰纹丝不动。后来仔细看叠层才发现我把电容模型给错了仿真里那批 0402 电容用的是一只铝电解电容的等效模型ESL 大了两个数量级谐振点自然完全不对。换成原厂 MLCC 模型后尖峰消失结果和实际非常接近。这告诉我们高频 PDN 的谐振峰位置通常由电容 ESL 和电源平面间寄生电感共同决定模型参数差一点结论完全不一样。花在模型收集上的时间永远值得。5.4 多板级联与端口顺序问题遇到多板系统比如背板加子卡或者两条独立板用连接器连接需要把每块板分别提取 S 参数再在链路仿真里级联。这时候最容易翻车的就是端口顺序与差分对 pairing。我的建议是每个项目都做一张端口对照表格式大概是s4p 文件端口 1 对应差分对 P1 正极对应网络名端口 2 对应差分对 P1 负极对应网络名。导出前在 PowerSI 里给端口重命名不要用默认的 Port1、Port2而是用网络名加正负极后缀。虽然前期多花几分钟但后面做 SystemSI 级联、做 TDR、做眼图都不会错。最后再分享一个小技巧我每个 .brd 转 PowerSI 的项目都会在版图目录下建一个notes.txt把板厂的叠层表、电容模型来源、端口命名规则、仿真参数全记录下来。下次改版回来直接在配置上迭代不用再从头摸一遍设置。这个习惯帮我在频繁改版的项目里省下大量重复劳动也让我每次拿到一个陌生 .brd 时能更快判断出问题出在文件、模型、端口还是材料设置上。上面说的这些坑都是敲过键盘、重新跑过仿真才总结出来的。希望这份从 .brd 到 S 参数提取的避坑指南能让你少走几轮弯路。下来你在自己的项目里遇到奇怪问题也可以按这个思路一步步排查大概率能在模型和叠层里找到答案。
返回列表