2층으로는 안 되는 거였다 — 규칙은 지켰는데 배선이 나쁜 이유
5부까지 오면서 규칙을 하나씩 코드로 박아 넣었다. 그리고 이번 회차에서 숫자가 꽤 좋아졌다.
| 항목 | 라우팅 직후 | 다듬은 뒤 |
|---|---|---|
| 직각(90°) 꺾임 | 28곳 | 3곳 |
| 임의 각도 세그먼트 | 78개 (132mm) | 17개 |
| 선 굵기 섞임 | 넷 16개 | 0개 |
| DRC 위반 | 13 | 12 |
세 가지 수법이 먹혔다.
1. 모따기 크기를 낮춰가며 시도한다. 기존 도구는 모따기를 한 가지 크기로만 시도했다. 빡빡한 구간에서 그게 안 들어가면 DRC 가 막고, 그 코너는 영원히 직각으로 남는다. 0.8 → 0.5 → 0.35 → 0.25 … 로 낮춰가며 시도하니 절반이 풀렸다.
2. 배치를 15개에서 3개로 줄인다. “적용 → DRC → 나빠지면 되돌리기”를 배치로 하는데, 배치가 크면 나쁜 편집 하나가 좋은 14개를 같이 죽인다. 15개 배치에서 97개 중 7개만 살아남던 것이, 3개 배치로 바꾸니 66개 중 50개가 살았다.
3. 접점을 이웃 축을 따라 민다. 2.19° 처럼 “직선이어야 하는데 살짝 흐른” 선은, 그 접점에 붙은 이웃 배선이 축 정렬돼 있으면 이웃의 자기 방향으로 접점을 밀면 된다. 이웃은 각도를 유지한 채 길이만 변하고, 문제 선은 정확한 각도가 된다. 62개 중 44개가 이 방식으로 해결됐다.
그런데 확대해 보니
숫자가 좋아졌으니 됐다고 생각했다. 그러다 배선을 크게 확대해서 봤다.
- 비아가 빈 공간에 박혀 있고, 거기서 선이 길게 늘어진다. 사람이라면 그 자리에 비아를 놓지 않는다.
- 하면 배선이 상면 패드 위를 여러 번 가로지른다. 층이 달라 DRC 는 통과하지만, “부품 패드 사이로 지나가지 않는다”는 규칙 위반이다.
- 평행 다발이 최소 간격으로 붙어 있다. 간격을 넓힐 공간이 없다.
- 올라갔다 대각으로 내려오는 우회가 그대로 남아 있다.
측정값이 이미 말하고 있었다. 넷당 평균 꺾임 12.9회. 우회율 최대 3.0배 (224mm 를 깔아서 74mm 를 잇는다). 나는 그 위에 마감만 계속 발랐던 것이다.
규칙 위반 개수가 줄어드는 것과 배선이 좋아지는 것은 다른 일이다.
직각 3곳, 임의각 17개는 “게이트를 통과할 수 있는 상태”이지 “양산 도면으로 내놓을 수 있는 상태”가 아니다.
원인은 층이 모자란 것이었다
5부 끝에 적어둔 실측이 답이었다. 같은 계열 양산품인 4채널 IO 보드가 4층이고, 내층 두 장이 접지 평면이 아니라 진짜 배선층이다.
| 보드 | 상면 | 내층2 | 내층3 | 하면 |
|---|---|---|---|---|
| 4채널 IO (양산품) | 369mm | 344mm | 262mm | 439mm |
나는 채널이 4배인 16채널 보드를 2층에 욱여넣고 있었다.
공간이 없으니 라우터는 이렇게 대응한다 — 0.06mm 씩 비켜 가는 토막을 만들고, 비아를 아무 데나 박아 층을 바꾸고, 패드 위로 넘어간다. 그리고 그 결과를 후처리로 고치려 하면 DRC 가 막는다. 실제로 미세 토막을 흡수하려 했더니 97개 중 7개만 통과했다. 나머지는 넣는 순간 간섭이 났다. 그 토막들이 존재하는 이유가 바로 “거기 공간이 없어서”였기 때문이다.
4층으로 전환
층 번호는 추측하지 않고 KiCad API 로 바꿨다. 직접 쓰면 번호 체계를 틀린다 (KiCad 10 은 F.Cu=0, B.Cu=2, In1.Cu=4, In2.Cu=6 이다 — 연속 번호가 아니다).
b = pcbnew.LoadBoard("io16.kicad_pcb")
b.SetCopperLayerCount(4)
pcbnew.SaveBoard("io16.kicad_pcb", b)
그리고 층별 방향을 4층에 맞게 다시 넣었다. 4부에서 상면=가로 / 하면=세로를 DSN 에 주입했는데, 층 이름을 2층 기준으로 하드코딩해 뒀던 터라 내층에는 방향이 안 들어가고 있었다. 보드에서 층 이름을 읽어 번갈아 넣도록 고쳤다.
| 층 | 방향 |
|---|---|
| F.Cu | 가로 |
| In1.Cu | 세로 |
| In2.Cu | 가로 |
| B.Cu | 세로 |
(In1.Cu 의 점은 정규식 특수문자다. escape 를 빼먹으면 조용히 안 맞는다.)
배운 것
이번 회차에서 가장 값비싼 교훈은 이거다.
품질 지표를 고치는 것과 물건을 좋게 만드는 것을 혼동하지 말 것.
직각 개수, 각도 분포, 선폭 균일도는 전부 필요조건이다. 다 만족해도 배선이 나쁠 수 있다. 그리고 그 필요조건들이 자꾸 안 채워진다면, 그건 후처리가 부족한 게 아니라 애초에 그 공간에서 불가능하다는 신호일 수 있다.
숫자가 잘 안 올라갈 때 후처리 도구를 하나 더 만들기 전에, “이 판이 이 회로를 담을 수 있는 판이 맞나”를 먼저 물었어야 했다.
▶️ 7부 — 마지막 1건과의 전쟁: 자동화가 제일 어려운 곳은 끝이다 — 마감 직전 이슈 총정리
🔧 이전 편: 1부 · 2부 · 3부 · 4부 · 5부 — 측정이 대상을 바꾸고 있었다
댓글
로그인 없이 이름만 적고 남기실 수 있어요. 남긴 댓글은 바로 게시됩니다.
댓글을 불러오는 중…