How to Share Information Between Two Passive Agents with Different Interfaces (SPI and LVDS)

Hello,

I am building an agent that models a system with two types of interfaces: SPI and LVDS. The SPI interface provides configuration data that defines the behavior of the LVDS interface. The data received from the SPI is stored in a dedicated storage component within the SPI agent, which is then used to configure the LVDS interface before it transmits information.

Both the SPI and LVDS agents are passive responders. The challenge I am facing is how to efficiently share information between these two agents, ensuring that the LVDS agent receives the necessary configuration from the SPI agent.

I am currently referencing the approach described in the PDF “litterick_uvm_slaves2_paper”, but I am facing difficulties in adapting it to allow seamless communication between the two passive agents while keeping the design reusable.

While I can configure the LVDS agent directly in the test using data from the SPI agent’s storage, this approach is not recommended for reuse, as it introduces dependencies on the test and makes the IP less flexible for others to use.

Could anyone share best practices or recommendations for:

  1. Sharing information between two passive responder agents?
  2. Ensuring synchronization between the SPI agent’s storage updates and the LVDS agent’s behavior?
  3. Avoiding direct configuration from the testbench to ensure the IP is reusable and self-contained?

I appreciate any suggestions, architectures, or examples of similar implementations.

Thank you!

Refernce:
649575fcbf99287ba25f20e8_litterick_uvm_slaves2_paper.pdf (3.6 MB)