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.
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:
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
"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