Lab on hardware-software digital systems codesign
EE-390(a) / 3 credits
Teacher(s): Atienza Alonso David, Peon Quiros Miguel
Language: English
Withdrawal: It is not allowed to withdraw from this subject after the registration deadline.
Summary
This course explores hardware-software co-design techniques to develop heterogeneous embedded systems running Linux on FPGAs. The course applies high-level synthesis tools (HLS) to the design of hardware accelerators that reduce total execution time and energy consumption for complex tasks.
Content
Architecture of embedded systems. SW-HW co-design
Architecture and SW-HW co-design of embedded systems. Coherence between custom HW modules and processor memory hierarchy. Integration of custom HW in the Linux operating system. Address translation between physical address space and virtual memory. Device drivers.
Tools and design flows
Division of tasks between SW and HW. Integration of HW components in a multi-core system. Simulation and on-chip debugging at the system level.
High-level synthesis (HLS) as a productivity booster for the design of HW accelerators. Fine-grained optimizations in HLS: loops, arrays, memory accesses and scheduling. Coarse-grained optimizations in HLS: dataflow model, tasks and scheduling into parallel workers.
Measurement of system performance, speed-up. Characterization of whole-system energy savings via dedicated hardware.
Keywords
Co-design SW-HW, embedded system, high-level synthesis, FPGA, Linux, device drivers.
Learning Prerequisites
Required courses
- Systèmes embarqués microprogrammés (EE-310)
- Systèmes numériques (EE-334)
Important concepts to start the course
- Architecture of embedded devices (microprocessors, peripherals, interrupts, DMA, etc.).
- Design of digital systems in VHDL, Verilog or SystemVerilog.
- Programming in C (arrays, pointers, memory management).
- Basic operating system (Linux) concepts.
Learning Outcomes
By the end of the course, the student must be able to:
- Synthesize an specification and an architecture from an abstract idea
- Compose a complex embedded system
- Develop custom hardware accelerators and integrate them in the embedded system
- Explain the basis and governing principles of the components of an embedded system
Teaching methods
Work on small projects that build up on learnt concepts. During the course, we introduce the required concepts to build step-by-step a platform composed of SW and HW components. Among other projects, we use HLS to build HW accelerators for convolutions that are later integrated into complete CNNs running on Linux.
Expected student activities
Participation in class sessions and completion of weekly practical assignments.
Assessment methods
During class hours, the students will be asked (individually) to explain their exercises, either to the teachers or to the whole class. The delivery of a mid-term project will represent 30% of the final grade. Over the last weeks of the course, a guided project covering all the concepts of the course will be completed in groups; the evaluation of this group project and its oral presentation will account for 70% of the final grade. The code of all the assignments will be delivered via a git repository.
In the programs
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Lab on hardware-software digital systems codesign
- TP: 3 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Lab on hardware-software digital systems codesign
- TP: 3 Hour(s) per week x 14 weeks
- Type: mandatory
Reference week
| Mo | Tu | We | Th | Fr | |
| 8-9 | |||||
| 9-10 | |||||
| 10-11 | |||||
| 11-12 | |||||
| 12-13 | |||||
| 13-14 | |||||
| 14-15 | |||||
| 15-16 | |||||
| 16-17 | |||||
| 17-18 | |||||
| 18-19 | |||||
| 19-20 | |||||
| 20-21 | |||||
| 21-22 |
Légendes:
Lecture
Exercise, TP
Project, Lab, other