ECE/CS 5740/6740 - CAD of Digital Circuits and Systems
CAD of Digital Circuits - Logic Synthesis and
Optimization
Spring 2026
M, W, F, 10:45am - 11:35am, MEB 2325
Instructor, TA and Office Hours
Instructor: Priyank Kalla
Email: kalla@ece.utah.edu
Office: MEB 4112
Office Hours: TBD
TA: TBD
Course Downloadables
Class organization, grading, etc.
Course Syllabus
Course Objective and Description
Canvas access and Class Mailing/discussion List
I have setup Canvas for all the four sections (ECE/CS 5740/6740)
of this course. The Canvas page can be accessed:
from this
URL.
Important: All the course content can be accessed through THIS
website. Canvas will be used for discussions on any course-related topic,
tool usage, and also for uploading programming assignments. I may
upload some lecture videos also on the Canvas page.
Textbook
Title: Logic Synthesis and Verification Algorithms, by
Profs. Gary Hachtel and Fabio Somenzi. Publisher:
Springer. The bookstore is working on making an electronic copy or a coursepack available for the students.
This is what the book looks like.
Grading Policy
Homeworks and Programming Assignments: 20%
Mid-Term Exam I: 15%
Mid Term Exam II: 15%
Final Exam: 25%
Final Project: 25%
Late HW Policy
There will be around 6 HWs. Each HW will have a due date by which
it should be submitted. However, late submissions will be accepted
for 3 extra days with a flat 20% penalty. Canvas site will be
available to accept the HW for 3 more days. [Of course, exceptions
can be made for medical issues, unforseen circuistances...]
Other guidelines
Spring 2026 Price College of Engineering
Guidelines:
here.
Students are bound by
the
ECE academic misconduct policy and
the
University's Student Code. Cheating on homeworks and projects or
plagiarizing constitute academic misconduct in this course and will
result in academic sanction. These include copying solutions from
other students, submitting someone else's code or experiments as
yours, copying the work of others without crediting it to
them. Learning from each other is encouraged, but in the end you have
to solve the problems on your own, and run your own experiments and
make your own observations from those experiments.
Academic misconduct on any assignment will result in a sanction in
this course up to failing the course. The sanctions are the
following:
First offense on a homework/laboratory assignment will result in
a zero on the assignment.
Second offense will result in failure of the course and an
incident report will be submitted to the department and college.
Lecture Notes and Slides
01/05: An
Introduction to CAD and
Synthesis . A few years ago, I gave a crash course lecture: a
basic introduction to the course. It was targeted for those who
don't really have a good idea about what Logic Synthesis is
about. Uploaded here for your perusal.
At a high-level, we will organize the course according to the following set of topics.
Basic Boolean algebra and operations, and intro to covering
problems
01/05 - 01/07: Getting started: Slides on Boolean algebra and
Boolean operations slides_bool_alg.pdf
01/07: Boolean algebra, implementation cost of Boolean functions and basic Boolean operations
Shannon's expansion, Boolean difference, Consensus, Smoothing,
Unate and Binate functions.
Introduce the idea of Binary Decision Diagrams as a graph-based
data-structure for efficient Boolean function representation and
manipulation.
Here are some notes
on Generalized cofactors, and how they can be used for Boolean
function decomposition.
⋮
BDDs and SAT Solvers as core data-structures and synthesis engines
⋮
Two Level Logic and Heuristic Optimization
⋮
Algebraic Kernel-based Multi-level Logic Optimization
⋮
Boolean Decomposition for Multi-level Logic Optimization
⋮
Sequential Logic Optimization
⋮
Technology Mapping
⋮
Logic Synthesis for post-CMOS Technologies
⋮
Course conclusion
Reading Assignments
For the week 01/05-01/09: Chapters 1 and 2 are introductory
chapters that give a brief overview of logic synthesis. I suggest the
class should read these chapters this week. There is no need to get
into the nitty-gritty details, just an overview is what is
required.
Homeworks and Programming Assignments
HWs will be assigned after the first week of classes.
Options for Class Projects
Here is a description of class
projects that you could
pursue. Take a look. I will keep on updating this document as and
when I find more time and more information. Class
project document latest update: Feb 20, 2019..
Many of these projects can easily turn into MS thesis or
projects.
Software, Tools, Benchmarks
Binary Decision Diagrams: The ROBDD Package
To download the Colorado Decision Diagram (CUDD) package
Boolean SAT tools
Many SAT tools are available in public domain. For our purposes,
Lingeling, PicoSAT and/or zCHAFF will suffice.
Linear Program
Download LPSolve - an
integer-linear program solver (executable compiled on LINUX machines)
and some sample .lp files:
SIS-related materials
Espresso - Two-level logic minimizer
Espresso, compiled for Linux
download Espresso
Espresso manual can be downloaded from
at this Berkeley website . BEWARE - there is a whole lot of
information here, most of which you don't need right now. Just run
'espresso -h' (h = help) and you'll figure out most of the stuff.
Here is the 3-input majority
function written in kiss format.
FSM Minimization and State Assignment
State Minimization Download stamina
and an example state machine in fsm.kiss file from here
.
Two-Level State Encoding Download Nova
Multi-level Logic Optimization System: SIS
SIS compiled for linux: Download SIS executable
SIS Manual/paper: SIS paper
.
STD. Cell Library: lib2.genlib
, lib2_latch.genlib
Here are some .blif and .pla files:
des.blif , alu4.pla and 9sym.pla .
Here is file script.rugged
and script.delay .
Utility packages - arrays, lists, symbol tables - for your projects
Packages: tar'ed and
gzipped here .
The ABC tool from Alan Mishchencko, UCB
Go to Alan's website for the ABC synthesis tool and get the ABC
tool. This is the most advanced logic synthesis tool (techniques)
freely available. Link to
Alan's Website is here.
This is an older version of my own personal copy
of compiled linux binary of ABC.
Some benchmarks for experimenting with projects
Here is a gzipped tarball
of a few benchmark designs that you can use for
synthesis experiments and for your class projects.