Hi,
In many places in the academy I have seen uvm/ovm agent code like below.
function void build();
…
if (cfg.is_active) begin
sqr=sequencer_t::type_id::create(“sqr”,this);
drv=driver_t::type_id::create(“drv”,this);
end
mon=monitor_t::type_id::create(“mon”,this);
…
endfunction
Now lets assume that the agent is a master agent and lets say we declare the agent as not active so that only monitor component in the agent is created (driver and sequencer components are not created).
As the sequencer and driver components are not created nothing is driving the pins of the interface. This means there there is no activity in the interface. Then why there should be a monitor created at all?
Any kind of clarification is appreciated.
Thanks,
Sunil.
No, passive does not mean there is no activity in the interface. It means the agent goes not generate any activity. The DUT, or some other part of the testbench will generate the activity. This usually happens when you move from a block level test where the interface is at the edge of your block, to a larger unit or system level test and the interface is now internal to the DUT.
In reply to KumarSunilB:
Hi Dave,
Can I have simple example which gives explanation for Active and Passive Agent configuration?
Can you please throw some more light on “This usually happens when you move from a block level test where the interface is at the edge of your block, to a larger unit or system level test and the interface is now internal to the DUT.”?
Regards,
Vishal
In reply to vishalkewlani:
Hi Vishal
In the stand-alone test bench (or called block level in some places), the UVM agent’s driver wiggles the interface hence it is active. But in the system level test, the interface in the block level most likely is driven by rtl since it will be connected to some other module. In that case, you simple set the is_active to “PASSIVE” so driver will not be active.
BTW, I said most likely because, in the system level environment, external interfaces such as i2c or pcie will need a driver to drive to drive that interface, so in that case, agent is active agent…
Regards