Algorithmic and Register-Transfer Level Synthesis: The System Architect’s Workbench