INITB on CW305 via Python

Hi all,

We are currently performing VFI, CLKFI and EMFI against a custom design implemented for ARTY-100 series CW305.
On RTFM for CW305 under subtopic “Fault Injection” you say that the INITB pin may be used to figure out, whenever the bitstream has to be downloaded again, i.e. to determine whenever FI corrupted the configuration. I hope I got this right. :slight_smile:

I could now solder a pin to the board (INITB-Through-Hole Via is given) and react externally to the raw signal.
However, I would rather not like to solder on all the new boards we just received.

Is it possible to get the INITB level directly from the Python API via the USB bridge MCU?

We are not using the ChipWhisperer to perform the actual Fault Inejction, just the CW305 Target.

Have a nice day,
Sass

*** EDIT ***
Found in the schematic that the USB Bridge has access to INITB, so my question reduces to: How to get the level of INITB from within Python :slight_smile: :

Hi,

There’s not a specific was to read the INITB pin from Python currently, but the code’s in the firmware to do it, so it’ll be easy to add. In the meantime, try:

# WARNING: untested, may not work
def read_initb(target):
    status = target._getNAEUSB().readCtrl(0x15, dlen=4)
    return status[1]

Thanks a lot for the fast reply.
I think I got the idea, going to test it after WE and post solution for others.

Thanks a lot Alex! :smile:

Update for future knowledge-seekers:

I realized you guys just added code to read out INIT_B by using Python as well.
This is really amazing, I highly appreciate your coolness! :smile:

The function which can be used to readout initB is now called “is_programmed()”, which one can also find in API reference.

Best,
Sass

Small clarification - is_programmed() reads the FPGA’s DONE pin. You’re looking for target.INITB_state().

Alex

Oh geez, time to call it a day! :joy:

Thanks for clarification

1 Like