Written below code . need help in solving 2nd part of question . Can somebody help me ?
class matrix_NxN ;
rand int unsigned array[3][3]; // Lets say N=3 ;
rand int a;
rand int q_unique[$] ;
constraint range{a inside {[1:100]};}
constraint c1 { unique {array};}
constraint c2 { !(a inside {array});}
constraint c3 { unique {q_unique};}
constraint c4 { !(a inside {q_unique});}
function int prime(int a);
if(a<=1)
return 2;
for(int i=2;i<a;i++)
begin
if(a%i==0)
return 3; // 3 is one of prime number
else
prime=a;
end
endfunction
function void post_randomize();
int unsigned cnt = 0 ;
int unsigned prime_num ;
for (int k =0 ; k<30 ;k++) begin
prime_num =$urandom_range(1,100);
prime_num = prime(prime_num);
q_unique.push_back(prime_num);
end
foreach (array[i]) begin
foreach (array[,j]) begin
if ((i+j)%2 ==1) begin
array[i][j] = $urandom_range (101,200) ;
end
else begin
q_unique = q_unique.unique();
array[i][j] = q_unique.pop_front();
cnt++;
end
end
end
q_unique.delete();
endfunction
endclass
module matrix_gen ;
matrix_NxN mat_h ;
initial begin
mat_h = new();
repeat (5) begin
mat_h.randomize();
$display("Matrix = \n");
for (int i=0 ; i<3 ; i++) begin
$display("%p\n",mat_h.array[i]);
end
end
end
endmodule
Output-
Matrix =
#
# '{3, 158, 13}
#
# '{101, 31, 146}
#
# '{41, 121, 53}