smart-pix / asic-testing-fnal-lab-notebooks

Lab notebooks and git issues for testing
0 stars 0 forks source link

06/24/24 #12

Open badeaa3 opened 4 months ago

badeaa3 commented 4 months ago

Goals:

badeaa3 commented 4 months ago

Goal 2: Pass

Successfully read from sw_read32_0 and sw_read32_1. I recloned the repo in a fresh directory, generated the bitstream, and flashed the fpga.

https://github.com/badeaa3/smartpix-lab-notebooks/assets/13281375/09b88835-3c07-40d0-97c0-8f2b570ea7c1

badeaa3 commented 4 months ago

Goal 3: Pass

https://github.com/badeaa3/smartpix-lab-notebooks/assets/13281375/688eaf8c-0c1b-46a4-911b-384c8fcb90f3

IMG_9446

Questions:

badeaa3 commented 4 months ago

We will 2 IP's with 2-3 tests each.

Two tests for shiftRegister are much simpler (IP1).

Three tests for scanChain (IP2):

Bits of execute command:

3 Tests:

Recording from discussion with Ben https://uchicago.zoom.us/rec/share/-BRLnZ8wU4aYsePpiCMVzaDmtZ3y6XTWmXUMck6N4Dv8Q5n6N_PBg6v_yjjVPxKy.y7-gAARq9q_-rZAI

To test all OP CODES:

Prepare for v0 chip:

badeaa3 commented 4 months ago

Action items.

Software implement tests for the following:

OP_CODE list (GitHub)

typedef enum logic [3:0] {                               // operation_code enumerated type
    OP_CODE_NOOP             = 4'h0,
    OP_CODE_W_RST_FW         = 4'h1,
    OP_CODE_W_CFG_STATIC_0   = 4'h2,
    OP_CODE_R_CFG_STATIC_0   = 4'h3,
    OP_CODE_W_CFG_STATIC_1   = 4'h4,
    OP_CODE_R_CFG_STATIC_1   = 4'h5,
    OP_CODE_W_CFG_ARRAY_0    = 4'h6,
    OP_CODE_R_CFG_ARRAY_0    = 4'h7,
    OP_CODE_W_CFG_ARRAY_1    = 4'h8,
    OP_CODE_R_CFG_ARRAY_1    = 4'h9,
    OP_CODE_R_DATA_ARRAY_0   = 4'hA,
    OP_CODE_R_DATA_ARRAY_1   = 4'hB,
    OP_CODE_W_STATUS_FW_CLEAR= 4'hC,
    OP_CODE_W_EXECUTE        = 4'hD
  } op_code;

Firmware:

Hardware:

badeaa3 commented 4 months ago

Improving test for STATIC. Weird thing is I'm seeing the first status register as 4102 instead of the expected 6 now.

> ~r3
<DBG> <2024-06-24 14:40:08> Evaluating: ROUTINE_test_loopback_CFG_STATIC()
Starting register value sw_write32_0 = 570425610
Write to sw_write32_0: True. Wrote 754974719 and register reads 754974719. hex_list = ["4'h2", "4'hC", "11'h7ff", "1'h1", "1'h1", "5'h1f", "6'h3f"]
Sending OP_CODES: 4'h2, 4'h3
Starting register value sw_write32_0 = 754974719
Write to sw_write32_0: True. Wrote 570425610 and register reads 570425610. hex_list = ["4'h2", "4'h2", "11'h0", "1'h0", "1'h0", "5'h4", "6'ha"]
Write to sw_write32_0: True. Wrote 587202826 and register reads 587202826. hex_list = ["4'h2", "4'h3", "11'h0", "1'h0", "1'h0", "5'h4", "6'ha"]
sw_read32_0 = 266
sw_read32_1 = 4102
Expected in sw_read32_0 ["11'h0", "1'h0", "1'h0", "5'h4", "6'ha"] 266
Starting register value sw_write32_0 = 587202826
Write to sw_write32_0: True. Wrote 754974719 and register reads 754974719. hex_list = ["4'h2", "4'hC", "11'h7ff", "1'h1", "1'h1", "5'h1f", "6'h3f"]
sw_read32_0 = 0
sw_read32_1 = 0
Sending OP_CODES: 4'h4, 4'h5
Starting register value sw_write32_0 = 754974719
Write to sw_write32_0: True. Wrote 603980042 and register reads 603980042. hex_list = ["4'h2", "4'h4", "11'h0", "1'h0", "1'h0", "5'h4", "6'ha"]
Write to sw_write32_0: True. Wrote 620757258 and register reads 620757258. hex_list = ["4'h2", "4'h5", "11'h0", "1'h0", "1'h0", "5'h4", "6'ha"]
sw_read32_0 = 266
sw_read32_1 = 4120
Expected in sw_read32_0 ["11'h0", "1'h0", "1'h0", "5'h4", "6'ha"] 266
Starting register value sw_write32_0 = 620757258
Write to sw_write32_0: True. Wrote 754974719 and register reads 754974719. hex_list = ["4'h2", "4'hC", "11'h7ff", "1'h1", "1'h1", "5'h1f", "6'h3f"]
sw_read32_0 = 0
sw_read32_1 = 0
<INF> <2024-06-24 14:40:15> This Routine took: 0:00:07
badeaa3 commented 4 months ago

Other good things to do: