mcpField
E
emc

emc

github.com/aklofas测试与质量1.5k625 次安装5 天前更新
代码仓库

关于 emc

emc 是面向 KiCad PCB 设计的 EMC 预合规风险分析技能,供设计人员在制造前检查常见电磁兼容问题。它结合几何规则、解析估算和可选 SPICE 仿真;结果用于识别风险,不能替代实验室合规测试。

主要功能

  1. 01检查接地平面与回流路径
  2. 02分析去耦、滤波及电源阻抗
  3. 03检查差分对、串扰和走线布局
  4. 04估算发射风险并提供测试计划
  5. 05可选 SPICE 增强分析

适用场景

  1. 01制造前排查 PCB 的 EMC 风险
  2. 02按目标市场或标准检查设计
  3. 03规划预合规测试的频段与探测点

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aklofas/kicad-happy --skill emc

安装后在 Claude Code 中输入/emc确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
emc-methodology.md
emc-standards.md
pcb-emc-rules.md
scripts/
analyze_emc.py
emc_envelope.py
emc_formulas.py
emc_rules.py
emc_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 时,值得交叉检查。
spiceSPICE 仿真——为 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连接器未配置滤波、接地引脚不足
开关 EMCSW-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-0013H 间距违规、干扰源与受扰对象信号对
EMI 滤波器EF-001, EF-002滤波器截止频率与开关频率过于接近(分析法或 SPICE 插入损耗)
ESD 路径ES-001, ES-002TVS 离连接器太远、TVS 附近接地过孔不足
热-EMCTH-001, TH-002MLCC 直流偏压降额(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 Bfcc-class-b美国住宅环境(默认)
FCC Part 15 Class Afcc-class-a美国商业/工业环境
CISPR 32 Class Bcispr-class-b国际(欧盟 CE 标志)
CISPR 32 Class Acispr-class-a国际商业环境
CISPR 25 Class 5cispr-25汽车(最严格)
MIL-STD-461G RE102mil-std-461军事/国防

--market 标志可将市场映射到所有适用标准:us、eu、automotive、medical、military。

局限性

  • 无法将绝对发射水平的预测误差控制在 ±10-20 dB 以内
  • 无法考虑机箱的影响(屏蔽、孔径、接缝)
  • 不知道外部线缆布线路径时,无法预测线缆辐射
  • 无法替代对复杂几何结构进行的全波仿真
  • 无法保证合规性——只有经认可的实验室测量才能做到这一点

评论

支持 Markdown