Skip to content

Commit eeb013e

Browse files
author
Andrea Belano
committed
[treewide] Remove reduction unit
1 parent d8d9c70 commit eeb013e

11 files changed

+9
-562
lines changed

Bender.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ sources:
4646
- rtl/redmule_engine.sv
4747
- rtl/redmule_top.sv
4848
- rtl/redmule_memory_scheduler.sv
49-
- rtl/redmule_reduction_unit.sv
5049
- rtl/redmule_mux.sv
5150
- rtl/redmule_inst_decoder.sv
5251

rtl/redmule_ctrl.sv

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ module redmule_ctrl
4545
output cntrl_flags_t cntrl_flags_o
4646
);
4747

48-
logic clear, latch_clear;
48+
logic latch_clear;
4949
logic tiler_setback, tiler_valid;
5050

5151
typedef enum logic [2:0] {
@@ -63,7 +63,7 @@ module redmule_ctrl
6363
redmule_tiler i_cfg_tiler (
6464
.clk_i ( clk_i ),
6565
.rst_ni ( rst_ni ),
66-
.clear_i ( clear ),
66+
.clear_i ( '0 ),
6767
.setback_i ( tiler_setback ),
6868
.start_cfg_i ( start_cfg_i ),
6969
.valid_o ( tiler_valid ),
@@ -83,10 +83,7 @@ module redmule_ctrl
8383
if(~rst_ni) begin
8484
current <= REDMULE_LATCH_RST;
8585
end else begin
86-
if (clear)
87-
current <= REDMULE_IDLE;
88-
else
89-
current <= next;
86+
current <= next;
9087
end
9188
end
9289

@@ -95,7 +92,7 @@ module redmule_ctrl
9592
if (~rst_ni) begin
9693
slave_start <= 1'b0;
9794
end else begin
98-
if (clear || tiler_setback)
95+
if (tiler_setback)
9996
slave_start <= 1'b0;
10097
else if (start_cfg_i)
10198
slave_start <= 1'b1;
@@ -142,7 +139,7 @@ module redmule_ctrl
142139
end
143140
end
144141
REDMULE_COMPUTING: begin
145-
if (flgs_streamer_i.z_stream_sink_flags.ready_start && fifo_empty_i && ((redmule_config.red_op == RED_NONE) | flgs_streamer_i.r_stream_sink_flags.ready_start)) begin
142+
if (flgs_streamer_i.z_stream_sink_flags.ready_start && fifo_empty_i) begin
146143
next = REDMULE_FINISHED;
147144
end
148145
end
@@ -157,7 +154,6 @@ module redmule_ctrl
157154
/* Other combinational assigmnets */
158155
/*---------------------------------------------------------------------------------------------*/
159156
assign evt_o = flgs_streamer_i.z_stream_sink_flags.done;
160-
assign clear_o = clear || latch_clear || next == REDMULE_FINISHED;
161-
assign clear = '0;
157+
assign clear_o = latch_clear;
162158

163159
endmodule : redmule_ctrl

rtl/redmule_memory_scheduler.sv

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -268,35 +268,6 @@ module redmule_memory_scheduler
268268
cntrl_streamer_o.z_stream_sink_ctrl.addressgen_ctrl.d2_len = '0;
269269
cntrl_streamer_o.z_stream_sink_ctrl.addressgen_ctrl.d3_stride = '0;
270270
cntrl_streamer_o.z_stream_sink_ctrl.addressgen_ctrl.dim_enable_1h = 3'b011;
271-
272-
273-
// FIXME
274-
// Here we initialize the streamer source signals
275-
// for the R stream source
276-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.base_addr = config_i.r_addr;
277-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.tot_len = config_i.n_size/W;
278-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.d0_len = '0;
279-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.d0_stride = W*ELW/8;
280-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.d1_len = '0;
281-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.d1_stride = '0;
282-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.d2_stride = '0;
283-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.d2_len = '0;
284-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.d3_stride = '0;
285-
cntrl_streamer_o.r_stream_source_ctrl.addressgen_ctrl.dim_enable_1h = 3'b000;
286-
287-
// FIXME
288-
// Here we initialize the streamer source signals
289-
// for the R stream sink
290-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.base_addr = config_i.r_addr;
291-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.tot_len = config_i.n_size/W;
292-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.d0_len = '0;
293-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.d0_stride = W*ELW/8;
294-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.d1_len = '0;
295-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.d1_stride = '0;
296-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.d2_stride = '0;
297-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.d2_len = '0;
298-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.d3_stride = '0;
299-
cntrl_streamer_o.r_stream_sink_ctrl.addressgen_ctrl.dim_enable_1h = 3'b000;
300271
end
301272

302273
assign start_x_streamer = (~x_config_empty && ~x_config_full && ~x_done_o) || x_config_full;
@@ -305,9 +276,7 @@ module redmule_memory_scheduler
305276
cntrl_streamer_o.x_stream_source_ctrl.req_start = (start_x_streamer || tot_x_read_q != '0 && tot_x_read_q != x_config.tot_x_read) && flgs_streamer_i.x_stream_source_flags.ready_start;
306277
cntrl_streamer_o.w_stream_source_ctrl.req_start = ~w_config_empty && flgs_streamer_i.w_stream_source_flags.ready_start;
307278
cntrl_streamer_o.y_stream_source_ctrl.req_start = ~y_config_empty && y_config.gemm_selection && flgs_streamer_i.y_stream_source_flags.ready_start;
308-
cntrl_streamer_o.r_stream_source_ctrl.req_start = '0;
309279
cntrl_streamer_o.z_stream_sink_ctrl.req_start = ~z_config_empty && flgs_streamer_i.z_stream_sink_flags.ready_start && ~flgs_streamer_i.z_stream_sink_flags.done; // we need the ~done here as this is asserted at the same time as the ready_start signal in sink modules
310-
cntrl_streamer_o.r_stream_sink_ctrl.req_start = '0;
311280
end
312281

313282
// FIXME

rtl/redmule_mux.sv

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,6 @@ module redmule_mux
5858
winner_d = YsourceStreamId;
5959
end else if (in_req[NumStreamSources]) begin // Z
6060
winner_d = NumStreamSources;
61-
end else if (in_req[RsourceStreamId]) begin // R Source
62-
winner_d = RsourceStreamId;
63-
end else if (in_req[NumStreamSources+1]) begin // R Sink
64-
winner_d = NumStreamSources+1;
6561
end
6662
end
6763

rtl/redmule_pkg.sv

Lines changed: 1 addition & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -36,52 +36,11 @@ package redmule_pkg;
3636
parameter int unsigned ECC_N_CHUNK = DATA_W / ECC_CHUNK_SIZE;
3737
parameter int unsigned LATCH_BUFFERS = 0;
3838

39-
// Register File mapping
40-
/**********************
41-
** Slave RF indexing **
42-
**********************/
43-
parameter int unsigned X_ADDR = 0; // 0x00 /* These do not change between slave and final */
44-
parameter int unsigned W_ADDR = 1; // 0x04 /* These do not change between slave and final */
45-
parameter int unsigned Z_ADDR = 2; // 0x08 /* These do not change between slave and final */
46-
parameter int unsigned MCFIG0 = 3; // 0x0C --> [31:16] -> K size, [15: 0] -> M size
47-
parameter int unsigned MCFIG1 = 4; // 0x10 --> [31: 0] -> N Size
48-
// Matrix arithmetic config register
49-
// [20:20] -> Send X stream
50-
// [19:19] -> Receive X stream
51-
// [18:18] -> Send W stream
52-
// [17:17] -> Receive W stream
53-
// [16:16] -> Reduction initialization
54-
// [15:14] -> Reduction operation
55-
// [12:10] -> Operation selection
56-
// [ 9: 7] -> Input/Output format
57-
parameter int unsigned MACFG = 5; // 0x14
58-
// Reduction initialization values addr
59-
parameter int unsigned R_ADDR_R = 6; // 0x18
60-
61-
parameter bit[6:0] MCNFIG = 7'b0001011; // 0x0B
62-
parameter bit[6:0] MARITH = 7'b0101011; // 0x2B
63-
parameter bit[6:0] RVCSR = 7'b1110011; // 0x73 -> RISC-V CSR instruction opcode
64-
65-
/* The CSRs below are not really present in the current RedMulE version. The following
66-
enum is here to allow future development where it might be useful to write the
67-
configuration registers through standard `csrw` instructions coming from the core.
68-
The CSRs values are chosen following the custom read/write already available in the
69-
RISC-V specifications. */
70-
typedef enum logic[11:0] {
71-
CSR_REDMULE_X_ADDR = 12'h800,
72-
CSR_REDMULE_W_ADDR = 12'h801,
73-
CSR_REDMULE_Z_ADDR = 12'h802,
74-
CSR_REDMULE_MCFIG0 = 12'h803,
75-
CSR_REDMULE_MCFIG1 = 12'h804,
76-
CSR_REDMULE_MACFG = 12'h805
77-
} redmule_csr_num_e;
78-
79-
parameter int unsigned NumStreamSources = 4; // X, W, Y, R
39+
parameter int unsigned NumStreamSources = 3; // X, W, Y
8040

8141
parameter int unsigned XsourceStreamId = 0;
8242
parameter int unsigned WsourceStreamId = 1;
8343
parameter int unsigned YsourceStreamId = 2;
84-
parameter int unsigned RsourceStreamId = 3;
8544

8645
typedef enum logic { LD_IN_FMP, LD_WEIGHT } source_sel_e;
8746
typedef enum logic { LOAD, STORE } ld_st_sel_e;
@@ -106,9 +65,7 @@ package redmule_pkg;
10665
hci_package::hci_streamer_flags_t x_stream_source_flags;
10766
hci_package::hci_streamer_flags_t w_stream_source_flags;
10867
hci_package::hci_streamer_flags_t y_stream_source_flags;
109-
hci_package::hci_streamer_flags_t r_stream_source_flags;
11068
hci_package::hci_streamer_flags_t z_stream_sink_flags;
111-
hci_package::hci_streamer_flags_t r_stream_sink_flags;
11269
} flgs_streamer_t;
11370

11471
typedef struct packed {
@@ -214,21 +171,6 @@ package redmule_pkg;
214171
logic idle;
215172
} cntrl_flags_t;
216173

217-
typedef enum logic [1:0] { RED_NONE, MAX, SUM } red_op_t;
218-
219-
typedef struct packed {
220-
logic [15:0] row_len;
221-
red_op_t op;
222-
logic load;
223-
logic enable;
224-
logic ready;
225-
} cntrl_red_t;
226-
227-
228-
typedef struct packed {
229-
logic is_initialized;
230-
} flgs_red_t;
231-
232174
typedef enum logic [2:0] { MATMUL=3'h0, GEMM=3'h1, ADDMAX=3'h2, ADDMIN=3'h3, MULMAX=3'h4, MULMIN=3'h5, MAXMIN=3'h6, MINMAX=3'h7 } gemm_op_e;
233175
typedef enum logic [1:0] { Float8=2'h0, Float16=2'h1, Float8Alt=2'h2, Float16Alt=2'h3 } gemm_fmt_e;
234176
typedef enum logic { RNE=1'h0, RTZ=1'h1 } rnd_mode_e;
@@ -273,8 +215,6 @@ package redmule_pkg;
273215
fpu_fmt_e computing_format;
274216
logic gemm_selection;
275217
logic [31:0] r_addr;
276-
logic red_init;
277-
red_op_t red_op;
278218
logic send_w;
279219
logic receive_w;
280220
logic send_x;
@@ -315,23 +255,4 @@ package redmule_pkg;
315255
logic [31:0] data;
316256
} core_default_data_rsp_t;
317257

318-
typedef struct packed {
319-
logic req;
320-
logic wen;
321-
logic [DATA_W/8-1:0] be;
322-
logic signed [DATA_W/32-1:0][31:0]boffs;
323-
logic [31:0] add;
324-
logic [DATA_W-1:0] data;
325-
logic lrdy;
326-
logic user;
327-
} redmule_default_data_req_t;
328-
329-
typedef struct packed {
330-
logic gnt;
331-
logic r_valid;
332-
logic [DATA_W-1:0] r_data;
333-
logic r_opc;
334-
logic r_user;
335-
} redmule_default_data_rsp_t;
336-
337258
endpackage

0 commit comments

Comments
 (0)