oosioo
AI가 설계하고 검증기를 통과한 두 회로를 170홀 미니 빵판에 자동으로 배치한 그림. 왼쪽은 러닝머신 벨트 속도계로, ATtiny85 마이컴과 레귤레이터·크리스털·콘덴서가 꽂혀 있고 9V 배터리·반사 센서·4자리 표시기가 전선으로 이어져 있다. 표시기에는 10.0 km/h가 떠 있다. 오른쪽은 문 열림 차임으로, 부저·MOSFET·저항 둘·콘덴서·다이오드만 꽂혀 있다. 오른쪽 아래 검은 상자에 「요구 몇 줄 → AI 설계, 핀·연결 검사, SPICE 최악 조건, 가상 칩에서 펌웨어, 170홀 빵판 자동 배치」가 체크 표시와 함께 적혀 있다
연재진짜 딸깍하는 AI · 31회

전자 회로도 딸깍이 될까 — 말로 쓴 요구를 AI에게 주고, 시뮬레이터로 검증해 가장 작은 빵판에 올리기까지

PSpice 같은 회로 설계 프로그램은 쓸 줄만 알면 강력하지만, 회로 지식과 프로그램 사용법이라는 문턱이 있다. 바이브 코딩처럼 원하는 기능을 말로 설명하면 회로가 나올 수 있을까. 1961년 미로 알고리즘과 1973년 SPICE부터 2026년 AI 설계 에이전트까지 65년을 정리하고, 9V 배터리로 도는 문 열림 차임과 러닝머신 벨트 속도계를 AI에게 설계시켰다. 결과는 자동 검증기(핀 검사·ngspice 최악 조건·가상 마이컴)로 따지고, 통과한 회로는 170홀 미니 빵판에 자동으로 배치해 부품표와 견적까지 뽑았다.

· SYSOP · 조회 4

AI가 설계하고 검증기를 통과한 두 회로를 170홀 미니 빵판에 자동으로 배치한 그림. 왼쪽은 러닝머신 벨트 속도계로, ATtiny85 마이컴과 레귤레이터·크리스털·콘덴서가 꽂혀 있고 9V 배터리·반사 센서·4자리 표시기가 전선으로 이어져 있다. 표시기에는 10.0 km/h가 떠 있다. 오른쪽은 문 열림 차임으로, 부저·MOSFET·저항 둘·콘덴서·다이오드만 꽂혀 있다. 오른쪽 아래 검은 상자에 「요구 몇 줄 → AI 설계, 핀·연결 검사, SPICE 최악 조건, 가상 칩에서 펌웨어, 170홀 빵판 자동 배치」가 체크 표시와 함께 적혀 있다

PSpice 같은 회로 설계 프로그램은 회로를 그리면 전압과 전류가 시간에 따라 어떻게 움직이는지 계산해 주고, 부품을 작은 기판에 배치해 선까지 이어 준다. 잘만 쓰면 납땜 한 번 안 하고 회로가 도는지 알 수 있다. 문제는 그 「잘만」이다. 트랜지스터가 어떻게 켜지는지, 콘덴서가 언제 차고 비는지 알아야 회로를 그릴 수 있고, 프로그램 메뉴를 알아야 시뮬레이션을 돌릴 수 있다.

그런데 코드는 이미 말로 짠다. 원하는 기능을 설명하면 AI가 코드를 쓰고, 테스트가 맞는지 따진다. 회로도 그렇게 되지 않을까. 「9V 배터리로 러닝머신 벨트가 실제로 얼마나 빨리 도는지 재고 싶다」, 「문이 열리면 소리가 났으면 좋겠다」고 말하면 회로가 나오고, 조금 복잡한 건 공개된 IC 데이터시트를 읽어 바로 주문할 수 있는 부품표와 견적까지 나오는 것.

이번 회에서는 그게 어디까지 되는지 직접 해 봤다.

무엇을 하려 했나

  1. 회로 설계가 컴퓨터로 넘어온 과정을 정리한다. 시뮬레이터, 자동 배선, 코드로 쓰는 회로, 그리고 지금의 AI까지. 수치는 1차 출처로 적고, 회사가 스스로 낸 수치는 그렇다고 밝힌다.
  2. 회로를 「설계한다」와 「검증한다」가 각각 무엇을 확인하는 일인지 풀어 본다.
  3. 예제 두 개를 실제로 AI에게 맡긴다. 문 열림 차임과 러닝머신 벨트 속도계다. 둘 다 9V 배터리 하나로 돈다. AI에게는 말로 쓴 요구와 쓸 수 있는 부품 목록만 준다.
  4. AI가 낸 설계를 사람이 보기 전에 자동 검증기가 먼저 따진다. 떨어지면 보고서를 AI에게 그대로 돌려보낸다.
  5. 통과한 회로를 가장 작은 빵판(브레드보드)에 자동으로 배치하고 부품표와 견적을 뽑는다.

역사 조사는 AI 에이전트에게 맡겼다. 논문, 특허, 데이터시트, 회사의 공식 발표만 출처로 쓰게 했고, 확인하지 못한 연도는 미확인으로 남기게 했다.

