전자·EMS·PCB를 위한 Manufacturing Decision Intelligence
전자·EMS·PCB 공장은 제조업 가운데서도 데이터가 촘촘하게 쌓이는 현장이다.
EMS(Electronics Manufacturing Services)는 전자제품 위탁생산 산업, PCB(Printed Circuit Board)는 전자부품이 실장되는 인쇄회로기판을 뜻한다.
PCB 한 장이 생산되는 동안에도 여러 공정에서 데이터가 남는다. SPI(Solder Paste Inspection)는 납의 인쇄 상태를 측정하고, AOI(Automated Optical Inspection)는 카메라로 부품 실장 상태를 검사한다. BGA(Ball Grid Array)처럼 접점이 부품 아래에 있어 눈으로 확인하기 어려운 경우에는 X-RAY를 쓴다. 부품을 납땜하는 Reflow 공정에서는 구간별 온도도 기록된다.
하지만 데이터가 많다고 원인을 바로 찾을 수 있는 것은 아니다. 같은 제품이라도 Revision(설계·부품 변경 버전), 자재 Lot(같은 조건으로 생산·입고된 자재 묶음), Recipe, 설비 조건이 달라진다. 제품과 공정 조건이 자주 바뀌기 때문에 한 제품에서 발견한 이상 패턴을 다른 제품에 그대로 적용하기도 어렵다.

