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?
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°).
ks0ze