Skip to content

Commit 1e05256

Browse files
committed
Stylistic fixes to get the pipeline back running.
1 parent 85158be commit 1e05256

12 files changed

+60
-98
lines changed

rtl/redmule_ctrl.sv

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// SPDX-License-Identifier: SHL-0.51
44
//
55
// Yvan Tortorella <[email protected]>
6-
// Andrea Belano <[email protected]>
6+
// Andrea Belano <[email protected]>
77
//
88

99
import redmule_pkg::*;

rtl/redmule_memory_scheduler.sv

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
// Copyright 2025 ETH Zurich and University of Bologna.
2+
// Solderpad Hardware License, Version 0.51, see LICENSE for details.
3+
// SPDX-License-Identifier: SHL-0.51
4+
//
5+
// Andrea Belano <[email protected]>
6+
//
7+
18
module redmule_memory_scheduler
29
import redmule_pkg::*;
310
import hwpe_ctrl_package::*;
@@ -36,7 +43,7 @@ module redmule_memory_scheduler
3643
logic [$clog2(W):0] x_rows_lftover_d, x_rows_lftover_q;
3744

3845
logic [$clog2(W):0] num_x_reads;
39-
46+
4047
always_ff @(posedge clk_i or negedge rst_ni) begin : x_cols_iters_register
4148
if (~rst_ni) begin
4249
x_cols_iters_q <= '0;
@@ -64,7 +71,7 @@ module redmule_memory_scheduler
6471
end
6572

6673
assign w_iters_d = w_iters_q == reg_file_i.hwpe_params[W_ITERS][15:0]-1 ? '0 : w_iters_q + 1;
67-
74+
6875
always_ff @(posedge clk_i or negedge rst_ni) begin : x_rows_iters_register
6976
if (~rst_ni) begin
7077
x_rows_iters_q <= '0;
@@ -139,7 +146,7 @@ module redmule_memory_scheduler
139146

