skip to primary navigationskip to content

Course pages 2020–21

ECAD and Architecture Practical Classes


The ECAD and Architecture Laboratory sessions are a companion to the Computer Design course. The objective is to provide experience of hardware design for FPGA including use of a small embedded processor. It covers hardware design in SystemVerilog, embedded software design in RISC-V assembly and C, and use of FPGA tools.

The following video summarises many of the things you need to know about this course. You should carry on reading the rest of this page as it contains other important information.


This course assumes familiarity with the material from Part IA Digital Electronics, although we will use automated tools to perform many of the steps you might have done there by hand (for example, logic minimisation).

We will be using a Linux command-line environment. We provide scripts and guidance on what you need, however you may find it useful to review Unix Tools, in particular basic navigation such as ls, cd, mkdir, cp, mv. We'll be using the GCC compiler and Makefiles, described in parts 31-32. We will also be using git for revision control and submission of work for ticking - you should review at least parts 23-25 and 29.


The course runs over the 8 weeks of Michaelmas term. The course has been designed so you can do most of the work at home or at any time you wish. In past years we have allocated everyone an afternoon lab slot where help is available in person. This year we will run the course entirely online, with help provided online.

Due to the uncertainty of the current situation, some parts of the course may not be available to you (for example, the parts requiring use of hardware if it is not safe for us to issue/reclaim it, or you are not in Cambridge). Additionally, we might not be able to resolve problems setting up the full set of tools remotely (for example, we can't screenshare BIOS settings), or you may have limited internet connectivity or access to a suitable computer. For this reason we have provided four routes you can use different tools to complete the course. Some routes necessarily exclude some material but this material has been removed from the assessment criteria.


In a similar way to other practical courses, this course carries one 'tick'. Everyone should expect to receive this tick, and those who do not should expect to lose marks on their final exams.

This year we have adopted the 'chime' autoticker used by Further Java. You will check out the initial files as a git repository from the chime server, commit your work, and push the repository back to submit it. You can then press a button to run tests against your code and the autoticker will tell you whether you have passed. Additionally you may be selected for a video interview with a ticker to discuss your code and understanding of the material.

Ticking procedures will only be available during weeks 1-8 of Michaelmas term. If you do not submit your work to the autoticker by 5pm on the Tuesday of week 8 (1 December 2020) and have a good reason you will need to ask your Directory of Studies to organise a personal ticking session. The hard deadline by which all ticks must be completed is noon on Friday 29 January 2021 (the Head of Department Notices is the definitive document). Extensions beyond this date due to exceptional circumstances require a formal application from your college to the Examiners.


While there are 8 exercises, there is not a tight binding to doing one exercise per week. Students should expect to spend about three hours per week on the course, however it is recommended that you make a start on the next exercise if you have time in hand.

Demonstrator help will be focused on the Tuesday and Friday 2-5pm slots during term the lab would normally operate in, so you may find it helpful to work in these times as that will provide the quickest response to questions.


When we have done these labs in person, we have often found they worked well when doing them collaboratively. While your work must be your own, students can work together and help each other, and demonstrators contribute advice and experience with the tools.

Since we aren't able to undertake the lab in person, we're providing two routes to provide support from the demonstrating team, and for students to collaborate amongst themselves.

For the timetabled lab sessions, which are Tuesdays and Fridays 2-5pm UK time during term, we'll use Microsoft Teams (link to Team). With this we can provide online audio/video help, screensharing and (for the Windows and possibly Mac Teams apps) optional remote control of your development environment. You will be added to the Team in week 1 - if you believe you have been missed please post in the Moodle forum. In Teams there are a number of Helpdesk Channels (A-D) - if you need help during lab times, post in Help Centre and a demonstrator can ask you to go to a specific channel. There are also Student Breakout Channels (K-Q) which are available for students to chat amongst themselves.

For help outside of timetabled sessions we've set up a Moodle forum where you can post questions - we'll keep an eye on this at other times, but students are encouraged to use it to support each other.

Students are of course free to use other platforms to help each other. If you find anything useful that we might use in future, please let us know!

If you are having difficulty accessing both Moodle and Teams, please email theo.markettos at


We revise the course each year, which may cause new bugs in the code or the notes. The creators (Theo Markettos and Simon Moore) appreciate constructive feedback.


This course was written by Theo Markettos and Simon Moore, with portions developed by Robert Eady, Jonas Fiala, Paul Fox, Vlad Gavrila, Brian Jones and Roy Spliet. We would like to thank Altera, Intel and Terasic for funding and other contributions.