[FPGA]

설계에 있어서 고려해야 할 타이밍 문제

Neo Park 2012. 4. 12. 12:10

 

VHDL 합성에 있어서 타이밍과 동작기능은 항상 같이 고려해야 할 문제인 것입니다.
설계자가 설계한 것을 시뮬레이션을 통하여 정상적인 동작을 할 것인지 검증한 다음, 합성과정을 거치게 됩니다.
이러한 합성과정에서, VHDL코드는 특정한 Technology library( 최종 제작할 칩의 공정에 해당하는 셀라이브러리)에 있는

하드웨어 로직게이트로 매핑됩니다. 이때 설계자는 합성툴에 합성을 위한 설계제한(design constraint), 즉 동작속도제한,

합성로직 크기제한 등을 지정하게 됩니다. 그러면 합성툴은 이러한 설계제한에 맞추어 하드웨어를 최적화 시키면서 합성하게 되는 것입니다. 그런데 만약 이러한 합성결과가 타이밍 기준을 만족시킨다면, 설계자는 레이아웃과정으로 넘어갈 수 있습니다.

그러나 만일 합성결과가 타이밍 기준을 만족시키지 않으면 설계자는 설계내용을 분석하고 타이밍 문제를 다시 해결하여야 합니다.

일반적으로 타이밍 위반(timiming violation)은 두가지가 있으며, 하나는 Sepup timing violation이며 또하나는 Hold timing violation입니다.

이제 이에 대하여 정리하여 보겠습니다. 이 내용은 Weng Fook Lee의 저서인 “VHDL coding and logic synthesis with SYNOPSYS®”, Academic Press 을 참조하였습니다.


1. Setup timing violation
Setup timing violation은 일반적으로 합성 constraint가 너무 타이트 한경우 발생할 수 있습니다. 예를 들어 0.5um공정을 사용하여

100MHz까지 동작할 수 있는 하드웨어 구조가 있다고 가정합시다. 만약 설계자가 이를 합성하면서 133MHz까지 동작시키도록

합성한다고 합니다. 그렇다면 합성된 결과는 엄청나게 많은 setup violation이 발생하게 될 것입니다. 이는 합성된 결과가 클럭 주기보다도

큰 딜레이를 갖는 combinational logic(조합회로)를 갖는 다는 것입니다.

 

 

그림 1. 플립플롭의 입력신호 A를 구동하는 조합회로가 있는 회로

 

즉 그림 1에서 볼 때 플립플롭의 클럭이 상승에지일 때 출력 Q로 전달되어야하는 입력 A의 값이 아직 정해지지 못한경우에 setup time violation이 발생합니다. 예상할 수 있듯이, 그 입력 A의 값은 바로 앞단의 combinational logic의 출력이므로 combiational logic의

딜레이가 너무 크다는 것을 알 수 있습니다.


만일 어떤 회로의 setup time requirement(셋업타임요구조건)이 1ns이고 클럭 주기가 10ns이라고 한다면 그림 2에 보인바와 같이

플립플롭의 클락 상승에지가 있기 이전 1ns 이전에는 유효한 입력 데이터 A가 도착해야 함을 의미합니다.

 

 

그림 2. 신호 A에 대한 셋업타임을 보여주는 타이밍도

 

 

(참고) Slack의 개념
그림 3에 보인바와 같이 setup time interval의 가장빠른 경계(시간상 한계점)부터 데이터가

실제 도착한 시간사이의 절대시간간격을 Slack이라고 부릅니다.

 

그림 3. Slack을 표시한 타이밍도

 

따라서 Slack의 값이 음의 수(negative value)이면 setup timing violation이 발생하였음을 알 수 있습니다.

 


2. Hold timing violation
모든 순차로직은 hold time requirment가 존재하며, 이는 hold time 동안은 유효한 데이터가 계속 변하지 않고 유지외어야 함이 필요하다는 것입니다. 만일 홀드타임동안 유효한 데이터가 유지외지 못하면 hold timing violation이 발생됩니다.
Hold time violation은 너무빠르게 설계되었을 때 주로 발생합니다. 예를 들어 상승에지에 동작하는 플립플롭이 입력값을 인지하기도 전에 입력이 바뀌면 hold time violation이 발생합니다. 그림 3의 예에서는 홀드타인요구조건이 1ns인 경우이며, 이러한 경우에는 클럭상승 에지를 기준으로 최소 1ns동안은 값을 유지하고 있어야 합니다.

 

그림 4. 신호 A에 대한 홀드타임을 보여주는 타이밍도

 

 

3. 합성에 있어서 Setup/Hold timing 의 고려
합성을 완료한 후 설계자는 합성된 결과를 가지고 정적 타이밍 분석을 하여, setup 또는 hold time violation이 있는 지 확인해야 합니다. 그림 5에 합성된 회로의 구성도를 참조로 하여 설명합니다.

 

그림 5. 정적 타이밍 분석을 위한 합성회로

 

 

setup violation을 발생하지 않도록 하기 위해서는 다음과 같은 식이 항상 만족되어야 합니다.

 

 

 

 

다음으로 hold time violation을 발생하지 않도록 하기 위해서는 다음과 같은 식이 만족되어야 합니다.

 

 

 

 

만일 합성후 정적 타이밍 분석에서 타이밍 violation이 발생되면 합성 최적화조건을 달리하거나, VHDL코드의 형태에 따라 합성되는

하드웨어 형태가 다르므로 이를 이용하여 소스를 수정한 후 다시합성하는 등 여러가지 방법을 통하여 violation을 해결하여야 합니다