Hay un concepto llamado volver a marcar el registro (o registrar el equilibrio ). La mayoría de las herramientas comerciales tienen atributos y opciones para ello.
Cuando se configura la opción, la herramienta de síntesis puede mover registros (flip-flops y latches) hacia adelante / atrás e intenta optimizar el tiempo y / o el área.
Si es difícil canalizar un diseño (por ejemplo, un multiplicador) por RTL, todos los registros pueden colocarse en consecuencia en las entradas o salidas del diseño. Ejemplo de Fox, en el caso de 3 registros colocados en la salida, la herramienta intenta dividir la lógica combinacional en 4 partes iguales. Supongo que la duplicación de registros también debería estar habilitada para obtener mejores resultados.
Puedo dar algunos ejemplos de comandos para Design Compiler. El siguiente comando permite volver a sincronizar en My_Multiplier
.
set_optimize_registers -design My_Multiplier
Si el objetivo principal es la sincronización, se puede usar la opción -minimum_period_only
.
set_optimize_registers -design My_Multiplier -minimum_period_only
También hay una opción global ( -retime
), pero no sé si puede romper la funcionalidad de los bucles de retroalimentación.
compile_ultra -retime