6부에서 4층으로 갈아타고 배치를 압축했습니다. 지표는 크게 좋아졌습니다 — DRC 12→5, 미연결 3→1, 우회율 3.07→2.08배. 그런데 그 “마지막 몇 건”이 안 없어졌습니다.
이 편은 그 마지막 몇 건과 싸운 기록입니다. 자동화에서 제일 오래 걸리는 곳은 처음 90%가 아니라 마지막 1건이라는 걸 몸으로 배웠습니다.
왜 계속 조금씩 남는가 — 도구의 다섯 가지 결함
자동 보정 도구의 결함은 다섯 가지였습니다. “남은 거 다 처리해”라는 말을 듣고 도구들을 다시 보니, 전부 같은 병을 앓고 있었습니다.
| # | 결함 | 실측 |
|---|---|---|
| 1 | 모따기 크기를 한 가지만 시도 | 크기를 6단계로 낮추니 직각 절반 해결 |
| 2 | 15개 배치 일괄 판정 — 하나 나쁘면 14개 동반 폐기 | 배치 3으로 줄이자 7개→50개 생존 |
| 3 | 첫 실패에서 전체 중단(break) | 건너뛰기로 바꾸니 뒤의 쉬운 건들이 풀림 |
| 4 | 탐색 범위 ±12mm 고정 | 돌아가는 길이 밖에 있으면 영영 못 찾음 |
| 5 | 비아 후보를 한 점만 시도 | 주변 나선 탐색으로 0.3~0.6mm 옆에서 발견 |
패턴은 하나입니다. 탐색 공간을 좁혀놓고 “안 된다”고 결론짓는 것. “모든 후보 무효”라는 로그를 보면 이제 후보가 몇 개였는지부터 의심합니다.
판정 기준이 만든 감옥 — 지표에 우선순위가 없었다
도구의 판정 기준은 전부 “적용 → 검사 → 나빠지면 되돌리기”였습니다. 문제는 모든 지표를 같은 무게로 본 것입니다.
미로 탐색이 마지막 미연결을 뚫고 미연결 0을 만들었는데, 클리어런스가 3건 늘었다고 그 결과를 제 도구가 취소했습니다. 한참 뒤에야 알았습니다.
미연결은 회로가 동작하지 않는 것이고, 0.02mm 간섭은 제조 여유 문제입니다. 연결을 얻고 간섭은 따로 잡는 게 맞습니다. 반대로 단락은 미연결보다 나쁩니다 — 미연결은 안 움직일 뿐이지만 단락은 회로를 망가뜨립니다.
우선순위를 단락 > 미연결 > 클리어런스로 정하고 나서야 “한 걸음 물러서서 두 걸음 나가는” 수가 가능해졌습니다.
측정이 또 흔들렸다 — 존이 겹치면 DRC는 비결정적
DRC 측정 재현성이 또 문제였습니다. 5부에서 “DRC가 보드를 덮어쓴다”를 잡았는데, 이번엔 사본으로 재도 값이 흔들렸습니다. 같은 파일을 3번 재니 8/7/7.
원인은 겹치는 존이었습니다. GND 포어 위에 전원 평면을 하나 얹었더니 존 채움이 실행마다 달라졌습니다. 평면이 없는 보드는 6/6/6으로 완전히 결정적이었습니다.
이 상태에서는 “고쳤더니 나빠졌다”는 판정 자체가 노이즈입니다. 좋은 수정을 버리고 나쁜 수정을 채택합니다. 대응은 두 가지 —
- 판정용 DRC는 3회 재서 최악값을 씁니다
- 백업 파일 이름에 측정값을 박습니다 (
_BEST_e5u1s0.kicad_pcb). “final”, “verified” 같은 이름을 붙였다가, 실제로는 단락 2건짜리였던 파일 위에 작업을 쌓은 적이 있습니다
전원은 면으로? — 층의 성격을 읽어야 한다
내층 전원 평면은 미연결 +5V를 한 방에 풀겠다는 시도였습니다. 양산 보드가 내층을 전원면으로 쓰는 걸 실측으로 확인했으니까요.
결과는 참사였습니다. 단락이 실행마다 0~4건으로 출렁였습니다.
제가 놓친 것: 그 양산 보드는 내층 배선이 21mm뿐인 순수 평면층이었고, 제 보드는 내층에 배선이 1,755mm 깔린 배선층이었습니다. 배선이 빽빽한 층에 평면을 얹으니 채움이 배선 사이를 비집다가 불안정해진 것입니다.
같은 “4층”이라도 내층이 평면층인 보드와 배선층인 보드는 다른 물건입니다. 남의 설계를 인용할 때는 수치만 보지 말고 층의 성격까지 봐야 합니다.
평면을 걷어내니 결정성이 돌아왔고, 미연결은 결국 배선으로 풀었습니다.
비아는 모든 층을 뚫는다 — 같은 실수 네 번
4층의 비아가 제일 많이 밟은 지뢰입니다. 2층에서는 비아를 놓을 때 앞뒷면만 보면 됐지만, 4층에서는 비아가 내층 배선까지 관통합니다.
이걸 알고 스킬 문서에 기록까지 해놓고, 새 도구를 만들 때마다 또 빠뜨렸습니다.
| 회차 | 어디서 | 결과 |
|---|---|---|
| 1 | 미연결 지점에 비아 배치 | In1의 다른 넷 관통 — 단락 |
| 2 | 우회용 비아 | 동일 |
| 3 | 미로 탐색의 시작·끝 비아 (중간 비아만 검사) | 단락 2 |
| 4 | 벽 절개점의 우회 비아 | 단락 10 |
교훈은 “기록했으니 됐다”가 아니었습니다. 비아를 만드는 코드가 여러 벌이면 검사를 빠뜨리는 코드가 반드시 생깁니다. 비아 생성을 전층검사가 내장된 헬퍼 하나로 모으는 것이 답입니다.
검시 — 실패 상태를 보존하고 실물을 본다
“경로를 깔았는데 미연결이 안 줄어든다”가 세 번 반복됐습니다. 매번 원인을 추측으로 바꿔가며 고쳤는데(끝점 비아 → 층 인식 → 스티치), 세 번째에 방법을 바꿨습니다. 실패한 상태를 되돌리지 않고 보존해서, 추가된 구리와 DRC가 지목하는 두 점을 좌표로 대조했습니다.
10분 만에 다 나왔습니다.
- 미연결 3건 중 하나는 같은 y좌표의 6mm 수평 직선이면 되는 자리였습니다 (도구가 첫 실패에서 중단해 시도조차 안 했던 것)
- 하나는 두 배선이 0.1mm 거리 — 비아 하나 자리 문제
- 하나는 비아가 골짜기에 갇혀 있었습니다
추측 세 번보다 검시 한 번이 쌌습니다.
포위전 — 벽을 옮기고 창을 낸다
마지막 미연결 1건이 제일 오래 걸렸습니다. 고아가 된 +5V 조각의 비아가, 다른 넷 배선 두 줄(위·아래) 사이 1.7mm 골짜기에 갇혀 있었습니다. 0.15mm 격자 미로 탐색이 137노드 만에 포위될 정도로.
오토라우터도 못 푼 자리입니다. 이유는 간단합니다 — 자동 도구는 전부 기존 배선을 불가침으로 두고 빈틈만 찾습니다. 빈틈이 없으면 끝입니다.
사람은 이럴 때 방해되는 선을 들어서 옆으로 옮깁니다. 그걸 트랜잭션으로 만들었습니다.
- 막는 배선(벽)을 임시로 들어냅니다
- 갇힌 조각을 잇습니다
- 들어낸 벽을 다른 경로로 재배선합니다
- 전체 검사 — 하나라도 나빠지면 통째로 원복
벽을 통째(25.6mm) 들어내면 재배선이 안 됐습니다. 그래서 필요한 폭 2.4mm만 창을 내는 방식으로 바꿨습니다 — 창의 양끝만 우회로 다시 이으면 되니까요. 첫 시도에서 실제로 미연결 0이 찍혔습니다 (절개점 비아가 단락을 내서 원복됐지만 — 그게 위의 네 번째 반복입니다).
이 시점의 스코어보드
| 항목 | 2층 최종 | 4층 마감전 |
|---|---|---|
| DRC error | 12 | 4 |
| 미연결 | 3 | 1 |
| 단락 | 0 | 0 |
| 임의 각도 | 17개 | 5개 |
| 우회율 최대 | 3.07배 | 2.08배 |
| 측정 재현성 | — | 결정적 (3회 동일) |
미연결 1건은 위의 포위전이 진행 중입니다. 도구 결함을 하나씩 걷어낼 때마다 한 건씩 풀렸으니, 이것도 결국 도구 문제입니다 — 보드 문제가 아니라.

