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
-
TRUEprevents all cross hierarchy optimizations. -
SOFTprevents all cross boundary optimizations except constant propagation. -
FALSEcan 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.