Professional Documents
Culture Documents
Four Queen Problem Constraints 1717655375
Four Queen Problem Constraints 1717655375
// Helper fields
rand bit rows[n][n];
rand bit cols[n][n];
rand bit main_diags[2*n - 1][];
rand bit anti_diags[2*n - 1][];
constraint create_rows {
foreach (rows[i, j])
rows[i][j] == board[i][j];
}
constraint create_cols {
foreach (cols[i, j])
cols[i][j] == board[j][i];
}
constraint create_main_diags {
foreach (main_diags[i,j])
if (i < n)
main_diags[i][j] == board[j][(n - 1) - i + j];
else
main_diags[i][j] == board[i - (n - 1) + j][j];
}
constraint create_anti_diags {
foreach (anti_diags[i,j])
foreach (anti_diags[i])
anti_diags[i] = new[get_len_of_diag(i)];
endfunction
//---------------------------------------------------------
-------------------
// Constraints to solve the puzzle
//---------------------------------------------------------
-------------------
constraint singular_on_row {
foreach (rows[i])
rows[i].sum() with ( int'(item) ) == 1;
}
constraint singular_on_col {
foreach (cols[i])
cols[i].sum() with ( int'(item) ) == 1;
}
constraint singular_on_main_diag {
foreach (main_diags[i])
main_diags[i].sum() with ( int'(item) ) inside {0, 1};
}
constraint singular_on_anti_diag {
foreach (anti_diags[i])
anti_diags[i].sum() with ( int'(item) ) inside {0, 1};
}
module m();
four_queen_problem_solution f1;
initial
begin
f1 = new();
if( f1.randomize() )
begin
f1.print();
end
else
begin
$display($time,"\t : Solution Not found");
end
end
endmodule