CPU design at the gate level