What is the purpose of Automation macros in UVM, used as shown below :
class Packet extends uvm_transaction;
rand bit [7:0] da;
rand bit [7:0] sa;
rand bit [7:0] length;
rand bit [7:0] data;
rand byte fcs;
uvm_object_utils_begin(Packet)
uvm_field_int(da, UVM_ALL_ON|UVM_NOPACK)
uvm_field_int(sa, UVM_ALL_ON|UVM_NOPACK)
uvm_field_int(length, UVM_ALL_ON|UVM_NOPACK)
uvm_field_array_int(data, UVM_ALL_ON|UVM_NOPACK)
uvm_field_int(fcs, UVM_ALL_ON|UVM_NOPACK)
`uvm_object_utils_end
endclass