Course Syllabus
CompSci154 - Computer Design Lab
Prof. A. Veidenbaum
Prerequisites: CompSci151 (or equivalent). CompSci152 is also recommended, concurrent registration in 152 OK
Optional Textbook: Andrew Rushton, "VHDL for Logic Synthesis", McGraw Hill Publishing Co. or a similar VHDL textbook
Students are required to bring a laptop to class. Please make sure to have an X-window terminal installed (default for unix/macos).
COURSE OVERVIEW
This course is an introduction to computer system design. It examines a detailed design of major processor units, such as the register file, ALU, PC unit, memory interface, and control unit and how they work together to execute programs. It introduces students to a synthesizable subset of a hardware description language VHLD and teaches students how to design and verify a processor using the language. The use of CAD tools, specification, design and verification are also introduced. Each student designs and verifies a complete processor that can execute a subset of MIPS ISA.
The course assumes the knowledge of basic elements used in designing a computer system, such as combinational and sequential logic, and uses them to design an ALU, register file, memory, and the basic control for these subsystems (some of these concepts will be reviewed). The design will be done at a much higher level than logic gates and flip-flops. In addition to teaching students the design skills, the course teaches how designs are simulated. It helps students to better understand how a processor works.
The course deals with design at the logic gate level or higher, not hardware design. However, using CAD tools students produce working hardware using the FPGA technology.
After taking this course, you should be able to:
- Better understand how a processor works
- Describe computer components using a hardware description language -
- Design all major blocks of a simple processor
This includes an instruction
cache
- Design a control unit and make a complete processor
- Learn how to verify design correctness
- Simulate program execution on your design
- Learn how to synthesize hardware from a VHDL design
The course is composed of two components: lectures and labs. The objective of the lectures is to introduce and help you learn VHDL and CAD tools, processor design and verification concepts. The lab has three objectives: learn to program in VHDL and use the CAD tools, review synchronous design, and introduce the design and verification of main processor components and of the complete processor. The bulk of your work will be in the lab.
Administivia
Instructor: Professor A. Veidenbaum
Office: 3056 Bren Hall
Mail: alexv@ics
Office Hours: Immediately after class or by appointment
All lab assignments will be posted on the web and must be submitted electronically via Canvas (unless specified otherwise). Some design work will be done in the lectures.
Late assignments will NOT be accepted (exceptions for illness or other cases may be made, in writing, and submitted to the TA or instructor prior to due date).
GRADING
Your grade in CS154 will depend on your performance in class and lab assignments. The following approximate weights are going to be used:
Class
attendance and participation - 5%. Class
attendance is mandatory
Lab - 95%
Individual lab assignments carry different weights depending on the degree of difficulty, approximately 3/5/10/12/15/25.
We'll try to grade the material as quickly as possible, but grading is not
instantaneous.
Lab assignment results will be posted online.
If you wish to have something re-graded, you MUST write a cover sheet and hand it to the TA or the instructor. Explain why you believe a problem (or problems) was mis-graded. The re-grades will only be considered for a period of 1 week following the date of the result posting.
Lab Assignments (Tentative)
Lab 1: Learn to use VHDL, make a simple design, test it
Lab 2: Design a sequential circuit
Lab 3: Design and verify a simple data path
Lab 4: Design and verify the basic data path
Lab 5: Add memory (for Ld/St, instruction fetch), branches, to the data path
Lab5a: Instruction cache design
Lab 6: Design a control unit for the data path (as implemented in Lab 5a), put together and verify the full processor
Synthesis Lab