Chapter 05

비선형 해법: 뉴턴과 거멜

4장에서 연속 방정식을 격자점의 방정식으로 바꾸었다. 그 결과는 미지수 수천~수십만 개짜리 연립 비선형 방정식 \(\mathbf{F}(\mathbf{u}) = 0\)이다. 이 장은 그것을 실제로 푸는 법을 다룬다. 전류를 어떻게 이산화해야 해가 출렁이지 않는지, 뉴턴 반복이 왜 빠르고 왜 갑자기 무너지는지, 거멜 반복은 언제 쓸 만한지, 매 반복의 선형 방정식을 무엇으로 푸는지, 그리고 바이어스를 어떻게 올려야 수렴이 끊기지 않는지. 모든 그림은 이 책의 엔진이 실제로 반복하는 과정을 그대로 보여 준다.

격자 위의 방정식은 하나의 큰 비선형 방정식이다

정상 상태 드리프트-확산 모형은 격자점마다 세 개의 방정식을 갖는다. 포아송 방정식, 전자 연속 방정식, 정공 연속 방정식이다(3장). 미지수를 \(\mathbf{u} = (\psi_i, n_i, p_i)\)로 모으면 박스 적분(4장)으로 얻은 이산 방정식은 다음 꼴이 된다.

$$\mathbf{F}(\mathbf{u}) = \begin{pmatrix} F_\psi(\psi, n, p) \\ F_n(\psi, n, p) \\ F_p(\psi, n, p)\end{pmatrix} = \mathbf{0}$$
\(F_\psi\): 각 제어 체적에서 전기 선속의 합 + 공간 전하, \(F_n, F_p\): 각 제어 체적으로 들어오고 나가는 전자·정공 선속의 합 − 재결합. 격자점 \(N\)개면 미지수는 \(3N\)개(전자만 풀면 \(2N\)개)

이 방정식은 두 군데에서 강하게 비선형이다. 캐리어 농도가 전위의 지수 함수(\(n = n_i e^{(\psi-\varphi_n)/V_t}\))이고, 이웃 격자점 사이의 전류도 전위 차의 지수 함수로 들어간다. 지수 함수 하나가 열전압 \(V_t \approx 25.9\) mV마다 \(e\)배씩 바뀌므로 전위가 1 V 바뀌면 농도는 \(e^{38.7} \approx 10^{17}\)배 바뀐다. 이런 방정식을 푸는 일의 거의 전부는 "지수 함수를 어떻게 달래며 따라갈 것인가"다.

이 장은 TCAD 흐름의 어디인가 공정 모사 → 구조·격자 → 물리 모델 → 수치 해 → 소자 특성 → 보정·활용 가운데 수치 해 단계다. 격자(4장)와 방정식(3장)이 정해졌다고 보고, 그 연립 방정식을 실제로 푸는 알고리즘을 다룬다. 시간에 따라 푸는 과도 해석은 15장에서 같은 뉴턴 위에 시간 적분을 얹는다.

전류의 이산화: 중앙 차분이 출렁이는 곳

두 격자점 \(i, i+1\) 사이(간격 \(h\))의 전자 전류를 가장 순진하게 쓰면 이렇다. 전계는 구간에서 일정하고, 농도는 두 점의 평균, 기울기는 차분이다.

$$J_{n,i+\frac12} = q\mu_n \frac{n_i + n_{i+1}}{2} E + qD_n\frac{n_{i+1}-n_i}{h} = \frac{qD_n}{h}\Big[n_{i+1}\big(1 - \tfrac{\Delta_i}{2}\big) - n_i\big(1 + \tfrac{\Delta_i}{2}\big)\Big]$$
\(\Delta_i = (\psi_{i+1}-\psi_i)/V_t\): 한 칸의 전위 차를 열전압으로 나눈 값, \(E = -(\psi_{i+1}-\psi_i)/h\), 아인슈타인 관계 \(D_n = \mu_n V_t\)

\(\Delta_i > 2\)이면 \(n_{i+1}\)의 계수 \(1 - \Delta_i/2\)가 음수가 된다. 이웃 농도가 늘면 전류가 줄어드는, 물리적으로 말이 안 되는 결합이다. 이것이 연속 방정식에 들어가면 해가 격자점마다 위아래로 출렁이고 농도가 음수로 내려가기도 한다. 실리콘 소자에서 공핍층은 1 V 남짓을 수십 nm에 걸치므로, 한 칸에 \(2V_t \approx 52\) mV 이하가 걸리게 하려면 격자가 쓸데없이 촘촘해야 한다.

샤페터-거멜 이산화(Scharfetter–Gummel, 1969)는 발상을 바꾼다. 구간 안에서 전류와 전계가 일정하다고 놓고 1차 미분 방정식 \(J = q\mu n E + qD\,dn/dx\)를 정확히 적분한다. 그러면 농도는 구간 안에서 지수 함수 모양이 되고, 선속은 베르누이 함수로 쓰인다.

$$J_{n,i+\frac12} = \frac{qD_n}{h}\Big[n_{i+1}\,B(\Delta_i) - n_i\,B(-\Delta_i)\Big], \qquad B(x) = \frac{x}{e^x - 1}$$
\(B(0) = 1\)이면 순수 확산, \(|\Delta| \gg 1\)이면 \(B(\Delta) \to 0\), \(B(-\Delta) \to \Delta\)로 상류 쪽 농도만 남는 드리프트(상류 차분)가 된다. \(B(x) = 1 - x/2 + x^2/12 - \cdots\)이므로 \(|\Delta|\)가 작으면 중앙 차분과 같다

아래 그림은 한 줄의 격자 위에서 전위가 일정하게 기울어 있을 때 전자 연속 방정식(재결합 없음, 양 끝 농도 고정)을 세 가지 방식으로 푼 결과다. 왼쪽 끝 농도를 1, 오른쪽 끝을 0.2로 두었다. 전위 차를 키우거나 칸 수를 줄여 한 칸의 \(\Delta\)를 2 위로 올려 본다.

