En mi diseño Verilog tengo un reloj de tablero de 25Mhz del cual obtengo un reloj de 100Mhz. Procedente de un Pin externo, tengo un reloj asíncrono de 4.77 Mhz que debería controlar la lógica y sincronizarse antes (utilizando el reloj principal):
always @(posedge clk_100Mhz_i)
begin
// Synchronizer chain... hopefully
clk4_del0 <= clk4_77_i; // SysClk from ext pin
clk4_del1 <= clk4_del0;
clk4_del2 <= clk4_del1;
end
// Used to clock internal regs
assign clock_4_77Mhz = clk4_del2;
// Sample
always @(posedge clock_4_77Mhz)
begin
timerIdx <= timerIdx +1;
end
Lamentablemente recibo la siguiente advertencia:
Advertencia (332060): Se determinó que Nodo: X8255_top: x8255 | clk4_del2 es un reloj pero se encontró sin una asignación de reloj asociada ...
También recibo una advertencia sobre un reloj sin restricciones. Intenté usar lo que sugirió el analizador de tiempo y agregué la cuarta línea a mi .SDC:
# Constrain clock port clk_25MHz_i
create_clock -period "25.0 MHz" -name clk_25MHz [get_ports clk_25MHz_i]
create_clock -period "4.77 MHz" -name clk_4_77MHz [get_ports clk_4_77_i]
create_clock -name {X8255_top:x8255|clk4_del2} -period 210
sin éxito.
¿Qué estoy haciendo mal?