1. Setup timing violation
Setup timing violation은 일반적으로 합성 constraint가 너무 타이트 한경우 발생할 수 있습니다.
예를 들어 0.5um공정을 사용하여 100MHz까지 동작할 수 있는 하드웨어 구조가 있다고 가정합시다.
만약 설계자가 이를 합성하면서 133MHz까지 동작시키도록 합성한다고 합니다.
그렇다면 합성된 결과는 엄청나게 많은 setup violation이 발생하게 될 것입니다.
이는 합성된 결과가 클럭 주기보다도 큰 딜레이를 갖는 combinational logic(조합회로)를 갖는 다는 것입니다.
만일 어떤 회로의 setup time requirement(셋업타임요구조건)이 1ns이고 클럭 주기가 10ns이라고 한다면
그림 2에 보인바와 같이 플립플롭의 클락 상승에지가 있기 이전 1ns 이전에는 유효한 입력 데이터 A가
도착해야 함을 의미합니다.
(참고) Slack의 개념
그림 3에 보인바와 같이 setup time interval의 가장빠른 경계(시간상 한계점)부터 데이터가 실제 도착한
시간사이의 절대시간간격을 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동안은 값을 유지하고 있어야 합니다.
3. 합성에 있어서 Setup/Hold timing 의 고려
합성을 완료한 후 설계자는 합성된 결과를 가지고 정적 타이밍 분석을 하여, setup 또는
hold time violation이 있는 지 확인해야 합니다.
그림 5에 합성된 회로의 구성도를 참조로 하여 설명합니다.
setup violation을 발생하지 않도록 하기 위해서는 다음과 같은 식이 항상 만족되어야 합니다.
다음으로 hold time violation을 발생하지 않도록 하기 위해서는 다음과 같은 식이 만족되어야 합니다.
만일 합성후 정적 타이밍 분석에서 타이밍 violation이 발생되면 합성 최적화조건을 달리하거나,
VHDL코드의 형태에 따라 합성되는 하드웨어 형태가 다르므로 이를 이용하여 소스를 수정한 후 다시합성하는
여러가지 방법을 통하여 violation을 해결하여야 합니다.
출처 : www.quantumbase.com (퀀텀베이스)
'[FPGA]' 카테고리의 다른 글
공학 기초 단위 (0) | 2016.11.14 |
---|---|
효율적인 RTL 코딩하는 방법 (0) | 2016.11.14 |
Quartus 타이밍 분석, 디자인 성능 검증 (0) | 2016.11.01 |
반도체 패키징(packaging)이란? (0) | 2016.10.20 |
반도체 package type (0) | 2016.10.20 |