Making Failure a First-Class Result
What went in
장비별 오염 · 공정 실패 조건 4종을 표준 물리로 넣었다. · LCR 오염 반영 · 점진적 O₂ ashing 모델 + 곡선형 잔여 PR 얼룩 (3장비 통일) · 세정 온도 · 시간 코칭 광학 쪽에서 재미있는 걸 하나 맞췄다. 표면 잔류물은 그 위에 막이 쌓이면 광학적으로 묻힌다. 현미경으로 안 보인다고 없어진 게 아니다.
실패가 결과로 나오지 않으면, 성공도 결과가 아니다.
Why this was the hard part
성공 경로를 만드는 것보다 실패 경로를 만드는 게 어렵다. 잘 된 웨이퍼는 하나의 모습이지만, 잘못된 웨이퍼는 잘못된 방식마다 다르게 생겼다. 오염이 남은 것, 덜 깎인 것, 박리된 것, 과하게 태운 것이 전부 다른 그림이다. 그리고 실패는 서로 섞인다. 세정이 부족한 상태에서 증착하면 그 위 공정 전부가 조금씩 어긋난다. 한 장비의 실패가 그 장비에서 끝나지 않는다. 장비마다 따로 만들면 이게 안 된다. 표준 물리로 올린 이유다.
Then I could not trust it
물리를 넣고 나니 다음 문제가 왔다. 이게 맞게 도는지 확인할 방법이 없었다. 화면으로 확인하려면 사람이 클릭해야 하고, 조건 조합은 손으로 다 못 돈다. 사흘 뒤 UI 없이 엔진만 node 에서 돌리는 검증 하니스를 만들었다. 돌리자마자 버그가 쏟아졌다. 저온 열산화에서 두께가 음수로 나왔고, soft bake 는 온도만 보고 시간을 안 봤고, 노광량이 현상 품질로 비대칭 전파되고 있었다. 전부 화면으로는 안 보이던 것들이다. 그럴듯한 숫자가 나오고 있었기 때문이다.
Reopening a finished wafer
완료한 시편을 다시 여는 기능도 이 달에 넣었다. 측정 장비는 재측정이 되고, 공정 장비는 읽기 전용이다. 다시 깎을 수는 없지만 다시 볼 수는 있다. 실제 웨이퍼가 그렇다.
The month
5월 한 달 커밋이 451개다. 이 저장소에서 가장 바빴다. 돌아보면 그 451개 중 상당수가 "실패를 제대로 실패하게 만드는" 일이었다. 시뮬레이터에서 제일 품이 드는 건 잘 되는 경우가 아니다.