Chapter 08

정적 타이밍 분석

배선이 끝난 칩에는 플립플롭 사이 경로가 수억 개 있다. 이 모든 경로에서 신호가 클럭 한 주기 안에 도착하는지를 시뮬레이션으로 확인하려면 모든 입력 조합을 넣어 봐야 하는데, 그것은 불가능하다. 정적 타이밍 분석(STA, Static Timing Analysis)은 입력 값을 잊고 “가장 늦게, 가장 빨리 도착할 수 있는 시각”만 그래프 위에서 더하고 비교한다. 고정 지연 DAG의 기본 전파에서는 노드·간선 수에 비례하는 O(|V|+|E|) 시간으로 칩 전체의 타이밍을 보증하는, 사인오프의 중심 도구다.

타이밍 경로와 두 개의 조건

동기 회로의 모든 경로는 레지스터(플립플롭)에서 출발해 레지스터에서 끝난다. 시작점은 플롭의 클럭 핀이나 칩 입력, 끝점은 플롭의 데이터 핀이나 칩 출력이다. 그래서 경로는 입력 → 레지스터, 레지스터 → 레지스터, 레지스터 → 출력, 입력 → 출력 네 종류다. 가장 많은 것은 레지스터 → 레지스터 경로이고, 두 플롭 사이 조합 논리를 지나는 데이터가 다음 클럭 엣지에 맞춰 안정되어 있어야 한다.

FF1 조합 논리tcomb (최소 ~ 최대) FF2 Q (tcq)D (tsetup, thold) CLK 캡처 클럭이 Δ(스큐)만큼 늦게 도착 Δ
그림 08-1. 레지스터 → 레지스터 경로. 런치 플롭 FF1이 클럭 엣지에서 데이터를 내보내고, 조합 논리를 지나 캡처 플롭 FF2가 다음 엣지에서 받는다. 캡처 쪽 클럭이 늦게 도착하는 만큼(스큐 Δ, 6장) 데이터에 시간이 더 주어진다.

캡처 플롭이 데이터를 안전하게 받으려면 두 가지 조건이 필요하다. 다음 엣지 전에 셋업 시간만큼 일찍 도착해야 하고(셋업), 같은 엣지 뒤에 홀드 시간 동안은 바뀌지 않아야 한다(홀드). 데이터가 너무 늦으면 셋업 위반, 너무 빠르면 홀드 위반이다.

$$\text{셋업 슬랙} = \big(T + \Delta - t_{\text{setup}}\big) - \big(t_{cq} + t_{\text{comb,max}}\big) \ge 0$$ $$\text{홀드 슬랙} = \big(t_{cq} + t_{\text{comb,min}}\big) - \big(\Delta + t_{\text{hold}}\big) \ge 0$$
\(T\)는 클럭 주기, \(\Delta\)는 캡처 클럭이 런치 클럭보다 늦게 도착하는 양(스큐). 셋업 슬랙은 “최대 요구 시간 − 늦은 도착 시간”, 홀드 슬랙은 “빠른 도착 시간 − 최소 요구 시간”이며, 각각 음수면 위반이다. 셋업은 주기 \(T\)에 달려 있어 클럭을 늦추면 고칠 수 있지만, 홀드는 \(T\)와 무관하다. 홀드 위반은 클럭을 늦춰도 고쳐지지 않는다. 그래서 홀드 위반이 남은 칩은 어떤 주파수에서도 동작하지 않는다.
SIMULATOR

타이밍 다이어그램: 셋업·홀드 슬랙

셋업 슬랙—
홀드 슬랙—
fmax—
해볼 것: ① 주기를 줄여 셋업 슬랙이 0이 되는 곳이 fmax다. ② 스큐를 +로 키우면(캡처 클럭이 늦음) 셋업 슬랙은 늘고 홀드 슬랙은 준다. 이것이 6장의 유용한 스큐(useful skew)이자 동시에 홀드 위험이다. ③ 조합 지연 최소를 0에 가깝게(플롭끼리 바로 연결, 예: 시프트 레지스터) 하고 스큐를 +60 ps 주면 홀드 위반이 생긴다. 주기를 아무리 늘려도 사라지지 않는다. 해결책은 그 경로에 지연 셀(버퍼)을 넣는 것이다. (홀드 시간은 셋업 시간의 절반으로 가정, 단위 ps)

타이밍 그래프와 임계 경로

