Operation Dependencies in Loop Pipelining for High-Level Synthesis
Date
2018Language
en
Keyword
Abstract
Research and industry interest in high-level synthesis has been renewed in the last few years, proven by the introduction of new tools or improved versions of existing tools. Academic tools like Gaut or CCC have recently appeared in new versions with expanded functionality in order to cover increased hardware design requirements. Likewise, industrial tools like Xilinx VivadoHLS or, more recently, Cadence Stratus have appeared and are continuously evolving in their effort to succeed in the market. One technology that high-level synthesis tools have chosen to invest on is compiler-driven code optimizations, which are a promising means to improve efficiency of automatically generated hardware. Loop transformations are among the most popular compiler optimizations, for both software and hardware targets. Loop unrolling and loop pipelining, coupled with careful instruction reordering, can deliver highly optimized output. Instruction dependencies play a significant role in such optimizations, limiting performance improvement for the final code. In this paper, we discuss the issue of dependencies among loop body operations, especially those forming cycles, and their impact on high-level synthesis. We present results from experiments with several benchmarks on the CCC and VivadoHLS tools, showing that CCC can deliver better output than VivadoHLS in the presence of complex operation dependence cycles. © 2018 Tei of Western Macedonia.