1010module mclic_reg_top # (
1111 parameter type reg_req_t = logic ,
1212 parameter type reg_rsp_t = logic ,
13- parameter int AW = 2
13+ parameter int AW = 3
1414) (
1515 input logic clk_i,
1616 input logic rst_ni,
@@ -80,6 +80,9 @@ module mclic_reg_top #(
8080 logic [3 : 0 ] mcliccfg_unlbits_wd;
8181 logic mcliccfg_unlbits_we;
8282 logic [3 : 0 ] mcliccfg_reserved_qs;
83+ logic clicmnxticonf_qs;
84+ logic clicmnxticonf_wd;
85+ logic clicmnxticonf_we;
8386
8487 // Register instances
8588 // R[mcliccfg]: V(False)
@@ -193,20 +196,49 @@ module mclic_reg_top #(
193196 assign mcliccfg_reserved_qs = 4'h0 ;
194197
195198
199+ // R[clicmnxticonf]: V(False)
200+
201+ prim_subreg # (
202+ .DW (1 ),
203+ .SWACCESS (" RW" ),
204+ .RESVAL (1'h0 )
205+ ) u_clicmnxticonf (
206+ .clk_i (clk_i ),
207+ .rst_ni (rst_ni ),
208+
209+ // from register interface
210+ .we (clicmnxticonf_we),
211+ .wd (clicmnxticonf_wd),
212+
213+ // from internal hardware
214+ .de (1'b0 ),
215+ .d ('0 ),
216+
217+ // to internal hardware
218+ .qe (),
219+ .q (reg2hw.clicmnxticonf.q ),
220+
221+ // to register interface (read)
222+ .qs (clicmnxticonf_qs)
223+ );
196224
197225
198- logic [0 : 0 ] addr_hit;
226+
227+
228+ logic [1 : 0 ] addr_hit;
199229 always_comb begin
200230 addr_hit = '0 ;
201231 addr_hit[0 ] = (reg_addr == MCLIC_MCLICCFG_OFFSET );
232+ addr_hit[1 ] = (reg_addr == MCLIC_CLICMNXTICONF_OFFSET );
202233 end
203234
204235 assign addrmiss = (reg_re || reg_we) ? ~| addr_hit : 1'b0 ;
205236
206237 // Check sub-word write is permitted
207238 always_comb begin
208239 wr_err = (reg_we &
209- ((addr_hit[0 ] & (| (MCLIC_PERMIT [0 ] & ~ reg_be)))));
240+ ((addr_hit[0 ] & (| (MCLIC_PERMIT [0 ] & ~ reg_be))) |
241+ (addr_hit[1 ] & (| (MCLIC_PERMIT [1 ] & ~ reg_be)))));
210242 end
211243
212244 assign mcliccfg_mnlbits_we = addr_hit[0 ] & reg_we & ! reg_error;
@@ -221,6 +253,9 @@ module mclic_reg_top #(
221253 assign mcliccfg_unlbits_we = addr_hit[0 ] & reg_we & ! reg_error;
222254 assign mcliccfg_unlbits_wd = reg_wdata[27 : 24 ];
223255
256+ assign clicmnxticonf_we = addr_hit[1 ] & reg_we & ! reg_error;
257+ assign clicmnxticonf_wd = reg_wdata[0 ];
258+
224259 // Read data return
225260 always_comb begin
226261 reg_rdata_next = '0 ;
@@ -233,6 +268,10 @@ module mclic_reg_top #(
233268 reg_rdata_next[31 : 28 ] = mcliccfg_reserved_qs;
234269 end
235270
271+ addr_hit[1 ]: begin
272+ reg_rdata_next[0 ] = clicmnxticonf_qs;
273+ end
274+
236275 default : begin
237276 reg_rdata_next = '1 ;
238277 end
@@ -255,7 +294,7 @@ endmodule
255294
256295module mclic_reg_top_intf
257296# (
258- parameter int AW = 2 ,
297+ parameter int AW = 3 ,
259298 localparam int DW = 32
260299) (
261300 input logic clk_i,
0 commit comments