|
|
SystemVerilog does not require the complex memory allocation and deallocation of C++. Construction of an object is straightforward; and garbage collection, as in Java, is implicit and automatic. There can be no memory leaks or other subtle behavior that is so often the bane of C++ programmers. |
|
|
1 `define PRINT task print (); \
2 begin \
3 $write("Size is %0d\n",this.size); \
4 end \
5 endtask
6
7 program class_t;
8 // Class with constructor, with no parameter
9 class A;
10 integer size;
11 // Constructor
12 function new ();
13 begin
14 this.size = 0;
15 end
16 endfunction
17 // Task in class (object method)
18 `PRINT
19 endclass
20 // Class with constructor, with parameter
21 class B;
22 integer size;
23 // Constructor
24 function new (integer size);
25 begin
26 this.size = size;
27 end
28 endfunction
29 // Task in class (object method)
30 `PRINT
31 endclass
32
33 // Class without constructor
34 class C;
35 integer size;
36 task set_size(integer size);
37 begin
38 this.size = size;
39 end
40 endtask
41 // Task in class (object method)
42 `PRINT
43 endclass
44
45 A a;
46 B b;
47 C c;
48
49 initial begin
50 a = new();
51 b = new(5);
52 c = new();
53 a.print();
54 b.print();
55 c.print();
56 end
57
58 endprogram
You could download file class_con.sv here
|