简介SIwave中文培训手册.pdf 面向从事高速PCB设计的硬件工程师与信号完整性初学者系统讲解如何借助SIwave应对现代PCB中的信号完整性、电源完整性与EMI问题。内容从传输线、特性阻抗、反射系数、S参数、同步开关噪声、PDS目标阻抗与去耦电容等基础概念切入再延伸到PCB前仿真的数据导入、层叠设计、平面分割与谐振分析以及布线后的PI阻抗与传导干扰分析、DCIR压降、TDR、串扰、差分眼图和远场辐射等仿真流程目录结构完整、由浅入深。资源包共1个PDF文件大小约4.66MB便于随时查阅与打印学习。目前已有3541人学习下载适合希望建立SI/PI与EMI仿真知识框架、对照软件操作查漏补缺的读者参考。1. 从一份 SIwave 中文培训手册说起电源完整性仿真到底该怎么上手很多做硬件的人第一次接触 SIwave都是被一份 SIwave中文培训手册.pdf 领进门的。它解决的不是“软件怎么装”这种问题而是让你明白一块 PCB 从导入到出报告中间到底发生了什么。我见过太多人把仿真当成玄学——跑一遍看个颜色图然后该改哪里还是不知道。这份手册的价值在于它把电源完整性PI和信号完整性SI的分析流程拆成了可操作的步骤叠层设置、端口定义、谐振扫描、去耦电容优化、S 参数提取。适合谁适合已经画过板子、但没系统做过仿真的 Layout 工程师和硬件工程师也适合想从理论转向实操的在校生。如果你手里正好有这块板子的叠层和器件模型跟着走一遍比看十篇理论文章都管用。2. 把板子喂给 SIwave 之前叠层、材料与端口定义的三道关2.1 叠层设置为什么是第一个翻车点SIwave 的所有电磁计算都建立在叠层结构上。你导入的 PCB 文件常见的是 .brd 或 .odb如果叠层顺序、介质厚度、铜箔粗糙度不对后面跑出来的谐振点会偏得离谱。我一般会先做一件事在 SIwave 里打开 Layer Stackup 编辑器逐层核对。介质厚度单位默认是 mil但很多国产板厂给的是 mm这里不换算后面全错。常见做法是先确认信号层和平面层的顺序再填介质材料的 Dk介电常数和 Df损耗因子。FR-4 在 1GHz 以下 Dk 取 4.2~4.5Df 取 0.02 左右如果是高速板材比如某类改性环氧树脂Dk 可能降到 3.6Df 到 0.008。这些值不是拍脑袋是从板厂提供的 datasheet 里抄的。没有 datasheet 怎么办用 SIwave 自带的材料库先跑一版但要在报告里注明“材料参数待确认”。# 伪代码叠层参数检查清单实际在 SIwave GUI 里操作 stackup { layer1: {type: signal, copper_thickness: 1.4, unit: mil}, dielectric1: {material: FR4, Dk: 4.3, Df: 0.02, thickness: 4.0}, layer2: {type: plane, copper_thickness: 1.4}, # ... 逐层核对直到最后一层 } # 逻辑铜厚影响直流压降介质厚度影响阻抗和谐振 # 参数Dk 误差 0.2 会导致谐振频率偏移 2%~3%提示叠层里如果有“半固化片”和“芯板”混用厚度要分开填不能合并。2.2 端口定义别把电容焊盘当成理想连接端口Port在 SIwave 里代表能量的注入点或提取点。做电源完整性时你通常会在 VRM 输出端和负载芯片的电源引脚处各放一个端口。这里最容易犯的错是把端口直接放在电容焊盘上然后抱怨结果不对。电容焊盘有寄生电感端口应该放在焊盘外侧的铜皮上或者用 SIwave 的“Pad Stack”功能自动识别。具体步骤在 PCB 上选中 VRM 输出电容的电源网络右键选择“Create Port”类型选“Circuit Port”阻抗设 0.1 欧姆模拟 VRM 的低输出阻抗。负载端同理但阻抗设成芯片手册里的目标阻抗比如 1 毫欧。端口名字要有规律比如“VRM_1V2”和“LOAD_1V2”后面看结果才不会乱。# 在 SIwave 命令行里批量检查端口假设已导出端口列表 # 实际用 GUI 更直观这里演示逻辑 siwave_cli --project board.siw --list-ports # 输出示例 # Port1: VRM_1V2, net1V2, Z0.1 ohm # Port2: LOAD_1V2, net1V2, Z0.001 ohm # 如果发现端口落在电容焊盘内部需要手动移出参数说明端口阻抗设得越小注入的电流越大谐振峰越明显。但别设成 0否则矩阵奇异求解器会报错。我一般从 0.1 欧姆开始试如果谐振峰不明显再降到 0.01。2.3 材料库和过孔模型别让默认值骗了你SIwave 自带材料库里的“Copper”和“FR4”是理想化的。实际铜箔有粗糙度高频下表面电阻会增加。如果仿真频率超过 1GHz要在材料属性里把“Surface Roughness”打开填 RMS 值常见的是 0.5~1.5 微米。过孔模型也一样默认是圆柱但实际过孔有焊盘、反焊盘、非功能焊盘。这些在“Via Model”里可以逐一定义或者用“Auto Via”让软件根据叠层生成。我一般会先跑一版默认设置看谐振频率和实测差多少。如果差 5% 以内就不折腾粗糙度差 10% 以上再回头查材料。这样省时间也避免过度建模。3. 谐振扫描与去耦电容优化从颜色图到可执行的改板建议3.1 谐振扫描看懂阻抗曲线比看场图更重要SIwave 的“Resonant Mode”分析会给出两个东西一个是阻抗随频率变化的曲线一个是不同频率下的电场/磁场分布图。新手容易盯着场图看觉得颜色越红越糟糕但真正能指导改板的是阻抗曲线。曲线上的峰值对应板子的并联谐振点如果某个峰值超过了目标阻抗比如 1 毫欧那就在这个频率附近加电容。操作步骤在“Simulation”菜单里选“Resonant Mode”频率范围设 1MHz 到 1GHz扫描点数 1000。跑完后在“Results”里看“Z11”曲线。横轴频率纵轴阻抗。目标阻抗线可以手动画上去比如在 1 毫欧处画一条水平线。峰值超过这条线的地方就是需要去耦的频段。# 伪代码从 SIwave 导出的阻抗曲线里找峰值 import numpy as np freq np.loadtxt(z11_freq.txt) # 单位 Hz z_imp np.loadtxt(z11_imp.txt) # 单位 ohm target 0.001 # 1 毫欧 peaks [] for i in range(1, len(z_imp)-1): if z_imp[i] z_imp[i-1] and z_imp[i] z_imp[i1] and z_imp[i] target: peaks.append((freq[i], z_imp[i])) # 输出[(125e6, 0.0032), (340e6, 0.0018)] # 逻辑找出超过目标阻抗的谐振峰指导电容选型参数说明扫描点数不是越多越好1000 点足够。如果板子很大可以分段扫比如 1MHz~100MHz 和 100MHz~1GHz 分开跑节省时间。3.2 去耦电容优化容值不是越大越好很多人以为在电源引脚旁边放一堆 100nF 和 10uF 就万事大吉。但 SIwave 的“Decap Optimization”工具会告诉你电容的容值、数量、位置三者要匹配。比如100nF 电容的自谐振频率在 10MHz 左右超过这个频率它呈感性反而可能和平面电容形成新的谐振。我一般会这样做先导入电容库包含 ESL、ESR、容值然后在“Decap Placement”里设置优化目标——比如在 1MHz~100MHz 内把阻抗压到 1 毫欧以下。软件会自动推荐电容组合和位置。但别全信软件它可能推荐 20 个 100nF实际板子上放不下。这时候要手动调整优先放在芯片电源引脚背面其次放在板边。# 在 SIwave 里导出电容优化报告GUI 操作这里示意命令 siwave_cli --project board.siw --decap-optimize --target-z 0.001 --freq-start 1e6 --freq-end 100e6 # 输出推荐电容列表含容值、数量、坐标 # 注意软件推荐的坐标可能和现有器件冲突需要手动挪注意电容的 ESL 比容值更重要。同样 100nF0402 封装的 ESL 约 0.5nH0603 约 0.8nH。高频去耦优先选小封装。3.3 从仿真到改板怎么把阻抗曲线翻译成 Layout 动作仿真跑完阻抗曲线也看了然后呢我一般会做三件事第一把超过目标阻抗的频段标出来对应到板子上的区域。比如 125MHz 的峰值看场图发现能量集中在某块芯片下方那就在那里加电容或换更薄的介质。第二检查平面分割。如果电源平面被信号线割裂回流路径变长阻抗会抬高。这时候要么改分割要么在割裂处加缝合电容。第三看过孔。VRM 到负载的过孔数量不够直流压降和电感都会增加。一般 1A 电流至少配 2 个过孔大电流要 4 个以上。这些动作不需要重新跑仿真就能判断但改完一定要再跑一遍验证。我见过有人改完直接投板结果谐振点从 125MHz 挪到了 200MHz还是超标。所以“仿真-改板-再仿真”这个循环不能省。4. 避坑与排查SIwave 仿真里那些让你怀疑人生的瞬间4.1 导入 PCB 后网络全丢了现象用 .brd 文件导入 SIwave结果电源网络和地网络变成了一堆无名节点。原因PCB 设计软件里的网络命名规则和 SIwave 不兼容或者导入时没勾选“Keep Net Names”。解决导入时在“Import Options”里勾选“Preserve Net Names”如果已经丢了用“Net Rename”工具批量改或者重新导出 ODB 格式再导入。4.2 谐振频率和实测差 20%现象仿真显示 100MHz 有谐振实测在 120MHz。原因介质 Dk 填低了或者铜箔粗糙度没开。解决把 Dk 从 4.2 调到 4.5打开表面粗糙度再跑一遍。如果还差检查叠层厚度是否和板厂实际一致。我遇到过板厂把 4mil 的介质做成 3.5mil频率直接偏 8%。4.3 求解器报“矩阵奇异”或“内存不足”现象跑谐振分析时卡住然后报错。原因端口阻抗设成 0或者板子太大网格太密。解决端口阻抗改成 0.01 欧姆以上网格设置里把“Max Frequency”降到实际需要的最高频率比如只关心 500MHz 以内就别设 1GHz。内存不足的话用“Distributed Solve”把任务分到多台机器或者简化模型去掉无关的测试点和丝印。4.4 去耦电容优化结果全是 100nF现象软件推荐了 50 个 100nF但板子上根本没空间。原因优化目标设得太宽或者电容库不全。解决把频率范围缩窄到实际关心的频段比如 10MHz~50MHz在电容库里加入 1uF、10uF 和 0.1uF 的组合让软件有选择。另外设置“Max Capacitor Count”限制数量比如不超过 20 个。4.5 仿真跑完报告里全是警告现象结果出来了但日志里几百条“Port not on copper”或“Layer not found”。原因端口没放在铜皮上或者叠层里某层名字和 PCB 不一致。解决用“Port Check”工具逐个检查把端口拖到铜皮上叠层名字在“Layer Stackup”里手动对齐。警告不影响计算但会降低精度别忽略。5. 进阶技巧用 SIwave 做直流压降分析和 S 参数提取5.1 直流压降分析IR Drop 的快速评估电源完整性不只是交流谐振直流压降同样要命。SIwave 的“DC Voltage Drop”分析可以算出从 VRM 到负载的电压降。操作很简单在“Simulation”里选“DC Voltage Drop”设置 VRM 输出电压和负载电流比如 1.2V 和 5A。跑完后看“Voltage”云图红色区域就是压降大的地方。一般要求压降不超过输出电压的 3%也就是 36mV。如果超了要么加宽铜皮要么多加过孔。# 伪代码从 SIwave 导出的直流压降结果里找最差点 import numpy as np voltage np.loadtxt(dc_voltage.txt) # 单位 V min_v np.min(voltage) if min_v 1.2 * 0.97: print(f压降超标最低电压 {min_v:.3f}V低于 1.164V) # 逻辑3% 压降是常见阈值实际看芯片手册参数说明负载电流要按最大工作电流填别用典型值。铜皮厚度按实际填1oz 铜是 1.4mil2oz 是 2.8mil。5.2 S 参数提取从电源平面到信号过孔SIwave 可以提取电源平面的 S 参数用于后续的电路仿真。步骤在“Simulation”里选“SYZ Parameters”设置频率范围比如 10MHz~1GHz端口选之前定义好的 VRM 和负载。跑完后导出 .s2p 文件可以在 ADS 或类似工具里做系统级仿真。注意S 参数提取对端口阻抗敏感如果端口设得不对S11 会很难看。我一般会先跑一遍看 S11 是否在 -10dB 以下如果不是回头检查端口。5.3 一个具体技巧用参数扫描找最优电容组合SIwave 支持参数扫描。你可以把电容的容值设成变量比如 C1 从 10nF 到 1uF 步进然后跑谐振分析看哪个组合的阻抗曲线最平。我一般会扫 3~5 个值每个值跑一次大概半小时。虽然比优化工具慢但结果更可控。扫完后把最优组合的电容位置固定再跑一次验证。提示参数扫描很吃内存建议在晚上跑第二天看结果。我自己的习惯是每次改完板子先跑直流压降再跑谐振最后看 S 参数。顺序不能反因为直流压降不过交流分析没意义。希望帮到你。本文还有配套的精品资源点击获取