수렴 연구 (Convergence Study)
Convergence Study: RCWA Parameter Sensitivity
Analyze how simulation accuracy converges as key RCWA parameters increase. Identify the minimum parameter values needed for converged results.
Show numerical data
| Solver | Parameter | Harmonics | Absorption | Runtime |
|---|---|---|---|---|
| grcwa | nG = 9 | 9 | 0.9905 | 0.02s |
| grcwa | nG = 25 | 25 | 0.9868 | 0.17s |
| grcwa | nG = 49 | 49 | 0.9699 | 0.95s |
| grcwa | nG = 121 | 121 | 0.9712 | 5.42s |
| grcwa | nG = 625 | 625 | 0.9749 | 356.24s |
| torcwa | [3,3] | 49 | 0.9820 | 2.77s |
| torcwa | [5,5] | 121 | 0.9856 | 23.12s |
| torcwa | [7,7] | 225 | 0.9858 | 100.13s |
| torcwa | [9,9] | 361 | 0.9830 | 349.79s |
| torcwa | [11,11] | 529 | 0.9858 | 846.12s |
개요
수렴 연구는 정확하고 안정적인 결과를 산출하는 최소 시뮬레이션 파라미터 값을 결정합니다. RCWA 시뮬레이션에서 핵심 수치 파라미터는 다음과 같습니다:
- 푸리에 차수 (평면파 하모닉스의 수)
- 마이크로렌즈 슬라이스 (곡면의 계단식 근사)
- 그리드 해상도 (유전율 분포의 공간 샘플링)
이 파라미터들을 증가시키면 정확도가 향상되지만 계산 시간이 증가합니다. 목표는 결과가 더 이상 크게 변하지 않는 "무릎(knee)" 지점, 즉 수렴 영역을 찾는 것입니다.
수렴이 중요한 이유
너무 적은 하모닉스로 실행하면 잘못된 결과(과소평가된 흡수)를 얻습니다. 너무 많이 사용하면 계산 시간이 낭비됩니다. 수렴 연구는 최적의 지점을 찾습니다.
푸리에 차수
푸리에 차수는 전자기장을 전개하는 데 사용되는 평면파 하모닉스의 수를 제어합니다. 더 많은 하모닉스는 유전율 분포의 더 미세한 공간적 특징을 포착합니다.
grcwa vs torcwa 파라미터화
두 RCWA 솔버는 푸리에 차수를 다르게 파라미터화합니다:
- grcwa:
nG(총 하모닉스 수)를 사용합니다. 솔버가 내부적으로 포함할 G-벡터를 선택합니다. - torcwa:
[N, N]을 사용하며 총 하모닉스 =(2N+1)^2입니다. 예를 들어[5, 5]는11^2 = 121개의 하모닉스를 제공합니다.
수렴 결과
grcwa (안정적인 포인트만 — 아래 불안정성 경고 참조):
| nG | 하모닉스 | 흡수 | 실행 시간 | ΔA |
|---|---|---|---|---|
| 9 | 9 | 0.9905 | 0.02s | +0.0206 |
| 25 | 25 | 0.9868 | 0.17s | -0.0037 |
| 49 | 49 | 0.9699 | 0.95s | -0.0169 |
| 121 | 121 | 0.9712 | 5.42s | +0.0013 |
| 625 | 625 | 0.9749 | 356.24s | +0.0037 |
torcwa (모든 차수에서 수치적으로 안정):
| [N,N] | 하모닉스 | 흡수 | 실행 시간 | ΔA |
|---|---|---|---|---|
| [3,3] | 49 | 0.9820 | 2.77s | — |
| [5,5] | 121 | 0.9856 | 23.12s | +0.0036 |
| [7,7] | 225 | 0.9858 | 100.13s | +0.0002 |
| [9,9] | 361 | 0.9831 | 349.79s | -0.0027 |
| [11,11] | 529 | 0.9858 | 846.12s | +0.0028 |
참고: [9,9]에서의 비단조적 감소는 [11,11]에서 회복되어 A ≈ 0.986에서의 실제 수렴을 확인합니다.
솔버 간 흡수 차이
grcwa와 torcwa는 G-벡터 선택 및 푸리에 인수분해의 차이로 인해 약간 다른 흡수값(~0.97 vs ~0.98)을 산출합니다. 두 솔버 모두 안정적인 값으로 수렴하지만, 절대적 차이는 각 솔버의 구현 수준 선택을 반영합니다.
높은 차수가 필요한 경우
필요한 푸리에 차수는 시뮬레이션 도메인 대비 픽셀 구조의 가장 작은 특징에 따라 달라집니다:
- 메탈 그리드: 2 um 도메인에서 0.05 um 특징은 축당 최소 ~40개의 하모닉스에 대한 나이퀴스트 샘플링이 필요
- 컬러 필터만: 매끄러운 층은 낮은 차수에서 빠르게 수렴
- 마이크로렌즈 + 메탈 그리드: 메탈 그리드가 수렴 요구 사항을 결정
WARNING
해상도가 부족한 메탈 그리드 특징은 인위적인 산란과 잘못된 흡수를 유발합니다. 메탈 그리드가 있을 때는 항상 수렴을 확인하세요.
grcwa 수치적 불안정성
grcwa는 많은 nG 값에서 심각한 수치적 불안정성을 보입니다. 불안정성은 다음과 같이 나타납니다:
- R → 매우 큰 값 (최대 10^11)으로 발산, T는 0 근처 유지
- TM 편광에서만 발생 — TE 편광은 항상 안정적
- 파장 의존적 — nG=121은 550nm에서는 안정적이지만 400nm, 500nm에서 "Singular matrix" 오류 발생
- 짝수 grid_multiplier 값 (2, 4)이 불안정성 유발; 홀수 (3, 5)는 안정적
불안정한 nG 값: 81, 169, 225, 289, 361, 441, 529
안정성 검증된 nG 값: 9, 25, 49, 121 (550nm에서), 625
이것은 grcwa 라이브러리의 S-matrix 구현의 근본적 한계로, TM 편광에 대한 Li의 역 인수분해 규칙과 관련된 것으로 보입니다. 전체 가시광 스펙트럼에서 안정성이 필요한 프로덕션 시뮬레이션에서는 torcwa를 사용하거나, grcwa를 사용할 경우 각 파장을 개별적으로 검증하세요.
마이크로렌즈 슬라이스
마이크로렌즈는 평평한 층의 계단(n_lens_slices)으로 근사됩니다. 더 많은 슬라이스가 곡면 마이크로렌즈 프로파일을 더 잘 근사하지만, 각 슬라이스는 RCWA 계산에 층을 추가합니다.
수렴 데이터는 다음을 보여줍니다:
- 5 슬라이스: 눈에 띄게 낮은 흡수 (0.9662)
- 15 슬라이스: 수렴 값의 0.001 이내 (0.9696)
- 30+ 슬라이스: 완전히 수렴 (0.9699-0.9700), 더 이상의 개선 없음
대부분의 시뮬레이션에서 20-30 슬라이스는 최소한의 오버헤드로 우수한 정확도를 제공합니다.
그리드 해상도
grid_multiplier 파라미터는 푸리에 계수를 계산하는 데 사용되는 유전율 그리드의 공간 해상도를 제어합니다. 높은 값은 급격한 유전율 경계(예: 메탈 그리드 가장자리)를 더 잘 분해합니다.
수렴은 빠릅니다:
- multiplier = 3: 일반적인 픽셀 구조에 대해 수렴 (A = 0.9699)
- multiplier = 5-6: 유의미한 변화 없음 (A = 0.9698-0.9699)
grcwa 짝수 grid_multiplier 불안정성
grcwa는 특정 푸리에 차수에서 짝수 grid_multiplier 값(2, 4)에 대해 수치적 불안정성을 보입니다. grcwa에서는 홀수 multiplier(3, 5)를 사용하세요. torcwa에는 영향 없습니다.
대부분의 시뮬레이션에서 grid_multiplier 3이면 충분합니다.
전체 스펙트럼 검증
전체 가시광 스펙트럼(400-700nm, 31포인트)이 수렴 파라미터(grcwa nG=49, n_lens_slices=30, grid_multiplier=3)로 검증되었습니다. 모든 파장에서 R + T + A = 1.000을 정확히 만족하여 수치적 안정성을 확인했습니다.
주요 스펙트럼 특성:
- 400-500nm (청색): 높은 흡수 (A = 0.967-0.976), 거의 0인 투과 — 실리콘이 강하게 흡수
- 500-560nm (녹색): 510-520nm에서 흡수 감소 (A ≈ 0.955) 후 회복
- 560-700nm (적색): 투과의 점진적 증가 (T 최대 0.011), 흡수는 높은 수준 유지 (A > 0.955)
총 계산 시간: nG=49에서 31개 파장에 대해 34초.
수렴 연구 실행
# 푸리에 차수 스윕 (grcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_order_grcwa
# 푸리에 차수 스윕 (torcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_order_torcwa
# 마이크로렌즈 슬라이스 스윕
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep n_lens_slices
# 그리드 해상도 스윕
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep grid_resolution
# 전체 스펙트럼 검증
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep full_spectrum --fourier-order 49권장 파라미터
| 파라미터 | 빠른 실행 | 기본값 | 수렴 |
|---|---|---|---|
| grcwa fourier_order | [25, 25] | [49, 49] | [49, 49] |
| torcwa fourier_order | [3, 3] | [5, 5] | [7, 7] |
| n_lens_slices | 15 | 30 | 50 |
| grid_multiplier | 3 | 3 | 3 |
프로덕션용 grcwa vs torcwa
grcwa는 빠르지만 많은 푸리에 차수와 파장에서 수치적 불안정성이 있습니다. 전체 스펙트럼 안정성이 필요한 프로덕션 시뮬레이션에서는 **torcwa [5,5] 또는 [7,7]**을 권장합니다. grcwa nG=49는 빠른 단일 파장 확인에 적합합니다.
fourier_order 설정 형식 참고
COMPASS 설정 YAML에서 fourier_order는 [nG_x, nG_y]로 지정됩니다. grcwa의 경우 솔버가 내부적으로 이를 총 하모닉스로 매핑합니다. torcwa의 경우 [N, N]이 절단 차수를 직접 설정합니다.
설정 프리셋
# 빠른 반복
python scripts/run_simulation.py solver=grcwa_fast
# 높은 정확도 (수렴)
python scripts/run_simulation.py solver=grcwa_converged색상별 QE 수렴 (Per-Color QE Convergence)
Per-Color QE Convergence (Uniform CF)
Per-color QE analysis using uniform color filter simulations. Each color is measured separately with its CF material applied to all pixels, giving true per-channel spectral response.
Show numerical data
| N | Harmonics | QE_R@620 | QE_G@530 | QE_B@450 |
|---|---|---|---|---|
| [3,3] | 49 | 0.9289 | 0.9471 | 0.9196 |
| [5,5] | 121 | 0.9622 | 0.9770 | 0.9697 |
| [7,7] | 225 | 0.9615 | 0.9737 | 0.9475 |
| [9,9] | 361 | 0.9617 | 0.9737 | 0.9486 |
Bayer 패턴 픽셀에서 각 서브 픽셀은 서로 다른 컬러 필터(CF)를 가집니다. 총 흡수만으로는 채널별 동작을 알 수 없습니다 — 수렴 속도, 솔버 간 일치도, 각도 민감도가 색상별로 다를 수 있습니다. 색상별 연구는 균일 컬러 필터 시뮬레이션을 사용합니다: 모든 픽셀에 동일한 CF 재료(예: 모두 cf_red)를 적용하고, CF 피크 파장에서의 총 흡수를 색상별 QE로 사용합니다.
방법론
표준 CIS 방식: 균일 CF로 세 가지 별도 시뮬레이션을 수행합니다 (모두 적색 620nm, 모두 녹색 530nm, 모두 청색 450nm). 이를 통해 인접 픽셀 필터의 크로스톡 없이 각 색상 채널의 QE를 분리합니다.
RCWA에서 픽셀별 QE를 사용하지 않는 이유
RCWA 솔버는 각 포토다이오드 영역에서 eps_imag 가중치를 사용하여 총 흡수를 분배하는 방식으로 픽셀별 QE를 계산합니다. 모든 PD가 동일한 eps_imag을 가진 실리콘이므로, 컬러 필터와 관계없이 모든 픽셀이 동일한 QE = total_A / n_pixels을 받습니다. 균일 CF 시뮬레이션이 실제 색상별 QE를 얻는 표준 접근법입니다.
색상별 푸리에 수렴 (torcwa)
| [N,N] | 하모닉스 | QE_R@620 | QE_G@530 | QE_B@450 |
|---|---|---|---|---|
| [3,3] | 49 | 0.9289 | 0.9471 | 0.9196 |
| [5,5] | 121 | 0.9622 | 0.9770 | 0.9697 |
| [7,7] | 225 | 0.9615 | 0.9737 | 0.9475 |
| [9,9] | 361 | 0.9617 | 0.9737 | 0.9486 |
- 적색: N=5에서 수렴 (N=7 이후 ΔQE < 0.001)
- 녹색: N=7에서 수렴 (N=7과 N=9 사이 ΔQE = 0.00002)
- 청색: 비단조적 — N=5에서 최대 (0.970) 후 N=7-9에서 0.948-0.949로 안정화. 짧은 파장 회절 효과로 인해 청색 채널이 초기 N=5 추정보다 낮은 QE로 수렴
색상별 푸리에 수렴 (grcwa)
| nG | QE_R@620 | QE_G@530 | QE_B@450 | 상태 |
|---|---|---|---|---|
| 9 | 0.9811 | 0.9931 | 0.9949 | 안정 (과대 추정) |
| 25 | 0.9834 | 0.9883 | 0.9734 | 안정 |
| 49 | 0.9333 | 0.9432 | 0.9316 | 안정 |
| 81 | 0.5000 | 0.9670 | 0.9340 | R: TM 발산 |
grcwa TM 불안정성은 nG=81에서 특히 620nm의 적색 채널에 영향을 미칩니다 (R_R=14.33, 비물리적). 청색과 녹색 채널은 nG=81에서도 안정적이며, 불안정성이 파장 의존적임을 확인합니다.
솔버 간 색상별 비교
| 솔버 | QE_R@620 | QE_G@530 | QE_B@450 |
|---|---|---|---|
| grcwa (nG=49) | 0.9333 | 0.9432 | 0.9316 |
| torcwa ([5,5]) | 0.9622 | 0.9770 | 0.9697 |
| 차이 | -2.9% | -3.4% | -3.8% |
torcwa가 모든 색상에서 일관되게 높은 QE를 산출합니다. 가장 큰 차이는 청색 채널(3.8%)에서 발생하며, 청색 파장이 솔버 구현 차이(G-벡터 선택, 푸리에 인수분해 규칙)에 더 민감함을 시사합니다.
각도 의존적 색상별 QE
| CRA | QE_R@620 | QE_G@530 | QE_B@450 | RI_R | RI_G | RI_B |
|---|---|---|---|---|---|---|
| 0° | 0.9622 | 0.9770 | 0.9697 | 1.000 | 1.000 | 1.000 |
| 15° | 0.9960 | 1.0000 | 0.9995 | 1.035 | 1.024 | 1.031 |
| 30° | 0.9980 | 0.9997 | 0.9954 | 1.037 | 1.023 | 1.027 |
상대 조도 > 1.0
QE가 CRA와 함께 증가합니다. 이는 픽셀이 각 CRA 각도에 대해 마이크로렌즈 초점을 최적으로 정렬하는 auto_cra 마이크로렌즈 시프트를 사용하기 때문입니다. 정면 입사(CRA=0°)에서 균일 CF 구성은 설계된 Bayer 패턴 형상과 완전히 일치하지 않을 수 있어 약간 낮은 결합 효율을 보입니다. RI > 1.0 값은 물리적 이득으로 해석되어서는 안 됩니다 — CRA 시프트가 광학적 결합을 개선하는 시뮬레이션 설정을 반영합니다.
색상별 실험 실행
# 색상별 푸리에 스윕 (torcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_per_color_torcwa
# 색상별 푸리에 스윕 (grcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_per_color_grcwa
# 솔버 간 색상별 비교
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep cross_solver_per_color
# 각도 의존적 색상별 QE
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep angle_per_color핵심 요점
- 푸리에 차수가 가장 중요한 파라미터 -- 정확도와 실행 시간에 가장 큰 영향을 미침
- 메탈 그리드 특징이 수렴 요구 사항을 결정 -- 매끄러운 구조는 훨씬 낮은 차수에서 수렴
- torcwa가 grcwa보다 수치적으로 더 안정적 -- 모든 푸리에 차수와 파장에서 안정
- grcwa는 더 빠르지만 (nG=49에서 0.95s) 많은 nG 값에서 TM 편광 불안정성 있음
- torcwa는 [5,5]에서 수렴 (121 하모닉스, 23초), ΔA < 0.001
- n_lens_slices = 15-20이 대부분의 마이크로렌즈 형상에 충분
- grid_multiplier = 3이 일반적인 픽셀 형상에 충분
- grcwa 사용 시 항상 R + T + A ≈ 1 검증 -- 위반은 수치적 불안정성을 나타냄
- 청색 채널은 적색/녹색보다 느리게 수렴 -- 짧은 파장 특성으로 인해 색상별 연구에서 확인
- 솔버 간 색상별 차이는 청색에서 최대 (3.8%) -- 청색 파장이 솔버 구현 차이에 더 민감
- grcwa TM 불안정성은 파장 의존적 -- nG=81에서 620nm 실패, 450nm 및 530nm에서는 안정