MEng Software Engineering
Year of entry: 2020
Course unit details:
|Unit level||Level 2|
|Teaching period(s)||Semester 1|
|Offered by||Department of Computer Science|
|Available as a free choice unit?||Yes|
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.
|Unit title||Unit code||Requirement type||Description|
|Fundamentals of Computer Engineering||COMP12111||Pre-Requisite||Compulsory|
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!
Explain the operation of sequential systems and design and implement systems consisting of datapath and control elements.
Apply design methodologies to aid in the design of complex digital systems.
Discuss key features of the Verilog language and be able to implement sequential digital systems at the register transfer level (RTL) of the design hierarchy.
Explain the design factors of Instruction Set Architectures and discuss the differences between RISC and CISC CPUs, identifying the key functional components and explaining how they work together to execute instructions.
Explain the stages of processor design starting from the Instruction Set Architecture with respect to implementing designs in Verilog.
Discuss approaches for the testing of complex digital designs and apply these to test digital designs implemented in Verilog.
Identify techniques for improving CPU performance including pipelining, superscalar processing and multicore.
Analyse how design factors such as scaling, monetary cost, performance and power consumption impact VLSI designs.
Describe examples of specialised compute units such as coprocessors, floating-point units and vector extensions and identify their relative advantages and disadvantages.
Compare different processor technologies, such as CPU, GPU and FPGA, with respect to different application domains, and discuss future industry trends beyond traditional CMOS scaling.
Reveal important parts of the CAD tool stack including logic synthesis and test as well as placement and routing algorithms.
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.).
Teaching and learning methods
20 hours in total
- Analytical skills
- Problem solving
|Written assignment (inc essay)||50%|
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.
COMP22111 reading list can be found on the School of Computer Science website for current students.
|Scheduled activity hours|
|Assessment written exam||2|
|Practical classes & workshops||22|
|Independent study hours|
|Paul Nutter||Unit coordinator|
Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.