Constraint for a Square Matrix Such that Row and Column have unique Elements

Was asked this question recently in an Interview. Come up with a Constraint such that in an NXN square matrix,
row i and column i have unique elements. Has anyone solved it?

In reply to totochan1985:


module top ;
  
  class matrix ;
    rand bit [7:0] a[3][3] ;
    
    constraint c_aa {
      foreach(a[i,j]){
        a[i][j] inside {[1:20]};
      }
        foreach(a[r,c]){
          foreach(a[r1,c1]){            
            c == c1 && r != r1 ->   a[r][c] != a[r1][c1] ;
            r == r1 && c != c1 ->   a[r][c] != a[r1][c1] ;    
          
          }
        
        }
    }
    
  endclass 
            
   initial begin 
     matrix m = new ;
     m.randomize();
     $display("%p",m.a);
   end 
  
endmodule 

1 Like

In reply to kddholak:

In reply to totochan1985:


module top ;
class matrix ;
rand bit [7:0] a[3][3] ;
constraint c_aa {
foreach(a[i,j]){
a[i][j] inside {[1:20]};
}
foreach(a[r,c]){
foreach(a[r1,c1]){            
c == c1 && r != r1 ->   a[r][c] != a[r1][c1] ;
r == r1 && c != c1 ->   a[r][c] != a[r1][c1] ;    
}
}
}
endclass 
initial begin 
matrix m = new ;
m.randomize();
$display("%p",m.a);
end 
endmodule 

Can you please explain your solution?