¿Cómo dividir un circuito combinacional en partes con igual retardo?

1

Tengo un gran circuito combinacional con un gran retraso. Me gusta dividir este diseño (basado en el retardo) en partes más pequeñas y, más tarde, convertirlo en un circuito canalizado secuencial. ¿Alguna de las herramientas existentes, como Compilador de diseño, Quartus, Yosys, ABC, etc., es capaz de dicha partición?

    
pregunta Mahdi

1 respuesta

1

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
    
respondido por el ahmedus

Lea otras preguntas en las etiquetas