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?
No, estas restricciones no significan que OUT1
tenga 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 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 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_skew
sea cero, t_clk-to-Q + t_comb_delay
tiene 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_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 con el tiempo de espera. Even only t_clk-to-Q
suele 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}
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.
akohlsmith
usuario154136