Custom Attribute Support in Vivado - 2023.1 English

Vivado Design Suite User Guide: Synthesis (UG901)

Document ID
UG901
Release Date
2023-06-09
Version
2023.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.

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 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.