CS 3220: Processor Design with FPGAs (Fall 2017)

Instructor: Hadi Esmaeilzadeh

Email: hadi [AT] cc [DOT] gatech [DOT] edu
Office: KACB 2324
Office hours: 4:30pm - 6:00pm Mon
Location: Klaus 2456
Class time: 3:00pm - 4:15pm MW

TAs:  Amir Yazdanbakhsh (a.yazdanbakhsh [AT] gatech [DOT] edu). OH: 2:00pm - 3:00pm Wed
         Hardik Sharma (hsharma [AT] gatech [DOT] edu). OH: 3:30pm - 4:30pm Tue
         Office Hours held in KACB 2335.

Course Description

The CS 3220 (Processor Design with FPGAs) course is an intermediate-level project-based course that follows CS 2200. In this course, we will learn the principles of processor design while implementing a fully functonal (but simple) pipelined processor on a real Field-Programmable Gate Array (FPGA). We will implement the processor step-by-step on a real FPGA board using Verilog Hardware Description Language (HDL). We will study the principles of hardware design and synthesis as we implement the processor. We will also examine and benchmark our design using a few applications. To be able to benchmark the design, we will learn how the hardware and software interface and interact through the Instruction Set Architecture (ISA), the machine language, and the assembler.
We will try to understand how we can make our processor the fastest of all. At the end, each of us will have a personal processor that can run real applications. COOLNESS and AWESOMENESS! You will also be ready to take on real hardware design projects!


The enrolled students must have taken CS 2200 or an equivalent course with minimum grade of C. The students also need to have taken the prerequisites of CS 2200, i.e., CS 2110. We will specifically assume that all the students understand the basics of digital logic design. For example, the students should easily construct a full adder with AND, OR, and NOT gates. We will further assume that the students understand the fundamentals of processor organization. For example, the student must be able to easily design a single-cycle, a multi-cycle, or a pipelined processors are designed using adders, multiplexers, and registers, ... .

Course Material

There is no perfect textbook for this course and we will not require a textbook. However, I highly recommend reading the First Edition of Digital Design and Computer Architecture (available free at the GT library) by David Harris and Sarah Harris, Morgan Kaufmann Publishers, 2007.  This book is not the course textbook and I preserve the right to deviate from the book as I see fit. I strongly advise you to read the Verilog chapter and strictly follow the book's style.  Try to forget other Verilog styles that you might have learned from reading other "references" that tell you everything you can do with Verilog without teaching you how you should use it to be able to design a real piece of hardware. All other relevant material will be made available on the course webpage or on T-Square.

The exams and assignments will be based on the lectures.

Instead of the textbook, we will also use a combination of class notes and online resources. These online resources include but not limited to free software that will translate and load your hardware designs into the FPGA board. To run this software and connect to the FPGA board, you will need access to a Windows-based computer with a USB port. You can use a virtual machine such as Virtual Box to install Windows on Mac OS X or Linux.

Real Hardware Design with an FPGA Board

Each student must acquire her own Altera DE0-CV board. You can use the Georgia Tech Special Discount Program to buy the board. You can alternatively buy the board directly from Altera using their general academic program, which is more expensive. You may borrow the board from a student who has taken the course in previous semesters but not this semester. However, the board must be at your disposal throughout the semester.

When buying, be careful and make sure that you purchase the right board, the DE0-CV board.

If you would like to use the Georgia Tech Special Discount Program, you have to put your order by 11:59 pm on Thursday 08/24/2017. To provide a lower price, Terasic (the board manufacturer) will ship ALL the boards to the instructor and the instructor will give them to you after receipt. Therefore, it is imperative that all the students put their order by the pre-specified deadline of 11:59 pm on Thursday 08/24/2017.

Note that failure to order the board on time will not make you eligible for late assignment submission.


Two or three students will be responsible to transcribe each session of the class. These detailed transcripts will be distributed to all of the students as the class notes. Each individual scribe needs to write her own transcript of the class and then get together with the other scribes and generate a merged document. You will only have two days after each session to generate the merged transcript. We will randomly select each session's scribes. Please use the following word file as the template for the session transcript. Make sure you take enough notes to generate a comprehensive and detailed transcript. Feel free to take pictures of the whiteboard to inclue in the transcript.