65년을 한 장에

회로 설계 자동화 65년 연표. 회색 구간(1961~1993) 「사람이 그리고, 컴퓨터가 계산」에는 1961 리 미로 알고리즘, 1971 CANCER, 1973 SPICE1, 1975 SPICE2, 1984 PSpice, 1985 OrCAD, 1989 Specctra, 1992 KiCad. 파란 구간(1993~2020) 「값싼 기판·코드로 쓰는 회로」에는 2006 JLCPCB 설립, 2014 FreeRouting 소스 공개, 2016 SKiDL. 주황 구간(2021~) 「AI 가 설계에 들어옴」에는 2021 AlphaChip 논문(재현성 논쟁), 2022 JITX, 2023 Flux Copilot·Allegro X AI, 2024 AnalogCoder·Quilter 베타, 2025 Quilter 843부품 보드 부팅(회사 발표), 2026 HWE-Bench 최고 8%와 에이전트 EDA

컴퓨터가 계산을 맡다 (1961~1990년대)

시뮬레이터는 수업 과제에서 나왔다. 1970년 UC 버클리의 로런스 네이글이 석사 보고서로 정리한 프로그램 이름은 CANCER였다. 「방사선을 뺀 비선형 회로의 컴퓨터 해석(Computer Analysis of Nonlinear Circuits Excluding Radiation)」의 머리글자다. 1973년 네이글과 페더슨이 이를 고쳐 SPICE1을 냈고, 1975년 네이글의 박사 논문이 SPICE2가 됐다. 버클리가 소스를 널리 풀면서 SPICE는 사실상 세계 표준이 됐고, 2011년 IEEE 마일스톤이 됐다.

SPICE의 입력은 그림이 아니라 글이다. 「R1은 노드 3과 노드 5 사이, 10kΩ」 같은 줄을 부품마다 하나씩 쓴다. 부품과 연결의 목록, 곧 넷리스트다. 이 글의 실험도 결국 이 형식으로 돌아간다.

그 계산기가 개인 컴퓨터로 내려왔다. 1984년 MicroSim이 PC용 PSpice를 냈다(출시 시점은 2차 자료 기준). 1985년에는 OrCAD가 DOS에서 회로도를 그리는 프로그램을 냈다. 이 두 회사는 1998년 합쳐졌고, 1999년 Cadence에 인수됐다. 지금 PSpice라는 이름이 Cadence 제품에 붙어 있는 이유다.

기판 배선은 미로 찾기였다. 1961년 C. Y. 리가 격자 위에 출발점부터 물결처럼 번호를 퍼뜨려 두 점을 잇는 최단 경로를 찾는 알고리즘을 냈다. 길이 있으면 반드시 찾는다. 기판 자동 배선의 뿌리다. 1989년 상용 자동 배선기 Specctra가 나왔고, 1997년 Cadence에 팔릴 때 미국 공정거래위원회가 「쓸 만한 상용 라우터는 이것뿐」이라며 조건을 붙였다. 그래도 엔지니어들은 자동 배선을 오래 믿지 않았다. 알티움의 블로그 글 제목이 「실패한 설계 자동화의 역사」일 정도다.

값싼 기판과 코드로 쓰는 회로 (1990년대~2020)

1992년 장피에르 샤라스가 KiCad를 공개했다. 2013년부터 CERN이 개발자를 보태 상용 도구 수준까지 끌어올렸고, 2026년 3월 10.0판이 나왔다. 회로도부터 기판 배치까지 공짜로 할 수 있게 된 것이다.

기판값도 떨어졌다. 2006년 세워진 JLCPCB는 지금 「5장에 2달러부터」를 내건다. 미국의 공동 주문 서비스 OSH Park가 2층 기판을 제곱인치당 5달러(3장)에 받는 걸 생각하면, 10×10cm 기판 기준으로 수십 배 차이다. 취미로 만든 회로를 기판으로 뽑는 게 커피 한 잔 값이 됐다.

그리고 회로를 다시 글로 쓰기 시작했다. 2016년 파이썬으로 부품과 연결을 쓰는 SKiDL이 나왔고, 2022년 JITX, 2023년 atopile, 2024년 tscircuit이 뒤따랐다. 그림 대신 코드로 쓰면 버전 관리가 되고, 재사용이 되고, 자동 검사가 된다. 그리고 AI가 다루기 쉬워진다.

AI가 설계에 들어오다 (2021~)

칩 쪽이 먼저였다. 2021년 구글이 강화 학습으로 반도체 칩 위의 큰 블록을 배치하는 논문을 Nature에 냈다(지금 이름 AlphaChip). 사람과 같거나 더 낫다고 했지만, 2023년 재현 연구들이 반론을 냈고 Nature는 한동안 편집자 주의 문구를 달았다. 2026년 3월에 나온 재평가 갱신판까지 논쟁은 끝나지 않았다.

