2025-03-19 16:54:21 +08:00

82 lines
2.4 KiB
Systemverilog

//===========================================================================
// Organization : Individual developer
// Filename : tb.sv
// Author : Feng Bohan
// Create Time : 11:26:47 2025-03-18
// Last Modified: 11:27:17 2025-03-18
// Abstract :
//--------------------------------------------------------------------------
// Description:
//
//--------------------------------------------------------------------------
// Modification History:
//--------------------------------------------------------------------------
// Rev Date Who Description
// --- ---- --- -----------
// 0.0.01 2025-03-18 Feng Bohan initial version
//===========================================================================
module tb();
class BasePacket;
int A; // 1;
int B; // 2;
int C; // 3;
function new(int A=1, int B=2, int C=3);
this.A=A;
this.B=B;
this.C=C;
endfunction
virtual function void printA;
$display("[%m] A is %0d", A);
endfunction
virtual function void printB;
$display("[%m] B is %0d", B);
endfunction : printB
function void printC;
$display("[%m] C is %0d", C);
endfunction : printC
endclass : BasePacket
class My_Packet extends BasePacket;
int A; // 4
int B; // 5
int C; // 6
function new(int A=4, int B=5, int C=6);
this.A=A;
this.B=B;
this.C=C;
endfunction
/* -----\/----- EXCLUDED -----\/-----
virtual function void printA;
$display("A is %0d", A);
endfunction
-----/\----- EXCLUDED -----/\----- */
virtual function void printB;
$display("[%m] B is %0d", B);
endfunction : printB
function void printC;
$display("[%m] C is %0d", C);
endfunction : printC
endclass : My_Packet
initial begin
BasePacket P1;
My_Packet P2 = new;
P1 = P2; // P1 has a handle to a My_packet object
$display("//******************** P1.print ********************");
P1.printA;
P1.printB;
P1.printC;
$display("//**************************************************");
$display("//******************** P2.print ********************");
P2.printA;
P2.printB;
P2.printC;
$display("//**************************************************");
end
endmodule // tb