Timing & Constraints Journal...

 

Record #2586

Product Family: Software

Product Line: Timing

Problem Title:

1.5i¿¡¼­ VIRTEX CLKDLLÀÇ TIMING

Problem Description:

Keywords: Timing, CLKDLL, CLKDLLHF, Constraints Editor

Urgency: Standard

General Description: What are the issues associated with constraining the paths of the various taps of the DLLs? In addition, how do TRCE and Timing Analyzer handle constraints and the various taps of the DLL?
 

CLKDLL Documentation:

For more information about the CLKDLL implementation, refer to the following documents.
XAPP132: Using the Virtex Delay-Locked Loop
http://www.xilinx.com/apps/virtexapp.htm
Libraries Guide:
http://toolbox.xilinx.com/docsan/data/alliance/lib/lib4_22.htm

Timing Constraints:

The CLKDLL provides many powerful features that aid in the design of high-speed digital circuits. Associated with these features is the ability of the Xilinx tool set to perform timing based place and route. PERIOD, OFFSET, and FROM TO constraints will be illustrated in detail. Figure 1 contains one implementation of the CLKDLL.

PERIOD

A PERIOD constraint can be applied to the DLL in figure 1 in the following ways. Using the pad net name method:

Using the DLL output net name method:

Note: TNM_NET does not propagate through the CLKDLL.

Both methods will constrain the net ZERO the same way. However the way that TRCE/TA reports the two constraints is different. An example of timing report for each method will be included below.

Using the pad net name method:

=======================================================================
Timing constraint: NET "PADCLKIN" PERIOD = 30 nS HIGH 50.000 % ;
0 items analyzed, 0 timing errors detected.
-----------------------------------------------------------

The original PERIOD constraint reports 0 items analyzed. However, TRCE/TA creates another PERIOD constraint for each DLL output based upon the original PERIOD. Each of the new PERIOD constraints is adjusted depending on the output. For example a 30ns PERIOD on the input is changed to a 15ns PERIOD on the 2X output.

=======================================================================
Timing constraint: PERIOD * 2 analysis for net "TWOTIME" derived from
NET "PADCLKIN" PERIOD = 30 ns HIGH 50.000 % ;
144 items analyzed, 0 timing errors detected.
Minimum period is 9.015ns.
-----------------------------------------------------------------------
Slack: 5.985ns path PADCE to &__A__80 relative to
15.000ns delay constraint

Using the DLL output net name method:

=======================================================================
Timing constraint: TS_TWOTIME = PERIOD TIMEGRP "TWOTIME" 30 ns HIGH 50.0%;
348 items analyzed, 141 timing errors detected.
Minimum period is 14.690ns.
-----------------------------------------------------------------------
Slack: -7.112ns path &__A__70 to U3/BU3 relative to
10.131ns skew between &__A__70 and U3/BU3

Note: If the CLKDV output is used with a division factor (CLKDV_DIVIDE) of 1.5 or 2.5, then a PERIOD based upon the CLKDV output net must be used. Timing Engine does not properly propagate PERIOD constraints in this situation.

The CLKDLL provides duty cycle correction on all 1x clock outputs such that all 1x outputs by default have a 50/50 duty cycle. The DUTY_CYCLE_CORRECTION property (TRUE by default), controls this feature. This should be kept in mind when creating period constraints based upon the DLL outputs.
For example:

The modified constraint accounts for the duty cycle correction. Duty cycle correction also occurs on the 2x and DV outputs. This correction can not be controlled by the property.

PAD to SETUP (OFFSET IN BEFORE):

When creating pad-to-setup requirements, care should be taken to incorporate any phase or PERIOD adjustment factor into the value specified for an OFFSET IN constraint.

For example: If your register is clocked by the net from the CLK90 pin of the DLL which has a PERIOD of 20ns, then the OFFSET value should be adjusted by an additional 5 ns.

NOTE: The clock net name required for OFFSET constraints is the clock net name attached to the IPAD. In this case it is PADCLKIN not CLK90, refer to fig 2 for the clk network.
 

CLOCK to PAD (OFFSET OUT AFTER):

When creating clock-to-pad requirements, care should be taken to incorporate any phase or PERIOD adjustment factor into the value specified for an OFFSET OUT constraint. For example: If your register is clocked by the net from the CLK90 pin of the DLL which has a PERIOD of 20ns, then the OFFSET value should be adjusted by 5 ns less than the original constraint.

FROM TO In Multiple Clock Domains:

When using PERIOD constraints, the user must properly constrain the paths between multiple clock domains. Refer to figure 4. If a PERIOD constraint is applied to the CLK90 and CLK0 output pins of the DLL, the CLK0 PERIOD constraint will constrain the paths between flip-flop A and B. This type of constraining can lead to setup violations. Consider the waveforms in figure 5. Because of the phase shift between CLK90 and CLK0, the path from A to B has 25% less time than the PERIOD constraint allows. To properly constrain these paths use a FROM TO constraint.
For Example:

The TIMESPEC is set at 15ns because the PERIOD on CLK0 is 20ns.

This type of correction is required for all clock domain interactions. The following table contains the some of the possible configurations and the associated corrections.
 

CLKDLL 

Required Correction

CLK0 to CLK90

Subtract 75%

CLK0 to CLK180

Subtract 50%

CLK0 to CLK270

Subtract 25%

CLK270 to CLK0

Subtract 75%

CLK270 to CLK90

Subtract 50%

CLK270 to CLK180

Subtract 25%

Constraints Editor:

 The Constraints Editor handles constraints specific to the CLKDLL in the following way.

 PERIOD:

PAD to SETUP and CLOCK to PAD:

FROM:TO:


 

 



Copyleft Chang-woo,YANG