UVM Configuration Object Concept
To find out the functional coverage related to the Agent’s functionality, there may be a functional coverage monitor implemented as a sub-component of Agent or may not. It depends on the Testbench Architecture. The good part is – this behavior is controlled using a bit type variable named “has_functional_coverage” (meaningful name) inside a Configuration class/object that is being used for that Agent (We’ll see the application in the written UVM Configuration class code). Configuration object also plays a significant role in defining other features of the Agent & how an Agent behaves or configured with respect to certain testcase/scenario generation.
// AHB Master Configuration Class
class ahb_master_config extends uvm_object;
`uvm_object_utils(ahb_master_config)
/// Virtual Interface Declaration \\\\\\\\
virtual ahb_if ahb_vi;
/// Constructor
function new (string name = "ahb_master_config");
super.new(name);
endfunction: new
/// Different Variables Declaration
/// Agent Active or Passive ///
uvm_active_passive_enum active = UVM_ACTIVE
/// Agent Include Functional Coverage Monitor ///
bit has_functional_coverage = 0;
/// Agent Include Scoreboard ///
bit has_scoreboard = 0;
/// Address Decode For the Select Lines ///
logic[31:0