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_TOUCH
on the specified cell and its interface nets. This prevents optimization across the boundary of the module. - Sets
EXCLUDE_PLACEMENT
on the cell's Pblock. This prevents static logic from being placed in the reconfigurable region. - Sets
CONTAIN_ROUTING
on the cell's Pblock. This keeps all the routing for the RM within the bounding box. - Enables special code for DRCs, clock routing, etc.