I need to create an agent that sends packets on 3 different interfaces. The packet needs to be translated for 3 different interfaces/protocols.
Since the packet logic is the same for all 3 interfaces, and only the protocol translation is different, I would like to encapsulate everything into one agent.
However, I saw in the UVM guide that there can only be one UVC/agent per interface.
Also, it mentions the concept of protocol layering, but in the UVM guide the example uses only one lower-level layer (physical layer of the protocol) and multiple higher-level layers. I need one higher-level layer of the packet that will be sent, and multiple low-level layers that will get the packet, will translate it to the specific protocol, and then send it to the DUT.
I also looked the following two sessions related to the layered protocols, but again, there is no mention of using it with multiple protocols, just multiple layers of the same protocol:
Layering Sequences
Layered Sequences
Also in the UVM guide(link), under chapter 6.5.2. 1. Introduction to layering it is mentioned that there are many ways in which the transactions from one layer can correspond to transactions from other layers: “One-to-many — One higher-layer transaction is broken into many lower-layer transactions.” this however I am not sure if it implies the usage of multiple physical layers(multiple protocols) that are connected to the DUT. And I could not find an example with this.
Can I connect 1 agent to 3 different interfaces/protocols?
Can the agent choose randomly and dynamically during simulation, on which interface to send the packet?