ECE462
ECE462 (Logic Synthesis) is a 3-credit-hour course that satisfies the Technical Electives requirement for ECE majors and satisfies and Advanced Computing Elective for CEs. It is offered on-and-off between semesters, the most recent offerings being Fall 2022, Spring 2024 and Summer 2024.
Content Covered
Although many students come into this class expecting ECE220 part 2, this class really isn't so much an extension to ECE220 as a tangent to it; it's not so much about advanced logic design techniques, but rather focuses on algorithms used in EDA tools (such as Quartus II, used in ECE385) to automatically minimize the logic for combinatorial and sequential circuits. Additionally, some time is spent on teaching students the basics of equivalence checking and post-silicon testing. If you are look for advanced logic design techniques, chances are the class you want is ECE411 (Computer Organization and Design). The course begins with logic optimization, starting with K-maps from ECE120 and discussing algorithms for optimization such as the Quine-McCluskey method - a lot of time is spent discussing this algorithm (despite it's high computational complexity and thus, questionable utility); binary decision diagrams, which are data structures that represent combinatorial functions, will also be discussed in depth, along with the boolean algebra concepts they are based on. Then finite state machine optimization and algorithms to compare two finite state machines are discussed. The class also covers hardware verification techniques used before a circuit is fabricated. Fault detection and correction is then discussed in the context of post-silicon testing, and algorithms to produce tests for faults are discussed. Finally, the class covers technology mapping, which involves optimizing logic (for area or for timing) using a predefined set of logic gates, and multi-level logic synthesis.
Prerequisites
- ECE220 or CS233
ECE 220 is definitely necessary, as all topics build upon the digital logic design material.
When to Take It
ECE462 was traditionally offered only in the fall, and is currently inconsistent with its offerings but was most recently offered in Spring 2024 and Summer 2024. Many of the topics such as logic optimization and finite state machines are carried over from ECE220. It is very important to remember the logic design concepts taught in ECE220, so taking this class soon after taking 220 is advisable, though the important part is remembering how to use concepts from 220 (ECE385 and ECE411 may help in this respect). Knowledge of hardware design will help you appreciate the concepts in this course, but is not necessary to do well, as algorithms used by electronic design automation (EDA) tools are the main focus of the course, along with post-silicon testing. Students who have taken CS225 (Data Structures) may be disappointed to find that, although this course is primarily about algorithms, no big-O analysis is done. Students who have taken CS374 (Intro to Algorithms) will notice quite a bit of overlap between Finite Automata (in CS374) and Finite State Machines, though this isn't a large portion of the course. More notably, the occasional proofs required by this class are usually nowhere near as difficult as those required in CS374.
Course Structure
The course has a light workload compared to other 400-level ECE electives, requiring on average 5-10 hours per week to finish homework and review material from lecture. The homework starts out being due every Thursday, but after the first exam two weeks are given for each assignment instead of one. Homework assignments typically involve working through algorithms by hand or doing some simple boolean-algebra proofs; occasionally tougher proof problems or algorithm design problems appear. Students are allowed to work together on the assignments, in groups of at most 3. In the past, the course had no labs or MPs, but in a few past semesters, extra homework problems using the Berkeley ABC logic software were assigned each week for students to work with the logic algorithms learned in class. ECE462 has two midterms and a final. The problems given on these exams are similar to the ones given in the homework, and are for the most part straightforward. However, there are a couple of proofs on each exam, which can be difficult to prepare for but are not graded very harshly and do not make up a large portion of the exam. Overall, the course is designed to be a fairly small weekly time commitment.
Instructors
The course is taught by Professor Anu Aggarwal.
Life After
ECE462 is one of the few courses that teaches students the algorithms used in EDA tools, as well as verification and testing. Anyone considering a career in verification and testing, hardware design, or EDA software design would benefit from ECE462. Relevant courses include ECE425, and of course, ECE411.