Skip to content

Commit c535a96

Browse files
committed
Enhance memory pool tile and TCDM interfaces for burst support
- Expanded mempool_tile to handle burst requests with new parameters and logic for remote request ports. - Introduced tcdm_burst_expander module to convert burst requests into single-word requests, ensuring proper address and meta_id incrementation. - Updated tcdm_shim to include burst length in request outputs. - Modified tcdm_wide_narrow_mux to accommodate burst length handling. - Added vector-burst-test application to validate burst load/store functionality, covering various burst scenarios including aligned, unaligned, and partial bursts.
1 parent 52f5eb3 commit c535a96

File tree

11 files changed

+763
-136
lines changed

11 files changed

+763
-136
lines changed

Bender.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ packages:
123123
- common_cells
124124
- scm
125125
spatz:
126-
revision: d02afac73f586780ae5669ec9c378ef3125a0d06
126+
revision: 98897ed05dfe5d66289068c2b42788e6cfd41114
127127
version: null
128128
source:
129-
Git: https://github.com/yzf0470/spatz.git
129+
Git: https://github.com/pulp-platform/spatz.git
130130
dependencies:
131131
- axi
132132
- axi_riscv_atomics

Bender.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dependencies:
1313
register_interface: { git: "https://github.com/pulp-platform/register_interface.git", version: 0.4.3 }
1414
reqrsp_interface: { path: "hardware/deps/reqrsp_interface" }
1515
snitch: { path: "hardware/deps/snitch" }
16-
spatz: { git: "https://github.com/yzf0470/spatz.git", rev: d02afac }
16+
spatz: { git: "https://github.com/pulp-platform/spatz.git", rev: 98897ed }
1717
# cluster_icache: { git: "https://github.com/pulp-platform/cluster_icache.git", version: 0.1.1 }
1818
tech_cells_generic: { git: "https://github.com/pulp-platform/tech_cells_generic.git", version: 0.2.13 }
1919
fpnew: { git: "https://github.com/pulp-platform/cvfpu.git", rev: pulp-v0.1.3 }
@@ -35,6 +35,7 @@ sources:
3535
- hardware/src/snitch_addr_demux.sv
3636
- hardware/src/tcdm_adapter.sv
3737
- hardware/src/tcdm_shim.sv
38+
- hardware/src/tcdm_burst_expander.sv
3839
- hardware/src/tcdm_wide_narrow_mux.sv
3940
- hardware/src/address_scrambler.sv
4041
- hardware/src/axi_L2_interleaver.sv

