Voltage and frequency scaling on CW305


We would like to implement DVFS on CW305, but we are not sure about the following:

  1. What is the time resolution for voltage and frequency change? For example, if we issue these two commands one after another:
    How long will the 1V be supplying the chip before it changes to 0.8V?
    We have the same question about the frequency.
  2. Does the application keeps running in the FPGA during the voltage and frequency change?
  3. Is there another way to access the voltage regulator and the external PLL other than through Python?
    Many thanks in advance!


  1. target.vccint_set() has to go through Python and over USB, so the latency and speed won’t be great, I’d imagine.
  2. I haven’t tested it, but I’m guessing the FPGA will still run fine with a voltage change, but the clock will probably drop out for a little, which may cause issues for the FPGA.
  3. Sure, you can modify CW305 microcontroller code. The files you’re looking for are:

voltage code: https://github.com/newaetech/chipwhisperer/blob/develop/hardware/victims/cw305_artixtarget/fw/sam3u/CW305_SAM3U_FW/src/tps56520.c
PLL code: https://github.com/newaetech/chipwhisperer/blob/develop/hardware/victims/cw305_artixtarget/fw/sam3u/CW305_SAM3U_FW/src/cdce906.c
usb code: https://github.com/newaetech/chipwhisperer/blob/develop/hardware/victims/cw305_artixtarget/fw/sam3u/CW305_SAM3U_FW/src/usb.c


Thanks! We will try to do it via microcontroller code.