Delay Tune(길이 맞추기)

원 포인트 레슨 2011. 12. 13. 21:40

고속 PCB 디자인에서 trace 길이를 같게 맞추는 작업을 할 때가 종종 있다. 이런 작업은 미앤더라이닝(meander-lining), 트럼보닝(tromboning)등 여러 가지 용어로 불리는데, 여기서는 딜레이 튠(delay tune)이라고 하자. 딜레이 튠은 언제 하며 어느 정도까지 정교하게 해야 하는 것일까?

 길이를 맞추는 이유는 trace에 실려 오는 신호를 에러 없이 정확하게 잡기 위함이다. 그 말은 딜레이 튠을 하지 않으면 신호를 잡을 때 에러가 발생할 수 있다는 것을 의미한다. 따라서 어떤 경우에 신호를 잡는 데 문제가 되는지를 알면 어떻게 길이를 맞추어야 되는지도 알 수 있다. 아래 그림은 일반적인 신호와 클럭의 타이밍을 나타낸다. 앞 파형은 클럭의 rising edge에서만 데이터를 잡는 경우이고 뒤 파형은 rising falling edge 모두에서 데이터를 잡는 경우이다

 클럭의 rsinge edge에서 데이터를 잡는 경우를 대표로 살펴보면, 클럭의 rising edge는 데이터의 중심에 오게 된다. 그렇게 해야 타이밍 마진을 제일 크게 가져갈 수 있다. 성공적으로 신호를 잡으려면 클럭 edge를 중심으로 전후에 미리 안정적인 신호가 있어야 한다

 클럭 edge 전에 미리 신호가 안정된 상태로 준비되어 있어야 하는데 그것을 setup time이라 부른다(위 파형에서 a). 또한 클럭 edge 후에도 어느 정도 안정된 신호를 유지하고 있어야 하는데 그것을 hold time이라 부른다(위 파형의 b). 신호가 클럭 edge를 중심으로 a + b 시간 이상만 지켜주면 신호를 잡는데 아무런 문제가 없다. 이 때, 신호는 타이밍 관점에서 +c ~ -d 만큼의 타이밍 마진을 갖게 된다. , 이때 클럭과 신호는 어느 정도 지터를 가지므로 실제 trace 길이를 맞출 때는+(c – jitter) ~ -(d-jitter) 범위 내에서 맞추면 된다. 일반적으로 지터가 수십 ps 이하라고 한다면, 수백MHz 이하에서는 지터는 무시할 수 있을 것이다. 그러나 GHz가 넘으면 지터를 무시할 수 없다.

 

몇 가지 예들 통해 어느 정도까지 길이를 맞추어야 하는지 살펴 보자.

1> 클럭 스피드가 33 MHz이고 setuphold time이 각각 5 ns인 경우:
클럭 스피드가 33MHz이므로 주기는 대략 30 ns (= 1/33MHz)이다. 따라서 peak-to-peak 타이밍 마진은 20 ns (= 30 – 5 – 5)이다. 1 ns를 대략 145 mm라고 하면, 대략 290 cm의 길이 마진이 된다. 대략 +/- 1.5 m이다. 일반적으로 PCB의 크기를 고려하면 길이를 맞추기 작업을 하지 않아도 타이밍 상에 아무런 문제가 발생하지 않는다.

 

2> 클럭 스피드가 50 0MHz이고 setuphold time이 각각 ns, 0.5 ns 인 경우:
럭 스피드가 500MHz이므로 주기는 2 ns (= 1/500 MHz)이다. 따라서 peak-to-peak 타이밍 마진은 0.5 ns (= 2 – 1 – 0.5)이다. 1 ns를 대략 14 5mm라고 하면, 7 5mm의 길이 마진이 된다. 클럭 edge가 데이터의 정 중앙에 있으면 +25mm ~ -50mm의 길이 마진을 갖는다. 클럭 에지의 위치를 뒤쪽으로 적절히 이동시키면 +/- 37.5mm의 마진이 있다.
 이 
 경우 3가지 정도 생각해 볼 것이 있다. 먼저 클럭의 에지를 이동 시켜 타이밍 마진을 확보 시킬 수 있냐는 문제다. 클럭 에지 이동의 경우, IC에서 신호 출력의 delay 지원여부에 따라서 될 수도 있고 되지 않을 수도 있는 문제가 있다. 정확히 모른다면 안전을 위해 지원되지 않는 쪽을 고려해야 할 것이다. 두 번째로 생각해 볼 것은 마진이 타이트하므로 지터를 고려항목에 포함해야 된다는 것이다. 만약 지터 성분이 100ps라고 한다면 14.5mm를 위 마진에서 빼야 한다. 그러면 마진은 +10.5mm ~ -35.5mm가 된다. 이 정도 범위 내에서 길이가 맞추어 져야 한다. 세 번째 생각해 볼 것은 데이터 싱크 문제이다. 드라이버와 리시버 거리가 멀면 글로벌 클럭으로 데이터 신호의 싱크를 맞출 수 없다. 타이밍 마진이 위에 보듯이 매우 적어 칩과 칩간에 신호 전달 시간이 절대적으로 부족한 상황에 직면한다. 따라서 글로벌 클럭을 사용하지 않고 드라이버에서 클럭과 신호를 같이 주는 source-sync방식을 사용해야만 한다.

 
GHz 이상의 signaling에서는 클럭과 데이터를 따로 하지 않고, 하나의 trace에 실어서 보내는 경우가 많이 있다. 이런 경우에는 래인 간에 따로 길이를 맞추는 작업을 할 필요가 없다.

: