일반적으로 digital 설계를 하다 보면 margin 에 대한 분석을 많이 하게 됩니다. Margin 분석은 Latch 내에서 clock 과 data 간의 margin 을 분석하는 경우도 있고 특정 로직 게이트 내에서 signal 간의 선행 관계에 대한 margin 을 분석하는 경우도 있습니다. 오늘은 가장 일반적으로 분석하는 Latch 내에서의 setup hold margin 에 대해 알아보겠습니다.
먼저 Flip-flop 1개를 보면서 Data 와 Clock 간의 관계에 대해 보도록 하죠. 여기서 한 flip-flop 이 있고 Data input 과 Clock 이 있습니다. Case A 와 Case B 에 대해 보죠. Case A 에서는 Data 가 1 을 유지하고 있을 때 clock 이 알맞게 toggle 하는 것을 볼 수 있습니다. 이 때문에 Data output 에서는 설계자가 원하는대로 1의 output 을 출력하죠. 하지만 Case B 의 경우에는 Data input 이 Data 를 갖고 있는 시간에 비해 clock 늦게 toggle 하는 것을 볼 수 있습니다. 이 때문에 Data output 에는 설계자가 원하는 1 의 output 이 아닌 0이라는 잘못된 output 이 나오게 되죠.
여기서 Data 와 Clock 의 edge 간 관계를 따짐으로써 data 의 setup 과 hold margin 을 따질 수 있습니다. Data input 이 Data 를 처음 가지고 있는 시간으로부터 Clock edge 까지의 시간을 setup time 이라고 하여 setup margin이라고 합니다. Clock edge 부터 Data 가 data 값을 유지하는 마지막 시간까지를 hold time 이라고 하며 이를 hold margin 이라고 합니다. 일반적으로 clock 은 계속해서 toggle 하고, 로직에 따라서 Data 는 1tCK, 2tCK , ... 의 data width 를 가지고 있습니다. 따라서 Data 를 앞단에서 제대로 설계했다면,
tsetup + thold = data width (ex. 1tCK, 2tCK, ...)
위와 같은 관계를 만족하죠. 하지만 실제로는 Data의 rising time 과 falling time 이 있고 clock frequency 의 variation 도 있으니, (1tCK - a) 의 data width 를 가집니다. 즉 앞단의 memory (latch, flip-flop 등) 가 1tCK - a 만큼 data 를 hold 한다는 뜻이죠. 이 setup margin 과 hold margin 은 어떤 clock system 을 사용하는지 에 따라서 많이 달라지게 됩니다. 여기서는 2개의 clock system 에 대해 알아보죠.
1. 같은 clock 을 사용하는 system (Synchronous system)
먼저 여러 개의 system 에서 완전히 똑같은 clock 을 사용하는 system 입니다. 간단하게 2개의 flip-flop 으로 구성된 system 을 알아보죠. 위와 같이 2 개의 flip-flop 을 같은 clock 으로 동작시킨다고 해봅시다. 이 때 1tCK 의 data window 를 가진 data input D0 가 들어온다고 해보죠. 첫번째 clock edge 는 첫번째 flip-flop 에서 D0 를 채게 됩니다. 이 Data 는 약간의 delay 를 가지고 D1으로 출력되게 되죠. 두번째 flip-flop 에서 보면 첫번째 clk edge 에서는 어떠한 data 도 채지 못하지만, 두번째 edge 에서는 D0의 data 가 D1으로 전달되었기 때문에 D1 의 data 를 채서 D2 로 output 을 출력할 수 있습니다. 이 때 그림에서 파란색으로 표시된 delay 는 clk-to-Q delay 라고 합니다. 뒷단의 flip-flop 에서 보면 이 clk-to-Q delay 가 바로 hold margin 인 thold 인 것을 볼 수 있습니다. 결국 setup margin 인 tsetup 은 data window 인 (1tCK - (clk-to-q-delay)) 이죠. 결국
tsetup = (1tCK - (clk-to-q-delay))
thold = (clk-to-Q-delay)
입니다.이는 clock frequency 가 빨라진다 하더라도 똑같이 유지되는 관계입니다. 결국 대부분의 system 에서 무리없이 만족하는 경우입니다. Clk-to-q delay 는 0 이 될 수 없고, 1tCK 가 clk-to-q-delay 보다 큰 범위에서는frequency 가 커져도 아무 문제없죠.(일반적으로 clk-to-q delay 는 수십ps 정도로 엔간히큰 frequency 에서도 문제 없습니다.)
2. 다른 clock 을 사용하는 system (Asynchronous system)
일반적으로 system 이 커지다 보면 모두 같은 clk 을 쓰기 어렵습니다. 사실상 불가능하죠. 한 system 에서 다음 system 으로 clk signal 이 갈 때 많은 buffer 를 타고 가야합니다. 이 경우 frequency 가 매우 느리면 상관 없지만, frequency 가 빠르면 이 delay 로 인해 setup & hold margin 이 어긋날 수 도 있습니다.
이렇게 각 flip-flop 에 서로 다른 delay 를 가진 clk 을 가해주는 경우가 있습니다. 일반적으로 앞단에 더 delay 된 clk 그리고 뒷단에 좀 더 빠른 clk 을 가해주죠. 이렇게 할 경우 두번째 flip-flop 에서 보면 D1 과 clk 간의 setup & hold margin은
tsetup = 1tck - (td + (clk-to-q-delay))
thold = td + (clk-to-q-delay)
입니다. clk 을 반대 방향으로 delay 를 주는 방법의 경우에는(clk 을 첫번째 flip-flop 에 적용하고 clkd 를 두번째 flip-flop에 적용) hold margin 을 더 까먹는 방향이므로 일반적으로는 잘 사용되지 않습니다.
여기서 가정하는 것은 Data 가 delay 를 안 탄다는 가정하에 있으며, 만약 첫번째 flip-flop 의 output 에서 두번째 flip-flop 까지 여러 개의 inverter를 타게 된다면 clk 또한 같은 개수의 inverter를 통과하도록 설계하는게 좋습니다.
이 setup & hold margin 은 아주 간단한 개념 갖기도 하고 이걸 누가 실수해? 라고 생각할 수도 있지만, system 이 커지는 순간 clock 간의 관계가 복잡해지면서 생각보다 까다로운 문제가 될 수 있습니다. 오늘은 기본적인 개념을 여기까지만 알아보도록 하고 나머지는 다음 글에서 알아보도록 하죠.
'반도체 > 전자공학 심화' 카테고리의 다른 글
LDO dominant pole 의 위치와 pole compensation (0) | 2024.04.21 |
---|---|
Circuit design : Clock 의 skew 와 jitter (0) | 2024.04.10 |
ADC (1) ADC type - Flash, Pipeline, SAR 개념 설명 및 비교 (2) | 2024.01.28 |
Comparator 종류 : Continuous-time comparator vs Dynamic comparator (0) | 2023.10.17 |
Spice & ADE simulation : hspice 에서 alter 구문 사용해서 corner, pvt simulation 돌리는 법 (1) | 2023.10.17 |