CARRY_REMAP - 2023.2 English

Vivado Design Suite Properties Reference Guide (UG912)

Document ID
Release Date
2023.2 English

The opt_design -carry_remap option lets you remap single CARRY* cells into LUTs to improve the routing results of the design. When using the -carry_remap option, only single-stage carry chains are converted to LUTs. The CARRY_REMAP property lets you specify carry chains of greater length to be converted during optimization.

You can control the conversion of individual carry chains of any length by using the CARRY_REMAP cell property. The CARRY_REMAP property value is an integer that specifies the maximum carry chain length to be mapped to LUTs. The CARRY_REMAP property is applied to CARRY* primitives within a chain, and each cell must have the same value to be converted to LUTs during optimization.

Important: Each CARRY cell in a carry chain must have the same CARRY_REMAP value. If at least one of the cascaded cells cannot be remapped due to presence of the DONT_TOUCH property, then the entire chain cannot be remapped. A warning will be issued when this occurs.

Refer to the Vivado Design Suite User Guide: Synthesis (UG901) for more information on optimization.

Architecture Support

All architectures.

Applicable Objects

CARRY Cells (get_cells)


<VALUE>: Specify an integer value that indicates the length of the carry chain that can be converted to LUTs during opt_design.

  • CARRY_REMAP=0: Do not remap.
  • CARRY_REMAP=1: Remap single CARRY cells that are not part of a carry chain.
  • CARRY_REMAP=2: Remap carry chain with length of 2 or less.


VHDL Syntax

Not applicable

Verilog Syntax

Not applicable

XDC Syntax
set_property CARRY_REMAP <value> <objects>

XDC Syntax Example:

The following assigns a CARRY_REMAP property to all CARRY8 primitives:

set_property CARRY_REMAP 2 [get_cells -hier -filter {ref_name == CARRY8}]

Affected Steps

  • Logic Optimization (Opt Design)