Design and Explain a 4-Bit Carry-Lookahead Adder (CLA)

Design and Explain a 4-Bit Carry-Lookahead Adder (CLA)

Verified Sources
Nov 4, 2026

A carry-lookahead adder (CLA) speeds up addition by reducing the time to determine carries. Instead of waiting for each carry to ripple through bit positions, a CLA computes carries from generate and propagate terms using combinational logic. The core idea is:

  • gi=aibig_i = a_i b_i
  • pi=ai⊕bip_i = a_i \oplus b_i
  • Carries are expressed as functions of c0c_0 and the gg/pp terms.

This approach forms the standard carry lookahead structure used in multi-bit adders.

Key terms for this course section:

  • generate
  • propagate
  • carry-in
  • carry-out
  • critical path

Carry Lookahead Adder (CLA) explanation

4-bit CLA design goal

Design a 4-bit combinational circuit that:

  1. Computes p0..p3p_0..p_3 and g0..g3g_0..g_3.
  2. Computes internal carries c1..c4c_1..c_4 in parallel from c0c_0.
  3. Computes sums s0..s3s_0..s_3.

We will use the standard CLA recurrence to derive each carry: ci+1=gi+picic_{i+1} = g_i + p_i c_i

Then expand recursively so that each cic_{i} becomes a Boolean expression in terms of c0c_0 and the gg/pp signals.

Step-by-step: Derive carry equations for a 4-bit CLA

  1. 1
    Step 1

    Let gi=aibig_i = a_i b_i and pi=ai⊕bip_i = a_i \oplus b_i for i∈{0,1,2,3}i\in\{0,1,2,3\}. Also let the input carry be c0c_0 and output carry be c4c_4.

  2. 2
    Step 2

    Use ci+1=gi+picic_{i+1} = g_i + p_i c_i where ++ is OR and juxtaposition means AND.

  3. 3
    Step 3

    From c1=g0+p0c0c_1 = g_0 + p_0 c_0.

  4. 4
    Step 4

    Substitute c1c_1 into c2=g1+p1c1c_2 = g_1 + p_1 c_1: c2=g1+p1(g0+p0c0)=g1+p1g0+p1p0c0c_2 = g_1 + p_1(g_0 + p_0 c_0)= g_1 + p_1 g_0 + p_1 p_0 c_0

  5. 5
    Step 5

    Substitute c2c_2 into c3=g2+p2c2c_3 = g_2 + p_2 c_2: c3=g2+p2g1+p2p1g0+p2p1p0c0c_3 = g_2 + p_2 g_1 + p_2 p_1 g_0 + p_2 p_1 p_0 c_0

  6. 6
    Step 6

    Substitute c3c_3 into c4=g3+p3c3c_4 = g_3 + p_3 c_3: c4=g3+p3g2+p3p2g1+p3p2p1g0+p3p2p1p0c0c_4 = g_3 + p_3 g_2 + p_3 p_2 g_1 + p_3 p_2 p_1 g_0 + p_3 p_2 p_1 p_0 c_0

  7. 7
    Step 7

    Finally for each bit: si=pi⊕cis_i = p_i \oplus c_i for i∈{0,1,2,3}i\in\{0,1,2,3\} (with c0c_0 provided and c1..3c_{1..3} computed above).

Boolean carry network (final expressions)

For a 4-bit CLA:

Carries

c1=g0+p0c0c2=g1+p1g0+p1p0c0c3=g2+p2g1+p2p1g0+p2p1p0c0c4=g3+p3g2+p3p2g1+p3p2p1g0+p3p2p1p0c0\begin{aligned} c_1 &= g_0 + p_0 c_0 \\ c_2 &= g_1 + p_1 g_0 + p_1 p_0 c_0 \\ c_3 &= g_2 + p_2 g_1 + p_2 p_1 g_0 + p_2 p_1 p_0 c_0 \\ c_4 &= g_3 + p_3 g_2 + p_3 p_2 g_1 + p_3 p_2 p_1 g_0 + p_3 p_2 p_1 p_0 c_0 \end{aligned}

Sums

si=pi⊕cifor i=0,1,2,3s_i = p_i \oplus c_i \quad \text{for } i=0,1,2,3

Pro Tip: interpret p and g before building gates

If gi=1g_i=1, then ci+1c_{i+1} is forced to 1 regardless of cic_i. If gi=0g_i=0 and pi=1p_i=1, then ci+1c_{i+1} follows cic_i. This intuition matches the recurrence ci+1=gi+picic_{i+1}=g_i+p_ic_i.

