Class Assignment
Object will be created only after doing new to an class handle,
packet pkt_1; pkt_1 = new(); packet pkt_2; pkt_2 = pkt_1;
In the above piece of code,
- an object is created only for pkt_1, pkt_2 is just a handle to the packet
- pkt_1 is assigned to the pkt_2. so only one object has been created, pkt_1 and pkt_2 are two handles both are pointing to the same object
- As both the handles are pointing to the same object any changes made with respect to pkt_1 will reflect on pkt_2

Class assignment example
The below example shows an assigning the object handle to another handle and accessing class properties with it.
class packet;
//class properties
bit [31:0] addr;
bit [31:0] data;
bit write;
string pkt_type;
//constructor
function new();
addr = 32'h10;
data = 32'hFF;
write = 1;
pkt_type = "GOOD_PKT";
endfunction
//method to display class properties
function void display();
$display("---------------------------------------------------------");
$display("\t addr = %0d",addr);
$display("\t data = %0h",data);
$display("\t write = %0d",write);
$display("\t pkt_type = %0s",pkt_type);
$display("---------------------------------------------------------");
endfunction
endclass
module class_assignment;
packet pkt_1;
packet pkt_2;
initial begin
pkt_1 = new();
$display("\t**** calling pkt_1 display ****");
pkt_1.display();
//assigning pkt_1 to pkt_2
pkt_2 = pkt_1;
$display("\t**** calling pkt_2 display ****");
pkt_2.display();
//changing values with pkt_2 handle
pkt_2.addr = 32'hAB;
pkt_2.pkt_type = "BAD_PKT";
//changes made with pkt_2 handle will reflect on pkt_1
$display("\t**** calling pkt_1 display ****");
pkt_1.display();
end
endmodule
Simulator Output
****calling pkt_1 display**** --------------------------------------------------------- addr = 16 data = ff write = 1 pkt_type = GOOD_PKT --------------------------------------------------------- ****calling pkt_2 display**** --------------------------------------------------------- addr = 16 data = ff write = 1 pkt_type = GOOD_PKT --------------------------------------------------------- ****calling pkt_1 display**** --------------------------------------------------------- addr = 171 data = ff write = 1 pkt_type = BAD_PKT ---------------------------------------------------------
