Con la set_multicycle_path Synopsys® Design Constraint (SDC) y los comandos de get_fanouts, puede crear una excepción de multiplatafacción basada en un registro de habilitación.
La Figura 1 muestra un circuito simple en el cual se utiliza el enable_reg de registro para crear una señal habilitada para registros din_a_reg[7.0], din_b_reg[7.0], din_x_reg[7.0], din_y_reg[7.0], a_times_b y x_times_y.
El registro de habilitación enable_reg genera un impulso de habilitación que es el doble del período de reloj del registro y, debido a ello, se debe aplicar una excepción de multiciclo para el análisis correcto. Se debe aplicar una configuración multiciclo de 2 y una retención multisofer de 1 al registro impulsado por la habilitación alimentado por el registro enable_reg. La excepción multiplatafacción se aplica únicamente a las rutas de registro a registro en las que el registro de destino está controlado por enable_reg.
Para lograrlo, puede aplicar la excepción set_multicycle_path a todos los registros impulsados por habilitación. Este método por lo general puede ser tedioso, porque todos los registros impulsados por habilitación deben especificarse. Alternativamente, la combinación de set_multicycle_path y get_fanouts se puede utilizar de la siguiente manera:
#Setup multiplatafacción de 2 a los registros de destino impulsados habilitados
set_multicycle_path 2 -to [get_fanouts [get_pins enable_reg|q*] \
-through [get_pins -hierarchical *|*ena*]] -end -setup
#Hold multiciclo de 1 a los registros de destino impulsados habilitados
set_multicycle_path 1 -to [get_fanouts [get_pins enable_reg|q*] \
-through [get_pins -hierarchical *|*ena*]] -end –hold
El objetivo de la excepción set_multicycle_path se limita a todos los ventiladores del registro reg_en que alimentan el puerto habilitado de un registro, lo que se realiza con la siguiente opción:
[get_fanouts [get_pins enable_reg|q*] -through [get_pins -hierarchical *|*ena*]]
La Tabla 1 muestra la nueva configuración y las relaciones en espera de todas las rutas de registro a registro impulsadas por la habilitación en el diseño después de que se aplicaron las excepciones de multiplatafacción.
Tabla 1. Establecer y mantener relaciones para los registros impulsados por la habilitación
Registro de fuente |
Registro de destino |
Relación de configuración |
Mantener una relación |
---|---|---|---|
din_a[*] |
din_a_reg[*] |
2 veces (tiempo de cierre del perímetro) |
1 vez (tiempo del perímetro del pestillo) |
din_x[*] |
din_x_reg[*] |
2 veces (tiempo de cierre del perímetro) |
1 vez (tiempo del perímetro del pestillo) |
din_b[*] |
din_b_reg[*] |
2 veces (tiempo de cierre del perímetro) |
1 vez (tiempo del perímetro del pestillo) |
din_y[*] |
din_y_reg[*] |
2 veces (tiempo de cierre del perímetro) |
1 vez (tiempo del perímetro del pestillo) |
fast_mult:mult|* |
a_times_b[*] |
2 veces (tiempo de cierre del perímetro) |
1 vez (tiempo del perímetro del pestillo) |
fast_mult:mult|* |
x_times_y[*] |
2 veces (tiempo de cierre del perímetro) |
1 vez (tiempo del perímetro del pestillo) |
enable_reg |
din_a_reg[*], din_b_reg[*], a_times_b[*], x_times_y[*] |
2 veces (tiempo de cierre del perímetro) |
1 vez (tiempo del perímetro del pestillo) |
En la Tabla 1, tenga en cuenta que las relaciones de configuración y retención que comienzan al registrarse enable_reg y terminan en cualquier registro impulsado por la habilitación son 2 y 1, respectivamente. Si estas rutas no requieren la configuración y la relación de retención para ser modificadas, puede aplicar las siguientes excepciones multiciclo para aplicar las relaciones originales:
set_multicycle_path 1 -from [get_pins enable_reg|q*] –end -setup
set_multicycle_path 0 -from [get_pins enable_reg|q*] –end –hold
Descargue el ejemplo de circuito clock_enable_multicycle.qar.