정적 타이밍 분석
배선이 끝난 칩에는 플립플롭 사이 경로가 수억 개 있다. 이 모든 경로에서 신호가 클럭 한 주기 안에 도착하는지를 시뮬레이션으로 확인하려면 모든 입력 조합을 넣어 봐야 하는데, 그것은 불가능하다. 정적 타이밍 분석(STA, Static Timing Analysis)은 입력 값을 잊고 “가장 늦게, 가장 빨리 도착할 수 있는 시각”만 그래프 위에서 더하고 비교한다. 고정 지연 DAG의 기본 전파에서는 노드·간선 수에 비례하는 O(|V|+|E|) 시간으로 칩 전체의 타이밍을 보증하는, 사인오프의 중심 도구다.
- 타이밍 경로의 종류와 시작점·끝점, 런치·캡처 클럭을 구분한다.
- 셋업·홀드 조건과 슬랙을 식으로 세우고, 클럭 스큐가 둘에 반대로 작용함을 확인한다.
- 타이밍 그래프에서 도착 시간·요구 시간을 전파해 임계 경로를 찾는다.
- NLDM 표(입력 슬루 × 출력 부하)로 셀 지연을 보간한다.
- 엘모어 지연으로 배선 지연을 계산하고 리피터가 L² 지연을 L로 바꾸는 원리를 안다.
- PVT 코너, OCV, 타이밍 수정(ECO) 기법을 설명한다.
타이밍 경로와 두 개의 조건
동기 회로의 모든 경로는 레지스터(플립플롭)에서 출발해 레지스터에서 끝난다. 시작점은 플롭의 클럭 핀이나 칩 입력, 끝점은 플롭의 데이터 핀이나 칩 출력이다. 그래서 경로는 입력 → 레지스터, 레지스터 → 레지스터, 레지스터 → 출력, 입력 → 출력 네 종류다. 가장 많은 것은 레지스터 → 레지스터 경로이고, 두 플롭 사이 조합 논리를 지나는 데이터가 다음 클럭 엣지에 맞춰 안정되어 있어야 한다.
캡처 플롭이 데이터를 안전하게 받으려면 두 가지 조건이 필요하다. 다음 엣지 전에 셋업 시간만큼 일찍 도착해야 하고(셋업), 같은 엣지 뒤에 홀드 시간 동안은 바뀌지 않아야 한다(홀드). 데이터가 너무 늦으면 셋업 위반, 너무 빠르면 홀드 위반이다.
타이밍 다이어그램: 셋업·홀드 슬랙
타이밍 그래프와 임계 경로
STA는 넷리스트를 방향성 비순환 그래프(DAG)로 본다. 노드는 셀의 핀, 간선은 셀 지연(입력 → 출력)과 배선 지연(출력 → 다음 입력)이다. 계산은 두 번의 훑기로 끝난다.
- 도착 시간(AT, Arrival time)을 시작점에서 앞으로 전파한다: \(AT(v) = \max_{u \to v}\big(AT(u) + d_{uv}\big)\). 셋업 분석은 최대, 홀드 분석은 최소를 쓴다.
- 요구 시간(RT, Required time)을 끝점에서 거꾸로 전파한다: \(RT(u) = \min_{u \to v}\big(RT(v) - d_{uv}\big)\), 끝점의 RT는 \(T - t_{\text{setup}}\).
- 셋업 분석에서 각 노드의 슬랙 = RT − AT. 홀드 분석에서는 빠른 도착을 전파하고 슬랙 = AT − RT로 판정한다. 슬랙이 가장 작은 노드들을 이으면 임계 경로(Critical path)다.
위상 정렬 순서로 한 번씩만 방문하면 되므로 계산량은 간선 수에 비례한다. 경로 수(지수적으로 많다)를 하나씩 세지 않는다는 것이 STA의 핵심이다. 대가는 비관성이다. 실제로는 동시에 일어날 수 없는 조합(거짓 경로)도 최악으로 더하므로, 설계자는 거짓 경로(False path)와 멀티사이클 경로(Multicycle path)를 SDC로 알려 준다.
도착·요구 시간 전파와 임계 경로
셀 지연은 표에서 읽는다
각 셀의 지연은 라이브러리(.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", ... ) ;
} } } }
NLDM 지연 표와 이중선형 보간
배선 지연: 엘모어와 리피터
공정이 미세해지며 트랜지스터는 빨라졌지만 배선은 오히려 느려졌다. 배선 단면이 줄면 저항이 면적에 반비례해 커지고(크기 효과로 더 빨리, ProcessBook 11장), 커패시턴스는 그대로이기 때문이다. RC 회로망의 지연은 엘모어 지연(Elmore delay)으로 간단히 근사한다.
긴 배선의 지연과 리피터 삽입
코너, 변동, 그리고 비관성
같은 회로도 공정·전압·온도(PVT)에 따라 속도가 다르다. 공정 편차는 NMOS·PMOS 각각 느림(S)·보통(T)·빠름(F)으로 묶어 SS·TT·FF·SF·FS 코너를 만들고, 전압은 ±10%, 온도는 −40~125 °C를 본다. 셋업은 가장 느린 코너(SS, 저전압, 보통 고온)에서, 홀드는 가장 빠른 코너(FF, 고전압, 저온)에서 확인하는 것이 기본이다.
| 분석 | 공정 | 전압 | 온도 | 배선 RC | 보는 것 |
|---|---|---|---|---|---|
| 셋업 (최대 지연) | SS | 0.9 V | 125 °C (또는 −40 °C*) | Cworst / RCworst | fmax, 셋업 슬랙 |
| 홀드 (최소 지연) | FF | 1.1 V | −40 °C | Cbest | 홀드 슬랙 |
| 누설 전력 | FF | 1.1 V | 125 °C | — | 최대 누설 (9장) |
| 전형 | TT | 1.0 V | 25 °C | typical | 보고·참고 |
*미세 공정에서는 낮은 전압에서 문턱 전압의 온도 의존성이 이동도 감소를 이겨 저온에서 더 느려지는 온도 역전(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장 타이밍 클로저 퍼즐에 도전해 보자. 업사이징이 앞단을 느리게 만드는 효과까지 들어 있다.
핵심 정리
- STA는 입력 값과 무관하게 최악·최선 도착 시간을 그래프 위에서 전파해 모든 경로를 한 번에 보증한다.
- 셋업 슬랙 = \(T + \Delta - t_{setup} - t_{cq} - t_{comb,max}\), 홀드 슬랙 = \(t_{cq} + t_{comb,min} - \Delta - t_{hold}\). 홀드는 주기와 무관하다.
- 스큐는 셋업에 유리하면 홀드에 불리하다.
- 셀 지연은 NLDM 표(입력 슬루 × 부하)에서 보간하고, 출력 슬루를 함께 전파한다.
- 배선 지연은 엘모어 근사로 L²에 비례하며, 리피터로 L에 비례하게 만든다.
- 셋업은 느린 코너, 홀드는 빠른 코너에서 확인하고, OCV·크로스토크까지 더해 사인오프한다.
확인 퀴즈
T = 500 ps, tcq = 50 ps, 조합 지연 최대 400 ps, tsetup = 30 ps, 스큐 0일 때 셋업 슬랙은?
칩이 홀드 위반을 가진 채 제조되었다. 맞는 설명은?
캡처 플롭의 클럭이 런치 플롭보다 50 ps 늦게 도착한다(양의 스큐). 이 스큐는?
리피터 없이 길이가 2배가 된 균일 RC 배선의 지연은 대략 몇 배인가?
NLDM 표의 두 축은?