No necesariamente. Puntos de bonificación por saber que una entrada a un FF tiene como configuración y tiempo de espera la especificación, por cierto.
Pero para muchos diseños de FF, el tiempo de espera puede ser de 0 ns, es decir, no es necesario mantener los datos durante CUALQUIER tiempo después del borde del reloj. (Al diseñar el FF, puede garantizar esto; solo asegúrese de utilizar transistores más lentos o cables más largos en la entrada, y más rápido en el reloj).
Ahora el reloj retiene los datos, pero ese proceso toma algo de tiempo, llamado retardo de propagación o retardo de salida del reloj, y luego el cable al siguiente FF agrega un retardo propio. Por lo tanto, el siguiente FF no ve que su entrada cambie hasta DESPUÉS de este momento, ciertamente mayor que 0 ns, por lo que es seguro. (¡Si no es mayor que el tiempo de espera real, ESTÁ en problemas!)
El tiempo de configuración es menos importante en esta etapa; ya que la salida FF anterior cambia justo después del borde del reloj, tiene casi un ciclo completo para llegar hasta aquí.
Calcule clock cycle time - clock-output delay - wire delay - setup time
y si el número es positivo, eso también es seguro.
El tiempo de configuración importa cuando empiezas a agregar puertas o cables largos entre FFs; Estos añaden más retraso. Entonces, cuando esa suma se convierte en cero, ¡el reloj es demasiado rápido!
(Hay otro aspecto; los pulsos de reloj llegan a diferentes FF en diferentes momentos; para un cálculo preciso, debe tener en cuenta este "sesgo de reloj" en los cálculos de configuración y tiempo de espera).
Así que no estás equivocado; Estos son problemas reales pero tienen soluciones. Y el diseño del chip implica MUCHOS de estos cálculos (en su mayoría automatizados por las herramientas, en el diseño de FPGA), llamados "análisis de tiempo estático".