채팅으로 회로 만들기
한 줄 요약 — 한국어로 설명하면 회로 파일이 나옵니다. 검증기가 피드백 루프라서 기계적으로 확인된 회로만 나옵니다.
어떻게 동작하는가
핵심: LLM이 만든 회로를 그대로 믿지 않고, 검증기를 통과한 것만 내놓습니다.
Claude Code 스킬로 구현
.claude/skills/circuit-design/SKILL.md
Claude Max 구독 사용량으로 동작하며 별도 API 키가 필요 없습니다.
스킬이 하는 일
| 단계 | 동작 |
|---|---|
| 1 | 한국어 요구사항 확인 (전원 전압, 부하, 목표) |
| 2 | circuit parts --json으로 부품·핀 목록을 실제 조회 |
| 3 | circuit.yaml 작성 |
| 4 | circuit check → 에러 0까지 반복 수정 |
| 5 | circuit sim → 값 확인, expect 작성 |
| 6 | circuit test → 통과 확인 |
| 7 | circuit export → EasyEDA 파일 |
| 8 | 설명 + 문서 링크 |
★ 왜 circuit parts를 조회하는가
부품 목록(BOM)과 핀 이름을 하드코딩하지 않고 CLI에서 조회합니다.
| 이유 |
|---|
| 코드와 스킬이 절대 어긋나지 않음 |
| 부품이 추가되면 자동 반영 |
| 핀 이름 오타 방지 |
같은 이유로 circuit rules --json으로 규칙도 조회합니다.
대화 예
사용자: 전극에서 나오는 50µV 신호를 증폭해서 ADC로 읽고 싶어.
전극 임피던스는 1kHz에서 200kΩ 정도야.
Claude: 몇 가지 확인하겠습니다.
- 신호 대역은 어떻게 되나요? (LFP 1~300Hz / MUA 300Hz~5kHz)
- ADC 입력 범위는요?
- 목표 SNR이 있나요?
사용자: MUA 대역, ADC는 ±1V 12비트, SNR은 20dB 이상
Claude: 먼저 노이즈 예산을 계산하겠습니다.
전극 열잡음: √(4kT×200k) = 57.5 nV/√Hz
MUA 대역(4.7kHz, 잡음대역 5.2kHz)에서:
57.5nV × √5220 = 4.15 µV rms
SNR = 20log(50/4.15) = 21.6 dB ✅ 달성 가능
[circuit.yaml 작성]
[circuit check 실행] → 통과
[circuit sim 실행] → 확인
설계 결과:
- 1단: OPA140 버퍼 (임피던스 변환)
- 2단: 이득 100 (오프셋 여유 확인)
- 3단: 4차 베셀 LPF 5kHz
- 총 이득 2000 → 100µV 피크가 200mV
참고 문서:
- docs/16-case-studies/00-methodology.md
- docs/13-signal-chain/02-gain-noise-budget.md★ 검증기가 만드는 신뢰성
LLM은 그럴듯한 회로를 만들지만 틀릴 수 있습니다. 검증기가 그것을 잡습니다.
| LLM의 흔한 실수 | 잡는 규칙 |
|---|---|
| LED에 저항 빼먹음 | W301 |
| 접지 넷 없음 | E201 |
| 핀 이름 오타 | E102 |
| 부유 넷 | E105 |
| 전력 정격 초과 | E401 |
| 고임피던스 노드에 버퍼 없음 | W501 |
| 안티에일리어싱 없음 | W502 |
그리고 circuit sim이 값이 상식적인지 확인합니다.
“검증할 수 없는 것은 생성하지 않는다” 가 이 설계의 원칙입니다.
잘 되는 요청 / 어려운 요청
✅ 잘 되는 요청
| 요청 | 이유 |
|---|---|
| “5V에서 LED 3개” | 표준 패턴, 계산 명확 |
| “1kHz 저역통과 필터” | 공식이 명확 |
| “9V를 3.3V로 분압” | 단순 |
| “전극(electrode) 신호 증폭 체인” | 방법론 문서가 있음 |
| “이 회로 검증해줘” | 검증기가 함 |
⚠️ 어려운 요청
| 요청 | 이유 |
|---|---|
| “성능 좋은 회로” | 목표가 불명확 → 되물어야 함 |
| “이 논문 회로 그대로” | 정보 부족 |
| 특수 IC 사용 | 심볼·모델 필요 |
| 레이아웃 관련 | 회로도로 표현 불가 |
| RF, 고속 디지털 | 도구 범위 밖 |
💡 목표를 숫자로 말할수록 좋은 결과가 나옵니다. “저잡음”보다 “입력 환산 잡음(input-referred noise)입력환산잡음 input-referred noise회로 곳곳의 잡음을 입력단 하나로 몰아 표현한 값으로, 신호와 직접 견줄 수 있어 판정에 씁니다.자세히 보기 → 1 µV rms 이하, 대역 5 kHz”가 훨씬 낫습니다.
★ 좋은 요청 쓰는 법
| 항목 | 무엇을 적나 |
|---|---|
| 신호원 | 크기, 임피던스, 대역 |
| 목표 | SNR, 정확도, 속도 |
| 제약 | 전원 전압, 소비 전력, 크기, 비용 |
| 환경 | 온도, 간섭원, 안전 요구 |
| 용도 | 무엇을 측정/제어하는가 |
예시:
“전극(1 kHz에서 200 kΩ)에서 50 µV rms 신호를 측정합니다. 대역은 300 Hz~5 kHz(MUA), 목표 SNR은 20 dB 이상. ±5 V 전원, ADC는 ±1 V 12비트. 전극 DC 오프셋이 ±100 mV 있습니다. 채널은 8개이고, 60 Hz 간섭(interference)이 심한 실험실 환경입니다.”
이 정도면 16-00 방법론의 8단계를 그대로 적용할 수 있습니다.
⚖️ 트레이드오프
| 선택 | ✅ | ⚠️ |
|---|---|---|
| Claude Code 스킬 | API 키 불필요(구독 사용량), 파일·명령 직접 실행 | Claude Code 환경 필요 |
독립 CLI (circuit chat) | 어디서나 | API 키 필요 또는 claude CLI 의존 |
| 웹 UI | 편함 | 구현 부담 |
💡
claudeCLI를 내부에서 호출하면 구독 사용량으로 독립 실행도 가능합니다. API 키를 따로 발급받을 필요가 없습니다.
⚠️ 한계와 주의
| 한계 | 대응 |
|---|---|
| LLM이 틀릴 수 있음 | 검증기 통과 + 본인이 계산 확인 |
| 검증기가 모든 것을 잡지는 못함 | 학습 문서로 이해 |
| 레이아웃은 다루지 못함 | 15장 직접 |
| 특수 부품 모델 부족 | 직접 추가 |
| 최종 책임은 설계자 | 실물 검증 필수 |
⚠️ 채팅으로 만든 회로를 그대로 발주하지 마세요. 검증기를 통과했다는 것은 “명백한 오류가 없다”는 뜻이지 “최적 설계”라는 뜻이 아닙니다. 직접 계산으로 확인하고, 이 저장소의 문서로 왜 그렇게 설계했는지 이해하세요.
🔌 활용 시나리오
| 시나리오 | 활용 |
|---|---|
| 빠른 시제품 | 표준 회로를 즉시 생성 |
| 설계 검토 | “이 회로 문제 없어?” |
| 학습 | “왜 이 저항이 필요해?” → 문서 링크 |
| 계산 대행 | 노이즈 예산, 게인 배분게인 배분 gain distribution전체 이득을 각 단에 어떻게 나눠 줄지의 문제로, 잡음과 포화가 서로 반대 방향으로 잡아당깁니다.자세히 보기 → |
| 변형 생성 | “게인을 2배로”, “3.3V 버전으로” |
| EasyEDA 파일 생성 | 그리는 시간 절약 |
연습문제
문제 1. “저잡음 증폭기 만들어줘”라는 요청이 왜 나쁜가요?
exercises/17-05-spec-to-circuit.yaml풀이
목표가 없어서 설계할 수 없습니다.
빠진 정보:
- 신호원의 임피던스(impedance)임피던스 impedance교류에서의 저항으로, 크기뿐 아니라 전압과 전류의 시간 차이(위상)까지 담은 복소수입니다.자세히 보기 → → 소자 선택이 완전히 달라짐 (7-06)
- 신호 크기 → 게인 결정
- 대역폭(bandwidth) → 잡음 계산의 기본
- 목표 SNR → 달성 가능성 판정
- 전원, 오프셋, 간섭 환경
개선된 요청:
“소스 임피던스 200 kΩ, 신호 50 µV rms, 대역 300 Hz~5 kHz, 목표 입력 환산 잡음 5 µV rms 이하, ±5 V 전원”
이러면 16-00 방법론의 3단계(가능/불가능 판정)를 바로 할 수 있습니다.
“저잡음”은 상대적입니다. 숫자로 말하세요.
문제 2. 채팅으로 만든 회로를 어디까지 믿어야 합니까?
exercises/17-05-passes-but-wrong.yaml풀이
단계별로 신뢰도가 다릅니다.
| 단계 | 신뢰도 | 근거 |
|---|---|---|
circuit check 통과 | 높음 | 기계적 규칙 |
circuit sim 값 | 높음 | ngspice (단, 모델 한계) |
circuit test 통과 | 높음 | 기대값과 대조 |
| 게인·필터 계산 | 중간 | 검산 필요 |
| 소자 선택 | 중간 | 근거를 확인하세요 |
| 노이즈 예산 | 중간 | 직접 계산 검증 |
| 레이아웃 조언 | 낮음 | 회로도로 표현 불가 |
| 실물 동작 | 모름 | 반드시 실측 |
권장 절차:
- 생성된 회로의 핵심 계산을 직접 검산 (게인, 대역폭, 잡음)
- 왜 그 소자를 골랐는지 근거를 확인 (문서 링크 따라가기)
- 시뮬레이션 결과가 손계산과 맞는지 확인
- 기생 성분(parasitic)기생 성분 parasitics부품과 배선이 표기값 말고 원치 않게 함께 갖는 저항·용량·인덕턴스로, 고주파에서 회로의 성질을 바꿔 놓습니다.자세히 보기 →을 넣은 모델로 다시 시뮬레이션
- 시제품 제작 후 실측 검증 (14장)
도구는 계산과 검증을 대신해주지만, 판단은 설계자의 몫입니다. 그래서 이 저장소가 도구보다 문서를 먼저 만든 것입니다.
이전 ← 04 EasyEDA로 내보내기 | 목차 → docs/README.md