A CDFG-based high-level synthesis takes a behavioral specification of a design as input and generates the corresponding RTL code. Apart from the specification, other inputs to a high-level synthesis process can be an optimization function, design constraints, and a module library representing the available components at RTL. The goal of the synthesis process is to generate an RTL design that implements the specified behavior while satisfying the design constraints and optimizing the given cost function.