게이트 지연과 논리적 노력
5장에서 NAND와 NOR를 지었다. 이제 물어볼 차례다. 그 게이트는 얼마나 빠른가? 입력이 바뀐 뒤 출력이 따라오기까지 걸리는 몇 피코초가 쌓여 칩의 클럭을 정한다. 트랜지스터 수십억 개를 일일이 회로 시뮬레이션할 수는 없으니, 설계자는 손으로 계산할 수 있는 단순한 모델이 필요하다. 이 장은 트랜지스터를 저항으로, 게이트 입력을 커패시터로 보는 데서 출발해 엘모어 지연으로 트랜지스터 망의 지연을 어림하고, 논리적 노력이라는 놀랍도록 간단한 식 \(d = gh + p\) 하나로 여러 단의 경로를 가장 빠르게 만드는 크기를 찾는다.
- 파형에서 전파 지연(50% 지점)과 상승·하강 시간을 재고, 입력 경사와 부하가 지연을 어떻게 바꾸는지 설명한다.
- 트랜지스터를 유효 저항으로 바꾼 RC 모델과 엘모어 지연으로 게이트·트랜지스터 망의 지연을 손으로 계산한다.
- 논리적 노력 \(g\), 전기적 노력 \(h\), 분기 노력 \(b\), 기생 지연 \(p\)로 경로 지연을 구하고, 각 게이트의 최적 크기를 정한다.
- 큰 부하를 구동하는 버퍼 체인의 최적 단 수(단 노력 약 4)를 유도하고, NLDM 표 기반 지연 모델이 왜 필요한지 안다.
지연은 어디서 어디까지인가
실제 신호는 0에서 1로 순간이동하지 않는다. 입력이 비스듬히 올라가고, 출력은 조금 늦게 비스듬히 내려온다. 그러면 "지연"은 어디서 어디까지를 재야 할까? 업계와 교과서의 약속은 이렇다. 입력이 전원 전압의 50%를 지나는 순간부터 출력이 50%를 지나는 순간까지를 전파 지연(Propagation delay, \(t_{pd}\))이라 한다. 출력이 떨어지는 경우를 \(t_{pdf}\), 올라가는 경우를 \(t_{pdr}\)이라 부르고, 둘의 평균을 게이트의 대표 지연으로 쓴다.
파형이 얼마나 가파른지도 따로 잰다. 출력이 20%에서 80%까지(또는 10%에서 90%까지) 가는 데 걸리는 시간이 상승 시간(Rise time, \(t_r\))과 하강 시간(Fall time, \(t_f\))이고, 둘을 통틀어 경사(Slew, transition time)라 한다. 이 게이트의 출력 경사는 곧 다음 게이트의 입력 경사가 된다. 그래서 경사는 지연과 함께 꼭 따라다니는 두 번째 숫자다.
DG.ids)로 직접 적분한 파형이다. 회색 점선이 입력, 파란 선이 출력, 가로 점선이 50% 문턱이다. 팬아웃을 늘리면 지연과 출력 경사가 함께 늘고, 입력을 느리게 하면 출력도 늦어진다. pMOS를 좁히면 상승(\(t_{pdr}\))만 느려져 파형이 비대칭이 된다. 팬아웃 4, 대칭일 때의 평균 지연이 이 공정의 FO4 지연(약 8 ps)이다.그림에서 세 가지를 확인할 수 있다. 첫째, 지연은 부하에 거의 비례한다. 팬아웃 1에서 16으로 가면 지연이 몇 배로 는다. 둘째, 입력 경사가 느릴수록 지연이 커진다. 입력이 문턱을 천천히 지나는 동안 nMOS가 반쯤만 켜져 있기 때문이다. 셋째, 풀업과 풀다운의 세기가 다르면 \(t_{pdr} \ne t_{pdf}\)이다. 대칭 인버터에서 pMOS를 nMOS보다 \(\mu\)배(DG-7에서 1.6배) 넓히는 이유가 여기에 있다(4장).
\(t_{pd}\)는 출력이 마지막으로 안정되는 시각을 보증하는 최대 지연이다. 반대로 입력이 바뀐 뒤 출력이 처음 움직이기 시작하는 최소 지연을 오염 지연(Contamination delay, \(t_{cd}\))이라 한다. 플립플롭의 setup 검사에는 \(t_{pd}\)가, hold 검사에는 \(t_{cd}\)가 쓰인다. 자세한 이야기는 10장에서 한다.
RC 모델: 트랜지스터는 저항, 게이트는 커패시터
앞 그림은 트랜지스터의 비선형 전류식을 컴퓨터로 적분해 얻었다. 손으로 하기에는 너무 복잡하다. 그래서 대담하게 단순화한다. 켜진 트랜지스터는 저항, 꺼진 트랜지스터는 끊어진 스위치, 게이트 입력과 배선, 확산 영역은 접지로 가는 커패시터다. 입력이 0→1로 바뀌면 인버터의 pMOS 스위치가 열리고 nMOS 저항 \(R_n\)이 출력 커패시터 \(C_L\)을 방전시킨다.
저항 하나와 커패시터 하나로 된 회로는 고등학교 물리에서 풀었다. 출력은 지수 함수로 움직이고, 시간 상수 \(\tau = RC\)가 속도를 정한다. 50%에 닿는 시각은 \(e^{-t/RC} = 1/2\)에서 \(t = RC\ln 2 \approx 0.69RC\)다.
문제는 트랜지스터가 진짜 저항이 아니라는 데 있다. 출력 전압이 내려가면서 nMOS는 포화 영역에서 선형 영역으로 넘어가고 전류도 달라진다. 그래서 "실제 지연과 같은 결과를 내는 저항값"을 거꾸로 정해 쓴다. 이것을 유효 저항(Effective resistance, \(R_{eff}\))이라 한다. 유효 저항은 폭에 반비례한다. 폭이 \(k\)배인 트랜지스터는 \(R/k\), 같은 트랜지스터가 직렬로 \(n\)개면 \(nR\)이다. 게이트 커패시턴스는 반대로 폭에 비례한다.
| DG-7 기준 공정 수치 | 값 | 비고 |
|---|---|---|
| 단위 nMOS 포화 전류 (W=1) | 약 54 µA | \(V_{GS}=V_{DS}=0.75\) V |
| 단위 nMOS 유효 저항 \(R\) | 약 15 kΩ | 위 그림의 하강 지연에서 역산 |
| 단위 인버터 입력 커패시턴스 (\(W_n=1, W_p=1.6\)) | 약 0.21 fF | 0.08 fF × 2.6 |
| 단위 인버터 출력 확산 커패시턴스 | 약 0.16 fF | 0.06 fF × 2.6 (\(p_{inv}\)의 원인) |
| 지연 단위 \(\tau\) | 약 1.5 ps | FO4 ÷ 5로 보정한 값 |
| FO4 인버터 지연 | 약 7.5 ps | \(= 5\tau\). 전류 모델 적분으로는 약 8 ps |
DG-7 단위 인버터(\(R \approx 15\) kΩ)가 같은 인버터 4개(입력 커패시턴스 4 × 0.21 fF)와 자기 확산 커패시턴스 0.16 fF를 구동한다. RC 모델로 예측한 하강 지연을 위 표의 FO4 7.5 ps와 비교해 보자.
풀이. \(C = 0.84 + 0.16 = 1.0\) fF, \(0.69 \times 15\,\text{k}\Omega \times 1.0\,\text{fF} \approx 10\) ps. 전류 모델 적분값(약 8 ps)이나 기준값 7.5 ps보다 25% 남짓 크다. 유효 저항 하나로 비선형 소자를 대신했으니 이 정도 오차는 감수한다. RC 모델의 진짜 쓸모는 절대값이 아니라 비교다. "부하를 두 배로 하면 지연이 거의 두 배", "폭을 두 배로 하면 저항이 절반" 같은 관계는 정확히 맞는다. 절대값은 한 번 보정(\(\tau\)를 FO4로 맞추기)하면 된다.
50% 지점은 다음 게이트가 "입력이 바뀌었다"고 느끼기 시작하는 문턱(대칭 인버터의 \(V_M \approx V_{DD}/2\))과 대략 겹친다. 그래서 게이트마다 50%→50% 지연을 더하면 경로 전체의 지연이 된다. 이 덧셈 성질 덕분에 경로 지연을 게이트 단위로 쪼개 계산할 수 있고, 이것이 이 장 후반의 논리적 노력과 10장 정적 타이밍 분석의 토대다. 다만 입력 경사가 다음 게이트 지연에 영향을 주는 효과는 덧셈에서 빠지므로, 실제 도구는 경사를 함께 전파한다(8절).
엘모어 지연: 저항과 커패시터가 여러 개일 때
NAND3의 풀다운은 nMOS 세 개가 직렬이다. 트랜지스터 사이의 내부 노드에도 확산 커패시턴스가 붙어 있다. 그러면 회로는 R–C–R–C–R–C로 이어진 사다리가 되고, 응답은 더 이상 지수 함수 하나가 아니다. 배선도 마찬가지로 잘게 쪼개면 RC 사다리가 된다. 정확한 해는 노드 수만큼의 지수 함수를 더한 꼴이라 손으로 풀기 어렵다.
1948년 엘모어(W. C. Elmore)가 내놓은 근사는 놀랍도록 간단하다. 전원에서 출발해 가지를 뻗는 RC 회로(RC 트리(RC tree))에서 노드 \(i\)의 지연은 모든 커패시터 \(C_k\)에 대해, 전원에서 \(i\)로 가는 길과 전원에서 \(k\)로 가는 길이 공유하는 저항의 합 \(R_{ik}\)를 곱해 더한 것이다.
엘모어 지연은 사실 임펄스 응답의 첫 번째 모멘트(평균 시각)다. 단일 RC에서는 정확히 \(RC\)이고, 0.69를 곱하면 50% 지연이 된다. 여러 단에서는 근사이지만 놀랄 만큼 잘 맞는다. 아래 시뮬레이터에서 직접 비교해 보자.
RC 트리 편집기: 엘모어 지연 vs 수치 해석
몇 가지를 해 보면 엘모어 지연의 성격이 보인다. RC 사다리에서 첫 번째 저항을 키우면 모든 노드가 느려지지만, 마지막 커패시터를 키우면 앞쪽 노드는 덜 느려진다. 첫 저항은 모든 커패시터를 충전해야 하고 마지막 커패시터는 모든 저항을 거쳐 충전되기 때문이다. RC 트리에서 한 가지의 커패시터를 키우면 다른 가지의 노드도 느려진다. 공유하는 저항(트렁크)을 통해 서로 전류를 나눠 쓰기 때문이다. 배선 8구간에서는 0.69배 추정이 실제보다 조금 작게 나온다. 균일한 분산 RC 선의 실제 50% 지연은 약 \(0.38RC\)인데 엘모어는 \(RC/2\), 그 0.69배는 \(0.35RC\)다. 그래서 배선에는 0.69 대신 0.38을 곱하는 관례가 있다(14장).
NAND3의 세 입력 중 하나가 다른 둘보다 훨씬 늦게 도착한다. 이 입력을 출력에 가장 가까운 nMOS에 연결하는 것과 접지에 가장 가까운 nMOS에 연결하는 것 중 어느 쪽이 빠를까? 시뮬레이터의 NAND3 풀다운에서 엘모어 식을 떠올려 보자.
답 보기
출력에 가까운 nMOS에 꽂아야 빠르다. 일찍 온 두 입력이 아래쪽 두 트랜지스터를 미리 켜 두면 내부 노드 \(n_1, n_2\)는 이미 접지로 방전된 상태다. 마지막 입력이 맨 위 트랜지스터를 켜는 순간 방전해야 할 것은 출력 커패시턴스뿐이고, 내부 노드의 커패시턴스 항(\(R_1C_1 + 2RC_2\) 등)이 지연에서 빠진다. 반대로 늦은 입력을 접지 쪽에 꽂으면 내부 노드들이 충전된 채로 기다리다가 한꺼번에 방전되어야 한다. 이것이 표준 셀 라이브러리의 "빠른 핀"이 정해지는 이유이고, 합성 도구는 임계 신호를 빠른 핀에 연결한다.
계단 입력을 받는 RC 트리에서 엘모어 지연 \(\tau_D\)는 실제 50% 지연보다 항상 크거나 같다는 것이 증명되어 있다(Gupta 등, 1997). 그래서 엘모어로 계산하면 "적어도 이보다는 빠르다"는 보수적인 답을 얻는다. 0.69를 곱한 값은 단일 극점에서는 정확하지만 다단 회로에서는 상한이 아니다. 실무의 정적 타이밍 도구는 엘모어보다 정밀한 모멘트 정합(AWE 등)이나 유효 커패시턴스 모델을 쓰지만, 손 계산과 직관은 여전히 엘모어가 책임진다.
팬아웃과 FO4: 지연 = 기생 + 노력
게이트 하나의 지연을 다시 RC로 써 보자. 게이트의 유효 저항을 \(R\), 자기 출력의 확산 커패시턴스를 \(C_{par}\), 구동하는 부하를 \(C_{out}\)이라 하면 \(t_{pd} \approx 0.69R(C_{par} + C_{out})\)이다. 두 부분으로 나뉜다. 부하와 무관하게 늘 내는 부분 \(RC_{par}\)과 부하에 비례하는 부분 \(RC_{out}\). 게이트를 \(k\)배 키우면 \(R\)은 \(1/k\), \(C_{par}\)은 \(k\)배가 되므로 앞부분은 크기와 무관한 상수다. 뒷부분은 부하를 자기 입력 커패시턴스로 나눈 비율 \(C_{out}/C_{in}\)에만 의존한다.
이것을 공정과 무관한 단위 \(\tau\)로 나누어 쓰면 논리적 노력(Logical effort) 모델의 핵심 식이 나온다.
인버터의 \(d = h + 1\)에서 \(h = 4\)를 넣으면 \(d = 5\)다. 즉 \(\tau\)는 FO4 지연의 1/5이다. 이 관계를 거꾸로 쓰면 어떤 공정이든 FO4 인버터 지연을 한 번 측정(또는 시뮬레이션)해 5로 나누는 것으로 \(\tau\)를 보정할 수 있다. DG-7은 FO4 ≈ 7.5 ps, \(\tau \approx 1.5\) ps로 정했다.
공정이 바뀌면 절대 지연은 달라져도 "이 경로는 FO4 몇 개 분량인가"라는 비율은 거의 그대로다. 그래서 설계자들은 클럭 주기를 FO4로 말한다. 고성능 프로세서의 한 주기는 대략 FO4 15~25개 정도이고, 그중 몇 개는 플립플롭 오버헤드와 클럭 스큐가 먹는다. DG-7에서 FO4 20개면 150 ps, 약 6.7 GHz에 해당한다. 실제 칩은 배선 지연과 전압·온도 여유 때문에 이보다 느리다.
논리적 노력: 게이트가 인버터보다 얼마나 굼뜬가
NAND2가 인버터와 똑같은 출력 전류를 내도록 크기를 정해 보자. 풀다운에 nMOS 두 개가 직렬이니 각각을 2배 폭으로 해야 직렬 저항이 단위 nMOS 하나와 같아진다. 풀업의 pMOS는 병렬이고 최악의 경우 하나만 켜지므로 인버터와 같은 \(\mu\) 폭이면 된다. 그러면 한 입력이 보는 게이트 커패시턴스는 \(2 + \mu\)로, 인버터의 \(1 + \mu\)보다 크다. 같은 전류를 내려고 입력 쪽에 더 큰 짐을 지우는 셈이다. 이 비율이 논리적 노력이다.
기생 지연도 같은 방식으로 센다. 출력 노드에 붙은 확산 커패시턴스는 출력에 닿은 트랜지스터 폭의 합에 비례한다. NAND\(n\)의 출력에는 폭 \(\mu\)인 pMOS \(n\)개와 폭 \(n\)인 nMOS 하나가 닿아 있으니 \(n\mu + n = n(1+\mu)\), 인버터의 \(n\)배다. NOR도 마찬가지다. 그래서 \(\mu\)와 관계없이 \(n\)입력 NAND·NOR의 \(p \approx n\,p_{inv}\)이다. 실제 공정에서 \(p_{inv}\)는 0.6~1.2 정도이고 교과서는 1로 둔다. 자주 쓰는 값은 아래 표와 같다.
| 게이트 | \(g\) (\(\mu=2\), 교과서) | \(g\) (\(\mu=1.6\), DG-7) | \(p\) (\(\times p_{inv}\)) | 비고 |
|---|---|---|---|---|
| 인버터 | 1 | 1 | 1 | 정의상 기준 |
| NAND2 | 4/3 ≈ 1.33 | 1.38 | 2 | |
| NAND3 | 5/3 ≈ 1.67 | 1.77 | 3 | |
| NAND4 | 6/3 = 2 | 2.15 | 4 | |
| NOR2 | 5/3 ≈ 1.67 | 1.62 | 2 | |
| NOR3 | 7/3 ≈ 2.33 | 2.23 | 3 | |
| NOR4 | 9/3 = 3 | 2.85 | 4 | 보통 피한다 |
| AOI21 (A·B 입력 / C 입력) | 2 / 5/3 | 2 / 1.62 | 7/3 | 복합 게이트(5장) |
| MUX2 (삼상태 인버터형), 데이터 입력 | 2 | 2 | 4 | \(n\)입력이면 \(p = 2n\) |
| XOR2 (정적 CMOS) | 4 | 4 | 4 | 입력과 반전 입력 모두 필요 |
교과서의 4/3, 5/3은 pMOS가 nMOS보다 정확히 2배 약하다는 가정에서 나온 값이다. FinFET 시대에는 정공 이동도가 많이 올라와 \(\mu\)가 1.2~1.6 정도로 줄었다. 그러면 NOR의 불리함이 줄어 NAND와 NOR의 \(g\) 차이가 작아진다. 이 장의 경로 시뮬레이터와 퀴즈는 손 계산 관례를 따라 교과서 값(\(\mu=2\))을 쓰고, DG-7 수치가 필요한 곳에서는 위 표의 오른쪽 열을 쓴다. 어느 값을 쓰든 최적화 절차는 똑같다.
경로에서 한 게이트의 출력이 경로 밖의 다른 게이트들로도 갈라지면, 그 게이트는 경로 위의 다음 게이트만이 아니라 갈라진 가지 전체를 충전해야 한다. 이 비율을 분기 노력(Branching effort, \(b\))이라 한다.
경로 최적화: 노력을 고르게 나눠라
\(N\)단 경로의 지연은 \(D = \sum (g_i h_i + p_i) = \sum f_i + P\)이다. 곱 \(\prod f_i = F\)가 고정된 채로 합 \(\sum f_i\)를 최소화하는 문제다. 산술–기하 평균 부등식이 답을 준다. 합이 가장 작은 것은 모든 단 노력이 같을 때다.
예를 들어 NAND2 → NOR2 → 인버터로 된 경로의 입력 커패시턴스가 4(단위 인버터 입력 기준)이고 부하가 96이라 하자. \(G = \tfrac43 \cdot \tfrac53 \cdot 1 = 2.22\), \(H = 24\), \(B = 1\)이므로 \(F = 53.3\), \(\hat f = 53.3^{1/3} = 3.76\), \(P = 2+2+1 = 5\), \(\hat D = 3 \times 3.76 + 5 = 16.3\tau \approx 24\) ps다. 크기는 거꾸로: 인버터 \(= 1 \cdot 96 / 3.76 = 25.5\), NOR2 \(= \tfrac53 \cdot 25.5 / 3.76 = 11.3\), NAND2 \(= \tfrac43 \cdot 11.3 / 3.76 = 4.0\). 처음 값과 맞아떨어진다. 이 계산을 아래 시뮬레이터에서 손으로 해 보자.
경로 크기 맞추기 게임
시뮬레이터에서 해 볼 만한 것들. 인버터 체인에서 "모두 최소 크기"를 누르면 마지막 인버터가 부하 64를 혼자 구동하느라 막대 하나가 치솟는다. 크기를 4배씩(\(\hat f = 64^{1/4} = 2.83\)) 키우면 막대가 고르게 된다. 분기 경로에서는 분기 노력 \(B\)가 경로 노력에 그대로 곱해지는 것을 확인하자. 분기가 있는 게이트는 같은 단 노력을 내기 위해 더 커야 한다. 디코더에서는 주소 버퍼가 NAND4 여덟 개를 구동한다(\(b = 8\)). 3단으로는 \(\hat f \approx 5.4\)로 단 노력이 크다. 인버터 2개를 덧붙여 5단으로 만들면 지연이 오히려 준다. 단 수 자체도 최적화 대상이라는 뜻이고, 다음 절의 주제다.
인버터 체인을 최적화한 뒤 가운데 인버터 하나의 크기를 최적값의 2배(또는 1/2)로 바꾸면 전체 지연은 몇 % 늘어날까? 3%? 10%? 30%? 직접 맞혀 본 뒤 슬라이더로 확인하자.
답 보기
약 9%다. 그 인버터의 앞 단 노력은 \(2\hat f\), 자기 단 노력은 \(\hat f/2\)가 되어 두 단의 합이 \(2\hat f\)에서 \(2.5\hat f\)로 는다. \(\hat f = 2.83\)이면 1.4τ 증가, 전체 15.3τ의 약 9%다. 크기를 \(\sqrt2\)배만 틀리면 증가분은 \((\sqrt2 + 1/\sqrt2 - 2)\hat f \approx 0.34\)τ, 약 2%에 불과하다. 즉 최적점 근처에서 지연 곡선은 매우 평평하다. 그래서 실무에서는 게이트 크기를 라이브러리에 있는 몇 가지(X1, X2, X4 …)로 반올림해도 손해가 거의 없다.
① 경로의 \(G\), \(B\), \(H\)를 구해 \(F = GBH\). ② 단 수 \(N\)을 정한다(\(N \approx \log_4 F\)). ③ \(\hat f = F^{1/N}\), \(\hat D = N\hat f + P\). ④ 끝에서부터 \(C_{in,i} = g_i b_i C_{in,i+1}/\hat f\)로 크기를 정한다. 이 네 단계면 수십 개의 게이트로 된 경로도 몇 분 안에 "대략 최적" 크기를 얻는다. 합성 도구의 크기 조정도 결국 같은 원리를 훨씬 정교하게(경사·배선·실제 셀 크기 포함) 반복하는 것이다.
버퍼 체인과 최적 단 수
칩 밖으로 나가는 출력 패드, 수천 개 플립플롭에 퍼지는 클럭 넷, 긴 버스는 단위 인버터보다 수천 배 큰 커패시턴스다. 작은 게이트가 이것을 바로 구동하면 \(h\)가 수천이 되어 지연도 수천 \(\tau\)다. 해법은 인버터를 여러 단 이어 크기를 점점 키우는 버퍼 체인(Buffer chain, tapered buffer)이다. 단을 늘리면 단 노력은 줄지만 단마다 기생 지연 \(p_{inv}\)가 붙는다. 그 사이의 균형점이 최적 단 수다.
\(N\)을 연속 변수로 보고 \(D = N(F^{1/N} + p_{inv})\)를 미분해 0으로 놓으면, 최적 단 노력 \(\rho = F^{1/N}\)가 다음 식을 만족한다.
단위 인버터(입력 커패시턴스 0.21 fF)가 2 pF짜리 출력 패드를 구동해야 한다. 인버터 1단으로 바로 구동할 때와 최적 버퍼 체인을 쓸 때의 지연은 각각 대략 얼마일까? (\(p_{inv} = 1\), \(\tau = 1.5\) ps)
답 보기
\(H = 2000/0.21 \approx 9500\). 1단이면 \(D = 9500 + 1 \approx 9500\tau \approx 14\) ns. 최적 단 수는 \(\log_4 9500 \approx 6.6\)이므로 6~7단, 7단이면 \(f = 9500^{1/7} \approx 3.7\), \(D = 7(3.7 + 1) \approx 33\tau \approx 49\) ps. 300배 가까이 빠르다. 다만 마지막 인버터의 크기는 \(9500/3.7 \approx 2600\)배가 되어 면적과 스위칭 전력이 크다. 실제 패드 드라이버는 전력과 동시 스위칭 잡음 때문에 단 노력을 일부러 크게 잡기도 한다.
경로가 반전 논리면 인버터 개수의 홀짝이 정해져 있어 "최적 6.6단"을 6이나 7로 마음대로 반올림할 수 없다. 이때는 홀짝이 맞는 가까운 정수를 고르거나, 경로 안의 게이트 하나를 반전·비반전형으로 바꿔 극성을 맞춘다. 바닥이 평평하므로 한 단 차이의 손해는 보통 몇 % 이내다.
모델의 한계: 비대칭 게이트, 경사, NLDM
논리적 노력은 손 계산용 1차 모델이다. 실제 설계에서는 몇 가지가 더 들어간다.
비대칭 게이트. 상승과 하강 중 한쪽만 중요할 때가 있다. 예를 들어 도미노 회로(7장) 뒤의 인버터는 출력 상승만 빨라야 한다. 이때 nMOS를 절반으로 줄인 HI-skew 인버터를 쓰면 입력 커패시턴스가 줄어 상승 쪽 논리적 노력 \(g_u\)가 5/6으로 내려가고 하강 쪽 \(g_d\)는 5/3으로 올라간다(\(\mu = 2\)). 중요한 천이만 빠르게 하고 나머지는 희생하는 것이다. 반대로 LO-skew도 있다. 상승과 하강의 노력이 다르면 \(d\)를 천이 방향별로 따로 계산한다.
입력 경사. 앞 그림에서 보았듯 입력이 느리게 올라오면 지연이 커진다. \(d = gh + p\)에는 입력 경사가 없다. 각 단의 단 노력이 비슷하면(최적 경로가 그렇다) 경사도 비슷해서 이 효과가 \(\tau\) 보정 안에 흡수되지만, 단 노력이 들쭉날쭉한 경로에서는 오차가 커진다. 경사가 너무 느리면 관통 전류로 전력도 샌다. 그래서 설계 규칙은 최대 경사(max transition)를 제한한다.
NLDM 표. 표준 셀 라이브러리(.lib, Liberty 형식)는 셀마다, 입력 핀–출력 핀 쌍마다, 상승·하강마다 2차원 표를 담는다. 행은 입력 경사, 열은 출력 부하 커패시턴스, 칸은 회로 시뮬레이터(SPICE)로 잰 지연과 출력 경사다. 이것을 비선형 지연 모델(NLDM, Non-Linear Delay Model)이라 한다. 정적 타이밍 분석 도구는 앞 단에서 받은 경사와 이 단의 부하로 표를 찾아 보간하고, 계산한 출력 경사를 다음 단에 넘긴다.
그림에서 보듯 지연은 부하에 대해서는 거의 직선이지만 입력 경사에 대해서는 휘어 있다. 그래서 "비선형" 지연 모델이다. 최신 공정에서는 출력 파형 자체가 지수 함수에서 멀어지고 배선 저항이 커져 NLDM도 부족해졌다. 그래서 출력 전류 파형을 표로 담는 CCS(Composite Current Source)나 ECSM 모델을 쓴다. 공정·전압·온도 코너마다 이런 라이브러리가 따로 있다(16장).
핵심 정리
- 전파 지연은 입력 50%에서 출력 50%까지의 시간이다. 상승·하강 지연을 따로 재고 평균을 대표값으로 쓴다. 출력 경사(20–80%)는 다음 단의 입력 경사가 된다.
- RC 모델: 켜진 트랜지스터는 폭에 반비례하는 유효 저항, 게이트·확산·배선은 커패시터다. 1차 RC의 50% 지연은 \(0.69RC\)다.
- RC 트리에서 노드 지연은 엘모어 식 \(\tau_D = \sum_k R_{ik}C_k\)로 어림한다. 직렬 스택에서는 출력에 가까운 트랜지스터에 늦은 입력을 꽂는 것이 빠르다.
- 게이트 지연은 \(d = gh + p\)(\(\tau\) 단위)로 정규화된다. 인버터 FO4 = 5τ이고 DG-7에서 \(\tau \approx 1.5\) ps, FO4 ≈ 7.5 ps다.
- 논리적 노력 \(g\)는 같은 출력 전류를 내는 인버터 대비 입력 커패시턴스 비다(NAND2 4/3, NOR2 5/3, \(\mu=2\) 기준). \(n\)입력 NAND·NOR의 기생 지연은 약 \(n\)이다.
- 경로 노력 \(F = GBH\)가 주어지면 단 노력을 모두 \(\hat f = F^{1/N}\)로 같게 할 때 지연이 최소 \(\hat D = NF^{1/N} + P\)이고, 크기는 끝에서부터 거꾸로 정한다.
- 큰 부하를 구동할 때 최적 단 노력은 약 4(\(p_{inv}=1\)이면 3.6)이고 단 수는 \(\log_4 F\)다. 최적점 근처는 평평해 반올림 손해가 작다. 실제 도구는 경사·부하 2차원 NLDM 표로 지연을 계산한다.
확인 퀴즈
Q1. 유효 저항 6 kΩ인 게이트가 3 fF 부하를 구동한다. RC 모델로 본 전파 지연은 대략?
Q2. 전원 → R1=1 kΩ → 노드 1(C1=2 fF) → R2=2 kΩ → 노드 2(C2=1 fF)인 RC 사다리에서 노드 2의 엘모어 지연 \(\tau_D\)는?
Q3. 교과서 값(\(\mu=2\))으로 NOR2 게이트가 자기 입력 커패시턴스의 3배인 부하를 구동할 때 정규화 지연 \(d\)는?
Q4. 경로 노력 \(F = 64\), 단 수 3, 기생 지연 합 \(P = 5\)인 경로의 최소 지연 \(\hat D\)은?
Q5. 어떤 게이트 출력이 경로 위의 다음 게이트(입력 커패시턴스 C) 하나와 경로 밖의 같은 게이트 2개에 연결되어 있다. 이 단의 분기 노력 \(b\)는?
Q6. 기생 지연을 고려한(\(p_{inv} \approx 1\)) 버퍼 체인의 최적 단 노력이 \(e \approx 2.7\)보다 큰 약 3.6인 이유로 가장 알맞은 것은?