본문 바로가기

Semiconductor/ASIC & FPGA

Timing

 Verilog 합성에 있어 Timing과 동작 기능은 항상 같이 고려해야 할 문제입니다. 설계자가 설계한 것을 Simulation을 통해 정상적인 동작을 하는지 검증한 후 합성과정을 거치게 됩니다. 이러한 합성과정에서 Verilog 코드는 특정한 Technology library( 칩 공정에 해당하는 Cell-library)에 있는 Hardware Logic-gate로 Mapping됩니다. 

 

 이 때 설계자는 합성 Tool의 합성을 위한 설계 제한( Design contraint) 즉, 동작속도제한, 합성 Logic 크기제한 등을 지정하게 됩니다. 합성 Tool은 이러한 설계제한에 맞추어 Hardware를 최적화 시키며 합성하게 됩니다. 이 후 이러한 합성 결과가 Timing 기준을 만족시키면 설계자는 Layout 과정으로 넘어갈 수 있습니다. 그러나, 만일 합성 결과가 Timing 기준을 만족시키지 못한다면 설계자는 설계 내용을 분석하고 Timing 문제를 다시 해결해야합니다.

 

 일반적으로 Timing violation에는 두 가지가 있으며 첫 째로 Setup timing violation 나머지 하나는 Hold timing violation입니다. 

 

  Setup timing violation

 Setup timing violation은 일반적으로 합성 constraint가 너무 타이트한 경우 발생할 수 있습니다. 예로 0.5um 공정을 사용하여 100MHz까지 동작할 수 있는 Hardware 구조가 있다고 가정합니다. 만약 설계자가 이를 합성하면서 133MHz까지 동작시키도록 합성하게 되면 합성된 결과는 많은 Setup violation이 발생하게 될 것입니다. 이는 합성 된 결과가 Clock 주기보다도 큰 Delay를 갖는 Combinational logic을 갖는다는 것입니다.

 

Flip-Flop 입력 A를 구동하는 조합회로가 포함된 회로

 위의 그림에서 Flip-Flop의 Clock이 상승에지일 때 출력 Q로 전달되어야하는 입력 A의 값이 아직 정해지지 못한 경우에 Setup timing violation이 발생합니다. 입력 A의 값은 앞 단의 Combinational logic의 출력이므로 Delay가 너무 커서 생기는 문제라는 것을 알 수 있습니다.

 

 만일 회로의 Setup time requirement가 1ns이고 Clock 주기가 10ns이라고 한다면 아래의 그림과 같이 Flip-Flop의 Clock 상승에지가 있기 이전 1ns 이전에는 유효한 A 입력 데이터가 도착해야 함을 의미합니다.

 

신호 A에 대한 Setup time을 보여주는 Timing

 Bonus) Slack의 개념

 

 아래 그림과 같이 Setup time interval의 가장 빠른 경계( 시간상 한계점)부터 데이터가 실제 도착한 시간 사이의 절대 시간 간격을 Slack이라고 부릅니다. 따라서 Slack의 값이 음의 수( Negative value)이면 Setup timing violation이 발생하였음을 알 수 있습니다.

 

Slack을 표시한 Timing

 

  Hold timing violation

 모든 순차로직은 Hold time requirement가 존재하며 이는 Hold time 동안은 유효한 데이터가 변하지 않응 유지되어야 한다는 것입니다. 만일 Hold time동안 유효한 데이터가 유지되지 못하면 Hold timing violation이 발생하게 됩니다. Hold time violation은 주로 로직의 동작속도가 너무 빠르게 설계되었을때 발생합니다.

 

 예로 상승에지에 동작하는 Flip-Flop이 입력값을 인지하기전에 입력이 바뀌면 Hold time violation이 발생합니다. 아래 그림은 Hold time requirement가 1ns인 경우이며 이러한 경우 Clock 상승에지를 기준으로 최소 1ns 동안은 값을 유지하고 있어야 합니다.

 

신호 A에 대한 Hold time을 보여주는 Timing

 

 합성에 있어 Setup / Hold timing의 고려

 합성 완료 후 설계자는 합성된 결과로 정적 타이밍 분석을 하여 Setup / Hold time violation이 있는지 확인해야 합니다.

 

정적 Timing 분석을 위한 합성회로

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

 

  • $t_{prop} + t_{delay} < t_{clock} - t_{setup}$
  • $t_{prop}$:   Flop-Flop에서 입력 Clock시점에서 출력 Q까지의 전파지연
  • $t_{delay}$:   조합회로에서의 전파지연
  • $t_{setup}$:   Flip-Flop의 Setup time requirement
  • $t_{clock}$:   Clock 주기

 Hold time violation을 발생하지 않도록 하기 위하여 다음 식이 만족되어야 합니다.

 

  • $t_{delay} + t_{prop} > t_{hold}$
  • $t_{hold}$:   Flip-Flop Hold time requirement

 합성 후 정적 Timing 분석에서 Timing violation이 발생되면 합성 최적화 조건을 달리하거나 Verilog 코드의 형태에 따라 합성되는 Hardware 형태가 다르므로 이를 이용하여 소스 수정 후 다시 합성하는 등 여러가지 방법을 사용하여 violation을 해결해야 합니다.

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

Block RAM( BRAM)  (0) 2020.11.12
Crossing Clock Domain  (0) 2020.11.10
Propagation Delay  (0) 2020.11.08
Shift Register  (0) 2020.11.08
Metastability  (0) 2020.10.31