How to pass a FIFO/List/queue into a sequence running on an agent which is reactive in it's nature

Hello VA,

Next scenario:
in a testbench an agent runs a sequence starting at start of run_phase.
The agent reacts to the DUT outputs, so its is ACTIVE agent and of working as SLAVE.
The DUT outputs are monitored by another agent, transferred to the verification env, being processed and then I would like to inject responses as a result of these processing back to the DUT.

How would you suggest passing this information structs/classes from the ENV to the sequence running using “forever begin…end” loop?
Of course I need something with blocking nature. I mean the ACTIVE SLAVE won’t inject transactions back to the design if did not monitored any related outputs from it.
Should I use the TLM_FIFO? Mailbox? Or just a queue?

If yes for using TLM_FIFO,
how should I connect a uvm_component (for example: my reference_model) with the sequence which is not a uvm_component?


task body();
    forever begin
        [how should I receive here items from the env/ref_model to inject back to the DUT]
        .....
    end

Thanks in advance,
Michael