The Vivado tool uses two specific properties to create an isolated design: HD.ISOLATED and HD.ISOLATED_EXEMPT.
The Vivado tool enables isolation of a specific function by the application of the HD.ISOLATED property on the function. This property can be set either in the XDC file or the Vivado Integrated Design Environment (IDE).
The Tcl command is:
set_property HD.ISOLATED true [get_cells <function_hierarchical_path>/<function_instance_name>]
or
set_property HD.ISOLATED 1 [get_cells <function_hierarchical_path>/<function_instance_name>]
You can also set the property in the Vivado GUI. See Adding Property HD.ISOLATED under Elaboration for setting the property via Vivado IDE.
By default, when HD.ISOLATED is enabled on a function/module, all components and routing that belong to that module are isolated. This means that unless it is communicating with another isolated module, all routing is contained within that module. This also means that all components of that module are placed in its corresponding isolated Pblock.
When the HD.ISOLATED property is set on a module, global logic instantiated within that isolated module cannot be routed globally because the module has been isolated. But, Vivado IDF allows you to instantiate global logic at any level. To support this and enable routing of the global logic, the property HD.ISOLATED_EXEMPT should be set on the global instances to override the default isolation behavior. By setting this property on the global logic instance, Vivado routes and treats it as global logic instead of isolated logic.
The format to exempt a global logic instance from isolation is:
set_property HD.ISOLATED_EXEMPT true [get_cells <function_hierarchical_path>/
<function_instance_name>]
or
set_property HD.ISOLATED_EXEMPT 1 [get_cells <function_hierarchical_path>/
<function_instance_name>]
See Guidelines for Controlling Global Clocking Logic for more information regarding the HD.ISOLATED_EXEMPT property, including an example of setting HD.ISOLATED_EXEMPT on all global logic in the design.