티스토리 뷰
Setup Time과 Hold Time 총정리 | 위반(violation) 원인과 해결 방법
혜숑(hyeshong) 2024. 4. 12. 13:27목차
한 줄 요약
Setup time은 클럭 엣지 전에 데이터가 안정적으로 유지돼야 하는 최소 시간이고, Hold time은 클럭 엣지 후에도 데이터가 바뀌지 않고 유지돼야 하는 최소 시간입니다. 아래 본문에서 정의와 violation 해결 방법을 다루고, 맨 아래에서 비교표와 조건식으로 한 번 더 정리합니다.
[Setup Time & Hold Time]
1) Setup Time
- 상승(하강)edge 전, 입력으로 받아들이는데 필요한 최소 시간
- Switching이 일어나기 전까지 입력이 정확히 인식되는데 필요한 최소 유지 시간을 말합니다. 즉 Data의 파형이 High인지 Low인지를 판별하는데 필요한 최소 시간을 의미합니다.

2) Hold Time
- 상승(하강)edge 후, 출력으로 유지하기위해 필요한 최소 시간
- Switching이 일어난 후 상태의 변화가 정확히 인식되도록 필요한 최소 시간을 말합니다. 즉, 판별된 결과가 유지되어야 하는 최소 시간을 의미합니다.

3) Setup Time과 Hold Time을 만족시키지 않을 때의 문제점
- 정상 동작을 하지 못하게 됩니다. 요구하는 setup time 전에 data가 switching 되어 data가 1인지 0인지 정확하게 인식하지 못해 오작동을 할 수 있습니다. 이를 setup time violation이라고 하는데, hold time violation도 같은 원리입니다. 따라서 time violation이 발생되지 않게 하기 위해서는 “길이” 를 맞추는 것이 아닌 “Delay”룰 맞춰야 합니다.
setup violation
data path를 최대한 빠르게 optimize 해주어야 함.
- transition time 줄이기
- cell Vth, drive strength를 바꿔 cell delay 줄이기
- 미세공정으로 갈수록 crosstalk로 인하여 cell delay가 크게 증가하는데, 이러한 이유로 setup이 증가하면 routing간의 간격을 조금 벌려주거나 상위 metal로 care함
Hold violation
data path를 느리게 해서 data가 유지되어야 하므로 buffer를 insert하여 data path의 delay를 늘려준다.
- Endpoint를 기준으로 buffer를 insert하면 수많은 buffer가 insert되어 physical적으로 issue가 발생할 수 있음.
-> delay cell을 적절하게 섞어서 insert하거나 common이 되는 data path에 buffer를 insert한다.
| (hold worst) fast : ff / highest V / lowest Temp (저항 낮음) / (R)C min (hold worst TIV) : ff / highest V / highest Temp / (R)C min (setup worst) slow : ss / lowest V / highest Temp (저항 높음) / (R)C max (setup worst TIV) slow : ss / lowest V / lowest Temp / (R)C max |
Setup / Hold 조건식으로 이해하기
플립플롭 사이의 경로에서 다음과 같이 단순화해서 생각할 수 있습니다. (T_clk: 클럭 주기, T_clk→Q: 클럭에서 출력까지 지연, T_logic: 두 플립플롭 사이 조합 로직 지연)
Setup: T_clk ≥ T_clk→Q + T_logic(max) + T_setup (+ clock skew 보정) Hold : T_clk→Q + T_logic(min) ≥ T_hold (+ clock skew 보정)
Setup은 가장 느린 경로(max)가, Hold는 가장 빠른 경로(min)가 문제입니다. 캡처 쪽 클럭이 늦게 도착하면 Setup에는 유리하지만 Hold에는 불리합니다.
Setup vs Hold 한눈에 비교
| 구분 | Setup violation | Hold violation |
|---|---|---|
| 기준 시점 | 클럭 엣지 전 | 클럭 엣지 후 |
| 원인 | data path가 너무 느림 | data path가 너무 빠름 |
| 클럭 주기의 영향 | 있음 (주기를 늘리면 완화) | 없음 (주기를 바꿔도 해결되지 않음) |
| 대표 해결 방법 | 로직 단순화, 셀 크기·Vth 조정, 파이프라인 분할 | delay cell·buffer 삽입 |
| 주로 확인하는 코너 | slow(ss) | fast(ff) |
자주 묻는 질문
Q. 클럭 주파수를 낮추면 hold violation도 해결되나요?
해결되지 않습니다. Hold 조건에는 클럭 주기(T_clk)가 들어 있지 않아서, 주파수를 낮춰도 그대로입니다. 그래서 hold violation은 칩이 만들어진 뒤에는 주파수로 우회하기 어렵기 때문에 설계 단계에서 반드시 해결해야 합니다.
Q. Setup violation은 어떻게 줄이나요?
critical path의 로직 단계를 줄이거나, 셀 크기(drive strength)와 Vth를 조정해 셀 지연을 줄이고, 필요하면 파이프라인을 나눕니다. 본문에 정리된 내용처럼 미세공정에서는 crosstalk로 지연이 커지므로 배선 간격이나 metal 층도 함께 고려합니다.
Q. Hold violation은 어떻게 줄이나요?
data path를 늦춰서 데이터가 충분히 유지되게 합니다. 보통 buffer나 delay cell을 삽입하며, endpoint마다 넣으면 buffer가 너무 많아지므로 공통 경로에 삽입하는 방식도 씁니다.
Q. 왜 setup은 ss, hold는 ff 코너에서 보나요?
Setup은 경로가 가장 느릴 때(slow 코너) 위반하기 쉽고, Hold는 경로가 가장 빠를 때(fast 코너) 위반하기 쉽기 때문입니다.
'반도체 공정 및 설계 > ASIC 설계' 카테고리의 다른 글
| CTS (Clock Tree Synthesis) (3) | 2024.04.12 |
|---|---|
| Latch와 Flip-Flop 차이 총정리 | 레벨 트리거 vs 엣지 트리거 (0) | 2024.04.04 |
| 논리게이트 총정리 | AND·OR·NOT·NAND·NOR·XOR 진리표와 CMOS 구현 차이 (0) | 2023.07.25 |
| target library와 link library 차이 | Design Compiler 라이브러리 설정 총정리 (2) | 2023.07.25 |
| ASIC DEF·LEF 차이와 RTL·Netlist 차이 총정리 | P&R 입력·출력 파일 한눈에 (0) | 2023.07.24 |