没理解你关注的点。如果直接assign过来,想复位flag只能通过复位csr。如果用一个alwys_ff来做寄存,复位寄存的ff就可以。关键没明白关注延时的点是什么?如果关心Clk cycle量级的延时,那最好自己维护一个reg,来寄存alaram _flag。alarm_flag做个mux,更新的csr的时候选择csr,否则剩下全部来自寄存值。这样既不会有延时,也可以只复位寄存FF实现独立复位。
wire alarm_flag;
reg alarm_flag_ff;
always @(posedge i_clk or negedge i_rst_n) begin
if (i_rst == 1'b0) begin
alarm_flag_ff <= 1'b0;
end
else begin
alarm_flag_ff <= alarm_flag;
end
end
assign alarm_flag = controL_status_update? control_status_2[3] :alarm_flag_ff;