140147
// Here we initialize the streamer source signals
141148
// for the W stream source
142-
// In quantization mode this is used to load the scales instead
149+
// In quantization mode this is used to load the scales instead
143150
if (reg_file_i.hwpe_params[DEQUANT_MODE][0] == 1'b0) begin
144151
cntrl_streamer_o.w_stream_source_ctrl.addressgen_ctrl.base_addr = reg_file_i.hwpe_params[W_ADDR];
145152
cntrl_streamer_o.w_stream_source_ctrl.addressgen_ctrl.tot_len = reg_file_i.hwpe_params[W_TOT_LEN];
@@ -222,7 +229,7 @@ module redmule_memory_scheduler
222229
always_comb begin : req_start_assignment
223230
cntrl_streamer_o.x_stream_source_ctrl.req_start = (cntrl_scheduler_i.first_load || tot_x_read_q != '0 && tot_x_read_q != reg_file_i.hwpe_params[TOT_X_READ]) && flgs_streamer_i.x_stream_source_flags.ready_start;
224231
cntrl_streamer_o.w_stream_source_ctrl.req_start = cntrl_scheduler_i.first_load && flgs_streamer_i.z_stream_sink_flags.ready_start;
225-
cntrl_streamer_o.y_stream_source_ctrl.req_start = cntrl_scheduler_i.first_load && reg_file_i.hwpe_params[OP_SELECTION][0] && flgs_streamer_i.y_stream_source_flags.ready_start;
232+
cntrl_streamer_o.y_stream_source_ctrl.req_start = cntrl_scheduler_i.first_load && reg_file_i.hwpe_params[OP_SELECTION][0] && flgs_streamer_i.y_stream_source_flags.ready_start;
226233
cntrl_streamer_o.z_stream_sink_ctrl.req_start = cntrl_scheduler_i.first_load && flgs_streamer_i.z_stream_sink_flags.ready_start;
227234
cntrl_streamer_o.gid_stream_source_ctrl.req_start = '0; //FIXME
228235
cntrl_streamer_o.wq_stream_source_ctrl.req_start = '0; //FIXME
@@ -234,4 +241,4 @@ module redmule_memory_scheduler
234241
assign cntrl_streamer_o.output_cast_src_fmt = fpnew_pkg::fp_format_e'(reg_file_i.hwpe_params[OP_SELECTION][12:10]);
235242
assign cntrl_streamer_o.output_cast_dst_fmt = fpnew_pkg::fp_format_e'(reg_file_i.hwpe_params[OP_SELECTION][15:13]);
236243

237-
endmodule
244+
endmodule : redmule_memory_scheduler

rtl/redmule_pkg.sv

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ package redmule_pkg;
9999
// [2:1] -> Quantized format
100100
// [0:0] -> Dequantization enable
101101
parameter int unsigned DEQUANT_MODE = 18; // 0x48
102-
parameter int unsigned GIDX_ADDR = 19; // 0x4C
102+
parameter int unsigned GIDX_ADDR = 19; // 0x4C
103103
parameter int unsigned SCALES_ADDR = 20; // 0x50
104104
parameter int unsigned ZEROS_ADDR = 21; // 0x54
105105

rtl/redmule_scheduler.sv

+6-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Solderpad Hardware License, Version 0.51, see LICENSE for details.
33
// SPDX-License-Identifier: SHL-0.51
44
//
5+
// Yvan Tortorella <[email protected]>
56
// Andrea Belano <[email protected]>
67
//
78

@@ -168,7 +169,7 @@ module redmule_scheduler
168169

169170
assign x_shift_cnt_en = (current_state == LOAD_W) && ~stall_engine;
170171
assign x_shift_cnt_d = x_shift_cnt_q == H-1 ? '0 : x_shift_cnt_q + 1;
171-
172+
172173
assign cntrl_x_buffer_o.h_shift = x_shift_cnt_en;
173174
assign cntrl_x_buffer_o.d_shift = x_shift_cnt_q == H-1 && x_shift_cnt_en;
174175

@@ -194,7 +195,7 @@ module redmule_scheduler
194195

195196
assign x_reload_en = start || x_cols_iter_en/*x_w_iters_en*/;
196197
assign x_reload_rst = flgs_x_buffer_i.full;
197-
198+
198199
assign cntrl_x_buffer_o.pad_setup = current_state == PRELOAD && next_state == LOAD_W;
199200
assign cntrl_x_buffer_o.load = (flgs_x_buffer_i.empty || x_reload_q) && x_valid_i;
200201
assign cntrl_x_buffer_o.rst_w_index = (current_state == LOAD_W && x_shift_cnt_q == H-1) && flgs_x_buffer_i.full && ~stall_engine; // FIXME CHECK, WAS current_state == LOAD_W && flgs_x_buffer_i.full
@@ -271,7 +272,7 @@ module redmule_scheduler
271272

272273
assign cntrl_w_buffer_o.height = w_rows_iter_q >= reg_file_i.hwpe_params[W_ITERS][31:16]-(PIPE_REGS+1)/*w_cols_iter_q == reg_file_i.hwpe_params[W_ITERS][15:0]-1*/ && reg_file_i.hwpe_params[LEFTOVERS][15:8] != '0 ? reg_file_i.hwpe_params[LEFTOVERS][15:8] : H;
273274
assign cntrl_w_buffer_o.width = w_cols_iter_q == reg_file_i.hwpe_params[W_ITERS][15:0]-1/*w_rows_iter_q >= reg_file_i.hwpe_params[W_ITERS][31:16]-(PIPE_REGS+1)*/ && reg_file_i.hwpe_params[LEFTOVERS][7:0] != '0 ? reg_file_i.hwpe_params[LEFTOVERS][7:0] : D;
274-
275+
275276
assign cntrl_w_buffer_o.load = current_state == LOAD_W && ~stall_engine;
276277
assign cntrl_w_buffer_o.shift = (current_state == LOAD_W || current_state == WAIT) && ~stall_engine;
277278

@@ -584,7 +585,7 @@ module redmule_scheduler
584585
assign flgs_scheduler_o.w_loaded = current_state == LOAD_W && ~stall_engine;
585586

586587
/*********************************
587-
* FSM *
588+
* FSM *
588589
*********************************/
589590

590591
always_ff @(posedge clk_i or negedge rst_ni) begin : state_register
@@ -637,4 +638,4 @@ module redmule_scheduler
637638
endcase
638639
end
639640

640-
endmodule
641+
endmodule : redmule_scheduler

rtl/redmule_top.sv

+9-55
Original file line numberDiff line numberDiff line change
@@ -137,24 +137,24 @@ flags_fifo_t w_fifo_flgs;
137137
// X streaming interface + X FIFO interface
138138
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) x_buffer_d ( .clk( clk_i ) );
139139
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) x_buffer_fifo ( .clk( clk_i ) );
140-
141-
// W streaming interface + W FIFO interface
140+
141+
// W streaming interface + W FIFO interface
142142
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) w_buffer_d ( .clk( clk_i ) );
143143
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) w_buffer_fifo ( .clk( clk_i ) );
144-
145-
// Y streaming interface + Y FIFO interface
144+
145+
// Y streaming interface + Y FIFO interface
146146
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) y_buffer_d ( .clk( clk_i ) );
147147
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) y_buffer_fifo ( .clk( clk_i ) );
148-
149-
// Z streaming interface + Z FIFO interface
148+
149+
// Z streaming interface + Z FIFO interface
150150
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) z_buffer_q ( .clk( clk_i ) );
151151
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) z_buffer_fifo ( .clk( clk_i ) );
152152

