Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Te ALD Process Simulator

Te / GeTe ALD 공정의 XRF 계측 워크북을 읽어 레시피를 파싱하고, 두께 모델을 적합하고, 단일 HTML 대시보드로 뽑아내는 데스크톱 앱.

pywebview 창 안에서 도는 오프라인 애플리케이션이다. 엑셀 파일 하나를 던져 주면 레시피명·펄스 스킴 문자열을 구조화하고, 사이클 수 대비 두께를 회귀해서 GPC를 뽑고, 결과를 차트가 들어간 HTML 로 렌더링한다. 서버도 인터넷도 필요 없다.

⚠️ 이 저장소는 실행 바이너리에서 복구한 것이다. 원본 .py 소스는 소실되었다. 무엇이 남았고 무엇이 사라졌는지는 복구 상태에 정확히 적어 두었다.

공정 Te / GeTe / GeSe ALD (+ Al₂O₃ cap, TeO₂)
입력 XRF 계측 워크북 (.xlsx)
출력 단일 파일 HTML 대시보드
스택 Python 3.13 · pandas · numpy · pywebview (WebView2)
빌드 PyInstaller 6.x onedir → Te_ALD_Simulator.exe

복구 상태

2026-08-05 에 빌드한 Te_ALD_Simulator.exe 만 남아 있고, 원본 소스 트리는 디스크에서 사라졌다. exe 는 PyInstaller onedir 번들이라 내용물을 되꺼낼 수 있었다.

완전히 복구됨 — 그대로 동작하는 자산

파일 크기 내용
app/template.html 165 KB 대시보드 UI 전체 + 클라이언트 계산 로직 전부. 레이아웃, 스타일, Chart.js 구성, predict / fitOf / tempTerm / buildALD 등 화면에서 도는 모델 코드가 원본 그대로 들어 있다
sample_data/XRF_Te.xlsx 40 KB 앱이 처음 실행될 때 쓰는 기본 워크북

template.html 은 Python 이 계산한 payload 를 주입받는 템플릿이면서, 동시에 대화형 계산(슬라이더 반응, 예측, 등급 판정)을 자기 안의 JavaScript 로 수행한다. 즉 앱이 보여 주는 물리/통계 모델의 상당 부분은 손실 없이 살아 있다.

바이트코드로만 복구됨 — 재작성 필요

recovered/bytecode/ 에 Python 3.13 .pyc 5 개가 들어 있다. 2026-09 기준 3.13 을 지원하는 디컴파일러는 존재하지 않으므로 .py 로 되돌릴 수는 없다.

모듈 바이트코드 역할
desktop_app 4.5 KB pywebview 래퍼. 창 생성, Api.open_excel (파일 다이얼로그 → 재계산 → 새로고침), 마지막 워크북 경로 기억
app_paths 2.7 KB 번들/사용자 디렉터리 해석, 기본 워크북 배치, 템플릿·산출물 경로
build_dashboard_data 25.6 KB 핵심. 행 구성 → 설계행렬 → OLS 적합 → 부트스트랩(N=1000) → payload → HTML 주입
preprocess_v2 15.2 KB 워크북 로딩, 컬럼 검증, 압력·스로틀·기판 정규화, 사이클 필드 병합
recipe_parser_v2 16.4 KB 레시피명/펄스 스킴 파서. 증착 경로 10종 분류

