18.3 Designing Combinational Logic Gates in CMOS