Thursday, October 4, 2012

analysis_export/analysis_fifo in sequencer - workaround for less intelligent OVCs

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:

  • 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.