Design a 4-bit carry lookahead adder. Compute generate g = a & b and propagate p = a ^ b for every bit, then form each carry directly from g, p and cin instead of waiting for the ripple: c1 = g0 | p0&cin, c2 = g1 | p1&g0 | p1&p0&cin, and so on. Inputs: a and b, 4-bit operands; cin, the carry in. Outputs: sum, the 4-bit sum; cout, the carry out (c4). The testbench applies all 512 combinations and compares {cout, sum} with a + b + cin. It cannot tell a lookahead from a ripple design; the structure is the point of the exercise.