Mejore el tiempo de compilación o recompilación parcial de Quartus

Ejecuto Altera Quartus y estoy usando el analizador lógico SignalTap en un Max 10 FPGA. Se tarda decenas de minutos en compilar, y cada vez que quiero agregar una señal a SignalTap, tengo que compilar de nuevo. El botón de recompilación rápida siempre está atenuado, ni siquiera sé qué hace, nunca he tenido la opción. Muchas veces, no estoy cambiando mi diseño solo SignalTap, pero Quartus quiere volver a compilar todo lo que parece una pérdida de tiempo. ¿Hay alguna forma de acelerar el tiempo de compilación (o los cambios solo se aplican a SignalTap)? Usando Quartus 15.1

¿Estás usando la versión gratuita? Creo que este tipo de optimizaciones solo están habilitadas en las versiones completas.
Es la forma en que es. SignalTap requiere que se compilen señales adicionales, y si está utilizando nombres de señales de presíntesis, el diseño debe volver a compilarse para garantizar que estén presentes y no optimizados. Sé cómo te sientes: mi diseño actual tarda 3 horas en compilarse, por lo que se trata en gran medida de simular todo primero y usar SignalTap como último recurso.
La observación de Tom es la clave. Puede seleccionar nodos de ajuste posterior en el toque de señal y luego activar la compilación incremental. Los nombres de los nodos pueden parecer muy largos e incomprensibles al principio. Pero te puedes acostumbrar.

Respuestas (2)

Algunas banderas útiles para hacer que Quartus sintetice más rápido si no le importa optimizar completamente sus resultados y solo quiere obtener una estimación pesimista o hacer comparaciones.

set_global_assignment  -name PHYSICAL_SYNTHESIS_EFFORT  FAST

Especifica la cantidad de esfuerzo, en términos de tiempo de compilación, que debe utilizar la síntesis física. Rápido utiliza menos tiempo de compilación, pero puede reducir la ganancia de rendimiento que puede lograr la síntesis física.

set_global_assignment  -name FITTER_EFFORT              FAST_FIT

Fast Fit disminuye el esfuerzo de optimización para reducir el tiempo de compilación, lo que puede degradar el rendimiento del diseño.

Y en lugar de execute_flow -compile, usa:

execute_flow -implement

Opción para ejecutar la compilación hasta la etapa de enrutamiento y omitir todos los algoritmos intensivos en tiempo después.

En una reunión con ingenieros de Intel/Altera, se consideró que usar -implementesto sería un 20 % más rápido que -compile, y se recomendó al iterar en los resultados de cierre de tiempo.

También puedes intentar lo siguiente:

set_global_assignment  -name SYNTHESIS_EFFORT           FAST

Nota: Esto tiene la advertencia a continuación, aunque tiendo a ver ejecuciones más rápidas en general en algunos diseños.

Cuando se establece en Rápido, se omiten algunos pasos para realizar la síntesis más rápidamente; sin embargo, puede haber algún costo de rendimiento y recursos. Altera recomienda establecer esta opción en Rápido solo cuando se ejecuta una estimación de tiempo anticipada. Ejecutar una síntesis "rápida" produce una netlist que es un poco más difícil de enrutar para el ajustador, lo que hace que el proceso de ajuste general sea más lento , lo que anula cualquier aumento de rendimiento logrado como resultado de la síntesis "rápida".

Editar (21 de julio de 2020):

La siguiente configuración castigará su sincronización, pero también puede ayudar significativamente con el tiempo de compilación, particularmente en los diseños más nuevos de Stratix 10/Agilex:

set_global_assignment -name OPTIMIZATION_MODE          "AGGRESSIVE COMPILE TIME"
set_global_assignment -name ALLOW_REGISTER_RETIMING    "OFF"
set_global_assignment -name HYPER_RETIMER_FAST_FORWARD "OFF"

Y también puede desactivar el análisis de tiempo con lo siguiente:

set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS "OFF"

Edición 2 (9 de marzo de 2022):

Esta configuración es incluso más rápida que AGGRESSIVE COMPILE TIME:

set_blocal_assignment -name OPTIMIZATION_MODE          "FAST FUNCTIONAL TEST" 

Este modo produce un archivo de flujo de bits .sof que puede usar para pruebas funcionales integradas con un tiempo de compilación mínimo. Este modo reduce aún más el tiempo de compilación más allá del modo de tiempo de compilación agresivo al limitar las optimizaciones de tiempo a solo aquellas para los requisitos de espera.

La forma mejor/más barata de mejorar el tiempo de compilación es comprar un procesador con más núcleos. Dado que incluso la versión gratuita de Quartus tiene capacidad de compilación multiprocesador en ciertas etapas de la compilación del hardware. Un nuevo procesador costará unos cientos de dólares, mientras que comprar la versión completa con la compilación parcial cuesta miles.

Haga lo que hacen los programadores de Java en estos días y pida más hardware en lugar de mejorar el software.