Conditional speculation and its effects on performance and area for high-level synthesis
We introduce a code transformation technique "conditional speculation" that speculates operations by moving them into preceding conditional blocks. This form of speculation belongs to a class of aggressive code motion techniques that enable movement of operations through and beyond conditionals and loops. We show that this particular code motion has positive effect on latency and controller complexity, e.g., up to 25 % reduction in longest path cycles and the number of states in the finite state machine (FSM} of the controller. However, it is not enough to determine complexity by the number of states in the control FSM. Indeed, the greater resource sharing opportunities afforded by speculation actually increase the total control cost (in terms of multiplexing and steering logic). This also adversely affects the clock period. We examine the effect of the various code motions on the total synthesis cost and propose techniques to reduce costs to make the transformations useful in real-life high-level synthesis design targets. Using an important part of the MPEG-1 example, we show total reductions in schedule lengths of 4 7 % while at the same time keeping the control costs down.