@@ -126,16 +126,22 @@ module snitch_cluster_peripheral
126
126
assign hw2reg.PERF_REGS .PERF_CNT [i].rd_data.PERF_COUNTER = perf_cnt_q[i];
127
127
assign hw2reg.PERF_REGS .PERF_CNT_SEL [i].rd_data.METRIC = perf_metrics_q[i];
128
128
assign hw2reg.PERF_REGS .PERF_CNT_SEL [i].rd_data.HART = perf_hart_sel_q[i];
129
- assign hw2reg.PERF_REGS .PERF_CNT [i].rd_ack = 1'b1 ;
130
- assign hw2reg.PERF_REGS .PERF_CNT_SEL [i].rd_ack = 1'b1 ;
131
- assign hw2reg.PERF_REGS .PERF_CNT [i].wr_ack = 1'b1 ;
132
- assign hw2reg.PERF_REGS .PERF_CNT_SEL [i].wr_ack = 1'b1 ;
129
+ assign hw2reg.PERF_REGS .PERF_CNT [i].rd_ack = reg2hw.PERF_REGS .PERF_CNT [i].req &
130
+ ! reg2hw.PERF_REGS .PERF_CNT [i].req_is_wr;
131
+ assign hw2reg.PERF_REGS .PERF_CNT_SEL [i].rd_ack = reg2hw.PERF_REGS .PERF_CNT_SEL [i].req &
132
+ ! reg2hw.PERF_REGS .PERF_CNT_SEL [i].req_is_wr;
133
+ assign hw2reg.PERF_REGS .PERF_CNT [i].wr_ack = reg2hw.PERF_REGS .PERF_CNT [i].req &
134
+ reg2hw.PERF_REGS .PERF_CNT [i].req_is_wr;
135
+ assign hw2reg.PERF_REGS .PERF_CNT_SEL [i].wr_ack = reg2hw.PERF_REGS .PERF_CNT_SEL [i].req &
136
+ reg2hw.PERF_REGS .PERF_CNT_SEL [i].req_is_wr;
133
137
assign hw2reg.PERF_REGS .PERF_CNT [i].rd_data._reserved_63_48 = '0 ;
134
138
assign hw2reg.PERF_REGS .PERF_CNT_SEL [i].rd_data._reserved_63_32 = '0 ;
135
139
end
136
140
137
- assign hw2reg.CL_CLINT_SET .wr_ack = 1'b1 ;
138
- assign hw2reg.CL_CLINT_CLEAR .wr_ack = 1'b1 ;
141
+ assign hw2reg.CL_CLINT_SET .wr_ack = reg2hw.CL_CLINT_SET .req &
142
+ reg2hw.CL_CLINT_SET .req_is_wr;
143
+ assign hw2reg.CL_CLINT_CLEAR .wr_ack = reg2hw.CL_CLINT_CLEAR .req &
144
+ reg2hw.CL_CLINT_CLEAR .req_is_wr;
139
145
140
146
always_comb begin
141
147
perf_cnt_d = perf_cnt_q;
0 commit comments