2023년은 코파일럿의 해였다. Flux가 브라우저 회로 도구에 대화형 AI를 넣었고(4월), Cadence가 기판 배치·배선을 자동화하는 Allegro X AI를 냈다(4월), Synopsys가 칩 설계 도구에 대화형 도우미를 붙였다(11월). 2025~2026년에는 이름이 에이전트로 바뀌었다. Siemens EDA AI(2025년 6월), Cadence AuraStack(2026년 7월), Synopsys AgentEngineer(2026년 9월)가 나왔고, Flux는 2026년 8월 MCP 서버를 열어 Claude 같은 외부 에이전트가 회로를 직접 만지게 했다.

기판 배치·배선은 Quilter가 가장 앞서 나간다. 2025년 12월 부품 843개, 8층짜리 리눅스 컴퓨터 보드를 AI로 배치·배선했고 처음 전원을 넣자마자 부팅됐다고 발표했다. 사람 작업은 38.5시간으로, 전문가 견적 428시간의 10분의 1 아래였다고 한다. 모두 회사가 낸 수치다.

그런데 학술 벤치마크는 냉정하다.

벤치마크 (발표)무엇을 시켰나결과
HWE-Bench (2026-03)기능 요구와 데이터시트만 주고 보드 회로도를 처음부터완전히 맞은 설계 최고 8.15% (Claude Sonnet 4.5)
EDA Bench (ICML 2026)KiCad 기판 프로젝트 재구성 35과제종합 4.58%. 21개는 파일이 열렸지만 기능 검사는 대부분 실패
PCBSchemaGen (2026-01)실제 IC 227개 과제, 결정론적 검증기 + 데이터시트 스키마 붙임평균 81.3% 통과
arXiv 2609.26830 (2026-09)LLM 이 만든 회로 150개를 ngspice 로10.7% 는 단자 하나가 끊긴 채 경고 없이 돌았다

과제가 달라 숫자끼리 바로 견줄 수는 없다. 그래도 방향은 분명하다. AI 혼자 처음부터 그리게 한 벤치마크는 한 자릿수에 머물고, 결정론적 검증기를 붙인 쪽은 열에 여덟이 통과한다. 마지막 줄도 눈여겨볼 만하다. 저항 하나가 떠 있는 분압기가 2.50V 대신 5.00V를 내는데도 시뮬레이터는 아무 경고를 하지 않았다. 시뮬레이션이 돌았다고 회로가 맞는 건 아니다. 그래서 이번 실험의 주인공은 AI가 아니라 검증기다.

회로를 설계한다는 것, 검증한다는 것

예제로 들어가기 전에 두 일을 나눠 보자.

설계는 말을 부품과 연결로 바꾸는 일이다. 「문이 열리면 울린다」를 이렇게 쪼갠다.

  • 감지: 문이 열린 걸 무엇으로 아나. 자석과 리드 스위치, 적외선, 기울기 센서.
  • 판단: 열린 순간 한 번만 울리려면 무엇이 시간을 재나. 555 타이머, RC 회로, 마이컴.
  • 출력: 무엇이 소리를 내나. 직류만 걸면 우는 능동 부저, 교류로 흔들어야 하는 압전 스피커.
  • 전원: 9V를 그대로 쓰나, 5V로 낮추나. 대기 중에 전류가 얼마나 새나.

그다음 부품마다 값을 계산한다. 1초 동안 울리려면 저항과 콘덴서가 얼마여야 하나(시간 = 저항 × 콘덴서). 센서가 흰 테이프를 보면 몇 볼트가 나오나. 이 계산의 재료는 전부 데이터시트에 있다. 문턱 전압, 대기 전류, 정격 전류. 그래서 「IC 데이터시트를 읽고 회로를 짠다」는 발상은 AI에게 꽤 잘 맞는다.

검증은 그 설계가 요구를 지키는지 따지는 일이다. 층이 넷 있다.

  1. 연결 검사(ERC): 없는 핀에 선을 이었나, 이어야 할 핀이 떠 있나, 배터리 +와 -가 붙었나. 회로가 「말이 되는지」 보는 단계다.
  2. 시뮬레이션: SPICE로 시간에 따라 전압과 전류를 계산한다. 문을 열고 닫는 장면을 넣고 부저가 언제 울리는지 본다.
  3. 최악 조건: 같은 2N7000 트랜지스터라도 켜지는 문턱이 0.8V인 것도 3V인 것도 있다(데이터시트 범위). 배터리는 9V로 시작해 6.5V까지 닳는다. 전형값에서 되는 회로가 최악 조건에서 안 되는 일이 흔하다.
  4. 펌웨어: 마이컴이 들어가면 회로만으로는 판정이 안 된다. 프로그램을 실제로 돌려 봐야 한다.

그래서 만든 것: 요구 → AI 설계 → 자동 검증 → 빵판

