VLSI CAD: Logic to Layout

A modern VLSI chip has a zillion parts -- logic, control, memory, interconnect, etc.  How do we design these complex chips?  Answer: CAD software tools.  Learn how to build these tools in this class.

About The Course

A modern VLSI chip is a remarkably complex beast:  billions of transistors, millions of logic gates deployed for computation and control, big blocks of memory, embedded blocks of pre-designed functions designed by third parties (called “intellectual property” or IP blocks).  How do people manage to design these complicated chips?  Answer:  a sequence of computer aided design (CAD) tools takes an abstract description of the chip, and refines it step-wise to a final design. This class focuses on the major design tools used in the creation of an Application Specific Integrated Circuit (ASIC) or System on Chip (SoC) design.  Our focus is on the key representations that make it possible to synthesize, and to verify, these designs, as they move from logic to layout.  

Our goal is for students to understand how the tools themselves work, at the level of their fundamental algorithms and data structures. You should be taking this course if (1) you are interested in building VLSI design tools;  (2) you are interested in designing VLSI chips, and you want to know why the tools do what they do;  (3) you just like cool algorithms, that work on big cool problems that involve bits, and gates, and geometry, and graphs, and matrices, and time, and...

Frequently Asked Questions

  • Will I get a certificate for this course?

    Yes. Students who successfully complete the class will receive a certificate signed by the instructor.

  • Am I going to learn how to use any industrial design tools in this class?

    Nope. This is not a course about “using” other people’s tools. So, it’s not a standard “VLSI Design” sort of a class. This is a course about building software design tools.

  • What resources will I need for this class?

    You need access to a Windows, Mac, or Linux computer to be able to write, compile and run programs. You should be able to program in one of Java or C++. For some programming assignments, you can use any language you like, as long as you can read our input files and write our output file formats.

  • What is the coolest thing I'll learn if I take this class?

    How it’s possible to synthesize logic and layout using cool algorithms and data structures. Let’s face it: you can build a Karnaugh map with about 6-7 variables, and beyond this your head explodes. Modern designs have a million gates. Clearly, something magical is happening somewhere, to pull this off. Come learn what that magic is.

Recommended Background

Programming experience (C++, Java) and basic knowledge of data structures and algorithms.  An understanding of basic digital design:  Boolean algebra, Kmaps, gates and flip flops, finite state machine design.  Linear algebra and calculus at the level of a junior or senior in engineering.  Exposure to basic VLSI at an undergraduate level is nice -- but it’s not necessary.  We will keep the course self-contained, but students with some VLSI will be able to skip some background material.