이번 포스팅에서는 Timing violation에 대해서 다뤄보도록 하겠습니다.
CMOS VLSI 내용을 다루다 보면, setup time violation, hold time violation, skew, slew, slack 등 용어가 많이 언급이 되서 여기에 정리하고 나중에 다른 포스팅에 첨부하려고 합니다. 누가 이게 뭐냐고 물어보면, 매일 찾아보고 아..맞다, 이러는 것 같아요..ㅎ
가장 먼저, STA(Static Timing Analysis)라는 개념에 대해 이해하셔야 합니다.
STA은 설계의 타이밍 성능을 검증하는 방법으로, 가능한 모든 path에서 timing violation을 확인합니다.
아래의 단계는 STA의 단계를 나타냅니다.
- 설계를 timing path 별로 분해
- 각 path를 따라 signal propagation delay를 계산
- 설계 내부 및 I/O 인터페이스에서 timing constraint 검사
즉, STA는 설계된 회로의 타이밍 제약조건을 위반했는지, 안했는지를 확인하는 과정입니다.
왜냐하면, 회로에 신호가 도착해야 할 시간에 도착하지 못했거나, 디지털 신호에서 1을 유지하는 시간이 너무 짧아서 다음 회로가 신호가 1인지, 0인지 인식하지 못하는 문제가 발생하기 때문에 이런 제약 조건을 검사하는 것입니다.
Slew( = Transition time)
0에서 1, 1에서 0으로 데이터가 바뀔 때 신호의 기울기
즉, 신호가 0에서 1로, 혹은 1에서 0으로 전환이 발생할 때 소요되는 시간입니다.

Skew
Clock의 arrival time의 차이

위의 그림에서 CLK_S라고 하는 root clock이 있습니다,이 clock을 기준으로 CLK1, CLK2, CLK3, CLK4에 clock이 인가됩니다.
물론, clock이 정말 이상적이게 FF1,..,FF4에 동시에 입력되면 좋겠지만, 어찌됐건 clock도 wire를 통해 전달되고 wire의 길이에 따라서 신호가 늦게 전달됩니다. 즉, CLK1과 CLK2 사이에 발생하는 latency 차이를 skew라고 하고 지역적으로 발생했기 때문에 local skew라고 부릅니다. 더 나아가, CLK1과 CLK4 사이의 skew는 global skew라고 부릅니다.
Slack
Require time과 Arrival time의 차이
1. 계산 방법
- Setup slack = Require time - Arrival time
- Hold slack = Arrival time - Require time
2. Slack 분석
- + 값: Timing 마진 존재
- 0 값: Timing 마진 없음
- - 값: Timing violation 발생
Setup time
Clock이 들어오기 전에 내가 원하는 Data가 안정적으로 유지되어야 하는 시간
Setup time violation은 delay가 클 때 발생합니다. 아래의 그림은 간단한 Pipeline 구조를 보여줍니다.
여기서, Flip flop2(F2)의 입장에서 보면 Combinational Logic을 거쳐서 나온 출력이 D1 입력으로 들어옵니다.
이때 D1 입력이 들어오는 시점과 Clock의 Rising Edge 시점에는 충분한 마진이 있어야 하는데, 만약 나 가 커서 마진을 맞추지 못한다면, violation이 발생합니다. 아래의 Violation을 해결하는 방법 중 대표적인 방법은 를 늘려, 충분한 Setup time margin(Slack)을 얻는 것입니다. (일반적으로, 를 늘린다는 것은 Clock frequency를 낮춘는 것을 의미합니다.)
결국, 아래의 Violation이 일어나지 않게 하기 위한 조건은 아래와 같습니다.
.

