I'm trying to use Spartan 6 (TQG144) PLL to generate a high speed clock. I used IP core generator to config the PLL. Here is the simple VHDL code I have to use the generated component:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity clk_test is
Port (
clk_o1: out STD_LOGIC;
clk: in STD_LOGIC
);
end clk_test;
architecture Behavioral of clk_test is
component clock_gen
port
(
CLK_IN1 : in std_logic;
CLK_OUT1 : out std_logic
);
end component;
begin
clock: clock_gen port map(
CLK_IN1 => clk,
CLK_OUT1 => clk_o1);
end Behavioral;
and here is the UCF file:
NET "clk" TNM_NET = clk;
TIMESPEC TS_clk = PERIOD "clk" 50 MHz HIGH 50%;
NET "clk" LOC = P56 | IOSTANDARD = LVTTL;
NET "clk_o1" LOC = P85 | IOSTANDARD = LVTTL;
when I compile the code, I get this error:
Phase 2.7 Design Feasibility Check
ERROR:Place:1205 - This design contains a global buffer instance,
<clock/clkout1_buf>, driving the net, <clk_o1_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: clk_o1.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue. Although the net
may still not route, you will be able to analyze the failure in FPGA_Editor.
< PIN "clock/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Place:1136 - This design contains a global buffer instance,
<clock/clkout1_buf>, driving the net, <clk_o1_OBUF>, that is driving the
following (first 30) non-clock load pins.
< PIN: clk_o1.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue.
< PIN "clock/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
The error says I'm using a non-clock PIN for the clk_o1, and it doesn't work, however, based on the Spartan 6 clocking resources [1] PIN 85 is a GCLK pin (I tried different PINs). I wonder what is wrong that I get this error?
[1] https://www.xilinx.com/support/documentation/user_guides/ug382.pdf#page=25