Setup Time과 Hold Time — VLSI 타이밍의 기초 완전 정복

Setup Time과 Hold Time — VLSI 타이밍의 기초 완전 정복
Photo by Aron Visuals / Unsplash

Setup Time과 Hold Time은 디지털 회로의 타이밍 제약 중 가장 중요한 두 가지입니다.

  • Setup Time은 데이터가 클록 엣지 이전에 데이터가 안정적으로 도착해야 하는 시간이고
  • Hold Time은 클록 엣지 이후에 데이터가 유지되어야 하는 시간입니다.

이 두 조건을 동시에 만족하지 못하면 metastable state에 빠져 회로가 오작동할 수 있습니다.

개요: 비행기 도착 비유로 이해하는 Setup과 Hold

어떤 공항의 승객 탑승 시스템을 생각해봅시다. 비행기는 정확히 정해진 시간(클록 엣지)에 출발합니다. 승객이 탈 수 있으려면 두 가지 조건이 필요합니다:

  1. Setup Time 조건: 승객은 비행기 출발 30분 전(Setup Time)에는 반드시 플랫폼에 도착해야 합니다. 만약 출발 30분 전에 도착하면? 이미 탑승 게이트는 닫혀있고, 안타깝지만 너무 늦어서 탈 수 없습니다. 이것이 Setup Violation입니다.
  2. Hold Time 조건: 비행기가 착륙한 후 5분(Hold Time) 동안은 비행기에 있던 승객이 갑자기 빠져나가면 안 됩니다. 승객을 공항에 연결 할 수 있는 시스템이 준비되어야하기 때문입니다. 출발 직후 2분 만에 나가면? Hold Violation입니다.

VLSI 설계에서도 정확히 같은 원리가 적용됩니다. 플립플롭의 입력 데이터가 클록 엣지에 정확히 capture되려면, 이 두 시간 윈도우를 모두 만족해야 합니다.

Setup Time: 기초 개념

Setup Time의 정의

Setup Time (tsu)은 플립플롭의 입력 데이터가 클록 엣지 이전에 안정적이어야 하는 최소 시간입니다. 물리적으로는 플립플롭 내부의 latch 회로가 새로운 데이터를 정확히 capture하기 위해 필요한 전자 동작 시간입니다.

예를 들어, Setup Time이 1.2ns인 플립플롭이 있다고 합시다. 클록 상승 엣지가 정확히 10.0ns에 발생한다면, 입력 데이터는 10.0ns - 1.2ns = 8.8ns보다 이전에 도착해야 합니다.

Setup Slack 계산

Static Timing Analysis(STA)에서 setup slack은 다음과 같이 계산됩니다:

Setup Slack = Required Time - Arrival Time
= (Clock Time - Setup Time) - Data Arrival Time

  • Required Time: 데이터가 도착해야 하는 최종 시간(클록 엣지 - Setup Time)
  • Arrival Time: 데이터가 실제로 도착하는 시간
  • 양수 Slack: 여유가 있음(안전)
  • 음수 Slack: Violation(위반)

Setup Violation이 발생하는 이유

Setup Violation은 다음과 같은 상황에서 발생합니다:

  • Combinational logic 경로의 지연이 너무 길다
  • 클록 주기가 너무 짧다
  • 데이터 경로의 버퍼나 inverter 부족으로 신호 지연이 크다
  • PVT(Process, Voltage, Temperature) 변화로 인한 지연 증가

Hold Time: 기초 개념

Hold Time의 정의

Hold Time (th)은 플립플롭의 입력 데이터가 클록 엣지 이후에 안정적으로 유지되어야 하는 최소 시간입니다. 클록 엣지에서 데이터가 capture되고 내부 저장소에 저장되는 동안, 입력이 변경되지 않아야 합니다.

예를 들어, Hold Time이 0.8ns인 플립플롭이 있다고 합시다. 클록 상승 엣지가 10.0ns에 발생한다면, 입력 데이터는 10.0ns + 0.8ns = 10.8ns까지 변경되면 안 됩니다.

Hold Slack 계산

Hold slack은 setup과 조금 다르게 계산됩니다:

Hold Slack = Arrival Time - Required Time
= Data Arrival Time - (Clock Time + Hold Time)

  • Required Time: 데이터가 변경되어도 되는 최소 시간(클록 엣지 + Hold Time)
  • Arrival Time: 이전 클록 사이클의 데이터가 도착하는 시간
  • 양수 Slack: 여유가 있음(안전)
  • 음수 Slack: Violation(위반)

Hold Violation의 메커니즘

Hold Violation은 combinational path의 지연이 너무 짧을 때 발생합니다. 역설적으로 들리겠지만, 다음을 고려하세요:

이전 클록 사이클의 데이터가 너무 빨리 다음 플립플롭에 도착하면, 그 플립플롭의 입력이 current 클록 엣지 직후에 이미 변경됩니다. 이는 플립플롭이 현재 데이터를 제대로 latch하기 전에 입력이 바뀌므로, 메타스테이블 상태에 빠질 수 있습니다.

구체적으로:

  • Prev FF의 출력이 빠르게 바뀐다 (short combinational delay)
  • Current FF의 입력이 Hold Time 윈도우 내에 변경된다
  • Current FF이 이전 값과 새로운 값의 중간 상태를 capture할 수 있다
  • 결과: 메타스테이블 상태 → 수렴 지연 증가 → 타이밍 문제

