1) System Architecture
System-level view based on pcpi_tinyml_accel.v. Memory is below the wrapper because the wrapper, not the accelerator, owns the accel_mem_* interface.
clk and resetn fan out to CPU, wrapper, accelerator, and memory model.pcpi_valid, pcpi_insn, pcpi_rs1, pcpi_rs2. Stalls while pcpi_wait is high.insn_match, state, resp_validaccel_mem_valid, accel_mem_we, accel_mem_addr, accel_mem_wdatabase_a, base_b, elem_idxa_flat, b_flatresult_reg -> pcpi_rd, plus pcpi_ready / pcpi_wrstart, busy, done, cycle_count, a_latched, b_latchedrow_inject_flat, col_inject_flatc_flat, accel_done, accel_cycle_countA @ base_aB @ base_bC @ 0x0000_02002) Systolic Array View
Top-right panel. Each active PE shows entry and exit values for x and y.
For active PE(r,c), the current pair is x_in = A[r][k], y_in = B[k][c]. Those values are forwarded as x_out and y_out while the PE accumulates the scaled product into z_acc.
3) State Transitions
Bottom-left panel. Includes one-step reverse navigation.
Flow: IDLE -> LOAD_A -> LOAD_B -> KICK -> WAIT_ACC (10 cycles) -> STORE_C -> RESP -> IDLE
Current State Meaning
The wrapper is idle. No memory request is active and the CPU is not stalled.
Wrapper FSM
- S_IDLE
- S_LOAD_A
- S_LOAD_B
- S_KICK
- S_WAIT_ACC
- S_STORE_C
- S_RESP
4) Event Log
Bottom-right panel. Readable trace of the transaction sequence.