CS-476 / 6 credits

Teacher: Kluter Ties Jan Henderikus

Language: English


Summary

Hardware-software co-design is a well known concept in embedded system design.It is also a concept required in designing FPGA-accelerators in data-centers.This course teaches how to transform algorithms in smart hardware-software solutions.

Content

High-level architectures:

  • FIFO's, LIFO's, ring-buffers, and ping-pong buffers.
  • FSM-D (finite state machine data-path) structures.
  • Stream processing.

Acceleration methods:

  • Custom instruction set extensions.
  • Hardware accelerators
  • Compiler optimizations.

Implementation methods:

  • Hardware-software co-design.
  • Timing closure.
  • Virtual prototyping.
  • Bare metal versus usage of an RTOS.

Learning Prerequisites

Required courses

Recommended courses

  • Architecture-aware programming
  • CS-200 Computer Architecture or CS-208 Computer Architecture I and CS-209 Computer Architecture II

Important concepts to start the course

  • C/C++ programming skills
  • Verilog/VHDL description skills

Learning Outcomes

By the end of the course, the student must be able to:

  • Design buffers to account for different read and write behaviors
  • Understand the concept of FSM-D's and use this concept to design accelerators
  • Understand the concept of stream processing and be able to implement a stream processor
  • Design and optimize an embedded system on FPGA given a set of prerequisites

Teaching methods

  • First 9 weeks : theory with small projects and reports
  • Last 5 weeks : mini project in groups of 2 students with final demonstration and presentation

Expected student activities

  • Perform in groups of two students small projects to put the theory into practice
  • Optimize a real world problem in a final project, explain the choices made, and present the results

Assessment methods

  • Lab reports : 50%
  • Final mini-project : 50%

Supervision

Office hours No
Assistants Yes
Others Electronic forum and Moodle

Resources

Moodle Link

In the programs

  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Embedded system design
  • Courses: 2 Hour(s) per week x 14 weeks
  • Lab: 2 Hour(s) per week x 14 weeks
  • Type: optional

Reference week

Tuesday, 11h - 13h: Lecture INF3

Tuesday, 13h - 15h: Project, labs, other INF3

Related courses

Results from graphsearch.epfl.ch.