부품 배치까지는 만족스러웠습니다. 채널 피치가 정확히 균일하고, 부품이 자로 잰 듯 줄을 섰습니다. 그런데 배선을 돌리고 렌더를 보니 이건 아니다 싶었습니다.
선이 왼쪽으로 바로 가면 되는데 위로 직각으로 올라갔다가 내려옵니다. 부품 패드 사이 좁은 틈을 파고듭니다. 계단처럼 짧게 오르내립니다. 어떤 선은 끝이 아무 데도 안 닿고 허공에 떠 있습니다.
PCB 배선에서 지켜야 하는 규칙 8가지
배선 규칙은 작업하면서 하나씩 늘었습니다. 순서대로 적으면 이렇습니다.
| # | 규칙 |
|---|---|
| 1 | 직각(90°) 꺾임 금지 — 45° 로 간다 |
| 2 | 선 굵기는 넷 성격별로 통일 — 신호 0.25 |
| 3 | 부품 패드·비아 사이로 선이 지나가지 않는다 |
| 4 | 꺾임 최소화 — 최대한 일직선 |
| 5 | 한 번에 갈 수 있는 것부터 전부 잇고, 나머지를 그 다음에 |
| 6 | GND: SMD 패드는 비아로 내리고, DIP 은 포어에 맡긴다 |
| 7 | 포어 연결은 서멀(X자) 로 — 통짜로 붙이지 않는다 |
| 8 | 끝이 허공에 뜬 선(안테나) 금지 |
이 중에 DRC가 잡아주는 건 하나도 없습니다. 클리어런스만 맞으면 패드 사이를 지나가도 통과고, 계단으로 가도 통과고, 안테나가 있어도 “연결은 정상”이라 통과입니다. 그래서 규칙마다 검사기를 따로 만들어야 했습니다.
안테나 — DRC 가 절대 못 잡는 것
안테나 배선은 선의 한쪽 끝이 패드에도 비아에도 다른 선에도 안 닿아 있는 경우입니다. 반대쪽은 넷에 붙어 있으니 연결은 정상입니다. DRC 는 아무 말도 안 합니다.
전기적으로는 안테나입니다. 노이즈를 받고 방사합니다. 그리고 눈으로 보면 그냥 지저분합니다.
검사는 간단합니다. 모든 배선 끝점의 차수를 세서, 차수가 1이면서 패드·비아 좌표가 아닌 점을 찾으면 됩니다. 하나를 지우면 그 옆이 새 안테나가 되므로 변화가 없을 때까지 반복합니다.
선배선 후 나머지만 라우터에 — 세 번 실패
수동 선배선은 계단과 우회가 라우터 탓이라는 판단에서 나왔습니다. 중요한 선은 제가 직접 45° 로 깔고 나머지만 라우터에 주기로 하고, 세 가지 방식을 시도했습니다.
| 방식 | 직각 꺾임 | 미배선 |
|---|---|---|
| 라우터에 전부 맡김 (빈 보드) | 10 | 9 |
| 45° 선배선 + 채널1 복사 + 라우터 | 80 | 48 |
| 채널 넷 직접 배선 + 라우터 | 65 | 54 |
세 번 다 더 나빠졌습니다. 이유는 생각해보면 당연합니다. 제가 깐 선은 라우터 입장에서 못 건드리는 장애물입니다. 장애물이 많아지니 남은 공간에서 억지로 비집고 들어가느라 직각이 늘고, 그러다 못 가면 미배선으로 남습니다.
부분 최적화가 전체를 망친 전형적인 경우입니다. 이 표를 기록으로 남겨뒀습니다. 다음에 같은 유혹이 들 때 다시 시도하지 않으려고.
계단 배선의 진짜 원인 — 층별 배선 방향
계단 배선 후처리 도구를 먼저 만들었습니다. 연속된 구간을 통째로 최소 45° 경로로 다시 까는 방식입니다. 효과는 있었지만 근본 해결은 아니었습니다 — 라우터가 계속 계단을 만들어내니 매번 따라다니며 펴야 했습니다.
원인은 층별 배선 방향이 없다는 것이었습니다.
PCB 라우팅의 기본 중의 기본인데, 층마다 선호 방향을 정합니다.
| 층 | 방향 |
|---|---|
| 부품면 | X축(가로) 위주 |
| 납땜면 | Y축(세로) 위주 |

완성본에서 바깥 두 면만 뽑아 본 것입니다. 4부 시점에는 이 두 장이 전부였고, 16채널을 여기에 다 넣어야 했습니다. 가로로 지나가는 굵은 줄기와 세로로 내려오는 줄기가 같은 면에서 만나는 자리마다 우회와 계단이 생깁니다. 6부에서 내층 두 장을 얹은 뒤의 그림과 나란히 놓고 보면 차이가 분명합니다.
이게 없으면 라우터는 한 층에서 대각선으로 가려다가 막히고, 대각선과 직선을 잘게 번갈아 놓습니다. 그게 계단입니다. 방향을 정해주면 가로는 윗면으로, 세로는 아랫면으로 곧게 가고, 방향 전환은 비아로 합니다.
KiCad 가 Specctra DSN 을 내보낼 때는 층 속성에 순번만 쓰고 방향을 안 넣습니다. 그래서 DSN 을 내보낸 뒤 방향을 주입하도록 했습니다.
(layer top_cu
(type signal)
(property
(direction horizontal) ← 이 줄을 끼워 넣는다
(index 0)
Freerouting CLI 에는 각도나 방향을 지정하는 옵션이 아예 없습니다. 파일에 직접 써 넣는 것 말고는 방법이 없었습니다.
고쳐놓은 직각과 선 굵기가 되돌아왔다
후처리로 고쳐놓은 값이 문제였습니다. 여기까지 하고도 몇 라운드 지나면 되살아납니다. 직각을 10곳까지 줄여놨는데 다음에 재보면 101곳이 되어 있고, 선 굵기를 맞춰놨는데 다시 어긋나 있습니다.
저는 이걸 “후처리 순서 문제”라고 보고 순서를 계속 바꿔봤습니다. 실제로 순서 문제도 있었습니다 — 비아를 옮기거나 폭을 바꾸는 단계가 45° 정리 뒤에 오면 직각이 되살아납니다. 그래서 45° 정리를 맨 마지막에 한 번 더 돌리게 했습니다.
DRC 가 통과시키는 배선 품질은 규칙마다 검사기를 따로 만들어야 하고, 계단 배선은 층별 배선 방향으로 잡습니다.
그런데 그걸로도 다 설명이 안 됐습니다. 진짜 원인은 훨씬 황당한 데 있었고, 그게 5부입니다. 제가 쓰던 검증 도구가 검증 대상을 고쳐 쓰고 있었습니다.
▶️ 5부: 측정이 대상을 바꾸고 있었다 — 그리고 양산 보드에서 정답지를 꺼내다
🔧 이전 편: 1부 · 2부 — 1.5배 보드 · 3부 — 라이브러리와 3D 삽질
문의
- Email : [email protected]
- Insta : https://www.instagram.com/going.sen/
- Website : https://intosen.com/kr/consult/
댓글
닉네임만 입력하면 바로 댓글을 남길 수 있어요. Google/GitHub 로그인도 가능합니다.