The mpfs_bitstream.spi and mpfs_bitstream.digest files are created as part of the build-bittream python scripts. Libero has no knowledge of how to create these files.
Actually, I was mistaken in my initial answer. The mpfs_bitstream.spi file is generated by Libero and the mpfs_dtbo.spi file containing the DTS overlay is generated outside Libero by the python scripts.
For mpfs_bitstream.spi, what you are looking for is the SPI tick box in the “Export Bitstream” Design Flow step.
If you are going down that route make sure you lobotomize the board before programming to prevent a mismatch of device tree overlay and the board reprogramming itself with the original bitstream. You basically need to make the System Controller’s SPI flash look like it does not contain a valid bitstream or device tree by erasing the start of it.
So just copying over the spi files and then using change-gateware.sh is not enough, I have to clear the SPI flash first before running it?
p.s. This is starting from having already used the build python script to generate the original device tree/spi etc and using change-gateware.sh with the generated files.
Then editing the Libero project to create a new bitstream.
What you describe “should” work as long the device tree overlay did not change with your Libero design edits. The one key thing to avoid is programming directly from Libero through JTAG. If you program through JTAG make sure you clear the SPI flash content first.
Yes, you figured it out. This is another thing the python build scripts do for you but that you need to manage yourself if using Libero directly. The design version needs to be different for the reprogramming to take place.