Attendance and Quizzes

Attendance is mandatory unless you get explicit permission from the instructor to be absent. Students who face emergency situations outside their control that prevent them from attendance should contact the instructor before the class. If that is impossible, the student should inform the instructor afterwards as soon as possible. The student must provide documentation or other proof of the emergency situation.

Attending lectures and taking good notes will be very important, especially because (1) there is no textbook and (2) important announcements (e.g.,  project requirements or changes in due dates) will be made during lectures. Furthermore, (3) some things you will need to know for the project assignment cannot be adequately inferred only by looking at lecture slides. In many situation, I will do live demos and use the board to explain many intricacies.

To encourage attendance, there will be three unannounced (surprise) pop-quizzes during the semester, in addition to in-class demos and the mid-term exam that appear in the schedule. In summary, we might not be taking attendance in every lecture, but it will be very very very hard to earn a passing grade without attending lectures.


Students will be evaluated based on the following rubric. There is a 5% bonus in this rubric.

Scribing 15% Two/three students will be each session's scribes
Attendance and Quizzes 9% Three unannounced in-class quizzes, each weighted 3% of the final grade
Midterm Exam
10% In-class, will be graded before the last drop day
Final Exam 20% Comprehensive exam that will covers the entire semester's material
Project Assignment 1
5% Will be graded based on the report
Project Assignment 2
Will be graded based on the report
Project Assignment 3
Will be graded based on both the report and the demo
Project Assignment 4
Will be graded based on both the report and the demo
Project Assignment 5
Will be graded based on both the report and the demo

We will use two policies to assign final (letter) grades. Each student's grade will be computed using both policies, and the final grade will be the better of the two grades. The first policy is not curved, with 90% or more of the maximum possible score yielding an A, 80%-90% yielding a B, 70%-90% yielding a C, 60%-70% yielding a D, and <60% yielding an F. The second policy is the traditional curve-based policy, using the average (AVG) and standard deviation (STD) of scores in the class. Earning more than AVG+STD (one standard deviation above the average) will yield an A, earning AVG to AVG+STD will yield a B, earning AVG-STD to AVG will yield a C, earning AVG-2*STD to AVG-STD  will yield a D, and earning less than AVG-2*STD (two standard deviations or more below the class average) will result in an F grade. Since the second policy is based on the average performance of the class, you can only aim for a certain grade if you use the above rubric and get the best grade based on the first policy.

There will not be any make-up assignments. Therefore, if you need a particular grade, plan wisely and perform accordingly on homework, projects, and exams. Because of the large number of assignments in this class, re-grading can only be requested during 14 days that follow the release of scores from any assignment/exam. The exception to this is the final project assignment and the final exam. For assignment 6, re-grades can only be requested until the Wednesday of the finals week. For the final exam, no re-grades will be possible until final grades are officially released (in OSCAR). You can still see your final exam and request a regrade during the first two weeks of classes in the Spring semester. When requesting a re-grade, keep in mind that the entire submitted assignment or exam will be regraded, so a regrade may result in a loss of points.

The grade in this class will be based on your performance. Once an assignment or exam is over and graded, only a mistake in grading can result in change of the grade. I will never change a grade because the student needs a better grade to stay in the program, to keep a fellowship, to get a job, or any other reason. If you believe you need a certain  grade in this class, plan to earn the grade through excellent work in homework, projects, and exams.

No Deficiency Exam

If you are a gradating senior, keep in mind that this is a project-based class for the purposes of GT Rules and Regulations section 7.B.3. More specifically, a graduating senior who has a single-course deficiency usually has a right to be permitted a re-examination, and passing that re-examination would allow the student to graduate. However, this right to a re-examination does not apply to CS 3220 or any other "courses in which a significant portion of the grade is based upon projects." Please keep this in mind if you are planning to graduate this semester.

No Late Assignments

