Hello! Look at the code below:
class packet;
rand bit [7:0] array[][];
rand int i,j;
rand int r,c;
randc int size_i;
randc int size_j;
constraint unique_elements {
foreach (array[i,j]) {
foreach (array[r,c]) {
(!(r == i && c == j)) -> !(array[r][c] == array [i][j]);
}
}
}
constraint rand_size {
foreach (array [i,j]) {
array.size [i] == size_i;
array.size [j] == size_j;
}
}
constraint size_const {size_i < 10; size_j < 10; size_i != size_j; size_i != 0; size_j != 0;}
function void display();
for (int i = 0; i < size_i; i++)
begin
$display("\n\n");
for (int j = 0; j < size_j; j++)
begin
$display("\narray [%0d][%0d] \t=\t %0d",i,j,array[i][j]);
end
end
endfunction
endclass
module unique_elements;
initial
begin
packet pkt=new();
pkt.randomize;
pkt.display();
end
endmodule
I’m trying to randomize and display unique elements in a 2d array w/o using unique keyword. There are no syntax errors and I receive no output.
Please help. Thanks!