In reply to bharath123:
The size of your packed bytes should have given you an indication that something is wrong. You get 17 bytes. Everything is getting packed twice. This is because when you used the field automation macros, you didn’t specify UVM_NOPACK when you intended to implement your own packing scheme. If you do this, you also need to implement the do_unpack(…) function:
function void do_unpack(uvm_packer packer);
sa = packer.unpack_field_int($bits(sa));
// ...
endfunction:do_unpack