바이브 회로 설계 실험의 흐름도. ① 사람의 요구(말로 쓴 6~7줄) → ② AI 설계자(받은 것: 요구, 부품 카드 24종의 핀 이름과 데이터시트 요점, 파일 형식. 시뮬레이터 금지) → ③ 설계 파일(부품 목록, U2.PB2처럼 이름으로 쓴 넷, 설명, 마이컴이면 C 펌웨어). 아래 줄에 ④ 자동 검증기(ERC: 없는 부품·없는 핀 이름·끊긴 핀·단락 / ngspice 시험대: 배터리 9V·6.5V, 최악 조건, 정격 전류 / 가상 칩 simavr: 펌웨어를 ATtiny85 위에서 돌리고 표시기 신호 해독) → ⑤ 통과하면 빵판 자동 배치와 부품표·견적. 아래에 「불합격이면 보고서를 그대로 ②에 돌려보내 다음 판을 받는다」

판은 이렇게 짰다.

AI 설계자는 매번 새로 띄운 Claude 에이전트다. 이 실험의 다른 맥락은 모른다. 받는 건 세 가지다. 말로 쓴 요구, 쓸 수 있는 부품 24종의 부품 카드, 설계 파일 형식. 부품 카드에는 핀 이름과 데이터시트 요점만 있다. 예를 들어 2N7000은 「핀: S, G, D / 문턱 0.8~3V, 200mA」다. 시뮬레이터나 컴파일러는 못 쓰게 했다. 손 계산과 지식으로만 설계하게 해서, 「AI 혼자」가 어디까지 맞히는지 보려는 것이다.

핀은 번호가 아니라 이름으로 잇게 했다. 78L05 레귤레이터는 TO-92 패키지에서 다리 순서가 출력·접지·입력이다. 흔한 7805(입력·접지·출력)와 반대라 사람도 자주 틀린다. 설계 파일에는 「U1.OUT」처럼 이름만 쓰고, 이름을 물리 핀으로 바꾸는 건 부품 카드 한 곳에서만 한다. atopile 같은 도구가 택한 방식이고, HWE-Bench 논문도 이름이 분명한 핀은 연결 정확도가 높다고 적었다. 핀 번호 환각 하나를 구조로 막는 셈이다.

검증기는 내가 Claude와 함께 짰다. 이번 회의 대부분 시간이 여기 들어갔다.

  • ERC: 부품 카드에 없는 부품, 없는 핀 이름, 끊긴 핀, 배터리 단락을 잡는다.
  • ngspice 시험대: 설계 파일을 SPICE 넷리스트로 바꿔 돌린다. 555 타이머, 78L05, 반사 센서는 제조사 모델 대신 데이터시트에 적힌 동작과 전형값대로 움직이는 모형을 새로 썼다. 배터리 9V와 6.5V, 그리고 부품 편차의 최악 조건에서 각각 돌린다.
  • 가상 칩: 마이컴 펌웨어는 avr-gcc로 빌드해 simavr라는 AVR 시뮬레이터 위에서 돌린다. 센서 핀에는 벨트가 도는 신호를 넣고, 표시기 신호선을 해독해 화면에 뜬 숫자를 읽는다.
  • 빵판 배치기: 통과한 회로를 170홀 → 400홀 → 830홀 순서로 넣어 보고 처음 들어가는 빵판을 고른다(담금질 탐색).

예제 1: 문 열림 차임

요구는 이랬다. 문에 자석, 문틀에 리드 스위치를 붙인다. 문이 열리면 「삐-」 하고 한 번(0.5~3초) 울리고, 계속 열려 있어도 다시 울리지 않는다. 닫혀 있으면 조용하다. 닫았다가 1초 만에 다시 열어도 울린다. 배터리 하나로 1년, 6.5V까지 닳아도 울린다. 부품은 적을수록 좋다.

나는 555 타이머 두 개쯤을 예상했다. 실제로 검증기를 시험하려고 내가 먼저 손으로 짠 555 회로는 대기 전류만 300µA가 넘어 1년을 못 버텼다. 문이 열릴 때 트리거가 4.5V에서 멈춰 아예 울리지도 않았다. 검증기가 내 실수를 먼저 잡은 셈이다.

AI의 첫 판(r1)에는 IC가 없었다. 배터리까지 부품 일곱 개, 64초 만에 나왔다.

  • 전환형 리드 스위치를 쓴다. 문이 닫히면 공통 단자가 접지에, 열리면 배터리 +에 붙는다.
  • 그 공통 단자 → 콘덴서 → MOSFET 게이트. 게이트에는 접지로 가는 저항을 단다.
  • 문이 열리는 순간 콘덴서 한쪽이 9V로 뛰고, 콘덴서는 전압을 순간에 못 바꾸니 게이트도 9V로 뛴다. MOSFET이 켜져 능동 부저가 운다.
  • 콘덴서가 저항을 통해 차면서 게이트 전압이 지수 함수로 떨어지고, 문턱 아래로 내려가면 소리가 멎는다. 문이 계속 열려 있어도 이미 찬 콘덴서는 다시 신호를 만들지 않는다.
  • 문이 닫히면 다이오드가 콘덴서를 몇 ms 안에 비운다. 그래서 1초 뒤 다시 열어도 처음처럼 울린다.
  • 닫혀 있을 때는 전류가 흐를 길이 아예 없다. 대기 전류 0. 전원 스위치도 필요 없다.

