Chipwhisperer Husky and CW312T-A35 Fpga

Hello,
I am new to Chipwhisperer (CW) and have several questions regarding CW Husky with CW312T-A35.

  1. Which vivado project should I use if I want to use my own design with CW wrapper? Currently, I am trying to use ss2_xc7a35_aes.xpr. If it is the correct one, Is there any proper documentation of resources that will help me understand the wrapper a little bit more?

  2. ss2_xc7a35_aes.xpr has cw305_top.v file, which basically instantiates the AES module with plain text and key. Instead of using AES, I want to use my own custom IP here, which has multiple inputs and outputs. Which file should I modify, and how should I do it? Skeleton Module example:

myModule(input A[0:127], B[0:127], C[0:127], D[0:127], output out1[0:127], out2[0:127])

  1. Is it possible to change the target FPGA frequency?

  2. I have Husky → CW313 → CW312T-A35. Is there any way to probe the target with an external oscilloscope?

I really appreciate any help you can provide.

  1. You’ll find links to all our FPGA example projects here.
  2. I would recommend you play with our AES project to learn how it works. If you follow our approach, your top-level module will look like this, and you’ll be able to set/get arbitrary inputs and outputs by customizing our register module.
  3. Yes; again taking our AES example, the FPGA clock is driven from CW on the HS2 pin, and this notebook sets the FPGA clock to 7.37 MHz with this code:
if TARGET_PLATFORM in ['CW312T_A35', 'CW312T_ICE40']:
    scope.clock.clkgen_freq = 7.37e6
    scope.io.hs2 = 'clkgen'
    if scope._is_husky:
        scope.clock.clkgen_src = 'system'
        scope.clock.adc_mul = 4
        scope.clock.reset_dcms()
  1. Of course, connect your scope to the CW313 measure port. If you’re using our examples, you’ll want to trigger your scope from the GPIO4 pin.
1 Like