Archivo de bits Xilinx diferente entre compilaciones

Estoy tratando de entender qué sucede con los resultados binarios después de construir las mismas fuentes VHDL usando el último ISE de Xilinx. He oído información contradictoria sobre los archivos bit/bin resultantes.

¿Es razonable la expectativa de que en dos compilaciones los archivos bit y bin den como resultado exactamente los mismos binarios?

¿El sistema operativo host (Windows vs. Linux) influye en los archivos binarios resultantes?

¿Puedo hacer MD5 en dos archivos de diferentes compilaciones y esperar que coincidan?

Xilinx pone una marca de tiempo en sus archivos de bits, por lo que no obtendrá una coincidencia exacta. La marca de tiempo tiene formato ASCII y se encuentra justo al comienzo del archivo de bits. Aparte de eso, para ISE debería poder reproducir exactamente los mismos resultados (suponiendo que construya usando la misma semilla para PRNG)

Respuestas (1)

Hay una opción para aleatorizar el proceso de construcción, que IIRC está habilitado de forma predeterminada.

Como el diseño de FPGA es un problema de optimización de alta complejidad, no es posible encontrar el diseño globalmente óptimo en un marco de tiempo razonable. En cambio, el compilador comienza con un diseño aleatorio pero correcto, y realiza optimizaciones locales en él, hasta que no sea posible realizar más optimizaciones, luego verifica si el diseño cumple con los requisitos de tiempo.

Si el FPGA está a punto de llenarse, esta aleatorización suele ser la diferencia entre pasar y fallar el tiempo, por lo que reiniciar la compilación después de una falla puede brindarle un resultado funcional. Sin la aleatorización, los tiempos fallidos también fallarían de manera reproducible en la siguiente iteración.

Para la producción, haría de diez a veinte compilaciones diferentes, elegiría tres con los mejores márgenes de tiempo y las probaría en hardware real a diferentes temperaturas (normalmente, 0° y 55°).

¿Puede dar más detalles sobre qué ajustes se ocupan de la aleatorización? Si la aleatorización está deshabilitada, ¿se verá forzada de alguna manera por el proceso de compilación si el diseño toma casi todo el FPGA? ¿Qué pasa en el caso de fallas en las restricciones de tiempo? si la aleatorización está deshabilitada, ¿se fuerza en la siguiente ejecución?
@HinkoKocevar, lo siento, normalmente uso FPGA de Altera, por lo que no conozco la cadena de herramientas de Xilinx. La aleatorización del diseño es una técnica estándar que implementan todos los proveedores. Probablemente buscaría una configuración de "valor inicial" en las opciones del proyecto.
Me llenó mucho con esto en una cadena de herramientas (¿Quartus? Fue hace un tiempo), la cosa sembró el PRNG en función de un hash del archivo, pero calculó el hash antes de eliminar los comentarios. Combínelo con una configuración de control de versiones que coloque el último mensaje de confirmación en una línea especial en la parte superior del archivo y podría verificar una compilación que funcionó de manera confiable en su sistema, verificarla nuevamente y hacer que falle el tiempo cuando lo reconstruyó. .. Ay, cómo nos reíamos. Si habilita el lugar y la ruta de subprocesos múltiples en Vivado, también obtiene una compilación no determinista, no sé sobre ISE.
¿Puede dar una estimación de "cerca de llenarse"? por ejemplo, cuando su uso de recursos alcance el x%, ¿entonces comenzaría a vigilar la aleatorización?
@ user3528438, siempre afecta el tiempo: algunas compilaciones serán marginales, otras tienen mucha holgura, por lo que siempre puede valer la pena tener varias compilaciones y usar la que tiene los mejores tiempos. El lugar donde se convierte en un factor importante depende de su diseño: si tiene un bus ancho y rápido, el 40% ya puede ser un gran problema porque hay muchos caminos para mantener restringido, mientras que un diseño que tiene una frecuencia de unos pocos cientos de MHz puede subir hasta el 90% sin problemas. El peor caso que he visto fue una cadena DSP de 36 bits de ancho y 95% completa a 400 MHz con muchos multiplicadores. Dos semanas para compilar, 4% de posibilidades de éxito.