I offer this course as an elective at the Department of Electrical Engineering, IIT Madras. This course introduces multiple computationally hard problems in the physical design flow. The introductory module comprises Mixed-Integer Linear Programming formulation of various graph problems. This is used as a running approach to obtain optimal solutions in exponential runtime. Students implement various polynomial time heuristic approaches in the literature and compare the quality of solution and runtime against the MILP formulation. To wrap the course, students build a working prototype of one of the steps in the physical design flow such as global placement and detailed routing, whose input/outputs match the industry standard LEF/DEF formats.
The textbook followed is: VLSI Physical Design: From Graph Partitioning to Timing Closure, A. B. Kahng, J. Lienig, I. L. Markov, and J. Hu.
Python notebooks used for tutorials and assignments in the class are available here: EE5333_tutorials
This is a PG core/elective that was offered by Prof. Janakiraman at the Department of Electrical Engineering, IIT Madras. I have been the instructor for this course for the past couple of years. A variant of the course material covered by him is on YouTube. The course offered in-person at IITM has a lab component in which students use opensource tools Ngspice, Xschem, Klayout, Yosys, OpenSTA, and OpenLane to perform schematic simulation of transistors and eventually design and layout an ALU block such as adder/multiplier using the openly available Skywater 130nm PDK.