07-18-2020 10:47 AM
My design implements a function (a PUF) that has a ROM for storing ECC helper data. So the contents of the ROM are a history of data of an output produced by my function. This output is somewhat "random", its value depends on the placing and routing of the design (this is intended). So I have to implement my design, run it on the FPGA, gather the results, and populate my ROM with this data, so the design can use it next time for error correction. The problem is, every time I populate the ROM and run synthesis and implementation again, my function changes (because it depends on placing and routing) so now my function output is different and the newly-updated ROM is useless. It is a never-ending cycle.
Reading a bit, I figured Partial Reconfiguration could help here. I am using my ROM as a reconfigurable module. I'm no expert here so I did the partial reconfiguration as automatic as it could be. The problem I'm seeing now is that when I change the ROM contents and run implementation, the whole design is implemented, not only the outdated RM (the ROM). Is there a way to synthesize and implement a specific module only, keeping the rest of the design intact? Is partial reconfig. the way to do it or should I look at something else?
I'm using Vivado and an Artix-7.
Thanks a lot!
07-19-2020 07:11 AM
If you only update the content of the ROM, the placement and routing of the other logic will not be changed.
It means you don't need to re-implement the whole design. (It seems PR flow is not necessary in this scenario)
07-19-2020 10:01 AM
Anyway, is there a way of running implementation on a specific module only? Having already run synthesis and implementation of the rest of the design.
07-19-2020 06:51 PM
With PR(DFX) flow, you can run implementation on a specific module (dynamic logic) only without changing the static logic.
For the detailed info, please refer to UG909.
07-24-2020 03:29 PM
If you can move the ROM into an XPM RAM, then you would have the ability to use updatemem to update the contents based on an .mem or .elf file.