: Clock Period
: 입력 clock과 출력 q 사이의 시간차 중 가장 느린 경우 (Flip flop자체의 Delay라고 생각하면 된다.)
: Clock이 들어오기 전에 안정적인 데이터를 유지해야 하는 시간
: Combinational Logic 동작에서 가장 오래 걸리는 시간 (<-> ) (위 그림에는 인데, 오타이다.)
: Flip flop끼리의 clock 시간차 (여기서 최악의 경우는 F2에 들어가는 Clock이 F1보다 훨씬 빠르게 들어가는 경우)
Hold time
Clock이 들어온 후에 내가 원하는 Data가 안정적으로 유지되어야 하는 시간
Hold time violation은 delay가 작을 때 발생합니다.

: 입력 clock과 출력 q 사이 시간차 중 가장 빠른 경우 (Flip flop자체의 Delay라고 생각하면 된다.)
: Clock이 들어오고 나서 안정적인 데이터를 유지해야 하는 시간
: Combinational Logic 동작에서 가장 빨리 걸리는 시간 (<-> ) (위 그림에는 인데, 오타이다.)
: Flip flop끼리의 clock 시간차 (여기서 최악의 경우는 F1에 들어가는 Clock이 F2보다 훨씬 빠르게 들어가는 경우)
이해를 쉽게하기 위해서, 위 과정을 보이는 회로가 밑의 회로와 같다고 가정합니다.

위 회로는 비트를 Clock에 따라 Serial하게 Shift하는 회로이며, 각 Flip flop간의 Delay는 매우 작다고 가정합니다.
이때, 내가 순서대로 1, 0, 1, 1 Bit 입력을 ()에 입력하면 우리가 원하는 동작은 4 clock cycle 이후, 에 1, 0, 1, 1 이 나오기를 바랄 것입니다. 하지만 플립플롭 사이의 Delay가 매우 작다고 가정하였으므로, 이전 Stage에서의 출력 값이 다음 Stage의 입력으로 들어가는 시간이 너무 빠릅니다. 따라서, 에 두번째 데이터인 0이 들어가면, 바로 출력 값인 이 바뀌어 버리기 때문에 F2가 처음 데이터인 1을 F1으로 넘기기 전에 값이 바뀌어 버려 Data hazard가 발생하게 됩니다.
위 Violation을 해결하는 방법 중 대표적인 방법은 해당 Combinational Logic에 임의로 Buffer등을 추가하여, Delay를 Hold time 보다 늘리는 방법을 사용하면 됩니다.
덧붙여, 위 Violation이 일어나지 않게 하기 위한 조건은 아래와 같습니다.
추가로 STA 동작 과정은 시놉시스의 자료를 참고하여 작성하겠습니다.
STA 동작 과정
타이밍 분석을 수행할 때 STA는 먼저 설계를 timing path로 분해합니다.
각 타이밍 경로는 다음과 같은 요소로 구성됩니다.
- Start point: 클록 에지에 의해 데이터가 전송되거나 특정 시간에 데이터가 사용 가능해야 하는 타이밍 경로의 시작점입니다. 모든 시작점은 입력 포트 또는 레지스터 클록 핀이어야 합니다.
- Combinational logic network: 메모리나 내부 상태를 갖지 않는 소자로 구성됩니다. 조합 논리 회로는 AND, OR, XOR 및 INV 소자를 포함할 수 있지만, FF, latch, register 또는 RAM은 포함할 수 없습니다.
- End point: clock edge에서 데이터가 캡처되거나 특정 시간에 데이터가 사용 가능해야 하는 timing path의 끝입니다. 모든 end point는 register data 입력 핀 또는 출력 포트여야 합니다.
다음 그림은 간단한 설계 예시에서 타이밍 경로를 보여줍니다.

아래 그림과 같이 combinational circuit은 여러 path를 포함하고 있습니다.
STA 툴은 가장 긴 경로를 사용하여 maximum delay을 계산하고 가장 짧은 path로 minimum delay을 계산합니다.

