CS 4272 - Hardware-Software Co-design


  1. This course requires CS2271 and CS3212 as a pre-requisite.

  2. Lectures are Thursday 9 AM - 12 noon in Seminar Room 3B (COM1 Level 2).

  3. There will be no class on Thu 6 September. Instead a make-up lecture will be taken on Wed 12 Sep 10:30 AM at SR 3B (the classroom). The lecture on Thu 13 September will proceed as usual.

  4. The midterm will be on Thursday 11 Oct 9 AM. The exam is open-book.

Brief Description

Till recently embedded computing systems were designed by specifying and realizing 
hardware and software separately. This often leads to incompatibilities across the 
HW/SW boundary making system integration a very difficult task. The goal of co-design 
methodologies is to overcome these difficulties by using unified hardware-software 
representations and creating the means for exploring various ways of partitioning the
system into hardware and software components. This module will expose the fundamental 
issues in HW/SW co-designs by exploring topics such as: High level system descriptions, 
formal verification, system co-simulation, design partitioning, hardware synthesis, 
software synthesis, HW/SW interfaces and Co-design tools. 

Course Outline (Tentative)

      Week 1  :    Introduction  See chapter 1 of textbook

      Week 2  :    System Specification Notations See chapter 2.3, 2.7,2.8 and also here

      Week 3 :     State Charts  See chapter 2.3 and also here

      Week 4-5:   Scheduling Methods See Chapter 4.2

      Week 6:      System Partitioning  See Chapter 5.3 and also here

      Week 7:      Midterm (Open Book)

      Week 8:      Functionality Validation  See here (Sections 1,2,4 are sufficient)

      Week 9-10:  Timing Analysis and Validation

                         Survey article by Mitra/Roychoudhury in Compiler Design Handbook.

      Week 11:     Processor Platforms See 3.1 - 3.4

      Week 12:     Memory Hierarchies and Compiler support  See Chapter 5.4 and also here

      Week 13:     Hardware testing and validation   See Chapter 6



      Readings : Embedded System Design by Peter Marwedel.

                            Other readings will appear in the course-outline lecture by lecture.

      Lectures : Lecture notes will be posted regularly in this webpage.


                            Introduction  (1 lecture)

                            System Modeling (1 lecture)

                            Modeling using StateCharts  (2 lectures)

                            Scheduling  (2 lectures)

                            Hardware Software Partitioning (1 lecture)

                            Functionality Validation (1 lecture)

                            Timing Validation (2 lectures)

                            Hardware Platforms (1 lecture)

                            Compiler controlled Memories (1 lecture)



      Tools :   Rhapsody modeling environment (Assignment 1),

                      Jslice debugging tool (Assignment 2),

                      Chronos WCET Analyzer (Assignment 3).




 Hands-on Assignments


           Assignment 1: Use Rhapsody for Modeling ( Assignment, Explanation slides, Rhapsody notes) - 10 %

           Assignment 2: Use JSlice for Debugging  ( Assignment, Explanation slides  )- 10%

           Assignment 3: Use Chronos for Cache-aware Scheduling  -- (Assignment  , Benchmarks ) - 10%


Midterm       :   25 %

Final :              45 %

Assignments :  30 %

Other Course Information

Pre-requisites :    CS 2271 and CS 3212
Instructor:            Abhik Roychoudhury    Office : COM1 #03-20
Lectures:             Thursday 9:00 AM - 12:00 noon at Seminar Room 3B (COM1 Level 2)

Consultation :      Thursday 2:00 - 4:00 PM in my office COM1 #03-20