I'm trying to set LOC constraint while specified in verilog code (via verilog attribute). Previous research on the internet gave reasons to think that this sort of construction should work:
///////////////////////////////////////////////////////////////// code begins
module wrapper(in, out);
input in;
output out;
(* BEL="A6LUT", LOC="SLICE_X4Y4") INVERT inverter_instance1(in, out);
endmodule
module INVERT(in, out);
input in;
output out;
assign out = !in;
endmodule
///////////////////////////////////////////////////////////////// code ends
Yet when implemented, Vivado just ignores that attribute syntax and implements the LUT into slice X0Y1 by default. Any thoughts on what's going on here?
(*)
(* BEL="A6LUT", LOC="SLICE_X4Y4" *) INVERT inverter_instance1(in, out);
\$\endgroup\$