부호와 검사 대상을 먼저 고정합니다
출발 레지스터의 클록 도착 시간을 L, 도착 레지스터의 클록 도착 시간을 C라 하고 S = C − L로 정의합니다. 양의 스큐는 캡처 클록이 더 늦는 경우입니다. 스큐는 두 지점의 도착 차이이고, 지터는 클록 에지가 시간에 따라 흔들리는 현상입니다. 둘을 같은 값으로 더하거나 하나의 배선 길이 문제로 취급하지 않습니다.
Launch clock L → 출발 레지스터
tCQ + 조합논리·배선 지연 → 도착 데이터
Capture clock C → setup·hold 검사
setup은 늦은 데이터, hold는 빠른 데이터를 검사합니다
클록 주기 T, 최대·최소 clock-to-Q 지연 tCQ, 데이터 경로 지연 tDATA, 수신 플립플롭의 tSETUP·tHOLD를 사용합니다. Usetup·Uhold는 이 설명에서 검사별로 따로 잡은 0 이상의 여유입니다.
Setup: tCQ,max + tDATA,max + tSETUP + Usetup ≤ T + S
Hold: tCQ,min + tDATA,min ≥ S + tHOLD + Uhold양의 S는 setup의 허용 시간을 늘리지만 hold의 요구 시간을 늘립니다. 예를 들어 T=10ns, setup 좌변=9.7ns이면 S=0에서 여유는 0.3ns, S=0.5ns에서 0.8ns입니다. 반대로 최소 데이터 지연 0.4ns, tHOLD+Uhold=0.2ns이면 hold 여유는 0.2ns에서 −0.3ns로 나빠집니다. 이 숫자는 설명용 계산이지 측정값이 아닙니다.
uncertainty와 실제 보고서의 경계를 확인합니다
Vivado UG906은 clock uncertainty에 계산된 jitter, phase error, 사용자 설정을 포함합니다. set_clock_uncertainty로 이미 반영된 항목을 중복 계산하지 않습니다. UG904의 useful skew 최적화처럼 캡처 클록을 늦춰 setup을 개선할 수 있지만 hold를 함께 재검사해야 합니다.
위 식은 같은 도메인·단일 사이클·단순 에지 관계를 설명합니다. generated clock, CDC, multicycle, OCV와 공통 경로 보정은 도구의 실제 모델을 따라야 합니다. UG906은 전용 라우팅만 쓰는 intra-clock 경로의 사용자 hold uncertainty 예외도 설명하므로, 이 교육용 Uhold를 모든 Vivado 경로에 그대로 대입하지 않습니다.
무조건 지터부터 줄이지 않습니다
먼저 clock·I/O 제약과 예외가 맞는지 확인하고, 실패 경로의 데이터 지연·클록 경로·uncertainty 기여를 분리합니다. 가장 큰 원인에 맞춰 조합논리, 배치·배선 또는 클록 품질을 개선한 뒤 setup·hold와 다른 코너를 다시 확인합니다. 지터를 줄였다는 사실만으로 timing closure나 실기 동작 성공을 선언할 수 없습니다.
참고 자료
UG906: Skew Definition · UG906: Clock Uncertainty · UG904: Clock Optimization