This official document is a very good reference, just that now there are many more fuzzers.
https://f4pga.readthedocs.io/projects/prjxray/en/latest/db_dev_process/newpart.html
Error might be confusing (as when error occurs, all “current running jobs” will be stopped, making other fuzzers in half-done state — but no worries, other fuzzers will start from scratch if being run again). Troubleshooting on single thread is better.
But for real compiling it works very fine, and saves a lot of time. Single-thread run of the whole database from scratch can take >48 hours.
I need to add the —jobserver-style=pipe to make things compatible
make —jobserver-style=pipe -j8 MAX_VIVADO_PROCESS=8 -C fuzzers
Add: with relatively older versions of libraries in Ubuntu 24.04, -jobserver-style is no required.
074-dump-all may use a lot of memory for Zynq 7045 and 7100, need to single-thread run again on fail. MAX_VIVADO_PROCESS will not affect the vital part, need to use Threads/multicore probably doesn’t reduce maximum memory usage. 128 GB memory + swap is needed for 7100. Manually single-step the scripts in export MAX_GRID_GPU=1, for the create_node_tree.py, generate_grid.py, etc.fuzzers/074-dump_all/generate_after_dump.sh if got OOM error.
You may notice files in database have different size from the database on GitHub (which is larger). Don’t worry! A make db-format-zynq7 will format the database, and recreate a exact same file as in prjxray-db repo. The format process adds more blank spaces and enlarges the size.
Like in the root Makefile, the database definition, the following are required to get a database that can be used:
source settings/artix7.sh db-prepare-artix7 db-artix7 ←(or make -C fuzzers and then ./utils/roi_all.py) db-check-artix7 ←(can skip?) db-format-artix7 ←(makes similar to prjxray-db releases)
In fuzzers/Makefile, all fuzzers are listed. Some depend on other ones (mostly 005-tilegrid), some don’t (can run standalone).
When a fuzzer is finished, a run.ok is touched in fuzzer dir, if the result can be shared between devices (my understanding). Otherwise, for each device, a run.xc7axxxx.ok is touched.