불량을 찾아내는 것만으로는 충분하지 않다. 정상 생산과 무엇이 달라졌는지, 같은 조건에 노출된 생산분이 어디까지인지 확인해 원인과 영향 범위를 특정해야 한다.
검사 장비와 MES는 이미 이상과 생산 이력을 잘 기록한다. 어려운 것은 흩어진 기록을 연결해 원인을 좁히고, 영향 범위를 확인한 뒤, 어떤 조치를 할지 판단하는 일이다.
HEARTCOUNT Decision Layer는 지표의 계산 기준뿐 아니라, 지표에 이상이 생겼을 때 무엇을 확인하고 어떤 기준으로 비교해 조치까지 이어갈지를 구조화하는 기술이다. 보험·유통·공공 등에 적용해 온 이 접근을 이번에는 제조 공정으로 확장했다. 실제 SMT 공정 구조를 바탕으로 합성 데이터를 만들고, BGA 불량 사례를 분석해 보았다.
BGA 불량 원인을 찾아 보니...
BGA(Ball Grid Array)는 반도체 칩 아래에 수십~수백 개의 작은 솔더볼을 두고 PCB와 연결하는 방식이다. 접합부가 칩 아래에 가려져 있어 육안으로 확인하기 어렵고, 생산 후에는 주로 X-RAY로 상태를 검사한다. Reflow 공정의 온도나 인쇄 상태, 자재 조건 등이 접합 품질에 영향을 줄 수 있다.
아래는 제조 데이터와 BGA 불량 분석 경로를 HEARTCOUNT Decision Layer에 구조화한 뒤, MCP를 통해 Claude에 ‘BGA 접합 불량률 상승 보고서’를 요청한 결과다.
온도를 13℃ 올린 설정표 하나가 불량률을 두 배로 만들었다
8월 24일 불량률 급등의 원인은 설비 고장이 아니라 승인받지 않은 Recipe였습니다.
조치 대상은 42장입니다. 이 중 정상 판정으로 후공정에 넘어간 36장이 재검사 검토 대상입니다.
BGA 접합 불량률
0.317%
기간 달성 · 목표 0.35% 이하
8/24 0.550%로 초과
FPY 직행률
99.683%
기간 달성 · 목표 99.5% 이상
8/24 99.440%로 미달
조치 대상
42장
재검사 검토 36장
작업지시 3건 · Lot 3건
먼저, 이 공정이 무엇인지
기판은 네 단계를 거칩니다. 이번 사안은 마지막 Reflow에서 일어났습니다.
칩 바닥에는 수백 개의 솔더볼이 붙어 있습니다. 리플로우는 기판을 뜨거운 오븐에 통과시켜 이 납 구슬을 녹였다가 굳혀 칩을 기판에 접합하는 공정입니다. 접합부가 칩 아래 가려져 육안으로 볼 수 없기 때문에 X-RAY로 투과 검사합니다. 뒤에 나올 재검사 논의는 이 점에서 출발합니다.
8월 24일, 두 지표가 동시에 무너졌다
평소 두 KPI 모두 목표 안쪽에서 안정적이었습니다. 하루만 예외입니다.
| 날짜 | BGA 불량률목표 0.35% 이하 | FPY 직행률목표 99.5% 이상 |
|---|---|---|
| 8/21 | 0.311% | 99.700% |
| 8/22 | 0.301% | 99.695% |
| 8/23 | 0.311% | 99.700% |
| 8/24 | 0.550% | 99.440% |
| 8/25 | 0.412% | 99.588% |
8/24 불량률 0.550%는 앞선 14일 평균(0.314%)의 1.8배입니다. 같은 날 FPY는 99.440%로 이번 기간 중 유일하게 목표를 밑돌았습니다. 8/25에 일부 회복했지만 여전히 목표 위입니다.
기간 전체로 보면 불량률 0.317%, FPY 99.683%로 두 지표 모두 목표를 달성했습니다. 문제는 평균이 아니라 이틀에 몰린 이상입니다.
원인은 오븐 온도를 13℃ 올린 설정표
오븐은 여러 구간(Zone)으로 나뉘고 구간마다 온도를 다르게 설정합니다. 이 설정표를 Recipe라고 부릅니다. 우리 제품의 대표 칩은 열적으로 Zone 6의 영향을 받습니다.
| Recipe | 승인 | Zone 6 설정 | Zone 6 실측 | 불량률 | 처리량 |
|---|---|---|---|---|---|
| V6 | 승인됨 | 232℃ | 231.97℃ | 0.28% | 6,408장 |
| V7 | 미승인 | 245℃ | 244.97℃ | 14.29% | 42장 |
Recipe 번호(RCP-P102-R3)와 컨베이어 속도가 같습니다. V7은 V6에서 Zone 6 온도 하나만 올린 파생 버전입니다. 설정 232℃에 실측 232℃, 설정 245℃에 실측 245℃로 두 버전 모두 설정값을 정확히 따라갔습니다. 오븐은 정상이고 설정표가 잘못됐습니다.
설비 고장이 아니라는 근거
8월 24일 하루를 시간대별로 쪼개면, 같은 오븐에서 두 온도가 동시에 나옵니다.
| 시간 | Recipe | Zone 6 실측 | 처리 장수 |
|---|---|---|---|
| 07시 | V6 | 232.0℃ | 74 |
| 07시 | V7 | 245.1℃ | 6 |
| 15시 | V6 | 231.9℃ | 74 |
| 15시 | V7 | 245.3℃ | 6 |
오븐이 과열됐다면 그 시간에 지나간 모든 기판이 함께 뜨거워야 합니다. 그런데 같은 시각 같은 설비에서 V6는 232℃, V7은 245℃로 갈립니다. 온도를 결정한 것은 설비 상태가 아니라 어떤 Recipe로 돌렸는가입니다.
V7의 온도 산포는 약 1℃ 범위로 안정적입니다. 설비가 이탈하는 중이라면 온도가 흔들리거나 계속 올라가야 하는데, V7은 245℃라는 목표값에 정확히 제어되고 있습니다.
불량이 늘어난 게 아니라, 불량의 종류가 바뀌었다
가장 결정적인 증거입니다. 같은 실장 위치(U17)에서 Recipe별로 어떤 결함이 나왔는지 보면, V7만 완전히 다른 칸에 찍힙니다.
| Recipe | BRIDGE | VOID | OPEN | HEAD IN PILLOW | COLD JOINT |
|
|---|---|---|---|---|---|---|
| V3 | 검사 5,988장 | |||||
| V6 | 검사 6,396장 | |||||
| V7 | 검사 42장 |
V7에서는 BRIDGE · VOID · OPEN이 한 장도 나오지 않았습니다. 대신 다른 Recipe에서는 한 장도 없던 HEAD IN PILLOW와 COLD JOINT만 나왔습니다. V3와 V6는 정확히 그 반대입니다.
이건 "불량이 늘었다"가 아니라 고장 나는 방식 자체가 달라졌다는 뜻입니다. HEAD IN PILLOW는 솔더볼과 페이스트가 녹아도 서로 융합하지 못하고 맞닿은 채 굳는 결함으로, 기판이나 패키지의 휨(warpage)이 주원인입니다. 245℃라는 과잉 열량은 휨을 키웁니다.
V7로 처리된 42장 중 6장(14.3%)이 이 계열 결함으로 걸렸습니다. 우연으로 보기 어려운 수준입니다.
조치 대상은 42장
V7으로 처리된 기판 전량입니다. 작업지시 3건, 생산 Lot 3건에 걸쳐 있습니다.
42
V7 통과 기판
총 노출 물량
36
재검사 검토 대상정상 판정으로 통과
6
불량 확정
폐기 2 · 재작업 4
0
미검사 잔량
라인 보류 불필요
36장이 핵심입니다. 이 물량은 X-RAY 최초 검사를 통과해 정상품으로 판정됐고, 작업지시 3건이 모두 완료 상태입니다. 라인에 잡아둘 재공이 없으니 이 건은 라인 정지가 아니라 사후 추적 회수 판단의 문제입니다.
그대로 두기 어려운 이유는 05에서 확인한 결함 모드에 있습니다. HEAD IN PILLOW는 X-RAY로 가장 놓치기 쉬운 결함입니다. 형상만 보면 맞닿아 있어 접합된 것처럼 보이지만, 실제로는 금속학적으로 결합되지 않은 상태입니다. 통상적인 X-RAY 재판정만으로는 충분하지 않을 수 있어 단면 분석이나 기계적 평가 병행을 검토하실 필요가 있습니다.
별개로, Zone 6 위치는 원래 약하다
V7과 무관한 발견입니다. 실장 위치별 불량률을 보면 열영향 Zone 번호와 뚜렷하게 연동됩니다.
Zone 3~4는 약 0.10%, Zone 5는 0.20%, Zone 6은 0.21~0.24%입니다. Zone 4와 5 사이에서 두 배로 뜁니다.
가장 눈에 띄는 건 U17과 U9입니다. 검사 물량이 12,450장으로 같습니다. 즉 같은 기판 위의 두 위치입니다. 같은 오븐, 같은 조건을 통과했는데 Zone 6 의존인 U17이 Zone 4 의존인 U9의 2.5배 불량률을 냅니다. SPI 도포량 편차는 전 위치가 3.9% 수준으로 평평해서 인쇄 공정으로는 설명되지 않습니다.
승인된 Recipe로 정상 운영하는 중에도 이 격차가 존재합니다. V7 건을 정리한 뒤 Zone 6 프로파일 최적화를 별도 과제로 세울 만합니다.
제안하는 조치 순서
우선순위대로 정리했습니다.
-
V7 사용 즉시 중단
REFLOW-C-01을 V6로 되돌리고, 승인 없이 라인에 반영된 경위를 확인합니다.
-
정상 판정 36장의 위치 파악 및 재검사
후공정 재고인지 이미 출하됐는지에 따라 회수 범위가 달라집니다. HEAD IN PILLOW 특성상 X-RAY 재판정만으로는 부족할 수 있습니다.
-
미승인 Recipe 투입 차단 룰 신설
시스템에는 이 Recipe가 승인 여부 = false로 정확히 기록돼 있었습니다. 그런데도 이틀에 걸쳐 실행되는 동안 어떤 게이트에도 걸리지 않았습니다. 데이터는 알고 있었지만 아무도 보지 않았습니다.
-
Zone 6 프로파일 최적화 과제 착수
07의 구조적 격차에 대한 대응입니다. 이번 사안과 분리해 중기 과제로 다루시길 권합니다.
이 분석으로 알 수 없는 것
보고 자리에서 질문이 나올 수 있어 미리 밝혀 둡니다.
- V7 모수가 작습니다. 총 42장이라 14.29%는 42장 중 6장을 뜻합니다. 불량률 수치 자체의 오차 범위는 넓습니다. 다만 V7에서만 두 개의 특정 결함 모드가 나타나고 다른 Recipe에서는 한 장도 없다는 분리는 표본 크기와 무관하게 성립합니다.
- Zone 6 외 구간은 알 수 없습니다. 데이터에 담긴 Recipe 파라미터는 Zone 6 설정온도와 컨베이어 속도 둘뿐입니다. 전체 프로파일을 손댔는지는 MES Recipe 마스터에서 V6·V7을 나란히 비교해야 확인됩니다.
- 누가·언제·왜 만들었는지 없습니다. 작성자, 생성 시각, 변경 사유, 승인 요청 이력이 데이터에 남아 있지 않습니다.
- 출하 추적 정보가 없습니다. 정상 판정 36장이 지금 어디에 있는지는 MES·WMS에서 별도 확인이 필요합니다.
- FPY는 현재 BGA 불량률과 같은 정보만 담고 있습니다. 최초 합격 판정이 BGA X-RAY 결과만으로 산출되고 있어, 부품 미삽이나 솔더 브리지 등 BGA 외 결함이 반영되지 않습니다. 지표 정의 보완이 필요합니다.
이 판단 경로는 어떻게 만들어졌나
앞의 보고서에서 Claude가 임의로 원인 후보를 떠올린 것은 아니다. HEARTCOUNT Decision Layer에는 BGA 불량률의 정의뿐 아니라, 이 지표가 나빠졌을 때 무엇을 확인하고 어떻게 비교할 것인지가 함께 등록돼 있다.
실제 bga_defect_rate 정의의 일부는 다음과 같다.

