v0.6 릴리즈 노트
주요 내용
v0.6에서는 geometry rule 경로를 pya-native 구현으로 전환했습니다.
목표는 rasterization 단계에서 선택된 ROI를 NumPy로 넘기기 전까지 layout loading, hierarchy traversal, Manhattan width/space rule check, candidate 생성, ROI clipping을 KLayout pya geometry에서 처리하는 것이었습니다.
GDS/OAS
-> pya.Layout / top cell
-> hierarchy traversal
-> integer DBU pya geometry
-> width / space candidate extraction
-> ROI clipping
-> NumPy mask
-> existing aerial image / contour / printed metric flow
Aerial-image 및 contour 단계는 pya-native refactor의 주 대상이 아니었습니다.
Geometry Rule 및 Candidate 변경
v0.6 geometry 경로는 canonical geometry rule 단계에 KLayout-style integer DBU geometry를 사용합니다.
주요 사항은 다음과 같습니다.
- Manhattan width/space check를 pya-native 경로에서 평가합니다.
- Rule 비교는 엄격한
value < threshold입니다. - Candidate region은 병합된 violation component로 표현합니다.
- Candidate 위치를 정하기 위한 anchor edge-pair 정보를 유지합니다.
- Width와 space candidate는 결정적인 순서로 선택합니다.
- Rasterization은 pya geometry에서 NumPy로 전환하는 의도적인 경계입니다.
이 내용은 재현성과 검토 가능성을 높이기 위한 구현 기록이며 public demo를 이해하기 위한 필수 사항은 아닙니다.
Candidate Overview 표현
v0.6에서는 violation marker가 원본 layout polygon처럼 보이지 않도록 candidate overview도 변경했습니다.
변경된 표현은 다음과 같습니다.
- 원본 geometry는 grayscale로 유지
- width marker는 투명한 red style 사용
- space marker는 투명한 blue style 사용
- hatch pattern으로 marker class 구분
- 선택한 review candidate에는 W/S label 유지
이 이미지는 검토에 유용하지만, 처음 보는 사용자가 대표 ROI 결과에 집중할 수 있도록 main Demo flow에서는 분리했습니다.
로컬 Geometry Runtime 확인
Layer/datatype 68/20을 사용한 로컬 tt04_pwm.gds geometry-only 비교의 median timing은 다음과 같습니다.
| 단계 | gdstk baseline | pya-native | pya speedup |
|---|---|---|---|
| read + target extraction | 0.027074 s | 0.022355 s | 1.21x |
| width rule + candidate construction | 0.289389 s | 0.039591 s | 7.31x |
| space rule + candidate construction | 0.569764 s | 0.120845 s | 4.71x |
| geometry total | 0.871751 s | 0.189478 s | 4.60x |
이 수치는 한 공개 예제와 한 로컬 환경에서 측정한 개발 기록이며 일반적인 성능 보장을 의미하지 않습니다.
Candidate 개수
동일한 비교 결과는 다음과 같습니다.
| 항목 | gdstk | pya-native raw | pya-native merged component |
|---|---|---|---|
| width | 666 | 666 | 459 |
| space | 616 | 1,061 | 922 |
두 경로의 marker construction 정의가 완전히 같지 않으므로 개수 차이는 예상된 결과입니다. pya-native 경로는 edge relation과 strict threshold 동작을 더 직접적으로 표현하고, gdstk 경로는 baseline 및 rollback 비교 경로로 유지됩니다.
Printed Metric 변경
기본 printed width/space metric은 thresholded boolean mask를 다시 contouring하는 방식에서 direct aerial-intensity contour를 사용하는 방식으로 변경했습니다.
before:
intensity >= 0.30
-> boolean mask
-> contour from boolean mask
after:
normalized intensity
-> direct contour at 0.30
-> sub-pixel contour coordinates
이 변경은 대표 검증에서 grid quantization 영향을 줄이고, 추적 대상 예제의 width/space edge-pair 검출을 더 안정적으로 복원했습니다.
Convergence 확인 요약
고정된 tt04_pwm ROI 검증에서 direct intensity contour metric은 대표 width 및 space 사례 모두 0.010 um에서 0.0025 um까지 안정적이었습니다.
요약하면 다음과 같습니다.
- 기존 boolean-contour metric은 half-pixel 위치에 더 크게 좌우됐습니다.
- Direct contour metric은 sub-pixel interpolated contour coordinate를 유지했습니다.
- 테스트한 사례의 추적 대상 width/space physical edge pair가 안정적으로 유지됐습니다.
0.001 um까지의 focused check도 각 고정 window 안에서 안정적이었습니다.
Render 기본값은 테스트 사례에서 demo runtime과 contour stability 사이의 실용적인 균형이었던 0.010 um로 유지합니다. 이는 signoff accuracy를 주장하는 것이 아닙니다.
현재 한계
v0.6 변경 후에도 공개 해석 범위는 동일합니다.
- 결과는 정성적 지표입니다.
- 단순화된 model을 사용합니다.
- Wafer-data calibration은 포함하지 않습니다.
- Resist 및 etch model은 포함하지 않습니다.
- Printed metric은 근사 contour 기반 지표입니다.
- 서로 다른 ROI size와 normalization condition의 수치를 직접 비교할 수 없습니다.
- EPE는 현재 범위에 포함되지 않습니다.