CW308 WARNING:root:Timeout in OpenADC capture(), trigger FORCED

Hello guys, I try to do some captures in CW308 UFO board using the target S6LX9 to program a FPGA architecture in the board, then make captures to get traces from this experiment. Therefore, I’m trying to test another type of AES, so it’s a custom AES and I want to grab these traces to analyze for my work at university. But when I go to the jupyter I’d this warning from my console:

So I think it’s problem in time to capture from the CWLite when I trigger my architecture, but I don’t know where I can look to seek this error or issue because I triggered after finished all rounds in my architecture because I do two AES to do different times rounds of AES in this both module. I try to put my trigger in IO4 after the second AES finished. See the results in ModelSIM. I need some help to debug this and fix.

Looks like your target isn’t sending the capture trigger back to ChipWhisperer.

  1. How is the ChipWhisperer triggering your target? By sending a “go” command via UART?
  2. Where is your target’s capture trigger output back to the ChipWhisperer?

The problem is probably due to one of these missing. If you run a simulation to show these events, you’ll probably find what needs to be fixed.

Jean-Pierre

I sent the signal of trigger to target it’s set with the enc_busy2, when the encryption is occurring so I follow the example for the project implementation in git for ss_aes_ise. This command is there in the implementation of simpleserial or it’s on another description when I can see it?

Sorry but I don’t understand your question, can you rephrase it?
What you need to do is ensure that this sequence of events is followed:

  1. CW is armed
  2. CW sends the encryption key to the target (‘k’ simpleserial command)
  3. CW sends the plaintext to the target (‘p’ simpleserial command), which causes the target to assert the IO4 trigger pin high (it needs to have been low before this!).

You can see this in software/chipwhisperer/__init__.py, in the capture_trace() function (actually the order of 1 and 2 above is reversed, which doesn’t matter).

When CW sees the IO4 pin go from 0 to 1, it will capture the power trace. The error message that you are getting says that CW is not seeing IO4 go from 0 to 1 in response to step 3. So either your target is not getting the “go” simpleserial “p” command, or it’s not asserting IO4 in response.

To see what’s happening in simulation, you will need to emulate CW by having your testbench send the simpleserial commands to your target. Alternatively, use a logic analyzer or oscilloscope on the real hardware. Just probe the UART (IO1, IO2) and trigger (IO4) lines.

Sorry for my confusing question, but it’s what I want to make a question about the commands to send in my target. I’ll see these parts of the implementation by seeing in testbench results. I’ll report after I can make these tests.

Thank you so much.