STA는 넷리스트를 방향성 비순환 그래프(DAG)로 본다. 노드는 셀의 핀, 간선은 셀 지연(입력 → 출력)과 배선 지연(출력 → 다음 입력)이다. 계산은 두 번의 훑기로 끝난다.

  1. 도착 시간(AT, Arrival time)을 시작점에서 앞으로 전파한다: \(AT(v) = \max_{u \to v}\big(AT(u) + d_{uv}\big)\). 셋업 분석은 최대, 홀드 분석은 최소를 쓴다.
  2. 요구 시간(RT, Required time)을 끝점에서 거꾸로 전파한다: \(RT(u) = \min_{u \to v}\big(RT(v) - d_{uv}\big)\), 끝점의 RT는 \(T - t_{\text{setup}}\).
  3. 셋업 분석에서 각 노드의 슬랙 = RT − AT. 홀드 분석에서는 빠른 도착을 전파하고 슬랙 = AT − RT로 판정한다. 슬랙이 가장 작은 노드들을 이으면 임계 경로(Critical path)다.

위상 정렬 순서로 한 번씩만 방문하면 되므로 계산량은 간선 수에 비례한다. 경로 수(지수적으로 많다)를 하나씩 세지 않는다는 것이 STA의 핵심이다. 대가는 비관성이다. 실제로는 동시에 일어날 수 없는 조합(거짓 경로)도 최악으로 더하므로, 설계자는 거짓 경로(False path)와 멀티사이클 경로(Multicycle path)를 SDC로 알려 준다.

SIMULATOR

도착·요구 시간 전파와 임계 경로

게이트를 누르면 지연 +10 ps (Shift: −10)
WNS (최악 슬랙)—
TNS (음수 슬랙 합)—
위반 끝점—
해볼 것: ① 노드 위의 숫자는 AT/RT, 색은 슬랙(빨강 음수, 초록 여유)이다. 굵은 경로가 임계 경로다. ② 임계 경로 위 게이트 하나를 빠르게 하면 임계 경로가 다른 곳으로 옮겨 간다. 타이밍 수정이 “두더지 잡기”인 이유다. ③ 업사이징 버튼을 반복하면 WNS가 좋아지다가 더 이상 좋아지지 않는 지점이 온다. 실제 도구는 큰 셀이 앞단 부하를 늘리는 효과까지 계산한다(여기서는 무시). ④ 홀드 모드로 바꾸면 최소 지연 경로를 본다. 셋업과 홀드의 임계 경로는 서로 다르다. (플롭 tcq 40 ps, tsetup 25 ps, thold 15 ps, 배선 지연은 게이트 지연에 포함)

셀 지연은 표에서 읽는다

각 셀의 지연은 라이브러리(.lib)에 미리 계산된 표로 들어 있다. 셀 특성화(characterization) 단계에서 SPICE로 수천 번 시뮬레이션해 만든 것이다. 가장 흔한 형식인 NLDM(Non-Linear Delay Model)은 지연과 출력 슬루(전이 시간)를 두 변수의 2차원 표로 준다. 행은 입력 슬루(앞단이 얼마나 천천히 구동하나), 열은 출력 부하 커패시턴스(뒤에 무엇이 달렸나)다. 표 사이의 값은 이중선형 보간으로 얻는다.

cell (INV_X1) {
  area : 0.479 ;
  pin (A) { direction : input ; capacitance : 0.0010 ; }      /* pF */
  pin (Y) { direction : output ; function : "!A" ;
    timing () { related_pin : "A" ;
      cell_rise (delay_template_5x5) {
        index_1 ("0.005, 0.02, 0.05, 0.1, 0.2") ;              /* 입력 슬루 ns */
        index_2 ("0.0005, 0.002, 0.005, 0.01, 0.02") ;         /* 부하 pF */
        values ("0.008, 0.016, 0.031, 0.056, 0.106", ... ) ;
      } } } }
SIMULATOR

NLDM 지연 표와 이중선형 보간

지연 (보간)—
출력 슬루—
팬아웃 환산 (부하/입력 C)—
해볼 것: ① 표의 색은 지연(ps)이다. 부하가 커질수록 거의 선형으로, 입력 슬루가 커질수록 완만하게 는다. ② X4 셀은 같은 부하에서 지연이 훨씬 작지만 입력 커패시턴스가 4배라 앞단을 느리게 만든다(3장 논리적 노력). ③ 출력 슬루가 다음 셀의 입력 슬루가 된다. 그래서 STA는 지연과 함께 슬루를 전파한다. 슬루가 너무 크면 누설·단락 전류와 잡음 취약성이 커져 라이브러리마다 최대 전이 시간 규칙(max_transition)이 있다. (EDU45 교육용 표: 지연 ≈ p + g·R·CL + k·슬루 형태로 생성)

