Tengo un divisor de reloj implementado de la siguiente manera:
module sync_out(
input clk, // This is the FPGA system clock
output reg sync // This is the generated sync signal to be tested
);
localparam
SYNC_OUT_CLOCK_RATIO = 20;
reg [10:0] counter; // Clock counter reset when reaching CLOCK_RATIO
initial begin
counter <= 0;
sync <= 0;
end
always @(posedge clk) begin
counter <= counter + 1;
if(counter == SYNC_OUT_CLOCK_RATIO) begin
counter <= 0;
sync <= ~sync;
end
end
endmodule
Aquí, clk
es el reloj principal, y sync
es el reloj dividido que sale de la pizarra. Ahora ISE me da el siguiente error:
Place:1136 - This design contains a global buffer instance,
<clock_deskew_0/BUFG_inst>, driving the net, <clk>, that is driving the
following (first 30) non-clock load pins.
< PIN: sync_apbinterface_0/pclk_test_select[15]_AND_253_o4.A4; >
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_deskew_0/BUFG_inst.O" CLOCK_DEDICATED_ROUTE = FALSE; >
¿Cuál es exactamente el problema aquí y cómo puedo solucionarlo?