法务合规
KiCad PCB 设计阶段排查 EMC/EMI…
对 KiCad PCB 做 EMC/EMI 预合规风险扫描,定位常见辐射/传导发射设计缺陷并输出按严重度排序的报告和预合规测试计划。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
KiCad PCB 设计阶段排查 EMC特定
解决思路
- 确认环境为 Python 3.10+;脚本仅使用 stdlib,不需要 pip 依赖。
- 准备 schematic analyzer JSON:由 `analyze_schematic.py --output` 生成。
- 准备 PCB analyzer JSON:由 `analyze_pcb.py --full --output` 生成;推荐使用 `--full` 以启用逐轨坐标,从而支持地平面跨越、边缘邻近、返回路径检查。
- 可选准备 SPICE 模拟器:ngspice、LTspice 或 Xyce,用于 SPICE-enhanced PDN/filter checks;脚本会自动检测;没有模拟器时解析模型不变。
- 先运行原理图分析器:`python3 <kicad-skill-path>/scripts/analyze_schematic.py design.kicad_sch --analysis-dir analysis/`。
- 再运行 PCB 分析器:`python3 <kicad-skill-path>/scripts/analyze_pcb.py design.kicad_pcb --full --analysis-dir analysis/`。
- 运行 EMC 分析并传入 `--analysis-dir analysis/`;脚本会从 manifest 当前运行中自动解析 `schematic.json` 和 `pcb.json`,并把 `emc.json` 写入同一目录,便于 manifest 跟踪:`python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/`。
- 如需指向非当前运行或覆盖某个输入,使用显式路径:`python3 <skill-path>/scripts/analyze_emc.py --schematic analysis/<run_id>/schematic.json --pcb analysis/<run_id>/pcb.json --analysis-dir analysis/`。
- 如做一次性 JSON 并绕过缓存:`python3 <skill-path>/scripts/analyze_emc.py --schematic schematic.json --pcb pcb.json --output emc.json`。
- 如启用 SPICE 增强,以提高 PDN 和滤波器精度:`python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --spice-enhanced`。
- 如选择目标标准:`python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --standard cispr-class-b`;可用标准:`fcc-class-b`、`fcc-class-a`、`cispr-class-b`、`cispr-class-a`、`cispr-25`、`mil-std-461`。
- 如选择目标市场并设置所有适用标准:`python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --market eu`;市场值:`us`、`eu`、`automotive`、`medical`、`military`。
- 如按严重度过滤:`python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --severity high`。
- 如输出人类可读文本:`python3 <skill-path>/scripts/analyze_emc.py --analysis-dir analysis/ --text`。
- 读取 JSON 报告并把发现纳入设计评审;每个 finding 含 severity、rule ID、description、actionable recommendation。
- 读取 summary,包括 `total_checks`、`critical`、`high`、`medium`、`low`、`info`、`emc_risk_score`。
- 读取 `target_standard`、`findings`、`per_net_scores`、`test_plan`、`regulatory_coverage` 等输出字段。
- 按严重度处理:CRITICAL 几乎必然导致 EMC 失败,必须在制造前修复;HIGH 很可能出问题,强烈建议修复;MEDIUM 视具体情况可能出问题,需评审评估;LOW 次要风险或良好实践,方便时修复;INFO 信息性频率或估算,用于实验室准备。
- 理解风险分数:每个 rule ID 最多以最严重的前 3 个 finding 计入分数,避免如 GP-001 这类按网络规则在 2 层板上饱和;所有 finding 仍会报告,只有分数被限制;`penalty = sum(worst 3 per rule × severity weight)`,`score = max(0, 100 - penalty)`;低于 50 表示显著 EMC 风险。
- 对地平面发现:任何 CRITICAL 即信号跨过 void,几乎总是真实问题,无条件修复。
- 对去耦发现:基于距离的发现假阳性中等;6mm 电容对低速 IC 可能没事,但对 100MHz clock buffer 可能有问题;用频率上下文排优先级。
- 对 I/O 滤波:对带电缆产品高度相关;外壳内板对板连接风险较低。
- 对差分对发现:协议特定 skew limits 明确定义;USB HS 为 25ps、PCIe 为 5ps、Ethernet 为 50ps;超过限制是真问题。
- 对 PDN 发现:anti-resonance peaks 真实且会导致 voltage droop;SPICE 验证的发现比 analytical 更准确;若标记 peak,添加 SRF 接近 peak 频率的电容。
- 对发射估算:数量级估算为 ±10-20 dB;用于给预合规测试的频段排优先级,不用于预测 pass/fail。
- 检查覆盖:44 个 rule ID、18 个类别;每个规则有具体阈值、理由、来源引用;详见 `references/pcb-emc-rules.md`。
- 地平面类别 GP-001 到 GP-005:信号跨越 void、zone fragmentation、缺失地平面、低 fill ratio、多个 ground domains。
- 去耦类别 DC-001 到 DC-003:电容离 IC 太远、IC 没有去耦电容、电容离 via 太远。
- I/O filtering IO-001、IO-002:连接器无滤波、接地引脚不足。
- Switching EMC SW-001 到 SW-003:harmonic overlap、switching node copper area、input cap loop area。
- Clock routing CK-001 到 CK-003:clock 在外层、长走线、clock 靠近连接器。
- Via stitching VS-001:地过孔间距超过最高频率的 λ/20。
- Stackup SU-001 到 SU-003:相邻信号层、信号远离参考平面、层间电容过薄或不足。
- Diff pair DP-001 到 DP-004:intra-pair skew 超出协议限制、CM radiation、reference plane change、outer layer routing。
- Board edge BE-001 到 BE-003:信号靠近边缘、ground pour ring 不完整、连接器区域 stitching。
- PDN impedance PD-001 到 PD-004:anti-resonance peaks、IC 负载点处的 distributed rail impedance、downstream switching regulators 引起的 cross-rail coupling。
- Return path RP-001:layer transition via 附近没有 ground stitching via。
- Crosstalk XT-001:3H spacing violation、aggressor-victim pairs。
- EMI filter EF-001、EF-002:filter cutoff 太接近 switching frequency,可用 analytical 或 SPICE insertion loss 检查。
- ESD path ES-001、ES-002:TVS 离连接器太远、TVS 附近接地过孔不足。
- Thermal-EMC TH-001、TH-002:MLCC DC bias derating 导致 SRF shift、ferrite 靠近热源。
- Shielding SH-001:连接器 aperture slot resonance 靠近 emission source。
- Emission estimates EE-001、EE-002:board cavity resonance、switching harmonic envelope。
- 产出 advisory outputs:pre-compliance test plan 包括频段优先级、interface risk ranking、near-field probe points;regulatory coverage 包括市场到标准映射、覆盖矩阵,即工具检查项与需要实验室测试项。
- 在 design review 中按顺序运行 schematic/PCB analyzers、SPICE simulation、thermal analysis,然后纳入 EMC findings 到报告。
- 如 EMC 标记 DC-001/DC-002 或 EF-001/EF-002,交叉检查 `kicad` thermal 的 MLCC derating 和 ferrite/inductor overheating;过应力 MLCC 会退化,热 ferrite 会漂移阻抗。
- 用 `spice` skill 为 SPICE-enhanced PDN/filter checks 提供 simulator backend。
- 在报告中说明这是风险分析器,不是合规预测器;能捕获约 70% 常见 EMC 设计错误,不能保证 FCC/CISPR 合规,只有 accredited lab 校准测量才能保证;但可把 first-spin failure rate 从约 50% 降到约 20-30%,每次避免 respin 可能节省 $5K-$50K。
- 用 `test_plan` 的 `frequency_bands`、`interface_risks`、`probe_points` 准备预合规测试。
- 用 `regulatory_coverage` 的 `applicable_standards` 和 `coverage_matrix` 了解哪些标准适用、哪些覆盖是 partial、哪些需要实验室测试。
- 在制造前,将 CRITICAL 和高风险项目转成修复建议并复跑分析验证。
适用边界 · 注意事项
- 需要保证正式 FCC/CISPR/CE/MIL 合规、或需要绝对发射电平预测时不要用;只有 accredited lab 校准测量能保证合规。
- 设计涉及复杂 enclosure effects(屏蔽、孔缝、接缝)、未知外部 cable routing、或复杂几何需要 full-wave simulation 时不要单独依赖此技能;这些超出其能力。
- 没有 KiCad 设计文件、没有先运行 `analyze_schematic.py`/`analyze_pcb.py` 生成 JSON,或环境不满足 Python 3.10+ 时不要用;脚本依赖这些输入。