How do I instruct the Vivado tools to place registers into IOBs?
There used to be a -pr switch in MAP of ISE to control this, but I cannot find anything on it in the Vivado tool.
Both ISE and Vivado tools support the IOB property to direct a FF to be placed in IOB (actually ILOGIC or OLOGIC) site.
In ISE, the Map application also supported the -pr (pack registers) switch, but it did not take precedence over IOB properties, so it only had an effect on FFs that had no IOB property assigned. Vivado has no option comparable to the -pr switch, so it is necessary to use IOB properties to control IOB register usage.
You can use IOB constraint on registers:
set_property IOB true [get_cells <registers_name_pattern>]
Beginning in 2013.1, you can use IOB contraint on ports:
set_property IOB true [get_ports <ports_name_pattern>]
For the IOB register pack to be successful, the following conditions need to be met: