Hi All,
I Have a requirement in UVM like this, I wanted to connect Agent1 to Agent3 and Agent2 to Agent 3 and I will use the Agent 3 for scoreboard connection, How can I connect the Agent1 and Agent2 to Agent3 ??? Does any one have idea.
I thought like a plain port to port connection is possible between the Agents, But How the same port on Agent3 can accept the data from Agent1 and Agent2 ?
We’ll need more information. What do you envision each agent doing? Usually, an agent includes the driver/monitor/sequencer/coverage for a particular protocol. It executes one or more sequences to cause traffic on the bus (via a virtual interface) and usually includes an analysis_port to connect to a scoreboard.
It sounds like what you really want is to execute multiple sequences on an agent and connect its analysis_port to your scoreboard, but that’s just a guess.
We’ll need more information. What do you envision each agent doing? Usually, an agent includes the driver/monitor/sequencer/coverage for a particular protocol. It executes one or more sequences to cause traffic on the bus (via a virtual interface) and usually includes an analysis_port to connect to a scoreboard.
It sounds like what you really want is to execute multiple sequences on an agent and connect its analysis_port to your scoreboard, but that’s just a guess.
Thanks fitz for very quick response, To put down the question more clear,My RTL is something is like this,My IP has an AHB Interface communicating with DMA and also for Register Read Write on One side,On the Other side IP specific Interface.TB Side, I took three instances of AHB QVIP,One Instance for DMA Communication, Second Instance for register Read write, The third instance for Passive agent to push the transactions to the Scoreboard, So wanted to connect the two Active agents to the passive agent such that Passive agent will monitor the transactions and write the transactions to the scoreboard for comparison,Hope it is clear, Thanks
Note : I implemented in this way instead of taking a separate monitors connections from the two different agents to the scoreboard.
Your description of the DUT is not clear to me. Can you state what the interfaces are (what’s the protocol and are they master or slave)? It sounds like there are (3) separate interfaces:
(1) AHB for DMA (from the DUTs perspective, is this Master or Slave)?
(1) AHB for register accesses (is this a slave interface on the DUT for configuration?)
(1) IP specific interface
In reply to ravichandrareddyp:
Your description of the DUT is not clear to me. Can you state what the interfaces are (what’s the protocol and are they master or slave)? It sounds like there are (3) separate interfaces:
(1) AHB for DMA (from the DUTs perspective, is this Master or Slave)?
(1) AHB for register accesses (is this a slave interface on the DUT for configuration?)
(1) IP specific interface
Hi serfer,
1) AHB for DMA in DUT perspective can act as Master
2) AHB for Register Access is also a Master Configuration.
3)IP Specific Interface, On the other side.
I was trying to upload an picture but couldn’t found out a way to upload a picture in the reply window.
In reply to ravichandrareddyp:
Hi,
One possible solution I think of is to use macro as mentioned below, uvm_analysis_imp_decl(_agent1_tran) uvm_analysis_imp_decl(_agent2_tran)
class agent3 extends uvm_agent;
…
/* analysis import for received Agent1 transaction /
uvm_analysis_imp_agent1_tran #(A1_TRAN,agent3 ) agnt1_export;
/ analysis import for received Agent2 transaction */
uvm_analysis_imp_agent2_tran #(A2_TRAN,agent3 ) agnt2_export;
…
…
function new(string name=“”, uvm_component parent=null);
super.new(name, parent);
agnt1_export=new(“agnt1_export”,this);
agnt2_export=new(“agnt2_export”,this);
endfunction: new
function write_agent1_tran(A1_TRAN);
//Transaction received from Agent1
endfunction
function write_agent2_tran(A2_TRAN);
//Transaction received from Agent2
endfunction
endclass
Provide connection of Agent1 and Agent2 ports with declared analysis_imports of Agent3.
Hi Digvijay,
Thanks for the reply, I had this Idea, But I can’t do this since AHB which we are using is a QVIP.
I implemented a portion of the code in my environment file, I took the configuration of AHB QVIP and configured the AHB master while driving and Slave for listening the transactions and pushing to the Scoreboard, This got simulated,Need to develop the scoreboard comparison logic and analyze the results, Thanks
For me it is not clear why you are asking for so many agents. If I understand your description correctly you need only 1 agent which is driving your AHB DMA transfer. The testbench is the namaster and the QVIP acts as slave. Through this interface you are performing any DMA access, i.e. writing/reading to/from regsiters in the DUT. The data compare you can implement directly in the sequence without having a scoreboard. Make your UVM environment always as simple as possible.