2026. 4. 22. 01:03ㆍ기초지식
STA(Static Timing Analysis)란?
STA는 실제 시뮬레이션 없이 설계의 모든 타이밍 경로를 정적으로 분석해 셋업(setup) / 홀드(hold) 위반 여부를 확인하는 기법이다. 디지털 회로는 클럭 엣지 기준으로 데이터가 전달되는데, 이 전달 시간이 허용 범위를 벗어나면 플립플롭이 잘못된 값을 캡처한다. STA는 수백만 개의 경로를 모두 검사해 타이밍 위반을 확정적으로 찾아낸다.
시뮬레이션과 달리 STA는 특정 입력 벡터에 의존하지 않는다. 가능한 모든 경로를 망라하기 때문에 타이밍 버그를 놓칠 확률이 없다는 점이 핵심 장점이다. 현대 SoC 설계에서 게이트 수가 억 단위를 넘어도 몇 시간 안에 분석이 완료된다.
Setup Time과 Hold Time
플립플롭이 데이터를 올바르게 캡처하려면 클럭 엣지 주변의 정해진 시간 동안 데이터가 안정적이어야 한다.
| 파라미터 | 정의 | 위반 시 결과 |
|---|---|---|
| Setup Time (Tsu) | 클럭 엣지 이전에 데이터가 안정적이어야 하는 최소 시간 | 다음 클럭 사이클의 값이 잘못 캡처됨 |
| Hold Time (Th) | 클럭 엣지 이후에 데이터가 유지되어야 하는 최소 시간 | 현재 클럭 사이클의 값이 깨짐 |
Setup 위반은 배선 지연이나 조합 로직 깊이 증가로 발생한다. 클럭 주파수를 낮추거나 파이프라인 단계를 추가해 수정한다. Hold 위반은 데이터 경로가 너무 빠를 때 발생하며, 버퍼를 삽입해 지연을 추가하는 방식으로 수정한다. Hold 위반은 주파수와 무관하게 항상 존재하므로 더 위험하다.
타이밍 경로의 구성
STA에서 분석하는 타이밍 경로는 네 가지 유형으로 나뉜다.
| 경로 유형 | 시작점 | 끝점 |
|---|---|---|
| Reg-to-Reg | 플립플롭 Q 핀 | 플립플롭 D 핀 |
| In-to-Reg | 입력 포트 | 플립플롭 D 핀 |
| Reg-to-Out | 플립플롭 Q 핀 | 출력 포트 |
| In-to-Out (Combinational) | 입력 포트 | 출력 포트 |
각 경로는 데이터 경로(data path)와 클럭 경로(clock path)로 구성된다. STA 툴은 이 두 경로의 지연을 각각 계산하고, 그 차이로 슬랙(slack)을 산출한다.
슬랙(Slack) 계산
슬랙은 타이밍 여유를 나타내는 수치다. 양수면 여유가 있고, 음수면 위반이다.
Setup Slack
Setup Slack = (데이터 요구 시각) - (데이터 도착 시각)
= (클럭 주기 + 클럭 도착_dest - Tsu) - (클럭 도착_src + 데이터 경로 지연)
Setup Slack >= 0 → 통과
Setup Slack < 0 → 위반 (WNS: Worst Negative Slack)
Hold Slack
Hold Slack = (데이터 도착 시각) - (데이터 최소 요구 시각)
= (클럭 도착_src + 데이터 경로 최소 지연) - (클럭 도착_dest + Th)
Hold Slack >= 0 → 통과
Hold Slack < 0 → 위반
STA 리포트 핵심 용어: WNS(Worst Negative Slack)는 전체 경로 중 가장 나쁜 슬랙이다. TNS(Total Negative Slack)는 모든 위반 경로의 슬랙 합산값이다. WHS(Worst Hold Slack)는 홀드 위반 중 최악값이다.
PVT 코너(Process, Voltage, Temperature)
실제 실리콘은 제조 공정 편차, 전원 전압 변동, 동작 온도에 따라 지연이 달라진다. STA는 이 세 가지 변수의 조합인 PVT 코너별로 분석을 수행한다.
| 코너 | Process | Voltage | Temperature | 분석 목적 |
|---|---|---|---|---|
| Worst Case (SS) | Slow | Low | High | Setup 위반 체크 (회로가 느림) |
| Best Case (FF) | Fast | High | Low | Hold 위반 체크 (회로가 빠름) |
| Typical (TT) | Typical | Nominal | Nominal | 기능 검증 기준 |
Setup은 Worst Case(SS) 코너에서, Hold는 Best Case(FF) 코너에서 분석하는 것이 원칙이다. 첨단 공정(7nm 이하)에서는 온도 역전 현상(Temperature Inversion)이 발생해 Low Temperature에서 오히려 회로가 느려지는 경우가 있어 추가 코너 분석이 필요하다.
클럭 관련 타이밍 개념
클럭 스큐(Clock Skew)
같은 클럭 신호가 서로 다른 플립플롭에 도달하는 시간 차이다. 클럭 트리 합성(CTS)으로 최소화한다. 수신 FF의 클럭이 송신 FF보다 늦게 도달하면(positive skew) Setup 여유는 늘지만 Hold 여유는 줄어든다.
클럭 지터(Clock Jitter)
클럭 엣지가 이상적인 위치에서 벗어나는 사이클마다의 랜덤 편차다. STA에서는 이를 불확실성(Clock Uncertainty)으로 모델링해 슬랙 계산에 포함시킨다. Setup 분석 시 클럭 주기에서 uncertainty를 빼고, Hold 분석 시 더한다.
CRPR(Clock Reconvergence Pessimism Removal)
Launch 클럭과 Capture 클럭이 동일 소스에서 분기되어 공통 경로를 공유할 때, STA 툴이 공통 구간의 지연 편차를 중복 계산하는 비관적 오류를 보정하는 메커니즘이다. CRPR 없이는 슬랙이 실제보다 작게 계산되어 불필요한 최적화를 유발한다.
SDC(Synopsys Design Constraints)
STA 툴은 SDC 파일로 설계 제약을 입력받는다. 클럭 정의, 입출력 지연, 경로 예외 등을 지정한다.
# 클럭 정의 (주기 10ns = 100MHz)
create_clock -period 10 -name clk [get_ports clk]
# 클럭 불확실성 (jitter + skew 마진)
set_clock_uncertainty -setup 0.2 [get_clocks clk]
set_clock_uncertainty -hold 0.1 [get_clocks clk]
# 입력 지연
set_input_delay -max 3.0 -clock clk [get_ports data_in]
set_input_delay -min 1.0 -clock clk [get_ports data_in]
# 출력 지연
set_output_delay -max 2.0 -clock clk [get_ports data_out]
set_output_delay -min 0.5 -clock clk [get_ports data_out]
# False Path (타이밍 분석 제외)
set_false_path -from [get_cells reg_a] -to [get_cells reg_b]
# Multicycle Path (2사이클 허용)
set_multicycle_path 2 -setup -from [get_cells slow_reg] -to [get_cells capture_reg]
set_multicycle_path 1 -hold -from [get_cells slow_reg] -to [get_cells capture_reg]
Multicycle Path 설정 시 주의: Setup을 N사이클로 설정하면 Hold는 기본적으로 N-1 사이클로 이동하기 때문에, Hold를 별도로 1로 되돌려야 한다. 이를 빠뜨리면 Hold 위반이 대량으로 발생한다.
STA 툴
| 툴 | 제조사 | 주로 사용되는 단계 |
|---|---|---|
| PrimeTime (PT) | Synopsys | Sign-off STA, ECO 분석 |
| Tempus | Cadence | Sign-off STA, 물리 설계 통합 |
| ETS | Mentor/Siemens | 구현 단계 통합 타이밍 |
Synopsys PrimeTime이 업계 표준으로 가장 널리 쓰인다. PrimeTime SI(Signal Integrity)는 크로스토크 지연과 글리치까지 분석한다. POCV(Parametric On-Chip Variation)나 AOCV(Advanced OCV)를 적용하면 공정 편차를 더 정밀하게 모델링할 수 있다.
STA 위반 수정 방법
Setup 위반 수정
데이터 경로 지연을 줄이거나 경로를 재구성한다. 크리티컬 경로의 조합 로직을 최적화(리타이밍, 로직 재분배), 고속 셀로 교체, 배선 경로 단축, 파이프라인 스테이지 추가 등이 있다.
Hold 위반 수정
데이터 경로에 버퍼를 삽입해 최소 지연을 늘린다. STA 툴이 ECO(Engineering Change Order) 형태로 자동으로 버퍼를 삽입해주는 기능을 제공한다. Hold 위반은 주파수와 무관하므로 테이프아웃 전 반드시 0으로 만들어야 한다.
STA와 CDC의 관계
STA는 동일 클럭 도메인 내부의 타이밍을 분석한다. 서로 다른 클럭 도메인 사이의 경로(CDC 경로)는 STA 대상이 아니며, False Path로 처리하거나 별도의 CDC 분석 툴로 검증해야 한다. CDC 동기화기(2-FF Synchronizer)가 제대로 구현되었는지는 STA로 확인할 수 없다.
정리
STA는 디지털 설계 플로우에서 타이밍을 보증하는 핵심 단계다. Setup/Hold의 원리와 슬랙 계산 방법을 이해하고, PVT 코너별 분석의 의미를 알아야 STA 리포트를 올바르게 해석할 수 있다. SDC 작성 실수(특히 Multicycle Path, False Path 설정)가 타이밍 결과를 크게 왜곡할 수 있으므로 제약 파일 검토도 STA만큼 중요하다.
'기초지식' 카테고리의 다른 글
| [PCIe] Transaction Layer 완전 정리 | TLP 구조, Header, Routing, Completion (0) | 2026.06.17 |
|---|---|
| [PCIe] 기초 완전 정리 | Lane, Link, Gen 세대, 토폴로지, 계층 구조, LTSSM (0) | 2026.06.17 |
| [반도체 설계] CDC(Clock Domain Crossing) 완전 정리 | Metastability, 동기화 기법, Async FIFO (0) | 2026.04.20 |
| 스택(Stack)과 힙(Heap) 메모리 영역 (0) | 2025.08.17 |
| 데이터 타입(Data Type)과 서식 지정자(Format sepcifier) | 자료형 정리(정수형, 실수형, 문자형) | % 출력 방법 (0) | 2024.08.20 |