Setup/Hold 타이밍, 클럭 조절로 못 고치는 이유

SoC 타이밍 클로저, “클럭을 조절하면 된다”는 위험한 절반의 진실

반도체 설계 · 타이밍 분석(STA) · Setup/Hold

SoC 설계의 타이밍 클로저(timing closure)에서 가장 비싸게 반복되는 오해가 있다. “클럭 속도를 조절하면 타이밍 위반을 다스릴 수 있다”는 직관이다. 결론부터 말하면 이 직관은 절반만 맞고, 절반은 위험하게 틀렸다. Setup 위반은 클럭으로 어느 정도 다룰 수 있지만, Hold 위반은 클럭을 아무리 조절해도 절대 사라지지 않는다. 이 비대칭성을 모르면 양산된 칩이 통째로 고철이 된다. 아래에서 Setup/Hold의 정의, 클럭 주파수와의 정확한 인과관계, 위반이 만들어지는 구조, 시각적 파형, 그리고 실리콘 양산 관점의 비용까지 한 번에 정리한다.

플립플롭이 요구하는 두 개의 금지 구간

플립플롭(flip-flop)은 클럭의 특정 엣지(보통 상승 엣지)에서 입력 D를 캡처한다. 실제 소자는 데이터를 안정적으로 잡아채기 위해, 엣지 주변에 데이터가 절대 변하면 안 되는 두 구간을 요구한다. 이 두 구간이 바로 모든 타이밍 분석의 출발점이다.

⏱️ Setup Time (t_su)

클럭 엣지가 도착하기 전에 데이터가 미리 도착해 안정화돼 있어야 하는 최소 시간. “엣지보다 먼저 와서 준비하고 있어라”는 요구다.

🔒 Hold Time (t_h)

클럭 엣지가 지나간 후에도 데이터가 그대로 유지돼야 하는 최소 시간. “엣지가 지나갈 때까지는 값을 바꾸지 마라”는 요구다.

이 두 구간(setup window + hold window) 안에서 데이터가 흔들리거나 천이(transition)하면 타이밍 위반(timing violation)이다. 이때 플립플롭은 0도 1도 아닌 중간 전압에 갇히는 메타스테빌리티(metastability)에 빠진다. 출력이 언제 안정될지 예측 불가능해지고, 그 불확정 값이 후단 논리로 전파되면 시스템 전체가 오동작한다 (Weste & Harris, CMOS VLSI Design 4th ed., Ch.10).

클럭 속도와의 관계 — 통념의 정반대

현장에서 흔히 통용되는 “느린 클럭에서 Setup 위반, 빠른 클럭에서 Hold 위반”이라는 도식은 물리적으로 반대이거나 사실과 다르다. 이 한 가지를 정확히 아는 것이 이 글의 핵심이다.

🟢 Setup 위반은 클럭이 “빠를 때(고주파)” 발생한다

데이터가 출발 FF → 조합 논리 → 도착 FF까지 가는 데 걸리는 시간은 고정돼 있다. 클럭 주기를 줄이면(주파수↑) 다음 엣지가 데이터 도착보다 먼저 와버려 미처 못 잡는다. 반대로 주기를 늘리면(주파수↓) Setup 위반은 풀린다. 즉 “느린 클럭 → Setup 위반”은 인과가 정반대다.

🟡 Hold 위반은 클럭 주파수와 “무관”하다

Hold 위반은 같은 클럭 엣지에서 출발한 새 데이터가 너무 빨리 달려와 방금 캡처한 값을 덮어쓰는 경주(race) 현상이다. 비교 대상이 다음 주기가 아니라 동일 엣지이므로, 주기를 늘리든 줄이든 영향이 없다. 클럭을 느리게 해도 Hold 위반은 절대 사라지지 않는다.

🧠 통념 vs 물리적 사실: “Setup=느린 클럭, Hold=빠른 클럭”이라는 설명을 여기저기서 보게 되지만, 이는 물리와 어긋난다. 결정적 근거는 뒤에 나올 Hold Slack 수식에 클럭 주기(T_period) 항이 아예 없다는 점이다. 헤더로는 “Hold=고주파”라 적어둔 자료도 정작 자기가 제시한 수식엔 주기 항이 없다 — 헤더와 수식이 스스로 모순을 일으킨다. Hold가 주파수에 의존하지 않는다는 것은 의견이 아니라 수식으로 증명되는 사실이다.

위반이 만들어지는 자리: 경로와 STA 수식

위반은 데이터 경로(data path)클럭 경로(clock path)의 경쟁으로 결정된다. 데이터가 출발 FF에서 조합 논리를 거쳐 도착 FF에 닿는 속도와, 클럭이 두 FF에 도착하는 타이밍이 서로 경주를 벌이는 구조다.

