|  | import uvm_pkg::*;
/* Configuration object to configure the environment of Test Bench. 
   Configurable fields:
    1. intf: Virtual Interface for the agents
    2. active: To set the agent as active or passive */
class env_config#(parameter A_WIDTH = 16, D_WIDTH = 16) extends uvm_object;
    `uvm_object_utils(env_config)
    
    // variables
    virtual axi_intf#(.D_WIDTH(D_WIDTH), .A_WIDTH(A_WIDTH)) intf;
    // Master and Slave are active or passive
    uvm_active_passive_enum active = UVM_ACTIVE;
    function new(string name = "env_config");
        super.new(name);
    endfunction //new()
endclass //env_config extends uvm_object
// Configuration object which configures the sequence item generation
class test_config extends uvm_object;
    `uvm_object_utils(test_config)
    
    // Vartiables
    int no_write_cases  = 2;
    int no_read_cases   = 2;
    // Set whether to produce aligned address or unalinged address
    // -1: produce both aligned and unaligned randomly
    //  0: produce unaligned adresses for all bursts
    //  1: produce alligned adress for all bursts
    byte isAligned = -1;
    // Set the specific burst type for a test
    // -1: produce all the burst type randomly
    //  0: produce fixed bursts
    //  1: produce incr bursts
    //  2: produce wrap bursts
    byte burst_type = -1;
    function new(string name = "test_config");
        super.new(name);
    endfunction //new()
endclass //test_config extends uvm_object
 |