Chapter 16

변동·신뢰성·테스트

지금까지 우리는 트랜지스터가 설계도에 적힌 그대로 만들어진다고 가정했다. 실제로는 그렇지 않다. 같은 웨이퍼에서 나온 칩 두 개를 재 보면 한쪽이 10~20 % 빠르고, 같은 칩 안에서도 바로 옆 트랜지스터끼리 문턱 전압이 수십 mV 다르다. 칩은 뜨거워졌다 식고, 전압은 출렁이고, 10년을 쓰면 트랜지스터가 늙어 느려진다. 우주에서 날아온 중성자가 SRAM 비트를 뒤집기도 하고, 공장에서 나올 때부터 어딘가 선이 끊긴 칩도 섞여 있다. 이 장은 디지털 설계가 이런 불완전함을 어떻게 견디는지 다룬다. 변동을 통계로 다루고(코너와 몬테카를로), 시간에 따른 고장을 미리 계산하고(노화·전자 이동·소프트 에러), 망가진 비트는 부호로 고치고(ECC), 망가진 칩은 출하 전에 걸러 낸다(테스트).

같은 설계, 다른 칩: 변동의 세 얼굴

공장은 설계도를 완벽하게 복사하지 못한다. 7 nm급 트랜지스터의 채널에는 도펀트 원자가 고작 수십~수백 개 들어 있고, 게이트 길이는 원자 수십 개 폭이다. 원자 몇 개가 더 들어가거나 빠지고, 노광이 1 nm 어긋나고, 식각이 조금 더 깊어지면 트랜지스터의 성질이 달라진다. 디지털 설계자는 이 차이를 세 축으로 나눠 부른다.

공정 변동은 다시 두 종류로 갈린다. 전역 변동(Global, die-to-die variation)은 웨이퍼나 다이 전체가 함께 움직이는 성분이다. 어떤 웨이퍼는 노광 초점이 살짝 어긋나 그 위의 모든 트랜지스터가 함께 느리다. 반면 국소 변동(Local, within-die mismatch)은 바로 옆에 붙은 두 트랜지스터 사이의 무작위 차이다. 대표 원인은 무작위 도펀트 요동(RDF, Random Dopant Fluctuation), 게이트 가장자리의 선 가장자리 거칠기(LER), 금속 게이트의 결정립 방향 차이다. 개수가 적은 것을 셀 때 생기는 통계적 요동이라, 트랜지스터가 작을수록 커진다.

아래 그림은 웨이퍼에서 다이 네 개를 꺼내 각 다이에 있는 트랜지스터 48개의 \(V_t\)를 색으로 칠한 것이다. 파랑은 \(V_t\)가 낮아 빠른 소자, 빨강은 높아 느린 소자다.

표본
국소 \(\sigma_{V_t}\) (Pelgrom)—
전역 \(\sigma_{V_t}\)—
전체 \(\sigma_{V_t}\)—
이웃 소자 쌍 차이 \(\sigma_{\Delta V_t}\)—
그림 16-1. 해 보기전역 변동을 0으로 내리면 네 다이의 평균 색이 같아지고 다이 안의 얼룩(국소 변동)만 남는다. 소자 면적을 4배 키우면 국소 \(\sigma\)는 정확히 절반이 된다(\(1/\sqrt{WL}\)). 그러나 전역 변동은 면적을 키워도 줄지 않는다. 아래 히스토그램의 작은 삼각형은 각 다이의 평균 \(V_t\)다. 교육용 모델: 공칭 \(V_t\)=300 mV, \(A_{V_t}\)≈1.1 mV·µm, 최소 소자 \(W\!L\)≈0.0013 µm².

국소 변동의 크기는 1989년 Marcel Pelgrom이 정리한 간단한 법칙을 따른다. 채널 아래의 도펀트 개수를 \(n\)이라 하면 그 요동은 \(\sqrt{n}\)이고 상대 요동은 \(1/\sqrt{n}\)이다. \(n\)은 채널 면적에 비례하므로 \(V_t\)의 표준 편차는 면적의 제곱근에 반비례한다.

$$\sigma(V_t) = \frac{A_{V_t}}{\sqrt{W L}}, \qquad \sigma(\Delta V_t)_{\text{쌍}} = \sqrt{2}\,\sigma(V_t)$$
\(A_{V_t}\): Pelgrom 계수(공정마다 다르며 FinFET에서 약 1~1.5 mV·µm), \(W\!L\): 채널 면적. 두 소자의 차이 \(\Delta V_t\)는 독립 변수 두 개의 차이라 \(\sqrt{2}\)배가 된다.

이 법칙이 디지털 설계에 주는 교훈은 분명하다. 최소 크기 소자가 가장 들쭉날쭉하다. 그래서 크기를 줄일 수 없는 SRAM 셀(13장)과 감지 증폭기, 그리고 짝 맞춤이 중요한 아날로그 회로가 국소 변동에 가장 시달린다. 반대로 수십 단을 지나는 논리 경로는 단마다의 무작위 오차가 서로 상쇄되어 훨씬 덜 민감하다. 이 상쇄를 3절의 몬테카를로에서 직접 확인한다.

FinFET에서 \(W\)는 정수다

평면 트랜지스터는 폭 \(W\)를 연속으로 키울 수 있었지만, FinFET은 핀 개수로만 폭을 정한다. 핀 하나짜리 소자가 가장 작고 가장 변동이 크다. 반면 FinFET은 채널을 거의 도핑하지 않아 무작위 도펀트 요동은 평면 소자보다 줄었고, 대신 핀 폭·높이의 요동과 금속 게이트의 일함수 요동(결정립)이 주된 원인이 되었다. 소자 물리는 DeviceBook, 공정에서 변동이 생기는 과정은 ProcessBook에서 다룬다.