교과서의 「미분 회로로 만든 원샷」이다. 1M 저항과 1µF 콘덴서로 시간 상수 1초. AI는 문턱 편차까지 계산해 9V에서 0.94~1.93초, 6.5V에서 0.62~1.61초 울린다고 적었다.

검증기는 전형값에서 전부 통과시켰다. 9V에서 1.40초, 6.5V에서 1.08초, 대기 전류 0, 다시 열기도 통과. 그런데 최악 조건에서 떨어졌다. 문턱이 가장 낮은 0.8V짜리 2N7000에, 알루미늄 전해 콘덴서 데이터시트가 허용하는 누설 전류 상한(0.01CV 또는 3µA 중 큰 값)을 넣자 문을 연 뒤 닫을 때까지 멈추지 않고 울었다. 열린 채 두면 7.5mA가 흘러 배터리가 사흘이면 바닥난다.

최악 조건에서 MOSFET 게이트 전압을 비교한 그래프. 문이 열리는 4초와 9초에 두 선 모두 9V로 뛴 뒤 지수적으로 떨어진다. r1(1M·1μF, 빨강)은 1.6V 근처에서 더 내려가지 않아 문턱 0.8V 점선 위에 머물고, 아래 띠에서 r1은 문이 열린 내내 울린다. r2(100k·10μF, 파랑)는 0.3V 근처까지 내려가 문턱 아래로 떨어지고, 울림은 2.4초 만에 멎는다

원인은 그래프에 그대로 보인다. 전해 콘덴서로 새는 몇 µA가 1MΩ 저항에 걸리면 게이트에 1.6V 남짓이 남는다. 문턱 0.8V보다 높으니 MOSFET이 꺼지지 않는다. 손 계산에서는 누설을 0.1µA 아래로 잡았는데, 데이터시트 상한은 그 수십 배다. 실제 콘덴서 대부분은 상한보다 훨씬 덜 새겠지만, 운 나쁜 콘덴서 하나와 운 나쁜 트랜지스터 하나가 만나면 현관에서 부저가 멈추지 않는다.

보고서를 돌려보내자 AI가 둘째 판(r2)을 냈다. 저항을 1M에서 100k로 줄이고 콘덴서를 1µF에서 10µF로 키웠다. 시간 상수는 1초 그대로인데, 누설이 남기는 게이트 전압은 10분의 1인 0.17V로 줄어 최소 문턱 0.8V보다 한참 낮다.

그리고 보고서에 없던 문제를 하나 더 짚었다. 콘덴서가 10배 커지면 문이 닫힐 때 콘덴서가 리드 스위치와 다이오드를 거쳐 한꺼번에 비면서 순간 전류가 리드 스위치 정격(0.25A)을 넘을 수 있다는 것이다. 그래서 100Ω 저항을 하나 더 넣어 순간 전류를 88mA로 묶었다.

그 지적이 맞는지 보려고 검증기에 정격 전류 검사를 새로 넣었다. 넣고 나서 r1을 다시 돌려 보니, r1도 문이 닫히는 순간 리드 스위치에 1.1A가 흘렀다. 10µs 남짓이지만 리드 스위치 접점은 이런 콘덴서 방전에 약하다. 검증기가 놓친 걸 AI가 먼저 짚고, 그 덕에 검증기가 한 칸 자랐다.

r2는 모든 검사를 통과했다. 최악 조건에서 9V 2.42초, 6.5V 0.73초. AI가 손으로 계산한 값이 2.36초, 0.71초였다. 순간 전류는 79mA.

문 열림 차임 r2 회로도. 9V 배터리 BT1의 +는 위쪽 VBAT 선, -는 아래 접지선이다. 전환형 리드 스위치 SW1의 위쪽 단자는 VBAT, 아래 단자는 접지에 이어지고, 공통 단자는 R2 100Ω과 전해 콘덴서 C1 10μF을 거쳐 게이트 노드로 간다. 게이트 노드에서 D1 1N4148(음극이 게이트 쪽)과 R1 100k가 접지로 내려가고, 게이트는 Q1 2N7000에 이어진다. Q1의 드레인 위로 능동 부저 BZ1이 VBAT까지 이어진다

문 열림 차임을 170홀 미니 빵판에 자동 배치한 그림. 위쪽 반에 부저 BZ1, MOSFET Q1, 저항 R1·R2, 다이오드 D1, 전해 콘덴서 C1이 꽂혀 있고 점퍼선은 1개다. 9V 배터리와 리드 스위치는 전선으로 위쪽 구멍에 꽂힌다

빵판은 170홀 미니 하나의 위쪽 반만 쓴다. 점퍼선은 하나다. 부품값은 1달러 남짓이고, 미니 빵판(SparkFun 표시가 5.25달러)까지 넣어도 8달러 안팎이다.

예제 2: 러닝머신 벨트 속도계

