USE_DSP - 2023.1 English

Vivado Design Suite User Guide: Synthesis (UG901)

Document ID
Release Date
2023.1 English

USE_DSP instructs the synthesis tool how to deal with synthesis arithmetic structures. By default, unless there are timing concerns or threshold limits, synthesis attempts to infer mults, mult-add, mult-sub, and mult-accumulate type structures into DSP blocks.

Adders, subtracters, and accumulators can go into these blocks also, but by default are implemented with the logic instead of with DSP blocks. The USE_DSP attribute overrides the default behavior and force these structures into DSP blocks.

Accepted values are: "logic" , "simd" , "yes" , and "no" :

  • The "logic" value is used specifically for XOR structures to go into the DSP primitives. For "logic" , this attribute can be placed on the module/architecture level only.
  • The "simd" is used to instruct the tool to put SIMD structures (Single-instruction-multiple-data) into DSPs. See the templates for examples.
  • The "yes" and "no" values instruct the tool to either put the logic into a DSP or not. These values can be placed in the RTL on signals, architecture, components, entities, and modules. The priority is:
    1. Signals
    2. Architectures and components
    3. Modules and entities

If the attribute is not specified, the default behavior is for Vivado synthesis to determine the correct behavior. This attribute can be set in the RTL or the XDC.