Desagrupar módulos sintetizados en Synopsys Design Compiler para obtener mejores resultados de síntesis

1

Tengo un gran diseño de múltiples salidas y entradas múltiples donde cada salida primaria se escribe en términos de entradas primarias. Debido a que el diseño es tan grande, DC no puede sintetizar el circuito. Una solución sencilla es sintetizar cada salida individualmente y luego, sintetizar el diseño más grande mediante la creación de instancias de estos módulos más pequeños. Sin embargo, creo que hay mucho espacio para la optimización porque todas las funciones de salida comparten exactamente las mismas entradas.

¿Desagrupar diferentes diseños se puede optimizar principalmente alrededor de los límites o optimizará todo el diseño, independientemente de si cada módulo más pequeño se ha sintetizado antes o no? Si optimiza el diseño en su totalidad, ¿hay alguna ventaja en sintetizar primero módulos más pequeños?

En otras palabras, me gusta usar un método de dividir y conquistar que primero sintetiza módulos más pequeños, pero aprovecha el hecho de que los módulos pequeños comparten las mismas entradas y optimizan los límites. ¿Hay un conjunto de comandos de CC que puedan lograr esto?

    
pregunta Mahdi

1 respuesta

1
  

¿Desagrupar diferentes diseños optimiza principalmente alrededor de   límites u optimizará todo el diseño independientemente de si   ¿Cada módulo más pequeño ha sido sintetizado antes o no?

No hay diferencia entre un diseño RTL y una lista de redes posterior a la síntesis. El compilador de diseño intenta optimizar ambos mientras las restricciones (por ejemplo, dont_touch ) y las opciones de síntesis (desagrupación, optimización de límites, etc.) lo permitan. DC también tiene una opción para la estrategia de optimización, que se muestra a continuación.

  

Si optimiza el diseño como un todo, ¿hay alguna ventaja para   ¿Sintetizando módulos más pequeños primero?

Es difícil de predecir. Diferentes opciones y estrategias de optimización no dan los mismos resultados en todos los casos. He experimentado que algunas veces desagrupar un proyecto completo da peores resultados (tiempo, área, etc.). Lo mejor que puedes hacer es probar algunos conjuntos de opciones y continuar con el mejor resultado.

  

¿Hay un conjunto de comandos de DC que puedan lograr esto?

No lo he intentado yo mismo, pero hay dos estrategias para optimizar un diseño.

  1. Cada salida en my_module se optimiza individualmente.

    set_flatten -design <my_module> -minimize single_output
    
  2. El diseño está optimizado en su totalidad.

    set_flatten -design <my_module> -minimize multiple_output
    
respondido por el ahmedus

Lea otras preguntas en las etiquetas