Dynamically Increasing the Scope of Code Motions during the High-Level Synthesis of Digital Circuits
Published Web Locationhttps://doi.org/10.1049/ip-cdt:20030839
The quality of high-level synthesis results for designs with complex and nested conditionals and loops can be improved significantly by employing speculative code motions. In this paper, we present two novel techniques that add scheduling steps to the branch of a conditional construct with the fewer scheduling steps. This ``balances'' or equalizes the number of scheduling steps in the conditional branches and increases the scope for application of speculative code motions. We apply these branch balancing techniques ``dynamically'' during scheduling. We implemented algorithms for the dynamic branch balancing techniques in a C-to-VHDL high-level synthesis framework called SPARK. We demonstrate the utility of these techniques by presenting results for experiments on four designs derived from two moderately complex applications, namely, MPEG-1 and the GIMP image processing tool. These results show that the two branch balancing techniques can reduce the cycles on the longest path through the design by up to 38% and the number of states in the controller by up to 37%.