Reactive sequence in a layered environment

Hi ,

I have am implementation question regarding using a reactive agent with a upper layer UVC driving it.

I have an interface where the DUT is the master and the TB should respond to it. But, I also have a situation where I want to pre-generate (that is even before the DUT has requested for it) the data from test via a virtual sequence calling a upper level sequence (which is equivalent to 3 interface transactions).

I wanted to have something like: Layer/Upper level UVC - interface UVC (both encapsulated in an env if required).

My requirements are:

  1. Would like to provide, both upper level UVC and interface UVC as a component with a configuration object.
  2. The interface UVC should be able to work on its own with a reactive sequence where the data generated doesn’t matter (at top level or system level).

I have written upper level sequence which runs on upper level UVC’s sequencer which generates upper level sequence items. I also have written a translation sequence which has a handle to upper level sequencer, pulls upper level sequence items and converts then to interface sequence items and sends to interface UVC’s driver.

These low level sequence items have to be stored in the interface UVC’s driver in a queue / array with a process that forever looks at upper level sequencer and stores them in the queue/array. And another process monitoring the actual interface and feeding the DUT with the data looking into the queue.

Now I am not sure…

(1) whether this is the correct approach to address my above two requirements ?
(2) Also, somehow I am not comfortable in moving the data storage in the interface driver as this may not be a clean way when it comes to interface UVC reuse. ?
(3) Also, in this approach I have taken away the reactive / responder sequence completely. Can this approach still work with a reactive sequence and the interface UVC at other levels ?

Could anyone explain me how to handle this scenario in a correct way ?

Regards,
Madhu