SIMULATOR

중앙 차분 대 샤페터-거멜: 한 칸의 전위 차가 2kT/q를 넘으면

정확해중앙 차분샤페터-거멜상류 차분
한 칸의 Δ = Δψ/Vt—
중앙 차분 최대 오차—
SG 최대 오차—
중앙 차분 상태—
해볼 것: ① ΔV 0.6 V, N 10이면 Δ ≈ 2.3이다. 중앙 차분이 오른쪽 끝에서 위아래로 튄다. N을 14로 늘려 Δ를 2 아래로 내리면 출렁임이 사라진다. ② ΔV 2 V, N 10으로 두면 중앙 차분 농도가 음수가 된다. SG는 어떤 Δ에서도 격자점 값이 정확해와 일치한다. ③ 상류 차분을 켠다. 출렁이지는 않지만 경계층이 실제보다 두껍게 번진다(1차 정확도). 오른쪽 그래프에서 중앙 차분의 계수 1 − Δ/2가 Δ = 2에서 0을 지나 음수로 내려가는 것을 본다. (1D, 전위가 직선으로 주어진 전자 연속 방정식, 재결합 없음, 길이 100 nm)

SG는 전위가 구간에서 직선이라는 가정 아래 격자점 값이 정확하다. 중앙 차분과 상류 차분 사이를 \(\Delta\)에 따라 매끄럽게 넘어가는 지수 맞춤이라 지수 맞춤(Exponential fitting)이라고도 부른다. 상업용 TCAD와 이 책의 엔진(1D `TC.dd1d`, 2D `TC.mos2d`) 모두 이 선속을 쓴다. 대가는 비선형성이다. 선속이 \(\psi\)에 대해 지수 함수처럼 바뀌므로 야코비안에는 \(B'(x)\)가 들어가고, \(|x|\)가 매우 크거나 0 근처일 때 넘침과 상쇄 오차를 피하도록 \(B(x)\)를 구간별로 계산해야 한다(엔진의 `TC.bern`은 \(|x| < 10^{-4}\)에서 급수, \(|x| > 700\)에서 점근식을 쓴다).

뉴턴 방법: 접선을 따라 근으로

비선형 방정식 \(\mathbf{F}(\mathbf{u}) = 0\)을 푸는 표준 도구는 뉴턴-랩슨 방법(Newton–Raphson)이다. 현재 추정값 \(\mathbf{u}_k\)에서 \(\mathbf{F}\)를 1차 테일러 전개로 직선(고차원에서는 초평면)으로 바꾸고, 그 직선의 근으로 건너뛴다.

$$\mathbf{J}(\mathbf{u}_k)\,\delta\mathbf{u} = -\mathbf{F}(\mathbf{u}_k), \qquad \mathbf{u}_{k+1} = \mathbf{u}_k + t_k\,\delta\mathbf{u}, \qquad J_{ij} = \frac{\partial F_i}{\partial u_j}$$
\(\mathbf{J}\): 야코비안 행렬, \(t_k \in (0, 1]\): 감쇠 계수(\(t_k = 1\)이면 순수 뉴턴). 해 근처에서 오차는 \(|e_{k+1}| \le C\,|e_k|^2\), 곧 맞는 자릿수가 반복마다 두 배가 된다(2차 수렴)

2차 수렴은 강력하지만 조건이 붙는다. "해 근처에서"다. 멀리서 출발하면 접선이 엉뚱한 곳을 가리킨다. 반도체 방정식의 비선형성은 지수 함수이므로 문제를 하나의 격자점으로 줄여 보면 핵심이 다 보인다. 중성 영역의 한 점에서 포아송 방정식은 전하 중성 조건 \(p - n + N_D = 0\), 곧 정규화 전위 \(u = \psi/V_t\)에 대해 \(2\sinh u = N_D/n_i\)가 된다.

아래 그림에서 가로축의 손잡이(초기값 \(u_0\))를 끌어 본다. 회색 접선이 다음 추정값을 정한다. 왼쪽에서 출발하면 \(\sinh\)가 평평해서 접선이 아주 멀리 건너뛰고, 그 뒤로는 지수 함수의 가파른 벽을 따라 한 번에 거의 1(곧 \(V_t\))씩만 내려온다.

SIMULATOR

스칼라 뉴턴: 접선, 2차 수렴, 감쇠

초기값 손잡이를 좌우로 끈다
초기값 u₀—
첫 걸음 u₁—
수렴까지 반복—
상태—
해볼 것: ① N/nᵢ = 10³, u₀를 근 바로 오른쪽에 두면 4~5회 만에 끝난다. 오른쪽 그래프에서 |δu|가 1e-2 → 1e-4 → 1e-8로 지수가 두 배씩 떨어진다(2차 수렴). ② u₀를 0 근처로 끌면 첫 걸음이 u ≈ 500으로 튀고 수백 번에 걸쳐 1씩 내려온다. N/nᵢ를 10⁶ 이상으로 올리면 e^u가 배정밀도를 넘쳐 계산이 NaN으로 끝난다. ③ "로그 감쇠"로 바꾼다. 큰 걸음을 ln(1 + |δu|)로 줄여 어디서 출발해도 십여 번 안에 수렴한다. arctan으로 바꾸면 |u₀ − 3| > 1.39에서 순수 뉴턴이 좌우로 커지며 발산하는 고전적인 예를 볼 수 있다. (u = ψ/Vt, 볼츠만 통계 한 점)

여기서 본 두 가지 실패, 곧 "평평한 곳에서 너무 멀리 뛰기"와 "지수 함수 벽을 \(V_t\)씩 기어 내려오기"는 2D 소자에서도 그대로 일어난다. 처방도 같다. 걸음의 크기를 제한하는 감쇠(Damping)다. 반도체 시뮬레이터에서 자주 쓰는 두 가지는 다음과 같다.

$$\text{로그 감쇠: } \delta\psi' = \operatorname{sign}(\delta\psi)\,V_t \ln\!\Big(1 + \frac{|\delta\psi|}{V_t}\Big), \qquad \text{상한: } t_k = \min\!\Big(1, \frac{\Delta V_{\max}}{\|\delta\psi\|_\infty}\Big)$$
로그 감쇠는 노드마다 따로 작용하고 작은 걸음(\(|\delta\psi| \ll V_t\))은 그대로 둔다. 상한은 갱신 전체를 같은 비율로 줄여 방향을 보존한다. 둘 다 해 근처에서는 \(t_k = 1\)로 돌아가므로 마지막 2차 수렴을 해치지 않는다. 더 정교한 방법은 \(\|\mathbf{F}\|\)가 줄어들 때까지 \(t_k\)를 반씩 줄이는 선 탐색(Line search)이다

1D 포아송 방정식을 뉴턴으로

이제 진짜 격자 문제다. 평형 상태 pn 접합(양쪽 \(10^{18}\) cm⁻³, 길이 600 nm, 121점)의 비선형 포아송 방정식을 뉴턴으로 푼다. 평형이므로 \(\varphi_n = \varphi_p = 0\)이고 미지수는 \(\psi_i\)뿐이다. 노드 \(i\)의 잔차와 야코비안은 이렇게 생긴다.

$$F_i = \frac{\varepsilon}{h}(\psi_{i+1} - 2\psi_i + \psi_{i-1}) + q h\,(p_i - n_i + N_i), \qquad \frac{\partial F_i}{\partial \psi_i} = -\frac{2\varepsilon}{h} - \frac{q h}{V_t}(n_i + p_i)$$
균일 격자 \(h\), \(n_i = n_i^{\,0} e^{\psi_i/V_t}\), \(p_i = n_i^{\,0} e^{-\psi_i/V_t}\)(진성 농도 \(n_i^{\,0}\)). 야코비안은 삼중 대각이고 대각 성분이 항상 음수로 우세하다. 그래서 1D 포아송의 뉴턴 선형 풀이는 토마스 알고리즘 한 번(\(O(N)\))이면 된다

아래 시뮬레이터는 엔진의 단계형 풀이기 `TC.poissonSolver1d`를 한 반복씩 돌린다. 위 그래프는 현재 반복의 \(\psi(x)\)와 최종 해(점선), 아래 그래프는 반복마다의 갱신 크기 \(\max|\delta\psi|/V_t\)와 잔차다. 방법과 초기값을 바꿔 가며 "한 걸음"과 "끝까지"를 눌러 본다.

SIMULATOR

pn 접합 포아송: 초기값·감쇠·피카르

반복—
갱신 max|δψ|/Vt—
잔차(행 정규화)—
상태—
해볼 것: ① "뉴턴 · 중성 초기값": 각 점을 국소 전하 중성 전위(±0.476 V)에서 출발시킨다. 7회 만에 갱신이 9 → 6 → 1 → 0.2 → 4e-3 → 3e-6 → 3e-12로 떨어진다. 마지막 세 걸음이 2차 수렴이다. ② "뉴턴 · ψ = 0": 모든 점을 0에서 출발시키면 첫 걸음이 수백 Vt로 튀고 두 번째에 지수 함수가 넘쳐 NaN이 된다. ③ "로그 감쇠 · ψ = 0": 같은 나쁜 초기값인데도 큰 걸음이 잘려 11회 만에 수렴한다. ④ "피카르": 전하를 지난 반복 값으로 얼리고 선형 포아송만 푼다. 고농도 접합에서는 3회 만에 발산한다. (볼츠만 통계, 오믹 양 끝, 수렴 판정 갱신 < 1e-9 Vt)

네 경우를 나란히 놓으면 교훈이 분명하다. 초기값이 뉴턴의 운명을 정한다. 국소 전하 중성 전위는 중성 영역에서는 이미 정답이고 공핍 영역에서만 틀리므로 거의 모든 시뮬레이터가 평형 풀이의 기본 초기값으로 쓴다. 감쇠는 나쁜 초기값에 대한 보험이다. 피카르 반복(Picard, 고정점 반복)은 야코비안에서 \(\partial(p-n)/\partial\psi\) 항을 버린 것과 같다. 이 항이 바로 공간 전하가 전위 변화를 되밀어 내는 "음의 되먹임"이므로 이를 빼면 고농도에서 반복이 증폭되어 발산한다. 피카르는 저농도·소신호 같은 약한 비선형 문제에서만 쓸 만하다.

결합 뉴턴과 거멜 반복

포아송만 풀 때는 노드마다 미지수가 하나였다. 드리프트-확산 전체를 풀면 노드마다 \((\psi, n, p)\) 세 개가 엮이고 야코비안은 \(3\times3\) 블록 행렬이 된다. 방법은 두 갈래다.

결합 뉴턴 (Coupled) ∂Fψ/∂ψ∂Fψ/∂n∂Fψ/∂p ∂Fn/∂ψ∂Fn/∂n∂Fn/∂p ∂Fp/∂ψ∂Fp/∂n∂Fp/∂p 9개 블록을 한 번에 풀어 (δψ, δn, δp)를 동시에 해 근처 2차 수렴 · 행렬 3배 크기 거멜 반복 (Decoupled) 포아송φn,φp 고정 전자ψ 고정 정공ψ 고정 대각 블록만 차례로 풀고 바깥 고리를 반복 행렬 작음 · 결합이 강하면 선형 수렴으로 느려짐
결합 뉴턴과 거멜 반복의 야코비안. 결합 뉴턴은 세 방정식의 상호 미분(연한 블록)까지 넣어 한 번에 푼다. 거멜은 대각 블록만 남기고 나머지 결합을 바깥 반복으로 떠넘긴다.

거멜 반복(Gummel's method, 1964)은 준페르미 준위 \(\varphi_n, \varphi_p\)를 고정하고 비선형 포아송을 푼 다음(이때 \(n, p\)는 \(\psi\)를 따라 볼츠만 식으로 움직인다), 그 \(\psi\)를 고정하고 전자·정공 연속 방정식을 따로 푼다. \(\psi\)가 고정되면 SG 선속은 \(n\)에 대해 선형이므로 연속 방정식은 선형 삼중 대각(2D에서는 5대각) 풀이 한 번이다. 이것을 바깥 고리로 되풀이한다.

거멜의 수렴 속도는 방정식 사이의 결합이 얼마나 약한가에 달려 있다. 전류가 작아 캐리어가 공간 전하에 거의 기여하지 않으면(낮은 순방향, 문턱 아래 MOSFET) 포아송과 연속 방정식이 거의 독립이어서 몇 번 만에 끝난다. 고주입에서는 주입된 캐리어가 전위를 바꾸고, 바뀐 전위가 다시 주입을 바꾸는 결합이 강해 선형 수렴이 매우 느려진다.

아래에서 엔진의 1D 다이오드(\(10^{17}/10^{17}\), 2 µm, SRH + 오제)를 평형에서 바로 목표 전압으로 풀며 두 방법을 비교한다. 오른쪽 그래프는 바이어스마다의 반복 횟수를 미리 계산해 둔 것이다.

SIMULATOR

다이오드에서 뉴턴 대 거멜: 반복 횟수와 바이어스

결합 뉴턴거멜
뉴턴 반복—
거멜 반복—
전류 J—
두 해의 J 차이—
해볼 것: ① Va = 0.2 V: 두 방법 모두 6회다. 전류가 작아 결합이 약하다. ② Va를 0.6 → 0.8 → 1.0 V로 올린다. 뉴턴은 7~10회로 거의 그대로인데 거멜은 13 → 22 → 38회로 늘어난다. 왼쪽 그래프에서 거멜의 갱신이 직선(선형 수렴)으로, 뉴턴은 마지막에 꺾여 떨어진다(2차 수렴). ③ 역방향 −2 V로 내린다. 전류는 작지만 공핍층의 전위 변화가 커서 거멜도 수십 회가 걸린다(−5 V에서 뉴턴 13회, 거멜 119회). 두 해의 전류는 같다. (1D DD, 볼츠만, τ = 0.1 µs, 반복 판정 갱신 < 1e-9)

상용 도구가 두 방법을 섞어 쓰는 이유가 여기 있다. 거멜은 한 반복이 싸고(작은 선형 방정식 세 번) 초기값에 관대해서 평형이나 낮은 바이어스의 출발점을 만들기 좋다. 결합 뉴턴은 한 반복이 비싸지만(블록 행렬) 반복 수가 바이어스에 둔감하고 해 근처에서 2차로 수렴한다. 흔한 전략은 "거멜 몇 번으로 초기값을 다듬고 결합 뉴턴으로 마무리"다. 2D 엔진 `TC.mosSolver`는 `method: "gummel"`도 지원한다. TN-45 coarse 격자, Vd = 0.05 V에서 뉴턴은 4~5회, 거멜은 7~8회로 같은 해에 닿는다.

매 반복의 선형 방정식: 직접법과 반복법

뉴턴의 한 반복은 결국 선형 방정식 \(\mathbf{J}\,\delta\mathbf{u} = -\mathbf{F}\) 하나다. 반도체 시뮬레이션 시간의 대부분이 여기에 쓰인다. 2D 격자에서 노드는 이웃 4개(삼각 격자면 평균 6개)와만 결합하므로 행렬은 거의 0인 희소 행렬(Sparse matrix)이다. 문제는 그 0의 자리가 가우스 소거를 하면서 채워진다는 것이다.

아래 왼쪽은 직사각형 격자와 노드 번호(색이 번호 순서), 오른쪽은 5점 포아송 행렬의 0이 아닌 성분(파랑)과 LU 분해에서 새로 채워지는 성분(빨강)이다. 번호 매기는 방식을 바꿔 본다.

SIMULATOR

희소 행렬과 LU 채움: 번호를 어떻게 매기는가

원래 0이 아닌 성분LU 채움
미지수 N—
반대역폭—
nnz(A)—
nnz(L+U)—
해볼 것: ① "가로 먼저"(긴 쪽 먼저)는 이웃 행의 노드가 nx만큼 떨어져 반대역폭이 nx다. LU 채움은 띠 안을 거의 다 메운다. ② "세로 먼저"(짧은 쪽 먼저)로 바꾸면 반대역폭이 ny로 줄고 채움도 줄어든다. 엔진의 2D 풀이기가 짧은 쪽 차원으로 번호를 매기는 이유다. ③ "무작위"는 같은 행렬인데도 채움이 폭발한다. RCM(역 커트힐-맥키)은 너비 우선 탐색으로 띠를 자동으로 좁힌다. (5점 라플라시안, 구조적으로 대칭, 피벗 없는 기호 소거)

소거의 비용은 띠 폭에 달려 있다. 반대역폭 \(b\), 미지수 \(N\)인 띠 행렬의 LU는 메모리 \(O(Nb)\), 연산 \(O(Nb^2)\)이다. 정사각형 2D 격자(\(n\times n\))면 \(b \approx n\)이므로 연산은 \(O(n^4) = O(N^2)\)이다. 이 책의 2D 엔진은 결합 미지수 \((\psi, n)\)을 노드마다 묶고 짧은 쪽(세로 26점)으로 번호를 매긴 띠 LU를 쓴다. TN-45 coarse 격자(29 × 26 = 754 노드, 미지수 1508개)에서 띠 저장은 약 16만 칸으로, 0이 아닌 원래 성분 약 1만 5천 개의 열 배쯤 된다. 이 정도면 한 번 분해가 수 ms다. 3D나 수십만 노드 격자에서는 채움을 최소화하는 순서(최소 차수, 중첩 분할)와 다중 프런트·초노드 희소 직접 풀이기를 쓰거나, 아예 분해하지 않는 반복법으로 간다.

반복 풀이기(Iterative solver)는 행렬-벡터 곱만 써서 해에 다가간다. 야코비와 가우스-자이델은 이웃 값을 평균하는 고전적인 방법인데, 오차 가운데 긴 파장 성분이 아주 천천히 줄어 격자가 \(n\times n\)이면 \(O(n^2)\)번이 걸린다. 켤레 기울기법(Conjugate gradient, CG)은 대칭 양정치 행렬에서 크릴로프 부분 공간의 최적 해를 고르므로 \(O(n)\)번이면 된다. 전처리(Preconditioning)는 \(\mathbf{M}^{-1}\mathbf{A}\)가 단위 행렬에 가깝도록 근사 역행렬 \(\mathbf{M}\)을 곱하는 것이다. 불완전 콜레스키 \(\mathrm{IC}(0)\)는 채움을 버린 LU로 \(\mathbf{M}\)을 만든다.

SIMULATOR

2D 포아송 행렬의 반복 풀이: 야코비·가우스-자이델·SOR·CG·ICCG

야코비가우스-자이델SOR(최적 ω)CGICCG(0)
야코비 (1e-8까지)—
가우스-자이델—
SOR—
CG / ICCG—
해볼 것: ① n = 16에서 야코비는 약 1060회, 가우스-자이델은 그 절반, CG는 28회다. ② n을 두 배(32)로 늘린다. 야코비·가우스-자이델은 반복이 약 4배(n²), SOR와 CG는 약 2배(n)로 늘어난다. 야코비는 3000회 안에 끝나지 못한다. ③ ICCG는 CG보다 반복이 더 적다(n = 16에서 17회). 한 반복이 전처리 풀이만큼 비싸지만 큰 문제일수록 이득이 크다. (균일 격자 5점 라플라시안, 디리클레 경계, 균일한 우변, 상대 잔차 ‖r‖/‖b‖)

드리프트-확산 야코비안은 포아송 행렬보다 훨씬 다루기 어렵다. 연속 방정식 블록은 비대칭이고(드리프트), 대각 성분의 크기가 노드마다 수십 자릿수 차이 나며, 결합 블록 때문에 양정치도 아니다. 그래서 CG 대신 BiCGSTAB이나 GMRES 같은 비대칭 크릴로프 방법에 ILU 전처리를 붙여 쓰고, 행과 열의 크기를 맞추는 스케일링이 필수다. 2D 소자 대부분은 지금도 희소 직접 풀이기가 더 빠르고 튼튼하며, 반복법은 대형 3D 문제에서 주인공이 된다.

언제 멈출 것인가: 갱신 크기와 잔차

뉴턴 반복을 멈추는 기준은 두 종류다. 갱신이 작아졌는가, 방정식이 만족되었는가.

$$\frac{\|\delta\psi\|_\infty}{V_t} < \varepsilon_\psi, \quad \frac{\|\delta n\|}{\|n\|} < \varepsilon_n \qquad \text{그리고/또는} \qquad \|\mathbf{F}(\mathbf{u}_k)\| < \varepsilon_F\ \ (\text{또는 } \|\mathbf{F}_k\|/\|\mathbf{F}_0\| < \varepsilon_r)$$
전위 갱신은 열전압 단위로 재야 의미가 있다(농도와 전류가 \(e^{\psi/V_t}\)로 따라 움직이므로 \(\delta\psi/V_t\)가 곧 상대 오차다). 잔차는 방정식마다 단위가 달라 행별 스케일링 뒤에 비교한다

갱신 기준만 쓰면 감쇠가 걸려 걸음이 억지로 작아진 경우를 수렴으로 착각할 수 있다. 잔차 기준만 쓰면 행렬 조건이 나빠 잔차는 작은데 해는 아직 먼 경우를 놓친다. 그래서 둘을 함께 본다. 아래는 다이오드를 결합 뉴턴으로 풀면서 반복마다 단자 전류를 계산한 것이다. 허용 오차를 느슨하게 잡으면 전위는 "거의 맞았는데" 전류가 얼마나 틀리는지 본다.

SIMULATOR

허용 오차와 전류의 정확도

갱신 크기잔차(행 정규화)전류 상대 오차
멈춘 반복—
그때 전류 오차—
그때 잔차—
수렴 전류 J—
해볼 것: ① Va 0.6 V, ε = 1(갱신이 Vt 하나, 또는 농도 상대 변화 100% 아래)로 두면 4회째에 멈추는데 그때 전류는 약 10% 틀려 있다. 전류가 e^{ψ/Vt}로 움직이므로 0.1 Vt의 전위 오차가 곧 약 10%의 전류 오차다. ② ε를 1e-3으로 조이면 반복이 단 한 번 늘고 전류 오차는 1e-9로 떨어진다. 2차 수렴 덕분에 엄격한 허용 오차가 거의 공짜다. ③ Va를 0.8 V, 1.0 V로 올린다. 고주입에서는 초반 걸음이 길어지지만(1.0 V에서 ε = 1이면 6회째, 전류 오차 2e-4) 마지막 꺾임은 그대로다. (1D DD, 10¹⁷/10¹⁷ 다이오드, 평형에서 바로 목표 전압으로, 갱신은 ψ는 Vt 단위·n, p는 상대값의 최댓값)
기준장점속는 경우대표 값
전위 갱신 \(\|\delta\psi\|/V_t\)물리적 의미가 분명(전류 상대 오차)감쇠·걸음 제한으로 갱신이 인위적으로 작을 때1e-5 ~ 1e-8
농도 상대 갱신 \(\|\delta n/n\|\)소수 캐리어까지 확인농도가 바닥값(~1e-10 cm⁻³) 근처인 곳1e-3 ~ 1e-6
잔차 \(\|\mathbf{F}\|\)방정식이 실제로 만족되는지행렬 조건이 나쁘면 작은 잔차 ≠ 작은 오차, 스케일링에 민감초기 대비 1e-8 ~ 1e-12
단자 전류 변화원하는 출력에 직접전류가 매우 작은 꺼짐 상태에서 잡음 수준상대 1e-6

바이어스 램프와 연속법

뉴턴이 해 근처에서만 빠르다면, 해 근처에서 출발하면 된다. 연속법(Continuation)은 이미 아는 해(평형)에서 출발해 바이어스를 조금씩 올리며 바로 앞의 해를 다음 초기값으로 쓰는 것이다. 바이어스 간격이 작으면 초기값이 해에 가깝고, 크면 뉴턴이 먼 거리를 한 번에 건너야 한다.

아래 그림의 왼쪽 위는 바이어스 평면(Vg, Vd)이다. 목표점을 끌어 놓으면 TN-45(coarse 격자 754 노드)를 평형에서 그 바이어스까지 한 번에 결합 뉴턴으로 푼다. 오른쪽은 반복마다의 전자 농도 지도, 아래는 반복마다의 전위 갱신과 잔차다. 전위 갱신 상한 \(\Delta V_{\max}\)를 바꿔 본다.

SIMULATOR

TN-45: 평형에서 한 번에 뛰기와 감쇠

바이어스 평면의 목표점을 끈다
max|δψ| (V)잔차(포아송 행)
목표 (Vg, Vd)—
반복—
감쇠 계수 t—
결과 Id—
해볼 것: ① 기본값(Vg = Vd = 1 V, ΔVmax 0.5 V)으로 푼다. 처음 네 번은 갱신이 0.5 V로 잘리고(t < 1), 그 뒤 갱신이 25.9 mV(= Vt) 근처에 한동안 머물다 마지막 세 번에 5e-3 → 6e-4 → 6e-6 V로 떨어진다. 19회. ② "제한 없음"으로 같은 목표를 푼다. 첫 걸음이 4 V, 둘째가 12 V로 튀고 잔차가 1e130대로 치솟은 뒤 갱신이 Vt에 붙어 40회 안에 끝나지 않는다. ③ 목표를 Vg = 0인 축(드레인만)으로 옮기면 제한이 없어도 대부분 수렴한다. 게이트를 한 번에 올리는 것이 어렵다. 바이어스 평면에 남는 점(초록: 수렴, 빨강: 실패, 숫자: 반복)으로 수렴 영역 지도를 그려 본다. (2D DD, 전자만, coarse 격자, 이동도 full, 한 반복 약 5 ms)

갱신이 \(V_t\) 근처에 오래 머무는 현상은 앞의 스칼라 뉴턴에서 본 "지수 함수 벽 기어 내려오기"와 같은 것이다. 노드별로 보면 범인은 n⁺ 다결정 실리콘 게이트다. 게이트 전압이 바뀌면 첫 걸음에서 게이트 안쪽 전위가 해보다 0.4 V쯤 높게 튀고, 그곳의 전자 농도 \(N_\text{poly}\,e^{\delta\psi/V_t}\)가 너무 커서 그 뒤로는 뉴턴이 한 번에 \(V_t\)씩만 내려온다. 엔진의 2D 풀이기는 전역 상한만 쓰고 노드별 로그 감쇠를 쓰지 않으므로 이 벽을 그대로 겪는다. 이 장의 마지막 시뮬레이터에서 볼 것처럼, 초기값에서 게이트 전위를 미리 옮겨 주면 사라진다.

실패에 대한 표준 처방은 계단 반으로 줄이기(Step halving / bisection)다. 한 바이어스 점이 정해진 반복 안에 수렴하지 못하면 마지막으로 수렴한 해로 돌아가 간격을 반으로 줄여 다시 시도한다. 연달아 쉽게 수렴하면 간격을 다시 늘린다. `TC.mos2d`가 바로 이렇게 걷는다(기본 간격 0.3 V, 실패하면 반, 성공하면 1.5배).

더 나은 초기값은 외삽 예측자(Predictor)로 만든다. 앞의 두 해로 다음 해를 선형 외삽한다.

$$\mathbf{u}^{\text{pred}}(V_{k+1}) = \mathbf{u}_k + \frac{V_{k+1}-V_k}{V_k - V_{k-1}}\,(\mathbf{u}_k - \mathbf{u}_{k-1})$$
\(\mathbf{u}\)는 \(\psi\)와 \(\ln n\)(농도는 로그로 외삽해야 양수가 유지되고 지수적 변화가 직선이 된다). 더 엄밀한 방법은 \(\partial\mathbf{u}/\partial V = -\mathbf{J}^{-1}\,\partial\mathbf{F}/\partial V\)를 이미 분해한 야코비안으로 한 번 더 풀어 접선을 얻는 것이다(접선 예측자)

수렴 실패의 유형과 처방

실무에서 만나는 수렴 실패는 대부분 아래 몇 가지로 정리된다. 진단의 첫걸음은 반복마다의 갱신과 잔차 기록(이 장의 아래쪽 그래프들)을 보는 것이다.

증상흔한 원인처방
첫 한두 반복에 갱신이 수 V로 튀고 NaN나쁜 초기값, 감쇠 없음중성 전위 초기값, 로그 감쇠·갱신 상한, 거멜로 시작
갱신이 \(V_t\) 근처에서 오래 머문다지수 함수 벽을 따라 내려오는 중(과도한 첫 걸음)노드별 로그 감쇠, 초기값에서 접촉 전위 이동, 작은 바이어스 간격
갱신이 줄었다 늘었다 진동속도 포화·이동도의 전계 의존성 미분 누락, 야코비안 오류야코비안 검증(유한 차분과 비교), 해 근처에서만 전체 미분 사용
선형적으로 아주 느린 수렴거멜에서 강한 결합(고주입), 부정확한 야코비안결합 뉴턴으로 전환
특정 바이어스 이상에서 항상 실패항복(충돌 이온화), 래치업, 음의 미분 저항 같은 물리적 전환점전류 경계 조건, 직렬 저항을 단 전압원, 호 길이 연속법
선형 풀이기 경고(특이 행렬)떠 있는 영역(접촉 없는 도체), 0 이동도, 피벗 실패구조·접촉 확인, 스케일링, 피벗 있는 풀이기
잔차는 작은데 결과가 격자에 따라 크게 달라짐수렴 문제가 아니라 이산화 오차격자 세분(4장)
수렴했다고 맞는 것은 아니다 뉴턴이 수렴했다는 것은 이산 방정식 \(\mathbf{F}(\mathbf{u}) = 0\)을 풀었다는 뜻일 뿐이다. 격자가 성기면 그 이산 방정식 자체가 연속 문제와 다르다. TN-45의 Vt는 coarse 격자에서 0.331 V, normal에서 0.356 V로 25 mV 차이가 나지만 두 경우 모두 1e-6 V까지 완벽히 "수렴"한다.

종합: TN-45 게이트 램프 설계

이제 지금까지의 도구를 모두 손에 쥐고 TN-45의 Id-Vg 곡선을 실제로 계산한다. 출발점은 Vg = 0, 주어진 Vd에서 수렴한 해다. 게이트를 0에서 1 V까지 올리는데, 바이어스 간격, 다음 점의 초기값을 만드는 방법, 감쇠, 실패할 때의 계단 반으로 줄이기를 직접 고른다. 위 그래프는 계산되는 대로 그려지는 Id-Vg(로그), 아래는 시도한 점마다의 뉴턴 반복 수다(빨강은 실패한 시도). 초기값 방법은 셋이다.

SIMULATOR

바이어스 램프 실험실: 간격 · 초기값 · 감쇠 · 계단 반으로

현재 Vg—
총 뉴턴 반복—
실패한 시도—
Id (Vg = 1 V)—
해볼 것: ① 기본값(ΔVg 0.1 V, 이전 해, 감쇠, Vd 1 V): 점마다 20회, 모두 200회 남짓이다. ② 초기값을 "게이트 이동"으로 바꾼다. 같은 간격에서 점마다 4~5회, 총 48회로 줄어든다. "외삽 예측"은 뒤로 갈수록 3회까지 내려간다. ③ "이전 해"에서 감쇠를 끄고 ΔVg를 0.25 V 이상으로 잡는다. 첫 점부터 실패한다. 계단 반으로 줄이기를 켜면 간격을 0.06 V 근처까지 줄여 가며 버티지만 실패한 시도에 반복을 많이 버린다. 끄면 그 자리에서 멈춘다. ④ "게이트 이동"이나 "외삽"이면 감쇠 없이 1 V를 한 번에 뛰어도 7~9회에 수렴한다. 좋은 초기값이 감쇠보다 강하다. (2D DD, coarse 격자, 점마다 최대 40회, 갱신 판정 1e-5 V)

네 가지 손잡이가 서로 어떻게 맞물리는지 정리하면 이렇다. 감쇠는 나쁜 초기값으로부터 발산을 막지만 걸음을 잘라 반복을 늘린다. 계단 반으로 줄이기는 실패를 성공으로 바꾸지만 실패한 시도의 반복을 버린다. 좋은 초기값(물리를 넣은 이동, 외삽)은 둘 다 필요 없게 만든다. 실무 설정은 "작지 않은 간격 + 외삽 예측 + 가벼운 감쇠 + 계단 반으로 줄이기를 보험으로"다. 이 결론은 TN-45 하나의 것이 아니라 거의 모든 소자 시뮬레이션에 통한다.

TARGET TN-45타깃 파일 · 5장

Vg = Vd = 1 V까지, 몇 번의 뉴턴이 드는가

coarse 격자(754 노드, 미지수 1508개, 띠 LU)에서 결합 뉴턴으로 계산했다. 평형에서 한 번에 Vg = Vd = 1 V로 뛰면 갱신 상한이 없을 때 첫 두 걸음이 4.4 V, 12 V로 튀고 포아송 잔차가 1e134까지 치솟은 뒤 갱신이 25.9 mV(= Vt)에 붙어 60회가 지나도 수렴하지 않는다. 상한 0.5 V면 19회, 0.2 V면 16회, 2 V면 44회다(normal 격자는 0.5 V로 27회). 세 경로의 Id는 모두 0.793 mA/µm로 1e-10까지 같다.

게이트 램프(Vd 0.05 V, ΔVg 0.1 V, 상한 0.5 V)는 앞 점의 해를 그대로 쓰면 점마다 20회(총 200회)이고, 마지막 잔차가 줄지 않은 채 Vt 걸음으로 기어 내려온다. 원인은 n⁺ 다결정 게이트 안쪽 전위의 첫 걸음 과도 상승이다. 초기값에서 게이트 전위를 0.1 V 올려 두면 점마다 4~5회(총 43회), 외삽 예측이면 3회까지(총 37회) 줄어든다. 포화 영역 Id-Vg 21점(`TC.sweep2d`, Vd 1 V)은 예측자를 켜면 점당 3회(총 89회, 약 0.5 s), 끄면 점당 9회(총 203회, 약 1.1 s)다.

드레인 간격: Vg = 0에서 감쇠 없이 Vd를 0.25 V씩 올리면 점마다 6회에 수렴하지만, 0.5 V 한 계단은 40회 안에 수렴하지 못한다(상한 0.5 V를 걸면 26회). 켜진 상태(Vg 1 V)는 훨씬 너그러워서 감쇠 없이도 ΔVd 1 V는 9회, 3 V는 33회가 걸리고 4 V 한 계단에서는 수렴하지 못한다. 수렴은 간격에 단조롭지 않다(Vg = 0에서 1 V 한 계단은 오히려 8회에 끝난다). 그래서 간격은 "작게"가 아니라 "실패하면 줄이는" 규칙으로 정한다.

이 장에서 정한 것TN-45 풀이 설정: 결합 뉴턴(ψ, n), SG 선속, 짧은 쪽 번호의 띠 LU, 전위 갱신 상한 0.5 V, 바이어스 간격 0.05~0.3 V, 외삽 예측자, 실패하면 간격을 반으로. 수렴 판정 갱신 1e-5 V(= 4e-4 Vt)·상대 농도 1e-3.
아직 남은 문제지금까지 TN-45의 도핑은 해석식으로 준 것이었다. 실제 공정 레시피에서 나오는 도핑 분포는 아직 모른다.
다음 단계공정 모사로 돌아가 웰·할로·확장부·소스/드레인 주입 직후의 분포를 계산한다(6장).

핵심 정리

  1. 격자 위의 드리프트-확산 방정식은 노드마다 (ψ, n, p)가 엮인 큰 비선형 방정식 F(u) = 0이다. 비선형성의 근원은 농도와 전류가 전위의 지수 함수라는 데 있다.
  2. 중앙 차분 전류는 한 칸의 전위 차가 2kT/q를 넘으면 이웃 계수가 음수가 되어 해가 출렁인다. 샤페터-거멜 이산화는 구간에서 전류를 정확히 적분해 베르누이 함수 B(x) = x/(eˣ − 1)로 선속을 쓰고, 확산과 상류 드리프트 사이를 매끄럽게 잇는다.
  3. 뉴턴 방법은 야코비안으로 선형화해 건너뛰며 해 근처에서 2차 수렴한다. 멀리서는 과도한 걸음과 지수 함수 벽(Vt씩 내려오기)으로 무너지므로 좋은 초기값(국소 중성 전위)과 감쇠(로그 감쇠, 갱신 상한)가 필요하다.
  4. 피카르(전하 얼리기)는 공간 전하의 음의 되먹임을 버려 고농도에서 발산한다. 거멜 반복은 포아송과 연속 방정식을 번갈아 풀어 한 반복이 싸고 저전류에서 좋지만, 결합이 강한 고주입·고전계에서 선형 수렴으로 느려진다.
  5. 뉴턴 한 반복의 핵심 비용은 희소 선형 방정식이다. 직접법(띠·희소 LU)은 번호 매기기에 따라 채움이 크게 달라진다. 반복법은 야코비·가우스-자이델이 O(n²), CG가 O(n) 반복이고 전처리(ILU, IC)가 반복을 더 줄인다. DD 야코비안은 비대칭이라 BiCGSTAB·GMRES를 쓴다.
  6. 수렴 판정은 Vt 단위의 전위 갱신과 스케일된 잔차를 함께 본다. 0.1 Vt의 전위 오차는 약 10%의 전류 오차다. 2차 수렴 덕분에 엄격한 허용 오차의 비용은 한두 반복이다.
  7. 바이어스는 연속법으로 올린다. 실패하면 간격을 반으로 줄이고, 외삽 예측자나 물리를 넣은 초기값(게이트 전위 이동)으로 반복을 크게 줄인다. TN-45를 평형에서 Vg = Vd = 1 V로 한 번에 뛰면 감쇠 없이는 수렴하지 못하고, 상한 0.5 V면 19회 만에 수렴한다.

확인 퀴즈

공핍층에 걸친 1 V를 균일 격자 20칸으로 나누었다(300 K). 전자 전류를 중앙 차분으로 이산화하면 어떤 일이 예상되는가?

Δ = 0.05 V / 0.02585 V ≈ 1.93이다. 평균으로는 2 아래지만 실제 공핍층의 전위는 직선이 아니라 접합면에서 가장 가파르므로 국소 Δ는 2를 넘기 쉽다. 그래서 TCAD는 격자를 극단적으로 촘촘히 하는 대신 Δ와 무관하게 안정한 샤페터-거멜 선속을 쓴다.

평형 pn 접합의 포아송 방정식을 모든 노드 ψ = 0에서 출발해 감쇠 없는 뉴턴으로 풀었더니 두 번째 반복에서 NaN이 나왔다. 가장 적절한 처방은?

ψ = 0에서 시작하면 첫 뉴턴 걸음이 수백 Vt로 튀어 e^{ψ/Vt}가 넘친다. 중성 전위 초기값이면 7회, ψ = 0이라도 로그 감쇠면 11회에 수렴한다. 피카르는 공간 전하의 음의 되먹임을 버려 고농도에서 오히려 3회 만에 발산한다.

다이오드를 높은 순방향 바이어스(고주입)에서 풀 때 거멜 반복이 결합 뉴턴보다 훨씬 많은 반복을 필요로 하는 이유는?

거멜은 대각 블록만 풀고 ψ와 n, p 사이의 결합 미분을 버린다. 결합이 약한 저전류에서는 몇 번이면 되지만, 고주입에서는 결합 항이 커서 수렴 비율이 1에 가까워진다. 이 장의 다이오드에서 1.0 V는 뉴턴 10회, 거멜 38회였다.

TN-45 Id-Vg 스윕에서 점마다 뉴턴이 20회씩 걸린다. 반복 기록을 보니 갱신이 약 26 mV에서 오래 머문다. 반복을 가장 크게 줄일 방법은?

26 mV ≈ Vt의 갱신은 지수 함수 벽을 한 걸음에 Vt씩 내려오는 모습이다. 첫 걸음이 과도하지 않도록 초기값을 해 가까이 두면 사라진다. 게이트 전위 이동은 점마다 4~5회, 외삽 예측은 3회로 줄였다. 상한을 늘리면 오히려 첫 걸음이 커져 나빠진다.