FIFO verification using UVM Testbench

Hello,
I am new to Verification. I have some questions on the following.

I need to Verify a FIFO with the following tests in a UVM Testbench.
q1) Do I need to create one Agent for generating the WritetoFifo ( Push ) and ReadFromFifo ( Pop ) ?
q2) What should I put in the fifo_transaction extends uvm_sequence_item class
q3) What fields can I randomize. fifodata, wr, rd …

  1. FIFO full
  2. FIFO empty
  3. FIFO overflow
  4. FIFO underflow
  5. Reset recovery (If FIFO can be given soft reset). Also during reset nothing should be written and occupancy should
    remain zero. Also during reset nothing should be read out of FIFO and occupancy should remain zero.
  6. Simultaneous read and write when FIFO is empty, FULL, half full, one entry in FIFO, one entry less than FULL.
  7. If FIFO has near FULL and NEAR empty then validate that also.
  8. Check following combinations - WWWW, WRWRWR, RRRR, WWRRWWRR, WWRWWR, RRWRRW.

JeffD

Saw a similar question here.
https://verificationacademy.com/forums/uvm/how-implement-uvm-testbench-asynchronous-fifo

JeffD