No, estas restricciones no significan que OUT1
tenga que transitar en esa ventana de tiempo. El retardo de salida está modelando el retardo entre el puerto de salida y un registro externo (imaginario).
El retraso de la ruta a través de OUT1
se puede pensar de la siguiente manera.
t_total_delay = t_clk-to-Q + t_comb_delay + t_output_delay - t_clk_skew
El valor máximo de t_output_delay
(1.4 ns) se usa simplemente para el tiempo de configuración y el valor mínimo (1.0 ns) se usa para el tiempo de espera.
Pensemos en el tiempo de configuración. OUT1
tiene que transitar 1.4 ns antes (o antes) del borde descendente de CLK2
. Digamos que su período de reloj es de 10 ns y que el registro de origen también se desencadena por negedge En caso de que t_clk_skew
sea cero, t_clk-to-Q + t_comb_delay
debe ser menor o igual a 8.6 ns (10-1.4) para poder cumplir con el tiempo de configuración.
Para el tiempo de espera, t_total_delay
tiene que ser mayor que cero. La parte crítica aquí es el sesgo del reloj . Si t_clk_skew
es muy pequeño, es muy fácil cumplir el tiempo de espera. Incluso solo t_clk-to-Q
suele ser mayor que tiempo de espera de la biblioteca , sin embargo, no necesitamos tiempo de espera de la biblioteca aquí, porque la ruta no va a un registro real.
Si queremos considerar ese tiempo de espera de la biblioteca , podemos establecer un menor retardo de salida . También es muy común establecer un valor negativo para estar en el lado seguro. Por ejemplo:
set_output_delay -1.0 -clock_fall -clock CLK2 –min {OUT1}