人類好讀、好除錯的原理圖與佈局
目標讀者是拿著電表、示波器除錯的人:看圖就知道電從哪裡來、訊號往哪裡去、該量哪一點。 專案自己的協作規則(單一寫入者、改檔前先保全版本、審查流程)優先;本 skill 只規定「畫法」與「證明沒改到電路」。
0. 開工前要問使用者的決策(不要自己決定)
只有要改檔時才問;只是審查可讀性、不改檔,就直接審,結果列成建議清單。要改檔時一次問完,答完才動檔:
- 正本是誰:程式產生器(腳本輸出
.kicad_sch),還是直接編輯.kicad_sch(KiCad GUI、KiCad MCP 或腳本)?改成直接編輯後,產生器要刪除或停用,否則重跑會蓋掉人工修改。 - 誰操作:agent(MCP/腳本,不開 GUI)或使用者開 GUI。同一時間只有一位寫入者。
- IC 是否換內建 symbol(有的才換;沒有的重畫自訂 symbol)。
- 網路名稱:保留原名(文件、韌體、審查紀錄不用改),或改 KiCad 標準名(
+3V3)。 - 跨頁訊號:頁邊 global label,或 hierarchical label+根頁連線。
- MCP 做不到時的備案:小腳本直接改文字檔,或停下來問。
- 審查者:另一個 agent、唯讀子代理,或使用者目視。
1. 原理圖畫法
Symbol
- 分立元件一律用 KiCad 內建 symbol:MOS
Transistor_FET:<MPN>或Device:Q_NMOS/Q_PMOS、開關Switch:SW_SPDT/SW_Push、電池Device:Battery_Cell、TVS/ESDDevice:D_TVS(雙向)或Power_Protection:*、天線Device:Antenna_Shield、測試點Connector:TestPoint、R/C/L/LEDDevice:*。不要用畫成方框的自訂 symbol 代表這些元件。 - IC 有內建 symbol 就用(例如
RF_GPS:MAX-M10S、Power_Management:TPS22919DCK、Logic_LevelTranslator:SN74LVC1T45DBV)。查法:KiCad 10 的內建庫是一個 symbol 一個檔,看 KiCad 安裝目錄的share/kicad/symbols/<庫名>.kicad_symdir/<名稱>.kicad_sym是否存在;舊版(單一<庫名>.kicad_sym)則在檔內搜尋symbol "<名稱>"。上面的名稱在 KiCad 10.0.6 的官方庫都存在(2026-10 確認)。 - 沒有內建 symbol 的 IC/模組自己畫:電源腳在上、GND 在下、輸入在左、輸出在右;同功能的腳(SPI、UART、電源、控制)排在一起;腳名照規格書;未用腳標 no-connect。
- 換 symbol 一定核對腳號 = footprint 焊盤號。內建 symbol 的腳號常和自建 footprint 不同(例:SPDT 開關的公共端、電池 +/−、天線饋入/接地)。對不上時換 symbol 或改用自訂 symbol,不改 footprint、不改連線;確實要改時先問使用者。
- 換 symbol 時保留位號、值、footprint、Datasheet、Description 與所有自訂欄位(Manufacturer、MPN、供應商料號、DNP 等)。
連線與網路
- 電源與地用電源 symbol(
power:GND、power:+3V3…)。保留原網路名稱時,內建庫沒有的名稱(如VSYS)在專案庫做同樣式的電源 symbol;網路名稱由 symbol 的 value 決定,做完要在 netlist 確認名稱正確。 - 電源 symbol 方向固定:正電源朝上、GND 朝下。
- 頁內元件之間實際畫線,不要每支腳都掛 label。label 只用在跨頁訊號(集中在頁邊的「介面欄」),或線太長會穿越其他區塊時。
- 同一網路不要同時用 label 和不同名稱的電源 symbol。
- 去耦電容畫在所屬 IC 電源腳旁,從腳拉線到電容再到 GND symbol。
- 線不穿過元件本體;T 形接點要有 junction,避免四向交叉接點。
- 未用腳放 no-connect;ERC 需要的
PWR_FLAG放在電源進入點旁。
排版
- 依電流/訊號流向由左到右:例如 電池 → 保護 → 反接 → 開關 → 系統電源 → 升壓/LDO → 負載;MCU → 位準轉換 → 模組 → RF 前端 → 天線。
- 每個功能區用圖框圈起來並加標題,例如「電池保護」「5V 升壓」。
- 電源在上、GND 在下;同類電路(一排下拉電阻、測試點)排成一列對齊。
- 元件、線、label 放在 50 mil(1.27 mm)格點;symbol 只用 0°/90°/180°/270°。
- 文字不可重疊:位號、值、label、註解、腳名彼此不重疊,也不壓在線或 symbol 上;值和位號放在 symbol 旁同一側。
- 設計註解(電源開關規則、晶片勘誤、斷電隔離、腳位不接的原因)放在相關電路旁的空白處,必要時加框;不要只留在外部文件。
- 測試點旁標網路名與預期值(例如
TP1 VBUS_SENSE, 無 USB 時 <0.5 V)。 - 紙張不夠就換 A3 或拆頁,不要擠。根頁只放子頁方框與簡短的方塊說明。
2. PCB 佈局(方便除錯的部分)
只有要畫或審查佈局時才讀 references/layout.md:分區與位號、4 層板層別分工、測試點與除錯對照圖、手焊友善、佈局驗證。用 Konnect 改佈局前,先讀 references/konnect-limits.md。
3. 驗收:證明只改畫法、沒改電路
改圖前先保全(git commit 或完整副本),並把基準 netlist 複製出來。
- 匯出 netlist:
kicad-cli sch export netlist --format kicadxml -o <new>.xml <root>.kicad_sch - 比對連線分群與元件欄位(腳本在本 skill 目錄的
scripts/):python -I <skill 目錄>/scripts/compare_netlist.py <base>.xml <new>.xml [--names]必須IDENTICAL。保留原網路名稱時加--names。任何差異都要能逐條說明,否則回頭修圖。 - ERC:
kicad-cli sch erc --severity-all -o erc.rpt <root>.kicad_sch→ 0 錯誤、0 警告。 - symbol/footprint 腳號:
python -I <skill 目錄>/scripts/check_pin_pad.py <new>.xml --pcb <專案名>.kicad_pcb還沒有 PCB 時改用--footprints <footprint 資料夾>。必須PASS;「pad without pin」逐條說明(例如固定用焊盤),「pin without pad」一律回頭修。 - 目視:
kicad-cli sch export pdf→pdftoppm -r 110 -png→ 逐頁看圖。pdftoppm來自 poppler,Windows 沒有內建(可用winget install oschwartz10612.Poppler或 conda 的poppler安裝);沒有時直接開 PDF 看,或請使用者目視。檢查文字無重疊、線不穿元件、分區清楚、註解都在、流向從左到右。MCP 的重疊偵測工具可輔助,但不能取代目視。 - 交審查者看固定版本,重點是 netlist 比對結果與可讀性。
以上都通過才能說「畫法改完、電路不變」;這仍不代表電氣正確或實板可用。
4. 工具搭配
原則:MCP 負責讀現況和即時編輯,腳本與 kicad-cli 負責判定。MCP 回覆「成功」不算驗收,一律用第 3 節讀回。
| 步驟 | MCP | 腳本/CLI(相對於本 skill 資料夾) | 通過條件 |
|---|---|---|---|
| 開工前存基準 | — | kicad-cli sch export netlist --format kicadxml → base.xml | 檔案存在 |
| 讀現況 | Konnect 0.12.1:get_project_info、list_schematic_components | — | 讀回內容與磁碟檔一致 |
| 改畫法 | Konnect sch_components、sch_wiring、sch_hierarchy | MCP 做不到的用小腳本改 .kicad_sch | 每張子頁改完就跑第 3 節 1–3 步 |
| 證明電路不變 | — | scripts/compare_netlist.py、kicad-cli sch erc | IDENTICAL、ERC 0 |
| 腳號對焊盤 | Konnect get_component_pads(只當輔助) | scripts/check_pin_pad.py | PASS |
| PCB 即時調整 | Konnect pcb_components(經 KiCad IPC) | kicad-cli pcb drc --schematic-parity | 回覆 source=ipc、DRC 0 |
| 目視 | — | kicad-cli sch export pdf(加 pdftoppm) | 審查者看過 |
- Konnect 版本不是 0.12.1 時,先跑
get_installation_info,再取得tools/list(或用konnect-call.mjs的listTools),以實際 schema 為準。安裝、設定與能力表見 pcb-agent-workflow 的docs/workflow/kicad-tools.md。 - 沒有 Konnect 時:讀取改用
kicad-cli匯出,修改改用小腳本直接改文字檔(KiCad 沒開著該檔時),驗收照第 3 節不變。 - 有些 KiCad MCP 工具會把設計資料送到遠端服務。對正式設計使用前逐一確認,並取得使用者同意。
5. 工具備忘
- 用 KiCad MCP(例如 Konnect)時,先列出並載入原理圖相關工具組(元件、連線、批次、分析、匯出),以實際 schema 為準,不要猜參數。
- MCP 做不到的動作(例如保留自訂欄位換 symbol)改用小腳本直接改
.kicad_sch文字;一樣在檔案沒被 GUI 開啟時進行、一樣走第 3 節驗收。 - 每完成一張子頁就跑一次第 3 節 1–3 步,不要全部畫完才比對。