153153
// GIDX streaming interface + GIDX FIFO interface
154154
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) gidx_stream_d ( .clk( clk_i ) ); //FIXME DATA WIDTH (?)
155155
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) gidx_buffer_fifo ( .clk( clk_i ) );
156156

157-
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) wq_stream_d ( .clk( clk_i ) );
157+
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) wq_stream_d ( .clk( clk_i ) );
158158
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) wq_buffer_fifo ( .clk( clk_i ) );
159159

160160
hwpe_stream_intf_stream #( .DATA_WIDTH ( DATAW_ALIGN ) ) zeros_stream_d ( .clk( clk_i ) ); //FIXME DATA WIDTH
@@ -317,7 +317,7 @@ redmule_w_buffer #(
317317
.flags_o ( w_buffer_flgs ),
318318
.w_buffer_o ( w_buffer_q ),
319319
.w_buffer_i ( w_buffer_fifo.data ),
320-
.next_gidx_i ( wrow_q.data &'b111 ) //JUST FOR TESTING
320+
.next_gidx_i ( wrow_q.data &'b111 ) //JUST FOR TESTING
321321
);
322322

323323
logic [Width-1:0][BITW-1:0] z_buffer_d, y_bias_q;
@@ -446,7 +446,7 @@ redmule_engine #(
446446
redmule_memory_scheduler #(
447447
.DW (DATAW_ALIGN),
448448
.W (Width),
449-
.H (Height)
449+
.H (Height)
450450
) i_memory_scheduler (
451451
.clk_i ( clk_i ),
452452
.rst_ni ( rst_ni ),
@@ -495,52 +495,6 @@ redmule_ctrl #(
495495
/*---------------------------------------------------------------*/
496496
/* | Local FSM | */
497497
/*---------------------------------------------------------------*/
498-
499-
//redmule_scheduler #(
500-
// .Height ( Height ),
501-
// .Width ( Width ),
502-
// .NumPipeRegs ( NumPipeRegs )
503-
//) i_scheduler (
504-
// .clk_i ( clk_i ),
505-
// .rst_ni ( rst_ni ),
506-
// .test_mode_i ( test_mode_i ),
507-
// .clear_i ( clear ),
508-
// .x_valid_i ( x_buffer_fifo.valid ),
509-
// .x_strb_i ( x_buffer_fifo.strb ),
510-
// .w_valid_i ( w_buffer_fifo.valid ),
511-
// .w_strb_i ( w_buffer_fifo.strb ),
512-
// .y_fifo_valid_i ( y_buffer_fifo.valid ),
513-
// .y_fifo_strb_i ( y_buffer_fifo.strb ),
514-
// .z_ready_i ( z_buffer_q.ready ),
515-
// .accumulate_i ( accumulate ),
516-
// .engine_flush_i ( engine_flush ),
517-
// .z_strb_o ( ),
518-
// .soft_clear_o ( soft_clear ),
519-
// .w_load_o ( w_load ),
520-
// .w_cols_lftovr_o ( w_cols_lftovr ),
521-
// .w_rows_lftovr_o ( w_rows_lftovr ),
522-
// .y_cols_lftovr_o ( y_cols_lftovr ),
523-
// .y_rows_lftovr_o ( y_rows_lftovr ),
524-
// .gate_en_o ( gate_en ),
525-
// .z_buffer_clk_en_o ( fsm_z_clk_en ),
526-
// .reg_enable_o ( reg_enable ),
527-
// .z_store_o ( z_buffer_store ),
528-
// .y_buffer_load_o ( y_buffer_load ),
529-
// .reg_file_i ( reg_file ),
530-
// .flgs_streamer_i ( flgs_streamer ),
531-
// .flgs_x_buffer_i ( x_buffer_flgs ),
532-
// .flgs_w_buffer_i ( w_buffer_flgs ),
533-
// .flgs_z_buffer_i ( z_buffer_flgs ),
534-
// .flgs_engine_i ( flgs_engine ),
535-
// .fifo_flgs_i ( w_fifo_flgs ),
536-
// .cntrl_scheduler_i ( cntrl_scheduler ),
537-
// .cntrl_engine_o ( cntrl_engine ),
538-
// .cntrl_x_buffer_o ( x_buffer_ctrl ),
539-
// .flgs_scheduler_o ( flgs_scheduler )
540-
//);
541-
542-
543-
// Will replace the scheduler
544498
redmule_scheduler #(
545499
.Height ( Height ),
546500
.Width ( Width ),

rtl/w_buffer/redmule_w_buffer.sv

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module redmule_w_buffer
1717
parameter int unsigned GID_WIDTH = GROUP_ID_WIDTH ,
1818
localparam int unsigned BITW = fp_width(FpFormat), // Number of bits for the given format
1919
localparam int unsigned H = Height ,
20-
localparam int unsigned D = DW/BITW
20+
localparam int unsigned D = DW/BITW
2121
)(
2222
input logic clk_i ,
2323
input logic rst_ni ,
@@ -61,7 +61,7 @@ logic [$clog2(H)-1:0] buf_write_addr;
6161

6262
logic [H-1:0][$clog2(N_REGS+1)+$clog2(C)+$clog2(H)-1:0] buf_read_addr;
6363

64-
for (genvar d = 0; d < D; d++) begin : zero_padding
64+
for (genvar d = 0; d < D; d++) begin : gen_zero_padding
6565
assign w_data[d] = (d < ctrl_i.width && w_row < ctrl_i.height) ? w_buffer_i[(d+1)*BITW-1:d*BITW] : '0;
6666
end
6767

@@ -164,7 +164,7 @@ for (genvar h = 0; h < H; h++) begin : gen_w_id_registers
164164
assign cache_w_id_valid_d[h] = (evict_pointer == h && ctrl_i.load && ctrl_i.dequant && ~gidx_present) ? '1 : cache_w_id_valid_q[h];
165165
end
166166

167-
// Each row of the buffer has a counter that
167+
// Each row of the buffer has a counter that
168168
// It resets to D/(PIPE_REGS+1)-1 each time the vector is requested
169169
for (genvar h = 0; h < H; h++) begin : gen_usage_counters
170170
always_ff @(posedge clk_i or negedge rst_ni) begin

rtl/w_buffer/redmule_w_buffer_scm.sv

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module redmule_w_buffer_scm #(
99
parameter int unsigned WORD_SIZE = 32,
1010
parameter int unsigned ROWS = 1 ,
1111
parameter int unsigned COLS = 1 ,
12-
parameter int unsigned ELMS = 1
12+
parameter int unsigned ELMS = 1
1313
) (
1414
input logic clk_i ,
1515
input logic rst_ni ,
@@ -51,7 +51,7 @@ module redmule_w_buffer_scm #(
5151
assign cols_read_addr[r] = cols_read_offs_q >= r ? cols_read_offs_q - r : ROWS - (r - cols_read_offs_q);
5252
end
5353

54-
for (genvar r = 0; r < ROWS; r++) begin : output_assignment
54+
for (genvar r = 0; r < ROWS; r++) begin : gen_output_assignment
5555
assign rdata_o[r] = buffer_q[rows_read_addr_q[r]][cols_read_addr[r]][elms_read_addr_q];
5656
end
5757

@@ -84,4 +84,4 @@ module redmule_w_buffer_scm #(
8484
end
8585
end
8686

87-
endmodule
87+
endmodule : redmule_w_buffer_scm

rtl/x_buffer/redmule_x_buffer.sv

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ localparam int unsigned TOT_DEPTH = H*D
2929
output logic [W-1:0][H-1:0][BITW-1:0] x_buffer_o ,
3030
input logic [DW-1:0] x_buffer_i ,
3131
input logic [$clog2(D*H)-1:0] next_wrow_i, //Tentative name
32-
output logic next_wrow_ready_o
32+
output logic next_wrow_ready_o
3333
);
3434

