개요
STA는 동기 회로의 모든 timing path에 대해 두 가지를 확인한다.
- Setup check: launch edge에서 출발한 데이터가 다음 capture edge 전에 capture flop에 도착하는가 (max delay check).
- Hold check: 새 데이터가 같은 capture edge에서 이전 데이터를 너무 빨리 덮어쓰지 않는가 (min delay check).
핵심 수식
Launch clock latency를 , capture clock latency를 , clock period를 라 하자. Data arrival time은 다음과 같다.
Setup
Hold
Slack이 0 이상이면 met, 음수이면 violated다. Setup은 max delay(slow corner)에서, hold는 min delay(fast corner)에서 가장 나빠지는 것이 일반적이다.
Setup과 Hold의 상충
| 변화 | Setup slack | Hold slack |
|---|---|---|
| 증가 (버퍼 삽입) | 감소 | 증가 |
| 증가 (capture clock 지연) | 증가 | 감소 |
| 증가 (launch clock 지연) | 감소 | 증가 |
Hold check에는 가 들어가지 않는다. 따라서 hold violation은 clock 주파수를 낮춰도 해결되지 않는다. 실리콘에서 발견되면 치명적이므로 signoff 전에 반드시 닫아야 한다.
실무 적용
- Report에서 setup은
-delay_type max, hold는-delay_type min으로 확인한다. - Pre-CTS 단계는 ideal clock 기준이므로 hold는 보통 CTS 이후(propagated clock)부터 본격적으로 수정한다.
- Clock latency 차이(skew)가 두 check에 반대 방향으로 작용한다. 자세한 내용은 Clock Skew 문서를 참고한다.
한계
이 문서는 단일 clock, flop-to-flop path를 가정한다. Multicycle path, latch time borrowing, OCV/AOCV/POCV derate, CRPR은 다루지 않는다.