Software Engineering (3 Years) [BSc]
|Unit level:||Level 2|
|Teaching period(s):||Semester 1|
|Offered by||School of Computer Science|
|Available as a free choice unit?:||Y
- COMP12111 - Fundamentals of Computer Engineering (Compulsory)
Additional RequirementsStudents who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.
The module aims to give a view of the role of a digital hardware designer, taking an idea and implementing it as a silicon chip. A processor is a representative example of logic used in today's chips, also giving further insight into how computers actually work.
Having completed the module you should have developed the confidence to be able to take a concept and realise it in hardware. You should also appreciate the test and verification processes involved so that your chips work efficiently and reliably ... first time, every time!
This course unit aims to reinforce and extend digital hardware development skills which are introduced in the first year. It employs industry-standard tools and languages which are used worldwide for silicon development. The UK has perhaps the strongest expertise in Europe in these areas and skills are in high demand from employers such as ARM and Imagination Technologies who provide much of the digital design for devices such as smartphones and tablet computers.
Teaching and learning methods
20 hours in total
Learning outcomes are detailed on the COMP22111 course unit syllabus page on the School of Computer Science's website for current students.
- Analytical skills
- Problem solving
- Written exam - 55%
- Written assignment (inc essay) - 45%
1. Introduction (1 lecture)
Overview, introduction to the lab, approaches to design and the management of complexity
2. Instruction Set Architectures (2 lectures)
RISC v CISC, recap of MU0, Stump ISA, other architectures
3. Review of sequential systems (2 lectures)
The processor as a sequential system, datapath and control, register transfer level (RTL) design, Mealy and Moore finite state machines.
4. Advanced Verilog (3 lectures)
Verilog recap, tasks and functions, structural Verilog, verification & testing in Verilog, the Verilog simulator.
5. Designing and Implementing Processors (2 lectures)
Implementation of processors from the ISA, architectural design, RTL design, Verilog implementation.
6. Improving Processor Performance (1 lecture)
Superscalar, multicore and pipelining, examples of processor speedup, hazards.
7. Specialised Processing Architectures (1 lecture)
Examining DSPs, floating-point (and other) coprocessors, SIMD and vector extensions as well as VLIW.
8. Microarchitectural Structures (1 lecture)
Basic building blocks, including register files, FIFOs, RAMs, CAMs, arithmetic circuits (adders and multipliers) and shifters.
9. FPGAs (1 lecture)
FPGA mode of operation and its spatial programming model as well as application examples.
10. Hardware Design Examples (1 lecture)
Investigating a few circuits (e.g., digital filters, sorters, PWMs) and understanding their design factors.
11. Electronics (1 lecture)
Ohm's and Kirchhoff's laws; inverters, NAND and NOR gates; MOS transistors and CMOS technology design factors.
12. Technology (1 lecture)
Standard Cell design methodology, PLA, Multiplexer, look-up table technology.
13. Computer Aided Design (CAD) Tools (1 lecture)
Logic synthesis, constraints, Place & Route, DRCs.
14. Verification and Test (1 lecture)
Analogue and digital simulation, regression testing, production test and yield built-in self-test (BIST).
15. Timing and Clocking (1 lecture)
System performance, setup and hold times, jitter, clock skew, clock distribution networks, propagation delay, signal integrity, static timing analysis (STA), clock domains, synchronisation and meta-stability.
16. Hardware Security (1 lecture)
Understanding hardware related vulnerabilities (Spectre, Meltdown, RowHammer) and countermeasures. DPA and other forms of side-channel attacks
17. Future (1 lecture)
Limits of Moores' law, understanding the importance of energy efficiency, new manufacturing techniques, memristor-based computing, exotic technologies (Quantum dots, Graphene, Spintronics, etc.).
COMP22111 reading list can be found on the School of Computer Science website for current students.
Direct feedback comes from laboratory work, both from working with the tools themselves and from the staff. Development results can (and should) be observed throughout using simulation and test. Final results are observable with a hardware realisation.
Less formal feedback is available at all times, especially during lectures and laboratory sessions.
- Assessment written exam - 2 hours
- Lectures - 11 hours
- Practical classes & workshops - 22 hours
- Independent study hours - 65 hours