I had an OVC to work with, which will not produce a Response transaction if a Request transaction is supplied from the DUT.
As per my understanding, a Response transaction can't be part of a Sequence from the OVC because we don't know at what time this needs to be sent and how many. This absolutely depends on the Requests sent from DUT.
The scenario:
As per my understanding, a Response transaction can't be part of a Sequence from the OVC because we don't know at what time this needs to be sent and how many. This absolutely depends on the Requests sent from DUT.
The scenario:
- Third party OVC
- There is a higher level virtual_sequencer & a virtual_sequence, which will incorporate the sequencer/sequences of this OVC
- This OVC can't send a Response smartly
- We need to generate the Response sequence and send it from it
- We have access to only sequence of this OVC
And the following is a very good approach I figured out.
- Have an analysis_fifo at the virtual_sequencer, mentioned above.
- At the top_env, connect this OVC monitor's inbound Request transaction port to this fifo's export.
- At the virtual_sequence, get this Request transaction using virtual_sequencer's handle.
- Call a function from the OVC sequence to create a Response transaction & push this to Response_q.
- At the OVC's sequence, whenever this Response_q has a Response transaction available, send it to the driver, overriding other Request transactions.