AND (.A(A0), .B(B0), .Y(A0B0));
AND (.A(A1), .B(B0), .Y(A1B0));
AND (.A(A2), .B(B0), .Y(A2B0));
AND (.A(A3), .B(B0), .Y(A3B0));
AND (.A(A0), .B(B1), .Y(A0B1));
AND (.A(A1), .B(B1), .Y(A1B1));
AND (.A(A2), .B(B1), .Y(A2B1));
AND (.A(A3), .B(B1), .Y(A3B1));
AND (.A(A0), .B(B2), .Y(A0B2));
AND (.A(A1), .B(B2), .Y(A1B2));
AND (.A(A2), .B(B2), .Y(A2B2));
AND (.A(A3), .B(B2), .Y(A3B2));
AND (.A(A0), .B(B3), .Y(A0B3));
AND (.A(A1), .B(B3), .Y(A1B3));
AND (.A(A2), .B(B3), .Y(A2B3));
AND (.A(A3), .B(B3), .Y(A3B3));
4BIT_ADDER (.A({1'b0, A3B0, A2B0, A1B0}), .B({A3B1, A2B1, A1B1, A0B1}), .CI(1'b0), .S(sum0[3:0]), .CO(co0));
4BIT_ADDER (.A({co0, sum0[3:1]}), .B({A3B2, A2B2, A1B2, A0B2}), .CI(1'b0), .S(sum1[3:0]), .CO(co1));
4BIT_ADDER (.A({co1, sum1[3:1]}), .B({A3B3, A2B3, A1B3, A0B3}), .CI(1'b0), .S(sum2[3:0]), .CO(co2));
BUF (.A(A0B0), .Y(P0));
BUF (.A(sum0[0]), .Y(P1));
BUF (.A(sum1[0]), .Y(P2));
BUF (.A(sum2[0]), .Y(P3));
BUF (.A(sum2[1]), .Y(P4));
BUF (.A(sum2[2]), .Y(P5));
BUF (.A(sum2[3]), .Y(P6));
BUF (.A(co2), .Y(P7));