요구는 이랬다. 벨트 가장자리에 폭 2cm 흰 반사 테이프를 한 조각 붙이고, 반사 센서로 테이프가 지나가는 간격을 재서 km/h로 4자리 표시기에 보여 준다. 벨트 한 바퀴 길이는 줄자로 재서 펌웨어에 넣는다(시험은 3.000m). 1~20km/h, 오차는 ±1% 또는 ±0.1km/h 중 큰 값. 벨트가 멈추면 5초 안에 0.0. 9V, 6.5V까지 정상 동작.

계산이 필요하니 마이컴이 들어간다. AI는 147초 만에 부품 15개짜리 설계와 펌웨어 C 파일을 냈다.

  • 전원: 9V → 슬라이드 스위치 → 78L05(5V). 배터리가 6.5V까지 닳으면 78L05의 전압 강하 1.7V 때문에 4.8V가 되지만, ATtiny85와 표시기는 그 전압에서도 돈다고 계산했다.
  • 센서: 반사 센서의 적외선 LED에 330Ω(약 11mA), 수광 트랜지스터에 10k 풀업. 흰 테이프면 0.2V, 검은 벨트면 4V. 마이컴 내부 풀업(20~50k)은 검은 면에서도 LOW로 떨어질 수 있어 쓰지 않았다고 적었다.
  • 클럭: 여기서 AI가 데이터시트를 제대로 읽었다. ATtiny85 내부 발진기는 공장 보정 정확도가 ±10%다. ±1% 요구를 맞출 수 없으니 8MHz 크리스털을 달았다. 그 대가로 핀 두 개를 내줬다.
  • 측정: 테이프 앞 가장자리가 지나갈 때마다 인터럽트로 시각을 8µs 단위로 찍고, 한 바퀴 시간 T로 속도를 낸다. 같은 가장자리끼리 재니 센서 문턱이나 테이프 폭의 영향이 지워진다.

그리고 요구의 모순을 먼저 짚었다. 테이프가 한 조각뿐이면 1km/h에서 한 바퀴에 10.8초가 걸린다. 5초 동안 테이프가 안 왔을 때 벨트가 멈춘 건지, 아주 느리게 도는 건지 구별할 정보가 물리적으로 없다. AI는 1km/h 측정을 살리는 쪽을 골랐고, 이 구간에서는 0.0이 뜨기까지 최대 16초쯤 걸린다고 적었다. 5초를 지키려면 테이프를 두세 조각 붙이라고 했다.

검증기는 먼저 회로를 본다. 센서 전압은 검은 벨트 4.06V, 닳아서 회색이 된 벨트 3.25V, 흰 테이프 0.17V로 마이컴이 HIGH와 LOW를 분명하게 가르는 범위에 들었다. 배터리 6.5V에서도 마이컴 전원은 4.72V. 동작 전류는 39mA라 9V 배터리로 15시간쯤 간다. 펌웨어는 플래시 1,124바이트, RAM 24바이트로 빌드됐다.

그다음 가상 칩이 펌웨어를 돌린다. 벨트를 0 → 10 → 3 → 16 → 20 → 6.5km/h → 멈춤 → 1km/h → 멈춤으로 126초 동안 바꿔 가며, 표시기 신호선에서 숫자를 읽었다.

벨트 속도를 바꿔 가며 표시기 숫자를 읽은 그래프. 회색 굵은 계단이 실제 벨트 속도, 파란 선이 크리스털을 단 AI 설계의 표시값으로 각 구간에서 10.0, 3.0, 16.0, 20.0, 6.5, 1.0을 정확히 따라간다. 빨간 점선(같은 펌웨어, 내부 RC -10%)은 11.1, 3.3, 17.8, 22.2로 높게, 주황 점선(+10%)은 9.1, 2.7, 14.5, 18.2로 낮게 나온다. 1km/h에서 멈춘 뒤 0.0이 뜨기까지 14.7초가 걸린다는 주석이 있다

  • 모든 구간에서 표시가 맞았다. 10.0, 3.0, 16.0, 20.0, 6.5, 1.0.
  • 6.5km/h에서 멈추면 0.9초 만에 0.0.
  • 1km/h에서 멈추면 14.7초 만에 0.0. AI가 미리 말한 그 자리에서 정확히 떨어졌다.

요구와 물리가 부딪치는 자리는 AI도 검증기도 못 푼다. 사람이 고를 일이다. 나는 「2.5km/h 아래에서 멈출 때는 한 바퀴 반까지 기다려도 된다」로 요구를 고쳤고, 같은 설계가 그대로 통과했다.

크리스털이 정말 필요했는지 대조 실험도 해 봤다. 같은 펌웨어를 크리스털 없이, 내부 발진기가 데이터시트 한계까지 빗나간 클럭(±10%)으로 돌렸다. 10km/h에서 11.1과 9.1이 떴다. 화면은 멀쩡하게 돌아가니 눈으로는 모른다. AI가 데이터시트 한 줄을 읽고 내린 판단이 이 차이를 막은 것이다.

