Systemverilog Fixedsize Array

 ARRAY 

        An array is a collection of variables, all of the same type, and accessed using the same name plus one or more indices. there are different types of arrays, few array declaration examples are given below.    

         int array1 [6];                   //fixed size single dimension array
         int array2 [5:0];                //fixed size single dimension array
         int array3 [3:0][2:0];         //fixed size multi dimension array
         bit [7:0] array4 [2:0];        //unpacked array declaration
         bit [2:0][7:0] array5        //packed array declaration
         bit [2:0][7:0] array6 [3];    //mixed packed and unpacked array

    in systemverilog vector width/dimensions declared before the object name  is referred as packed array and array size/dimensions declared after the object name is referred as unpacked array
    A packed array is a mechanism for subdividing a vector into sub-fields which can be conveniently accessed as array elements.


     Fixed size array 

    In fixed size array, array size will be constant throughout the simulation,Once the array is declared no need to create it.By default array will be initialized with value ‘0’.

    single dimensional array:
            int array1 [6];                   //Compact declaration        
            int array2 [5:0];                // Verbose declaration  

    Multidimensional array:           
            int array3 [3:0][2:0];        

         array assignment,
           array1     =  '{0,1,2,3,4,5};
           array2     =  '{0,1,2,3,4,5};
           array3     =  '{ '{0,1,2,3},'{4,5,6,7},'{8,9,10,11}};


     Example-1 : Fixed Size Array 


         This example shows array declaration and array manipulation using for and foreach loop.

    module fixedsize_array;
      //declaration of array’s
      int array1[6];               //single dimension array
      int array2[5:0];             //single dimension array
      int array3[2:0][3:0];        //multi dimension array
      int array4[4:0];
    
      initial begin
        //array initialization
        array1 = '{0,1,2,3,4,5};
        array2 = '{0,1,2,3,4,5};
        array3 = '{'{0,1,2,3},'{4,5,6,7},'{8,9,10,11}};
    
        //displaying array elements
        $display("-------displaying array1-------");
        foreach(array1[i]) $display("\t array1[%0d] = %0d",i,array1[i]);
    
        $display("-------displaying array2-------");
        for(int i=0;i<6;i++) $display("\t array2[%0d] = %0d",i,array2[i]);
    
        $display("-------displaying array3-------");
        foreach(array3[i,j]) $display("\t array3[%0d][%0d] = %0d",i,j,array3[i][j]);
    
        $display("-------displaying uninitialized array4-------");
        for(int i=0;i<5;i++) $display("\t array4[%0d] = %0d",i,array4[i]);
      end
    endmodule



     Simulator Output  

    -------displaying array1-------
    array1[0] = 0
    array1[1] = 1
    array1[2] = 2
    array1[3] = 3
    array1[4] = 4
    array1[5] = 5
    -------displaying array2-------
    array2[0] = 5
    array2[1] = 4
    array2[2] = 3
    array2[3] = 2
    array2[4] = 1
    array2[5] = 0
    -------displaying array3-------
    array3[2][3] = 0
    array3[2][2] = 1
    array3[2][1] = 2
    array3[2][0] = 3
    array3[1][3] = 4
    array3[1][2] = 5
    array3[1][1] = 6
    array3[1][0] = 7
    array3[0][3] = 8
    array3[0][2] = 9
    array3[0][1] = 10
    array3[0][0] = 11
    -------displaying uninitialized array4-------
    array4[0] = 0
    array4[1] = 0
    array4[2] = 0
    array4[3] = 0
    array4[4] = 0

    Execute the above code on