Forum Discussion
Below are the things you will need to understand:
db & incremental_db Directories Impact:
If incremental compilation or design preservation features were enabled in the original release, keeping db and incremental_db intact is crucial.
If these directories were not included in the original release, Quartus will regenerate them, potentially leading to different results.
Seed Differences:
If db and incremental_db directories were deleted, Quartus starts with a different initial placement seed, affecting routing and fitting.
File Timestamps & Order in Compilation:
Some versions of Quartus consider metadata such as timestamps, which may cause differences.
Project State in the Repository:
Ensure the repository exactly matches the release state and that no auto-generated files have changed.
Things to check:
Compare .map.rpt and .fit.rpt Reports:
Check if the total logic utilization, routing, and timing results differ between compilations.
If they differ, incremental compilation settings or environmental factors are likely influencing results.
Check for Unintended Changes in the Repository:
Use git diff or another version control tool to compare all files, including metadata.
If you still can't achieve bit-for-bit reproducibility, check if Quartus generates a different .pof file checksum but functionally equivalent results.
Quartus compilation is generally not guaranteed to be fully deterministic without preserved db files.
If an identical .rpd file is critical, consider saving and restoring db and incremental_db directories in future releases.