PVT 코너: 최악을 몇 개의 점으로

모든 칩의 모든 조건을 시뮬레이션할 수는 없다. 그래서 설계 흐름은 변동 공간의 모서리 몇 개만 골라 검증한다. 공정 쪽은 nMOS와 pMOS 각각이 느린지(S, Slow) 빠른지(F, Fast)로 다섯 점을 둔다. TT(둘 다 보통), SS(둘 다 느림), FF(둘 다 빠름), 그리고 nMOS·pMOS가 엇갈린 SF·FS다(첫 글자가 nMOS). 여기에 전압(공칭의 ±10 %)과 온도(−40 °C, 25 °C, 125 °C)를 곱하면 PVT 코너(PVT corner)가 된다.

"느린 공정"이란 구체적으로 \(V_t\)가 높고 이동도가 낮다는 뜻이다. 아래 그림은 DG-7 기준 공정의 트랜지스터 모델(3장)에 코너별 \(V_t\) 이동(±25 mV)과 이동도 변화(±6 %), 그리고 온도에 따른 \(V_t\)·이동도·부문턱 기울기 변화를 직접 넣어 FO4 인버터 지연과 누설 전류를 계산한다.

공정 코너 (nMOS·pMOS)
FO4 지연—
TT·0.75 V·25 °C 대비—
nMOS 누설 (단위 폭)—
누설 TT 대비—
그림 16-2. 해 보기왼쪽은 nMOS·pMOS 구동 전류로 본 코너 지도(점선 사각형이 공정 분포의 ±3σ 경계), 오른쪽은 선택한 코너의 FO4 지연을 온도에 따라 그린 것이다(점선은 TT). 전압을 0.75 V에서 0.5 V로 천천히 내리면서 오른쪽 곡선의 기울기가 어떻게 바뀌는지 보자. 누설은 FF·125 °C에서 TT·25 °C의 백 배를 넘는다. 교육용 모델: \(dV_t/dT\)≈−0.8 mV/°C, 이동도 \(\propto T^{-1.3}\), 부문턱 기울기 \(\propto T\).

코너마다 검증하는 성질이 다르다. 가장 느린 SS·저전압·고온은 setup(최대 클럭)을, 가장 빠른 FF·고전압·저온은 hold를 검사한다(10장). 데이터가 너무 빨리 도착해 생기는 hold 위반은 클럭을 늦춰도 고쳐지지 않으므로 빠른 코너 검증이 오히려 더 무섭다. FF·고온은 누설 전력과 전자 이동, SF·FS는 nMOS와 pMOS의 힘겨루기에 의존하는 회로, 즉 SRAM 쓰기·읽기 여유(13장)와 레벨 시프터, 비율 논리의 검증에 쓴다.

뜨거울수록 빨라지는 칩?

온도가 오르면 이동도가 떨어져 전류가 준다. 동시에 \(V_t\)도 내려가 전류가 는다. 공급 전압을 0.5 V까지 낮추면 125 °C의 칩은 −40 °C의 칩보다 빠를까, 느릴까?

답 보기

빠르다. −40 °C에서 125 °C로 가면 이 모델에서 이동도는 약 절반이 되고 \(V_t\)는 약 130 mV 내려간다. 과구동 전압 \(V_{DD}-V_t\)가 작을수록 같은 \(V_t\) 하락의 효과가 상대적으로 크다. 0.75 V에서는 과구동이 약 1.3배 느는 데 그쳐 전류가 약 0.7배로 줄지만, 0.5 V에서는 과구동이 거의 2배가 되어 이동도 감소를 압도하고 전류가 오히려 는다. 그림 16-2에서 두 효과가 맞비기는 전압(약 0.55 V)을 찾을 수 있다.

온도 역전: 최악 코너가 바뀐다

낮은 전압에서는 차가울 때가 더 느리다. 이 온도 역전(Temperature inversion) 때문에 최신 공정의 저전압 설계는 "SS·125 °C 하나만 보면 된다"는 옛 규칙이 통하지 않고, SS·−40 °C 코너를 함께 검증해야 한다. DVFS(15장)로 전압을 넓게 오르내리는 칩은 높은 전압에서는 고온이, 낮은 전압에서는 저온이 최악이라 코너 수가 두 배로 는다.

실제 설계에서 쓰는 대표적인 코너 조합을 DG-7 공정의 수치로 옮기면 아래와 같다. 실제 공정의 사인오프 코너는 이보다 훨씬 많아 수십 개에 이르고, 여기에 노화와 국소 변동 여유(OCV)가 더해진다.

코너공정전압온도주로 검증하는 것
최악 지연(고온)SS0.9×VDD = 0.675 V125 °Csetup, 최대 클럭 (높은 전압 영역)
최악 지연(저온)SS0.9×VDD = 0.675 V−40 °Csetup (저전압·온도 역전 영역)
최선 지연FF1.1×VDD = 0.825 V−40 °Chold, 최소 지연, 글리치
최대 누설FF1.1×VDD = 0.825 V125 °C누설 전력, 전원망 IR, 전자 이동, 발열
공칭TT1.0×VDD = 0.75 V25 / 85 °C평균 전력, 성능 예측
엇갈림SF / FS0.9~1.1×VDD−40 / 125 °CSRAM 읽기·쓰기 여유, 레벨 시프터, 비율 회로

몬테카를로: 수천 개의 칩을 미리 만들어 보기

코너는 빠르지만 거칠다. 모든 소자가 동시에 최악일 확률은 거의 0이므로 코너 설계는 비관적이고, 반대로 국소 변동처럼 소자마다 따로 노는 성분은 코너로 표현할 수 없다. 더 정직한 방법은 통계 모델에서 칩을 무작위로 수천 개 "만들어" 보는 것이다. 이것이 몬테카를로 시뮬레이션(Monte Carlo simulation)이다.

