-
Logic Circuit의 Timing Violation 정리전공/VLSI 설계 2021. 3. 31. 16:46
[해당 내용은 저서 "CMOS VLSI Design: A Circuits and Systems Perspective" 에 기반하여 작성되었습니다.]
ASIC Design시 고려해야 할 Timing violation은 2가지로 분류된다.
1. Setup time Violation
: Clock이 들어오기 전에 내가 원하는 Data가 안정적으로 유지되어야 하는 시간
2. Hold time Violation
: Clock이 들어온 후에 내가 원하는 Data가 안정적으로 유지되어야 하는 시간
Setup/hold time 먼저, 위의 Setup time을 위반하는 경우(Setup time violation)는 어떤 경우일까?
Setup time Violation을 설명하기 위한 예시 $T_{c}$ : Clock Period
$t_{pcq}$ : 입력 clock과 출력 q 사이의 시간차 중 가장 느린 경우 (Flip flop자체의 Delay라고 생각하면 된다.)
$t_{setup}$ : Clock이 들어오기 전에 안정적인 데이터를 유지해야 하는 시간
$t_{pd}$ : Combinational Logic 동작에서 가장 오래 걸리는 시간 (<-> $t_{cd}$) (위 그림에는 $t_{pdq}$인데, 오타이다.)
$t_{skew}$ : Flip flop끼리의 clock 시간차 (여기서 최악의 경우는 F2에 들어가는 Clock이 F1보다 훨씬 빠르게 들어가는 경우)
결론부터 말하면, Delay가 가장 클 때 발생한다.
좀 더 자세하게 설명하면, 아래와 같다.
위 그림은 간단한 Pipeline 구조를 보여준다.
여기서, Flip flop2(F2)의 입장에서 보면 Combinational Logic을 거쳐서 나온 출력이 D1 입력으로 들어온다.
이때 D1 입력이 들어오는 시점과 Clock의 Rising Edge 시점에는 충분한 Margin이 있어야 하는데, 만약 $t_{pcq}$나 $t_{pd}$가 커서 Margin을 맞추지 못한다면, 매우 많은 Violation이 일어나게 된다.
위 Violation을 해결하는 방법 중 대표적인 방법은 $T_c$를 늘려, 충분한 Setup time margin(Slack)을 얻는 것이다.
(모두 알다시피, $T_c$를 늘린다는 것은 Clock frequency를 낮춘다는 의미이다.)
따라서, 위 Violation이 일어나지 않게 하기 위한 조건은
$t_{pcq} + t_{pd} \leq T_c - t_{skew} - t_{setup}$ 가 된다.
다음으로, Hold time Violation은 어떤 경우에 일어날까?
Hold time Violation을 설명하기 위한 예시 $t_{ccq}$ : 입력 clock과 출력 q 사이 시간차 중 가장 빠른 경우 (Flip flop자체의 Delay라고 생각하면 된다.)
$t_{hold}$ : Clock이 들어오고 나서 안정적인 데이터를 유지해야 하는 시간
$t_{cd}$ : Combinational Logic 동작에서 가장 빨리 걸리는 시간 (<-> $t_{pd}$) (위 그림에는 $t_{pdq}$인데, 오타이다.)
$t_{skew}$ : Flip flop끼리의 clock 시간차 (여기서 최악의 경우는 F1에 들어가는 Clock이 F2보다 훨씬 빠르게 들어가는 경우)
결론부터 말하면, Delay가 너무 작을 때 발생한다.
이해를 쉽게하기 위해서, 위 과정을 보이는 회로가 밑의 회로와 같다고 가정하자.
위 회로는 비트를 Clock에 따라 Serial하게 Shift하는 회로이며, 각 Flip flop간의 Delay는 매우 작다고 가정하자.
이때, 내가 순서대로 1, 0, 1, 1 Bit 입력을 $D_{in}$($D_3$)에 입력한다.
그러면 우리가 원하는 동작은 4 clock cycle 이후, $D_{out}$에 1, 0, 1, 1 이 나오기를 바랄 것이다.
하지만 플립플롭 사이의 Delay가 매우 작다고 가정하였으므로, 이전 Stage에서의 출력 값이 다음 Stage의 입력으로 들어가는 시간이 너무 빠르다.
따라서, $D_{in}$에 두번째 데이터인 0이 들어가면, 바로 출력 값인 $Q_3$이 바뀌어 버리기 때문에 F2가 처음 데이터인 1을 F1으로 넘기기 전에 값이 바뀌어 버려 Data hazard가 발생하게 된다.
위 Violation을 해결하는 방법 중 대표적인 방법은 해당 Combinational Logic에 임의로 Buffer등을 추가하여, Delay를 Hold time 보다 늘리는 방법을 사용하면 된다.
덧붙여, 위 Violation이 일어나지 않게 하기 위한 조건은
$t_{hold} \leq t_{skew} + t_{ccq} + t_{cd}$ 가 된다.
'전공 > VLSI 설계' 카테고리의 다른 글
Chip planning 개요 (0) 2021.04.07 Multi cycle path와 False path에 대해서 (0) 2021.04.01 Clock Skew와 Clock Latency의 차이점 (0) 2021.03.31 Netlist and System Partitioning : FM 알고리즘 (0) 2021.03.27 Netlist and System Partitioning : KL 알고리즘 (0) 2021.03.25