High level synthesis