배선 지연: 엘모어와 리피터

공정이 미세해지며 트랜지스터는 빨라졌지만 배선은 오히려 느려졌다. 배선 단면이 줄면 저항이 면적에 반비례해 커지고(크기 효과로 더 빨리, ProcessBook 11장), 커패시턴스는 그대로이기 때문이다. RC 회로망의 지연은 엘모어 지연(Elmore delay)으로 간단히 근사한다.

$$\tau_{\text{Elmore}} = \sum_i R_i \, C_{\text{down},i}, \qquad \tau_{E,\text{wire}} = \frac{1}{2}rcL^2,\quad t_{50\%,\text{wire}} \approx 0.38rcL^2,\quad t_{50\%,\text{lumped}} \approx 0.69RC$$
\(R_i\)는 구동점에서 노드 \(i\)까지 경로의 저항 조각, \(C_{\text{down},i}\)는 그 조각 아래쪽에 달린 모든 커패시턴스. 균일 배선의 두 식은 이상적인 계단 입력·수신 부하 없는 분포 RC 기준이며, 0.69RC는 단일 집중 RC의 50% 지연이다. 일반 RC 트리에 0.69τ를 일괄 적용하는 식은 아니다. 길이 \(L\)인 균일 배선의 지연은 \(L^2\)에 비례한다. 길이를 \(k\) 토막으로 나누고 사이에 버퍼(리피터)를 넣으면 토막마다 \((L/k)^2\)이 되어 전체는 \(k\cdot(L/k)^2 = L^2/k\), 리피터 지연이 더해져 최적 \(k\)에서 지연이 \(L\)에 비례하게 된다.
SIMULATOR

긴 배선의 지연과 리피터 삽입

금속층
배선 R · C—
지연 (50%)—
리피터 없을 때—
FO4 환산—
해볼 것: ① M2로 5 mm를 리피터 없이 보내면 수 ns, 클럭 수십 주기가 걸린다. 기본 크기 s = 8에서는 리피터 없음 약 3016 ps가 k = 13에서 약 1061 ps로 줄어 약 2.84배 빨라진다. 이 실험의 길이·크기 범위에서는 최대 약 4.04배다. ② 아래 곡선의 리피터 없음(점선)은 L², 최적 리피터(실선)는 L에 비례한다. ③ 같은 길이라도 위층 두꺼운 금속(M10)은 저항이 작아 리피터가 덜 필요하다. 그래서 긴 전역 신호와 클럭은 위층으로 보낸다(7장). (M2: r ≈ 1.2 Ω/µm·c ≈ 0.2 fF/µm, M6: 0.25 Ω/µm·0.2 fF/µm, M10: 0.02 Ω/µm·0.25 fF/µm, 단위 크기 버퍼 R0 = 8 kΩ·C0 = 1 fF·p = 7 ps로 가정한 교육용 값)

코너, 변동, 그리고 비관성

같은 회로도 공정·전압·온도(PVT)에 따라 속도가 다르다. 공정 편차는 NMOS·PMOS 각각 느림(S)·보통(T)·빠름(F)으로 묶어 SS·TT·FF·SF·FS 코너를 만들고, 전압은 ±10%, 온도는 −40~125 °C를 본다. 셋업은 가장 느린 코너(SS, 저전압, 보통 고온)에서, 홀드는 가장 빠른 코너(FF, 고전압, 저온)에서 확인하는 것이 기본이다.

분석공정전압온도배선 RC보는 것
셋업 (최대 지연)SS0.9 V125 °C (또는 −40 °C*)Cworst / RCworstfmax, 셋업 슬랙
홀드 (최소 지연)FF1.1 V−40 °CCbest홀드 슬랙
누설 전력FF1.1 V125 °C—최대 누설 (9장)
전형TT1.0 V25 °Ctypical보고·참고

*미세 공정에서는 낮은 전압에서 문턱 전압의 온도 의존성이 이동도 감소를 이겨 저온에서 더 느려지는 온도 역전(temperature inversion)이 나타나, 셋업도 저온 코너를 함께 본다. 칩 안 위치에 따른 편차는 OCV(On-chip variation) 디레이트로 다룬다. 런치 경로는 느리게, 캡처 클럭 경로는 빠르게 가정하는 식인데, 두 경로가 공유하는 클럭 구간까지 서로 다르게 가정하는 것은 물리적으로 불가능하므로 그 몫을 되돌려 준다(CPPR, 6장). 경로 깊이·거리에 따라 디레이트를 줄이는 AOCV, 통계적 분포를 쓰는 POCV/SOCV로 비관성을 깎아 낸다.

