Using parameterized bus width inside agents

Hi ,

My environment has a vector of agent type:
master_agent m_agent[`num_of_agents]

The data bus width defined in the interface and monitor is a parameter.
monitor code:
parameter DATA_W = 128;

if ( m_cfg.slave_bus_size > DATA_W) …

I would like to set different value for each instance of the agent. for example m_env.m_agent[0].m_monitor DATA_W to have different value than m_env.m_agent[1].m_monitor DATA_W
This problem is relevant also for the interface connecting between the agent to the DUT.

what is the recommended way to define each agent of the array with different data width?

Thanks,
Ilan

Read all three parts of this link should give you a good overview. I ended with with the later solution as class parameterisation creates very unreadable code.