Electrical – Clock Implementation Design Warning on Spartan 3E

clockfpgaspartanspartan-3xilinx

I am working with a SPARTAN 3E-FT256 on Xilinx 14.1, and have to generate a 25 MHz clock from the onboard 50MHz clock.I am accomplishing this with a Digital Clock Manager.

These are my UCF designations :

NET "CLK_50MHZ" LOC = "C8" | IOSTANDARD = LVCMOS33 ;   //GCLK 10
NET "CLK_50MHZ" PERIOD = 20.0ns HIGH 40%;              //DCM_X0Y1

DCM Instantiation :

wire clk_ibufg;
wire clock;
wire CLK0_OUT;

IBUFG clk_ibufg_inst ( .I(CLK_50MHZ) , .O(clk_ibufg) );
BUFG  clk_bufg_inst  ( .I(clock) , .O(clk));

ClockManager1 clock_converter (
.CLKIN_IN(clk_ibufg), 
.CLKFX_OUT(clock), 
.CLK0_OUT(CLK0_OUT)
);

I am very uncertain about the use of IBUFG and BUFG, but the datasheet seems to prefer the connections —IBUFG to DCM to BUFG—- for minimum skew.

The warning I get :

"The following Clock signals are not routed on the dedicated
global clock routing resources. This will usually result in
longer delays and higher skew for the clock load pins. This could
be the result of incorrect clock placement, more than 8 clocks
feeding logic in a single quadrant of the device, or incorrect
logic partitioning into the quadrant(s). Check the timing report
to verify the delay and skew for this net
Net Name: clock"

Warning

Is there any way to specify which BUFG or IBUFG to use? Why am I getting this warning?

Best Answer

Because you are using the CoreGenerator wizard, most of the low level stuff can be selected as part of the wizard meaning you don't need to instantiate them manually.

For the outputs, as you have selected auto, you don't need to add a BUFG. Otherwise the DCM will probably instantiate a BUFG for the output which then has to feed your BUFG (i.e. two in a row). Two global clock buffers shouldn't be placed in a row, firstly because there is no need to, and secondly because it means the signal has to leave the global clock network it is on from the first BUFG to get to the input of the second BUFG, hence your warning.

You should also be able to select that an IBUFG be used in the DCM wizard for the input, which means again, you need not instantiate it manually.

From the comments you also mention a warning about CLK0_OUT being unused. You have connected this output to a wire, and I can only assume that you are not then connecting it anywhere. CLK0 is used for feedback as you say, but according to the Xilinx App Note XAPP462 (pg10) you don't need feedback if using only the CLKFX output port, which in your case is true.

"No feedback. Allowed if using only the CLKFX or CLKFX180 outputs."

Related Topic