I have a packed fixed array of 100 elements which are of 32 bits. I need to randomise them in such a way that those 100 elements have unique values between 0 to 100. The following is my code.
I have declared a class called special, which declares a rand packed fixed array array5. I created object of this class inside module fixed size_array.
class special;
rand bit[99:0][31:0] array5;
constraint unique_array5_con {unique{array5}; foreach(array5[i]) array5[i] < 100;}
function void display();
$display("-------displaying uninitialized array5-------");
for(int i=0;i<100;i++) $display("\t array5[%0d] = %0d",i,array5[i]);
endfunction
endclass
module fixedsize_array;
//declaration of class
special sp;
initial begin
sp = new();
sp.randomize();
sp.display();
end
endmodule
The following is the output.
------displaying uninitialized array5-------
array5[0] = 89
array5[1] = 18
array5[2] = 25
array5[3] = 86
array5[4] = 82
array5[5] = 98
array5[6] = 98
array5[7] = 28
array5[8] = 40
array5[9] = 6
array5[10] = 9
array5[11] = 72
array5[12] = 91
array5[13] = 51
array5[14] = 49
array5[15] = 91
array5[16] = 36
array5[17] = 75
array5[18] = 74
array5[19] = 80
array5[20] = 30
array5[21] = 80
array5[22] = 16
array5[23] = 80
array5[24] = 66
array5[25] = 25
array5[26] = 37
array5[27] = 89
array5[28] = 5
array5[29] = 66
array5[30] = 73
array5[31] = 76
array5[32] = 39
array5[33] = 88
array5[34] = 72
array5[35] = 59
array5[36] = 90
array5[37] = 93
array5[38] = 97
array5[39] = 51
array5[40] = 65
array5[41] = 97
array5[42] = 27
array5[43] = 62
array5[44] = 89
array5[45] = 20
array5[46] = 7
array5[47] = 5
array5[48] = 74
array5[49] = 32
array5[50] = 89
array5[51] = 91
array5[52] = 11
array5[53] = 66
array5[54] = 61
array5[55] = 52
array5[56] = 6
array5[57] = 56
array5[58] = 55
array5[59] = 27
array5[60] = 90
array5[61] = 92
array5[62] = 63
array5[63] = 70
array5[64] = 50
array5[65] = 57
array5[66] = 35
array5[67] = 74
array5[68] = 45
array5[69] = 39
array5[70] = 70
array5[71] = 88
array5[72] = 35
array5[73] = 8
array5[74] = 30
array5[75] = 47
array5[76] = 41
array5[77] = 53
array5[78] = 36
array5[79] = 63
array5[80] = 90
array5[81] = 46
array5[82] = 25
array5[83] = 87
array5[84] = 85
array5[85] = 65
array5[86] = 49
array5[87] = 69
array5[88] = 88
array5[89] = 21
array5[90] = 40
array5[91] = 9
array5[92] = 4
array5[93] = 38
array5[94] = 32
array5[95] = 57
array5[96] = 31
array5[97] = 76
array5[98] = 26
array5[99] = 96
From the log I observe that array5[5] and array5[6] are having the same value which is 98.
Even though I have written a constraint which has unique{array5}, I still see this issue.