Estoy diseñando un circuito de encriptación simple en Xilinx Virtex-5 FPGA. He dado la restricción de tiempo en la UCF de la siguiente manera:
NET "clk" TNM_NET = clk;
TIMESPEC TS_clk = PERIOD "clk" 25 ns HIGH 50%;
Mi diseño no tiene ningún error en el informe de análisis de tiempo estático después del lugar y la ruta. A continuación se muestra parte del informe:
Timing errors: 0 Score: 0
Constraints cover 191219 paths, 0 nets, and 38438 connections
Design statistics:
Minimum period: 9.954ns{1} (Maximum frequency: 100.462MHz)
Sin embargo, cuando ejecuto un lugar de publicación y una simulación de tiempo de ruta en modelsim. Me da este error y el diseño no genera el resultado adecuado en la simulación.
# ** Error: /home/rex/opt/Xilinx/10.1/ISE/verilog/mti_se/simprims_ver/simprims_ver_source.v(121020): $hold( posedge CLK:650974 ps, negedge I &&& (in_clk_enable1 != 0):651125 ps, 153 ps );
# Time: 651125 ps Iteration: 0 Instance: /tb/aes_wrapper_0/\aes_fwd_0/aes_fwd_core_inst/CIPHER_RND_1_ARK_ROW_1_4_ARK_COL_1_3_xor_itm_1_sg1
# ** Error: /home/rex/opt/Xilinx/10.1/ISE/verilog/mti_se/simprims_ver/simprims_ver_source.v(121020): $hold( posedge CLK:650974 ps, negedge I &&& (in_clk_enable1 != 0):651125 ps, 153 ps );
# Time: 651125 ps Iteration: 0 Instance: /tb/aes_wrapper_0/\aes_fwd_0/aes_fwd_core_inst/CIPHER_RND_1_ARK_ROW_1_4_ARK_COL_1_2_xor_itm_1_sg3_0
# ** Error: /home/rex/opt/Xilinx/10.1/ISE/verilog/mti_se/simprims_ver/simprims_ver_source.v(121020): $hold( posedge CLK:650974 ps, negedge I &&& (in_clk_enable1 != 0):651125 ps, 153 ps );
# Time: 651125 ps Iteration: 0 Instance: /tb/aes_wrapper_0/\aes_fwd_0/aes_fwd_core_inst/CIPHER_RND_1_ARK_ROW_1_4_ARK_COL_1_3_xor_itm_1_sg3_0
# ** Error: /home/rex/opt/Xilinx/10.1/ISE/verilog/mti_se/simprims_ver/simprims_ver_source.v(121019): $hold( posedge CLK:650974 ps, posedge I &&& (in_clk_enable1 != 0):651125 ps, 153 ps );
# Time: 651125 ps Iteration: 0 Instance: /tb/aes_wrapper_0/\aes_fwd_0/aes_fwd_core_inst/CIPHER_RND_1_ARK_ROW_1_4_ARK_COL_1_2_xor_itm_1_sg3_2
# ** Error: /home/rex/opt/Xilinx/10.1/ISE/verilog/mti_se/simprims_ver/simprims_ver_source.v(121020): $hold( posedge CLK:650974 ps, negedge I &&& (in_clk_enable1 != 0):651125 ps, 153 ps );
# Time: 651125 ps Iteration: 0 Instance: /tb/aes_wrapper_0/\aes_fwd_0/aes_fwd_core_inst/CIPHER_RND_1_ARK_ROW_1_4_ARK_COL_1_3_xor_itm_3
Solo sé que esto es una infracción de tiempo de espera. ¿Cómo interpreto esta información de error de manera más precisa? ¿Cómo resolver este problema?
Actualizaciones: Seguí las señales que causan la violación del tiempo de espera. El pad de entrada está conectado a alguna lógica combinacional antes de ir al DFF que tiene una violación del tiempo de espera. Supongo que agregar la restricción OFFSET IN resolverá este problema. ¿Cómo puedo determinar el valor correcto (?? ns) en la restricción OFFSET IN?
OFFSET = IN ??ns BEFORE "clk";