변동·신뢰성·테스트
지금까지 우리는 트랜지스터가 설계도에 적힌 그대로 만들어진다고 가정했다. 실제로는 그렇지 않다. 같은 웨이퍼에서 나온 칩 두 개를 재 보면 한쪽이 10~20 % 빠르고, 같은 칩 안에서도 바로 옆 트랜지스터끼리 문턱 전압이 수십 mV 다르다. 칩은 뜨거워졌다 식고, 전압은 출렁이고, 10년을 쓰면 트랜지스터가 늙어 느려진다. 우주에서 날아온 중성자가 SRAM 비트를 뒤집기도 하고, 공장에서 나올 때부터 어딘가 선이 끊긴 칩도 섞여 있다. 이 장은 디지털 설계가 이런 불완전함을 어떻게 견디는지 다룬다. 변동을 통계로 다루고(코너와 몬테카를로), 시간에 따른 고장을 미리 계산하고(노화·전자 이동·소프트 에러), 망가진 비트는 부호로 고치고(ECC), 망가진 칩은 출하 전에 걸러 낸다(테스트).
- 공정·전압·온도(PVT) 변동이 게이트 지연과 누설을 어떻게 바꾸는지 설명하고, 전역 변동과 국소 변동(Pelgrom 법칙)을 구분한다.
- 몬테카를로로 경로 지연 분포와 수율을 구하고, 긴 경로에서 국소 변동이 평균화되는 \(\sqrt{N}\) 효과와 클럭 binning을 이해한다.
- NBTI·HCI 노화, 전자 이동(블랙 방정식), 소프트 에러(임계 전하, FIT)를 수치로 가늠하고 해밍·SECDED 부호로 비트 오류를 정정한다.
- 고착 고장 모델로 테스트 벡터와 고장 검출률을 계산하고, 스캔 체인과 BIST가 순차 회로를 시험 가능하게 만드는 방법을 안다.
같은 설계, 다른 칩: 변동의 세 얼굴
공장은 설계도를 완벽하게 복사하지 못한다. 7 nm급 트랜지스터의 채널에는 도펀트 원자가 고작 수십~수백 개 들어 있고, 게이트 길이는 원자 수십 개 폭이다. 원자 몇 개가 더 들어가거나 빠지고, 노광이 1 nm 어긋나고, 식각이 조금 더 깊어지면 트랜지스터의 성질이 달라진다. 디지털 설계자는 이 차이를 세 축으로 나눠 부른다.
- 공정(Process) 변동: 문턱 전압 \(V_t\), 채널 길이, 산화막 두께, 이동도가 칩마다·트랜지스터마다 다르다. 만들 때 정해져 평생 간다.
- 전압(Voltage) 변동: 전원 조정기의 오차, 전원망의 IR 강하, 순간 전류에 의한 \(L\,di/dt\) 출렁임 때문에 게이트가 실제로 받는 \(V_{DD}\)는 공칭값보다 5~10 % 낮을 수 있다.
- 온도(Temperature) 변동: 겨울 야외의 −40 °C부터 서버 칩 핫스팟의 110 °C 이상까지. 같은 칩 안에서도 코어와 캐시의 온도가 수십 도 다르다.
공정 변동은 다시 두 종류로 갈린다. 전역 변동(Global, die-to-die variation)은 웨이퍼나 다이 전체가 함께 움직이는 성분이다. 어떤 웨이퍼는 노광 초점이 살짝 어긋나 그 위의 모든 트랜지스터가 함께 느리다. 반면 국소 변동(Local, within-die mismatch)은 바로 옆에 붙은 두 트랜지스터 사이의 무작위 차이다. 대표 원인은 무작위 도펀트 요동(RDF, Random Dopant Fluctuation), 게이트 가장자리의 선 가장자리 거칠기(LER), 금속 게이트의 결정립 방향 차이다. 개수가 적은 것을 셀 때 생기는 통계적 요동이라, 트랜지스터가 작을수록 커진다.
아래 그림은 웨이퍼에서 다이 네 개를 꺼내 각 다이에 있는 트랜지스터 48개의 \(V_t\)를 색으로 칠한 것이다. 파랑은 \(V_t\)가 낮아 빠른 소자, 빨강은 높아 느린 소자다.
국소 변동의 크기는 1989년 Marcel Pelgrom이 정리한 간단한 법칙을 따른다. 채널 아래의 도펀트 개수를 \(n\)이라 하면 그 요동은 \(\sqrt{n}\)이고 상대 요동은 \(1/\sqrt{n}\)이다. \(n\)은 채널 면적에 비례하므로 \(V_t\)의 표준 편차는 면적의 제곱근에 반비례한다.
이 법칙이 디지털 설계에 주는 교훈은 분명하다. 최소 크기 소자가 가장 들쭉날쭉하다. 그래서 크기를 줄일 수 없는 SRAM 셀(13장)과 감지 증폭기, 그리고 짝 맞춤이 중요한 아날로그 회로가 국소 변동에 가장 시달린다. 반대로 수십 단을 지나는 논리 경로는 단마다의 무작위 오차가 서로 상쇄되어 훨씬 덜 민감하다. 이 상쇄를 3절의 몬테카를로에서 직접 확인한다.
평면 트랜지스터는 폭 \(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 인버터 지연과 누설 전류를 계산한다.
코너마다 검증하는 성질이 다르다. 가장 느린 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)가 더해진다.
| 코너 | 공정 | 전압 | 온도 | 주로 검증하는 것 |
|---|---|---|---|---|
| 최악 지연(고온) | SS | 0.9×VDD = 0.675 V | 125 °C | setup, 최대 클럭 (높은 전압 영역) |
| 최악 지연(저온) | SS | 0.9×VDD = 0.675 V | −40 °C | setup (저전압·온도 역전 영역) |
| 최선 지연 | FF | 1.1×VDD = 0.825 V | −40 °C | hold, 최소 지연, 글리치 |
| 최대 누설 | FF | 1.1×VDD = 0.825 V | 125 °C | 누설 전력, 전원망 IR, 전자 이동, 발열 |
| 공칭 | TT | 1.0×VDD = 0.75 V | 25 / 85 °C | 평균 전력, 성능 예측 |
| 엇갈림 | SF / FS | 0.9~1.1×VDD | −40 / 125 °C | SRAM 읽기·쓰기 여유, 레벨 시프터, 비율 회로 |
몬테카를로: 수천 개의 칩을 미리 만들어 보기
코너는 빠르지만 거칠다. 모든 소자가 동시에 최악일 확률은 거의 0이므로 코너 설계는 비관적이고, 반대로 국소 변동처럼 소자마다 따로 노는 성분은 코너로 표현할 수 없다. 더 정직한 방법은 통계 모델에서 칩을 무작위로 수천 개 "만들어" 보는 것이다. 이것이 몬테카를로 시뮬레이션(Monte Carlo simulation)이다.
아래 시뮬레이터는 게이트 \(N\)개짜리 임계 경로를 가진 칩을 4,000개 뽑는다. 칩마다 전역 변동 하나를 뽑아 모든 게이트에 똑같이 곱하고, 게이트마다 국소 변동을 따로 뽑아 더한다. 칩에는 이런 임계 경로가 \(M\)개 있고, 칩의 속도는 그중 가장 느린 경로가 정한다.
경로 지연 분포와 수율, 클럭 binning
먼저 전역 변동을 0으로 두고 \(N\)을 1에서 80으로 늘려 보자. 히스토그램의 상대 폭이 빠르게 좁아진다. 서로 독립인 오차 \(N\)개를 더하면 평균은 \(N\)배가 되지만 표준 편차는 \(\sqrt{N}\)배밖에 늘지 않기 때문이다. 그래서 상대 산포는 \(1/\sqrt{N}\)로 준다. 반면 전역 변동은 모든 게이트를 같은 방향으로 밀기 때문에 아무리 길어도 평균화되지 않는다.
지연 분포가 똑같은 독립 경로가 칩 안에 1,000개 있다. 칩 지연은 가장 느린 경로가 정한다. 칩 지연 분포의 평균은 어디로 가고, 폭은 어떻게 될까?
답 보기
평균이 국소 산포의 약 3배(정규 분포 1,000개 표본의 최댓값 기대치 ≈ 3.2σ)만큼 오른쪽으로 밀리고, 분포는 오히려 좁아진다. 최댓값은 꼬리 쪽에서 뽑히기 때문이다. 시뮬레이터에서 \(M\)을 끝까지 올려 보면 히스토그램이 통째로 오른쪽으로 이동하며 수율이 뚝 떨어진다. 실제 칩에는 거의 임계에 가까운 경로가 수천~수만 개 있으므로, 경로 하나만 보고 수율을 예측하면 크게 낙관하게 된다.
같은 웨이퍼에서 나온 칩이 이렇게 다르다면, 모두 같은 클럭으로 팔 필요가 없다. 출하 테스트에서 칩마다 통과하는 최고 주파수를 재서 등급을 나누는 것을 속도 binning(Speed binning)이라 한다. 같은 다이가 고급 모델과 보급 모델로 나뉘어 팔리는 이유다. 반대로 최고 주파수는 충분하지만 누설이 너무 큰 칩(대개 빠른 쪽 꼬리)은 전력 bin에서 걸러진다. 빠른 칩은 전압을 조금 낮춰도 목표 주파수를 맞추므로, 칩마다 공급 전압을 따로 정해 퓨즈에 굽는 AVS(Adaptive Voltage Scaling)도 흔히 쓴다.
실무에서는 전역 변동을 코너로, 국소 변동을 OCV(On-Chip Variation) 여유로 나눠 처리한다. 초기 OCV는 모든 지연에 "±5 %" 같은 고정 비율을 곱했지만, 이는 긴 경로를 지나치게 비관한다. 그래서 위 공식처럼 깊이에 따라 여유를 줄이는 AOCV, 셀마다 지연 분포의 표준 편차를 표로 주는 POCV/LVF가 나왔다. 셀 라이브러리와 사인오프 흐름은 DesignBook, 웨이퍼 수율의 통계는 YieldBook을 참고한다.
노화: 칩은 쓸수록 느려진다
공정 변동은 태어날 때 정해지지만, 트랜지스터의 성질은 쓰는 동안에도 조금씩 변한다. 대표적인 두 가지 노화 기구가 있다.
- NBTI(Negative Bias Temperature Instability): pMOS가 켜진 채(게이트 음 바이어스) 뜨거운 상태로 오래 있으면 게이트 산화막 경계의 Si–H 결합이 끊기고 전하가 갇혀 \(|V_t|\)가 커진다. 스트레스를 풀면 일부 회복된다. 고유전율 금속 게이트 nMOS에서는 거울상인 PBTI도 생긴다.
- HCI(Hot Carrier Injection): 스위칭하는 순간 드레인 근처의 강한 전기장에서 에너지를 얻은 "뜨거운" 전자가 산화막으로 튀어 들어가 갇힌다. 주로 nMOS, 그리고 스위칭할 때만 생기므로 활동도에 비례한다.
둘 다 \(V_t\) 이동이 시간의 거듭제곱 \(t^n\)을 따른다. 지수 \(n\)이 1보다 작아서 처음 몇 시간~며칠에 빠르게 늘고 그 뒤로는 천천히 는다. 로그 시간축으로 그리면 직선에 가깝다.
설계는 이 늙음을 미리 계산해 지연 여유, 곧 가드밴드(Guardband)를 둔다. 수명 말기의 \(V_t\)로 특성화한 "노화 라이브러리"로 타이밍을 검증하는 방식이다. 가드밴드는 공짜가 아니다. 5 %의 여유는 5 % 낮은 클럭이거나 그만큼 높은 전압, 곧 10 % 가까운 전력이다. 그래서 최신 칩은 칩 안에 링 오실레이터나 경로 복제 회로 같은 노화 감시기를 두고, 늙은 만큼만 전압을 올려 주는 적응형 방식을 쓴다.
전자 이동과 자기 발열: 배선도 늙는다
배선 속 전자는 흐르면서 금속 원자와 부딪혀 운동량을 넘겨준다. 전류 밀도가 높으면 이 "전자 바람"이 원자를 실제로 조금씩 밀어 옮긴다. 이것이 전자 이동(Electromigration, EM)이다. 원자가 빠져나간 곳(전자가 들어오는 음극 쪽)에는 빈 공간, 곧 보이드(Void)가 자라 저항이 오르다 결국 선이 끊기고, 원자가 쌓인 곳(양극 쪽)에는 힐록(Hillock)이 솟아 옆 선과 붙기도 한다.
전자 이동 수명은 1969년 James Black이 실험으로 찾은 식을 따른다. 전류 밀도에는 거듭제곱으로, 온도에는 아레니우스 지수로 민감하다.
여기에 자기 발열(Self-heating, Joule heating)이 겹친다. 배선의 발열은 \(I^2R\), 즉 \(J^2\)에 비례하고, 주변의 저유전율 절연막은 열을 잘 전하지 못한다. 전류를 늘리면 온도가 오르고, 온도가 오르면 수명이 지수적으로 줄어드는 이중 타격이다. FinFET은 채널이 좁은 핀 속에 갇혀 트랜지스터 자체의 자기 발열도 평면 소자보다 크다.
설계 흐름은 배선 폭과 층마다 허용 전류 밀도를 정하고, 전원망과 클럭망처럼 늘 한 방향으로 큰 전류가 흐르는 배선을 특히 엄격히 검사한다. 신호선처럼 전류가 양방향으로 번갈아 흐르면 원자가 밀렸다 돌아오는 회복 효과가 있어 허용치가 몇 배 높다. 배선의 RC 성질은 14장에서 다뤘다.
소프트 에러: 하늘에서 떨어지는 비트 반전
칩 패키지의 납땜과 재료에 섞인 극미량의 방사성 동위원소가 내는 알파 입자, 그리고 우주선이 대기와 부딪혀 만든 고에너지 중성자가 실리콘을 지나가면, 그 궤적을 따라 전자-정공 쌍이 만들어진다. 이 전하가 저장 노드의 드레인으로 모이면 짧은 전류 펄스가 되어 노드 전압을 끌어내린다. 노드가 충분히 내려가면 래치의 되먹임이 거꾸로 돌아 저장된 비트가 뒤집힌다. 칩은 망가지지 않았지만 값이 틀렸다. 그래서 소프트 에러(Soft error, SEU: Single-Event Upset)라 한다.
단순한 그림으로는 노드에 저장된 전하 \(C V_{DD}\)를 다 빼앗기면 뒤집힌다고 볼 수 있다. 그러나 실제로는 반대편 인버터가 그동안에도 노드를 다시 채우므로, 그림 16-6에서 계산한 임계 전하는 \(CV_{DD}\)보다 크다. 펄스가 짧고 복원 트랜지스터가 약할수록 \(CV_{DD}\)에 가까워진다.
미세화는 소프트 에러에 양면적이다. 셀이 작아지면 \(C\)와 \(V_{DD}\)가 줄어 \(Q_{crit}\)가 떨어지지만, 전하를 모으는 면적도 줄어 셀 하나에 입자가 맞을 확률이 준다. FinFET은 좁은 핀이 전하를 덜 모아 비트당 SER이 평면 소자보다 크게 낮아졌다. 대신 칩 하나의 비트 수가 기하급수로 늘고, 입자 하나가 이웃한 여러 비트를 한꺼번에 뒤집는 다중 비트 반전(MBU)의 비율이 커졌다.
| 항목 | 대략값 | 비고 |
|---|---|---|
| 해수면 중성자 플럭스(>10 MeV) | 약 13 /cm²·h | JEDEC JESD89 기준(뉴욕) |
| 덴버(해발 1.6 km) | 약 3~4배 | 고도가 높을수록 대기 차폐가 준다 |
| 항공기 순항 고도(10~12 km) | 약 300배 | 항공 전자 장비는 ECC·삼중화 필수 |
| SRAM SER, 평면 40~28 nm | 약 수백~1,000 FIT/Mbit | 2010년 전후 보고값, 공정·설계에 따라 큼 |
| 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)이 바로 뒤집힌 비트의 위치다.
해밍(7,4)과 SECDED(8,4): 인코딩·오류 주입·신드롬·정정
한 비트를 뒤집으면 해밍 부호는 언제나 정확히 고친다. 두 비트를 뒤집어 보자. 신드롬이 0이 아니므로 디코더는 "한 비트 오류"라 믿고 엉뚱한 세 번째 비트를 뒤집는다. 데이터가 오히려 더 망가진다. 이것이 오정정(Miscorrection)이다. SECDED(Single Error Correction, Double Error Detection)는 전체 패리티 비트 하나로 이 둘을 구분한다. 오류가 홀수 개면 전체 패리티가 깨지고, 짝수 개면 그대로다. 신드롬은 0이 아닌데 전체 패리티가 맞으면 "두 비트 오류, 정정 불가"를 선언하고 상위 시스템에 알린다.
SECDED(8,4)에서 세 비트를 뒤집으면 디코더는 무엇이라고 판정할까?
답 보기
오류가 홀수 개이므로 전체 패리티가 깨져 디코더는 "한 비트 오류"로 판단하고 신드롬이 가리키는 비트를 뒤집는다. 결과는 대개 오정정이다. 신드롬이 0이 되면 오류가 \(p_0\)에 있다고 판단해 데이터는 손대지 않지만 역시 틀린 데이터가 나간다. SECDED의 보장은 "두 개까지"다. 다중 비트 반전에 대비해 메모리는 이웃 비트를 서로 다른 ECC 워드에 흩어 두는 인터리빙을 함께 쓴다. 시뮬레이터의 "무작위 3비트" 버튼으로 확인해 보자.
인코더는 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\)개다. 어떤 입력 벡터가 고장을 검출하려면 두 가지를 동시에 해야 한다.
- 활성화(Activate, excite): 고장 위치를 고착값의 반대로 몬다. SA0을 찾으려면 그 넷이 정상일 때 1이어야 한다.
- 전파(Propagate): 정상과 고장의 차이를 출력까지 끌고 간다. 지나는 게이트의 다른 입력은 비지배값(AND·NAND는 1, OR·NOR는 0)이어야 한다.
정상 회로 값/고장 회로 값을 한 기호로 쓰면 편하다. 정상 1·고장 0을 D, 정상 0·고장 1을 D̄라 한다. 출력에 D나 D̄가 나타나면 그 벡터는 고장을 검출한다.
고장 주입과 테스트 벡터, 고장 검출률
입력이 4개뿐이니 16개 벡터를 모두 넣으면 당연히 모든 고장이 잡힌다. 그러나 입력이 100개면 \(2^{100}\)개 벡터는 우주의 나이로도 모자란다. 핵심은 작은 벡터 집합으로 높은 검출률을 얻는 것이다. "작은 집합 찾기"를 눌러 보면 이 회로는 단 4개 벡터로 16개 고장을 모두 잡는다(16개 중 4분의 1). 실제 칩에서는 ATPG(Automatic Test Pattern Generation) 도구가 D-알고리즘이나 PODEM 같은 탐색으로 고장마다 벡터를 만들고, 한 벡터가 우연히 잡는 다른 고장을 고장 시뮬레이션으로 지워 나간다.
고착 고장 모델은 놀랍게 잘 맞지만 모든 결함을 담지 못한다. 저항성 단락이나 반쯤 막힌 비아는 논리값은 맞되 느린 칩을 만든다. 이를 잡으려고 실제 클럭 속도로 천이를 일으키는 천이 지연 고장(Transition fault) 테스트, 전원 전류를 재 비정상 누설을 찾는 IDDQ 테스트, 셀 내부 구조까지 모델링한 셀 인지(Cell-aware) 테스트를 함께 쓴다. 테스트 이론 전반은 TestBook에서 다룬다.
스캔 체인과 BIST: 순차 회로를 시험 가능하게
조합 회로는 입력을 넣고 출력을 보면 된다. 하지만 칩의 거의 모든 논리는 플립플롭 사이에 갇혀 있다. 깊은 상태 기계의 어떤 상태에 도달하려면 수천 클럭을 정확한 순서로 넣어야 하고, 내부 노드의 고장 효과는 출력 핀까지 나오는 데 다시 수천 클럭이 걸린다. 해법은 놀랍도록 단순하다. 모든 플립플롭 앞에 MUX를 하나씩 달아, 테스트 때는 플립플롭들을 하나의 긴 시프트 레지스터로 이어 버린다. 이것이 스캔 체인(Scan chain)이다.
- 시프트(SE=1): 플립플롭들이 체인으로 이어진다. 칩 밖의 SI 핀으로 원하는 상태를 한 비트씩 밀어 넣는다. 동시에 이전 내용이 SO 핀으로 밀려 나온다.
- 캡처(SE=0): 한 클럭 동안 정상 동작한다. 조합 논리의 출력이 플립플롭에 잡힌다.
이렇게 하면 모든 플립플롭의 출력은 "직접 넣을 수 있는 입력"이 되고, 모든 플립플롭의 입력은 "직접 볼 수 있는 출력"이 된다. 순차 회로 테스트가 조합 회로 테스트로 바뀌는 것이다.
스캔의 대가는 플립플롭마다 붙는 MUX의 면적(수 %)과 지연, 그리고 테스트 시간이다. 플립플롭이 100만 개인 칩을 체인 하나로 이으면 패턴 하나에 100만 클럭이 든다. 그래서 체인을 수백 개로 나눠 병렬로 돌리고, 칩 안에서 압축된 패턴을 풀어 체인에 뿌리고 결과를 다시 압축하는 테스트 압축(EDT)으로 데이터를 수십~수백 배 줄인다. 시프트할 때는 모든 플립플롭이 한꺼번에 토글해 평소보다 전력이 훨씬 크다는 점도 주의해야 한다(15장).
테스트 장비 없이 칩이 스스로를 시험하게 할 수도 있다. BIST(Built-In Self-Test)는 9장에서 본 LFSR로 의사 무작위 패턴을 만들어 회로에 넣고, 출력은 또 다른 LFSR 꼴의 MISR(Multiple-Input Signature Register)로 압축해 수십 비트의 "서명"으로 만든다. 마지막에 서명 하나만 기대값과 비교하면 된다. 메모리는 규칙적인 구조라 March 알고리즘으로 모든 셀을 정해진 순서로 쓰고 읽는 MBIST가 표준이며, 불량 셀이 발견되면 예비 행·열로 갈아 끼우는 수리까지 칩 안에서 한다.
스캔 삽입, ATPG, BIST, 그리고 칩 경계 핀을 스캔으로 시험하는 JTAG 경계 스캔(IEEE 1149.1)을 묶어 DFT(Design for Testability)라 한다. 이들은 합성 직후 자동으로 들어가므로 RTL 설계자는 의식하지 않을 때가 많지만, 비동기 리셋, 게이트된 클럭, 조합 루프처럼 스캔을 방해하는 코딩 습관은 피해야 한다. 흐름은 17장과 DesignBook에서 이어진다.
핵심 정리
- 공정·전압·온도(PVT)가 게이트 지연과 누설을 바꾼다. 공정 변동은 다이 전체가 함께 움직이는 전역 성분과 이웃 소자끼리 다른 국소 성분으로 나뉘며, 국소 성분은 Pelgrom 법칙 \(\sigma(V_t)=A_{V_t}/\sqrt{WL}\)을 따른다.
- 설계는 SS/TT/FF/SF/FS 공정 코너에 전압·온도를 곱한 PVT 코너로 setup(느린 코너)과 hold(빠른 코너)를 검증한다. 저전압에서는 온도 역전으로 저온이 최악이 된다.
- 몬테카를로는 칩을 통계적으로 수천 개 만들어 수율을 구한다. 경로의 상대 산포는 \(\sqrt{\sigma_g^2+\sigma_l^2/N}\)으로, 긴 경로에서 국소 변동은 평균화되고 전역 변동은 남는다. 임계 경로가 많을수록 칩 지연은 꼬리 쪽으로 밀린다.
- NBTI·HCI는 \(V_t\)를 \(t^n\)으로 올려 칩을 늙게 만들고, 설계는 가드밴드나 적응형 전압으로 대비한다. 전자 이동 수명은 \(J^{-n}e^{E_a/kT}\)로 전류와 온도에 매우 민감하며 자기 발열이 이를 증폭한다.
- 알파 입자·중성자는 저장 노드 전하를 빼앗아 비트를 뒤집는다. 임계 전하는 \(CV_{DD}\)에 비례하되 반대편 인버터의 복원 전류 때문에 그보다 크고, 비율은 FIT(10⁹ 시간당 고장)으로 센다.
- 해밍 부호는 겹치는 패리티 검사의 신드롬으로 한 비트 오류의 위치를 찾아 고치고, SECDED는 전체 패리티를 더해 두 비트 오류를 검출한다.
- 제조 테스트는 고착 고장 모델로 벡터를 만들고 고장 검출률로 품질을 잰다. 스캔 체인은 순차 회로를 조합 회로처럼 시험하게 하고, BIST는 LFSR과 MISR로 칩이 스스로를 시험하게 한다.
확인 퀴즈
Q1. 최소 크기 트랜지스터의 국소 \(\sigma(V_t)\)가 30 mV이다. 폭과 길이를 각각 2배로 키운 소자의 \(\sigma(V_t)\)는?
Q2. 다음 중 hold 위반을 검증하기에 가장 알맞은 코너는?
Q3. 게이트당 국소 산포가 10 %, 전역 산포가 0인 칩에서 25단 경로의 상대 산포 σ/μ는?
Q4. 블랙 방정식에서 \(n=2\)일 때, 같은 온도에서 배선의 전류 밀도를 3배로 올리면 전자 이동 수명은?
Q5. 해밍(7,4) 부호에서 받은 코드워드의 신드롬이 s₄s₂s₁ = 110이다. 디코더의 동작은?
Q6. 스캔 체인이 순차 회로 테스트를 쉽게 만드는 이유로 가장 알맞은 것은?