3535
typedef enum logic [2:0] {
@@ -108,7 +108,7 @@ redmule_x_pad_scm #(
108108

109109
// Normally, we only write a row in the buffer when another one is read
110110
// In the FAST_FILL state we write a new row in the buffer every cycle until it is full
111-
assign buf_write_en = ( current_state == FAST_FILL ||
111+
assign buf_write_en = ( current_state == FAST_FILL ||
112112
current_state == FILL && ctrl_i.h_shift)
113113
&& ~refilling;
114114

@@ -186,7 +186,7 @@ always_comb begin : fsm
186186
end
187187
end
188188
end
189-
end
189+
end
190190
endcase
191191
end
192192

rtl/x_buffer/redmule_x_buffer_scm.sv

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@ module redmule_x_buffer_scm #(
99
parameter int unsigned WORD_SIZE = 32,
1010
parameter int unsigned WIDTH = 1 ,
1111
parameter int unsigned HEIGHT = 2 ,
12-
parameter int unsigned N_OUTPUTS = 1
12+
parameter int unsigned N_OUTPUTS = 1
1313
) (
1414
input logic clk_i ,
1515
input logic rst_ni ,
1616
input logic write_en_i ,
1717
input logic [$clog2(N_OUTPUTS)+$clog2(HEIGHT)-1:0] write_addr_i ,
1818
input logic [WIDTH-1:0][WORD_SIZE-1:0] wdata_i ,
1919
input logic read_en_i ,
20-
input logic [$clog2(N_OUTPUTS)+$clog2(HEIGHT)-1:0] read_addr_i ,
21-
output logic [N_OUTPUTS-1:0][WIDTH-1:0][WORD_SIZE-1:0] rdata_o
20+
input logic [$clog2(N_OUTPUTS)+$clog2(HEIGHT)-1:0] read_addr_i ,
21+
output logic [N_OUTPUTS-1:0][WIDTH-1:0][WORD_SIZE-1:0] rdata_o
2222
);
23-
logic [HEIGHT-1:0][N_OUTPUTS-1:0][WIDTH-1:0][WORD_SIZE-1:0] buffer_q;
23+
logic [HEIGHT-1:0][N_OUTPUTS-1:0][WIDTH-1:0][WORD_SIZE-1:0] buffer_q;
2424
logic [WIDTH-1:0][WORD_SIZE-1:0] wdata_q;
2525
logic [N_OUTPUTS-1:0][$clog2(HEIGHT)-1:0] read_addr_q;
2626

@@ -41,7 +41,7 @@ module redmule_x_buffer_scm #(
4141
end
4242
end
4343

44-
for (genvar o = 0; o < N_OUTPUTS; o++) begin : output_assignment
44+
for (genvar o = 0; o < N_OUTPUTS; o++) begin : gen_output_assignment
4545
assign rdata_o[o] = buffer_q[read_addr_q[o]][o];
4646
end
4747

@@ -79,4 +79,4 @@ module redmule_x_buffer_scm #(
7979
end
8080
end
8181

82-
endmodule
82+
endmodule : redmule_x_buffer_scm

rtl/x_buffer/redmule_x_pad_scm.sv

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@
88
module redmule_x_pad_scm #(
99
parameter int unsigned WORD_SIZE = 32,
1010
parameter int unsigned ROWS = 1 ,
11-
parameter int unsigned COLS = 1
11+
parameter int unsigned COLS = 1
1212
) (
1313
input logic clk_i ,
1414
input logic rst_ni ,
1515
input logic write_en_i ,
1616
input logic [$clog2(ROWS)-1:0] write_addr_i ,
1717
input logic [COLS-1:0][WORD_SIZE-1:0] wdata_i ,
1818
input logic read_en_i ,
19-
input logic [$clog2(COLS)-1:0] read_addr_i ,
20-
output logic [ROWS-1:0][WORD_SIZE-1:0] rdata_o
19+
input logic [$clog2(COLS)-1:0] read_addr_i ,
20+
output logic [ROWS-1:0][WORD_SIZE-1:0] rdata_o
2121
);
22-
logic [ROWS-1:0][COLS-1:0][WORD_SIZE-1:0] buffer_q;
22+
logic [ROWS-1:0][COLS-1:0][WORD_SIZE-1:0] buffer_q;
2323
logic [COLS-1:0][WORD_SIZE-1:0] wdata_q;
2424
logic [$clog2(COLS)-1:0] read_addr_q;
2525

@@ -35,7 +35,7 @@ module redmule_x_pad_scm #(
3535
end
3636
end
3737

38-
for (genvar r = 0; r < ROWS; r++) begin : output_assignment
38+
for (genvar r = 0; r < ROWS; r++) begin : gen_output_assignment
3939
assign rdata_o[r] = buffer_q[r][read_addr_q];
4040
end
4141

@@ -68,4 +68,4 @@ module redmule_x_pad_scm #(
6868
end
6969
end
7070

71-
endmodule
71+
endmodule : redmule_x_pad_scm

0 commit comments

Comments
 (0)