hardware/deps/snitch/src/snitch_pkg.sv

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ package snitch_pkg;
1515
localparam int NumIntOutstandingLoads = `ifdef TRAFFIC_GEN 2048 `else 8 `endif;
1616
localparam RobDepth = 32;
1717
localparam MetaIdWidth = `ifdef TARGET_SPATZ idx_width(RobDepth) `else idx_width(NumIntOutstandingLoads) `endif;
18+
localparam int unsigned MaxBurstWords = 16;
19+
localparam int unsigned BurstLenWidth = $clog2(MaxBurstWords + 1);
1820
// Xpulpimg extension enabled?
1921
`ifdef XPULPIMG
2022
localparam bit XPULPIMG_EXTENSION = 1'b1;
@@ -45,6 +47,7 @@ package snitch_pkg;
4547
logic write;
4648
data_t data;
4749
strb_t strb;
50+
logic [BurstLenWidth-1:0] burst_len;
4851
} dreq_t;
4952

5053
typedef struct packed {

hardware/src/mempool_group_floonoc_wrapper.sv

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,8 @@ if (NocRouterRemapping == 1 || NocRouterRemapping == 3) begin: gen_req_remapping
284284
src_id: group_xy_id_t'({group_id_i, 1'b0}), // For NoC Router when response back
285285
dst_id: group_xy_id_t'({tcdm_master_req[i][j+(1)].tgt_group_id, 1'b0}), // For NoC Router when request send
286286
tgt_addr: tcdm_master_req[i][j+(1)].tgt_addr, // For Crossbar when request send (bank rows per Group)
287-
last : 1'b1 // Non Burst Request
287+
last : 1'b1, // Non Burst Request
288+
burst_len: tcdm_master_req[i][j+(1)].burst_len
288289
}
289290
};
290291
assign floo_tcdm_rd_req_to_remapper_valid[i][j] = tcdm_master_req_valid[i][j+(1)];
@@ -307,7 +308,8 @@ if (NocRouterRemapping == 1 || NocRouterRemapping == 3) begin: gen_req_remapping
307308
src_id: group_xy_id_t'({group_id_i, 1'b0}), // For NoC Router when response back
308309
dst_id: group_xy_id_t'({tcdm_master_req[i][j].tgt_group_id, 1'b0}), // For NoC Router when request send
309310
tgt_addr: tcdm_master_req[i][j].tgt_addr, // For Crossbar when request send (bank rows per Group)
310-
last : 1'b1 // Non Burst Request
311+
last : 1'b1, // Non Burst Request
312+
burst_len: tcdm_master_req[i][j].burst_len
311313
}
312314
};
313315
assign floo_tcdm_rdwr_req_to_remapper_valid[i][j-(1 + NumNarrowRemoteReqPortsPerTile)] = tcdm_master_req_valid[i][j];
@@ -363,7 +365,8 @@ end else begin: gen_req_remapping_bypass
363365
src_id: group_xy_id_t'({group_id_i, 1'b0}), // For NoC Router when response back
364366
dst_id: group_xy_id_t'({tcdm_master_req[i][j+(1)].tgt_group_id, 1'b0}), // For NoC Router when request send
365367
tgt_addr: tcdm_master_req[i][j+(1)].tgt_addr, // For Crossbar when request send (bank rows per Group)
366-
last : 1'b1 // Non Burst Request
368+
last : 1'b1, // Non Burst Request
369+
burst_len: tcdm_master_req[i][j+(1)].burst_len
367370
}
368371
};
369372
assign floo_tcdm_rd_req_to_router_valid[i][j] = tcdm_master_req_valid[i][j+(1)];
@@ -386,7 +389,8 @@ end else begin: gen_req_remapping_bypass
386389
src_id: group_xy_id_t'({group_id_i, 1'b0}), // For NoC Router when response back
387390
dst_id: group_xy_id_t'({tcdm_master_req[i][j].tgt_group_id, 1'b0}), // For NoC Router when request send
388391
tgt_addr: tcdm_master_req[i][j].tgt_addr, // For Crossbar when request send (bank rows per Group)
389-
last : 1'b1 // Non Burst Request
392+
last : 1'b1, // Non Burst Request
393+
burst_len: tcdm_master_req[i][j].burst_len
390394
}
391395
};
392396
assign floo_tcdm_rdwr_req_to_router_valid[i][j-(1 + NumNarrowRemoteReqPortsPerTile)] = tcdm_master_req_valid[i][j];
@@ -554,7 +558,8 @@ for (genvar i = 0; i < NumTilesPerGroup; i++) begin : gen_router_req_to_slave_re
554558
src_group_id : group_id_t'({
555559
floo_tcdm_req_from_router_after_xbar[i][j].hdr.src_id.x,
556560
floo_tcdm_req_from_router_after_xbar[i][j].hdr.src_id.y
557-
}) // For NoC Router when response back
561+
}), // For NoC Router when response back
562+
burst_len : floo_tcdm_req_from_router_after_xbar[i][j].hdr.burst_len
558563
};
559564
assign tcdm_slave_req_valid[i][j] = floo_tcdm_req_from_router_after_xbar_valid[i][j];
560565
assign floo_tcdm_req_from_router_after_xbar_ready[i][j] = tcdm_slave_req_ready[i][j];

0 commit comments

Comments
 (0)