As per above code you have connected monitor to predictor,
possible call for bus2reg
- 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
- 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 :
