# Adaptive Logic Module (ALM) Definition

The Adaptive Logic Module (ALM) is the basic building block of supported
device families (
Arria^{®} series,
Cyclone^{®} V,
Stratix^{®} IV, and
Stratix^{®} V) and is designed to maximize performance and resource
usage. Each ALM can support up to eight inputs and eight outputs, contains two or
four
register logic cells (`lc_ff`

) and two combinational logic
cells (`lc_comb`

), two dedicated full adders, a carry chain,
a register chain, and a 64-bit LUT mask. In
Stratix^{®} IV,
and
Stratix^{®} V family devices, you can implement the two
combinational logic cells (`mp_comb`

) as register,
combinational, or MLAB logic cells. In
Arria^{®} V,
Cyclone^{®} V, and
Stratix^{®} V family
devices, you can implement the two combinational logic cells (`mp_comb`

) as combinational, or MLAB logic cells

Each LAB in
Arria^{®} V ,
Cyclone^{®} V ,
Stratix^{®} IV, and
Stratix^{®} V family devices contains ten ALMs. Each ALM drives
the local, row, column, carry chain, register chain, and direct link interconnects.

You can implement the following types of functions in a single ALM:

- Two independent 4-input functions
- An independent 5-input function and an independent 3-input function
- A 5-input function and a 4-input function, if they share one input
- Two 5-input functions, if they share two inputs
- An independent 6-input function
- Two 6-input functions, if they share four inputs and share function
- Some 7-input functions

The ALM operates in adaptive combinational logic mode (normal mode), extended LUT mode (7-input function mode), arithmetic mode, and shared arithmetic mode.