Synthesis of Digital Systems
Module Number: EI70640
Duration: 1 Semester
Occurence: Winter and Summer semester
Number of ECTS: 5
Professor in charge: Ulf Schlichtmann
Amount of work
Study hours: 90
Self-studying hours: 60
Description of achievement and assessment methods
The exam consists of two parts:
A written exam that includes questions and problems on the material that is taught in the lecture, exercises and lab sessions.
Three assignments during the semester to test practical skills taught during the lab sessions and to test the ability to connect these with the theory taught during the lecture.
The final grade is computed as:
- 75 % grade in written exam
- 25 % grade for the three practical assignments
The two parts of the exam ease the effort of the students at the end of the semester and focus on the difference in skills obtained in the lecture, exercise and lab.
Exam type: written
Exam duration: 90 min.
Possibilityof re-taking: In the next semester: Yes;At the end of the semester: No
Written paper: No
The participation in a VHDL lab before this lecture is encouraged. Basic knowledge of C programming and assembly code is desired.
The following topics are covered during the lecture and exercises:
- Introduction to the synthesis steps and the design flow of digital systems
- Static code analysis and code optimisation
- High-level synthesis including data path design, ASAP-, ALAP- and List-Scheduling, binding with Left-Edge algorithm, control path design
- Software compilation and execution including compilation steps, assembly code generation, instruction set architectures, register allocation, RISC pipeline, data and control hazards, estimation of execution times- Introduction to HW/SW interfaces, system models and load balancing algorithms
The following applications are covered in the practical lab sessions:
- Hands-on training on an industrial high level synthesis (HLS) tool
- Implementation of a HW peripheral using HLS
- Implementation of the HW/SW interface
- Synthesis and execution on an FPGA board
After participation, the students know the basic design steps of digital systems. They understand the difference of implementing a task in hardware or as software program. They know the compilation steps and understand static code analysis and optimization.
The students understand the theory of high-level synthesis with focus on algorithms for scheduling and binding. The students can apply these algorithms by generating RTL descriptions for small code examples. They can apply an industrial high level synthesis after the practical sessions.
Additionally, the basic concepts of SW compilers and code execution are understood by the students after participation. The students are able to apply compilation steps on small code examples to generate optimized assembly code. The students obtain the practical skills to write embedded C program and to implement a SW/HW interface.
The students know some basic system modeling methodology and can apply load balancing methods.
Teaching and learning methods
The lecture is divided into lecture, exercise and lab sessions (50%), as well as self-study time (50%).
During lecture and exercises, subjects are taught with a mix of methods. This includes frontal methods such as presentations on specific topics and assignments derived on the black board as well as various activating methods ranging from individual assigments and team assignments to team discussions.
The hands-on lab sessions are usually worked on in small teams. The lab sessions are strongly aligned with the lecture's topics to ensure that the theory learned during lecture can be applied to practical design problems. For this, modern EDA tools are used.
Additionally, individual and independent work is done on practical assignments in the self-study time. An e-learning platform is used to provide the learning materials to the students.
- Power point
- black board
- online materials
- hands-on training in the computer lab
- Giovanni De Micheli: Synthesis and Optimization of digital circuits, McGraw Hill 1994
- Philippe Coussy, Adam Morawiec: High-level synthesis from Algorithm to digital circuit, Springer 2008
- David Patterson, John Hennessy: Computer Organization and Design, the hardware/software interface, Elsevier 2005
- Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman: Compilers Principles, Techniques & Tools, Pearson Education 2007
- Daniel Gajski, Samar Abdi, Andreas Gerstlauer, Gunar Schirner: Embedded System Design, Springer 2009
- Jürgen Teich: Digitale Hardware/Software Systeme, Springer, 1997