KEEP_HIERARCHY - 2025.2 English - UG901

Vivado Design Suite User Guide: Synthesis (UG901)

Document ID
UG901
Release Date
2025-12-05
Version
2025.2 English

By default, the Vivado synthesis tool attempts to keep the same general hierarchy specified in the RTL. The user can adjust this behavior by controlling the -flatten_hierarchy command option. Using the KEEP_HIERARCHY property on hierarchical cells offers more fine grained control of this behavior.

KEEP_HIERARCHY can be set to the following values

  • TRUE prevents all cross hierarchy optimizations.
  • SOFT prevents all cross boundary optimizations except constant propagation.
  • FALSE can assist optimizations by allowing all cross boundary optimizations

When the design allows, use SOFT instead of TRUE to improve optimization while maintaining maximum visibility in to design hierarchies for debugging purposes.

This can affect QoR and also must not be used on modules that describe the control logic of 3-state outputs and I/O buffers. KEEP_HIERARCHY can be applied at the module or architecture level or at the instance level. You can set this attribute in the RTL and in XDC. It can only be put on the instance if it is used in the XDC.