키캐드(KiCad) AI 설계 자동화 시스템 — 종합 가이드

lordly 조회 35

키캐드(KiCad) AI 설계 자동화 시스템 — 종합 가이드

문서 버전: 1.0 (2026-09-07)
대상 환경: Windows 11 · D:\AICAD\KICAD 워크스페이스 · ZCode(Claude 계열 에이전트) + KiCad 10 + kicad-mcp-pro
이 문서는 실제 설치와 테스트를 모두 수행하고 검증한 결과를 기록한 것입니다.



1. 시스템 개요

이 시스템은 사용자가 자연어로 요청하면 AI가 회로도 작성 → ERC 검사 → PCB 부품 배치 → 자동배선 → DRC 검증 → 제조 파일 생성까지 전 과정을 수행하고, 진행 상황은 웹 모니터 페이지로 실시간 시청할 수 있게 구성됩니다.

핵심 설계 원칙은 "무간섭(Non-intrusive)" 입니다:

  • AI의 모든 작업은 백그라운드(파일 기반 + CLI)로 수행됩니다.
  • 사용자의 마우스·키보드·화면 포커스를 절대 가져가지 않습니다.
  • 설계 결과는 웹 모니터(자동 갱신 렌더 이미지)와 KiCad 파일로 확인합니다.
구성 요소 역할 버전/위치
KiCad 본체 EDA(회로도·PCB 편집기), kicad-cli, pcbnew 파이썬 모듈 10.0.6
kicad-mcp-pro AI↔KiCad 연결 MCP 서버 (289개 도구) 3.34.0
uv / uvx MCP 서버 실행 런처 (Python) uv 0.12.10
FreeRouting 자동배선 엔진 (Java) 1.9.0 (Java 17 호환)
모니터 웹서버 설계 진행 실시간 시청 페이지 (자체 제작) Python 표준 라이브러리
ZCode 에이전트 실행 환경 (MCP 자동 연결)

2. 전체 아키텍처