아래 시뮬레이터는 게이트 \(N\)개짜리 임계 경로를 가진 칩을 4,000개 뽑는다. 칩마다 전역 변동 하나를 뽑아 모든 게이트에 똑같이 곱하고, 게이트마다 국소 변동을 따로 뽑아 더한다. 칩에는 이런 임계 경로가 \(M\)개 있고, 칩의 속도는 그중 가장 느린 경로가 정한다.

SIMULATOR

경로 지연 분포와 수율, 클럭 binning

표본
평균 경로 지연 μ—
상대 산포 σ/μ—
목표 주기에서 수율—
고속 bin—
표준 bin—
저속 bin / 폐기—
교육용 모델: 게이트 하나의 공칭 지연은 FO4 = 7.5 ps. 칩 \(c\)의 경로 \(j\) 지연은 \(N d_0 (1+\sigma_g z_c) + d_0 \sigma_l \sqrt{N}\, z_{cj}\)이고, 칩 지연은 \(M\)개 경로 중 최댓값이다(최댓값은 \(u^{1/M}\)의 역정규 변환으로 정확히 뽑는다). bin 경계: 고속 ≤ 0.95 T, 표준 ≤ T, 저속 ≤ 1.15 T, 그 너머는 폐기. 오른쪽(좁은 화면에서는 아래) 그래프는 \(N\)에 따른 상대 산포.

먼저 전역 변동을 0으로 두고 \(N\)을 1에서 80으로 늘려 보자. 히스토그램의 상대 폭이 빠르게 좁아진다. 서로 독립인 오차 \(N\)개를 더하면 평균은 \(N\)배가 되지만 표준 편차는 \(\sqrt{N}\)배밖에 늘지 않기 때문이다. 그래서 상대 산포는 \(1/\sqrt{N}\)로 준다. 반면 전역 변동은 모든 게이트를 같은 방향으로 밀기 때문에 아무리 길어도 평균화되지 않는다.

$$\frac{\sigma_{\text{경로}}}{\mu_{\text{경로}}} = \sqrt{\sigma_g^2 + \frac{\sigma_l^2}{N}}$$
\(\sigma_l\): 게이트 하나의 국소 상대 산포, \(\sigma_g\): 칩 전체가 공유하는 전역 상대 산포, \(N\): 경로의 논리 깊이. 긴 경로에서는 전역 항이, 짧은 경로(그리고 SRAM 셀 하나)에서는 국소 항이 지배한다.
임계 경로가 하나에서 천 개로 늘면?

지연 분포가 똑같은 독립 경로가 칩 안에 1,000개 있다. 칩 지연은 가장 느린 경로가 정한다. 칩 지연 분포의 평균은 어디로 가고, 폭은 어떻게 될까?

답 보기

평균이 국소 산포의 약 3배(정규 분포 1,000개 표본의 최댓값 기대치 ≈ 3.2σ)만큼 오른쪽으로 밀리고, 분포는 오히려 좁아진다. 최댓값은 꼬리 쪽에서 뽑히기 때문이다. 시뮬레이터에서 \(M\)을 끝까지 올려 보면 히스토그램이 통째로 오른쪽으로 이동하며 수율이 뚝 떨어진다. 실제 칩에는 거의 임계에 가까운 경로가 수천~수만 개 있으므로, 경로 하나만 보고 수율을 예측하면 크게 낙관하게 된다.

같은 웨이퍼에서 나온 칩이 이렇게 다르다면, 모두 같은 클럭으로 팔 필요가 없다. 출하 테스트에서 칩마다 통과하는 최고 주파수를 재서 등급을 나누는 것을 속도 binning(Speed binning)이라 한다. 같은 다이가 고급 모델과 보급 모델로 나뉘어 팔리는 이유다. 반대로 최고 주파수는 충분하지만 누설이 너무 큰 칩(대개 빠른 쪽 꼬리)은 전력 bin에서 걸러진다. 빠른 칩은 전압을 조금 낮춰도 목표 주파수를 맞추므로, 칩마다 공급 전압을 따로 정해 퓨즈에 굽는 AVS(Adaptive Voltage Scaling)도 흔히 쓴다.

코너, OCV, 그리고 통계적 타이밍

실무에서는 전역 변동을 코너로, 국소 변동을 OCV(On-Chip Variation) 여유로 나눠 처리한다. 초기 OCV는 모든 지연에 "±5 %" 같은 고정 비율을 곱했지만, 이는 긴 경로를 지나치게 비관한다. 그래서 위 공식처럼 깊이에 따라 여유를 줄이는 AOCV, 셀마다 지연 분포의 표준 편차를 표로 주는 POCV/LVF가 나왔다. 셀 라이브러리와 사인오프 흐름은 DesignBook, 웨이퍼 수율의 통계는 YieldBook을 참고한다.

노화: 칩은 쓸수록 느려진다

공정 변동은 태어날 때 정해지지만, 트랜지스터의 성질은 쓰는 동안에도 조금씩 변한다. 대표적인 두 가지 노화 기구가 있다.

둘 다 \(V_t\) 이동이 시간의 거듭제곱 \(t^n\)을 따른다. 지수 \(n\)이 1보다 작아서 처음 몇 시간~며칠에 빠르게 늘고 그 뒤로는 천천히 는다. 로그 시간축으로 그리면 직선에 가깝다.

