Open badeaa3 opened 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.
Goal 3: Pass
ScanIn
pin 23hex_lists = [
["4'h2", "4'h2", "11'h0", "1'h0", "1'h0", "5'h4", "6'ha"], # write op code 2 (write)
["4'h2", "4'h6", "8'h0", "16'h1"], # write op code 6 (array 0) writing to address 0 (8'h0) value 1 (16'h1)
["4'h2", "4'h6", "8'h1", "16'h3"], # write op code 6 (array 0) writing to address 1 (8'h1) value 3 (16'h3)
["4'h2", "4'h6", "8'h2", "16'h7"], # write op code 6 (array 0) writing to address 2 (8'h7) value 7 (16'h7)
["4'h2", "4'h6", "8'h3", "16'hf"], # write op code 6 (array 0) writing to address 3 (8'hf) value 2 (16'hf)
["4'h2", "4'h6", "8'h5", "16'hff"], # write op code 6 (array 0) writing to address 5 (8'hf) value 2 (16'hff)
["4'h2", "4'hd", "1'h0", "6'h00", "1'h0", "4'h1", "6'h04", "6'h08"] # execute with op code d
]
In order this set of commands does:
Questions:
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:
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:
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
Other good things to do:
Goals: