TCAD로 만든 가상 공정 데이터를 AI가 학습해서, TCAD를 다시 돌리지 않고도 공정조건에 따른 식각속도·식각형상·Spec 만족 여부를 즉시 예측하고 비교하는 도구입니다.
▶ 설치 없이 바로 써보기 — https://minjaejun.github.io/dry-etch-ai/ 브라우저만 있으면 됩니다. Python도 모델 파일도 필요 없습니다.
H₂ 조성비 · Pressure · Bias Power · 목표 식각깊이를 넣으면 아래를 즉시 계산합니다.
| 예측 | 계산 |
|---|---|
| SiO₂ Etch Rate | 목표 깊이까지 필요한 공정시간 |
| CD10 / CD25 / CD50 / CD75 / CD90 / CD95 | Effective Undercut, Sidewall Angle, Taper, Aspect Ratio |
| 예측 불확실성 (±) | PR Loss / PR Remaining / SiO₂:PR Selectivity |
여기에 더해서
- Spec 판정 — 빨강 / 노랑 / 초록 3단계와 종합 PASS 게이트
- Process Window — H₂ × Pressure 평면에서 Spec을 모두 만족하는 영역을 등고선으로 표시
- 후보 Recipe 탐색 — 6,000개 조건을 즉시 계산해 Spec 통과 후보를 정렬, CSV 저장
- 민감도 분석 — 어떤 인자가 어떤 지표를 얼마나 움직이는지 (OFAT + tornado)
- 조건 A/B 비교
AI가 TCAD나 엔지니어를 대체하는 게 아니라, 초기 Recipe 탐색 범위를 좁히는 의사결정 도구입니다.
| 지표 | MAE | R² |
|---|---|---|
| Etch Rate | 1.74 nm/min | 0.9965 |
| Profile 평균 CD | 2.90 nm | – |
| Effective Undercut | 1.67 nm | 0.620 |
| Sidewall Angle | 0.29° | 0.975 |
| Aspect Ratio | 0.018 | 0.994 |
숫자만 보고 넘어가면 안 되는 부분이 있습니다. 아래 "알려진 한계"를 반드시 같이 보세요.
1. 가장 약한 고리가 하필 Undercut입니다. 이 프로젝트의 목적이 Undercut 저감인데 예측력이 제일 낮습니다(R² 0.620). 평균값으로 찍는 것 대비 MAE 3.45 → 1.67 nm, 2.1배 개선한 수준입니다. Etch Rate의 R² 0.9965와 같은 급으로 읽으면 안 됩니다.
2. 깊게 팔수록 오차가 커집니다.
| 식각시간 | CD10 MAE | Undercut MAE | CD10 R² |
|---|---|---|---|
| 1.0 min (≈170 nm) | 1.02 nm | 0.51 nm | 0.889 |
| 2.0 min (≈340 nm) | 3.80 nm | 1.90 nm | 0.534 |
| 2.5 min (≈430 nm) | 5.23 nm | 2.62 nm | 0.351 |
원인은 데이터 구조입니다. Train/Val 270 state 중 깊이 3수준을 가진 Recipe는 50개뿐이고 나머지 120개는 t=2.0 min 단일 state입니다. 즉 깊이축은 학습 Recipe 140개 중 40개에서만 학습됐습니다. 대시보드는 480 nm를 넘으면 경고를 띄우고, 화면의 불확실성 ± 값도 이 구간에서 같이 커집니다.
3. Sidewall Angle R² 0.975는 상당 부분 '깊이'가 만든 숫자입니다. 정의상 (CD10−CD90)/2 를 0.8×깊이로 나누기 때문에 깊게 팔수록 자동으로 수직에 가까워집니다 (깊이와의 상관 0.868). 같은 깊이에서 Recipe를 구분하는 능력은 R² 0.957(t=1.0) → 0.615(t=2.5)로 떨어집니다. pooled R²만 인용하지 마세요.
4. 실제 Fab 데이터가 아닙니다. ATHENA + ELITE RIE 기반 TCAD 가상공정 데이터입니다. Chamber 상태, Plasma chemistry, Wafer loading, RF matching 등은 반영되어 있지 않습니다. Recipe → TCAD 파라미터 Mapping도 실험 calibration이 아니라 실제 식각에서 기대되는 물리적 경향을 반영한 현상학적 Mapping입니다. 예측값을 실제 양산 Recipe 수치로 쓸 수 없습니다.
5. PR / Selectivity는 AI가 학습한 값이 아닙니다. TCAD의 PR etch model이 Bias·Pressure 의존성을 충분히 표현하지 못해서, H₂ 증가 시 polymer formation으로 PR etch rate가 감소하는 문헌 경향(0/5/10 % → 50/47.5/45 nm/min)을 적용한 현상학적 계산입니다. 상대 비교용으로만 쓰세요.
6. 학습범위 밖은 신뢰하지 않습니다.
H₂ 010 %, Pressure 30100 mTorr, Bias 50200 W, Depth 180680 nm.
회의 원안은 CD10~CD95 전부 400 ± 30 nm였는데, 이걸 적용하면 TCAD 실측 270 state 중
40.0 %만 통과합니다. 바닥 CD(CD95)는 Taper 때문에 항상 마스크보다 작기 때문입니다
(270 state에서 CD95 최대값이 395.5 nm, 평균 편차 34.2 nm). 대칭 윈도우를 씌우면 정상적인
형상까지 불량 처리됩니다.
| 기준 | TCAD 실측 통과율 |
|---|---|
| 원안: CD10~CD95 모두 400±30 nm | 40.0 % |
| 수정안: CD10~CD90은 400±30 nm, CD95는 ≥345 nm 하한 | 75.9 % |
"상·중부 CD는 마스크 대비 대칭 관리, 바닥 CD는 Taper 관점의 하한 관리"가 물리적으로도
설명이 됩니다. tests/test_core.py::test_bottom_cd_spec_is_not_a_symmetric_window가
이 결정을 고정합니다.
우수(Green) 기준 — Undercut ≤10 nm, Sidewall ≥88.5°, 시간 ≤2.5 min, Selectivity ≥4.0,
PR 잔막 ≥350 nm — 을 모두 만족하는 영역은 전체 학습영역의 약 3 % 뿐이고,
저압(3035 mTorr) + 고바이어스(170195 W) + H₂ 5 % 내외에 몰려 있습니다.
이건 팀이 공정지식으로 세운 개선 방향(Pressure 하향, Bias 상향, H₂ 첨가)과 정확히 일치합니다. 사람이 세운 가설을 AI 탐색이 독립적으로 재현한 셈입니다.
한 가지 어긋나는 부분도 있습니다. 깊이를 고정하면 Bias는 Sidewall Angle을 거의 못 움직입니다 (50→200 W에서 0.26°). 같은 깊이 기준으로 형상을 지배하는 건 Pressure(각도 1.17°, Undercut 7.99 nm)와 H₂(Undercut 6.29 nm)이고, Bias는 사실상 생산성(Etch Rate 93.8 nm/min) 인자입니다. 원본 데이터에서 보이던 "Bias↑ → 수직" 경향은 대부분 깊이가 만든 착시입니다.
etch_core.py 예측 · Spec 판정 · 공정윈도우 · 후보탐색 · 민감도 (Streamlit 비의존)
dashboard.py Streamlit 대시보드 (전체 정밀도)
export_static.py 웹 데모용 정적 빌드 (모델 → 브라우저가 읽는 형태로 변환)
models/ 학습 완료 모델 3종 (joblib)
data/ 통합 데이터셋 (13개 시트: 데이터·예측값·성능·QC·한계)
docs/ GitHub Pages 정적 데모
tests/ Python 회귀 테스트 + JS 엔진 교차검증
https://minjaejun.github.io/dry-etch-ai/
pip install -r requirements.txt
streamlit run dashboard.pypython -m pytest tests/ -q # 모델이 보고된 성능을 실제로 재현하는지
python tests/make_js_reference.py # JS 교차검증용 기준값 생성
node tests/test_js_engine.mjs # 브라우저 엔진이 Python과 일치하는지python export_static.py모델을 브라우저가 읽을 수 있는 형태로 미리 구워둡니다.
- Etch Rate — Polynomial2 + StandardScaler + Ridge를 계수로 풀어서 JS가 직접 계산합니다.
sklearn과 완전히 동일한 값입니다 (검증 최대편차
0.00e+00). - Profile CD — ExtraTrees는 닫힌 식이 없어서 13⁴ = 28,561개 격자로 샘플링(Float32, 1.3 MB)한 뒤 브라우저에서 4차원 선형보간합니다. 보간 오차는 평균 0.34 nm로, 모델 자체 오차 2.90 nm의 약 12 % 수준입니다.
즉 웹 데모의 숫자는 원본 모델과 사실상 같습니다. 다만 Spec 경계에 딱 걸친 조건에서는 판정이 뒤집힐 수 있어서(400개 중 5개), 논문·보고서에 쓸 숫자는 Streamlit 앱으로 확인하세요.
tests/test_js_engine.mjs가 이걸 매번 검증합니다.
Python과 JS의 계산 일치도는 1e-13 수준(부동소수점 반올림 한계)입니다.
-
설계 Latin Hypercube Sampling, 후보 300 → 최종 200 Recipe
-
분할 Recipe 단위 사전 분리 (Train 140 / Validation 30 / Test 30). 한 Recipe에서 여러 깊이 데이터가 나오므로 state 단위로 나누면 누수가 생깁니다.
-
모델 선정 Etch Rate는 후보 5종, Profile은 후보 3종을 Validation에서 비교
대상 선정 근거 Etch Rate Polynomial2 + Ridge MAE 1.34 vs ExtraTrees 2.39 / GB 2.89 Profile ExtraTrees 평균 CD MAE 2.52 vs RF 2.71 / Poly2Ridge 3.09 -
불확실성 ExtraTrees 500개 tree의 예측 분산. blind test에서 실제 오차와 상관 0.730, 2σ 커버리지 97.8 %로 확인했습니다.
초기 Test에서 Profile MAE가 6.18 nm로 튀었을 때 모델을 다시 학습하는 대신 데이터 생성 방식을 비교해서, Train/Val은 direct-from-base인데 Test만 sequential cumulative로 만들어졌다는 걸 찾아냈습니다. 모델을 고정한 채 Test 데이터만 같은 방식으로 재생성해서 2.90 nm를 얻었습니다.
깊이축 데이터 보강이 1순위입니다. t=2.0 단일인 120개 Recipe에 t=1.0 / 2.5 min을 추가하면 Profile state가 270 → 510, 깊이 3수준 Recipe가 40 → 160개가 됩니다. 모델 구조를 바꾸지 않고 재학습만으로 위 한계 1·2를 직접 개선할 수 있어 투입 대비 효과가 가장 큽니다. (TCAD 재실행은 반드시 direct-from-base로 통일)
그 다음은 Profile을 CD 절대값이 아니라 ΔCD(=CD−400)로 학습해서 Undercut R²를 직접 올리는 것, Sidewall Angle의 깊이 정규화, 불확실성이 큰 조건의 판정을 자동으로 낮추는 규칙, 그리고 실 데이터가 확보되면 offset·scale 2-파라미터 보정부터 시작하는 순서입니다.
- 본 도구는 공정조건 탐색·교육용 시제품이며 실제 양산 Recipe 결정용이 아닙니다.
- 모든 Spec 값은 문헌 표준이 아니라 Mask Opening 400 nm / 초기 PR 500 nm 구조를 기준으로 본 프로젝트가 설정한 설계값입니다. 대시보드에서 직접 바꿀 수 있습니다.
MIT