emc について
emc は、製造前に一般的な電磁両立性の問題を確認する、KiCad PCB 向けの EMC 予備適合リスク分析スキルです。幾何ルール、解析的な推定、任意の SPICE シミュレーションを組み合わせますが、認定試験機関での測定に代わるものではありません。
主な機能
- 01グラウンドプレーンとリターンパスの確認
- 02デカップリング、フィルター、PDN インピーダンスの分析
- 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 試験で不合格となる最も一般的な原因を特定します。
これはリスクアナライザーであり、適合性を予測するものではありません。 製造前に、よくある EMC 設計上のミスの約 70% を検出します。FCC/CISPR への適合を保証することはできません。適合を確認できるのは、認定試験所での校正済み測定だけです。ただし、初回試作での不合格率を約 50% から約 20~30% に抑えられる可能性があり、基板の再製作を 1 回回避するごとに 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 解析を実行し、その検出結果をレポートに反映してください。
要件
- Python 3.10 以降 — 標準ライブラリーのみ。pip 依存関係はありません
- 回路図アナライザー JSON —
analyze_schematic.py --outputで生成 - PCB アナライザー JSON —
analyze_pcb.py --full --outputで生成(--fullの使用を推奨) - SPICE シミュレーター (任意) — SPICE を活用した PDN/フィルターチェック用の ngspice、LTspice、または Xyce。自動検出されます。使用できない場合も、解析モデルはそのまま実行されます。
ワークフロー
ステップ 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 の DC バイアスによるディレーティング(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件の検出結果を加算します(重大度の高い順)。これにより、2層基板で GP-001 のようなネット単位のルールがスコアを飽和させるのを防ぎます。検出結果はすべて報告されます。上限が適用されるのはスコアのみです。
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 | 国際(EU 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 より高い精度で予測することはできません
- 筐体の影響(シールド、開口部、継ぎ目)は考慮できません
- 外部ケーブルの配線が不明な場合、ケーブル放射を予測することはできません
- 複雑な形状の全波シミュレーションに代わるものではありません
- 適合を保証するものではありません — 認定試験所での測定のみが保証できます