Any benefits from implementing CSA versus just using multiplication symbol when synthesizing?
If your synthesis tools are any good then you should use the * operator, set reasonable constraints, and let the tools do the heavy lifting. This is particularly true for FPGAs, which may very fast and dense multiplier cells. The Xilinx Spartan-3 series, for example, has some very nice 9x9 multiplier cells. If you insist on writing logic equations for your own CSA multiplier the synthesizer may not be able to infer that you really want a multiplier, and the result would use lots of LUTs while the multiplier cells sit idle.