비선형 해법: 뉴턴과 거멜
4장에서 연속 방정식을 격자점의 방정식으로 바꾸었다. 그 결과는 미지수 수천~수십만 개짜리 연립 비선형 방정식 \(\mathbf{F}(\mathbf{u}) = 0\)이다. 이 장은 그것을 실제로 푸는 법을 다룬다. 전류를 어떻게 이산화해야 해가 출렁이지 않는지, 뉴턴 반복이 왜 빠르고 왜 갑자기 무너지는지, 거멜 반복은 언제 쓸 만한지, 매 반복의 선형 방정식을 무엇으로 푸는지, 그리고 바이어스를 어떻게 올려야 수렴이 끊기지 않는지. 모든 그림은 이 책의 엔진이 실제로 반복하는 과정을 그대로 보여 준다.
- 중앙 차분 전류가 격자 한 칸의 전위 차가 \(2kT/q\)를 넘으면 출렁이는 이유와 샤페터-거멜 지수 맞춤(베르누이 함수)이 그것을 어떻게 고치는지 설명한다.
- 뉴턴 방법의 야코비안, 2차 수렴, 감쇠, 초기값의 역할을 스칼라 문제와 1D 포아송 문제에서 확인한다.
- 결합 뉴턴과 분리형 거멜 반복을 비교하고, 바이어스 영역에 따라 어느 쪽이 유리한지 말한다.
- 띠 LU의 채움(fill-in)과 번호 매기기, 반복 풀이기(야코비·가우스-자이델·CG)와 전처리의 차이를 행렬 수준에서 본다.
- 갱신 크기와 잔차 두 가지 수렴 판정, 바이어스 램프·계단 반으로 줄이기·외삽 예측자로 TN-45를 Vg = Vd = 1 V까지 안전하게 데려간다.
격자 위의 방정식은 하나의 큰 비선형 방정식이다
정상 상태 드리프트-확산 모형은 격자점마다 세 개의 방정식을 갖는다. 포아송 방정식, 전자 연속 방정식, 정공 연속 방정식이다(3장). 미지수를 \(\mathbf{u} = (\psi_i, n_i, p_i)\)로 모으면 박스 적분(4장)으로 얻은 이산 방정식은 다음 꼴이 된다.
이 방정식은 두 군데에서 강하게 비선형이다. 캐리어 농도가 전위의 지수 함수(\(n = n_i e^{(\psi-\varphi_n)/V_t}\))이고, 이웃 격자점 사이의 전류도 전위 차의 지수 함수로 들어간다. 지수 함수 하나가 열전압 \(V_t \approx 25.9\) mV마다 \(e\)배씩 바뀌므로 전위가 1 V 바뀌면 농도는 \(e^{38.7} \approx 10^{17}\)배 바뀐다. 이런 방정식을 푸는 일의 거의 전부는 "지수 함수를 어떻게 달래며 따라갈 것인가"다.
전류의 이산화: 중앙 차분이 출렁이는 곳
두 격자점 \(i, i+1\) 사이(간격 \(h\))의 전자 전류를 가장 순진하게 쓰면 이렇다. 전계는 구간에서 일정하고, 농도는 두 점의 평균, 기울기는 차분이다.
\(\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\)를 정확히 적분한다. 그러면 농도는 구간 안에서 지수 함수 모양이 되고, 선속은 베르누이 함수로 쓰인다.
아래 그림은 한 줄의 격자 위에서 전위가 일정하게 기울어 있을 때 전자 연속 방정식(재결합 없음, 양 끝 농도 고정)을 세 가지 방식으로 푼 결과다. 왼쪽 끝 농도를 1, 오른쪽 끝을 0.2로 두었다. 전위 차를 키우거나 칸 수를 줄여 한 칸의 \(\Delta\)를 2 위로 올려 본다.
중앙 차분 대 샤페터-거멜: 한 칸의 전위 차가 2kT/q를 넘으면
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차 테일러 전개로 직선(고차원에서는 초평면)으로 바꾸고, 그 직선의 근으로 건너뛴다.
2차 수렴은 강력하지만 조건이 붙는다. "해 근처에서"다. 멀리서 출발하면 접선이 엉뚱한 곳을 가리킨다. 반도체 방정식의 비선형성은 지수 함수이므로 문제를 하나의 격자점으로 줄여 보면 핵심이 다 보인다. 중성 영역의 한 점에서 포아송 방정식은 전하 중성 조건 \(p - n + N_D = 0\), 곧 정규화 전위 \(u = \psi/V_t\)에 대해 \(2\sinh u = N_D/n_i\)가 된다.
아래 그림에서 가로축의 손잡이(초기값 \(u_0\))를 끌어 본다. 회색 접선이 다음 추정값을 정한다. 왼쪽에서 출발하면 \(\sinh\)가 평평해서 접선이 아주 멀리 건너뛰고, 그 뒤로는 지수 함수의 가파른 벽을 따라 한 번에 거의 1(곧 \(V_t\))씩만 내려온다.
스칼라 뉴턴: 접선, 2차 수렴, 감쇠
여기서 본 두 가지 실패, 곧 "평평한 곳에서 너무 멀리 뛰기"와 "지수 함수 벽을 \(V_t\)씩 기어 내려오기"는 2D 소자에서도 그대로 일어난다. 처방도 같다. 걸음의 크기를 제한하는 감쇠(Damping)다. 반도체 시뮬레이터에서 자주 쓰는 두 가지는 다음과 같다.
1D 포아송 방정식을 뉴턴으로
이제 진짜 격자 문제다. 평형 상태 pn 접합(양쪽 \(10^{18}\) cm⁻³, 길이 600 nm, 121점)의 비선형 포아송 방정식을 뉴턴으로 푼다. 평형이므로 \(\varphi_n = \varphi_p = 0\)이고 미지수는 \(\psi_i\)뿐이다. 노드 \(i\)의 잔차와 야코비안은 이렇게 생긴다.
아래 시뮬레이터는 엔진의 단계형 풀이기 `TC.poissonSolver1d`를 한 반복씩 돌린다. 위 그래프는 현재 반복의 \(\psi(x)\)와 최종 해(점선), 아래 그래프는 반복마다의 갱신 크기 \(\max|\delta\psi|/V_t\)와 잔차다. 방법과 초기값을 바꿔 가며 "한 걸음"과 "끝까지"를 눌러 본다.
pn 접합 포아송: 초기값·감쇠·피카르
네 경우를 나란히 놓으면 교훈이 분명하다. 초기값이 뉴턴의 운명을 정한다. 국소 전하 중성 전위는 중성 영역에서는 이미 정답이고 공핍 영역에서만 틀리므로 거의 모든 시뮬레이터가 평형 풀이의 기본 초기값으로 쓴다. 감쇠는 나쁜 초기값에 대한 보험이다. 피카르 반복(Picard, 고정점 반복)은 야코비안에서 \(\partial(p-n)/\partial\psi\) 항을 버린 것과 같다. 이 항이 바로 공간 전하가 전위 변화를 되밀어 내는 "음의 되먹임"이므로 이를 빼면 고농도에서 반복이 증폭되어 발산한다. 피카르는 저농도·소신호 같은 약한 비선형 문제에서만 쓸 만하다.
결합 뉴턴과 거멜 반복
포아송만 풀 때는 노드마다 미지수가 하나였다. 드리프트-확산 전체를 풀면 노드마다 \((\psi, n, p)\) 세 개가 엮이고 야코비안은 \(3\times3\) 블록 행렬이 된다. 방법은 두 갈래다.
거멜 반복(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 + 오제)를 평형에서 바로 목표 전압으로 풀며 두 방법을 비교한다. 오른쪽 그래프는 바이어스마다의 반복 횟수를 미리 계산해 둔 것이다.
다이오드에서 뉴턴 대 거멜: 반복 횟수와 바이어스
상용 도구가 두 방법을 섞어 쓰는 이유가 여기 있다. 거멜은 한 반복이 싸고(작은 선형 방정식 세 번) 초기값에 관대해서 평형이나 낮은 바이어스의 출발점을 만들기 좋다. 결합 뉴턴은 한 반복이 비싸지만(블록 행렬) 반복 수가 바이어스에 둔감하고 해 근처에서 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 분해에서 새로 채워지는 성분(빨강)이다. 번호 매기는 방식을 바꿔 본다.
희소 행렬과 LU 채움: 번호를 어떻게 매기는가
소거의 비용은 띠 폭에 달려 있다. 반대역폭 \(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}\)을 만든다.
2D 포아송 행렬의 반복 풀이: 야코비·가우스-자이델·SOR·CG·ICCG
드리프트-확산 야코비안은 포아송 행렬보다 훨씬 다루기 어렵다. 연속 방정식 블록은 비대칭이고(드리프트), 대각 성분의 크기가 노드마다 수십 자릿수 차이 나며, 결합 블록 때문에 양정치도 아니다. 그래서 CG 대신 BiCGSTAB이나 GMRES 같은 비대칭 크릴로프 방법에 ILU 전처리를 붙여 쓰고, 행과 열의 크기를 맞추는 스케일링이 필수다. 2D 소자 대부분은 지금도 희소 직접 풀이기가 더 빠르고 튼튼하며, 반복법은 대형 3D 문제에서 주인공이 된다.
언제 멈출 것인가: 갱신 크기와 잔차
뉴턴 반복을 멈추는 기준은 두 종류다. 갱신이 작아졌는가, 방정식이 만족되었는가.
갱신 기준만 쓰면 감쇠가 걸려 걸음이 억지로 작아진 경우를 수렴으로 착각할 수 있다. 잔차 기준만 쓰면 행렬 조건이 나빠 잔차는 작은데 해는 아직 먼 경우를 놓친다. 그래서 둘을 함께 본다. 아래는 다이오드를 결합 뉴턴으로 풀면서 반복마다 단자 전류를 계산한 것이다. 허용 오차를 느슨하게 잡으면 전위는 "거의 맞았는데" 전류가 얼마나 틀리는지 본다.
허용 오차와 전류의 정확도
| 기준 | 장점 | 속는 경우 | 대표 값 |
|---|---|---|---|
| 전위 갱신 \(\|\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}\)를 바꿔 본다.
TN-45: 평형에서 한 번에 뛰기와 감쇠
갱신이 \(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)로 만든다. 앞의 두 해로 다음 해를 선형 외삽한다.
수렴 실패의 유형과 처방
실무에서 만나는 수렴 실패는 대부분 아래 몇 가지로 정리된다. 진단의 첫걸음은 반복마다의 갱신과 잔차 기록(이 장의 아래쪽 그래프들)을 보는 것이다.
| 증상 | 흔한 원인 | 처방 |
|---|---|---|
| 첫 한두 반복에 갱신이 수 V로 튀고 NaN | 나쁜 초기값, 감쇠 없음 | 중성 전위 초기값, 로그 감쇠·갱신 상한, 거멜로 시작 |
| 갱신이 \(V_t\) 근처에서 오래 머문다 | 지수 함수 벽을 따라 내려오는 중(과도한 첫 걸음) | 노드별 로그 감쇠, 초기값에서 접촉 전위 이동, 작은 바이어스 간격 |
| 갱신이 줄었다 늘었다 진동 | 속도 포화·이동도의 전계 의존성 미분 누락, 야코비안 오류 | 야코비안 검증(유한 차분과 비교), 해 근처에서만 전체 미분 사용 |
| 선형적으로 아주 느린 수렴 | 거멜에서 강한 결합(고주입), 부정확한 야코비안 | 결합 뉴턴으로 전환 |
| 특정 바이어스 이상에서 항상 실패 | 항복(충돌 이온화), 래치업, 음의 미분 저항 같은 물리적 전환점 | 전류 경계 조건, 직렬 저항을 단 전압원, 호 길이 연속법 |
| 선형 풀이기 경고(특이 행렬) | 떠 있는 영역(접촉 없는 도체), 0 이동도, 피벗 실패 | 구조·접촉 확인, 스케일링, 피벗 있는 풀이기 |
| 잔차는 작은데 결과가 격자에 따라 크게 달라짐 | 수렴 문제가 아니라 이산화 오차 | 격자 세분(4장) |
종합: TN-45 게이트 램프 설계
이제 지금까지의 도구를 모두 손에 쥐고 TN-45의 Id-Vg 곡선을 실제로 계산한다. 출발점은 Vg = 0, 주어진 Vd에서 수렴한 해다. 게이트를 0에서 1 V까지 올리는데, 바이어스 간격, 다음 점의 초기값을 만드는 방법, 감쇠, 실패할 때의 계단 반으로 줄이기를 직접 고른다. 위 그래프는 계산되는 대로 그려지는 Id-Vg(로그), 아래는 시도한 점마다의 뉴턴 반복 수다(빨강은 실패한 시도). 초기값 방법은 셋이다.
- 이전 해 그대로: 앞 점의 해를 그대로 초기값으로 쓴다. 게이트 접촉만 새 전압으로 바뀐다.
- 게이트 전위 이동: 앞 점의 해에서 다결정 실리콘 게이트 안쪽 전위를 \(\Delta V_g\)만큼 미리 올려 둔다(게이트 전체가 같이 움직인다는 물리를 초기값에 넣는다).
- 외삽 예측: 앞의 두 해로 \(\psi\)와 \(\ln n\)을 선형 외삽한다(`TC.sweep2d`의 방식). 앞 해가 하나뿐인 첫 점은 게이트 전위 이동을 쓴다.
바이어스 램프 실험실: 간격 · 초기값 · 감쇠 · 계단 반으로
네 가지 손잡이가 서로 어떻게 맞물리는지 정리하면 이렇다. 감쇠는 나쁜 초기값으로부터 발산을 막지만 걸음을 잘라 반복을 늘린다. 계단 반으로 줄이기는 실패를 성공으로 바꾸지만 실패한 시도의 반복을 버린다. 좋은 초기값(물리를 넣은 이동, 외삽)은 둘 다 필요 없게 만든다. 실무 설정은 "작지 않은 간격 + 외삽 예측 + 가벼운 감쇠 + 계단 반으로 줄이기를 보험으로"다. 이 결론은 TN-45 하나의 것이 아니라 거의 모든 소자 시뮬레이션에 통한다.
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회에 끝난다). 그래서 간격은 "작게"가 아니라 "실패하면 줄이는" 규칙으로 정한다.
핵심 정리
- 격자 위의 드리프트-확산 방정식은 노드마다 (ψ, n, p)가 엮인 큰 비선형 방정식 F(u) = 0이다. 비선형성의 근원은 농도와 전류가 전위의 지수 함수라는 데 있다.
- 중앙 차분 전류는 한 칸의 전위 차가 2kT/q를 넘으면 이웃 계수가 음수가 되어 해가 출렁인다. 샤페터-거멜 이산화는 구간에서 전류를 정확히 적분해 베르누이 함수 B(x) = x/(eˣ − 1)로 선속을 쓰고, 확산과 상류 드리프트 사이를 매끄럽게 잇는다.
- 뉴턴 방법은 야코비안으로 선형화해 건너뛰며 해 근처에서 2차 수렴한다. 멀리서는 과도한 걸음과 지수 함수 벽(Vt씩 내려오기)으로 무너지므로 좋은 초기값(국소 중성 전위)과 감쇠(로그 감쇠, 갱신 상한)가 필요하다.
- 피카르(전하 얼리기)는 공간 전하의 음의 되먹임을 버려 고농도에서 발산한다. 거멜 반복은 포아송과 연속 방정식을 번갈아 풀어 한 반복이 싸고 저전류에서 좋지만, 결합이 강한 고주입·고전계에서 선형 수렴으로 느려진다.
- 뉴턴 한 반복의 핵심 비용은 희소 선형 방정식이다. 직접법(띠·희소 LU)은 번호 매기기에 따라 채움이 크게 달라진다. 반복법은 야코비·가우스-자이델이 O(n²), CG가 O(n) 반복이고 전처리(ILU, IC)가 반복을 더 줄인다. DD 야코비안은 비대칭이라 BiCGSTAB·GMRES를 쓴다.
- 수렴 판정은 Vt 단위의 전위 갱신과 스케일된 잔차를 함께 본다. 0.1 Vt의 전위 오차는 약 10%의 전류 오차다. 2차 수렴 덕분에 엄격한 허용 오차의 비용은 한두 반복이다.
- 바이어스는 연속법으로 올린다. 실패하면 간격을 반으로 줄이고, 외삽 예측자나 물리를 넣은 초기값(게이트 전위 이동)으로 반복을 크게 줄인다. TN-45를 평형에서 Vg = Vd = 1 V로 한 번에 뛰면 감쇠 없이는 수렴하지 못하고, 상한 0.5 V면 19회 만에 수렴한다.
확인 퀴즈
공핍층에 걸친 1 V를 균일 격자 20칸으로 나누었다(300 K). 전자 전류를 중앙 차분으로 이산화하면 어떤 일이 예상되는가?
평형 pn 접합의 포아송 방정식을 모든 노드 ψ = 0에서 출발해 감쇠 없는 뉴턴으로 풀었더니 두 번째 반복에서 NaN이 나왔다. 가장 적절한 처방은?
다이오드를 높은 순방향 바이어스(고주입)에서 풀 때 거멜 반복이 결합 뉴턴보다 훨씬 많은 반복을 필요로 하는 이유는?
TN-45 Id-Vg 스윕에서 점마다 뉴턴이 20회씩 걸린다. 반복 기록을 보니 갱신이 약 26 mV에서 오래 머문다. 반복을 가장 크게 줄일 방법은?