|HOME |ABOUT |ARTICLES |ACK |FEEDBACK |TOC |LINKS |BLOG |JOBS |


Tutorials



CONSTANT


SystemVerilog adds another form of a local constant, const. A const form of constant differs from a localparam constant in that the localparam must be set during elaboration, whereas a const can be set during simulation, such as in an automatic task.


Constant Class

An instance of a class (an object handle) can also be declared with the const keyword.


EXAMPLE
      const class_name object = new(3,3,4);



In other words, the object acts like a variable that cannot be written. The arguments to the new method must be constant expressions. The members of the object can be written (except for those members that are declared const).


Global Constant

Global constant class properties include an initial value as part of their declaration. They are similar to other const variables in that they cannot be assigned a value anywhere other than in the declaration.


EXAMPLE
    class Jumbo_Packet;
        const int max_size = 9 * 1024; // global constant
        byte payload [];

        function new( int size );
             payload = new[ size > max_size ? max_size : size ];
        endfunction
    endclass

EXAMPLE: error : chaning const varible
    class A ;
        const int i = 10;
    endclass
    
    program main ;
         A my_a;
        
         initial
         begin
             my_a = new();
             my_a.i = 55;
         end
    endprogram

RESULT

Error : Variable 'i' declared as 'const' .


Instance Constants

Instance constants do not include an initial value in their declaration, only the const qualifier. This type of constant can be assigned a value at run time, but the assignment can only be done once in the corresponding class constructor not from outside or any other method.


EXAMPLE
     class A ;
         const int i;

         function new();
             i = 20;
         endfunction
     endclass
    
     program main ;
         A my_a;
        
         initial
         begin
             my_a = new();
             $display(my_a.i);
         end
     endprogram

RESULT

20


EXAMPLE: error : assignment done twice
    class A ;
        const int i;
    
        function new();
            i = 20;
            i++;
        endfunction
    endclass
    
RESULT

Instance constants assignment can only be done once


EXAMPLE: error : assignment in other method
    class A ;
        const int i;

        task set();
           i = 20;
        endtask
    endclass

RESULT

Instance constants assignment allowed only in class constructor.



Typically, global constants are also declared static because they are the same for all instances of the class. However, an instance constant cannot be declared static because that would disallow all assignments in the constructor



Index
Introduction
Class
Object
This
Inheritance
Encapsulation
Polymorphism
Abstract Classes
Parameterised Class
Nested Classes
Constant
Static
Casting
Copy
Scope Resolution Operator
Null
External Declaration
Classes And Structures
Typedef Class
Pure
Other Oops Features
Misc

Report a Bug or Comment on This section - Your input is what keeps Testbench.in improving with time!





<< PREVIOUS PAGE

TOP

NEXT PAGE >>

copyright © 2007-2017 :: all rights reserved www.testbench.in::Disclaimer