마감전이 벌어진 곳은 대부분 이 면입니다. 표면실장 부품이 몰려 있어 패드 사이 간격이 좁고, 그래서 “0.06mm가 모자라 배선이 안 들어가는” 자리가 여기서 나옵니다.
이번 편의 교훈 한 줄씩
- “모든 후보 무효”를 보면 후보가 몇 개였는지부터 의심하라
- 지표에 우선순위를 매겨라: 단락 > 미연결 > 클리어런스
- 존이 겹치면 DRC는 비결정 — 판정은 3회 최악값으로
- 백업 이름에 측정값을 박아라
- 층을 인용할 때는 수치가 아니라 성격(평면층/배선층)을 봐라
- 위험한 연산(비아 생성)은 검사 내장 헬퍼 하나로 모아라
- 추측 세 번보다 검시 한 번이 싸다
- 자동 도구가 못 푸는 밀집 구간은 벽을 옮기는 트랜잭션으로
마지막 몇 건은 보드가 어려워서 남는 게 아니라, 도구가 탐색 공간을 좁혀놓고 “안 된다”고 결론짓기 때문에 남습니다.
▶️ 8부 — 완성: DRC 0, 임의각 0 — 마지막 4건과 0.1mm
🔧 이전 편: 1부 · 2부 · 3부 · 4부 · 5부 · 6부 — 2층으로는 안 되는 거였다
문의
- Email : [email protected]
- Insta : https://www.instagram.com/going.sen/
- Website : https://intosen.com/kr/consult/
댓글
닉네임만 입력하면 바로 댓글을 남길 수 있어요. Google/GitHub 로그인도 가능합니다.