# CARRY_SUM Primitive

The `CARRY_SUM`

primitive is a two-input, two-output
primitive that designates the carry-out and sum-out logic for a
function. The `cout`

port of the primitive acts as the
carry-in for the next element of the carry chain. The carry
function implements fast carry-chain logic for functions such as
adders and counters.

When you use a `CARRY_SUM`

primitive, you must
observe the following rules:

- The
`cout`

port of the`CARRY_SUM`

primitive can feed one or two cones of logic. If the`CARRY_SUM`

primitive feeds two cones of logic, then one and only one of the cones of logic must be buffered by another`CARRY_SUM`

primitive. In this case, both cones of logic are implemented in the same logic cell. You must follow this rule to tie down the sum and carry-out functions for the first stage of an adder or counter. - A cone of logic that feeds the
`cin`

port of a`CARRY_SUM`

primitive can have up to two inputs. A third input is allowed only if it is a`CARRY_SUM`

input, or a`qfeedback`

from the register. - The
`cout`

port of the`CARRY_SUM`

primitive cannot feed an`OUTPUT`

pin. - The
`cin`

port of the`CARRY_SUM`

primitive cannot be fed by an`INPUT`

pin. - The
`cout`

port of two different`CARRY_SUM`

primitives cannot feed the same gate.

You can direct the Compiler to automatically insert
`CARRY_SUM`

primitives during logic synthesis with the
Auto Carry
Chains logic option.

^{®}Prime primitive instantiation, go to Using a Quartus

^{®}Prime Logic Function.