Common implementation pitfall

Mixing up pip_i definition: for CLAs using XOR-based propagate, use pi=ai⊕bip_i=a_i\oplus b_i (not OR). Using OR propagate changes the carry logic.

Example: compute a 4-bit CLA addition

Let:

  • a=10112a = 1011_2 (a3a2a1a0=1,0,1,1a_3a_2a_1a_0 = 1,0,1,1)
  • b=01102b = 0110_2 (b3b2b1b0=0,1,1,0b_3b_2b_1b_0 = 0,1,1,0)
  • c0=1c_0 = 1

We compute gi=aibig_i=a_i b_i and pi=aioplusbip_i=a_i\\oplus b_i.

Step 1: table of g and p

bit iaia_ibib_igi=aibig_i=a_ib_ipi=aioplusbip_i=a_i\\oplus b_i
01001
11110
20101
31001

So:

  • g0=0,g1=1,g2=0,g3=0g_0=0, g_1=1, g_2=0, g_3=0
  • p0=1,p1=0,p2=1,p3=1p_0=1, p_1=0, p_2=1, p_3=1

Step 2: compute carries

  • c1=g0+p0c0=0+1cdot1=1c_1 = g_0 + p_0 c_0 = 0 + 1\\cdot 1 = 1
  • c2=g1+p1g0+p1p0c0=1+0cdot0+0cdot1cdot1=1c_2 = g_1 + p_1 g_0 + p_1 p_0 c_0 = 1 + 0\\cdot 0 + 0\\cdot 1\\cdot 1 = 1
  • c3=g2+p2g1+p2p1g0+p2p1p0c0c_3 = g_2 + p_2 g_1 + p_2 p_1 g_0 + p_2 p_1 p_0 c_0 =0+1cdot1+1cdot0cdot0+1cdot0cdot1cdot1=1= 0 + 1\\cdot 1 + 1\\cdot 0\\cdot 0 + 1\\cdot 0\\cdot 1\\cdot 1 = 1
  • c4=g3+p3g2+p3p2g1+p3p2p1g0+p3p2p1p0c0c_4 = g_3 + p_3 g_2 + p_3 p_2 g_1 + p_3 p_2 p_1 g_0 + p_3 p_2 p_1 p_0 c_0 =0+1cdot0+1cdot1cdot1+1cdot1cdot0cdot0+1cdot1cdot0cdot1cdot1=1= 0 + 1\\cdot 0 + 1\\cdot 1\\cdot 1 + 1\\cdot 1\\cdot 0\\cdot 0 + 1\\cdot 1\\cdot 0\\cdot 1\\cdot 1 = 1

So carries are: c0=1,c1=1,c2=1,c3=1,c4=1c_0=1, c_1=1, c_2=1, c_3=1, c_4=1.

Step 3: compute sums

Use si=piopluscis_i = p_i \\oplus c_i:

  • s0=p0oplusc0=1oplus1=0s_0 = p_0 \\oplus c_0 = 1 \\oplus 1 = 0
  • s1=p1oplusc1=0oplus1=1s_1 = p_1 \\oplus c_1 = 0 \\oplus 1 = 1
  • s2=p2oplusc2=1oplus1=0s_2 = p_2 \\oplus c_2 = 1 \\oplus 1 = 0
  • s3=p3oplusc3=1oplus1=0s_3 = p_3 \\oplus c_3 = 1 \\oplus 1 = 0

Therefore:

  • s=00102s = 0010_2 with final carry c4=1c_4=1. Interpreting the full result: c4s3s2s1s0=1 0 0 1 02=1810c_4 s_3 s_2 s_1 s_0 = 1\,0\,0\,1\,0_2 = 18_{10}.

Quick check by arithmetic:

  • a=11a=11, b=6b=6, c0=1c_0=1 ⇒ 11+6+1=1811+6+1=18 ✅

Visual interpretation of operation

A CLA first classifies each bit pair as:

  • Generate (gi=1g_i=1): forces a carry regardless of previous carry.
  • Propagate (pi=1p_i=1): carries the previous carry forward.

Then the carry network computes c1..c4c_1..c_4 with AND/OR combinations of gg and pp, and the sum stage uses XOR with the corresponding carry.

Bit-wise summary for the example

Shows p_i, c_i, and resulting s_i for each bit position

Concept checks & edge cases

Knowledge Check

Question 1 of 4
Q1Single choice

In a 4-bit carry-lookahead adder (CLA), which definition is used for propagate in the standard XOR-based CLA?