러닝머신 속도계를 170홀 미니 빵판에 자동 배치한 그림. 가운데 홈을 ATtiny85가 걸치고, 위쪽 반에 크리스털 Y1과 22pF 콘덴서 둘, 리셋 풀업 R1, 아래쪽 반에 슬라이드 스위치, 78L05, 콘덴서 C1·C2·C3, 센서 저항 R2·R3가 있다. 점퍼선 7개가 줄 사이를 잇고, 9V 배터리·반사 센서·4자리 표시기가 아래쪽에서 전선으로 이어진다

이쪽도 170홀 미니 빵판 하나에 들어갔다. 점퍼선은 7개다. 부품값은 ATtiny85(LCSC 3.01달러)와 반사 센서(1.58달러)가 대부분이라 빵판까지 13달러 안팎이다. 표시기는 소수점이 있는 TM1637 모듈을 골라야 한다. 흔히 파는 모듈은 시계용이라 가운데 쌍점만 있고 소수점이 없다.

직접 돌려 보기

아래 해부기에서 두 예제를 단계별로 볼 수 있다. 위쪽 단추로 예제를, 그 아래 여섯 칸으로 단계를 고른다.

바이브 회로 설계 해부기. 문 열림 차임과 러닝머신 속도계 두 예제를 고르고, 1 요구(말로 쓴 문장) → 2 AI 설계(부품·넷·설명·펌웨어, r1과 r2 비교) → 3 자동 검증(ERC·ngspice·가상 칩 보고서) → 4 시뮬레이션(차임은 게이트 전압과 부저를 최악 조건별로 재생, 속도계는 벨트와 가상 칩이 그린 7세그먼트 숫자를 재생하고 내부 RC 클럭과 비교) → 5 빵판 배치(넷을 짚으면 같은 넷이 밝아짐) → 6 부품표·견적 순서로 넘긴다.

시뮬레이션 단계에서 차임의 r1과 r2, 그리고 최악 조건 단추를 번갈아 눌러 보면 위의 그래프가 움직인다. 속도계는 재생 단추를 누르면 벨트가 10배속으로 돌고, 가상 칩이 그린 숫자가 표시기에 뜬다. 숫자는 펌웨어가 실제로 표시기 신호선에 내보낸 비트를 해독한 것이다.

어디서 틀렸나

AI보다 검증기를 만드는 쪽에서 더 많이 틀렸다. 순서대로 적는다.

  • 555 모형이 반쯤 걸렸다. 처음에는 555의 기억 소자(래치)를 연속 함수로 흉내 냈다. 그랬더니 문턱 근처에서 출력이 0도 1도 아닌 상태로 멈춰 발진기가 서 버렸다. 래치를 디지털 소자로 바꿨더니, 이번에는 전압이 경계에 걸리는 순간 「모름」 상태가 래치에 남아 출력이 0.5에 갇혔다. 경계 띠를 없애고서야 데이터시트 계산(1.012ms)과 0.6% 차이로 맞았다.
  • 내 손으로 만든 점검용 회로가 틀렸다. 검증기를 시험하려고 짠 555 차임은 트리거 전압이 4.5V에서 멈춰 울리지 않았다. 두 번째 판은 대기 전류가 1.1mA라 23일짜리였다. 검증기는 제대로 일했다.
  • 시뮬레이터가 없는 소리를 만들었다. AI의 r1을 처음 돌렸을 때 문이 닫히는 순간 부저가 2.6초 울렸다. 다이오드가 콘덴서를 순간적으로 비울 때 SPICE의 기본 적분법(사다리꼴)이 수치 진동을 일으켜 게이트에 없는 6V를 만든 것이다. 적분법을 gear로 바꾸자 사라졌다. 이걸 그대로 보고서로 보냈으면 AI는 멀쩡한 회로를 「고쳤을」 것이다. 검증기도 검증해야 한다.
  • 검사 항목이 처음엔 모자랐다. 속도계의 「멈추면 5초 안에 0.0」은 처음 검증기에 없었다. 구간 끝 숫자만 보고 통과시켰다가 나중에 넣었다. 정격 전류 검사는 AI가 r2에서 짚은 뒤에 넣었다.
  • 여전히 못 잡는 게 있다. 속도계 그래프를 자세히 보면 10km/h에서 3km/h로 갑자기 바꿀 때 잠깐 0.0이 뜬다. 한 바퀴 시간이 갑자기 세 배가 되니 「멈췄다」고 판단한 것이다. 실제 러닝머신은 천천히 감속하니 덜하겠지만, 검증기의 시험 항목에는 없어서 통과했다.

AI 쪽 실수는 r1 차임의 누설 하나였다. 그것도 전형값에서는 멀쩡했고, 데이터시트의 최악 값을 넣고서야 드러났다. 반대로 AI는 검증기가 묻지 않은 것 두 가지(콘덴서 방전 순간 전류, 테이프 한 조각의 물리적 한계)를 먼저 짚었다.

주문 가능한 형태까지는?

