작성일: 1999.12.28

전자 설계 엔지니어들이 당면하는 문제...

- SETUP TIME 과 CLOCK -

( Setup Time과 Hold Time 그리고 Clock과의 관계 )

 

* 모든 논리회로에는 순수한 조합회로와 순차회로 및 기억회로가 있다.  여기서 순차회로 및 기억회로의 가장 기본이 되는 Flip-Flop을 살펴보기로 한다.

* Flip-Flop은 여러 종류가 있으나 여기서는 D-type의 Flip-Flop을 사용하여 얘기를 전개하기로 하겠다. 우선 Flip-Flop은 D 입력단자에 들어온 값이 출력 단자인 Q에 전달되려면 몇 가지 고려사항이 충족되어야만 된다.

* 우선적으로 Clock단자를 살펴보면 Positive-Edge에서 또는 Negative-Edge에서 동작하는 edge-trigger방식과 CLOCK HIGH 또는 CLOCK LOW에서 동작하는 level-trigger 방식이 있는 데 여기서는 edge-trigger을 예를 들기로 한다.

* D입력단자는 CLOCK이 변화하기 수시간안에 전에 값이 정해져 있어야 올바른 입력이 CLOCK에 맞춰 출력 Q에 전달이 될 것이다. 이것을 흔히 Setup Time이라 한다. 또한 CLOCK이 변화하고 수시간안에 D 입력 값은 변화를 하지 않아야 올바른 입력 값이 출력 Q에 전달이 될 것이다. 이것을 우리는 Hold Time이라 한다.

* 만일 SETUP TIME및 HOLD TIME을 충분히 고려하지 않고 ASIC또는 PLD를 이용한 DIGITAL DESIGN을 하려 하면 최고의 PERFORMANCE을 내지 못할 것이다.

* XILINX의 FPGA, CPLD는 입력단자와 출력단자 그리고 클럭단자에 TIMING CONSTRAINTS을 주어서 원하는 동작을 할 수 있도록 하는 OPTION들이 있는 데 이제부터 이를 자세히 살펴보기로 하겠다.


UCF(USER CONSTRAINT FILE)을 이용하는 방법

* XILINX FOUNDATION PROJECT MANAGER을 기동 시키면 아래와 같은 그림이 나온다. 여기서 왼쪽 상단에 현재 열린 또는 새로 만든 PROJECT의 내용이 나오는 PROJECT BROWSER가 있는 데, 현재 사용되는 LIBRARY, SCHEMATIC,README, UCF등이 보일 것이다.

* XILINX FOUNDATION PROJECT MANAGER *

* 위의 그림에서 TRAINING.UCF FILE이 하는 역할은 크게 두 가지로 나눌 수 있다. 첫번째 역할은 TIMING CONSTRAINTS을 주어서 원하는 성능을 구현하도록 하는 것과 두 번째 역할은 입,출력 핀의 위치 할당 및 CLB의 내부 위치 할당을 정의하는 PLACEMENT CONSTRAINTS가 있다. 여기서는 TIMING CONSTRAINTS에 맞춰 살펴보기로 한다.

* Sample circuit *

* TIMING.UCF의 내용을 살펴보기로 하자.

* 위의 제한사항을 가지고서 PLACE & ROUTE을 실행하는 것을 가지고 우리는 이것을 Timing Driven Placement And Route라 한다. Place and Route가 수행이 되고 나서 사용자가 준 제한사항에 맞춰서 Post-Route Timing Report을 뽑아 보면 아래와 같다. 이를 살펴보기로 하자.

* 위의 내용을 보면 먼저 사용자가 정의한 constraint가 PCF(Physical Constraint File)로 변환되어 보이고 있다. CLK net에 연결된 Flip-Flop, RAM, Latch등이 20ns의 주기안에서 동작을 하는 데 Duty Cycle은 50:50으로 한다. 2개의 항목이 분석되었고 20ns을 넘는 것은 하나도 없으며, 최소한의 주기는 9.858ns 이다.

* slack은 예측한 것과 분석된 것과의 차이를 의미하며 20ns - 9.858ns = 10.142ns가 된다.

* JIM에서 JIM으로 가는 경로는 2단계 Logic을 가지며 CLB_R8C1.K(from CLK)에서 시작되는 경로는

* 그러므로 전체 지연시간은 3.7+1.158+5=9.858이 된다. 그 중에서 88.3%는 Logic 지연이며 11.7%는 Route지연이다.

* 아래에 CLB_R8C1의 내부 구성을 보여 이해를 돕도록 하였다.

* CLB_R8C1의 내부 구성 *

* 위의 내용은 입력 패드에 연결된 Flip-Flop의 지연시간을 보여주고 있다. PIN20을 통과하여 걸리는 시간이 3ns, CLB_R8C1.C4 PIN에 연결되는 Net delay가 1.215ns, CLB_R8C1.K에 관련된 Setup Time before clock K (C inputs via DIN) 3ns, 그러므로 3+1.215+3 = 7.215ns가 된다.

* 입력 MAY는 CLK_PD가 들어오기 전 6NS의 Setup Time이 필요하며 한 항목이 분석됐으며 에러는 없다. Setup Time을 6ns을 정의하였으며 minimum input arrival time before clk 이 1.915ns 이다. 그러므로 Slack은 6ns - 1.915ns = 4.085ns이며 CLK_PD서 JIM 까지는 5.3ns delay constraint이고 MAY와 CLK_PD는 6ns offset이다.

