Custom Attribute Support in Vivado - 2025.2 English - UG901

Vivado Design Suite User Guide: Synthesis (UG901)

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

Vivado synthesis supports the use of custom attributes in RTL. Behavior synthesis of a custom attribute is unknown. Other tools downstream of the synthesis process often use custom attributes.

CAUTION:
When Vivado synthesis encounters unknown attributes, it attempts to forward them to the synthesis output netlist, but you need to understand the risk. A custom attribute does not prevent the synthesis tool from performing optimizations. If the synthesis tool can optimize an item that has a custom attribute, it performs the optimization and discards the attribute.

If you need custom attributes to go through synthesis, only use the DONT_TOUCH or KEEP_HIERARCHY attributes to prevent synthesis from optimizing objects that need the attributes.

There are two types of objects that can have custom attributes: hierarchies and signals.

When you use custom attributes on hierarchy levels, set -flatten_hierarchy to none or place a KEEP_HIERARCHY on that level. By default, the synthesis tool flattens the design, optimizes it, and rebuilds it.

The synthesis tool loses the custom attribute on the hierarchy when it flattens the design.