High Level Congestion Detection from C/C++ Source Code for High Level Synthesis


IEICE TRANSACTIONS on Fundamentals of Electronics, Communications and Computer Sciences   Vol.E103-A    No.12    pp.1437-1446
Publication Date: 2020/12/01
Online ISSN: 1745-1337
DOI: 10.1587/transfun.2020VLP0012
Type of Manuscript: Special Section PAPER (Special Section on VLSI Design and CAD Algorithms)
wire congestion,  high level synthesis,  source code compiler,  LLVM,  

Full Text: FreePDF

High level synthesis (HLS) is a source-code-driven Register Transfer Level (RTL) design tool, and the performance, the power consumption, and the area of a generated RTL are limited partly by the description of a HLS input source code. In order to break through such kind of limitation and to get a further optimized RTL, the optimization of the input source code is indispensable. Routing congestion is one of such problems we need to consider the refinement of a HLS input source code. In this paper, we propose a novel HLS flow that performs code improvements by detecting congested parts directly from HLS input source code without using physical logic synthesis, and regenerating the input source code for HLS. In our approach, the origin of the wire congestion is detected from the HLS input source code by applying pattern matching on Program-Dependence Graph (PDG) constructed from the HLS input source code, the possibility of wire congestion is reported.