# 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.

Note: For information about Intel

^{®}Quartus^{®}Prime primitive instantiation, go to Using a Intel^{®}Quartus^{®}Prime Logic Function.