실제 예: Setup Time 분석

  • Required Time: 5.0000ns → 클록 주기가 5ns라는 의미
  • Arrival Time: 5.3274ns → 데이터가 실제로 5.3274ns에 도착
  • Slack: -0.3274ns → Setup Violation!

Setup Violation 해결 방법

  1. 조합 논리 지연 감소:# Critical path의 cell을 더 큰 크기로 변경
    size_cell u3 BUF4X8 # 기존 BUF2X2 → BUF4X8
    insert_buffer -place_buffers -cell BUF4 path_name
  2. 클록 주기 증가: 클록을 5ns → 6ns로 변경
  3. 파이프라인 추가: 조합 논리를 여러 스테이지로 나누기

Hold Violation 해결 방법

  1. Delay 버퍼 추가
  2. 드라이빙 셀 변경: 작은 셀(BUF1X)을 큰 셀로 변경하여 속도 제한
  3. 조합 논리 재배치: 물리적으로 거리를 늘려 지연 증가
  4. 부하 증가: 경로에 capacitive load 추가

자주 묻는 질문 (FAQ)

1. Setup Time과 Hold Time을 동시에 위반할 수 있나요?

네, 가능합니다. 예를 들어 PVT(Process Voltage Temperature) 변화나 clock jitter 등으로 인해 동시에 발생할 수 있습니다. 이 경우 설계 자체에 근본적인 문제가 있을 수 있습니다.

2. Setup과 Hold 중 어느 것이 더 중요한가요?

둘 다 동등하게 중요합니다. Setup 위반은 데이터가 제대로 capture되지 않아 잘못된 값이 저장되고, Hold 위반은 메타스테이블 상태로 인한 수렴 지연과 metastability를 초래합니다. 두 가지 모두 회로 오작동을 야기합니다.

다만 칩이 나왔을 때는 Hold time이 더 중요합니다. Setup time violation은 clock period를 늘려서 Timing violation을 해결 할 수 있으나, Hold time violation은 해결 방법이 없습니다.

3. 클록 주기를 줄이면 항상 Setup만 위반되나요?

주로 Setup Time 위반을 초래하지만, 특수한 경우 Hold Time도 변할 수 있습니다. 클록 skew, jitter, clock tree의 propagation delay 등이 복잡하게 작용하므로, 두 가지 모두 검증해야 합니다.

4. 메타스테이블 상태(Metastable State)란 정확히 무엇인가요?

플립플롭의 내부 상태가 0도 1도 아닌 불안정한 중간 상태에 머물러 있는 현상입니다. 이는 Setup이나 Hold Time 위반 시 발생하며, 수렴하는 데 예측 불가능한 시간이 걸리거나 아예 수렴하지 않을 수 있습니다. 현대 회로에서 이것이 가장 위험한 타이밍 문제입니다.

5. Hold Time이 음수(negative)인 플립플롭도 있나요?

네, 있습니다. 최신 기술 노드의 일부 플립플롭은 negative hold time을 가질 수 있으며, 이는 설계자에게 유리합니다. 음수 Hold Time은 데이터가 클록 엣지 이후 어느 정도 변경되어도 안전하다는 의미입니다. 다만 Setup Time이 더 엄격해질 수 있습니다.

고급 개념: Clock Skew와 타이밍

Clock Skew의 영향

실제 칩 설계에서 clock signal은 모든 플립플롭에 정확히 동시에 도착하지 않습니다. 이를 clock skew라고 합니다:

  • Positive Skew: 출발지 FF의 클록이 목적지 FF보다 먼저 도착 → Setup을 악화, Hold를 개선
  • Negative Skew: 목적지 FF의 클록이 출발지 FF보다 먼저 도착 → Setup을 개선, Hold를 악화

따라서 clock tree design은 Setup/Hold 최적화의 중요한 부분입니다.

PVT (Process, Voltage, Temperature) Variation

현실의 칩 제조는 완벽하지 않습니다. 프로세스 변화로 인해 트랜지스터의 특성이 달라지고, 전압 강하(voltage drop)가 발생하며, 온도 변화로 인해 지연이 변합니다:

Design은 항상 worst-case PVT 조건에서 검증되어야 합니다. PrimeTime은 corners(각 PVT 조합)에 대해 STA를 실킉하여 모든 상황에서 만족하는지 확인합니다.

요약

  • Setup Time: 클록 엣지 이전에 데이터가 도착해야 하는 최소 시간. Slack = Required Time - Arrival Time > 0이어야 함
  • Hold Time: 클록 엣지 이후 데이터가 안정적으로 유지되어야 하는 최소 시간. Slack = Arrival Time - Required Time > 0이어야 함
  • PrimeTime: report_timing, check_timing, report_qor로 setup/hold violations를 검증하고, 경로를 분석할 수 있음
  • 해결책: Setup은 지연을 줄이고 Hold는 지연을 더하는 방향. 둘 다 clock tree design과 밀접한 관계
  • 메타스테이블: Setup/Hold violation의 최악의 결과. 칩의 완전한 오동작을 초래할 수 있으므로 반드시 제거해야 함

Enjoyed this article?

Get deep-dive semiconductor analysis and career insights delivered weekly. Free forever — no paywall, no upsell. Funded by sponsorships with a strict editorial firewall (Editorial Standards).

Work with me

Consulting · Collaboration · Support

Paid 1:1 technical consulting, speaker invitations, collaboration proposals, or just want to say thanks — all welcome.

View options →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
Support