How to reduce the size of an XSVF file for storing in a flash / prom...?
1) Compress the bitstream: Use the BitGen -compress option to compress the .bit file. The result is that the .MCS file size will be smaller and the Programming part of the SVF file will be smaller.
- Advantage: This does not affect the rest of the flow.
- Consequence: The resulting .bit file size is not consistent. It will be different for different design iterations.
2) Compress the XSVF image: Use a compression tool such as the ZLIB to decompress the XSVF image.
- Advantage: You can potentially achieve a very high compression ration depending on the choice of the compression method.
- Consequence: Your code space will increase due to the additional decompress code.
Note: ZLIB is the essentially the same method as used by ZIP and GZIP so you can get an estimate of the compression ration by simply compressing the XSVF using GZIP or ZIP.
3) Generate the XSVF with minimal operations. Eliminate the Verify from the SVF. That is, generate the SVF using the iMPACT Operation -> Program, but with only the Erase Before Programming checked--do not check the Verify.
- Advantage: You can reduce the XSVF size by nearly a half.
- Consequence: Your XSVF flow will not confirm that the PROM was programmed correctly. You may need to implement an alternate method of confirmation in your code. For example, you can try to configure the FPGA after programming the PROM and test that the DONE pin went High. This example basically takes advantage of the built-in CRC check in the FPGA to confirm that the PROM's bitstream is correct.