Restricciones de tiempo de FPGA SDC, comprensión del retraso de salida

Tengo algunos problemas para entender la convención de tiempo de un comando SDC:

set_output_delay 1.0 -clock_fall -clock CLK2 –min {OUT1}
set_output_delay 1.4 -clock_fall -clock CLK2 –max {OUT1}

¿Significa esto que después del reloj de lanzamiento (flanco descendente de CLK2), la señal de salida (OUT1) puede hacer la transición entre estas ventanas mín./máx. (el flanco de la señal se produce entre 1,0 ns y 1,4 ns después del flanco descendente de CLK2)?

Entonces, ¿es básicamente lo contrario de describir dónde una señal deberá ser válida: dónde se permite la transición/describir dónde la señal puede no ser válida?

¿Es correcto mi entendimiento?

Respuestas (2)

No, estas restricciones no significan que OUT1tenga que transitar en esa ventana de tiempo. El retraso de salida está modelando el retraso entre el puerto de salida y un registro externo (imaginario).

El retraso del camino a través OUT1se 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. OUT1tiene que transitar 1,4 ns antes (o antes) del flanco descendente de CLK2. Digamos que su período de reloj es de 10 ns y el registro de origen también se activa por negedge. En caso de que t_clk_skewsea cero, t_clk-to-Q + t_comb_delaytiene que ser inferior 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_delaytiene que ser mayor que cero. La parte crítica aquí es el sesgo del reloj . Si t_clk_skewes muy pequeño, es muy fácil cumplir con el tiempo de espera. Even only t_clk-to-Qsuele ser mayor que el tiempo de espera de la biblioteca , sin embargo, aquí no necesitamos el tiempo de espera de la biblioteca , porque la ruta no va a un registro real.

Si queremos considerar el tiempo de espera de la biblioteca , podemos establecer un retraso de salida más pequeño . También es muy común establecer un valor negativo para estar seguro. Por ejemplo:

set_output_delay -1.0 -clock_fall -clock CLK2 –min {OUT1}
Gran respuesta; ¿Le importaría agregar cómo -min afecta el tiempo de espera? Esta respuesta es concisa y correcta; con una pequeña edición estaría completo y podría ayudar a mucha gente.
@akohlsmith Modifiqué la respuesta, espero que sea útil. También agregué el sesgo del reloj , porque el tiempo de espera no puede violarse si ignoramos el sesgo del reloj .

Esa no es necesariamente una forma incorrecta de pensarlo, pero tampoco es la explicación completa. Lo que realmente está especificando son los retrasos de enrutamiento mínimos y máximos dentro del dispositivo desde la salida de datos del registro final hasta el pin externo. Esto tiene un par de usos:

1) Le da cierto control sobre las ventanas de configuración/retención en la salida. Útil a veces para solucionar problemas de sincronización extraños. 2) Más comúnmente, le permite ajustar los retrasos de propagación relativos entre múltiples señales sincrónicas para corregir longitudes de rastro desiguales en la PCB. Esto es para asegurar que todos lleguen al destino al mismo tiempo.

Tenga en cuenta que puede hacer lo mismo con las señales de entrada por las mismas razones.

Entonces, si la restricción dice que el valor mínimo es 1.0 y el valor máximo es 1.4, ¿significa esto que después de un borde de reloj en el registro de destino final, los datos de entrada del registro de destino final NECESITARÁN cambiar en algún momento entre 1.0 y 1.4? Nuevamente, ¿lo contrario de indicar cuándo los datos deben ser válidos/estables? ¿La convención positiva siempre está "a la derecha del reloj"? Estoy un poco confundido sobre qué convención positiva/negativa usar cuando la ventana válida de datos debe estar alineada al centro con el reloj.
No tiene impacto en la entrada del registro de destino final. Ese tiempo de configuración/retención es fijo y conocido por las herramientas, y utilizará su período de reloj especificado para asegurarse de que los retrasos de enrutamiento estén dentro de las especificaciones. Esto solo especifica los retrasos de enrutamiento mínimos y máximos desde la salida del registro final hasta el pin de salida, y desde el pin de entrada hasta la entrada del primer registro.