### Optimizing Designs Using the Additionof Deflection Operations

J.L. Wong, M. Potkonjak, S. Dey
2004 IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
This paper introduces hot potato behavioral synthesis transformation techniques. These techniques add deflection operations in the behavioral description of a computation in such a way that the requirements for two important components of the final implementation cost, the number of registers and the number of interconnects, are significantly reduced. Moreover, we demonstrate how hot potato techniques can be effectively used during behavioral synthesis to minimize the partial scan overhead to
more » ... ke the synthesized design testable. Index Terms-Digital system testing, high-level synthesis, optimization, sequential logic circuit. I. INTRODUCTION T RANSFORMATIONS are alternations in the structure of a control-data flow graph (CDFG) in such a way that the functionality of the initial specification is maintained [1], [2] . Transformations are standard optimization tools in many research and commercial domains, including compilers [1], symbolic mathematics [3], logic synthesis [4], and behavioral synthesis [2] . In this paper, we introduce a new redundancy replication transformation. Interestingly, it does not improve the speed of execution, but it often reduces the implementation and testability cost. While the new transformation is general and can be used in almost all mentioned computational domains, it is especially well suited for behavioral synthesis, since it provides an effective means to manipulate the relationship between the behavioral and structural descriptions of the application specific system. Many operations used in a computation structure have an identity element associated with it. For instance, addition and subtraction operations have an identity element of zero, while multiplication and division operations have an identity element of one. If one of the inputs of an operation is , and the other input is the identity element of the operation, then the output of the operation remains . Adding such an operation between two operations, and , has the effect of deflecting the result of to , before reaching ; hence, we term such an operation a deflection operation. A deflection operation can be added anywhere in a computation structure without changing the functionality of the computation. In particular, adding a deflection operation after a variable has been computed, keeps Manuscript