# Carry-select adder

Part of a series on :
Arithmetic logic circuits :
Quick navigation :
Theory
Binary number
Boolean algebra
Logic gate
Ones' complement number
Two's complement number
Signed number representations :
Components
Adder (+)
Adder
Half adder
Full adder
Ripple-carry adder
Carry-lookahead adder
Brent–Kung adder
Kogge–Stone adder
Ling adder
Carry-save adder
Carry-select adder
Carry-skip adder
Adder–subtractor (±)
Adder–subtractor
Subtractor (−)
Subtractor
Full subtractor
Half subtractor
Multiplier (×)
Binary multiplier
Multiplication algorithm
Booth's multiplication algorithm
Wallace tree
Dadda multiplier
Divider (÷)
Binary Divider
Division algorithm
Bitwise ops
Bitwise operation
NOT
AND
OR
XOR
Bit shifts
Bit manipulation
See also
Kochanski multiplication (exponentiation)
Multiply–accumulate operation :
Categories
Category:Binary arithmetic
Category:Computer arithmetic :
See also
FPU
GPU
AGU
Mechanical calculator :
vte :
In electronics, a carry-select adder is a particular way to implement an adder, which is a logic element that computes the $(n+1)$-bit sum of two $n$-bit numbers. The carry-select adder is simple but rather fast, having a gate level depth of $O({\sqrt {n}})$.

## Construction

The carry-select adder generally consists of ripple-carry adders and a multiplexer. Adding two n-bit numbers with a carry-select adder is done with two adders (therefore two ripple-carry adders), in order to perform the calculation twice, one time with the assumption of the carry-in being zero and the other assuming it will be one. After the two results are calculated, the correct sum, as well as the correct carry-out, is then selected with the multiplexer once the correct carry-in is known.
The number of bits in each carry select block can be uniform, or variable. The optimal delay occurs when variable size of the blocks is applied $\lfloor {\sqrt {n}}\rfloor$. When variable, the block size should have a delay, from addition inputs A and B to the carry out, equal to that of the multiplexer chain leading into it, so that the carry out is calculated just in time. The $O({\sqrt {n}})$ delay is derived from uniform sizing, where the ideal number of full-adder elements per block is equal to the square root of the number of bits being added, since that will yield an equal number of MUX delays.

### Basic building block

Above is the basic building block of a carry-select adder, where the block size is 4. Two 4-bit ripple-carry adders are multiplexed together, where the resulting carry and sum bits are selected by the carry-in. Since one ripple-carry adder assumes a carry-in of 0, and the other assumes a carry-in of 1, selecting which adder had the correct assumption via the actual carry-in yields the desired result.

### Uniform-sized adder

A 16-bit carry-select adder with a uniform block size of 4 can be created with three of these blocks and a 4-bit ripple-carry adder. Since carry-in is known at the beginning of computation, a carry select block is not needed for the first four bits. The delay of this adder will be four full adder delays, plus three MUX delays.

### Variable-sized adder

A 16-bit carry-select adder with variable size can be similarly created. Here we show an adder with block sizes of 2-2-3-4-5, this is the special type of Variable-sized carry select adder, called as square root carry select adder. This break-up is ideal when the full-adder delay is equal to the MUX delay, which is unlikely. The total delay is two full adder delays, and four mux delays. We try to make the delay through the two carry chains and the delay of the previous stage carry equal.

### Conditional sum adder

A conditional sum adder is a recursive structure based on the carry-select adder. In the conditional sum adder, the MUX level chooses between two n/2-bit inputs that are themselves built as conditional-sum adder. The bottom level of the tree consists of pairs of 2-bit adders (1 half adder and 3 full adders) plus 2 single-bit multiplexers.
The conditional sum adder suffers from a very large fan-out of the intermediate carry outputs. The fan out can be as high as n/2 on the last level, where $c_{n/2-1}$ drives all multiplexers from $s_{n/2}$ to $s_{n-1}$.

## Combining with other adder structures

The carry-select adder design can be complemented with a carry-lookahead adder structure to generate the MUX inputs, thus gaining even greater performance as a parallel prefix adder while potentially reducing area.
An example is shown in the Kogge–Stone adder article.