검증을 전부 통과한 1.5배 보드 — 내부 정합성의 함정
파이프라인이 뚫렸으니 진짜 보드로 옮겨갈 차례였다. 대상은 실제로 만들어 팔고 있는 8채널 릴레이 출력 보드. 부품 60개짜리다.
목표는 “비슷하게”가 아니라 1:1 재설계. 같은 부품, 같은 연결, 같은 크기. 그래야 자동화가 진짜로 되는지 알 수 있다.
원본에서 설계 의도를 뽑아내기
PADS 파일에서 필요한 걸 꺼내야 한다.
| 원본 | 꺼낼 것 |
|---|---|
.asc (설계 ASCII) | 부품 배치 좌표, 배선, 보드 외형 |
| LOGIC 넷리스트 | 어느 핀이 어느 핀에 붙는가 |
라이브러리 .d | 풋프린트(패드 모양·위치) |
| PL 엑셀 | 부품 값, 정격, 품번 |
넷리스트는 세 군데에서 뽑아 교차검증했다. 한 군데만 믿으면 파싱 오류가 그대로 설계에 들어간다. 세 개가 다 같으면 그건 맞다고 봐도 된다.
단위 — 여기서 사고가 났다
PADS ASCII 의 좌표는 정수다. 예를 들면 43714500 85875000 같은 값.
이게 무슨 단위인지 파일 어디에도 “이건 몇 나노미터다”라고 안 적혀 있다.
파일 헤더에 BASIC 이라고 쓰여 있고, 값의 크기를 보면 나노미터 같았다.
그래서 1nm 로 읽었다. 부품 피치를 계산해 보니 그럴듯했다. 전부 그럴듯했다.
- 부품 60개 좌표 전수 일치
- 배선 152쌍 전수 일치
- ERC 0건, DRC 0건
- 넷리스트 3중 교차검증 통과
그런데 보드가 1.5배 컸다.
왜 안 걸렸나
내가 만든 게이트는 전부 “내가 뽑은 값”과 “내가 만든 값”을 비교한다. 파서가 1.5배로 읽으면, 좌표도 1.5배, 보드 크기도 1.5배, 부품 간격도 1.5배로 사이좋게 일치한다. 비율이 유지되니까 내부 검증은 전부 통과한다.
이걸 잡은 건 파일 밖 기준이었다. 제조용 CAM 데이터의 파일 이름에
보드 크기가 (51x81) 이라고 적혀 있었다. 내 결과는 76×121 이었다.
51 × 1.5 = 76.5. 81 × 1.5 = 121.5. 정확히 1.5배.
BASIC 단위는 2/3 나노미터였다. 즉 1,500,000 으로 나눠야 mm 다.
43714500 / 1,500,000 = 29.143 mm ← 맞다
43714500 / 1,000,000 = 43.71 mm ← 내가 하던 것
부품의 표준 피치(2.54mm, 3.5mm, 1.27mm)와 맞춰봤으면 훨씬 빨리 잡혔을 텐데, “내부 검증이 다 통과했으니 맞겠지”에 기대고 있었다.
더 나빴던 건 그 다음
숫자를 발견하고 나서 내가 처음 한 말이 이거였다.
“그 CAM 은 아마 다른 리비전일 겁니다.”
외부 증거를 예외로 치부한 것이다. 내 값이 맞다는 전제를 놓기 싫어서. 다행히 다른 보드의 CAM 도 같은 비율로 어긋나 있어서 금방 뒤집혔지만, 저 한마디가 몇 시간을 더 잡아먹을 뻔했다.
그래서 규칙을 하나 더 박아 넣었다.
외부 증거가 내 값과 다르면, 내 쪽을 먼저 의심한다.
고치고 나서
배율을 고치고 다시 돌리니 보드 크기가 원본과 맞았다. 그런데 이미 그 1.5배 오류를 안고 다음 단계까지 가 있었기 때문에, 라이브러리도 배치도 전부 다시 뽑아야 했다. 틀린 걸 늦게 잡으면 그만큼 되돌리는 양이 늘어난다.
이 경험 이후로 새 보드를 시작할 때 제일 먼저 하는 일이 생겼다.
- 원본의 제조 CAM 에서 보드 실측 치수를 확인한다
- 부품 몇 개의 핀 피치를 재서 표준값(1.27 / 2.54 / 3.5 / 5.08)과 맞는지 본다
- 그 다음에 파이프라인을 돌린다
다음 편은 라이브러리다. PADS 라이브러리 1,214개 풋프린트와 857개 심볼을 KiCad 네이티브로 다시 짓는 과정에서, 역슬래시 한 글자 때문에 라이브러리 전체가 안 읽히는 일이 있었다. 그리고 3D 모델 위치를 세 번 연속으로 잘못 추측한 이야기도.
▶️ 3부: 라이브러리를 새로 짓고 127부품을 배치하다
🔧 이전 편: 1부 — PCB 아트웍을 자동화하기로 했다
댓글
로그인 없이 이름만 적고 남기실 수 있어요. 남긴 댓글은 바로 게시됩니다.
댓글을 불러오는 중…