New CW340 board is non-functional

Cross-posting here from a GitHub Issue.

We have fresh-out-of-the-box CW340 card that appears to be non-functional and require some assistance with debugging.

Once connected to the host computer, we can successfully run the OpenTitan set-pll command, which I think indicates that USB communications are working to the SAM3X, and I2C communications are working from the SAM3X to the PLL.

dmesg -Hw is not showing any errors, and lsusb appears to be detecting things as I would expect:

Bus 003 Device 004: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 003 Device 005: ID 2b3e:c340 NewAE Technology Inc. ChipWhisperer CW340 - Luna Board
Bus 003 Device 002: ID 0424:2534 Microchip Technology, Inc. (formerly SMSC)

However, from this point, nothing seems to be able to communicate correctly:

  • the Vivado Hardware Manager reports that there are no connected devices
  • the opentitantool (when set to program the bitstream) returns Error: Transport does not support Uart (which I think means it can’t detect the right JTAG connection?)
  • trying to update the SAM3X firmware following this guide also fails with the following:
target = cw.target(None, cw.targets.CW310)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<removed>/python3.10/site-packages/chipwhisperer/__init__.py", line 7, in target
    rtn.con(scope, **kwargs)
  File <removed>/python3.10/site-packages/chipwhisperer/capture/targets/_base.py", line 65, in con
    self._con(scope, **kwargs)
  File "<removed>/python3.10/site-packages/chipwhisperer/capture/targets/CW310.py", line 122, in _con
    self._naeusb.con(idProduct=[0xC310], serial_number=sn, hw_location=hw_location)
  File "<removed>/python3.10/site-packages/chipwhisperer/hardware/naeusb/naeusb.py", line 681, in con
    self.usbtx.open(idProduct=idProduct, serial_number=serial_number, connect_to_first=True, hw_location=hw_location)
  File "<removed>/python3.10/site-packages/chipwhisperer/hardware/naeusb/naeusb.py", line 371, in open
    self.device = self.find(serial_number, idProduct, hw_location=hw_location)
  File "<removed>/python3.10/site-packages/chipwhisperer/hardware/naeusb/naeusb.py", line 338, in find
    raise OSError("Could not find ChipWhisperer. Is it connected?")
OSError: Could not find ChipWhisperer. Is it connected?

At this point, it looks to me like there is something wrong with the FTDI-to-FPGA connection, and/or the FPGA itself is dead (particularly due to the Vivado Hardware Manager not being able to see it), but hopefully someone has an idea of some other tests to try before I RMA it back to the distributer…

Thanks,
Andy

Hi Andy,

Do you have a separate JTAG programmer that you’re using? If not, our firmware doesn’t have any connectivity with Vivado. I can’t comment on using opentitantool to program, but typically at NewAE we program via the python interface: target = cw.target(None, cw.targets.CW340, bsfile="/path/to/bsfile.bit").

Looks like there’s a typo on that page. It should be cw.targets.CW340, not cw.targets.CW310. I’ll get that fixed up.

Alex