High-Level Synthesis: from Algorithm to Digital Circuit