노화 기구
10년 후 \(\Delta V_t\)—
10년 후 지연 증가—
가드밴드 소진 시점—
그림 16-3. 해 보기위 그래프는 \(V_t\) 이동, 아래는 그에 따른 인버터 지연 증가(DG-7 모델, 스트레스 전압·온도에서 동작한다고 가정)다. 가로축은 1시간에서 10년까지의 로그 시간이다. 점선 수평선이 설계 때 미리 떼어 둔 가드밴드이고, 곡선이 그 선을 넘는 시점이 이 칩의 타이밍 수명이다. 스트레스 전압을 0.05 V만 올려도 수명이 몇 배 짧아진다. 교육용 모델: NBTI \(\Delta V_t \propto e^{\gamma V} e^{-E_a/kT} t^{0.18}\), HCI \(\propto \alpha^{0.45} e^{\gamma' V} t^{0.45}\).

설계는 이 늙음을 미리 계산해 지연 여유, 곧 가드밴드(Guardband)를 둔다. 수명 말기의 \(V_t\)로 특성화한 "노화 라이브러리"로 타이밍을 검증하는 방식이다. 가드밴드는 공짜가 아니다. 5 %의 여유는 5 % 낮은 클럭이거나 그만큼 높은 전압, 곧 10 % 가까운 전력이다. 그래서 최신 칩은 칩 안에 링 오실레이터나 경로 복제 회로 같은 노화 감시기를 두고, 늙은 만큼만 전압을 올려 주는 적응형 방식을 쓴다.

초기 고장 제조 결함 · 번인으로 걸러 냄 우발 고장 (낮고 평평) 소프트 에러 · 정전기 · 무작위 마모 고장 노화 · 전자 이동 · 산화막 파괴 사용 시간 → 고장률
그림 16-4. 칩 고장률의 욕조 곡선(Bathtub curve). 처음에는 제조 결함을 가진 약한 칩이 빨리 죽고, 긴 평지 동안 무작위 고장이 드물게 일어나다, 수명 말기에 마모 기구가 고장률을 다시 끌어올린다. 출하 전 고온·고전압으로 몇 시간 돌려 약한 칩을 미리 죽이는 번인(Burn-in)은 왼쪽 벽을 공장 안에서 지나 보내는 일이다. 고장 분석은 FailureBook에서 자세히 다룬다.

전자 이동과 자기 발열: 배선도 늙는다

배선 속 전자는 흐르면서 금속 원자와 부딪혀 운동량을 넘겨준다. 전류 밀도가 높으면 이 "전자 바람"이 원자를 실제로 조금씩 밀어 옮긴다. 이것이 전자 이동(Electromigration, EM)이다. 원자가 빠져나간 곳(전자가 들어오는 음극 쪽)에는 빈 공간, 곧 보이드(Void)가 자라 저항이 오르다 결국 선이 끊기고, 원자가 쌓인 곳(양극 쪽)에는 힐록(Hillock)이 솟아 옆 선과 붙기도 한다.

자기 발열 (\(\Delta T \propto J^2\))
배선
금속 온도—
평균 수명 MTTF—
경과 (가속 재생)—
저항 증가—
그림 16-5. 해 보기구리 배선을 1초에 2년씩 빠르게 돌려 본다. 전자(작은 점)는 오른쪽 음극에서 들어와 왼쪽으로 흐르며 원자를 왼쪽으로 민다. 오른쪽 끝에 보이드가 자라고 왼쪽 끝에 힐록이 쌓인다. 전류 밀도를 두 배로 하면 수명은 4배 짧아지고, 자기 발열을 반영하면 그보다 훨씬 더 짧아진다. 교육용 모델: 블랙 방정식, \(n\)=2, \(E_a\)=0.9 eV, 1 MA/cm²·105 °C에서 MTTF 약 10년으로 맞춤.

전자 이동 수명은 1969년 James Black이 실험으로 찾은 식을 따른다. 전류 밀도에는 거듭제곱으로, 온도에는 아레니우스 지수로 민감하다.

$$\text{MTTF} = A\,J^{-n}\,\exp\!\left(\frac{E_a}{k T}\right)$$
\(J\): 전류 밀도(A/cm²), \(n\): 보통 1~2, \(E_a\): 활성화 에너지(구리 약 0.8~1.0 eV), \(k\): 볼츠만 상수, \(T\): 금속의 절대 온도. 105 °C에서 125 °C로 20 °C만 올라도 수명이 약 3분의 1로 준다.

여기에 자기 발열(Self-heating, Joule heating)이 겹친다. 배선의 발열은 \(I^2R\), 즉 \(J^2\)에 비례하고, 주변의 저유전율 절연막은 열을 잘 전하지 못한다. 전류를 늘리면 온도가 오르고, 온도가 오르면 수명이 지수적으로 줄어드는 이중 타격이다. FinFET은 채널이 좁은 핀 속에 갇혀 트랜지스터 자체의 자기 발열도 평면 소자보다 크다.

설계 흐름은 배선 폭과 층마다 허용 전류 밀도를 정하고, 전원망과 클럭망처럼 늘 한 방향으로 큰 전류가 흐르는 배선을 특히 엄격히 검사한다. 신호선처럼 전류가 양방향으로 번갈아 흐르면 원자가 밀렸다 돌아오는 회복 효과가 있어 허용치가 몇 배 높다. 배선의 RC 성질은 14장에서 다뤘다.

소프트 에러: 하늘에서 떨어지는 비트 반전

칩 패키지의 납땜과 재료에 섞인 극미량의 방사성 동위원소가 내는 알파 입자, 그리고 우주선이 대기와 부딪혀 만든 고에너지 중성자가 실리콘을 지나가면, 그 궤적을 따라 전자-정공 쌍이 만들어진다. 이 전하가 저장 노드의 드레인으로 모이면 짧은 전류 펄스가 되어 노드 전압을 끌어내린다. 노드가 충분히 내려가면 래치의 되먹임이 거꾸로 돌아 저장된 비트가 뒤집힌다. 칩은 망가지지 않았지만 값이 틀렸다. 그래서 소프트 에러(Soft error, SEU: Single-Event Upset)라 한다.

입자 하나 쏘기 (전하는 무작위)
결과—
\(C\cdot V_{DD}\)—
실제 임계 전하 \(Q_{crit}\)—
추정 SER—
그림 16-6. 해 보기SRAM 셀의 교차 결합 인버터 쌍에서 1을 저장한 노드 Q에 입자가 부딪힌다. 오른쪽 그래프는 DG-7 트랜지스터 모델로 두 노드 전압을 직접 적분한 것이다. 전하를 조금씩 올려 Q와 QB가 교차하는 순간을 찾아보자. 그 경계가 임계 전하다. 커패시턴스나 전압을 낮추면 임계 전하가 줄어든다. 교육용 모델: 전류 펄스는 상승 2 ps·하강 12 ps의 이중 지수, 풀다운 nMOS 1.5배·풀업 pMOS 1배 폭. SER은 해수면 기준 \(\propto e^{-Q_{crit}/Q_s}\)의 대략값.

단순한 그림으로는 노드에 저장된 전하 \(C V_{DD}\)를 다 빼앗기면 뒤집힌다고 볼 수 있다. 그러나 실제로는 반대편 인버터가 그동안에도 노드를 다시 채우므로, 그림 16-6에서 계산한 임계 전하는 \(CV_{DD}\)보다 크다. 펄스가 짧고 복원 트랜지스터가 약할수록 \(CV_{DD}\)에 가까워진다.

$$Q_{crit} \approx C_{node} V_{DD} + I_{restore}\, t_{pulse}, \qquad \text{SER} \propto \Phi \cdot A_{diff} \cdot e^{-Q_{crit}/Q_s}$$
\(\Phi\): 입자 플럭스, \(A_{diff}\): 전하를 모으는 확산 영역 면적, \(Q_s\): 공정의 전하 수집 효율을 나타내는 상수. 1 FIT = \(10^9\) 소자·시간당 고장 1회.

미세화는 소프트 에러에 양면적이다. 셀이 작아지면 \(C\)와 \(V_{DD}\)가 줄어 \(Q_{crit}\)가 떨어지지만, 전하를 모으는 면적도 줄어 셀 하나에 입자가 맞을 확률이 준다. FinFET은 좁은 핀이 전하를 덜 모아 비트당 SER이 평면 소자보다 크게 낮아졌다. 대신 칩 하나의 비트 수가 기하급수로 늘고, 입자 하나가 이웃한 여러 비트를 한꺼번에 뒤집는 다중 비트 반전(MBU)의 비율이 커졌다.

항목대략값비고
해수면 중성자 플럭스(>10 MeV)약 13 /cm²·hJEDEC JESD89 기준(뉴욕)
덴버(해발 1.6 km)약 3~4배고도가 높을수록 대기 차폐가 준다
항공기 순항 고도(10~12 km)약 300배항공 전자 장비는 ECC·삼중화 필수
SRAM SER, 평면 40~28 nm약 수백~1,000 FIT/Mbit2010년 전후 보고값, 공정·설계에 따라 큼
SRAM SER, FinFET 16~7 nm약 수십 FIT/Mbit 이하2015~2020년 보고값, 핀이 전하 수집을 줄임
예: 64 MB 캐시 × 100 FIT/Mbit약 51,000 FIT칩 하나에 약 2년에 한 번, 서버 10만 대면 하루 수십 번
논리 회로도 맞지만, 덜 아프다

조합 논리의 노드에 입자가 맞으면 짧은 글리치(SET)가 생긴다. 하지만 이 글리치가 실제 오류가 되려면 세 관문을 통과해야 한다. 경로의 다른 입력이 그 글리치를 막지 않아야 하고(논리 차폐), 여러 단을 지나며 펄스가 사라지지 않아야 하고(전기적 차폐), 하필 플립플롭의 샘플링 창에 도착해야 한다(시간 차폐, 8장). 그래서 칩 SER의 대부분은 SRAM과 플립플롭 자체에서 나오고, 가장 많은 비트를 가진 SRAM은 ECC로 지킨다.

오류 정정 부호: 뒤집힌 비트를 스스로 찾아 고치기

소프트 에러를 막을 수 없다면 고치면 된다. 가장 단순한 방법은 데이터 옆에 패리티 비트 하나를 더 저장하는 것이다. 1의 개수가 짝수가 되도록 맞춰 두면 한 비트가 뒤집혔을 때 홀수가 되어 오류를 검출할 수 있다. 그러나 어느 비트인지는 모른다. 1950년 Richard Hamming은 패리티를 여러 개, 서로 겹치는 비트 묶음에 걸어 두면 어느 검사가 실패했는지의 조합으로 오류 위치를 정확히 짚을 수 있음을 보였다.

해밍(7,4) 부호는 데이터 4비트에 패리티 3비트를 붙인다. 비트 위치를 1~7로 번호 매기고, 위치 번호의 2진수에서 1번째 자리가 1인 위치(1, 3, 5, 7)를 \(p_1\)이, 2번째 자리가 1인 위치(2, 3, 6, 7)를 \(p_2\)가, 3번째 자리가 1인 위치(4, 5, 6, 7)를 \(p_4\)가 검사한다. 받은 쪽에서 세 검사를 다시 해 실패한 검사를 2진수로 읽으면, 그 값 신드롬(Syndrome)이 바로 뒤집힌 비트의 위치다.

SIMULATOR

해밍(7,4)과 SECDED(8,4): 인코딩·오류 주입·신드롬·정정

부호
데이터 비트 d₁…d₄ (눌러서 바꾸기)
오류 주입 (그림의 비트를 눌러도 뒤집힌다)
신드롬 s₄s₂s₁—
전체 패리티 검사—
디코더 판정—
복원 데이터 / 원래—
왼쪽(좁은 화면에서는 위) 벤 다이어그램의 세 원이 세 패리티 검사다. 각 원 안의 1의 개수가 짝수여야 한다. 홀수가 된 원은 빨갛게 표시된다. 오류 위치는 "빨간 원 모두에 들어 있고, 초록 원에는 하나도 들어 있지 않은" 칸이다. SECDED는 위치 0에 전체 패리티 \(p_0\)를 하나 더 둔다. 실제 메모리는 64비트 데이터에 8비트를 붙인 (72,64) SECDED를 가장 많이 쓴다.

한 비트를 뒤집으면 해밍 부호는 언제나 정확히 고친다. 두 비트를 뒤집어 보자. 신드롬이 0이 아니므로 디코더는 "한 비트 오류"라 믿고 엉뚱한 세 번째 비트를 뒤집는다. 데이터가 오히려 더 망가진다. 이것이 오정정(Miscorrection)이다. SECDED(Single Error Correction, Double Error Detection)는 전체 패리티 비트 하나로 이 둘을 구분한다. 오류가 홀수 개면 전체 패리티가 깨지고, 짝수 개면 그대로다. 신드롬은 0이 아닌데 전체 패리티가 맞으면 "두 비트 오류, 정정 불가"를 선언하고 상위 시스템에 알린다.

$$2^{r} \ge m + r + 1 \quad(\text{SEC}), \qquad \text{SECDED: } r+1 \text{ 비트}$$
\(m\): 데이터 비트 수, \(r\): 패리티 비트 수. 신드롬 \(r\)비트로 "오류 없음" 하나와 \(m+r\)개의 오류 위치를 모두 구분해야 한다. \(m\)=4 → \(r\)=3, \(m\)=64 → \(r\)=7(SECDED는 8), 부담은 12.5 %다.
세 비트가 한꺼번에 뒤집히면 SECDED는?

SECDED(8,4)에서 세 비트를 뒤집으면 디코더는 무엇이라고 판정할까?

답 보기

오류가 홀수 개이므로 전체 패리티가 깨져 디코더는 "한 비트 오류"로 판단하고 신드롬이 가리키는 비트를 뒤집는다. 결과는 대개 오정정이다. 신드롬이 0이 되면 오류가 \(p_0\)에 있다고 판단해 데이터는 손대지 않지만 역시 틀린 데이터가 나간다. SECDED의 보장은 "두 개까지"다. 다중 비트 반전에 대비해 메모리는 이웃 비트를 서로 다른 ECC 워드에 흩어 두는 인터리빙을 함께 쓴다. 시뮬레이터의 "무작위 3비트" 버튼으로 확인해 보자.

ECC 회로의 비용과 스크러빙

인코더는 XOR 트리일 뿐이고, 디코더는 신드롬 XOR 트리 + 3→8 디코더 + 정정용 XOR다(12장의 XOR 트리와 같은 구조). (72,64) 디코더는 XOR 몇 단이라 캐시 읽기 경로에 1 사이클 안쪽으로 들어간다. 오래 읽지 않는 메모리에는 오류가 하나씩 쌓이다 두 개가 되면 고칠 수 없으므로, 서버는 주기적으로 메모리를 훑어 읽고 고쳐 쓰는 스크러빙(Scrubbing)을 돌린다. DRAM의 칩 단위 ECC(Chipkill)는 MemoryBook을 참고한다.

제조 테스트: 고착 고장 모델

소프트 에러가 일시적이라면, 공장에서 생긴 결함은 영구적이다. 먼지 한 톨이 두 선을 잇거나, 비아 하나가 덜 뚫리거나, 산화막에 구멍이 나면 그 칩은 처음부터 틀린 답을 낸다. 수십억 개 트랜지스터 중 어디가 망가졌는지 칩을 열어 볼 수는 없으므로, 입력 핀에 값을 넣고 출력 핀을 보는 것만으로 결함을 찾아야 한다. 테스트는 설계를 "검증"하는 것이 아니라 만들어진 칩이 설계대로인지 확인하는 일이다.

물리적 결함은 종류가 끝없이 많지만, 테스트는 이를 아주 단순한 논리 모델로 줄여 다룬다. 고착 고장(Stuck-at fault) 모델은 "어떤 넷 하나가 0이나 1에 붙어 버렸다"고 가정한다(SA0, SA1). 넷이 \(n\)개면 고장은 \(2n\)개다. 어떤 입력 벡터가 고장을 검출하려면 두 가지를 동시에 해야 한다.

  1. 활성화(Activate, excite): 고장 위치를 고착값의 반대로 몬다. SA0을 찾으려면 그 넷이 정상일 때 1이어야 한다.
  2. 전파(Propagate): 정상과 고장의 차이를 출력까지 끌고 간다. 지나는 게이트의 다른 입력은 비지배값(AND·NAND는 1, OR·NOR는 0)이어야 한다.

정상 회로 값/고장 회로 값을 한 기호로 쓰면 편하다. 정상 1·고장 0을 D, 정상 0·고장 1을 D̄라 한다. 출력에 D나 D̄가 나타나면 그 벡터는 고장을 검출한다.

SIMULATOR

고장 주입과 테스트 벡터, 고장 검출률

입력 벡터 (눌러서 바꾸기)
테스트 집합
정상 출력 y—
고장 회로 출력—
이 벡터로 검출?—
테스트 집합—
고장 검출률—
회로: \(n_1=\overline{ab}\), \(n_2=\overline{c+d}\), \(n_3=\overline{n_2}\), \(y=\overline{n_1 n_3}=ab+\overline{c+d}\). 넷 8개 × 2 = 고장 16개. 선 위의 글자는 정상/고장 값이고 D·D̄로 고장 효과가 퍼지는 길을 표시한다. 아래 칸들은 16개 고장 각각이 현재 테스트 집합으로 검출되는지(초록) 아닌지(회색)를 보여 준다. 칸을 누르면 그 고장이 주입된다.

입력이 4개뿐이니 16개 벡터를 모두 넣으면 당연히 모든 고장이 잡힌다. 그러나 입력이 100개면 \(2^{100}\)개 벡터는 우주의 나이로도 모자란다. 핵심은 작은 벡터 집합으로 높은 검출률을 얻는 것이다. "작은 집합 찾기"를 눌러 보면 이 회로는 단 4개 벡터로 16개 고장을 모두 잡는다(16개 중 4분의 1). 실제 칩에서는 ATPG(Automatic Test Pattern Generation) 도구가 D-알고리즘이나 PODEM 같은 탐색으로 고장마다 벡터를 만들고, 한 벡터가 우연히 잡는 다른 고장을 고장 시뮬레이션으로 지워 나간다.

$$\text{고장 검출률(FC)} = \frac{\text{검출된 고장 수}}{\text{전체 고장 수}}, \qquad DL \approx 1 - Y^{\,1-FC}$$
\(DL\): 출하된 칩 중 불량 비율(Defect Level, Williams–Brown 모델), \(Y\): 공정 수율. 수율 90 %에서 FC 99 %면 DL ≈ 0.1 %, 곧 1,000 ppm이다. 자동차용 칩이 요구하는 수 ppm 이하를 맞추려면 FC가 99.9 %를 넘어야 하고, 고착 고장 외의 모델도 함께 써야 한다.
고착 고장만으로는 부족하다

고착 고장 모델은 놀랍게 잘 맞지만 모든 결함을 담지 못한다. 저항성 단락이나 반쯤 막힌 비아는 논리값은 맞되 느린 칩을 만든다. 이를 잡으려고 실제 클럭 속도로 천이를 일으키는 천이 지연 고장(Transition fault) 테스트, 전원 전류를 재 비정상 누설을 찾는 IDDQ 테스트, 셀 내부 구조까지 모델링한 셀 인지(Cell-aware) 테스트를 함께 쓴다. 테스트 이론 전반은 TestBook에서 다룬다.

스캔 체인과 BIST: 순차 회로를 시험 가능하게

조합 회로는 입력을 넣고 출력을 보면 된다. 하지만 칩의 거의 모든 논리는 플립플롭 사이에 갇혀 있다. 깊은 상태 기계의 어떤 상태에 도달하려면 수천 클럭을 정확한 순서로 넣어야 하고, 내부 노드의 고장 효과는 출력 핀까지 나오는 데 다시 수천 클럭이 걸린다. 해법은 놀랍도록 단순하다. 모든 플립플롭 앞에 MUX를 하나씩 달아, 테스트 때는 플립플롭들을 하나의 긴 시프트 레지스터로 이어 버린다. 이것이 스캔 체인(Scan chain)이다.

이렇게 하면 모든 플립플롭의 출력은 "직접 넣을 수 있는 입력"이 되고, 모든 플립플롭의 입력은 "직접 볼 수 있는 출력"이 된다. 순차 회로 테스트가 조합 회로 테스트로 바뀌는 것이다.

스캔 사용 SE
수동 조작
조합 논리의 고장
패턴 하나를 자동으로 (시프트 4 → 캡처 1 → 시프트 4)
—
그림 16-7. 해 보기플립플롭 4개(Q₀~Q₃)와 그 사이의 조합 논리 \(n_0=\overline{Q_3}\), \(n_1=Q_0 Q_2\), \(n_2=Q_1\oplus Q_3\), \(n_3=Q_0+Q_2\). SE=1이면 굵은 주황 경로(SI→Q₀→Q₁→Q₂→Q₃→SO)가 살아나고, SE=0이면 파란 기능 경로가 살아난다. "자동 테스트 실행"은 무작위 패턴을 넣고 한 번 캡처한 뒤 결과를 밀어내 기대값과 비교한다. 고장을 주입한 뒤 몇 번 돌려 보면 어떤 패턴은 고장을 잡고 어떤 패턴은 놓치는지 알 수 있다.

스캔의 대가는 플립플롭마다 붙는 MUX의 면적(수 %)과 지연, 그리고 테스트 시간이다. 플립플롭이 100만 개인 칩을 체인 하나로 이으면 패턴 하나에 100만 클럭이 든다. 그래서 체인을 수백 개로 나눠 병렬로 돌리고, 칩 안에서 압축된 패턴을 풀어 체인에 뿌리고 결과를 다시 압축하는 테스트 압축(EDT)으로 데이터를 수십~수백 배 줄인다. 시프트할 때는 모든 플립플롭이 한꺼번에 토글해 평소보다 전력이 훨씬 크다는 점도 주의해야 한다(15장).

테스트 장비 없이 칩이 스스로를 시험하게 할 수도 있다. BIST(Built-In Self-Test)는 9장에서 본 LFSR로 의사 무작위 패턴을 만들어 회로에 넣고, 출력은 또 다른 LFSR 꼴의 MISR(Multiple-Input Signature Register)로 압축해 수십 비트의 "서명"으로 만든다. 마지막에 서명 하나만 기대값과 비교하면 된다. 메모리는 규칙적인 구조라 March 알고리즘으로 모든 셀을 정해진 순서로 쓰고 읽는 MBIST가 표준이며, 불량 셀이 발견되면 예비 행·열로 갈아 끼우는 수리까지 칩 안에서 한다.

LFSR패턴 생성 피시험 회로(조합 논리 + 스캔) MISR서명 압축 비교통과? 패턴응답 패턴 수천~수백만 개 → 서명 수십 비트 하나만 비교
그림 16-8. 논리 BIST의 구조. LFSR이 만드는 의사 무작위 패턴은 대부분의 고장을 빨리 잡지만, 특정 조합에서만 활성화되는 "무작위 저항" 고장은 잘 못 잡는다. 그런 곳에는 테스트 지점을 추가로 넣는다. 자동차 칩은 BIST를 부팅 때와 동작 중에도 주기적으로 돌려 기능 안전(ISO 26262)을 확인한다.
설계 단계의 테스트 용이성(DFT)

스캔 삽입, ATPG, BIST, 그리고 칩 경계 핀을 스캔으로 시험하는 JTAG 경계 스캔(IEEE 1149.1)을 묶어 DFT(Design for Testability)라 한다. 이들은 합성 직후 자동으로 들어가므로 RTL 설계자는 의식하지 않을 때가 많지만, 비동기 리셋, 게이트된 클럭, 조합 루프처럼 스캔을 방해하는 코딩 습관은 피해야 한다. 흐름은 17장과 DesignBook에서 이어진다.

핵심 정리

  1. 공정·전압·온도(PVT)가 게이트 지연과 누설을 바꾼다. 공정 변동은 다이 전체가 함께 움직이는 전역 성분과 이웃 소자끼리 다른 국소 성분으로 나뉘며, 국소 성분은 Pelgrom 법칙 \(\sigma(V_t)=A_{V_t}/\sqrt{WL}\)을 따른다.
  2. 설계는 SS/TT/FF/SF/FS 공정 코너에 전압·온도를 곱한 PVT 코너로 setup(느린 코너)과 hold(빠른 코너)를 검증한다. 저전압에서는 온도 역전으로 저온이 최악이 된다.
  3. 몬테카를로는 칩을 통계적으로 수천 개 만들어 수율을 구한다. 경로의 상대 산포는 \(\sqrt{\sigma_g^2+\sigma_l^2/N}\)으로, 긴 경로에서 국소 변동은 평균화되고 전역 변동은 남는다. 임계 경로가 많을수록 칩 지연은 꼬리 쪽으로 밀린다.
  4. NBTI·HCI는 \(V_t\)를 \(t^n\)으로 올려 칩을 늙게 만들고, 설계는 가드밴드나 적응형 전압으로 대비한다. 전자 이동 수명은 \(J^{-n}e^{E_a/kT}\)로 전류와 온도에 매우 민감하며 자기 발열이 이를 증폭한다.
  5. 알파 입자·중성자는 저장 노드 전하를 빼앗아 비트를 뒤집는다. 임계 전하는 \(CV_{DD}\)에 비례하되 반대편 인버터의 복원 전류 때문에 그보다 크고, 비율은 FIT(10⁹ 시간당 고장)으로 센다.
  6. 해밍 부호는 겹치는 패리티 검사의 신드롬으로 한 비트 오류의 위치를 찾아 고치고, SECDED는 전체 패리티를 더해 두 비트 오류를 검출한다.
  7. 제조 테스트는 고착 고장 모델로 벡터를 만들고 고장 검출률로 품질을 잰다. 스캔 체인은 순차 회로를 조합 회로처럼 시험하게 하고, BIST는 LFSR과 MISR로 칩이 스스로를 시험하게 한다.

확인 퀴즈

Q1. 최소 크기 트랜지스터의 국소 \(\sigma(V_t)\)가 30 mV이다. 폭과 길이를 각각 2배로 키운 소자의 \(\sigma(V_t)\)는?

면적 \(WL\)이 4배가 되므로 \(\sigma \propto 1/\sqrt{WL}\)에 따라 절반, 15 mV가 된다. 폭만 2배로 키웠다면 \(1/\sqrt{2}\)배인 약 21 mV다.

Q2. 다음 중 hold 위반을 검증하기에 가장 알맞은 코너는?

hold 위반은 데이터 경로가 너무 빠를 때 생기므로 모든 것이 가장 빠른 코너(빠른 공정, 높은 전압, 높은 전압 영역에서는 저온)로 검증한다.

Q3. 게이트당 국소 산포가 10 %, 전역 산포가 0인 칩에서 25단 경로의 상대 산포 σ/μ는?

\(\sigma_l/\sqrt{N} = 10\,\% / \sqrt{25} = 2\,\%\). 독립 오차의 합은 평균이 \(N\)배, 표준 편차가 \(\sqrt{N}\)배라 상대값은 \(1/\sqrt{N}\)로 준다.

Q4. 블랙 방정식에서 \(n=2\)일 때, 같은 온도에서 배선의 전류 밀도를 3배로 올리면 전자 이동 수명은?

\(\text{MTTF} \propto J^{-2}\)이므로 \(3^{-2}=1/9\). 실제로는 전류가 늘면 \(J^2\)에 비례하는 자기 발열로 온도까지 올라 수명이 더 짧아진다.

Q5. 해밍(7,4) 부호에서 받은 코드워드의 신드롬이 s₄s₂s₁ = 110이다. 디코더의 동작은?

신드롬을 2진수로 읽은 값 110₂ = 6이 오류 위치다. 6번 위치는 \(p_2\)와 \(p_4\) 검사에만 포함되는 데이터 비트 \(d_3\)이다. 해밍(7,4)은 두 비트 오류를 구분하지 못하므로 정정을 포기하는 판정은 SECDED에만 있다.

Q6. 스캔 체인이 순차 회로 테스트를 쉽게 만드는 이유로 가장 알맞은 것은?

시프트 모드에서 플립플롭이 시프트 레지스터로 이어져 원하는 상태를 넣고(제어성), 캡처 결과를 밀어내 볼 수 있다(관측성). 그래서 플립플롭 사이의 조합 논리를 조합 회로 ATPG로 시험할 수 있다.