Partial Reconfiguration

Hi,

I am working with a CW305 and used it extensively to evaluate side-channel countermeasures.

Now I want to perform partial reconfiguration to lock the routing in place and only change the countermeasures. If I initially flash the target using a bitstream with reconfigurable partitions and then reopen the target with a partial bitstream using the force=True parameter, will the framework overwrite the whole bitstream or perform partial reconfiguration as expected?

Best Regards

No, that won’t work as expected.

We do support partial reconfiguration of the ChipWhisperer Lite’s FPGA; there it is used to change DCM parameters, in support of our glitching logic. On the Python side, you’ll find the relevant code in these files:

capture/scopes/cwhardware/ChipWhispererGlitch.py

capture/scopes/cwhardware/PartialReconfiguration.py

However this also needs firmware support.

In terms of FPGA programming, CW-lite and CW305 are pretty similar: in both cases you have a microprocessor which receives the bitstream from the host PC on its USB interface and handles programming the FPGA. So, it’s possible to do: you could port the partial reconfiguration capability from the CW-lite SAM3U firmware to the CW305’s SAM3U firmware.

The CW-lite firmware is here: chipwhisperer-capture/boards/chipwhisperer-lite/firmware at main · newaetech/chipwhisperer-capture · GitHub

and the CW305’s is here: GitHub - newaetech/cw305-artix-target