SVA sequence re-triggers on multiple $fell events – rise_t not updating

  always @(posedge req) begin
    reg_csr[addr] = wr_data;
    if (addr == 3)begin
      if((reg_csr[3]/2) % 2 ==0)begin
        p1_dur = reg_csr[3]/4;
        p2_dur = reg_csr[3]/4;
        p3_dur = reg_csr[3]/4;
        p4_dur = reg_csr[3]/4;
      end else begin
        p1_dur = reg_csr[3] /4;
        p2_dur = reg_csr[3] /4 + 1;
        p3_dur = reg_csr[3] /4;
        p4_dur = reg_csr[3] /4 + 1;        
      end
    end
  end

//---------------------------FAILING CODE---------------------------
  property sen_cvd_p4_checker;
    time rise_t;
    @(posedge clk) $rose(sen_cvd_p4) ##0 (1, rise_t = $time)  |->
    ##[1:$] $fell(sen_cvd_p4) ##0 f_px_dly_chk(rise_t,$time,"p4");
  endproperty
  
  assert property (sen_cvd_p4_checker)
    else $error("sen_cvd_p4 assertion failed!");

function automatic bit f_px_dly_chk(time s_time, c_time, string s);
        
    case(s)
      "p1" : begin
        if(c_time - s_time == 10*p1_dur)begin
          return 1;
        end
        else begin
          $error("%s assertion error!",s);
          return 0;
        end
      end
      
      "p2" : begin
        if(c_time - s_time == 10*p2_dur)begin
          return 1;
        end
        else begin
          $error("%s assertion error!",s);
          return 0;
        end
      end
      
      "p3" : begin
        if(c_time - s_time == 10*p3_dur)begin
          return 1;
        end
        else begin
          $error("%s assertion error!",s);
          return 0;
        end
      end
      
      "p4" : begin
        if(c_time - s_time == 10*p4_dur)begin
          return 1;
        end
        else begin
          $error("%s assertion error!",s);
          $display(p4_dur, c_time, s_time, c_time - s_time);
          return 0;
        end
      end
      
    endcase
  endfunction: f_px_dly_chk


** Error: p4 assertion error!
#    Time: 11155 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               11155               11115                  40
# ** Error: p4 assertion error!
#    Time: 11525 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               11525               11115                 410
# ** Error: p4 assertion error!
#    Time: 11625 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               11625               11115                 510
# ** Error: p4 assertion error!
#    Time: 11725 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               11725               11115                 610
# ** Error: p4 assertion error!
#    Time: 11825 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               11825               11115                 710
# ** Error: p4 assertion error!
#    Time: 11925 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               11925               11115                 810
# ** Error: p4 assertion error!
#    Time: 12025 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               12025               11115                 910
# ** Error: p4 assertion error!
#    Time: 12125 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               12125               11115                1010
# ** Error: p4 assertion error!
#    Time: 12225 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               12225               11115                1110
# ** Error: p4 assertion error!
#    Time: 12325 ns  Scope: tb_top.i_assertion.f_px_dly_chk File: ../sv/assertion.sv Line: 208
#                    3               12325               11115                1210

see the rise_time time is stuck at 11155

  
//---------------------------THIS WORKS FINE---------------------------
  property sen_cvd_p4_checker;
    time rise_t;
    @(posedge clk) $rose(sen_cvd_p4) ##0 (1, rise_t = $time)  |->
    first_match(##[1:$] $fell(sen_cvd_p4)) ##0 ($time - rise_t == 10*p4_dur);
  endproperty
  
  assert property (sen_cvd_p4_checker)
    else $error("sen_cvd_p4 assertion failed!");

How first match makes a difference especially here? The first one should work right? However my confusion is that putting 1 in the property is why my code was failing?

SVA sequence re-triggers on multiple $fell events – rise_t not updating

Check this thread