UVM_RAL: Why Predictor calling bus2reg function(Adapter) 2 times automatically?

As per above code you have connected monitor to predictor,

possible call for bus2reg

  1. wait for end event from req or if provide response is 1 then wait for driven to put response.

      bus_req.end_event.wait_on();

      if (adapter.provides_responses) begin
        uvm_sequence_item bus_rsp;
        uvm_access_e op;
        // TODO: need to test for right trans type, if not put back in q
        rw.parent.get_base_response(bus_rsp);
        adapter.bus2reg(bus_rsp,rw_access);
      end
      else begin
        adapter.bus2reg(bus_req,rw_access);
      end

  1. When monitor see that register read, it also call bus2reg,

so you will see bus2reg get called twice if you have monitor connected to predictor.as you are using same adapter.

I suspect your read response transaction from monitor is not correct as you mentioned it is getting overriden by 0 2nd time.

Image from ClueLogic Post will give you clear picture :