@@ -247,8 +247,10 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
247247 logic csr_en;
248248 logic csr_dump;
249249 logic csr_stall_d, csr_stall_q;
250- // Multicast mask
251- logic [31 : 0 ] csr_mcast_d, csr_mcast_q;
250+
251+ // User Field
252+ logic [31 : 0 ] csr_user_high_d, csr_user_high_q;
253+ logic [31 : 0 ] csr_user_low_d, csr_user_low_q;
252254
253255 localparam logic M = 0 ;
254256 localparam logic S = 1 ;
@@ -320,7 +322,8 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
320322 end
321323
322324 `FFAR (csr_stall_q, csr_stall_d, '0 , clk_i, rst_i)
323- `FFAR (csr_mcast_q, csr_mcast_d, '0 , clk_i, rst_i)
325+ `FFAR (csr_user_high_q, csr_user_high_d, '0 , clk_i, rst_i)
326+ `FFAR (csr_user_low_q, csr_user_low_d, '0 , clk_i, rst_i)
324327
325328 typedef struct packed {
326329 fpnew_pkg :: fmt_mode_t fmode;
@@ -2152,6 +2155,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
21522155 // DMA instructions
21532156 DMSRC ,
21542157 DMDST ,
2158+ DMUSER ,
21552159 DMSTR : begin
21562160 if (Xdma) begin
21572161 acc_qreq_o.addr = DMA_SS ;
@@ -2221,16 +2225,6 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
22212225 illegal_inst = 1'b1 ;
22222226 end
22232227 end
2224- DMMCAST : begin
2225- if (Xdma) begin
2226- acc_qreq_o.addr = DMA_SS ;
2227- opa_select = Reg;
2228- acc_qvalid_o = valid_instr;
2229- write_rd = 1'b0 ;
2230- end else begin
2231- illegal_inst = 1'b1 ;
2232- end
2233- end
22342228 SCFGRI : begin
22352229 if (Xssr) begin
22362230 write_rd = 1'b0 ;
@@ -2358,7 +2352,8 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
23582352 dscratch_d = dscratch_q;
23592353
23602354 csr_stall_d = csr_stall_q;
2361- csr_mcast_d = csr_mcast_q;
2355+ csr_user_high_d = csr_user_high_q;
2356+ csr_user_low_d = csr_user_low_q;
23622357
23632358 if (barrier_i) csr_stall_d = 1'b0 ;
23642359 barrier_o = 1'b0 ;
@@ -2585,10 +2580,15 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
25852580 barrier_o = 1'b1 ;
25862581 csr_stall_d = 1'b1 ;
25872582 end
2588- // Multicast mask
2589- CSR_MCAST : begin
2590- csr_rvalue = csr_mcast_q;
2591- csr_mcast_d = alu_result[31 : 0 ];
2583+ // User field high
2584+ CSR_USER_HIGH : begin
2585+ csr_rvalue = csr_user_high_q;
2586+ csr_user_high_d = alu_result[31 : 0 ];
2587+ end
2588+ // User field low
2589+ CSR_USER_LOW : begin
2590+ csr_rvalue = csr_user_low_q;
2591+ csr_user_low_d = alu_result[31 : 0 ];
25922592 end
25932593 default : begin
25942594 csr_rvalue = '0 ;
@@ -2890,6 +2890,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
28902890 snitch_lsu # (
28912891 .AddrWidth (AddrWidth),
28922892 .DataWidth (DataWidth),
2893+ .UserWidth (64 ),
28932894 .dreq_t (dreq_t),
28942895 .drsp_t (drsp_t),
28952896 .tag_t (logic[RegWidth- 1 : 0 ]),
@@ -2910,7 +2911,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #(
29102911 .lsu_qsize_i (ls_size),
29112912 .lsu_qamo_i (ls_amo),
29122913 .lsu_qrepd_i (1'b0 ),
2913- .lsu_qmcast_i ( addr_t ' (csr_mcast_q) ),
2914+ .lsu_quser_i ( { csr_user_high_q, csr_user_low_q } ),
29142915 .lsu_qvalid_i (lsu_qvalid),
29152916 .lsu_qready_o (lsu_qready),
29162917 .lsu_pdata_o (ld_result),
0 commit comments