* 입력 MAY가 입력 패드를 거쳐 TOM이라는 NET DELAY을 갖고 TOM NET에 연결된 Flip-Flop의 D 입력단자에 연결될 때 Setup time을 Delay로 간주하여 총 7.215ns Delay를 가지는 데 반하여, CLK_PD는 전용 CLOCK PAD을 거쳐 CLK에 연결되는데 순수한 Net Delay가 5.3ns가 된다. 여기서 우리는 기본적인 법칙을 상기 시킬 필요가 있다. 즉 Data-In 과 Clock 사이의 Setup Time및 Hold Time, Minimum Pulse Width을 기억할 필요가 있다.

* 만일 동일한 시간인 12시 정각에 Data와 Clock을 인가하면 Data는 12시 7.215ns후에 D input에 도착하고 Clock은 12시 5.3ns에 도착하는 데 이렇게 되면 가장 기본적인 Setup Time을 맞추지 못하는 결과를 초래하게 되는 것이다. 그래서 들어오는 입력 Data을 최소한 7.215ns - 5.3ns = 1.915ns로 CLOCK에 앞서 보내면 정확하게 맞는(Just In Time) Delay 및 Setup time 조건이 지켜지는 결과가 된다. 즉 CLOCK보다 Data을 1.915ns 먼저 보내면 문제가 해결되는 것이다.

* -1.915ns에 Data가 들어오고 0ns에 clock이 들어오면 clock은 0+5.3ns = 5.3ns에 Flip-Flop의 Clock에 도달하고 Data는 -1.915ns + 7.215ns = 5.3ns가 되어 꽉 짜맞춘 Setup Time을 가져 이상 없이 Data을 전송할 것이다. 그러므로 minimum input arrival time before clock 이 1.915ns가 되는 것이다.

* 위의 REPORT에 MAY에서 TIM까지의 입력 PATH와 CLK_PD서 CLK까지의 전용 CLOCK PATH의 DELAY가 자세하게 기술되어 있다. 여기서 OFFSET의 사용방법을 살펴보면 입력과 출력 핀과 CLOCK 전용핀 사이의 관계를 설명하고 있으며 system level서 접근해야 이해가 쉬울 수 있다. CHIP1, CHIP2, CHIP3을 이용하여 시스템을 설계 시 CLOCK은 동일한 것을 사용하며 동기식으로 회로를 꾸민다면 최적의 성능을 원한다면 최소한 두 가지 사항은 고려해야 할 것이다. 만일 CHIP2을 XILINX FPGA로 설계한다면 첫번째로 XILINX FPGA의 Flip-Flop의 입력에 도달하는 시간은 알아야 Flip-Flop의 Setup Time에 위배되지 않고 시스템 설계를 할 수 있을 것이고 이것을 Timing Constraints을 이용해 쓴다면 아래와 같을 것이다.

* 두 번째로 XILINX FPGA의 Flip-Flop의 출력 핀이 외부에 전달되는 시간이 얼마면 CHIP3의 Setup-Time에 위배되지 않고 최적의 성능을 구축할 수 있을까?

* 여기서 우리는 CONSTRAINT 의 형태를 조금 바꾸어서 생각을 해 보자.

* 위의 문장은 NET CLK OFFSET = IN 6 NS BEFORE CLK_PD;와 같은 것이다. 다만 Clock의 1주기인 20NS에서 Clock 전단에서 해석할 것인가, Clock 후단에서 해석할 것인가의 문제이다.

* 여기서 우리는 똑같은 결과를 얻었으며 해석상의 차이점을 이해하면 된다. 우선 입력 delay는 7.215NS이며 Clock delay는 5.3NS 이며 그차이는 1.915NS가 된다. 즉 CLOCK이 변하기 전 1.915NS안에 D input이 안정되면 되는 것이며 이를 달리 표현하면 클럭이 변화한 후 최대 20NS-1.915NS = 18.085NS 안에 입력이 변하면 되는 것이다.

* 우린 몇가지 법칙을 가지고 해석을 한다. 먼저 입력은 CLOCK이 변하기 전 BEFORE 즉 MINIMUN INPUT ARRIVAL TIME BEFORE CLOCK으로 해석을 한다.

* 이젠 출력을 다루기로 하자.

* CLOCK에 맞춰 출력이 나가는 데 필요한 시간은 먼저 Clock이 도착하는 데 걸리는 지연시간과 CLOCK TO OUT 지연시간과 OUTPUT PAD을 거치는 시간의 합이므로, 5.327ns + 17.37ns = 22.697ns가 걸린다. 그러므로 Slack은 6ns - 22.697ns = -16.697ns가 된다. 즉 CLOCK이 천이한 후 최소한 22.697ns가 걸려야 FPGA OUT PIN으로 출력이 전달된다. 이 정보를 가지고 이 출력을 다른 CHIP의 입력으로 사용 시 그리고 같은 Clock으로 동기 시킬시 최소한 23NS의 CLOCK 주기를 가져야 한다.

* 출력은 Clock이 천이한 후를 기준으로 계산한다. 즉 Minimum output required time after clock을 이용한다.


* 참고자료: XC4000E CLB Switching Characteristic Guidelines와 XC4000E IOB Input Switching Characteristic Guidelines (2000년도 Xilinx Datasheet에서 발췌)

* 파일명: xc4ke-clb-sw-char.pdf (8,003 bytes) * download *

* 파일명: xc4ke-iob-in-sw-char.pdf (8,603 bytes) * download *

** - siMPLY BETTER iNFORMATIONs - **

** Send mail ** Send to a colleague | ** Print icon ** Print this document