227-0128-00L  Synthesis of Digital Circuits

SemesterSpring Semester 2023
LecturersL. Josipovic
Periodicityyearly recurring course
Language of instructionEnglish


AbstractThis course covers theoretical and practical aspects of hardware compilation and synthesis. It provides a comprehensive view into the design flow of digital circuits and presents algorithms, tools, and methods to generate digital circuits from high-level descriptions. It discusses recent advancements and current challenges of high-level synthesis for FPGAs.
Learning objectiveThe goal of this course is to provide students with an in-depth understanding of the hardware design process and hardware compilation techniques. The students will learn how to differentiate software and hardware design models. They will be able to apply high-level synthesis concepts to design hardware from software specifications. They will be able to contrast various HLS methods, assess the area-performance tradeoffs of different HLS solutions, and identify challenges and limitations of current FPGA-oriented HLS approaches.
ContentThe course will cover the following topics:
- Hardware design flow and introduction to high-level synthesis (HLS)
- Static code analysis and optimization
- Classic HLS algorithms for scheduling (e.g., ASAP, ALAP, List scheduling)
- Classic HLS algorithms for sharing and binding (e.g., Left-edge algorithm)
- Pipelining and SDC modulo scheduling
- Polyhedral code analysis and optimization
- Applications of HLS for FPGAs
- Challenges of modern HLS for FPGAs
- Recent HLS advancements and alternative HLS approaches
The course will be divided into two main blocks. The first block will consist of classical lectures, accompanied by exercises. The second block will interleave lectures with: (1) practical work that will introduce students to a standard HLS flow for FPGAs and (2) student presentations of recent research topics on HLS and FPGA design.
Lecture notesLecture notes will be provided on the course website.
LiteratureLiterature will be provided on the course website.
Prerequisites / NoticeThe course requires a basic understanding of digital circuit design and computer architecture. A background in FPGA design is not required.