KiCad プロジェクト解析・回路図作成スキル
関連スキル
| スキル | 目的 |
|---|---|
bom | BOM 抽出、エンリッチメント、発注、エクスポートワークフロー |
digikey | DigiKey での部品検索(試作調達) |
mouser | Mouser での部品検索(二次試作ソース) |
lcsc | LCSC での部品検索(量産調達、JLCPCB) |
element14 | Newark/Farnell/element14 の検索(国際調達、信頼性の高いデータシート) |
jlcpcb | PCB 製造・実装発注 |
pcbway | 代替 PCB 製造・実装 |
spice | 検出されたサブ回路の SPICE シミュレーション検証 |
emc | EMC 事前適合リスク分析 — 回路図 + PCB アナライザ出力を使用 |
ハンドオフガイダンス: このスキルを使用して回路図/PCB を解析し、構造化データを抽出します。BOM エンリッチメント、価格調査、発注のために bom にハンドオフします。部品検索とデータシート取得のために digikey / mouser / lcsc / element14 にハンドオフします。製造発注と DFM ルール検証のために jlcpcb / pcbway にハンドオフします。設計レビュー時には、SPICE シミュレータがインストールされている場合(which ngspice ltspice xyce で確認)、必ず spice を実行してください。回路図と PCB 解析の両方が利用可能な設計レビュー時には、必ず emc を実行して EMC 事前リスク分析を行ってください。これらはオプションではありません。スキップすると、値計算エラーや EMC リスクが見逃される可能性があります。
解析前: ユーザーが KiCad プロジェクトの解析やレビューを依頼した場合、プロジェクト内に datasheets/ ディレクトリが存在するか確認してください。存在せず、DigiKey API キー(DIGIKEY_CLIENT_ID)が利用可能な場合は、最初にデータシートの同期を提案します:「解析前にコンポーネントのデータシートをダウンロードできます。これにより、メーカー仕様に基づくピンレベル検証とデカップリング検証が可能になります。同期しますか?」ユーザーが拒否した場合、または API キーが設定されていない場合は、データシートなしで解析を進めてください。解析はデータシートなしでも機能しますが、データシート検証による結果は利用できません。
アナライザ出力に DS-001 の結果(重要度 high、検出器 audit_datasheet_coverage)が表示された場合、レビューは検証済みの主張を行うことはできません。停止し、(a) digikey / mouser / lcsc / element14(資格情報/在庫があるもの)を介してデータシート同期を実行するか、(b) BOM 部品に MPN を入力するか、(c) レポート内で、すべてのピンレベル、電気的、レギュレータの結果が 整合性のみ であることを明示的に述べてください — 「検証済み」「確認済み」「データシートによる」という言葉はどこにも使用しないでください。DS-002(MPN が設定されているがデータシートがない)および DS-003(MPN カバレッジが部分的)は、引用する部品に対して同じ意味を持つよりソフトなバリエーションです。
回路図作成(描画・再描画)
ユーザーが 回路図の作成、追加、再描画、スタイル変更 を依頼した場合にこのワークフローを使用します(例:「5V/5A TPS54560 回路を追加」、「回路図を見やすいスタイルに描画」、「バック回路を生成」、「この電源を再描画」)。
- 最初に標準を読む。
references/schematic-drawing-standards.mdは、回路図の作成または編集前に必須です。LM5013 スタイルのパワーバスレイアウト、GND バス、ラベルポリシー、KiCad 9 配線制約(接続ポイントでワイヤを分割、ピン間単独ワイヤ禁止、共有ノードにラベル)、検証ゲートを定義しています。 - データシートから設計する。 IC データシートを取得/読み取り、ピン配置、Vref、絶対最大定格、標準応用例を抽出します。データシートの方程式を使用して値(帰還分圧器、RT/周波数、インダクタ、コンデンサ、補償)を計算し、描画前に数値を提示します。
- 1.27 mm グリッド上にブロックを計画し、標準的な LM5013 構造をミラーリングします:1 つの連続したパワーバス
INPUT → IC → SW → L → OUTPUT、下部 GND バス、制御コンポーネントは IC の下に整然としたバンド(機能ごとに 1 列)で配置します。配線を記述する前に、シンボルピン位置と回転セマンティクスを確認します。 - 生成する。
.kicad_schS 式を直接編集するか、生成スクリプトを使用します。すべてのワイヤはピン、ジャンクション、ラベル、または電源シンボルで終端する必要があります。レールはすべての接続ポイントでセグメントに分割されます。EasyEDA Pro の場合は、同じ標準でeasyeda-schematic-drawスキルにハンドオフします。 - KiCad 自体で検証する — このゲートは成功報告前に必須です:
kicad-cli sch erc→ 0 エラー / 0 ワーニングkicad-cli sch export netlist→ 設計意図とピン単位で一致- 回路図アナライザの実行、ヒューリスティック Vout 推定をデータシート Vref に補正
- ジオメトリチェック:シンボルボディの重なりなし、IC ボディ内のラベルなし
- PDF/PNG レンダリング + 目視レビュー:1 つの連続パワーバス、読みやすい制御バンド、コンポーネントの重なりなし
- 設計値を方程式、検証証拠、修正したアナライザの制限とともに報告します。
以下の解析および設計レビューワークフローは、生成されたものにも適用されます。
設計レビュー契約
ユーザーが 設計レビュー、完全レポート、製造準備完了評価、または同等のものを依頼した場合、1 つまたは 2 つのアナライザを実行してその結果を要約するだけで止まらないでください。このスキルでの設計レビューには、より厳格な契約があります:
- アナライザコマンドセクションだけでなく、この
SKILL.mdの完全なワークフローを読むこと。 - レポートを作成する前に
references/report-generation.mdを読むこと。 - プロジェクト内のファイルに適用可能なすべてのアナライザを実行し、実行したものとしなかったものを明示的に述べること。
- 何かを「検証済み」と主張する前に、生ファイルとデータシートのクロス検証を実行すること。
- ブロッカーに格上げする前に、アナライザの偽陽性の可能性をトリアージすること。
- 必要なステップが実行できなかった場合、黙って省略するのではなく、レビューギャップとして述べること。
これを最低基準として扱ってください。アナライザの JSON だけが最終レビューではありません。
最小限のレビューチェックリスト
完全な設計レビューの場合、レポートで以下の各項目を明示的に説明してください:
datasheets/ディレクトリの存在、同期済み、または検証ギャップの記載analyze_schematic.pyanalyze_pcb.py --fullcross_analysis.pyanalyze_emc.py- シミュレータがインストールされている場合の SPICE シミュレーション
- 回路図と PCB の JSON が両方存在する場合の
analyze_thermal.py - 製造出力が存在する場合の
analyze_gerbers.py - ネットワークアクセスと MPN カバレッジが許す場合のライフサイクル監査
- 以前のレビュー / 以前の実行との差分チェック
- 重要部品に対する生の回路図/PCB スポット検証の完全検証への格上げ
- ブロッカー、検証根拠、偽陽性、スキップされた分析のための明示的なレポートセクション
項目が該当しない場合は、その理由を述べてください。スキップされた場合は、その理由を述べてください。失敗した場合は、それが信頼性をどのように制限するかを述べてください。
よくあるレビュー失敗モード
この契約が防止しようとする失敗モードは以下の通りです:
- 回路図 + PCB + EMC 出力で止めて完全レビューと呼ぶこと
- 予想されるレイアウトアーティファクトかどうかを確認せずにアナライザ結果を報告すること
- 直接的なデータシート証拠や構造化抽出証拠なしに「検証済み」と主張すること
- 熱、ライフサイクル、以前のレビューとの差分、ガーバーチェックを開示せずに省略すること
- 判定、ブロッカーテーブル、検証根拠、スキップされた分析のメモがないレポートを作成すること
- このスキルの最初の部分だけを読み、ファイルの後半にある設計レビューワークフローを見落とすこと
PDF 回路図解析
このスキルは PDF 回路図 も処理します — リファレンスデザイン、開発ボードの回路図、評価ボードのドキュメント、アプリケーションノート、データシートの標準応用例回路など。一般的なユースケース:
- メーカーのリファレンスデザインを解析して回路を理解する
- サブ回路(電源、USB インターフェース、センサーフロントエンド)を抽出して自分の KiCad 設計に組み込む
- PDF リファレンスデザインを自分の回路図と比較する
- PDF 回路図から完全な BOM を抽出する
- PDF 内のコンポーネント値を最新のデータシートに対して検証する
ワークフロー: PDF ページを視覚的に読み取る → コンポーネントと接続を特定 → 構造化データを抽出 → KiCad シンボルとネットに変換 → データシートに対して検証する。
完全な方法論(コンポーネント抽出、表記規則、ネットマッピング、サブ回路抽出、KiCad 変換、検証)については、references/pdf-schematic-extraction.md を参照してください。
抽出された回路とデータシートの詳細な検証(値の検証、パターンチェック、エラー検出)については、references/schematic-analysis.md の方法論を使用してください。
解析スクリプト
このスキルには、KiCad ファイルから包括的な構造化 JSON を 1 パスで抽出する Python スクリプトが含まれています。最初にこれらを実行し、その後出力について推論してください。
アドホックな抽出スクリプトを作成する代わりに、アナライザの JSON 出力を直接読んでください。JSON スキーマには、カスタムコードで間違えやすい特定のフィールド名があります(以下および references/output-schema.md に文書化)。特定のセクションを抽出するには:python3 -c "import json; d=json.load(open('file.json')); print(json.dumps(d['key'], indent=2))"。
JSON が予想外の動作をした場合 — AttributeError、予期しない形状、値がある「はず」のフィールドが None を返す場合 — 2 回目の抽出試行の前に --schema を実行してください。すべてのトップレベルキーの正確なフィールド名と型を出力します:
python3 <skill-path>/scripts/analyze_schematic.py --schema
python3 <skill-path>/scripts/analyze_pcb.py --schema
python3 <skill-path>/scripts/analyze_gerbers.py --schema
JSON フィールドチートシート — アナライザ出力を手動で読む際の最も一般的な間違い:
| 必要なもの | 正しいパスとフィールド | よくある間違い |
|---|---|---|
| ネット上のピン | nets[<name>].pins[].component / .pin_number / .pin_name / .pin_type | ref, pin, type, number |
| 名前なしネットの表示名 | nets[<name>].display_name — 設定されている場合、名前付き IC ピンが 1 つだけの __unnamed_N ネットに対する Ref.PinName ヒント(例:__unnamed_36 → U1.VBOOT)。存在しない場合、アナライザが曖昧さを解決できなかったことを意味します。 | display_name を無視して生の __unnamed_36 をレポートに貼り付ける |
| IC ピンマップ | ic_pin_analysis[] は IC エントリの リスト であり、各エントリは .reference と .pins[](.pin_number / .pin_name / .pin_type / .net / .connected_to[] を含む)を持ちます。 | {ref: {...}} または pins[].number として扱う |
| 検出回路 | パターンマッチされたすべての回路(電源レギュレータ、RC フィルタ、水晶発振回路、ブリッジなど)は findings[] にあります — finding_schema.get_findings(data, Det.POWER_REGULATORS) などでフィルタリングします。subcircuits[] から読まないでください:これは IC 近傍グループ化({center_ic, ic_value, neighbor_components, …})であり、カテゴリ化された検出インデックスではありません。 | subcircuits.power_regulators、subcircuits.rc_filters、または任意の subcircuits[type] キーを探す — これらは v1.3 出力には決して存在しませんでした。 |
| ゾーンネット | pcb.zones[].net は 整数のネット ID であり、文字列ではありません。f"{net!r}" を使用するか、最初に変換してください。 | f"{net:20s}" — ValueError: Unknown format code 's' for object of type 'int' でクラッシュします。 |
| フットプリント位置 | pcb.footprints[].x / .y はトップレベルにあります(.position ラッパーはありません)。 | footprints[].position.x |
| 分析結果 | findings[] フラットリスト — 各エントリは rule_id、detector、severity、summary、report_context を持ちます。finding_schema.get_findings(data, Det.*) または group_findings(data) でフィルタリングします。 | signal_analysis.power_regulators[] のようなキー付き辞書を探す(v1.3 より前の形式、削除済み) |
これにより、フォーマット文字列のバグと誤ったフィールド名を防ぎます。出力フォーマットには f-文字列または json.dumps() を使用してください — 文字列以外の型で %s を使用しないでください。完全なスキーマと一般的な抽出パターンについては、references/output-schema.md を参照してください。
以下のすべてのコマンドで、<skill-path> はこのスキルのベースディレクトリを指します(ロード時にこのファイルの先頭に表示されます)。
回路図アナライザ
python3 <skill-path>/scripts/analyze_schematic.py <file.kicad_sch> --analysis-dir analysis/
python3 <skill-path>/scripts/analyze_schematic.py <file.kicad_sch> --analysis-dir analysis/ --compact
python3 <skill-path>/scripts/analyze_schematic.py <file.kicad_sch> --output analysis.json # 単発、キャッシュなし
構造化 JSON(基板の複雑さに応じて約 60〜220KB)を出力し、以下を含みます:
- コンポーネントと BOM:リファレンス、値、フットプリント、lib_id、タイプ分類、MPN、データシートを含む在庫;数量で重複排除された BOM
- ネット:ピンとネットのマッピング、ワイヤ数、未接続を含む完全な接続マップ
- 検出されたサブ回路(パターンマッチされた回路 — すべて
findings[]エントリとして、対応するDet.*検出器とともに出力されます;取得にはget_findings(data, Det.POWER_REGULATORS)などを使用):- 電源レギュレータ — LDO/スイッチング/反転トポロジ、データシート検証済み Vref ルックアップ(約 60 ファミリ)による Vout 推定(ヒューリスティックフォールバックと固定出力サフィックス解析付き)、
vref_source(lookup/heuristic/fixed_suffix)およびvout_net_mismatchフィールド - 分圧器、RC/LC フィルタ(カットオフ周波数)、帰還ネットワーク、水晶回路(負荷容量解析、IC ピンベース検出)
- オペアンプ回路(構成、ゲイン、積分器/補償器)、トランジスタ回路(ネット名認識負荷分類:モーター/ヒーター/ファン/ソレノイド/バルブ/ポンプ/リレー/スピーカー/ブザー/ランプ;FET レベルシフタートポロジ)
- ブリッジ回路(H ブリッジ、3 相、シート間検出)、保護デバイス(ESD/TVS)、電流検出、デカップリング解析
- ドメイン固有:RF チェーン、RF 整合ネットワーク、BMS、イーサネット(BFS PHY からコネクタへのトレーシング)、HDMI/DVI インターフェース、メモリインターフェース、キーマトリックス(ネット名およびトポロジベース)、絶縁バリア、アドレス指定可能 LED チェーン(WS2812/SK6812/APA102)、バッテリ充電器(TP4056/MCP73831/BQ2404x)、モータードライバ(A4988/TMC2209/DRV8301)、ESD 保護カバレッジ監査、デバッグインターフェース(MCU トレーシング付き SWD/JTAG)、パワーパス(ロードスイッチ/理想ダイオード/USB PD コントローラ)、ADC 信号調整(外部 ADC + 電圧リファレンス、アンチエイリアシングクロスリファレンス付き)、リセット/スーパーバイザ回路(電圧スーパーバイザ/ウォッチドッグ/RC リセットネットワーク)、クロック分配(クロックジェネレータ/PLL/発振器出力トレーシング)
- 電源レギュレータ — LDO/スイッチング/反転トポロジ、データシート検証済み Vref ルックアップ(約 60 ファミリ)による Vout 推定(ヒューリスティックフォールバックと固定出力サフィックス解析付き)、