작성일: 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등이 보일 것이다.
위의 그림에서 TRAINING.UCF FILE이 하는 역할은 크게 두 가지로 나눌 수 있다. 첫번째 역할은 TIMING CONSTRAINTS을 주어서 원하는 성능을 구현하도록 하는 것과 두 번째 역할은 입,출력 핀의 위치 할당 및 CLB의 내부 위치 할당을 정의하는 PLACEMENT CONSTRAINTS가 있다. 여기서는 TIMING CONSTRAINTS에 맞춰 살펴보기로 한다.
TIMING.UCF의 내용을 살펴보기로 하자.
# The user constraint file (UCF)
# This is UCF file template which includes examples.
# See manuals for detailed description of these and other constraints
# Both the "#" sign and "//" (double slash) are used as comments in the UCF file.
NET CLK PERIOD = 20 NS;
NET MAY OFFSET = IN : 6ns : before : CLK_PD ;
위의 제한사항을 가지고서 PLACE & ROUTE을 실행하는 것을 가지고 우리는 이것을 Timing Driven Placement And Route라 한다. Place and Route가 수행이 되고 나서 사용자가 준 제한사항에 맞춰서 Post-Route Timing Report을 뽑아 보면 아래와 같다. 이를 살펴보기로 하자.
----- Timing Report ---------
======================================================================
Timing constraint: NET "CLK" PERIOD = 20 nS HIGH 50.000 % ;
2 items analyzed, 0 timing errors detected.
Minimum period is 9.858ns.
----------------------------------------------------------------------
Slack: 10.142ns path JIM to JIM relative to
20.000ns delay constraint
Path JIM to JIM contains 2 levels of logic:
Path starting from Comp: CLB_R8C1.K (from CLK)
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
CLB_R8C1.YQ Tcko 3.700R JIM
TIM
CLB_R8C1.C3 net (fanout=1) 1.158R TIM
CLB_R8C1.K Thh1ck 5.000R JIM
$I2/$1I37_Hint
JIM
-------------------------------------------------
Total (8.700ns logic, 1.158ns route) 9.858ns (to CLK)
(88.3% logic, 11.7%% route)
위의 내용을 보면 먼저 사용자가 정의한 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)에서 시작되는 경로는
CLB_R8C1.YQ Tcko(Clock K to outputs Q) 3.7ns
CLB_R8C1.C3 net(fanout=1) TIM net로 가는 delay 1.158
CLB_R8C1.K Thh1ck(Setup time before clock K(C inputs via H1 through H)) 5.0
그러므로 전체 지연시간은 3.7+1.158+5=9.858이 된다. 그 중에서 88.3%는 Logic 지연이며 11.7%는 Route지연이다.
아래에 CLB_R8C1의 내부 구성을 보여 이해를 돕도록 하였다.
----------------------------------------------------------------------
Slack: 12.785ns path MAY to JIM relative to
20.000ns delay constraint
Path MAY to JIM contains 2 levels of logic:
Path starting from Comp: P20.PAD
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
P20.I1 Tpid 3.000R MAY
MAY
TOM
CLB_R8C1.C4 net (fanout=1) 1.215R TOM
CLB_R8C1.K Tdick 3.000R JIM
TIM
-------------------------------------------------
Total (6.000ns logic, 1.215ns route) 7.215ns (to CLK)
(83.2% logic, 16.8%% route)
위의 내용은 입력 패드에 연결된 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가 된다.
======================================================================
Timing constraint: COMP "MAY" OFFSET = IN 6.000 nS BEFORE COMP "CLK_PD" ;
1 item analyzed, 0 timing errors detected.
Minimum allowable offset is 1.915ns.
----------------------------------------------------------------------
Slack: 4.085ns path MAY to JIM relative to
5.300ns delay constraint CLK_PD to JIM and
6.000ns offset MAY to CLK_PD
입력 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이다.
Data path MAY to JIM contains 2 levels of logic:
Path starting from Comp: P20.PAD
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
P20.I1 Tpid 3.000R MAY
MAY
TOM
CLB_R8C1.C4 net (fanout=1) 1.215R TOM
CLB_R8C1.K Tdick 3.000R JIM
TIM
-------------------------------------------------
Total (6.000ns logic, 1.215ns route) 7.215ns (to CLK)
(83.2% logic, 16.8%% route)
Clock path CLK_PD to JIM contains 2 levels of logic:
Path starting from Comp: P35.PAD
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
P35.CLKIN Tclkin 0.000R CLK_PD
CLK_PD
BUFGP_BL.I net (fanout=1) 3.890R CLK_PD
BUFGP_BL.O Tclk 0.000R $I8
CLB_R8C1.K net (fanout=2) 1.410R CLK
-------------------------------------------------
Total (0.000ns logic, 5.300ns route) 5.300ns
(0.0% logic, 100.0%% route)
입력 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을 이용해 쓴다면 아래와 같을 것이다.
NET MAY OFFSET = IN 6NS BEFORE CLK_PD ;
두 번째로 XILINX FPGA의 Flip-Flop의 출력 핀이 외부에 전달되는 시간이 얼마면 CHIP3의 Setup-Time에 위배되지 않고 최적의 성능을 구축할 수 있을까?
NET JOE OFFSET = OUT 6NS AFTER CLK_PD ;
----------------------------------------------------------------------
All constraints were met.
Timing summary:
---------------
Timing errors: 0 Score: 0
Constraints cover 4 paths, 0 nets, and 4 connections (80.0% coverage)
Design statistics:
Minimum period: 9.858ns (Maximum frequency: 101.440MHz)
Minimum input arrival time before clock: 1.915ns
Analysis completed Wed Jul 01 16:00:27 1998
----------------------------------------------------------------------
여기서 우리는 CONSTRAINT 의 형태를 조금 바꾸어서 생각을 해 보자.
NET CLK OFFSET = IN 14NS AFTER CLK_PD;
위의 문장은 NET CLK OFFSET = IN 6 NS BEFORE CLK_PD;와 같은 것이다. 다만 Clock의 1주기인 20NS에서 Clock 전단에서 해석할 것인가, Clock 후단에서 해석할 것인가의 문제이다.
======================================================================
Timing constraint: COMP "MAY" OFFSET = IN 14.000 nS AFTER COMP "CLK_PD" ;
1 item analyzed, 0 timing errors detected.
Maximum allowable offset is 18.085ns.
----------------------------------------------------------------------
Slack: 4.085ns path MAY to JIM relative to
5.300ns delay constraint CLK_PD to JIM and
6.000ns offset MAY to CLK_PD
Data path MAY to JIM contains 2 levels of logic:
Path starting from Comp: P20.PAD
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
P20.I1 Tpid 3.000R MAY
MAY
TOM
CLB_R8C1.C4 net (fanout=1) 1.215R TOM
CLB_R8C1.K Tdick 3.000R JIM
TIM
-------------------------------------------------
Total (6.000ns logic, 1.215ns route) 7.215ns (to CLK)
(83.2% logic, 16.8%% route)
Clock path CLK_PD to JIM contains 2 levels of logic:
Path starting from Comp: P35.PAD
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
P35.CLKIN Tclkin 0.000R CLK_PD
CLK_PD
BUFGP_BL.I net (fanout=1) 3.890R CLK_PD
BUFGP_BL.O Tclk 0.000R $I8
CLB_R8C1.K net (fanout=2) 1.410R CLK
-------------------------------------------------
Total (0.000ns logic, 5.300ns route) 5.300ns
(0.0% logic, 100.0%% route)
----------------------------------------------------------------------
All constraints were met.
여기서 우리는 똑같은 결과를 얻었으며 해석상의 차이점을 이해하면 된다. 우선 입력 delay는 7.215NS이며 Clock delay는 5.3NS 이며 그차이는 1.915NS가 된다. 즉 CLOCK이 변하기 전 1.915NS안에 D input이 안정되면 되는 것이며 이를 달리 표현하면 클럭이 변화한 후 최대 20NS-1.915NS = 18.085NS 안에 입력이 변하면 되는 것이다.
Timing summary:
---------------
Timing errors: 0 Score: 0
Constraints cover 4 paths, 0 nets, and 4 connections (80.0% coverage)
Design statistics:
Minimum period: 9.858ns (Maximum frequency: 101.440MHz)
Maximum input arrival time after clock: 18.085ns
Minimum input arrival time before clock : 1.915ns
우린 몇가지 법칙을 가지고 해석을 한다. 먼저 입력은 CLOCK이 변하기 전 BEFORE 즉 MINIMUN INPUT ARRIVAL TIME BEFORE CLOCK으로 해석을 한다.
이젠 출력을 다루기로 하자.
===========================================================================
Timing constraint: COMP "JOE" OFFSET = OUT 6.000 nS AFTER COMP "CLK_PD" ;
1 item analyzed, 1 timing error detected.
Minimum allowable offset is 22.697ns.
---------------------------------------------------------------------------
Slack: -16.697ns path CLK_PD to JIM relative to
17.370ns delay constraint JIM to JOE and
6.000ns offset CLK_PD to JOE
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 path CLK_PD to JIM contains 2 levels of logic:
Path starting from Comp: P13.PAD
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
P13.CLKIN Tclkin 0.000R CLK_PD
CLK_PD
BUFGP_TL.I net (fanout=1) 3.955R CLK_PD
BUFGP_TL.O Tclk 0.000R $I8
CLB_R14C7.K net (fanout=2) 1.372R CLK
-------------------------------------------------
Total (0.000ns logic, 5.327ns route) 5.327ns
(0.0% logic, 100.0%% route)
Data path JIM to JOE contains 2 levels of logic:
Path starting from Comp: CLB_R14C7.K (from CLK)
To Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- --------
CLB_R14C7.XQ Tcko 3.700R JIM
JIM
P39.O net (fanout=1) 1.670R JIM
P39.PAD Tops 12.000R JOE
JOE.OUTBUF
JOE
-------------------------------------------------
Total (15.700ns logic, 1.670ns route) 17.370ns
(90.4% logic, 9.6%% route)
---------------------------------------------------------------------------
1 constraint not met.
Timing summary:
---------------
Timing errors: 1 Score: 16697
Constraints cover 5 paths, 0 nets, and 5 connections (100.0% coverage)
Design statistics:
Minimum period: 9.828ns (Maximum frequency: 101.750MHz)
Minimum input arrival time before clock: 1.881ns
Minimum output required time after clock: 22.697ns
출력은 Clock이 천이한 후를 기준으로 계산한다. 즉 Minimum output required time after clock을 이용한다.
Analysis completed Sun Jul 05 23:38:17 1998
---------------------------------------------------------------------------
참고자료: XC4000E CLB Switching Characteristic Guidelines와 XC4000E IOB Input Switching Characteristic Guidelines (2000년도 Xilinx Datasheet에서 발췌)
Send to a colleague | Print this document