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
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 -implement
esto 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.
Eugenio Sh.
tom carpintero
shparej
shparej