Two general algorithms are described
Gate-level generators for multipliers, adders, shifters, checkers and other low-level operators is given elsewhere.