关于 emc
emc 是面向 KiCad PCB 设计的 EMC 预合规风险分析技能,供设计人员在制造前检查常见电磁兼容问题。它结合几何规则、解析估算和可选 SPICE 仿真;结果用于识别风险,不能替代实验室合规测试。
主要功能
- 01检查接地平面与回流路径
- 02分析去耦、滤波及电源阻抗
- 03检查差分对、串扰和走线布局
- 04估算发射风险并提供测试计划
- 05可选 SPICE 增强分析
适用场景
- 01制造前排查 PCB 的 EMC 风险
- 02按目标市场或标准检查设计
- 03规划预合规测试的频段与探测点
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aklofas/ kicad-happy --skill emc安装后在 Claude Code 中输入/emc确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/emc-methodology.mdemc-standards.mdpcb-emc-rules.mdscripts/analyze_emc.pyemc_envelope.pyemc_formulas.pyemc_rules.pyemc_spice.py详细介绍
EMC 预合规技能
针对 KiCad PCB 设计的自动化 EMC 风险分析。使用几何规则检查、解析发射公式和可选的 SPICE 仿真,识别最常见的 EMC 测试失败原因。
这是风险分析工具,而非合规性预测工具。 它能在制造前发现约 70% 的常见 EMC 设计错误。但它无法保证符合 FCC/CISPR 标准——只有在认可实验室进行校准测量才能做到这一点。不过,它可以将首轮打样失败率从约 50% 降至 20%~30%,每避免一次电路板重新打样,可能节省 5,000~50,000 美元。
相关技能
| 技能 | 用途 |
|---|---|
kicad | 原理图/PCB 分析——生成本技能使用的分析器 JSON |
kicad(热分析) | 热点分析——MLCC 降额和磁珠/电感器过热问题可能加剧 EMC 去耦和滤波问题(MLCC 过载会导致性能下降;磁珠过热会导致阻抗漂移)。当 EMC 标记出 DC-001/DC-002 或 EF-001/EF-002 时,值得交叉检查。 |
spice | SPICE 仿真——为 SPICE 增强型 PDN/滤波器检查提供仿真器后端 |
交接指南: 首先运行 kicad 技能中的 analyze_schematic.py 和 analyze_pcb.py——本技能会使用它们的 JSON 输出。为获得最佳结果,请在 PCB 分析器中使用 --full(启用逐走线坐标,以检查地平面跨越、边缘距离和回流路径)。设计评审期间,在原理图/PCB 分析器、SPICE 仿真和热分析之后运行 EMC 分析,然后将 EMC 结果纳入报告。
要求
- Python 3.10+——仅使用标准库,无需 pip 依赖项
- 原理图分析器 JSON——来自
analyze_schematic.py --output - PCB 分析器 JSON——来自
analyze_pcb.py --full --output(建议使用--full) - SPICE 仿真器(可选)——ngspice、LTspice 或 Xyce,用于 SPICE 增强型 PDN/滤波器检查。会自动检测。若未安装,解析模型仍会照常运行。
工作流
第 1 步:运行分析器
python3 <kicad-skill-path>/scripts/analyze_schematic.py design.kicad_sch --analysis-dir analysis/
python3 <kicad-skill-path>/scripts/analyze_pcb.py design.kicad_pcb --full --analysis-dir analysis/
第 2 步:运行 EMC 分析
传入 --analysis-dir analysis/——脚本会从清单的当前运行中自动解析 schematic.json
和 pcb.json,并将 emc.json 写入
同一文件夹,以便清单对其进行跟踪。
# Recommended: auto-resolve inputs from the current run
python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/
# Equivalent — explicit paths still accepted (and required if you want to
# point at a non-current run or override one input)
python3 <skill-path>/scripts/analyze_emc.py \
--schematic analysis/<run_id>/schematic.json \
--pcb analysis/<run_id>/pcb.json \
--analysis-dir analysis/
# One-off JSON (bypasses the cache)
python3 <skill-path>/scripts/analyze_emc.py --schematic schematic.json --pcb pcb.json --output emc.json
# SPICE-enhanced (improved PDN and filter accuracy)
python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --spice-enhanced
# Select target standard
python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --standard cispr-class-b
# Select target market (sets all applicable standards)
python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --market eu
# Filter by severity
python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --severity high
# Human-readable text output
python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --text
第 3 步:解读结果
阅读 JSON 报告,并将分析结果纳入设计评审。每项发现都包含严重程度、规则 ID、描述和可操作的建议。请参阅下文的“解读结果”。
检查内容
涵盖 18 个类别的 44 个规则 ID。每条规则都有具体阈值、依据和来源引用——完整详情请参阅 references/pcb-emc-rules.md。
| 类别 | 规则 | 检测内容 |
|---|---|---|
| 接地平面 | GP-001 to GP-005 | 信号跨越空隙、区域碎片化、缺少接地平面、填充率低、存在多个接地域 |
| 去耦 | DC-001 to DC-003 | 电容离 IC 太远、IC 未配置去耦电容、电容离过孔太远 |
| I/O 滤波 | IO-001, IO-002 | 连接器未配置滤波、接地引脚不足 |
| 开关 EMC | SW-001 to SW-003 | 谐波重叠、开关节点铜面积、输入电容环路面积 |
| 时钟布线 | CK-001 to CK-003 | 时钟布线位于外层、走线过长、时钟靠近连接器 |
| 过孔缝合 | VS-001 | 接地过孔间距超过最高频率下的 λ/20 |
| 叠层 | SU-001 to SU-003 | 相邻信号层、信号远离参考平面、层间电容过低 |
| 差分对 | DP-001 to DP-004 | 对内偏斜超出协议限制、共模辐射、参考平面变化、外层布线 |
| 板边 | BE-001 to BE-003 | 信号靠近板边、接地铺铜环不完整、连接器区域缝合 |
| PDN 阻抗 | PD-001 to PD-004 | 反谐振峰、IC 负载点处的电源轨分布阻抗、下游开关稳压器导致的电源轨间耦合 |
| 回流路径 | RP-001 | 层间转换过孔附近缺少接地缝合过孔 |
| 串扰 | XT-001 | 3H 间距违规、干扰源与受扰对象信号对 |
| EMI 滤波器 | EF-001, EF-002 | 滤波器截止频率与开关频率过于接近(分析法或 SPICE 插入损耗) |
| ESD 路径 | ES-001, ES-002 | TVS 离连接器太远、TVS 附近接地过孔不足 |
| 热-EMC | TH-001, TH-002 | MLCC 直流偏压降额(SRF 偏移)、磁珠靠近热源 |
| 屏蔽 | SH-001 | 连接器孔径缝隙在辐射源附近产生谐振 |
| 辐射估算 | EE-001, EE-002 | 电路板腔体谐振、开关谐波包络 |
建议性输出(非检查结果):
- 预测试计划——频段优先级排序、接口风险排名、近场探头测量点
- 法规覆盖情况——市场到标准的映射、覆盖矩阵(工具检查的项目与需要实验室测试的项目)
输出格式
{
"summary": {
"total_checks": 42,
"critical": 2, "high": 5, "medium": 8, "low": 12, "info": 15,
"emc_risk_score": 73
},
"target_standard": "fcc-class-b",
"findings": [
{
"category": "ground_plane",
"severity": "CRITICAL",
"rule_id": "GP-001",
"title": "Signal crosses ground plane void",
"description": "Net SPI_CLK crosses a 3.2mm gap in GND on In1.Cu",
"components": ["U3", "U7"],
"nets": ["SPI_CLK"],
"recommendation": "Route around the gap, or fill the void"
}
],
"per_net_scores": [
{"net": "SPI_CLK", "score": 67, "finding_count": 3, "rules": ["GP-001", "CK-001", "BE-001"]}
],
"test_plan": {
"frequency_bands": [{"band": "30-88 MHz", "risk_level": "high", "source_count": 12}],
"interface_risks": [{"connector": "J1", "protocol": "USB", "risk_score": 8}],
"probe_points": [{"ref": "L1", "x": 45.2, "y": 32.1, "reason": "switching inductor"}]
},
"regulatory_coverage": {
"market": "us",
"applicable_standards": ["FCC Part 15 Class B"],
"coverage_matrix": [{"standard": "...", "coverage": "partial", "note": "..."}]
}
}
严重性级别
| 严重性 | 含义 | 操作 |
|---|---|---|
| CRITICAL | 几乎必然导致 EMC 测试失败 | 制造前必须修复 |
| HIGH | 极有可能导致问题 | 强烈建议修复 |
| MEDIUM | 具体情况不同,可能导致问题 | 审查并评估 |
| LOW | 风险较小,属于良好实践 | 方便时修复 |
| INFO | 信息性内容——频率、估算值 | 有助于实验室准备 |
风险评分
每个规则 ID 最多贡献 3 条检查结果到评分中(按最严重级别优先)。这样可以避免 GP-001 等针对每条网络的规则在 2 层板上导致评分饱和。仍会报告所有检查结果——仅对计分数量设上限。
penalty = sum(worst 3 per rule × severity weight),score = max(0, 100 - penalty)。分数低于 50 表示存在显著的 EMC 风险。
结果解读
接地平面问题 — 任何严重程度为 CRITICAL 的问题(信号跨越空洞)几乎总是实际问题。应无条件修复。
去耦问题 — 基于距离的问题误报率中等。对于低速 IC,6mm 的上限可能合适;但对于 100MHz 时钟缓冲器,则可能有问题。请结合频率背景确定优先级。
I/O 滤波 — 对通过线缆连接的产品非常重要。对于机箱内的板对板连接,风险较低。
差分对问题 — 各协议的偏斜限值都有明确规定:USB HS(25ps)、PCIe(5ps)、Ethernet(50ps)。超过这些限值的问题都是真实问题。
PDN 问题 — 反谐振峰是真实存在的,会导致电压下跌。经 SPICE 验证的问题比解析法得到的结果更准确。如果标出了峰值,请添加一颗 SRF 接近峰值频率的电容。
发射估算 — 估算精度为数量级(±10-20 dB)。应将其用于确定预兼容性测试的频段优先级,而非预测是否通过测试。
EMC 标准
| 标准 | 标志 | 用途 |
|---|---|---|
| FCC Part 15 Class B | fcc-class-b | 美国住宅环境(默认) |
| FCC Part 15 Class A | fcc-class-a | 美国商业/工业环境 |
| CISPR 32 Class B | cispr-class-b | 国际(欧盟 CE 标志) |
| CISPR 32 Class A | cispr-class-a | 国际商业环境 |
| CISPR 25 Class 5 | cispr-25 | 汽车(最严格) |
| MIL-STD-461G RE102 | mil-std-461 | 军事/国防 |
--market 标志可将市场映射到所有适用标准:us、eu、automotive、medical、military。
局限性
- 无法将绝对发射水平的预测误差控制在 ±10-20 dB 以内
- 无法考虑机箱的影响(屏蔽、孔径、接缝)
- 不知道外部线缆布线路径时,无法预测线缆辐射
- 无法替代对复杂几何结构进行的全波仿真
- 无法保证合规性——只有经认可的实验室测量才能做到这一点