벤치마크 & 검증 데이터 (Benchmarks & Validation)
COMPASS 프로젝트에서 EM 솔버의 정확도와 성능을 검증하기 위한 방법론, 기준 데이터, 벤치마크 결과를 정리한 문서이다.
1. 검증 방법론
EM 솔버의 신뢰성을 확보하기 위해 COMPASS는 네 가지 계층의 검증 체계를 사용한다.
1.1 검증 피라미드
/\
/ \ Level 4: 실험 데이터 비교 (발표된 QE 측정값)
/ \
/------\ Level 3: 솔버 간 교차 검증 (torcwa vs grcwa vs meent vs FDTD)
/ \
/----------\ Level 2: 해석적 기준해 비교 (프레넬, TMM)
/ \
/--------------\ Level 1: 기본 물리 법칙 검증 (에너지 보존, QE 범위)각 검증 수준은 독립적으로 작동하며, 상위 수준의 검증이 하위 수준을 대체하지 않는다.
1.2 검증 원칙
| 원칙 | 설명 |
|---|---|
| 에너지 보존 | R + T + A = 1 (허용 오차 < 1%) |
| QE 물리적 범위 | 0 <= QE <= 1 (모든 픽셀, 모든 파장) |
| NaN/Inf 없음 | 모든 출력값에 수치 이상 없음 |
| 수렴성 확인 | 해상도/차수 증가 시 결과 수렴 |
| 재현성 | 동일 입력에 대해 동일 결과 |
2. 해석적 기준해
해석해가 존재하는 간단한 구조에 대해 솔버 출력을 검증한다.
2.1 프레넬 방정식 -- 단일 계면 반사율
평면 계면에서의 반사율은 정확한 해석해가 존재한다.
수직 입사 프레넬 반사율:
R = |r|^2 = |(n1 - n2) / (n1 + n2)|^2COMPASS 벤치마크 테스트(tests/benchmarks/test_fresnel_slab.py)에서 검증하는 기준값:
| 계면 | 파장 (um) | n1 | n2 (복소) | 이론 R | 허용 오차 |
|---|---|---|---|---|---|
| Air -> Glass | 전체 | 1.000 | 1.500 + 0i | 0.0400 | 1e-6 |
| Air -> Si (550nm) | 0.550 | 1.000 | 4.08 + 0.028i | ~0.368 | 0.02 |
| Air -> SiO2 | 0.550 | 1.000 | 1.46 + 0i | ~0.035 | 1e-3 |
| Glass -> Air (역) | 전체 | 1.500 | 1.000 | 0.0400 | 1e-6 |
각도 의존 검증:
| 조건 | 기대 결과 | 테스트 |
|---|---|---|
| 브루스터 각도 (Air->Glass, 56.31도) | R_p = 0 | test_brewster_angle |
| 스침 입사 (89.9도) | R_s > 0.99, R_p > 0.98 | test_grazing_incidence |
| 역수성 (reciprocity) | R(n1->n2) = R(n2->n1) | test_reciprocity |
2.2 전달 행렬법 (TMM) -- 다층 박막 기준해
균일 다층 구조에 대해 TMM(Transfer Matrix Method)은 RCWA의 Fourier order = 0일 때와 동일한 결과를 제공한다. 이를 기준해로 사용하여 솔버의 기본 동작을 검증한다.
단일층 반사방지 코팅 검증:
| 구조 | 조건 | 이론값 | 비고 |
|---|---|---|---|
| Air / SiO2 (93nm) / Si | 550nm, 수직입사 | R ~ 0.12 | 단일 ARC |
| Air / Si3N4 (69nm) / Si | 550nm, 수직입사 | R ~ 0.08 | 고굴절률 ARC |
| Air / MgF2 / SiO2 / Si | 550nm, 수직입사 | R < 0.02 | 이중층 ARC |
이 기준해들은 RCWA 솔버가 균일층에서 올바르게 동작하는지 확인하는 데 사용된다.
Interactive Thin Film Reflectance Calculator
Compute reflectance spectra using the transfer matrix method for common anti-reflection coating configurations.
2.3 재료 물성 검증
tests/benchmarks/test_fresnel_slab.py의 TestMaterialDBProperties에서 내장 재료의 물리적 타당성을 검증한다: Silicon (n~4.08 at 550nm, Green 2008), Air (n=1, k=0), SiO2 (n~1.46), Si3N4 (n~2.0), Polymer의 Cauchy 분산(단파장에서 n 증가) 등.
3. 수렴성 분석
3.1 RCWA 푸리에 차수 수렴
RCWA의 정확도는 푸리에 차수(Fourier order)에 의존한다. 차수를 높이면 정확도가 향상되지만, 계산 비용이 O(M^3)으로 증가한다 (M = (2N+1)^2 for 2D).
1um 피치 BSI 픽셀의 전형적 수렴 거동:
| 푸리에 차수 | 하모닉 수 (2D) | 행렬 크기 | 상대 QE 변화율 | 수렴 판정 |
|---|---|---|---|---|
| 3 | 49 | 98x98 | 기준 | 미수렴 |
| 5 | 121 | 242x242 | ~5% | 미수렴 |
| 7 | 225 | 450x450 | ~2% | 근접수렴 |
| 9 | 361 | 722x722 | ~0.5% | 수렴 (권장) |
| 11 | 529 | 1058x1058 | ~0.2% | 수렴 |
| 13 | 729 | 1458x1458 | < 0.1% | 충분수렴 |
| 15 | 961 | 1922x1922 | < 0.05% | 고정밀 |
수렴 기준: 연속 두 차수 간 QE 변화가 1% 미만이면 수렴으로 판정한다.
RCWA Convergence Demo
See how increasing the Fourier order N improves the accuracy of permittivity reconstruction and RCWA reflectance/transmittance convergence for a binary grating.
구조 유형별 권장 차수:
| 구조 | 최소 차수 | 권장 차수 | 비고 |
|---|---|---|---|
| 단순 컬러필터 패턴 | 7 | 9 | CF 경계만 존재 |
| 금속 그리드 포함 | 11 | 13--15 | 높은 유전율 대비 |
| DTI 포함 | 9 | 11--13 | SiO2/Si 경계 |
| 미세 나노구조 | 15 | 17--21 | 파장 이하 피처 |
3.2 FDTD 격자 간격 수렴
FDTD의 정확도는 공간 격자 간격(dx, dy, dz)에 의존한다. 일반적으로 dx < lambda/(20*n_max)이 권장된다. 550nm, Si 포함 구조에서 dx=20nm이면 QE 변화율 ~1.5% (근접수렴), dx=10nm이면 ~0.2% (충분수렴)이다.
3.3 마이크로렌즈 계단근사 수렴
RCWA에서 마이크로렌즈는 계단 근사(staircase approximation)로 표현된다. 슬라이스 수를 늘리면 렌즈 체적의 정확도가 향상된다.
COMPASS 벤치마크(tests/benchmarks/test_convergence.py)에서 확인된 수렴 거동:
| 슬라이스 수 | 렌즈 체적 오차 | 수렴 판정 |
|---|---|---|
| 5 | 기준 | 부정확 |
| 10 | < 10% (vs 80) | 근접 |
| 20 | < 5% (vs 80) | 수렴 |
| 40 | < 2% (vs 80) | 충분수렴 |
| 80 | 기준 (최고해상도) | 참조값 |
연속 슬라이스 수 간 체적 차이가 단조 감소해야 올바른 수렴을 나타낸다. COMPASS는 기본값으로 30 슬라이스를 사용한다.
4. 솔버 간 교차 검증
4.1 RCWA 솔버 비교 (torcwa vs grcwa vs meent)
동일한 픽셀 구조와 동일한 푸리에 차수에서 세 RCWA 솔버의 결과를 비교한다. 세 솔버 모두 동일한 수학적 알고리즘(RCWA)을 구현하므로, 수치 오차 범위 내에서 결과가 일치해야 한다.
허용 불일치 범위:
| 비교 항목 | 허용 범위 | 비고 |
|---|---|---|
| QE 절대 차이 | < 0.005 (0.5%) | 동일 차수, 동일 인수분해 |
| QE 상대 오차 | < 1% | 피크 QE 기준 |
| 반사율 차이 | < 0.002 | 전체 파장 범위 |
| 에너지 보존 편차 | < 0.01 |
전형적 비교 결과 (2x2 BSI 픽셀, 1um 피치, 푸리에 차수 9):
| 파장 (nm) | torcwa QE(G) | grcwa QE(G) | meent QE(G) | 최대 차이 |
|---|---|---|---|---|
| 420 | ~0.15 | ~0.15 | ~0.15 | < 0.005 |
| 450 | ~0.32 | ~0.32 | ~0.32 | < 0.003 |
| 500 | ~0.52 | ~0.52 | ~0.52 | < 0.003 |
| 550 | ~0.58 | ~0.58 | ~0.58 | < 0.002 |
| 600 | ~0.45 | ~0.45 | ~0.45 | < 0.003 |
| 650 | ~0.28 | ~0.28 | ~0.28 | < 0.004 |
| 680 | ~0.18 | ~0.18 | ~0.18 | < 0.005 |
주: 위 값은 대표적인 수치이며, 실제 구조 및 재료 파라미터에 따라 달라진다.
RCWA vs FDTD Solver Comparison
Compare simulated quantum efficiency (QE) curves from RCWA and FDTD solvers. Adjust pixel pitch and solver parameters to see how results and performance change.
4.2 RCWA vs FDTD 비교
RCWA와 FDTD는 서로 다른 수치 방법을 사용하므로, RCWA 솔버 간 비교보다 큰 차이가 예상된다. 그러나 수렴된 결과끼리 비교하면 좋은 일치를 보여야 한다.
허용 불일치 범위:
| 비교 항목 | 허용 범위 | 비고 |
|---|---|---|
| QE 절대 차이 | < 0.02 (2%) | 수렴된 결과 기준 |
| QE 상대 오차 | < 5% | 피크 QE 기준 |
| 반사율 차이 | < 0.01 | |
| 스펙트럼 형상 일치 | 피크 위치 10nm 이내 |
RCWA와 FDTD 간 차이의 주요 원인은 마이크로렌즈 표현 차이(계단근사 vs 소격자 근사), 분산 매질 처리 방식, 경계 조건(주기 vs PML), 수렴 기준의 차이이다.
5. 에너지 보존 검증
5.1 기본 원칙
에너지 보존 법칙에 의해 입사광의 에너지는 반사(R), 투과(T), 흡수(A)로 나누어져야 한다:
R + T + A = 1COMPASS는 compass/analysis/energy_balance.py의 EnergyBalance.check() 메서드를 통해 모든 시뮬레이션 결과에 대해 에너지 보존을 검증한다.
Energy Balance: R + T + A = 1
Adjust silicon thickness and BARL quality to see how reflection, transmission, and absorption partition the incident light across the visible spectrum.
5.2 허용 오차 기준
| 조건 | 허용 오차 | 동작 |
|---|---|---|
| R+T+A-1 | < 0.01 (1%) | |
| 0.01 < | R+T+A-1 | < 0.02 |
| 0.02 < | R+T+A-1 | < 0.05 |
| R+T+A-1 | > 0.05 |
5.3 에너지 보존 위반의 원인과 대처
| 위반 유형 | 주요 원인 | 대처 방법 |
|---|---|---|
| R+T+A > 1 (에너지 생성) | 고유값 분해 오류, TF32 사용 | float64 전환, TF32 비활성화 |
| R+T+A << 1 (에너지 손실) | T-matrix 오버플로우, PML 반사 | S-matrix 사용, PML 두께 증가 |
| 특정 파장만 위반 | 축퇴 고유값, 높은 Q-factor | 고유값 브로드닝, 정밀도 상향 |
tests/benchmarks/test_energy_conservation.py에서 완벽 보존, 전반사/전흡수, 흡수 자동 추론, 허용 오차 경계, 단위 초과/미달, 단일 파장 위반 등 11개 테스트를 수행한다.
6. 성능 벤치마크
6.1 핵심 연산 성능
tests/benchmarks/test_performance.py에서 측정되는 핵심 연산의 성능 기준:
| 연산 | 조건 | 상한 |
|---|---|---|
get_epsilon_spectrum | Si, 41 파장 | 1.0 s |
| 전체 재료 스펙트럼 | 내장 재료 x 41 파장 | 2.0 s |
| PixelStack 생성 | 2x2 unit cell | 1.0 s |
| PixelStack 생성 | 4x4 unit cell | 2.0 s |
get_layer_slices | nx=128 | 10 s |
get_permittivity_grid | 128x128x128 | 60 s |
6.2 솔버 실행 시간 (대표 값)
구성: 2x2 BSI 픽셀, 1um 피치, 단일 파장 (550nm), 비편광
| 솔버 | 차수/해상도 | CPU 시간 | GPU 시간 (NVIDIA A100) | 비고 |
|---|---|---|---|---|
| torcwa | 차수 9 | ~5 s | ~0.3 s | 기본 솔버 |
| torcwa | 차수 15 | ~40 s | ~2 s | 고정밀 |
| grcwa | 차수 9 | ~8 s | ~0.5 s | |
| meent | 차수 9 | ~6 s | ~0.4 s | 해석적 고유값 분해 |
| flaport FDTD | dx=20nm | ~60 s | ~5 s | 시간영역 |
| flaport FDTD | dx=10nm | ~300 s | ~25 s | 고정밀 |
주: 위 시간은 대표적인 추정치이며, 하드웨어 및 구성에 따라 크게 달라질 수 있다.
FDTD는 시간영역 방법이므로 단일 실행으로 전체 스펙트럼을 얻을 수 있다. RCWA는 파장별로 독립 실행해야 하지만 병렬화가 용이하다. 파장 스윕 (14파장) 시 GPU 기준 RCWA ~4--7s, FDTD ~5s 수준이다.
6.3 메모리 및 스케일링
RCWA 메모리 사용량은 푸리에 차수에 따라 증가한다: 차수 9에서 GPU ~0.3GB(f32), 차수 15에서 ~1.2GB(f32), 차수 21에서 ~5GB(f32). float64 사용 시 약 2배 증가한다. FDTD는 격자 간격에 따라 크게 변하며, dx=10nm에서 GPU ~8GB를 사용한다.
RCWA 런타임 스케일링은 행렬 크기 M = (2N+1)^2에 대해 O(M^3), 즉 차수 N에 대해 약 O(N^6)이다. 차수 9 대비 차수 15는 약 11배, 차수 17은 약 20배 느리다.
7. 산업 검증 데이터
7.1 발표된 BSI 픽셀 QE 데이터
학술 논문 및 산업 발표에서 보고된 BSI CMOS 이미지 센서의 전형적인 QE 값이다.
1.0--1.4um 피치 BSI 픽셀 전형적 QE 범위:
| 색상 채널 | 피크 파장 (nm) | QE 범위 | 전형적 피크 QE | 출처 |
|---|---|---|---|---|
| Blue (B) | 450--470 | 30--55% | ~45% | 다수 문헌 |
| Green (G) | 530--560 | 45--70% | ~60% | 다수 문헌 |
| Red (R) | 600--630 | 35--60% | ~50% | 다수 문헌 |
고성능 과학용 BSI 센서 (피치 > 3um):
| 조건 | 보고된 QE | 출처 |
|---|---|---|
| 가시광 피크 (400--700nm) | > 75% | 산업 데이터시트 |
| 광대역 (260--400nm UV) | > 50% | 학술 논문 |
| 최고 성능 (나노구조 적용) | > 90% | Small, 2023 |
7.2 COMPASS 시뮬레이션과 발표 데이터 비교
시뮬레이션 결과가 발표된 데이터와 일치하는지 정성적으로 비교한다.
기대되는 일치 수준:
| 비교 항목 | 기대 일치도 | 제한 요인 |
|---|---|---|
| QE 스펙트럼 형상 | 우수 | 컬러 필터 모델 정확도 |
| 피크 QE 절대값 | 양호 (+-10%) | 재료 데이터 정확도, 공정 변수 |
| 크로스토크 경향 | 정성적 일치 | 3D 구조 단순화 |
| 각도 의존성 | 양호 | 마이크로렌즈 프로파일 정확도 |
시뮬레이션과 실험 간 불일치의 주요 원인은 컬러 필터의 제조사별 n,k 차이, 비이상적 형상(기울어진 측벽, 거칠기), 조명 조건 재현의 어려움, 막 두께와 정렬 오차 등의 공정 변수이다.
8. COMPASS 벤치마크 스위트
8.1 테스트 파일 구조
tests/benchmarks/
__init__.py
test_fresnel_slab.py # 프레넬 방정식 및 재료 물성 검증
test_energy_conservation.py # 에너지 보존 검증기 테스트
test_convergence.py # 기하 수렴성 테스트
test_performance.py # 성능 벤치마크 (실행 시간)8.2 각 테스트 파일 요약
| 파일 | 클래스 수 | 테스트 수 | 주요 검증 내용 |
|---|---|---|---|
test_fresnel_slab.py | 3 | 14 | 프레넬 반사율, 재료 물성, epsilon 관계 |
test_energy_conservation.py | 3 | 11 | 에너지 보존 유효/위반/에지케이스 |
test_convergence.py | 3 | 9 | 마이크로렌즈 수렴, 레이어 일관성, 베이어 패턴 |
test_performance.py | 4 | 8 | MaterialDB, PixelStack, 레이어슬라이스, 유전율 격자 성능 |
8.3 벤치마크 실행 방법
# 전체 벤치마크 실행
PYTHONPATH=. python3.11 -m pytest tests/benchmarks/ -v
# 프레넬 검증만 실행
PYTHONPATH=. python3.11 -m pytest tests/benchmarks/test_fresnel_slab.py -v
# 성능 벤치마크 (타이밍 출력 포함)
PYTHONPATH=. python3.11 -m pytest tests/benchmarks/test_performance.py -v -s
# 느린 테스트 포함
PYTHONPATH=. python3.11 -m pytest tests/benchmarks/ -v --run-slow8.4 솔버 비교 벤치마크 실행
docs/cookbook/solver-benchmark.md에 상세한 솔버 비교 워크플로우가 문서화되어 있다.
# 솔버 비교 스크립트 실행
python scripts/compare_solvers.py experiment=solver_comparison이 스크립트는 동일 픽셀 구조에 대해 torcwa/grcwa/meent를 실행하고, QE 비교, 실행 시간 비교, 에너지 보존 검증, 결과 시각화를 수행한다.
9. 검증 체크리스트
새로운 솔버 추가 또는 기존 솔버 수정 시 반드시 확인해야 하는 항목들이다.
필수 검증 (모든 변경):
- [ ]
tests/benchmarks/전체 테스트 통과 - [ ] 에너지 보존: |R+T+A-1| < 0.01 (모든 파장)
- [ ] QE 범위: 0 <= QE <= 1 (모든 픽셀)
- [ ] NaN/Inf 없음 (모든 출력)
권장 검증 (주요 변경):
- [ ] 기존 솔버와 교차 비교 (QE 차이 < 0.5%)
- [ ] 푸리에 차수 수렴 확인 (차수 7->15 스윕)
- [ ] GPU/CPU 및 float32/float64 결과 비교
선택 검증 (성능 변경):
- [ ] 성능 벤치마크 회귀 없음
- [ ] 메모리 사용량 회귀 없음