Custom Attribute Support in Vivado - 2024.1 English

Vivado Design Suite User Guide: Synthesis (UG901)

Document ID
Release Date
2024.1 English

Vivado synthesis supports the use of custom attributes in RTL. Behavior synthesis of a custom attribute is unknown. Often, custom attributes are intended for use in other tools downstream from the synthesis process.

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 stop synthesis optimizations from occurring, which means that if synthesis can optimize an item with a custom attribute, it does so, and the attribute is lost.

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

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

When using custom attributes on hierarchies, the -flatten_hierarchy switch must be set to none or a KEEP_HIERARCHY placed on that level, because synthesis, by default, flattens the design, optimizes the design, and rebuilds the design.

After a design is first flattened, the custom attribute on the hierarchy is lost.