배선 후에는 실제 배선의 저항·커패시턴스를 추출(SPEF)해 지연을 다시 계산한다. 옆 배선이 반대로 스위칭하면 결합 커패시턴스가 실효적으로 두 배가 되는 크로스토크도 지연에 더한다(SI-aware STA).

타이밍 고치기

셋업 위반이 남으면 도구와 설계자는 다음을 순서대로 시도한다. 아래로 갈수록 비용이 크다.

기법효과대가
셀 업사이징 (X1 → X2·X4)구동력 ↑, 지연 ↓면적·입력 C·전력 ↑ (앞단이 느려짐)
Vt 교체 (HVT → SVT → LVT)같은 면적에서 빠름누설 전력 지수적 증가 (9장)
버퍼·리피터 삽입, 배선 층 올리기긴 배선 지연 ↓면적·전력, 배선 자원
논리 재구성 (늦은 신호를 출력 가까이)논리 깊이 ↓재합성
유용한 스큐 (6장)슬랙을 이웃 단으로 빌림홀드·다음 단 슬랙 감소
파이프라인 단 추가주기 안 논리 깊이 반감지연 사이클 증가, RTL 변경

홀드 위반은 반대로 지연을 더한다. 지연 셀이나 버퍼를 끼우는 것이 정석이며, 셋업 슬랙을 해치지 않는 범위에서만 가능하다. 배선 뒤의 이런 작은 수정을 ECO(Engineering change order)라 하고, 마스크 제작 뒤에는 미리 뿌려 둔 예비 셀을 금속층만 바꿔 연결하는 금속 ECO로 비용을 줄인다(12장).

직접 맞춰 보기

도전 과제

면적 예산 안에서 셀 크기를 골라 슬랙을 0 이상으로 만드는 15장 타이밍 클로저 퍼즐에 도전해 보자. 업사이징이 앞단을 느리게 만드는 효과까지 들어 있다.

핵심 정리

  1. STA는 입력 값과 무관하게 최악·최선 도착 시간을 그래프 위에서 전파해 모든 경로를 한 번에 보증한다.
  2. 셋업 슬랙 = \(T + \Delta - t_{setup} - t_{cq} - t_{comb,max}\), 홀드 슬랙 = \(t_{cq} + t_{comb,min} - \Delta - t_{hold}\). 홀드는 주기와 무관하다.
  3. 스큐는 셋업에 유리하면 홀드에 불리하다.
  4. 셀 지연은 NLDM 표(입력 슬루 × 부하)에서 보간하고, 출력 슬루를 함께 전파한다.
  5. 배선 지연은 엘모어 근사로 L²에 비례하며, 리피터로 L에 비례하게 만든다.
  6. 셋업은 느린 코너, 홀드는 빠른 코너에서 확인하고, OCV·크로스토크까지 더해 사인오프한다.

확인 퀴즈

T = 500 ps, tcq = 50 ps, 조합 지연 최대 400 ps, tsetup = 30 ps, 스큐 0일 때 셋업 슬랙은?

(500 − 30) − (50 + 400) = 470 − 450 = +20 ps.

칩이 홀드 위반을 가진 채 제조되었다. 맞는 설명은?

홀드 조건에는 T가 없다. 같은 엣지에서 출발한 데이터가 너무 빨리 도착해 캡처 플롭의 값을 덮어쓰는 문제다.

캡처 플롭의 클럭이 런치 플롭보다 50 ps 늦게 도착한다(양의 스큐). 이 스큐는?

데이터가 도착해야 하는 마감이 늦춰지므로 셋업에는 유리하지만, 같은 엣지의 홀드 창도 늦춰져 빠른 데이터와 부딪치기 쉽다.

리피터 없이 길이가 2배가 된 균일 RC 배선의 지연은 대략 몇 배인가?

R과 C가 모두 L에 비례하므로 RC ∝ L². 최적 리피터를 넣으면 L에 비례하게 된다.

NLDM 표의 두 축은?

PVT는 표가 아니라 라이브러리 파일 자체(코너별 .lib)로 구분한다. 한 표 안의 축은 입력 슬루와 부하다.