Dynamic Casting in System Verilog - EDA Playground
Warning! This exercise has been opened in another tab; autosave has been disabled. Close this tab or refresh to reactivate.

 Languages & Libraries

 Tools & Simulators

 Examples

206


64
 
1
//--------------------------------------------------------------------------
2
//                           Dynamic Casting
3
//                           www.24x7fpga.com
4
//--------------------------------------------------------------------------
5
// Parent class
6
class parent_class;
7
   // class properties or variables
8
  int a, b, s;
9
  
10
11
   // task method
12
  task func ( );                 
13
    s = a + b;
14
    disp();
15
  endtask
16
  
17
  function void disp( );                 
18
    $display("Parent Class => a = %0d , b = %0d, sum s = %0d", a, b, s);
19
  endfunction
20
21
22
endclass
23
24
// Child Class
25
class child_class extends parent_class;
26
  // class properties or variables
27
  int m;
28
  
29
  // task method
30
  task func ( );
31
    m = a * b;
32
    disp();
33
  endtask
34
  
35
  function void disp( );
36
    $display("Child Class  => a = %0d , b = %0d, mul m = %0d", a, b, m);
37
  endfunction
38
  
39
endclass
40
41
module tb_dynamic_cast;
42
  
43
  parent_class pr_obj;          // declare a handle for parent class
44
  child_class cl_obj;           // declare a handle for child class
45
  
46
  child_class cl_obj_2;         // declare another handle for child class
47
  
48
   initial begin 
49
     cl_obj = new( );           // construct an object
50
      
51
     pr_obj = cl_obj;           
52
     $cast(cl_obj_2, pr_obj);   // DYNAMIC CASTING
53
                                // parent class assigned to child class
54
     
55
     pr_obj.a = 20;             
56
     cl_obj.b = 15;
57
     
58
     
59
     $display("------------ Dynamic Casting ------------");
60
     cl_obj_2.func();           // access a method 
61
     
62
   end
63
64
endmodule
xxxxxxxxxx
1
 
1
// Code your design here
2
4 views and 0 likes     
 
Example for dynamic casting in SystemVerilog.

Example for dynamic casting in SystemVerilog.

160:0