quick.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

   

space.gif

   

space.gif

  ../images/main/bulllet_4dots_orange.gif Constructors

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.

   

space.gif

  • Constructors like in C++ is done with reserve word new.
  • Constructors should be function and not a task.
  • Constructors does not return values.
  • Constructors like any other function take input parameters.
  • There can be only one constrcutor per class.
   

space.gif

   

space.gif

  ../images/main/bullet_star_pink.gif Example - Constructors
   

space.gif


  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
   

space.gif

  ../images/main/bullet_star_pink.gif Simulation - Constructors
   

space.gif

 Size is 0
 Size is 5
 Size is x
   

space.gif

   

space.gif

   

space.gif

   

space.gif

space2.gif

space2.gif

space2.gif

space2.gif

space2.gif

  

Copyright © 1998-2014

Deepak Kumar Tala - All rights reserved

Do you have any Comment? mail me at:deepak@asic-world.com