본문 바로가기

Semiconductor/ASIC & FPGA

Delay / Skew / Slack / Slew

  Delay

 ASIC 또는 FPGA에서 발생하는 Delay는 흔히 이야기하는 딜레이가 맞습니다.

 

 DELAY = CELL_DELAY + NET_DELAY

 

 여기서  CELL은 AND, OR, FlipFlop등의 셀을 의미하며 NET은 이들을 연결하는 WIRE를 의미합니다. CELL_DELAY는 전자의 이동속도 등과 관련이 있으며 CELL_DELAY는 아래 그림과 같이 세수대야 모델로 이해 할 수 있습니다.

 

 세수대야를 CELL로 봅니다. 대야속의 물의 높이 즉 '수위'가 CELL의 값을 나타냅니다. 물이 비어있다고 가정하면 0의 값이며 수도꼭지를 틀어 수위가 1이 될 때 까지의 시간을 RISE_DELAY라고 합니다. 그리고 구멍을 열어 수위가 다시 0이 될 때 까지의 시간을 FALL_DELAY라고 합니다. 물 대신 전자가 대야에 차고 또 비워지고 하는 것을 디지털의 1과 0으로 이해한다면 CELL_DELAY의 의미를 마음속에 그려볼수 있을 것입니다.

 

 

  SKEW

 실제 칩이 있다고 가정해봅시다.

 

 점선 안의 부분은 칩 내부이며 PAD로 연결 된 칩 외부의 PCB상의 클럭이 있습니다. D-FF가 8개가 있는 디자인이며 RTL로 설계 할 때는 단일 클럭인 CLK만을 사용하는 설계였으나 회로 합성툴이 클럭을 나누어 FlipFlop 3개와 5개를 따로 드라이브하는 구조로 합성되었습니다.

 

 여기에서 클럭의 상승에지가 CLK_PCB에서 전송되어 최종 목적지인 플립플롭들에 도착하는 시간이 주요 목적입니다.

 

 플립플롭들 중 foo와 bar의 두 플립플롭으로 도달하는 CLK의 시간은 차이가 있을 것입니다. 그 이유는 세수대야 모델로 생각하면 CLK'는 세 개의 세수대야, CLK''는 5개의 세수대야를 체워야 하기 때문에 CLK에서 공급받는 bar의 세수대야는 foo의 비하여 늦은 시간에 1로 도달 할 것입니다.

 

PCB_CLK로부터 foo와 bar 플립플롭으로 도착하는 클럭의 시점은 아래와 같습니다.

 

 T1=2ns, T2=2.5ns라고 가정하겠습니다. PCB_CLK를 기준으로 foo로 도착하는 CLK의 딜레이는 2ns이고 bar로 도착하는 CLK의 딜레이는 2.5ns입니다. 여기서 "CLK의 SKEW는 0.5ns이다"라고 이야기합니다. 즉, SKEW는 클럭의 딜레이가 아니라 "가장 빨리 도착하는 클럭과 늦게 도착하는 클럭의 차이"입니다.

 

  SLACK

위의 회로를 예로 다시 들도록 하겠습니다. 클럭이 100MHz이라고 가정합니다. 그렇다면 주기는 10ns일 것입니다. 단순화를 위해 T1=T2=0ns라고 가정합니다. Setup / Hold 시간도 무시합니다. foo와 bar사이에 AND게이트 하나가 있습니다. 이 AND게이트의 CELL_DELAY=7ns라고 가정합니다.

 

 클럭의 주기가 10ns이니 딜레이는 10ns를 넘으면 안됩니다. 여기서 딜레이는 7ns이며 그런 이유로 3ns의 여유가 있습니다. 이것을 표현하면 "3ns의 SLACK이 있다"고 이야기합니다. 즉, SLACK은 마진이라고 해석하면 됩니다. 만약 foo와 bar 사이 AND게이트의 CELL_DELAY가 15ns였다면 Timing Violation 상황이 됩니다. 이 때 타이밍 레포트를 살펴보면 SLACK=-5ns라고 표현 할 것입니다. 즉, 네거티브 슬랙의 의미는 Timing Constraint 조건을 만족하지 못했다는 이야기입니다.

 

  SLEW

 SLEW는 출력 PAD의 특성 값입니다. SLEW의 의미는 기울기이며 세수대야 모델로 살펴본다면 RISE_DELAY와 FALL_DELAY를 통칭하는 의미로 보시면 됩니다. 상식적으로 수도꼭지가 굵어서 0에서 1로 가는 시간이 짧으면 짧을수록 좋은 것처럼 보이나 실제로는 그렇지 않습니다. 즉, 항상 SLEW가 높은 것이 좋은 것은 아닙니다. 단점은 대표적으로 2가지가 있습니다.

 

 1) 0V에서 출발하며 3.3V로 도달하는데 걸리는 시간이 아주 짧아지면 원하지 않는 전자기파가 발생하기 쉽습니다. 전자기파는 EMI 또는 NOISE라고 불리우며 PCB상의 다른 소자들에게 간섭을 주는 등 좋지 않은 영향을 줍니다.

 

 2) 예를 들어 64비트 버스가 출력으로 사용되는 디자인이 있다고 가정합니다. 동작 중 우연한 상황에서 64개의 출력 모두 0에서 1로 가야하는 시점이 있을수 있습니다. 이와 같은 상황에서 동시에 스위칭하는 순간 64개의 패드를 짧은 시간에 전압 0에서 1로 올리기 위하여 굵은 수도꼭지로 물을 퍼부어야 할 것이며 이때 물의 양 즉 순간 전류는 많이 필요하게 됩니다. 이처럼 순간 전력 피크가 높아지면 칩 내부의 전압 강하등의 문제가 발생 할 수 있습니다.

 

 이러한 이유로 기울기를 고의적으로 약간 낮춰주는 것이 전기 특성을 좋게 만들기 때문에 SLEW RATE CONTROl이 가능한 출력 패드들이 존재합니다. 동시에 스위칭하는 64개의 출력 패드를 SSO( Simultaneus Switching Outputs)라고 표현합니다.

'Semiconductor > ASIC & FPGA' 카테고리의 다른 글

Debounce a Switch in a FPGA  (0) 2020.11.15
Block RAM( BRAM)  (0) 2020.11.12
Crossing Clock Domain  (0) 2020.11.10
Timing  (0) 2020.11.09
Propagation Delay  (0) 2020.11.08