COMP32111 - System-on-chip Modelling with SystemC
Academic Year 2011-12

This page contains supporting materials for the module COMP32111 given by Steve Furber and Alasdair Rawsthorne.

We owe a debt of gratitude to Linda Brackenbury, Luis Plana and Jeff Pepper for preparation work on this and predecessor courses.

COMP32111 Syllabus.


Announcements and News

Last Week of Term

On Monday 12th December, we'll have a double lab session (1100-1300), primarily for marking Ex3, running in parallel with a double exam clinic session.

Please come to 2.15 at 1100 - we'll operate a pipelined scheduling system for marking, with the master list held in that room.

Links:

Jan 2011 COMP32111 paper

The following two papers are from a previous MSc module that covered similar material - but with some differences.

May 2008 COMP60062 paper - ignore Q5

March 2007 COMP60062 paper - ignore Q4 and Q5

Lab Exercise 3 - Errata

The Inquisitor Still Doesn't Work

The Timed TLM inquisitor fails to clear the request flag when it services a read from the microprocessor, which means that a second request will hang indefinitely. Please modify the code as follows:

void Inquisitor::readPoint() {
    while (true) {
        wait(clk.posedge_event());
        if (newReq) {
            /* read a point colour from the frame store */
            colour = initiator.read(x, y);
            /* report colour and 'not busy' status back to cmdChannel */
            cmd_initiator.write(false, colour);
            newReq = false;
        }
    }
}

Lab Exercise 2 - Errata

The Inquisitor Doesn't Work

Please patch the file "cmdChannel.cpp" as follows (you can just paste this whole section into the "paste" command):
*** cmdChannel.cpp.old	2011-11-07 15:18:15.000000000 +0000
--- cmdChannel.cpp	2011-11-07 15:17:20.000000000 +0000
***************
*** 72,78 ****
                  cerr << name() << ": WARNING - transaction to address "
                          << address << " failed." << endl;
              /* on completion reset status register to allow a new command in */
!             iqReg[2] &= 0x00007FFF;
              response.status = resp.status;
          }
      }
--- 72,79 ----
                  cerr << name() << ": WARNING - transaction to address "
                          << address << " failed." << endl;
              /* on completion reset status register to allow a new command in */
!             iqReg[2] &= 0x00007F00;
!             iqReg[2] |= resp.data;
              response.status = resp.status;
          }
      }

Guidance on Modularity of Solution

The lab sheet suggests that you implement your drawing function (circle, etc) as a separate computational block ("Remember that you are given these computational blocks (CRT controller, inquisitor and drawing engine) as IP that you are not allowed to modify!").

Looking ahead to the Xilinx implementation you will do next semester, it makes more sense for you to modify the Drawing Engine - which already has "point" and "line" functionality - to add (eg) the "circle" functionality while maintaining the existing channel interface. So, ignore the constraint quoted above.

In the Assessment section of the lab script, replace "Modifications to command and video channel" by "Modifications to existing code"


Course Schedule

An overview of the course schedule is shown below

Week Date Time Lab/Lecture Topic Material
1 26 Sep 11:00 Lecture 1 Design Hierarchy and System Modelling (SBF) Handouts
12:00 Lecture 2 Introduction to the Drawing Engine (SBF) Handouts
2 3 Oct 11:00 Lecture 3 Programming in C++ (AR) Handouts
12:00 Lab 1 The Algorithmic Model Handouts
3 10 Oct 11:00 Lecture 4 Towards System Level Design (AR) Handouts
12:00 Lab 2 The Algorithmic Model (contd)
4 17 Oct 11:00 Lecture 5 Untimed TLM in System C (Luis Plana) Handouts
12:00 Lab 3 Exercise 2 Handouts
5 24 Oct 11:00 Lecture 6 Exercise 2 Review (AR)
12:00 Lab 4 Exercise 2 (contd)
6 (31 Oct) 11:00 (Reading Week - no lecture)
12:00 (Reading Week - no Lab)
7 7 Nov 11:00 Lecture 7 Towards Timed Transactional Models (AR) Handouts
12:00 Lab 5 Exercise 2 - finish up, please
8 14 Nov 11:00 Lecture 8 Timed TLM in System C (Luis Plana)
12:00 Lab 6 Exercise 3 Handouts
9 21 Nov 11:00 Lecture 9 System-on-Chip Futures (SBF) Handouts
12:00 Lab 7 Exercise 3
10 28 Nov 11:00 Lecture 10 System-on-Chip Futures (SBF) Handouts
12:00 Lab 8 Exercise 3
11 5 Dec 11:00 Lecture 11 Guest Lecture by Dan Crisu of Imagination Technologies
12:00 Lab 9 Exercise 3 - Please finish up!
12 12 Dec 11:00 Lecture 12 Module wrapup and sample exam questions (SBF+AR)
12:00 Lab 10 (?) Exercise 3

Coursework and Assessment

Don't forget - we shall not be permitting extensions in the labs without very good reason.


Useful Resources

ARM reference Card

"C++ for Java Programmers" - Lerner

"The Positive Legacy of C++ and Java" - Eckel

"Similarities and Differences between Java and C++" - Baldwin

"The Java Language Environment" - Gosling and McGilton

"Moving from Java to C++" - Horstmann

"C++ Reference Sheet" (pdf file) - dreamingincode.net

"C++ for C Programmers" - Love, cam.ac.uk

"C++ Tutorial for C Users" - Brasseur

"Object Oriented Design" - Wikipedia

"Introduction to Object Oriented Design Part 1 - Abstraction" - McCluskey