UVM Slave Sequence

Hello,

I’m trying to implement an AXI Slave VIP and have few questions regarding the implementation.
In this case, the DUT is the master. The AXI Slave checks the interface for valid read /write signals and performs a read/write operation from a memory model. It returns back the write response/read data back to the DUT.

  1. Since this is a slave VIP , do I need a slave sequence which runs forever sending transactions to the driver ? This is similar to the UVM example where the monitor and sequencer are connected by an analysis port and the sequence calls the peek function to check if a valid transaction is available from the monitor.

(OR)

  1. Can I skip the sequence/sequencer part and just connect my monitor and driver using an analysis port and pass on the observed transaction from the monitor to the driver for further action ?

(OR)

  1. I’m thinking of a 3rd alternative of just using the monitor to the observe the interface and drive back the write response/ read data back using the monitor itself and leave the driver empty.

Please let me know your valuable thoughts and suggestions.

Thanks,
Madhu

Every agent you create should follow the recommended UVM architecture and have a driver, sequencer and monitor. Following these guidelines ensures the maximum amount of reuse for your agents.

Your driver should determine its response to the incoming transactions by using a sequence. Your sequences should be coded to allow both a normal response as well as potentially insert variations to account for errors, mis-matches, and other abnormal slave responses.

The monitor should perform the standard monitor functionality and monitor bus transactions and send them out via the analysis port. There are times when VIP which is developed with both Master and Slave functionality will reuse the same monitor, but this is protocol dependent.

Never take short cuts when developing VIP. It will only lead to more work later in the process.