Skip to content

벤치마크 & 검증 데이터 (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)|^2

COMPASS 벤치마크 테스트(tests/benchmarks/test_fresnel_slab.py)에서 검증하는 기준값:

계면파장 (um)n1n2 (복소)이론 R허용 오차
Air -> Glass전체1.0001.500 + 0i0.04001e-6
Air -> Si (550nm)0.5501.0004.08 + 0.028i~0.3680.02
Air -> SiO20.5501.0001.46 + 0i~0.0351e-3
Glass -> Air (역)전체1.5001.0000.04001e-6

각도 의존 검증:

조건기대 결과테스트
브루스터 각도 (Air->Glass, 56.31도)R_p = 0test_brewster_angle
스침 입사 (89.9도)R_s > 0.99, R_p > 0.98test_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) / Si550nm, 수직입사R ~ 0.12단일 ARC
Air / Si3N4 (69nm) / Si550nm, 수직입사R ~ 0.08고굴절률 ARC
Air / MgF2 / SiO2 / Si550nm, 수직입사R < 0.02이중층 ARC

이 기준해들은 RCWA 솔버가 균일층에서 올바르게 동작하는지 확인하는 데 사용된다.

대화형 박막 반사율 계산기

전달 행렬법을 사용하여 일반적인 반사 방지막 구성의 반사율 스펙트럼을 계산합니다.

레이어 1Si3N4 (n=2.00)
최소 반사율
0.00%
해당 파장
552 nm
기판
Si (n=4.0)
입사 매질
Air (n=1.0)
반사율 (%)05101520400450500550600650700750파장 (nm)

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 변화율수렴 판정
34998x98기준미수렴
5121242x242~5%미수렴
7225450x450~2%근접수렴
9361722x722~0.5%수렴 (권장)
115291058x1058~0.2%수렴
137291458x1458< 0.1%충분수렴
159611922x1922< 0.05%고정밀

수렴 기준: 연속 두 차수 간 QE 변화가 1% 미만이면 수렴으로 판정한다.

RCWA 수렴 데모

푸리에 차수 N을 높이면 유전율 재구성의 정확도와 이진 격자에 대한 RCWA 반사율/투과율 수렴이 어떻게 개선되는지 확인하세요.

전체 고조파 수:11
행렬 크기:11×11 = 121
연산 비용 (O(M³)):~1.3K
깁스 오버슈트:9.4%
유전율 프로파일 재구성
14710120L/2Lε단위 셀 내 위치원본푸리에 (N=5)
R, T 수렴 vs 푸리에 차수
0%10%20%30%40%50%15101520푸리에 차수 NR (반사율)T (투과율)

구조 유형별 권장 차수:

구조최소 차수권장 차수비고
단순 컬러필터 패턴79CF 경계만 존재
금속 그리드 포함1113--15높은 유전율 대비
DTI 포함911--13SiO2/Si 경계
미세 나노구조1517--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 솔버 비교

RCWA와 FDTD 솔버의 양자 효율(QE) 시뮬레이션 곡선을 비교합니다. 픽셀 피치와 솔버 매개변수를 조정하여 결과와 성능 변화를 확인하세요.

RCWA (Fourier 차수 = 9)
0%20%40%60%80%100%400500600700파장 (nm)QE (%)빨강초록파랑
FDTD (격자 = 20 nm)
0%20%40%60%80%100%400500600700파장 (nm)QE (%)빨강초록파랑
RCWA
예상 시간:137 ms
메모리:6 MB
주기 구조:예
임의 형상:제한적
FDTD
예상 시간:188 ms
메모리:3 MB
주기 구조:예
임의 형상:예
일치도
최대 |Delta QE|:2.2%
평균 |Delta QE|:0.9%
상태:양호한 일치

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 = 1

COMPASS는 compass/analysis/energy_balance.py의 EnergyBalance.check() 메서드를 통해 모든 시뮬레이션 결과에 대해 에너지 보존을 검증한다.

에너지 균형: R + T + A = 1

실리콘 두께와 BARL 품질을 조정하여 가시광선 스펙트럼에서 반사, 투과, 흡수가 입사광을 어떻게 분배하는지 확인합니다.

최대 오차:0.00e+0
평균 오차:0.00e+0
검증:✓ 통과
최대 흡수:380 nm
0.00.20.40.60.81.0400450500550600650700750파장 (nm)비율반사 (R)투과 (T)흡수 (A)

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_spectrumSi, 41 파장1.0 s
전체 재료 스펙트럼내장 재료 x 41 파장2.0 s
PixelStack 생성2x2 unit cell1.0 s
PixelStack 생성4x4 unit cell2.0 s
get_layer_slicesnx=12810 s
get_permittivity_grid128x128x12860 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 FDTDdx=20nm~60 s~5 s시간영역
flaport FDTDdx=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--47030--55%~45%다수 문헌
Green (G)530--56045--70%~60%다수 문헌
Red (R)600--63035--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.py314프레넬 반사율, 재료 물성, epsilon 관계
test_energy_conservation.py311에너지 보존 유효/위반/에지케이스
test_convergence.py39마이크로렌즈 수렴, 레이어 일관성, 베이어 패턴
test_performance.py48MaterialDB, PixelStack, 레이어슬라이스, 유전율 격자 성능

8.3 벤치마크 실행 방법 ​

bash
# 전체 벤치마크 실행
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-slow

8.4 솔버 비교 벤치마크 실행 ​

docs/cookbook/solver-benchmark.md에 상세한 솔버 비교 워크플로우가 문서화되어 있다.

bash
# 솔버 비교 스크립트 실행
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 결과 비교

선택 검증 (성능 변경):

  • [ ] 성능 벤치마크 회귀 없음
  • [ ] 메모리 사용량 회귀 없음