[SEQREQZMB]

Several comments on the code you have written:

  1. You should never access interface signals outside of an agent’s driver. By doing this, you can cause undesired conflicts and code that is very difficult to debug.

  2. You should never use ‘p_sequencer’. This results in code that is non-portable. You should use the standard UVM sequencer.

  3. You should not use assert() around a randomize call. If you disable assertions, the randomize() call won’t happen.

  4. The main issue is that you have a start_item()/finish_item() inside a fork/join_any block. When the second part of the fork completes and you disable the fork, it will terminate the first begin/end block which is when the start_item() is waiting for sequencer arbitration.