Embedded systems are driving an information revolution with their pervasion in our everyday lives. These tiny, quick and smart systems can be found everywhere, ranging from commercial electronics such as cell phones, cameras, portable health monitoring systems, automobile controllers, robots, smart security devices to critical infrastructure such as telecommunication networks, electrical power grids, financial institutions, nuclear plants. The increasingly complicated embedded systems require extensive design automation and optimization tools. Architectural-level synthesis with code generation is an essential stage towards generating an embedded system satisfying stringent requirements such as time, area, reliability, and power consumption, while keeping the product cost low and development cycle short.