No late assignments will be accepted and no credit will be given for any late submission. All homework sets an project assignments are due on the day specified by the problem set, announced in T-Square, or in class (later announcements take precedence over prior ones). An assignment is only considered submitted when it is submitted through T-square, and the files that will be graded will be those submitted in T-Square. We will not accept a late submission if the file is elsewhere, even if the file modification time and date are before the deadline (those can be forged). Thus, please make sure that the files you submitted in T-Square are indeed the ones you want graded.

Students who face emergency situations outside their control that prevent them from completing an assignment in time should contact the professor before the assignment is due or, if that is impossible, as soon as possible. After receiving an extension, the student must submit the assignment before the extended deadline and will be required to provide documentation or other proof of the emergency situation.

Note that needs and emergencies within the student's control do not qualify for an extensions. In particular, the student is responsible for keeping adequate backups of their work and submitting the assignments ahead of time if needed. Examples of what does not qualify for an extension include, but are not limited to: the student needs a particular grade to graduate, the student wants to go on a cruise with their extended family, the student goes spelunking when the assignment is due and the cave does not have WiFi, the student tries to submit the assignment from a coffee shop and WiFi is down, the student misreads the due date, student's rhinoceros pet eats her laptop, student's laptop falls out of her backpack during a bungee-jump, etc.

No Collaboration on Exams or Quizzes

Absolutely no collaboration is allowed during exams or quizzes. Copying or receiving any information from another person or from another person's exam, with or without their consent, is unethical and unacceptable. However, you can always ask TAs or the professor for clarification of an exam question during the exam. Cheating during an exam or a quiz is a direct violation of the Georgia Tech Academic Honor Code and will be reported to and handled by the office of student affairs.

Teamwork on Project Assignment

A group of two students will be doing each assignment. However, each student must write their report and demo their project individually. Absolutely no collaboration is allowed between different groups. Collaboration with students or other individuals outside of your group (for example, a friend at another institution) is prohibited, and will be reported as Unauthorized Collaboration, which is a violation of the Georgia Tech Academic Honor Code. Submitting any work other than your own (including content from the Internet) without proper attribution (specifying the source) will also be reported as Plagiarism, which is also in violation of the Georgia Tech Academic Honor Code. Note that this is different from discussing lecture material (such as re-explaining an idea covered in class in a different manner or with a new example, or discussing what is being asked in the project assignment). Helping someone understand what is being asked in a problem is fine. However, giving them hints or helping them actually do what is being asked is not acceptable.

Collaboration within the group is allowed only for the implementation of the project assignment, i.e. writing Verilog code, programming the board, collecting required files, etc. However, each student in the group is responsible for individually writing up ad submitting a report and all the required files in T-Square, without any help from other members of their group. Working with or copying from anyone (including your group partner on writing the project report) will be reported as Unauthorized Collaboration and/or Plagiarism.

Note that each student's grade will be based on what that particular student submits in T-Square. For example, if a group completes an assignment but one student in that group submits the wrong (e.g., old) files, the two students will have receive a vastly different scores on that assignment. The students in each group is allowed (but not encouraged) to complete the project independently. However, both parties need to discuss how to share the board in case of sharing.

Also, note that each student will demo their project individually, and that each student is responsible for understanding all aspects of the work the group submits regardless of whether the student or their group partner implemented that specific part of the work. Note that a student's score on Assignments 3-5 will be significantly reduced if the student cannot demo the work or explain how the implementation or the code works.


If you are not sure about anything, ask the professor and/or consult the Georgia Tech Academic Honor Code. A violation of the rules will still be considered and treated as a violation of the rules, regardless of whether or not the student understood the rules or interpreted them correctly. If you are not sure that you understand how the rules apply to a particular situation, you must ask.

Academic Honesty

Students are expected to abide by the Georgia Tech Academic Honor Code. Honest and ethical behavior is expected at all times. All incidents of suspected dishonesty will be reported to and handled by the office of student affairs. You will have to do all assignments individually unless explicitly told otherwise. You may discuss it with classmates but you may not copy any solution (or any part of a solution).