반도체 photo(리소그래피) 공정 데이터로 레지스트 라인 CD(resist_line_cd_nm)를 예측한다. train은 공정조건+특성(타깃 7종) 805행×24열, holdout은 특성(CD)이 없는 200행×17열이다. 목표는 (1) 어떤 공정변수가 CD를 좌우하는지, (2) POS/NEG PR의 물리적 차이, (3) CD를 회귀/머신러닝으로 예측 가능한지 검증하고 holdout CD를 추정하는 것이다.
train.csv 상위 5행(주요 열 발췌):
| sample_id | pr_tone | exposure_dose_mj_cm2 | peb_temp_c | develop_time_s | coat_thickness_nm | resist_line_cd_nm | spec_pass |
|---|---|---|---|---|---|---|---|
| S00489 | POSITIVE | 102.691 | 109.444 | 35.223 | 92.879 | 48.953 | FAIL |
| S00624 | POSITIVE | 97.425 | 107.726 | 48.908 | nan | 50.6 | FAIL |
| S00623 | POSITIVE | 102.876 | 111.83 | 56.555 | 101.539 | 48.38 | PASS |
| S00088 | NEGATIVE | 80.646 | 105.917 | 54.705 | 103.701 | 52.786 | PASS |
| S00213 | POSITIVE | 100.912 | 114.47 | 42.346 | 95.172 | 51.353 | PASS |
| 구분 | 열 | 의미 | 비고 |
|---|---|---|---|
| ID/그룹 | sample_id, lot_id, tool_id, sequence | 식별·로트(40)·장비(3)·처리순서 | 모델 제외/그룹효과 |
| 범주 | pr_tone | PR 극성 POSITIVE/NEGATIVE | 핵심 변수 |
| 중복 | retained_pattern_source | 잔존영역(EXPOSED/UNEXPOSED) | pr_tone와 완전중복→제거 |
| 상수/오타 | nominal_cd_nm | 목표 CD=50 | 분산0 + 500 오타→제거 |
| 공선성 | exposure_dose ↔ normalized_dose | 노광량 / tone보정 노광량 | 중복정보→normalized 제거 |
| 입력 | focus, coat_thickness, softbake, peb, develop_time, developer_conc, field_x/y | 초점·두께·베이크·PEB·현상 조건·위치 | 모델 피처 |
| 타깃 | resist_line_cd_nm 외 6종 | CD·CDU·LER·결함확률·합격 | 주 회귀타깃=CD |
※ pr_tone↔retained_pattern_source 교차표에서 NEGATIVE=EXPOSED, POSITIVE=UNEXPOSED로 1:1 매핑됨을 확인 → 정보중복. nominal_cd_nm은 793개가 50, 1개가 500(물리 오타), 11개 결측 → 사실상 상수라 제거.
전 열 결측률 2% 미만으로 낮아 행 삭제는 정보손실이다. 그렇다고 단순 평균은 이상치에 민감하므로, tone·tool 조건부 중앙값(median)으로 대체했다. 범주형 pr_tone은 retained_pattern_source 매핑(EXPOSED→NEGATIVE 등)으로 먼저 복원 후 잔여는 최빈값.
→ 평균이 아니라 조건부 median을 택한 이유: 노광량·PEB 등은 tone/tool마다 대표값이 달라 전체 평균으로 채우면 그룹 특성이 뭉개진다. median은 이상치에 강건(robust)하다.
IQR + |z|>3 병행 탐지 후, 물리적으로 불가능한 값만 NaN 처리하여 위 median으로 재대체했다. (예: exposure_dose 565, peb_temp 386, softbake 10, coat 9 등 — 공정상 존재 불가). 통계적으로만 큰 값은 tree 모델이 강건하므로 보존했다.
| 열 | 물리불가→교정 개수 |
|---|---|
| exposure_dose_mj_cm2 | 1 |
| coat_thickness_nm | 1 |
| softbake_temp_c | 1 |
| peb_temp_c | 4 |
| develop_time_s | 3 |
| developer_concentration_pct | 1 |
정제 결과: train 805×21, holdout 200×14, 잔여결측 0. (holdout은 train에서 계산한 median을 적용해 데이터 누수 방지)
영향도를 4방법 교차검증(Pearson/Spearman 상관, 표준화 선형계수, RandomForest & Permutation importance, Mutual Information)으로 평가했다. 한 방법에 치우치지 않도록 각 방법의 순위를 평균해 종합했다.
| 변수 | 종합순위(↓중요) | Pearson r | RF importance | MutualInfo |
|---|---|---|---|---|
| exposure_dose_mj_cm2 | 1.33 | -0.102 | 0.600 | 0.473 |
| coat_thickness_nm | 2.50 | +0.130 | 0.061 | 0.028 |
| develop_time_s | 2.67 | -0.120 | 0.090 | 0.022 |
| focus_um | 5.83 | -0.029 | 0.041 | 0.000 |
| field_y | 6.33 | -0.025 | 0.053 | 0.000 |
| field_x | 7.00 | +0.021 | 0.050 | 0.000 |
| developer_concentration_pct | 7.00 | -0.022 | 0.034 | 0.017 |
| tone_pos | 7.17 | -0.007 | 0.005 | 0.027 |
| softbake_temp_c | 7.33 | +0.030 | 0.033 | 0.007 |
| peb_temp_c | 7.83 | +0.013 | 0.034 | 0.004 |
핵심 발견: exposure_dose_mj_cm2가 RF 중요도 0.60로 압도적이나, 선형상관은 -0.10로 약하다. 이는 노광량↔CD 관계가 tone에 따라 반대 방향이라 전체 선형상관은 상쇄되지만, 트리 모델은 tone×dose 상호작용(비선형)을 잡아내기 때문이다(4장 참조). 그 다음으로 coat_thickness(swing), develop_time(용해량)이 기여한다.
정보중복 열(retained_pattern_source, normalized_dose_pct, nominal_cd_nm)을 사전 제거하자 남은 변수의 VIF는 모두 2 미만으로 공선성이 해소되었다(|r|>0.8 쌍 0개).
| 변수 | VIF | 판정 |
|---|---|---|
| exposure_dose_mj_cm2 | 1.64 | 양호 |
| peb_temp_c | 1.54 | 양호 |
| develop_time_s | 1.22 | 양호 |
| focus_um | 1.01 | 양호 |
| field_x | 1.01 | 양호 |
| coat_thickness_nm | 1.01 | 양호 |
| field_y | 1.01 | 양호 |
| softbake_temp_c | 1.01 | 양호 |
| developer_concentration_pct | 1.01 | 양호 |
POSITIVE 528개, NEGATIVE 277개. tone별 groupby 후 t-test·Mann–Whitney로 유의차를 검정했다.
| 변수 | POSITIVE 평균 | NEGATIVE 평균 | 차이(P−N) | 유의차(p<0.05) |
|---|---|---|---|---|
| exposure_dose_mj_cm2 | 100.023 | 78.576 | +21.447 | ★ |
| peb_temp_c | 109.880 | 105.080 | +4.801 | ★ |
| develop_time_s | 48.044 | 54.278 | -6.235 | ★ |
| scum_probability | 0.220 | 0.085 | +0.134 | ★ |
| ler_nm | 1.598 | 1.749 | -0.151 | ★ |
| pattern_collapse_probability | 0.028 | 0.033 | -0.005 | ★ |
POSITIVE PR: 노광된 영역이 현상액에 용해·제거되고 비노광부가 남는다(UNEXPOSED 잔존). 데이터상 raw 노광량이 평균 100.0 mJ/cm²로 높게 운용된다. 노광량↑ → 산(acid) 생성↑ → 보호기 탈보호(deprotection)↑ → 용해영역 확대 → 라인 CD 감소 경향. 해상도에 유리하나 scum(현상잔사) 확률이 NEG보다 높게 나타났다(0.220 vs 0.085).
NEGATIVE PR: 노광부가 가교(cross-link)되어 잔존하고 비노광부가 제거된다(EXPOSED 잔존). raw 노광량이 평균 78.6 mJ/cm²로 낮게 운용된다(가교 개시에 필요한 dose가 상대적으로 낮음). 현상시간이 더 길고(용해대비 확보), LER이 더 큰 경향(1.598 vs 1.749 nm)은 팽윤(swelling)·가교 불균일과 관련된다.
→ 두 tone 모두 목표 CD 50nm를 맞추도록 dose·PEB를 서로 다른 대역에서 운용한다. 그래서 CD 자체 평균은 유사(POS 50.4 / NEG 50.4 nm)하지만, 같은 dose를 넣어도 tone에 따라 CD가 반대로 움직인다 — 이것이 3장에서 본 "선형상관 약함 + 트리 중요도 높음"의 물리적 원인이다. CAR 산확산(acid diffusion) 관점에서 PEB 온도는 산 확산길이 $\sigma=\sqrt{2Dt}$를 통해 CD·LER을 동시에 좌우한다.
필드 좌표 field_x, field_y(−1~1)로 CD의 공간 분포를 tone·장비별 facet으로 시각화하고, 중심거리 radius=$\sqrt{x^2+y^2}$ 기준 반경방향(edge effect) 경향을 검정했다.
| 구분 | r(field_x) | r(field_y) | r(radius) |
|---|---|---|---|
| 전체 | +0.021 | -0.025 | +0.043 |
| POSITIVE | +0.012 | -0.040 | +0.036 |
| NEGATIVE | +0.039 | -0.001 | +0.057 |
결론: 모든 위치-CD 상관이 |r|<0.06으로 미미하고, CD ~ x+y+radius 선형 R²=0.0029 (≈0.3%)에 불과하다. 즉 필드내 CD는 공간적으로 균일하며 계통적 center/edge 편차가 없다. 공정 균일도(uniformity)가 양호하다는 의미이고, 위치변수를 모델에서 제외해도 성능 손실이 없다(3장 importance와 일치).
데이터를 7:3 랜덤분할(random_state=42, 학습 70% / 검증 30%)하고, 전처리(표준화+원핫)를 파이프라인 안에서 학습셋만으로 fit하여 데이터 누수를 막았다. 5-fold 교차검증을 보조로 병행했다.
| 모델 | Test R² | RMSE(nm) | MAE(nm) | MAPE% | Train R² | 과적합 gap | CV R² |
|---|---|---|---|---|---|---|---|
| LinearRegression | 0.295 | 2.299 | 1.631 | 3.19 | 0.172 | -0.123 | 0.174 |
| Ridge | 0.293 | 2.302 | 1.634 | 3.20 | 0.172 | -0.121 | 0.174 |
| Lasso | 0.292 | 2.304 | 1.638 | 3.21 | 0.171 | -0.120 | 0.175 |
| RandomForest | 0.601 | 1.730 | 1.166 | 2.28 | 0.944 | +0.344 | 0.629 |
| GradientBoosting | 0.639 | 1.644 | 1.054 | 2.05 | 0.916 | +0.276 | 0.639 |
선형계열(Linear/Ridge/Lasso)은 Test R²≈0.30로 낮다. 반면 트리 기반은 GradientBoosting가 Test R²=0.639, RMSE=1.64nm, MAPE=2.05%로 크게 앞선다. 잔차플롯에서 선형모델은 구조적 패턴(비선형 잔차)이 남지만 GradientBoosting는 상대적으로 무작위에 가깝다. 결론: 단순 선형회귀로는 부족하고, tone×공정조건 상호작용을 포착하는 머신러닝(GBM)이 적합하다. MAPE 약 2%는 CD 예측에서 실용 가능한 수준이다.
최적 모델 GradientBoosting를 전체 train으로 재학습한 뒤 holdout 200개 샘플의 CD를 예측했다. 예측 CD 평균 50.05 nm(범위 44.7~56.5), train 실측 범위(25.8~66.3) 안에 100% 포함되어 외삽(extrapolation) 위험이 없다(범위 밖 0개).
예측 결과 상위 12행(전체는 outputs/holdout_predictions.csv):
| sample_id | tool | pr_tone | 예측 CD(nm) |
|---|---|---|---|
| S00800 | T02 | POSITIVE | 48.119 |
| S00801 | T02 | NEGATIVE | 52.687 |
| S00802 | T01 | POSITIVE | 48.633 |
| S00803 | T02 | POSITIVE | 47.723 |
| S00804 | T01 | POSITIVE | 49.511 |
| S00805 | T02 | POSITIVE | 50.170 |
| S00806 | T01 | POSITIVE | 50.082 |
| S00807 | T03 | NEGATIVE | 55.856 |
| S00808 | T02 | NEGATIVE | 50.666 |
| S00809 | T01 | NEGATIVE | 51.499 |
| S00810 | T01 | POSITIVE | 47.285 |
| S00811 | T02 | POSITIVE | 52.701 |
해상도와 초점심도는 Rayleigh 식으로 결정된다:
$\lambda$=노광 파장, $NA$=개구수, $k_1,k_2$=공정계수. NA↑ 또는 $\lambda$↓로 R↓(미세화)하지만 DOF는 급감한다.
PEB 동안 광산발생제(PAG)가 만든 산 $H^+$가 확산하며 보호기를 탈보호한다. 확산길이는
PEB 온도 $T_{PEB}$↑ → 확산계수 $D$ 지수적 증가 → 확산길이↑ → 프로파일 blur·CD 변화·LER 저감(적정선까지). 데이터에서 POS의 PEB가 NEG보다 높게 운용된 것과 정합적이다.
기울기 $S_{tone}$의 부호가 tone에 따라 반대(POS: dose↑→CD↓, NEG: 가교로 경향 상이)라 전체 선형상관이 상쇄된다 → 3장 관찰의 수식적 근거.
[1] Photoacid diffusion in chemically amplified photoresists and its detection methods: A review, Microelectronic Engineering / ScienceDirect (2025). link
[2] Effects of acid diffusion and resist molecular size on line edge roughness for CAR in EUV lithography: computational study, Jpn. J. Appl. Phys. (IOP, 2021). link
[3] Understanding Acid Reaction and Diffusion in Chemically Amplified Photoresists: An Approach at the Molecular Level, J. Phys. Chem. C (ACS, 2011). link
[4] Lithographic importance of base diffusion in chemically amplified photoresists, Microelectronic Engineering (Elsevier). link
[5] Post Exposure Bake (PEB) — Application Note, MicroChemicals GmbH. link
[6] Line-Edge Roughness from EUV Lithography to FinFET: Computational Study, PMC (2021). link
[7] C. A. Mack, Fundamental Principles of Optical Lithography, Wiley (2007) — Rayleigh 해상도·CAR 모델 기본서.
전체 파이프라인은 scripts/의 step01~step07을 순서대로 실행하면 재현된다.
자세한 절차는 readme.md, 재사용 가능한 스킬 정의는 skill.md 참조.
python3 scripts/step01_eda.py python3 scripts/step02_clean.py python3 scripts/step03_influence.py python3 scripts/step04_pr_compare.py python3 scripts/step05_model.py python3 scripts/step06_holdout.py python3 scripts/step07_report.py # index.html 생성