flowchart LR
    subgraph 사용자["👤 사용자"]
        REQ["자연어 요청
'ESP32 보드 만들어줘'"] WATCH["🌐 브라우저
웹 모니터 시청"] end subgraph AGENT["🤖 ZCode 에이전트 (백그라운드, 무간섭)"] AI["AI 설계 판단"] MCP["kicad-mcp-pro
(289개 도구)"] CLI["kicad-cli
(ERC/DRC/렌더/제조파일)"] PY["KiCad 내장 Python
pcbnew 모듈
(배치·DSN/SES)"] end subgraph FILES["📁 설계 파일 (D:\AICAD\KICAD)"] SCH[".kicad_sch 회로도"] PCB[".kicad_pcb 보드"] OUT["output/
넷리스트·Gerber·BOM"] FRAMES["monitor/frames/
SVG·PNG 렌더"] end subgraph KICADGUI["🖥 KiCad GUI (선택, 열어만 두는 용도)"] EE["회로도 편집기"] PCBV["PCB 편집기"] IPC["IPC API 서버
(상태 읽기용)"] end REQ --> AI AI --> MCP AI --> CLI AI --> PY MCP -->|"파일 읽기/쓰기"| SCH MCP -->|"파일 읽기/쓰기"| PCB MCP -->|"IPC (열린 문서 상태 읽기)"| IPC PY --> PCB CLI --> OUT SCH --> FRAMES PCB --> FRAMES OUT --> FRAMES FRAMES -->|"2초 폴링"| WATCH OUT -.->|"▶ 열기 버튼"| KICADGUI

동작 방식 요약:

  • 쓰기(설계): MCP 도구가 .kicad_sch / .kicad_pcb 파일을 직접 수정합니다. 열려 있는 KiCad 창에 즉시 반영되지는 않고, 파일 → 되돌리기(Revert) 로 새로 불러와야 보입니다.
  • 읽기(상태): KiCad GUI의 IPC API 서버가 켜져 있으면, 열려 있는 문서의 선택 상태·네트 등을 AI가 읽을 수 있습니다.
  • 시청: 각 단계가 끝날 때마다 SVG/PNG 렌더가 monitor/frames/에 갱신되고, 웹 모니터가 2초마다 자동으로 가져갑니다.

3. 설치 가이드

실제 수행한 설치 순서입니다. 새 PC에 재구축할 때 이 순서대로 하면 됩니다.

3.1 KiCad 10 설치 (winget)

winget install --id KiCad.KiCad --exact --silent `
  --accept-package-agreements --accept-source-agreements
  • 설치 위치: C:\Users\js\AppData\Local\Programs\KiCad\10.0 (사용자 단위 설치)
  • 확인: kicad-cli version10.0.6

3.2 uv / uvx 설치 (MCP 서버 런처)

python -m pip install --user uv
# 실행 파일 위치: C:\Users\js\AppData\Roaming\Python\Python311\Scripts\uvx.exe

3.3 kicad-mcp-pro 서버 (uvx가 자동 설치)

별도 설치 명령이 필요 없습니다. uvx kicad-mcp-pro 최초 실행 시 캐시에 설치됩니다(94개 패키지).
수동 테스트:

uvx kicad-mcp-pro --version        # 3.34.0
uvx kicad-mcp-pro health           # kicad-cli 탐지 확인

3.4 KiCad IPC API 서버 활성화

%APPDATA%\kicad\10.0\kicad_common.json에서:

"api": { "enable_server": true, ... }

→ 열려 있는 KiCad 문서의 상태를 AI가 읽을 수 있게 됩니다(61개 IPC 도구).

3.5 전역 라이브러리 테이블 초기화 (신규 설치 후 필수!)

KiCad를 GUI로 한 번도 실행하지 않으면 전역 심볼/풋프린트 테이블이 비어 있어
"심볼 라이브러리 'Device'가 포함되어 있지 않음" 경고가 납니다. 템플릿을 복사해서 해결:

copy "C:\Users\js\AppData\Local\Programs\KiCad\10.0\share\kicad\template\sym-lib-table" "%APPDATA%\kicad\10.0\"
copy "C:\Users\js\AppData\Local\Programs\KiCad\10.0\share\kicad\template\fp-lib-table"  "%APPDATA%\kicad\10.0\"

3.6 FreeRouting 자동배선 엔진

# Java 17 호환 버전 (v2.4.1은 Java 25 필요하므로 사용 금지)
curl -L -o D:\AICAD\KICAD\tools\freerouting-1.9.0.jar `
  https://github.com/freerouting/freerouting/releases/download/v1.9.0/freerouting-1.9.0.jar

⚠️ 주의: java -jar freerouting-1.9.0.jar -h처럼 옵션 없이 실행하면 GUI가 뜹니다.
반드시 -de 입력.dsn -do 출력.ses -quit 형태로 실행하세요(→ 7장).

3.7 ZCode MCP 등록

D:\AICAD\KICAD\.zcode\config.json (워크스페이스 스코프 — 세션 시작 시 자동 연결):

{
  "mcp": {
    "servers": {
      "kicad": {
        "command": "C:\\Users\\js\\AppData\\Roaming\\Python\\Python311\\Scripts\\uvx.exe",
        "args": [
          "kicad-mcp-pro", "--transport", "stdio",
          "--profile", "full", "--mode", "write",
          "--project-dir", "D:\\AICAD\\KICAD",
          "--log-file", "D:\\AICAD\\KICAD\\.zcode\\kicad-mcp.log"
        ],
        "env": {
          "KICAD_MCP_KICAD_CLI": "C:\\Users\\js\\AppData\\Local\\Programs\\KiCad\\10.0\\bin\\kicad-cli.exe",
          "KICAD_CLI_PATH": "C:\\Users\\js\\AppData\\Local\\Programs\\KiCad\\10.0\\bin\\kicad-cli.exe",
          "KICAD_MCP_WORKSPACE_ROOT": "D:\\AICAD\\KICAD"
        }
      }
    }
  }
}

프로필/모드 조합:

옵션 의미 도구 수
--profile full 전체 도구 세트 MCP에서 289개 노출
--mode write 파일 쓰기 허용 (회로도/PCB 편집)
--mode experimental + 자동배선(FreeRouting)·라우팅 도구 336개
기본값(profile 미지정) 읽기 전용 검토 24개 자동화엔 부적합

4. 설정 파일 및 배포 위치

flowchart TD
    A["D:\AICAD\KICAD\ (워크스페이스)"] --> B[".zcode\config.json
ZCode MCP 등록 (세션 시작 시 자동 연결)"] A --> C["AGENTS.md
AI 행동 규칙 (매 세션 자동 참조)"] A --> D["monitor\
웹 모니터 (server.py, index.html, state.json, frames/)"] A --> E["sample_board\
완성 샘플 (배선+제조파일)"] A --> F["demo_led\
회로도 전용 데모 (PCB 빈 상태)"] A --> G["tools\
freerouting-1.9.0.jar"] A --> H[".zcode\*.py
검증/배치/렌더 스크립트"]
파일/폴더 설명
C:\Users\js\AppData\Local\Programs\KiCad\10.0\ KiCad 본체, kicad-cli, 내장 Python(파이썬 pcbnew용)
C:\Users\js\AppData\Roaming\kicad\10.0\ KiCad 사용자 설정(IPC 서버 스위치, 라이브러리 테이블)
C:\Users\js\.zcode\cli\config.json ZCode 사용자 전역 설정 (MCP는 워크스페이스 스코프 사용)
D:\AICAD\KICAD\.zcode\config.json ZCode 워크스페이스 MCP 등록 ★
D:\AICAD\KICAD\AGENTS.md AI가 매 세션 읽는 프로젝트 규칙 ★
D:\AICAD\KICAD\monitor\ 웹 모니터 서버·페이지·프레임 ★

5. 사용 방법 (ZCode 세션)

5.1 세션 시작

  1. ZCode에서 D:\AICAD\KICAD 워크스페이스로 세션을 엽니다 → MCP kicad 자동 연결
  2. 모니터 서버가 죽어 있으면 AI가 자동으로 띄웁니다(AGENTS.md 규칙)
  3. http://127.0.0.1:8765 를 브라우저에 띄워두면 진행 상황을 실시간 시청 가능

5.2 요청 예시

요청 예시 AI가 수행하는 것
"12~24V 입력 + RS485 컨트롤러 보드 만들어줘" 요구사항 정리 → 블록도 제시 → 회로도 작성 → ERC → 배치 → 배선 → DRC → 제조파일
"sample_board 자동배선 해줘" DSN 내보내기 → FreeRouting → SES 적용 → DRC → 렌더 갱신
"이 데이터시트로 부품 만들어줘" 치수/핀맵 추출 → 확인 요청 → 풋프린트/심볼 생성
"Gerber 만들어줘" Gerber 7종 + 드릴 + 발주용 zip 생성, 모니터 파일 목록 자동 추가

5.3 설계 워크플로 (전체)

flowchart TD
    A["1. 요구사항 정리"] --> B["2. 블록도 제시 → 사용자 승인"]
    B --> C["3. 부품 선정 (데이터시트/라이브러리)"]
    C --> D["4. 회로도 작성 (심볼+라벨+전원심볼)"]
    D --> E{"5. ERC 통과?"}
    E -->|실패| D
    E -->|PASS| F["6. 넷리스트 추출"]
    F --> G["7. 풋프린트 배치 + 보드 외곽선
(pcbnew 스크립트)"] G --> H["8. 자동배선 (FreeRouting)"] H --> I{"9. DRC 통과?"} I -->|위반| H I -->|PASS| J["10. Gerber + 드릴 + BOM + 부착목록"] J --> K["11. 👤 사람 최종 검토 → 발주"]

5.4 사용자가 꼭 지켜야 할 규칙

  1. AI가 작업 중일 때 KiCad에서 저장(Ctrl+S) 금지 — AI가 쓴 파일을 옛 내용으로 덮어씁니다
  2. 최신 결과를 KiCad에서 보려면 파일 → 되돌리기(Revert) 또는 창을 다시 열기
  3. 제조 파일 발주는 반드시 사람이 3D/패턴을 검토한 후 진행

6. 웹 모니터 (실시간 설계 시청)

6.1 구성

flowchart LR
    subgraph 자동화["AI 자동화 (백그라운드)"]
        STEP["설계 단계 수행"] --> RENDER["렌더 생성
sch.svg / pcb.svg / pcb_top.svg
pcb_bottom.svg / board3d*.png"] RENDER --> STATE["state.json 갱신
(단계·ERC·DRC·로그)"] end subgraph 웹서버["monitor/server.py (:8765)"] SERVE["정적 파일 + JSON API"] end subgraph 브라우저["사용자 브라우저"] PAGE["index.html
2초 폴링"] end STATE --> SERVE --> PAGE PAGE -->|"/files → 파일 목록"| SERVE PAGE -->|"/open → KiCad로 열기"| SERVE
  • 주소: http://127.0.0.1:8765 (내 PC에서만 접근)
  • 실행: python D:/AICAD/KICAD/monitor/server.py (백그라운드)
  • 구성 파일: monitor/index.html(페이지), monitor/server.py(서버), monitor/state.json(상태), monitor/frames/(렌더)

6.2 화면 구성

카드 내용
📄 회로도 회로도 SVG (부품·라벨·전원심볼)
🟩 PCB 2D 배치+배선 전체 뷰
🟫 Top / Bottom 구리 패턴 앞면/뒷면(좌우반전) 동선 패턴
🧊 3D 미리보기 아이소메트릭 / Top / Bottom 3종
📂 생성 파일 워크스페이스 파일 자동 스캔 + ▶ KiCad로 열기 버튼 + 경로 복사 + 폴더 필터(전체/demo_led/sample_board)
검증 상태·로그 ERC/DRC 결과, 단계별 로그

6.3 API (서버 엔드포인트)

엔드포인트 인증 기능
GET / , /state.json , /frames/* 불필요 페이지·상태·렌더 서빙
GET /token 열기 버튼용 토큰 발급
GET /files?token=... 토큰 필요 KiCad 파일/산출물 자동 스캔
GET /open?token=...&path=... 토큰 필요 Windows 기본 연결(KiCad)로 파일 실행

보안: 127.0.0.1 바인딩(외부 접근 불가) + 토큰 + D:\AICAD\KICAD 내부 경로만 허용. 악성 웹사이트가
브라우저를 통해 몰래 파일을 열어주는 것을 토큰이 차단합니다.

6.4 파일 열기 버튼 동작 원리

브라우저 보안상 웹페이지가 로컬 프로그램을 직접 실행할 수는 없지만, 로컬에서 돌아가는 모니터
서버의 /open 엔드포인트가 os.startfile()로 Windows 기본 연결 프로그램을 호출
합니다.
.kicad_pro → KiCad 프로젝트, .kicad_sch → 회로도 편집기, .kicad_pcb → PCB 편집기, .pdf → PDF 뷰어.


7. 자동배선 파이프라인 (FreeRouting)

sequenceDiagram
    participant AI as AI (ZCode)
    participant KP as KiCad 내장 Python (pcbnew)
    participant FR as FreeRouting 1.9.0 (Java)
    participant DRC as kicad-cli DRC


    AI->>KP: ExportSpecctraDSN(board, design.dsn)
    KP-->>AI: DSN 생성 (회로 연결 정보)
    AI->>FR: java -jar freerouting-1.9.0.jar -de design.dsn -do design.ses -quit -mp 25
    Note over FR: 자동배선 + 최적화 (샘플보드: 약 3초)
    FR-->>AI: design.ses (배선 결과)
    AI->>KP: ImportSpecctraSES(board, design.ses)
    KP->>KP: 트랙 84개 / 비아 0개 기록 후 저장
    AI->>DRC: pcb drc --format json
    DRC-->>AI: 미배선 0, 위반 검증
    AI->>AI: Top/Bottom/3D 렌더 재생성 → 모니터 갱신

검증 결과 (sample_board): 트랙 84개, 비아 0개(단면 최적화), 미배선 0.
위반 1건은 0.0018mm 미세 클리어런스(제조 무영향 수준).

Java 버전 주의: v2.4.1은 Java 25(class 69) 필요 → 이 시스템은 Java 17 + v1.9.0 사용.
-h 옵션은 인식되지 않고 GUI가 뜨므로 사용하지 않습니다.


8. 데이터시트·치수표 기반 커스텀 부품 생성

제공 자료 생성 결과 사용 도구
패키지 치수표 (랜드·피치·바디) IPC-7351 표준 풋프린트 lib_generate_footprint_ipc7351
핀맵 표 (번호-이름-기능) 회로도 심볼 lib_generate_symbol_from_pintable
보드 치수·구멍·커넥터 좌표 외곽선·마운팅홀·배치 반영 pcbnew 스크립트
전기 사양 (전류·권장회로) 디커플링/트레이스 폭 계산 설계 규칙 엔진

절차(생략 금지): ① 자료에서 치수·핀맵 추출 → ② 추출 결과 표를 사용자에게 확인받음
③ 생성·적용 → ④ 3D 재확인. 스캔 이미지 PDF는 비전 판독 오차 가능성을 안내합니다.

준비 방법: 데이터시트 PDF 또는 치수표(텍스트/엑셀)를 D:\AICAD\KICAD\ 아래에 넣고
세션에서 "이 데이터시트로 ○○ 부품 만들어줘"라고 요청.


9. 외부 포맷 가져오기 (OrCAD 등)

갖고 있는 파일 가져오기 설명
OrCAD/Allegro PCB (.brd) ✅ 직접 지원 KiCad 8.0+ 내장 "Cadence Allegro/OrCAD PCB Editor" 임포터
OrCAD Capture 회로도 (.dsn) ❌ 미지원 넷리스트/부품표 기반 AI 재작성 또는 .brd만 가져오기 권장
Eagle, CADSTAR, EasyEDA, IPC-2581 등 ✅ 지원 KiCad 내장 임포터

가져오기 요청 시 AI가 먼저 파일을 무간섭으로 분석해 "직접 가져오기 가능/재작성 필요"를 판정합니다.
(.brd 임포터는 GUI 메뉴 전용이라 그 작업만은 화면 조작이 필요할 수 있습니다.)


10. 트러블슈팅 (실제 발생했던 문제들)

증상 원인 해결
ERC: "심볼 라이브러리 'Device' 미포함" 경고 KiCad 신규 설치 후 전역 라이브러리 테이블 비어 있음 템플릿 복사 (→ 3.5절)
MCP 쓰기 도구에서 "No schematic file configured" 프로젝트 미지정 kicad_set_project 호출 (sch/pcb/output 경로 포함)
MCP로 부품을 추가했는데 열린 KiCad 화면에 안 보임 정상 동작 (파일 직접 수정 방식) 파일 → 되돌리기(Revert) 또는 창 재오픈
IPC 관련 도구가 일부만 동작 열린 문서가 없음 (프로젝트 관리자만 열림) 회로도/PCB 편집기에서 해당 문서를 열 것
sch_add_no_connect 에러: x_mm/y_mm required 핀 좌표 필요 ERC 리포트의 위반 좌표(×100 = mm)를 사용
심볼 배치가 "OK"인데 실제로 없음 (ATtiny85-20SU) 존재하지 않는 심볼 이름 라이브러리 파일에서 실제 이름 확인 (→ ATtiny85-20S)
FreeRouting 최신 버전 실행 안 됨 v2.4.1은 Java 25 필요 v1.9.0 사용 (Java 17 호환)
java -jar freerouting.jar -h → GUI 팝업 -h 미지원 -de/-do/-quit 조합으로만 실행
KiCad 10 파이썬 GetTrackCount() AttributeError API 변경 len(board.GetTracks()) 사용
모니터 접근 403 (구버전 버그) 전체 경로에 토큰 검사 수정 완료 — 정적 파일은 공개, /files·/open만 토큰
웹에서 열기 버튼 무반응 모니터 서버 중지 python D:/AICAD/KICAD/monitor/server.py 재실행
GUI 자동화(마우스/키보드)가 사용자 방해 포그라운드 독점 구조 원칙: 무간섭 백그라운드 방식 사용 (AGENTS.md 규칙)

11. 파일 위치 총정리

D:\AICAD\KICAD\
├─ AGENTS.md                    ← AI 행동 규칙 (매 세션 자동 참조)
├─ 키캐드AI_설계시스템_종합가이드.md   ← 이 문서
├─ .zcode\
│  ├─ config.json               ← ZCode MCP 등록 (kicad 서버)
│  ├─ skills\pcb-design\SKILL.md ← PCB 설계 규칙 스킬
│  ├─ test_mcp.py               ← MCP 연결/도구 목록 테스트
│  ├─ test_e2e.py               ← 미니 파이프라인 테스트
│  ├─ build_sample.py           ← sample_board 회로도 생성기
│  ├─ populate_pcb.py           ← PCB 풋프린트 배치 스크립트 ★
│  ├─ recenter_board.py         ← 보드 시트 중앙 이동
│  ├─ dsn_export.py / ses_import.py ← FreeRouting 연동
│  └─ kicad-mcp.log             ← MCP 서버 로그
├─ monitor\                     ← 웹 모니터 ★
│  ├─ server.py                 ← 서버 (포트 8765)
│  ├─ index.html                ← 모니터 페이지
│  ├─ state.json                ← 현재 상태 (2초 폴링)
│  ├─ token.txt                 ← 열기 버튼 토큰
│  └─ frames\                   ← sch.svg, pcb*.svg, board3d*.png
├─ tools\freerouting-1.9.0.jar  ← 자동배선 엔진
├─ sample_board\                ← 완성 샘플 (배선+제조파일)
│  ├─ sample_board.kicad_pro / .kicad_sch / .kicad_pcb
│  └─ output\ (netlist, erc/drc 리포트, bom.csv, pos.csv,
│             gerber\ 7종+드릴, sample_board_gerbers.zip)
└─ demo_led\                    ← 회로도 전용 데모 (PCB는 빈 상태)


C:\Users\js\AppData\Local\Programs\KiCad\10.0\   ← KiCad 본체
C:\Users\js\AppData\Roaming\kicad\10.0\          ← KiCad 설정 (IPC 스위치, 라이브러리 테이블)
C:\Users\js\AppData\Roaming\Python\Python311\Scripts\uvx.exe ← MCP 런처

부록 A: 자주 쓰는 명령어 모음

# 모니터 서버 실행
python D:/AICAD/KICAD/monitor/server.py


# ERC / DRC 검사
kicad-cli sch erc --output erc.json "D:\AICAD\KICAD\sample_board\sample_board.kicad_sch"
kicad-cli pcb drc --format json --output drc.json "D:\AICAD\KICAD\sample_board\sample_board.kicad_pcb"


# 렌더링
kicad-cli sch export svg --output <dir> <회로도.kicad_sch>
kicad-cli pcb export svg --mode-single --fit-page-to-board --layers "F.Cu,F.Mask,F.Silkscreen,Edge.Cuts" --out pcb_top.svg <보드.kicad_pcb>
kicad-cli pcb render --rotate '30,0,40' --output board3d.png <보드.kicad_pcb>


# 자동배선 3단계
<KiCad>\bin\python.exe dsn_export.py                       # 1) DSN
java -jar D:\AICAD\KICAD\tools\freerouting-1.9.0.jar -de in.dsn -do out.ses -quit -mp 25   # 2) 배선
<KiCad>\bin\python.exe ses_import.py                       # 3) SES 적용

부록 B: 검증 상태 요약 (2026-09-07 기준)

항목 상태
KiCad 10.0.6 + kicad-cli ✅ 정상
MCP 서버(289 도구, write 모드) ✅ 정상 (세션 시작 시 자동 연결)
ERC ✅ 0 오류
자동배선 ✅ 84 트랙 / 비아 0 / 미배선 0
DRC ✅ 위반 1건(0.0018mm 미세, 제조 무영향)
제조 파일 ✅ Gerber+드릴+BOM+부착목록+zip
웹 모니터 ✅ :8765 구동 중
IPC 읽기 / 무간섭 원칙 ✅ AGENTS.md에 규칙 기록

부록 C: 작업 주체 구분 — AI가 한 것 vs 도구가 한 것

"AI가 설계했다"의 정확한 의미를 투명하게 기록한다. sample_board 전 과정을 기준으로 하며,
설계 결정은 AI가 하고, 작도·계산·검증 실행은 도구가 담당하는 구조이다
(사람 엔지니어가 CAD에 설계 결정을 입력하고 소프트웨어가 작도하는 것과 같은 분업).

C-1. AI(에이전트)가 직접 수행한 것 — 설계 판단과 실행 지시

작업 AI가 판단/결정한 내용
회로 구상 보호 순서(DC입력→퓨즈→쇼트키→AMS1117), MCU(ATtiny85) 선택, LED·스위치·확장헤더 구성
부품 값 산정 퓨즈 500mA, 풀업 10k, LED 저항 330R/1k, 디커플링 100nF, 쇼트키 SS34
연결 정의 39개 핀→넷 연결 전부 (VIN, +12V, +3V3, GND, RESET, PB0~2 등)
회로도 배치 좌표 16개 심볼의 전원/MCU/출력 블록별 위치 (직접 계산한 좌표)
풋프린트 선정 부품별 R_0603, SOT-223, SOIC-8, D_SMA, SW_PUSH_6mm 등 지정
PCB 배치 좌표 보드 위 16개 부품 위치 — 배치 알고리즘이 아니라 AI가 계산해 스크립트에 넣은 좌표
보드 사양 80×60mm 크기, 시트 중앙 배치
문제 해결 심볼 이름 불일치 발견(ATtiny85-20SU→20S), 라이브러리 테이블 복구, PWR_FLAG 추가, Java 버전 회피 등
웹 모니터 서버·페이지·렌더 파이프라인 전부 자체 제작

C-2. 도구가 수행한 것 — AI는 실행자/해석자

작업 실제 실행 주체 AI의 역할
배선 경로 84개 FreeRouting 배선 알고리즘 DSN 내보내기 → 실행 → SES 적용 → DRC 검증
ERC/DRC 판정 KiCad 검사 엔진 결과 해석 + 위반 원인 수정
파일 포맷 작성(S-expression) MCP 도구, kicad-sch-api 도구 호출 (명령)
3D 렌더링 kicad-cli render 옵션 지정·실행

C-3. 한계와 검토 책임 (정직한 기록)

  1. 배선 품질의 보증 주체는 FreeRouting이다. AI는 실행과 검증을 했을 뿐, 배선이 최적임을
    보장하지 않는다. 그래서 DRC 검증과 사람 검토 단계를 둔다.
  2. 예제 회로는 AI 지식만으로 판단 가능한 수준이지만, 실제 제품 회로는 데이터시트 확인·
    전원 무결성·EMC·발열 검토가 추가로 필요하다. → 최종 발주 전 사람 검토가 규칙(5.4절)이다.
  3. 부품 값(500mA 퓨즈 등)은 예제용으로 AI가 판단한 값이며, 실제 제품에서는 소요 전류 계산과
    인증 규격 확인이 필요하다.
💬 댓글 0
글보기
제목키캐드(KiCad) AI 설계 자동화 시스템 — 종합 가이드2026-09-07 04:25
카테고리AI 활용
작성자 Level 10

# 키캐드(KiCad) AI 설계 자동화 시스템 — 종합 가이드


> 문서 버전: 1.0 (2026-09-07)

> 대상 환경: Windows 11 · D:\\AICAD\\KICAD 워크스페이스 · ZCode(Claude 계열 에이전트) + KiCad 10 + kicad-mcp-pro

> 이 문서는 실제 설치와 테스트를 **모두 수행하고 검증한 결과**를 기록한 것입니다.


---


---


## 1. 시스템 개요


이 시스템은 **사용자가 자연어로 요청하면 AI가 회로도 작성 → ERC 검사 → PCB 부품 배치 → 자동배선 → DRC 검증 → 제조 파일 생성까지 전 과정을 수행**하고, 진행 상황은 **웹 모니터 페이지로 실시간 시청**할 수 있게 구성됩니다.


핵심 설계 원칙은 **"무간섭(Non-intrusive)"** 입니다:


- AI의 모든 작업은 백그라운드(파일 기반 + CLI)로 수행됩니다.

- 사용자의 **마우스·키보드·화면 포커스를 절대 가져가지 않습니다.**

- 설계 결과는 웹 모니터(자동 갱신 렌더 이미지)와 KiCad 파일로 확인합니다.


| 구성 요소 | 역할 | 버전/위치 |

|---|---|---|

| KiCad 본체 | EDA(회로도·PCB 편집기), kicad-cli, pcbnew 파이썬 모듈 | 10.0.6 |

| kicad-mcp-pro | AI↔KiCad 연결 MCP 서버 (289개 도구) | 3.34.0 |

| uv / uvx | MCP 서버 실행 런처 (Python) | uv 0.12.10 |

| FreeRouting | 자동배선 엔진 (Java) | 1.9.0 (Java 17 호환) |

| 모니터 웹서버 | 설계 진행 실시간 시청 페이지 (자체 제작) | Python 표준 라이브러리 |

| ZCode | 에이전트 실행 환경 (MCP 자동 연결) | — |


---


## 2. 전체 아키텍처


```mermaid

flowchart LR

    subgraph 사용자["👤 사용자"]

        REQ["자연어 요청<br/>'ESP32 보드 만들어줘'"]

        WATCH["🌐 브라우저<br/>웹 모니터 시청"]

    end


    subgraph AGENT["🤖 ZCode 에이전트 (백그라운드, 무간섭)"]

        AI["AI 설계 판단"]

        MCP["kicad-mcp-pro<br/>(289개 도구)"]

        CLI["kicad-cli<br/>(ERC/DRC/렌더/제조파일)"]

        PY["KiCad 내장 Python<br/>pcbnew 모듈<br/>(배치·DSN/SES)"]

    end


    subgraph FILES["📁 설계 파일 (D:\AICAD\KICAD)"]

        SCH[".kicad_sch 회로도"]

        PCB[".kicad_pcb 보드"]

        OUT["output/<br/>넷리스트·Gerber·BOM"]

        FRAMES["monitor/frames/<br/>SVG·PNG 렌더"]

    end


    subgraph KICADGUI["🖥 KiCad GUI (선택, 열어만 두는 용도)"]

        EE["회로도 편집기"]

        PCBV["PCB 편집기"]

        IPC["IPC API 서버<br/>(상태 읽기용)"]

    end


    REQ --> AI

    AI --> MCP

    AI --> CLI

    AI --> PY

    MCP -->|"파일 읽기/쓰기"| SCH

    MCP -->|"파일 읽기/쓰기"| PCB

    MCP -->|"IPC (열린 문서 상태 읽기)"| IPC

    PY --> PCB

    CLI --> OUT

    SCH --> FRAMES

    PCB --> FRAMES

    OUT --> FRAMES

    FRAMES -->|"2초 폴링"| WATCH

    OUT -.->|"▶ 열기 버튼"| KICADGUI

```


**동작 방식 요약:**


- **쓰기(설계)**: MCP 도구가 `.kicad_sch` / `.kicad_pcb` 파일을 직접 수정합니다. 열려 있는 KiCad 창에 즉시 반영되지는 않고, **파일 → 되돌리기(Revert)** 로 새로 불러와야 보입니다.

- **읽기(상태)**: KiCad GUI의 IPC API 서버가 켜져 있으면, 열려 있는 문서의 선택 상태·네트 등을 AI가 읽을 수 있습니다.

- **시청**: 각 단계가 끝날 때마다 SVG/PNG 렌더가 `monitor/frames/`에 갱신되고, 웹 모니터가 2초마다 자동으로 가져갑니다.


---


## 3. 설치 가이드


실제 수행한 설치 순서입니다. 새 PC에 재구축할 때 이 순서대로 하면 됩니다.


### 3.1 KiCad 10 설치 (winget)


```powershell

winget install --id KiCad.KiCad --exact --silent `

  --accept-package-agreements --accept-source-agreements

```


- 설치 위치: `C:\Users\js\AppData\Local\Programs\KiCad\10.0` (사용자 단위 설치)

- 확인: `kicad-cli version` → `10.0.6`


### 3.2 uv / uvx 설치 (MCP 서버 런처)


```powershell

python -m pip install --user uv

# 실행 파일 위치: C:\Users\js\AppData\Roaming\Python\Python311\Scripts\uvx.exe

```


### 3.3 kicad-mcp-pro 서버 (uvx가 자동 설치)


별도 설치 명령이 필요 없습니다. `uvx kicad-mcp-pro` 최초 실행 시 캐시에 설치됩니다(94개 패키지).

수동 테스트:


```powershell

uvx kicad-mcp-pro --version        # 3.34.0

uvx kicad-mcp-pro health           # kicad-cli 탐지 확인

```


### 3.4 KiCad IPC API 서버 활성화


`%APPDATA%\kicad\10.0\kicad_common.json`에서:


```json

"api": { "enable_server": true, ... }

```


→ 열려 있는 KiCad 문서의 상태를 AI가 읽을 수 있게 됩니다(61개 IPC 도구).


### 3.5 전역 라이브러리 테이블 초기화 (신규 설치 후 필수!)


KiCad를 GUI로 한 번도 실행하지 않으면 전역 심볼/풋프린트 테이블이 비어 있어

`"심볼 라이브러리 'Device'가 포함되어 있지 않음"` 경고가 납니다. 템플릿을 복사해서 해결:


```powershell

copy "C:\Users\js\AppData\Local\Programs\KiCad\10.0\share\kicad\template\sym-lib-table" "%APPDATA%\kicad\10.0\"

copy "C:\Users\js\AppData\Local\Programs\KiCad\10.0\share\kicad\template\fp-lib-table"  "%APPDATA%\kicad\10.0\"

```


### 3.6 FreeRouting 자동배선 엔진


```powershell

# Java 17 호환 버전 (v2.4.1은 Java 25 필요하므로 사용 금지)

curl -L -o D:\AICAD\KICAD\tools\freerouting-1.9.0.jar `

  https://github.com/freerouting/freerouting/releases/download/v1.9.0/freerouting-1.9.0.jar

```


⚠️ **주의**: `java -jar freerouting-1.9.0.jar -h`처럼 옵션 없이 실행하면 **GUI가 뜹니다.**

반드시 `-de 입력.dsn -do 출력.ses -quit` 형태로 실행하세요(→ 7장).


### 3.7 ZCode MCP 등록


`D:\AICAD\KICAD\.zcode\config.json` (워크스페이스 스코프 — 세션 시작 시 자동 연결):


```json

{

  "mcp": {

    "servers": {

      "kicad": {

        "command": "C:\\Users\\js\\AppData\\Roaming\\Python\\Python311\\Scripts\\uvx.exe",

        "args": [

          "kicad-mcp-pro", "--transport", "stdio",

          "--profile", "full", "--mode", "write",

          "--project-dir", "D:\\AICAD\\KICAD",

          "--log-file", "D:\\AICAD\\KICAD\\.zcode\\kicad-mcp.log"

        ],

        "env": {

          "KICAD_MCP_KICAD_CLI": "C:\\Users\\js\\AppData\\Local\\Programs\\KiCad\\10.0\\bin\\kicad-cli.exe",

          "KICAD_CLI_PATH": "C:\\Users\\js\\AppData\\Local\\Programs\\KiCad\\10.0\\bin\\kicad-cli.exe",

          "KICAD_MCP_WORKSPACE_ROOT": "D:\\AICAD\\KICAD"

        }

      }

    }

  }

}

```


**프로필/모드 조합:**


| 옵션 | 의미 | 도구 수 |

|---|---|---|

| `--profile full` | 전체 도구 세트 | MCP에서 289개 노출 |

| `--mode write` | 파일 쓰기 허용 (회로도/PCB 편집) | — |

| `--mode experimental` | + 자동배선(FreeRouting)·라우팅 도구 | 336개 |

| 기본값(profile 미지정) | 읽기 전용 검토 24개 | 자동화엔 부적합 |


---


## 4. 설정 파일 및 배포 위치


```mermaid

flowchart TD

    A["D:\AICAD\KICAD\ (워크스페이스)"] --> B[".zcode\config.json<br/>ZCode MCP 등록 (세션 시작 시 자동 연결)"]

    A --> C["AGENTS.md<br/>AI 행동 규칙 (매 세션 자동 참조)"]

    A --> D["monitor\<br/>웹 모니터 (server.py, index.html, state.json, frames/)"]

    A --> E["sample_board\<br/>완성 샘플 (배선+제조파일)"]

    A --> F["demo_led\<br/>회로도 전용 데모 (PCB 빈 상태)"]

    A --> G["tools\<br/>freerouting-1.9.0.jar"]

    A --> H[".zcode\*.py<br/>검증/배치/렌더 스크립트"]

```


| 파일/폴더 | 설명 |

|---|---|

| `C:\Users\js\AppData\Local\Programs\KiCad\10.0\` | KiCad 본체, kicad-cli, 내장 Python(파이썬 pcbnew용) |

| `C:\Users\js\AppData\Roaming\kicad\10.0\` | KiCad 사용자 설정(IPC 서버 스위치, 라이브러리 테이블) |

| `C:\Users\js\.zcode\cli\config.json` | ZCode 사용자 전역 설정 (MCP는 워크스페이스 스코프 사용) |

| `D:\AICAD\KICAD\.zcode\config.json` | ZCode 워크스페이스 MCP 등록 ★ |

| `D:\AICAD\KICAD\AGENTS.md` | AI가 매 세션 읽는 프로젝트 규칙 ★ |

| `D:\AICAD\KICAD\monitor\` | 웹 모니터 서버·페이지·프레임 ★ |


---


## 5. 사용 방법 (ZCode 세션)


### 5.1 세션 시작


1. ZCode에서 `D:\AICAD\KICAD` 워크스페이스로 세션을 엽니다 → MCP `kicad` 자동 연결

2. 모니터 서버가 죽어 있으면 AI가 자동으로 띄웁니다(AGENTS.md 규칙)

3. **http://127.0.0.1:8765** 를 브라우저에 띄워두면 진행 상황을 실시간 시청 가능


### 5.2 요청 예시


| 요청 예시 | AI가 수행하는 것 |

|---|---|

| "12~24V 입력 + RS485 컨트롤러 보드 만들어줘" | 요구사항 정리 → 블록도 제시 → 회로도 작성 → ERC → 배치 → 배선 → DRC → 제조파일 |

| "sample_board 자동배선 해줘" | DSN 내보내기 → FreeRouting → SES 적용 → DRC → 렌더 갱신 |

| "이 데이터시트로 부품 만들어줘" | 치수/핀맵 추출 → 확인 요청 → 풋프린트/심볼 생성 |

| "Gerber 만들어줘" | Gerber 7종 + 드릴 + 발주용 zip 생성, 모니터 파일 목록 자동 추가 |


### 5.3 설계 워크플로 (전체)


```mermaid

flowchart TD

    A["1. 요구사항 정리"] --> B["2. 블록도 제시 → 사용자 승인"]

    B --> C["3. 부품 선정 (데이터시트/라이브러리)"]

    C --> D["4. 회로도 작성 (심볼+라벨+전원심볼)"]

    D --> E{"5. ERC 통과?"}

    E -->|실패| D

    E -->|PASS| F["6. 넷리스트 추출"]

    F --> G["7. 풋프린트 배치 + 보드 외곽선<br/>(pcbnew 스크립트)"]

    G --> H["8. 자동배선 (FreeRouting)"]

    H --> I{"9. DRC 통과?"}

    I -->|위반| H

    I -->|PASS| J["10. Gerber + 드릴 + BOM + 부착목록"]

    J --> K["11. 👤 사람 최종 검토 → 발주"]

```


### 5.4 사용자가 꼭 지켜야 할 규칙


1. **AI가 작업 중일 때 KiCad에서 저장(Ctrl+S) 금지** — AI가 쓴 파일을 옛 내용으로 덮어씁니다

2. 최신 결과를 KiCad에서 보려면 **파일 → 되돌리기(Revert)** 또는 창을 다시 열기

3. 제조 파일 발주는 **반드시 사람이 3D/패턴을 검토한 후** 진행


---


## 6. 웹 모니터 (실시간 설계 시청)


### 6.1 구성


```mermaid

flowchart LR

    subgraph 자동화["AI 자동화 (백그라운드)"]

        STEP["설계 단계 수행"] --> RENDER["렌더 생성<br/>sch.svg / pcb.svg / pcb_top.svg<br/>pcb_bottom.svg / board3d*.png"]

        RENDER --> STATE["state.json 갱신<br/>(단계·ERC·DRC·로그)"]

    end

    subgraph 웹서버["monitor/server.py (:8765)"]

        SERVE["정적 파일 + JSON API"]

    end

    subgraph 브라우저["사용자 브라우저"]

        PAGE["index.html<br/>2초 폴링"]

    end

    STATE --> SERVE --> PAGE

    PAGE -->|"/files → 파일 목록"| SERVE

    PAGE -->|"/open → KiCad로 열기"| SERVE

```


- 주소: **http://127.0.0.1:8765** (내 PC에서만 접근)

- 실행: `python D:/AICAD/KICAD/monitor/server.py` (백그라운드)

- 구성 파일: `monitor/index.html`(페이지), `monitor/server.py`(서버), `monitor/state.json`(상태), `monitor/frames/`(렌더)


### 6.2 화면 구성


| 카드 | 내용 |

|---|---|

| 📄 회로도 | 회로도 SVG (부품·라벨·전원심볼) |

| 🟩 PCB 2D | 배치+배선 전체 뷰 |

| 🟫 Top / Bottom 구리 패턴 | 앞면/뒷면(좌우반전) 동선 패턴 |

| 🧊 3D 미리보기 | 아이소메트릭 / Top / Bottom 3종 |

| 📂 생성 파일 | 워크스페이스 파일 자동 스캔 + **▶ KiCad로 열기** 버튼 + 경로 복사 + 폴더 필터(전체/demo_led/sample_board) |

| 검증 상태·로그 | ERC/DRC 결과, 단계별 로그 |


### 6.3 API (서버 엔드포인트)


| 엔드포인트 | 인증 | 기능 |

|---|---|---|

| `GET /` , `/state.json` , `/frames/*` | 불필요 | 페이지·상태·렌더 서빙 |

| `GET /token` | — | 열기 버튼용 토큰 발급 |

| `GET /files?token=...` | 토큰 필요 | KiCad 파일/산출물 자동 스캔 |

| `GET /open?token=...&path=...` | 토큰 필요 | **Windows 기본 연결(KiCad)로 파일 실행** |


보안: 127.0.0.1 바인딩(외부 접근 불가) + 토큰 + `D:\AICAD\KICAD` 내부 경로만 허용. 악성 웹사이트가

브라우저를 통해 몰래 파일을 열어주는 것을 토큰이 차단합니다.


### 6.4 파일 열기 버튼 동작 원리


브라우저 보안상 웹페이지가 로컬 프로그램을 직접 실행할 수는 없지만, **로컬에서 돌아가는 모니터

서버의 `/open` 엔드포인트가 `os.startfile()`로 Windows 기본 연결 프로그램을 호출**합니다.

`.kicad_pro` → KiCad 프로젝트, `.kicad_sch` → 회로도 편집기, `.kicad_pcb` → PCB 편집기, `.pdf` → PDF 뷰어.


---


## 7. 자동배선 파이프라인 (FreeRouting)


```mermaid

sequenceDiagram

    participant AI as AI (ZCode)

    participant KP as KiCad 내장 Python (pcbnew)

    participant FR as FreeRouting 1.9.0 (Java)

    participant DRC as kicad-cli DRC


    AI->>KP: ExportSpecctraDSN(board, design.dsn)

    KP-->>AI: DSN 생성 (회로 연결 정보)

    AI->>FR: java -jar freerouting-1.9.0.jar -de design.dsn -do design.ses -quit -mp 25

    Note over FR: 자동배선 + 최적화 (샘플보드: 약 3초)

    FR-->>AI: design.ses (배선 결과)

    AI->>KP: ImportSpecctraSES(board, design.ses)

    KP->>KP: 트랙 84개 / 비아 0개 기록 후 저장

    AI->>DRC: pcb drc --format json

    DRC-->>AI: 미배선 0, 위반 검증

    AI->>AI: Top/Bottom/3D 렌더 재생성 → 모니터 갱신

```


**검증 결과 (sample_board):** 트랙 84개, 비아 0개(단면 최적화), 미배선 0.

위반 1건은 0.0018mm 미세 클리어런스(제조 무영향 수준).


**Java 버전 주의:** v2.4.1은 Java 25(class 69) 필요 → 이 시스템은 **Java 17 + v1.9.0** 사용.

`-h` 옵션은 인식되지 않고 GUI가 뜨므로 사용하지 않습니다.


---


## 8. 데이터시트·치수표 기반 커스텀 부품 생성


| 제공 자료 | 생성 결과 | 사용 도구 |

|---|---|---|

| 패키지 치수표 (랜드·피치·바디) | IPC-7351 표준 풋프린트 | `lib_generate_footprint_ipc7351` |

| 핀맵 표 (번호-이름-기능) | 회로도 심볼 | `lib_generate_symbol_from_pintable` |

| 보드 치수·구멍·커넥터 좌표 | 외곽선·마운팅홀·배치 반영 | pcbnew 스크립트 |

| 전기 사양 (전류·권장회로) | 디커플링/트레이스 폭 계산 | 설계 규칙 엔진 |


**절차(생략 금지):** ① 자료에서 치수·핀맵 추출 → ② **추출 결과 표를 사용자에게 확인받음** →

③ 생성·적용 → ④ 3D 재확인. 스캔 이미지 PDF는 비전 판독 오차 가능성을 안내합니다.


**준비 방법:** 데이터시트 PDF 또는 치수표(텍스트/엑셀)를 `D:\AICAD\KICAD\` 아래에 넣고

세션에서 "이 데이터시트로 ○○ 부품 만들어줘"라고 요청.


---


## 9. 외부 포맷 가져오기 (OrCAD 등)


| 갖고 있는 파일 | 가져오기 | 설명 |

|---|---|---|

| OrCAD/Allegro **PCB** (.brd) | ✅ 직접 지원 | KiCad 8.0+ 내장 "Cadence Allegro/OrCAD PCB Editor" 임포터 |

| OrCAD Capture **회로도** (.dsn) | ❌ 미지원 | 넷리스트/부품표 기반 AI 재작성 또는 .brd만 가져오기 권장 |

| Eagle, CADSTAR, EasyEDA, IPC-2581 등 | ✅ 지원 | KiCad 내장 임포터 |


가져오기 요청 시 AI가 먼저 파일을 무간섭으로 분석해 "직접 가져오기 가능/재작성 필요"를 판정합니다.

(.brd 임포터는 GUI 메뉴 전용이라 그 작업만은 화면 조작이 필요할 수 있습니다.)


---


## 10. 트러블슈팅 (실제 발생했던 문제들)


| 증상 | 원인 | 해결 |

|---|---|---|

| ERC: "심볼 라이브러리 'Device' 미포함" 경고 | KiCad 신규 설치 후 전역 라이브러리 테이블 비어 있음 | 템플릿 복사 (→ 3.5절) |

| MCP 쓰기 도구에서 "No schematic file configured" | 프로젝트 미지정 | `kicad_set_project` 호출 (sch/pcb/output 경로 포함) |

| MCP로 부품을 추가했는데 열린 KiCad 화면에 안 보임 | **정상 동작** (파일 직접 수정 방식) | 파일 → 되돌리기(Revert) 또는 창 재오픈 |

| IPC 관련 도구가 일부만 동작 | 열린 문서가 없음 (프로젝트 관리자만 열림) | 회로도/PCB 편집기에서 해당 문서를 열 것 |

| `sch_add_no_connect` 에러: x_mm/y_mm required | 핀 좌표 필요 | ERC 리포트의 위반 좌표(×100 = mm)를 사용 |

| 심볼 배치가 "OK"인데 실제로 없음 (ATtiny85-20SU) | 존재하지 않는 심볼 이름 | 라이브러리 파일에서 실제 이름 확인 (→ `ATtiny85-20S`) |

| FreeRouting 최신 버전 실행 안 됨 | v2.4.1은 Java 25 필요 | v1.9.0 사용 (Java 17 호환) |

| `java -jar freerouting.jar -h` → GUI 팝업 | `-h` 미지원 | `-de/-do/-quit` 조합으로만 실행 |

| KiCad 10 파이썬 `GetTrackCount()` AttributeError | API 변경 | `len(board.GetTracks())` 사용 |

| 모니터 접근 403 | (구버전 버그) 전체 경로에 토큰 검사 | 수정 완료 — 정적 파일은 공개, `/files`·`/open`만 토큰 |

| 웹에서 열기 버튼 무반응 | 모니터 서버 중지 | `python D:/AICAD/KICAD/monitor/server.py` 재실행 |

| GUI 자동화(마우스/키보드)가 사용자 방해 | 포그라운드 독점 구조 | **원칙: 무간섭 백그라운드 방식 사용 (AGENTS.md 규칙)** |


---


## 11. 파일 위치 총정리


```

D:\AICAD\KICAD\

├─ AGENTS.md                    ← AI 행동 규칙 (매 세션 자동 참조)

├─ 키캐드AI_설계시스템_종합가이드.md   ← 이 문서

├─ .zcode\

│  ├─ config.json               ← ZCode MCP 등록 (kicad 서버)

│  ├─ skills\pcb-design\SKILL.md ← PCB 설계 규칙 스킬

│  ├─ test_mcp.py               ← MCP 연결/도구 목록 테스트

│  ├─ test_e2e.py               ← 미니 파이프라인 테스트

│  ├─ build_sample.py           ← sample_board 회로도 생성기

│  ├─ populate_pcb.py           ← PCB 풋프린트 배치 스크립트 ★

│  ├─ recenter_board.py         ← 보드 시트 중앙 이동

│  ├─ dsn_export.py / ses_import.py ← FreeRouting 연동

│  └─ kicad-mcp.log             ← MCP 서버 로그

├─ monitor\                     ← 웹 모니터 ★

│  ├─ server.py                 ← 서버 (포트 8765)

│  ├─ index.html                ← 모니터 페이지

│  ├─ state.json                ← 현재 상태 (2초 폴링)

│  ├─ token.txt                 ← 열기 버튼 토큰

│  └─ frames\                   ← sch.svg, pcb*.svg, board3d*.png

├─ tools\freerouting-1.9.0.jar  ← 자동배선 엔진

├─ sample_board\                ← 완성 샘플 (배선+제조파일)

│  ├─ sample_board.kicad_pro / .kicad_sch / .kicad_pcb

│  └─ output\ (netlist, erc/drc 리포트, bom.csv, pos.csv,

│             gerber\ 7종+드릴, sample_board_gerbers.zip)

└─ demo_led\                    ← 회로도 전용 데모 (PCB는 빈 상태)


C:\Users\js\AppData\Local\Programs\KiCad\10.0\   ← KiCad 본체

C:\Users\js\AppData\Roaming\kicad\10.0\          ← KiCad 설정 (IPC 스위치, 라이브러리 테이블)

C:\Users\js\AppData\Roaming\Python\Python311\Scripts\uvx.exe ← MCP 런처

```


---


## 부록 A: 자주 쓰는 명령어 모음


```powershell

# 모니터 서버 실행

python D:/AICAD/KICAD/monitor/server.py


# ERC / DRC 검사

kicad-cli sch erc --output erc.json "D:\AICAD\KICAD\sample_board\sample_board.kicad_sch"

kicad-cli pcb drc --format json --output drc.json "D:\AICAD\KICAD\sample_board\sample_board.kicad_pcb"


# 렌더링

kicad-cli sch export svg --output <dir> <회로도.kicad_sch>

kicad-cli pcb export svg --mode-single --fit-page-to-board --layers "F.Cu,F.Mask,F.Silkscreen,Edge.Cuts" --out pcb_top.svg <보드.kicad_pcb>

kicad-cli pcb render --rotate '30,0,40' --output board3d.png <보드.kicad_pcb>


# 자동배선 3단계

<KiCad>\bin\python.exe dsn_export.py                       # 1) DSN

java -jar D:\AICAD\KICAD\tools\freerouting-1.9.0.jar -de in.dsn -do out.ses -quit -mp 25   # 2) 배선

<KiCad>\bin\python.exe ses_import.py                       # 3) SES 적용

```


## 부록 B: 검증 상태 요약 (2026-09-07 기준)


| 항목 | 상태 |

|---|---|

| KiCad 10.0.6 + kicad-cli | ✅ 정상 |

| MCP 서버(289 도구, write 모드) | ✅ 정상 (세션 시작 시 자동 연결) |

| ERC | ✅ 0 오류 |

| 자동배선 | ✅ 84 트랙 / 비아 0 / 미배선 0 |

| DRC | ✅ 위반 1건(0.0018mm 미세, 제조 무영향) |

| 제조 파일 | ✅ Gerber+드릴+BOM+부착목록+zip |

| 웹 모니터 | ✅ :8765 구동 중 |

| IPC 읽기 / 무간섭 원칙 | ✅ AGENTS.md에 규칙 기록 |


---


## 부록 C: 작업 주체 구분 — AI가 한 것 vs 도구가 한 것


"AI가 설계했다"의 정확한 의미를 투명하게 기록한다. sample_board 전 과정을 기준으로 하며,

**설계 결정은 AI가 하고, 작도·계산·검증 실행은 도구가 담당**하는 구조이다

(사람 엔지니어가 CAD에 설계 결정을 입력하고 소프트웨어가 작도하는 것과 같은 분업).


### C-1. AI(에이전트)가 직접 수행한 것 — 설계 판단과 실행 지시


| 작업 | AI가 판단/결정한 내용 |

|---|---|

| 회로 구상 | 보호 순서(DC입력→퓨즈→쇼트키→AMS1117), MCU(ATtiny85) 선택, LED·스위치·확장헤더 구성 |

| 부품 값 산정 | 퓨즈 500mA, 풀업 10k, LED 저항 330R/1k, 디커플링 100nF, 쇼트키 SS34 |

| 연결 정의 | 39개 핀→넷 연결 전부 (VIN, +12V, +3V3, GND, RESET, PB0~2 등) |

| 회로도 배치 좌표 | 16개 심볼의 전원/MCU/출력 블록별 위치 (직접 계산한 좌표) |

| 풋프린트 선정 | 부품별 R_0603, SOT-223, SOIC-8, D_SMA, SW_PUSH_6mm 등 지정 |

| PCB 배치 좌표 | 보드 위 16개 부품 위치 — 배치 알고리즘이 아니라 **AI가 계산해 스크립트에 넣은 좌표** |

| 보드 사양 | 80×60mm 크기, 시트 중앙 배치 |

| 문제 해결 | 심볼 이름 불일치 발견(ATtiny85-20SU→20S), 라이브러리 테이블 복구, PWR_FLAG 추가, Java 버전 회피 등 |

| 웹 모니터 | 서버·페이지·렌더 파이프라인 전부 자체 제작 |


### C-2. 도구가 수행한 것 — AI는 실행자/해석자


| 작업 | 실제 실행 주체 | AI의 역할 |

|---|---|---|

| 배선 경로 84개 | FreeRouting 배선 알고리즘 | DSN 내보내기 → 실행 → SES 적용 → DRC 검증 |

| ERC/DRC 판정 | KiCad 검사 엔진 | 결과 해석 + 위반 원인 수정 |

| 파일 포맷 작성(S-expression) | MCP 도구, kicad-sch-api | 도구 호출 (명령) |

| 3D 렌더링 | kicad-cli render | 옵션 지정·실행 |


### C-3. 한계와 검토 책임 (정직한 기록)


1. **배선 품질의 보증 주체는 FreeRouting**이다. AI는 실행과 검증을 했을 뿐, 배선이 최적임을

   보장하지 않는다. 그래서 DRC 검증과 사람 검토 단계를 둔다.

2. 예제 회로는 AI 지식만으로 판단 가능한 수준이지만, **실제 제품 회로는** 데이터시트 확인·

   전원 무결성·EMC·발열 검토가 추가로 필요하다. → 최종 발주 전 **사람 검토**가 규칙(5.4절)이다.

3. 부품 값(500mA 퓨즈 등)은 예제용으로 AI가 판단한 값이며, 실제 제품에서는 소요 전류 계산과

   인증 규격 확인이 필요하다.


댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)
목록으로