Carry-save-adder (CSA) is one of the most widely used types of operations for implementing fast computations of arithmetics in industry. It was reported that typical arithmetic computations found in industry designs were optimized using CSAs, producing designs with on average over 20% faster timing (without any area penalty). Being stimulated by the results, we analyze and formulate the problem of allocating CSAs for an arithmetic expression, and present an effective algorithm which constructs a functionally equivalent CSA tree with a minimal timing. Specifically, we solve the CSA allocation problem in two steps: (1) allocating a delay-optimal CSA tree for the multi-bit inputs of the arithmetic expression and (2) determining the assignment of the single-bit inputs to carry inputs of CSAs which leads to a minimal increase of delay of the CSA tree obtained in step (1). For a number of arithmetic expressions found in real designs, it was demonstrated that our approach is very effective and produces designs with up to 54% faster timing and up to 42% smaller area.
[1]
Weitong Chuang,et al.
Power vs. delay in gate sizing: conflicting objectives?
,
1995,
Proceedings of IEEE International Conference on Computer Aided Design (ICCAD).
[2]
Alexandru Nicolau,et al.
Incremental tree height reduction for high level synthesis
,
1991,
28th ACM/IEEE Design Automation Conference.
[3]
M. Potkonjak,et al.
Maximally fast and arbitrarily fast implementation of linear computations (circuit layout CAD)
,
1992,
1992 IEEE/ACM International Conference on Computer-Aided Design.
[4]
Minh N. Do,et al.
Youn-Long Steve Lin
,
1992
.
[5]
Donald A. Lobo,et al.
Redundant operator creation: a scheduling optimization technique
,
1991,
28th ACM/IEEE Design Automation Conference.
[6]
Taewhan Kim,et al.
Circuit optimization using carry-save-adder cells
,
1998,
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..