이번 실험이 닿은 곳은 검증된 넷리스트 + 펌웨어 + 빵판 배치도 + 부품표·견적이다. 빵판으로 만들어 볼 사람에게는 이걸로 충분하다. 부품표의 단가는 LCSC와 SparkFun의 2026년 10월 20일 표시가를 쓰고, 나머지는 소량 시세로 어림했다.

기판으로 뽑아 주문하려면 한 단계가 더 있다. 배치·배선(레이아웃)이다. 부품마다 기판 위 발자국(풋프린트)을 정하고, 자리를 잡고, 선을 그어 거버 파일을 만들어야 JLCPCB에 올릴 수 있다. 이 단계가 지금 Quilter, DeepPCB, Cadence가 AI로 공략하는 곳이고, KiCad와 오픈소스 자동 배선기 FreeRouting으로도 할 수 있다. 이번에는 거기까지 가지 않았다. 다만 넷리스트가 핀 이름으로 정리돼 있고 검증까지 끝났으니, 레이아웃 도구에 넣을 재료는 갖춘 셈이다. 기판값 자체는 문제가 아니다. 10×10cm 2층 기판 5장이 2달러부터다.

왜 딸깍이 되는가

이번에는 정말 몇 줄짜리 요구로 회로가 나왔다. 차임은 두 번, 속도계는 한 번에. 그게 된 이유를 꼽으면 셋이다.

회로 지식은 교과서와 데이터시트에 다 있다. 미분 회로 원샷, 풀업 저항, 크리스털 발진, 입력 캡처. AI가 새로 발명한 건 없다. 대신 요구에 맞는 조각을 골라 값을 계산하는 속도가 빠르다. 64초, 147초.

검증기가 AI 대신 의심해 줬다. 전형값으로 손 계산하면 r1 차임은 완벽했다. 데이터시트의 최악 값을 넣고 시뮬레이터로 돌린 뒤에야 문제가 보였다. 앞의 벤치마크 표에서 검증기를 붙인 쪽 숫자가 높았던 것과 같은 이야기다.

사람이 할 일이 분명하게 남았다. 요구가 물리와 부딪칠 때 무엇을 양보할지(1km/h 측정이냐, 5초 멈춤 표시냐), 검증기를 무엇으로 채울지, 그리고 실물을 꽂아 보는 일. 이번 실험은 시뮬레이션까지였고, 실물은 만들지 않았다.

따라 하려면

  • AI에게 부품 목록을 줘라. 「무엇이든 써도 된다」고 하면 존재하지 않는 품번이나 엉뚱한 핀 배치가 나오기 쉽다. 쓸 부품과 그 핀 이름, 데이터시트 핵심 숫자 몇 개만 적어 주면 된다.
  • 핀은 이름으로 잇게 해라. 번호를 쓰게 하지 마라. 78L05 하나만으로도 이유가 충분하다.
  • 시뮬레이터를 붙여라. LTspice와 ngspice는 공짜다. 전형값 한 번, 배터리가 닳은 값 한 번, 부품 편차의 양끝 한 번씩 돌려라. 이번 실험의 진짜 실수는 전부 최악 조건에서 나왔다.
  • 시뮬레이터 결과도 의심해라. 시뮬레이션이 「이상하게 잘 되거나 이상하게 안 되면」 적분법, 모형, 시험 조건부터 본다.
  • 마이컴이 들어가면 펌웨어도 가상 칩에서 돌려라. simavr(AVR), Wokwi(아두이노·ESP32, 브라우저) 같은 도구가 있다.

못 하는 것

  • 실물을 만들지 않았다. 모든 결과는 시뮬레이션이다. 리드 스위치의 접점 떨림, 부저의 실제 소리, 반사 센서에 들어오는 햇빛, 러닝머신의 진동은 모형에 없다.
  • 모형은 데이터시트 흉내다. 555, 78L05, 반사 센서는 제조사 모델이 아니라 데이터시트의 동작과 전형값으로 새로 쓴 모형이다. 온도 변화와 노화는 넣지 않았다.
  • 부품 카드 밖은 못 쓴다. 24종 안에서만 설계했다. 실제 바이브 설계라면 부품 검색과 데이터시트 읽기가 한 단계 더 붙어야 한다.
  • 기판 레이아웃은 하지 않았다. 빵판까지다.
  • 예제가 작다. 부품 15개 안팎이다. HWE-Bench가 다루는 보드 수준 회로와는 크기가 다르다.

PSpice를 열려면 아직도 회로를 알아야 한다. 다만 이제는 회로를 아는 사람의 일이 「그리는 것」에서 「무엇을 검사할지 정하는 것」으로 옮겨 가고 있다. 이번에 검증기에 넣은 검사 하나하나가 그 목록이다.

재미있게 읽었다면 꼭 의견을 달아달라.

출처

이 연재를 처음부터 보시려면 진짜 딸깍하는 AI 로 가시오.

한마디 0

아직 한마디도 없소. 먼저 보태시오.

한마디 보태려면 들어오시오.