In order to implement a DFX design, it is required to specify each RM as such. To
do this you must set a property on the top level of each hierarchical cell that is going
to be reconfigurable. For example, take a design where one RP named inst_count exists, and it has two RMs, count_up and count_down. The
following command must be issued prior to implementation of the first configuration.
set_property HD.RECONFIGURABLE TRUE [get_cells inst_count]
This initiates the Dynamic Function eXchange features in the software that are required to successfully implement a DFX design. The HD.RECONFIGURABLE property implies a number of underlying constraints and tasks:
- Sets
DONT_TOUCHon the specified cell and its interface nets. This prevents optimization across the boundary of the module. - Sets
EXCLUDE_PLACEMENTon the cell's Pblock. This prevents static logic from being placed in the reconfigurable region. - Sets
CONTAIN_ROUTINGon the cell's Pblock. This keeps all the routing for the RM within the bounding box. - Enables special code for DRCs, clock routing, etc.