d2 diagram

🔗 다이어그램 요약: 클럭 소스가 출발·도착 FF에 각각 클럭을 공급하고(도착 쪽엔 스큐가 더해짐), 데이터는 출발 FF → 조합 논리 → 도착 FF로 흐른다. 데이터 경로 지연(T_comb)과 클럭 경로 지연(스큐)의 경쟁이 위반 여부를 결정한다.

STA(Static Timing Analysis)는 여유 시간 Slack ≥ 0 이어야 통과로 본다. 핵심만 plain 표기로 옮기면 다음과 같다.

Setup 제약 :  T_period ≥ T_cq + T_logic(max) + T_setup − T_skew
Hold  제약 :  T_cq + T_logic(min) ≥ T_hold + T_skew      ← T_period 항이 없음

두 수식을 나란히 보면 “Hold는 주파수 무관”이 왜 사실인지 한눈에 드러난다. Setup 수식에는 T_period가 들어 있지만, Hold 수식에는 T_period 자체가 등장하지 않는다.

Setup 위반: 조합 논리(T_comb)가 너무 길거나, 주기(T_period)를 무리하게 짧게 잡았을 때 → “긴 경로(long/critical path)” 문제.

Hold 위반: 출발–도착 사이 논리가 거의 없어 데이터가 너무 빨리 도착하거나, 클럭 스큐(skew)가 클 때 → “짧은 경로(short path)” 문제.

실무 signoff에서는 여기에 OCV/AOCV/POCV derate(공정 산포), 지터(jitter), CRPR 등이 더해진다. 예컨대 Setup은 출발 경로에 late derate(예: ×1.05), 도착 경로에 early derate(예: ×0.95)를 적용해 최악 조건을 본다 (Synopsys PrimeTime User Guide 참조). 다만 derate 계수의 구체값은 라이브러리·공정마다 다르므로 위 1.05/0.95는 어디까지나 예시 수치로 보아야 한다.

파형으로 보는 정상 · Setup 위반 · Hold 위반

아래 파형은 하나의 캡처 엣지를 기준으로, 데이터가 setup/hold 윈도우를 침범하는 두 케이스를 표준 타이밍 동작에 맞춰 그린 것이다.

wavedrom diagram

📊 다이어그램 요약: 캡처 엣지 직전이 setup 윈도우, 직후가 hold 윈도우다. 정상은 두 윈도우 동안 D가 안정·유지되고, Setup 위반은 D가 엣지 직전(setup 윈도우 내부)에 늦게 천이하며, Hold 위반은 D가 엣지 직후(hold 윈도우 내부)에 너무 일찍 바뀌어 방금 잡은 값을 깨뜨린다.

정상: 데이터가 setup 윈도우 시작 전에 이미 안정돼 있고, hold 윈도우가 끝날 때까지 값이 변하지 않는다.

Setup 위반: 데이터 패스가 느려 엣지 직전(setup 윈도우 내부)에서야 데이터가 천이한다 → 불안정한 값을 캡처.

Hold 위반: 데이터 패스가 너무 빨라 엣지 직후(hold 윈도우 내부)에 곧바로 다음 값으로 덮어써진다 → 방금 잡은 값이 깨진다.

7nm/5nm 공정에서의 실제 ps 단위 수치

최신 FinFET/GAA 공정(TSMC·Samsung 7/5nm)에서 High-Performance 셀의 대략적 typical 값은 다음과 같다 (셀 라이브러리 레퍼런스 기준).

파라미터 Typical 범위
Setup time (t_su) 약 15ps ~ 40ps
Hold time (t_h) 약 −10ps ~ 20ps

실제 값은 drive strength, input slew, output load에 따라 NLDM/CCS 룩업 테이블로 주어지므로 위는 어디까지나 대표 범위다. 주목할 점은 현대 FF 설계가 클럭 버퍼 트리 지연을 조정해 hold time을 0 또는 음수(negative hold)로 만들어 hold 위험을 구조적으로 줄인다는 것이다. 다만 값이 작아질수록 OCV 마진 해석은 더 가혹해지므로, 작은 hold time이 곧 안전을 뜻하지는 않는다.

두 위반의 운명은 극과 극 — 비즈니스 임팩트

여기서 “클럭 조절” 직관의 실제 비용이 갈린다. 같은 “타이밍 위반”이라도, 어느 쪽이냐에 따라 회사의 운명이 달라진다.

🟢 Setup 위반 — 회복 가능

스펙상 목표 속도를 못 낸 것이므로, 양산 후라도 펌웨어/SW에서 주파수를 낮춰(underclocking) 하위 라인업으로 우회 판매가 가능하다. 예컨대 3GHz 목표였던 칩을 2.5GHz로 출하하는 식이다. 손실은 마진 축소에 그친다.

🔴 Hold 위반 — 파멸적

앞서 본 대로 클럭을 늦춰도 안 풀린다. 실리콘이 나온 뒤(post-silicon) hold 위반이 발견되면 어떤 속도에서도 부팅 불가한 고철이 되고, 마스크를 다시 파는 Respin(재설계) 외에 답이 없다 — 수십~수백억 원 손실과 수개월의 time-to-market 지연.

이 비대칭성이 “테이프아웃 전 hold 마진을 가장 보수적으로 잡는다”는 업계 철칙의 이유다. 아래 표는 두 위반을 한눈에 비교한 것이다.

구분 Setup 위반 Hold 위반
근본 원인 데이터 경로가 너무 느림 (롱패스) 데이터 경로가 너무 빠름 (숏패스)
클럭 주파수 영향 주파수↑ 악화 / 주파수↓ 해결 무관 (수식에 T_period 없음)
양산 후 운명 다운클럭으로 회생 가능 Respin 외 답 없음

같은 실수를 막는 의사결정 흐름

STA 결과 Slack이 음수로 나왔을 때, 가장 먼저 “어떤 위반인가”부터 갈라야 한다. 위반 종류에 따라 처방과 최후의 운명이 완전히 달라지기 때문이다.

mermaid diagram

🔁 다이어그램 요약: Slack이 음수면 먼저 Setup인지 Hold인지부터 판정한다 — Setup이면 롱패스 문제라 최악의 경우 주파수를 낮춰서라도 회생할 수 있지만, Hold이면 숏패스 문제라 클럭으로는 못 고치고 Respin 외에 답이 없다.

판정이 끝나면 위반 종류별로 처방이 갈린다. 구체적인 대응 카드는 다음과 같다.

✓ Setup 위반 처방 (롱패스 줄이기)

▶ 파이프라인 단 추가 — 긴 조합 논리를 여러 단으로 분할

▶ LVT(저문턱) 셀로 교체 — 지연을 줄여 데이터를 빨리 도착시킴

▶ 최후의 수단: 클럭 주기↑ / 주파수↓ — 낮춰서라도 판다

✓ Hold 위반 처방 (숏패스 늦추기)

▶ 숏패스에 의도적 지연 버퍼 삽입 — 데이터가 너무 빨리 도착하지 못하게

▶ CTS(클럭 트리 합성)로 클럭 스큐 재조정 — 경주 조건 자체를 완화

클럭 주파수 조절은 무효 — 절대 못 고친다

정리: 클럭은 만능 다이얼이 아니다

① Setup — 긴 조합 논리를 파이프라이닝으로 쪼개고, LVT 셀 배치로 지연을 줄인다. 최후엔 주파수를 낮춰서라도 판다.

② Hold — 숏패스에 의도적 지연 버퍼를 넣고, CTS 단계에서 스큐를 최소화한다. 클럭으로는 절대 못 고친다.

③ 인식 전환 — “클럭 = 만능 조절 다이얼”이라는 전제를 버려야 한다. Setup은 주파수에 종속이지만 Hold는 주파수와 무관하다는 것이 STA 수식 자체에 박혀 있는 사실이다. 테이프아웃 전 STA에서 hold 마진을 보수적으로 닫는 프로세스를 제도화하는 것이 곧 Respin 리스크를 0에 수렴시키는 길이다.

결국 타이밍 클로저의 본질은 “클럭을 어떻게 돌릴까”가 아니라 “데이터 경로와 클럭 경로의 경주를 어떻게 설계하느냐”에 있다. Setup은 사후에도 우회로가 있지만, Hold는 사전에 닫지 못하면 되돌릴 수 없다. 이 비대칭을 몸에 새기는 것이 수백억 원짜리 Respin을 피하는 첫걸음이다.

본 글은 SoC 설계·정적 타이밍 분석(STA)에 대한 기술 정보 제공을 목적으로 하며, 특정 공정·라이브러리의 수치는 대표 예시값입니다. 실제 설계에서는 사용 중인 셀 라이브러리와 EDA 툴의 공식 문서, signoff 가이드라인을 따라야 합니다.

G
GraceMoon
여러 출처로 확인한 리서치

웹 검색과 원문 확인을 거쳐 사실관계를 교차 점검한 뒤 정리합니다. 인용한 출처를 본문에 적습니다.

본 글은 공개된 데이터와 출처를 바탕으로 작성했습니다. 최종 업데이트: 2026-06-16

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