하지만 재작성에 필요한 정보는 거의 다 뽑아냈다. recovered/api_map.md 에 모듈별로 다음이 들어 있다:

  • 전체 함수·클래스 목록과 인자 이름·타입 애노테이션·원본 줄 번호
  • 원본 docstring
  • 정규식 리터럴 전부Te\s*\(\s*OEt\s*\)\s*4[_\s]*(?:\(|\[)?\s*(\d+(?:\.\d+)?)\s*cyc(?:le|yle) 같은 것까지
  • dataclass 필드명, 라우트 상수, 컬럼명, 경고 메시지 전문
  • 참조한 전역/속성 이름 (호출 그래프의 뼈대)

사라진 것은 제어 흐름뿐이다 (if / for / try 의 배치). 도메인 지식 — 어떤 정규식으로 무엇을 잡고, 어떤 필드를 만들고, 언제 어떤 경고를 내는지 — 는 남았다.

재현 방법

# 1. exe 에서 앱 바이트코드 추출 (vendor/stdlib 자동 제외)
python tools/extract_pyinstaller.py path/to/Te_ALD_Simulator.exe -o recovered/bytecode

# 2. 바이트코드에서 API 인벤토리 생성
python tools/api_map.py recovered/bytecode -o recovered/api_map.md

tools/extract_pyinstaller.py 는 exe 꼬리의 CArchive 쿠키를 찾아 TOC 를 파싱하고, 진입 스크립트와 PYZ.pyz 안의 모듈을 zlib 해제해 저장한다. 서드파티 판별은 _internal/ 에 실제로 풀려 있는 패키지 디렉터리와 *.dist-info 로 자동 수행한다.


도메인 요약 (바이트코드에서 복원)

증착 경로 분류 (recipe_parser_v2)

레시피명과 펄스 스킴 문자열을 읽어 10 개 경로 중 하나로 판정한다.

GETE_ONLY            GeTe only
GETE_THEN_TE         GeTe/Te
GETE_GESE_THEN_TE    GeTe+GeSe/Te
GESE_ONLY            GeSe only
TE_2STEP             Te only, 2단
TE_4STEP             Te only, 4단
TE_COREACTANT_4STEP  Te + 공반응물 4단
TE_OXIDE             TeO2
OTHER_COMPLEX_ROUTE  Other
PARSE_UNCERTAIN      판별 실패

파서의 설계 의도는 원본 docstring 에 남아 있다:

The parser intentionally preserves process blocks instead of collapsing every number into one total. In particular, a GeTe -> Te recipe keeps the GeTe pulse block and the following Te pulse block separate.

split_top_level(), [], {} 안의 구분자를 보존하며 자르고, _expand_term(...)*N 반복 표기를 전개한다. 파싱 실패는 버리지 않고 parse_status / parse_note 로 표면화한다 — "단계 수가 홀수여서 inject/purge 쌍 합계를 확정하지 않음" 같은 메시지가 그대로 남아 있다.

추출하는 반응물: Te(OEt)4, (Me3Si)2Te/Se, Isopropylamine, Methanol, DIW, Ar.

모델링 (build_dashboard_data)

  • 창 기간: 안정 구간 2025-10-01 ~ 2026-01-14, 전체 2022-11-24 ~ 2025-11-24
  • design_matrixfit_ols 로 최소자승 적합
  • linfit_intercept(cycles, thick) 로 사이클-두께 직선에서 GPC 와 절편(핵생성 지연) 분리
  • 부트스트랩 N_BOOT = 1000
  • build_hidden 이 그룹 통계(장비/온도 구간/니들/쿠폰 수)를 계산
  • inject_into_html 이 payload 를 템플릿에 주입해 단일 HTML 생성

다시 빌드하려면

recovered/api_map.md 를 명세로 삼아 5 개 모듈을 재작성한 뒤:

pip install -r requirements.txt
python desktop_app.py                       # 창 실행
python build_dashboard_data.py <xlsx>       # 대시보드 HTML 만 생성
pyinstaller --onedir --windowed \
    --add-data "template.html;." \
    --add-data "sample_data;sample_data" \
    desktop_app.py

빌드 당시 고정 버전: Python 3.13 · numpy 2.5.1 · pandas 2.3.3.


관련 저장소

저장소 공정
dry-etch-ai SiO₂ Dry Etch
implant-anneal-ai Ion Implantation + Annealing
process-ai-dashboard Fab 전반 · 공정 Split 추천
semicon-ai-lab 합성 데이터 기반 방법론 검증 5종

라이선스

MIT — LICENSE

About

Te/GeTe ALD 공정 XRF 워크북 → 레시피 파싱 · 두께 모델 적합 · 단일 HTML 대시보드. 실행 바이너리에서 복구한 저장소.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages