UVM driver waiting for another signal from different interface


I have a scenario where we have 2 interfaces and 2 agents assume Interface A, Interface B, Driver A and Driver B. I would like to drive signals in Driver A based on the posedge of a signal from Interface B. what is the best way to do that?

In reply to rag123:

It’s hard to answer this question without knowing why two separate agents/interfaces have a this kind of dependency. We would also need to know re-usability requirements, like will you ever have testbenches that test the interfaces independently?

You could certainly have a driver with two virtual interfaces.

In reply to dave_59:

Hi Dave,
Unfortunately there is a dependency because of the way it is supposed to behave. I dont think these interfaces would be tested independently.

You could certainly have a driver with two virtual interfaces.

you mean get the virtual interface handle of Interface B and then do the modeling in Driver A.

As Dave mentions, you could have driver A initialize two virtual interfaces. one assigned to the instance of InterfaceA and the second virtual interface assigned to the instance of InterfaceB. You could also create a modport to restrict the access of interfaceB signals to readonly. This should give driverA full visibility of signals in interfaceB.

The drawbacks of this solution, is that the driverA becomes dependent on interfaceB. You could architect driverA to run in two modes. one where interface B is present and the second where interfaceB is not

Another option is to try using callbacks when the monitorB senses a change in the desired signal. This callback function can be triggered to drive some signal in interfaceA/

Logie Ramachandran,
Accelver Systems Inc