코드 자체는 복잡해 보이지만, 사람의 문제 해결 순서로 바꾸면 구조는 단순하다.
BGA 불량률
→ 정상 범위를 벗어났는가
→ 어느 설비·작업지시·생산 Lot에서 차이가 커졌는가
→ Reflow·인쇄·자재 가운데 무엇이 달라졌는가
→ 같은 제품·Revision·라인·실장 위치의 정상 생산과 비교하면 어떤가
→ 영향받은 PCB는 어디까지인가
이상을 발견한 뒤 원인 후보를 좁히고, 정상 생산과 비교하고, 영향 범위까지 확인하는 분석 경로가 BGA 불량에 대한 Decision Graph다.
Decision Graph는 논리적 구조를 뜻하는 개념으로, Graph DB가 필수인 것은 아니며 관계형 DB나 YAML 같은 구조만으로도 구현할 수 있다.
1. KPI: 언제부터 문제로 볼 것인가
첫 번째 노드는 bga_defect_rate다.
kpi:
target:
value: 0.35
unit: "%"
bound: upperBGA 불량률의 상한을 0.35%로 정의했다. 따라서 사람이나 AI가 그때그때 “이 정도면 높은 것 같다”고 판단하는 것이 아니라, 같은 기준에서 이상 여부를 판단한다.
2. Driver: 무엇을 원인 후보로 볼 것인가
불량률이 기준을 넘으면 다음으로 볼 항목이 driver다.
이번 모델에서는 원인 후보를 크게 세 계열로 잡았다.
Reflow 조건 / 인쇄 조건 / 자재 Lot
Reflow에서는 Recipe 버전과 실제 온도, 미승인 Recipe 사용 여부를 본다. 인쇄에서는 SPI 편차를 보고, 자재에서는 솔더 페이스트와 BGA 부품 Lot을 확인한다.
앞의 보고서에서 미승인 Recipe V7과 Zone 6 온도가 분석 대상으로 올라온 것도 이 경로를 따른 결과다.
3. Analysis Path: 어떻게 확인할 것인가
원인 후보마다 확인 방법도 다르게 정의돼 있다.
Reflow가 의심되면 설비 → 작업지시 → 생산 Lot으로 내려가면서 불량률과 실제 온도를 함께 본다.
analysis:
type: drill_down
by:
[reflow_equipment_id,
work_order_id,
production_lot_id]자재 문제라면 단순 Drill-down보다 정상 생산과의 비교가 중요하다.
analysis:
type: peer_comparison
peer_group:
[product_id,
revision,
line_id,
component_location]여기서 peer_group은 무엇을 정상 비교군으로 인정할 것인가를 정한다.
다른 제품이나 다른 BGA 위치와 섞어 비교하지 않고, 같은 제품·Revision·라인·실장 위치끼리 비교한다. 전자 제조처럼 조건이 자주 바뀌는 환경에서는 이 기준이 없으면 정상적인 제품 차이를 이상 원인으로 잘못 읽기 쉽다.
전체 구조를 단순화하면 다음과 같다.
BGA 불량률 이상
│
├── Reflow 조건
│ ├─ Recipe 변경?
│ ├─ 미승인 Recipe?
│ └─ 설정·실측 온도 변화?
│ ↓
│ 설비 / 작업지시 / Lot 확인
│
├── 인쇄 조건
│ └─ SPI Volume / Offset 변화?
│ ↓
│ 실장 위치 / 작업지시 확인
│
└── 자재 조건
├─ Solder Paste Lot 변경?
└─ BGA Component Lot 변경?
↓
정상 생산군과 비교
↓
영향 생산분 특정
↓
조치 후보 및 현장 확인일반적인 Semantic Layer가 **“BGA 불량률을 어떻게 계산할 것인가”**를 정의한다면, Decision Layer는 그 지표를 출발점으로 **“이상이 생겼을 때 무엇을 어떤 순서로 확인할 것인가”**까지 구조화한다.
Claude는 MCP(Model Context Protocol)를 통해 이 구조와 제조 데이터를 조회한다. 그래서 매번 자유롭게 분석 경로를 만들어내는 대신, 정의된 KPI와 원인 후보, 비교 기준을 따라 데이터를 확인하고 그 결과를 보고서로 정리할 수 있다.
판단을 AI에게 인수인계하려면
자율 제조에서 중요한 것은 설비가 스스로 움직이는 것만이 아니다. 이상을 인지하고, 원인을 판단하고, 적절한 대응을 선택하는 과정까지 자동화의 범위에 들어와야 한다.
실제 현장에서 사람이 하는 일은 설비를 움직이는 것보다, 설비·자재·제조 방법에서 발생한 이상을 인지하고 원인을 판단한 뒤 적절한 대응 조치를 선택하는 일에 가깝다.
따라서 자율 제조가 진전되려면 이 판단 과정 역시 시스템 안으로 들어와야 한다. 처음에는 사람이 더 빨리 판단할 수 있도록 지원하고, 충분한 데이터와 검증이 쌓인 영역부터 일부 판단과 조치를 자동화할 수 있다.
이번 BGA 사례에서 Decision Layer에 넣은 것도 그런 판단의 구조다. 불량률을 언제 이상으로 볼 것인지, Reflow·인쇄·자재 가운데 무엇을 확인할 것인지, 어떤 생산군과 비교할 것인지, 영향 범위를 어디까지 추적할 것인지를 데이터와 함께 정의했다.
Decision Layer는 자율 제조를 위한 또 하나의 AI 기능이라기보다, 사람이 하던 판단을 AI에 인수인계하기 위한 기반이라고 생각한다.