STA 툴은 설계를 여러 타이밍 경로로 분해한 후 각 경로를 따라 발생하는 지연 시간을 계산합니다. Path의 total delay는 경로 내 모든 cell 및 net delay의 합입니다. Cell delay는 경로상 logic gate의 입력에서 출력까지의 delay입니다.
일반적으로 delay table에는 input transition time 및 load cap과 같은 하나 이상의 변수에 대한 함수로서 delay가 나열됩니다.
이 테이블의 형식을 LUT(Look-up table)라고 부릅니다. STA 툴은 보통 아래의 표를 기반으로 툴는 각 cell의 delay를 계산합니다. 만약, 아래 테이블에 해당하는 input transition time과 load cap의 값이 없다면, STA 툴은 interpolation(내삽) 혹은 extrapolation(외삽)을 통해 delay 값을 추정합니다.

Net delay는 timing path에서 한 cell의 output에서 다음 cell의 input까지의 delay입니다.
이 delay은 두 cell 사이의 상호 연결에 존재하는 parasitic cap과 net resistance, 그리고 net을 구동하는 cell의 제한된 drive strength가 결합되어 발생합니다.
STA는 setup 및 hold constraint와 같은 timing violation constraint 여부를 확인합니다.
- Setup constraint: sequential device의 입력단에서 데이터를 사용할 수 있게 되기까지 필요한 시간을 지정합니다. 이 constraint은 clock edge를 기준으로 data path의 max delay를 제한합니다.
- Hold constraint: sequential device에서 데이터를 캡처하는 clock edge 이후 데이터가 입력단에서 안정화되는 데 필요한 시간을 지정합니다. 이 제약 조건은 clock edge를 기준으로 데이터 경로에 min delay를 적용합니다.
다음 예는 STA가 Flip-flop의 설정 및 유지 제약 조건을 확인하는 방법을 보여줍니다.

이 예시에서는 flip flop의 minimum setup time이 1.0 시간 단위, 최소 유지 시간이 0.0 시간 단위로 logic library에 정의되어 있다고 가정합니다. Clock period는 툴에서 1 0 시간 단위로 정의되어 있습니다.
* time unit size(예: ns 또는 ps)는 로직 라이브러리에 지정되어 있습니다.
기본적으로 이 툴은 신호가 각 데이터 경로를 통해 한 클록 사이클 내에 전파된다고 가정합니다. 따라서 툴은 setup check를 수행할 때 FF1에서 시작된 데이터가 한 클록 사이클 내에 FF2에 도달하고, FF2에서 다음 클록 에지에 의해 캡처되기 최소 1.0 시간 단위 전에 도착하는지 확인합니다. Data path delay가 너무 길면 timing violation으로 보고됩니다. 이 setup check에서 툴은 FF1과 FF2 사이의 data path에서 발생할 수 있는 maximum delay와 clock path에서 발생할 수 있는 minimum delay를 고려합니다.
툴이 hold check를 수행할 때, FF1에서 시작된 데이터가 이전 클록 사이클의 캡처 clock edge보다 먼저 FF2에 도달하지 않는지 확인합니다. 이 check는 FF2 입력에 이미 존재하는 데이터가 이전 사이클의 데이터를 캡처하는 클록 에지 이후에도 충분히 오랫동안 안정적인 상태를 유지하는지 확인하는 것입니다. 이 hold check에서 툴은 FF1과 FF2 사이의 데이터 경로에서 가능한 가장 짧은 delay와 clock path에서 가능한 가장 긴 delay를 고려합니다. Clock path에 긴 delay가 있는 경우 hold violation이 발생할 수 있습니다.
'CMOS VLSI' 카테고리의 다른 글
| What is Crosstalk & Shielding in VLSI? (0) | 2026.02.15 |
|---|---|
| CMOS VLSI 설계 원리(1-1) (0) | 2026.02.11 |
| Latch vs Flip-Flop (0) | 2026.02.03 |
| 메모리 반도체 (1) (0) | 2026.02.03 |
| Mosfet(Planar, Finfet, GAA, MBCFET) (0) | 2026.02.03 |