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
logicvalue is used specifically for XOR structures to go into the DSP primitives. Forlogic, you can place the attribute on the module/architecture level only. - The
simdinstructs the tool to put SIMD structures (Single-instruction-multiple-data) into DSPs. See the templates for examples. - The
yesandnovalues instruct the tool to either put the logic into a DSP or not. You can place these values in the RTL on signals, architecture, components, entities, and modules. The priority is:- Signals
- Architectures and components
- Modules and entities
If the attribute is not specified, the default behavior is for Vivado synthesis determines the correct behavior if the attribute is not specified. You can set this attribute in RTL or XDC.