Electronic Design Automation

Course: ESE535

Units: 1.0 CU
Terms: Spring 2008
When: MW 12--1:30pm
Where: Towne 307
Instructor: DeHon (office hours T4pm)
Required Prerequisite: Helpful background: Offered: roughly in alternate years with ESE534 (last offered as ESE680)
URL: <http://www.seas.upenn.edu/~ese535/>

Quick Links: [Motivation] [Grading] [Syllabus] [Collaboration Policy] [Reading] [Previous Offerings]

Catalog Level Description: Formulation, automation, and analysis of design mapping problems with emphasis on VLSI and computational realizations. Major themes include: formulating and abstracting problems, figures of merit (e.g. Energy, Delay, Throughput, Area, Mapping Time), representation, traditional decomposition of flow (logic optimization, covering, scheduling, retiming, assignment, partitioning, placement, routing), and techniques for solving problems (e.g. greedy, dynamic programming, search, (integer) linear programming, graph algorithms, randomization, satisfiability).


Motivation

Our ability to design interesting and powerful systems is limited by size and complexity---often not from substrate costs, but from human design and management costs. A powerful technique to tackle this limitation is to abstract away details and use higher level building blocks to describe computations and systems. However, when we increase the abstraction it is ultimately necessary to fill in those details---preferably, automatically, without further human intervention. This is a key role of automation and mapping tools: they produce the low-level details, sparing the human designer's time and attention to solve bigger problems.

While this ideal is attractive, the state-of-the-art falls short of giving us the ideal solution for at least two key reasons:

  1. Hard problems---Most of the problems associated with elaborating the details are NP-complete (or worse) and the problem size is increasing over time. Consequently, solving the problems ``optimally'' is seldom tenable. We have a tension of exploiting automation at some cost or expanding precious human time to, perhaps, find a better solution. My observation is that as problems get larger and algorithms refined, we find less and less cases where it is viable to have the human involved in solving the problem even if he/she can find a better solution.
  2. New problems---As our underlying costs, needs, and problems change, it takes time and effort to develop automated solutions to the problems. To date, our problems have evolved more rapidly than they can be solved. Globally, this leaves many problems open or poorly handled. Locally, it means any particular problem you may encounter or create may well be new and unsupported.
As a consequence, novel system designers and researchers exploiting novel media must be prepared to tackle their own automation problems---that is, build their own tools---to advance rapidly into new areas.


Contents

This course is intended to expose students to the key themes, ideas, and techniques in producing correct/efficient/(optimal) mappings of some semantic computation onto a physical computational substrate; in practice, many of the fundamental problems are more widely applicable in engineering than simply mapping computations, but that will be our intellectual focus for this course. The course will not cover the area exhaustively, it but will convey key ideas so the student will know where to look for further details and is aware of the major intellectual tools and analysis developed in this area.

Major themes include:

Rough Lecture Outline

(Actual Spring 2008 Syllabus)
  1. Introduction, Motivation, Overview
  2. Covering
  3. Clustering
  4. Two-level logic
  5. Multi-level logic
  6. Static Timing Analysis
  7. FSM Encoding (Sequential logic)
  8. Concurrent Error Detection
  9. Satisfiability (SAT) solvers
  10. Statistical Static Timing Analysis
  11. Retiming
  12. Simultaneous Retiming and Covering
  13. Partitioning I (formulation and KLFM)
  14. Partitioning II (spectral, maxflow, replication)
  15. Partitioning III (optimal: SAT, pruning search)
  16. Placement I (formulation and constructive)
  17. Placement II (simulated annealing)
  18. Multi-objective covering (area and delay; also simultaneous covering and placement)
  19. High-level Synthesis (C-to-dataflow graph)
  20. Scheduling I (formulation, List Scheduling/Johnson's approximation algorithm)
  21. Scheduling II (force-directed, SAT/ILP, Branch-and-Bound)
  22. Routing I (variants, formulation, channel routing, over-the-cell)
  23. Routing II (Pathfinder [congestion negotiation, FPGA routing])
  24. FSM Equivalence Checking
  25. Processor Verification
  26. Highly parallel algorithms: spatial routing
  27. Highly parallel algorithms: cellular placement

Projects

Course includes one small (2 week) and one larger (4 week) programming project. These are usual new challenges motivated by emerging optimization metrics (e.g. power, fault tolerance) or advancing technologies. Past project themes have included: Variation-aware or variation-tolerant optimizations is a promising consideration for the next offering.


Grading

Rough outline of grading:

Writeups must be done in electronic form. Use CAD or drawing tools where appropriate. Electronic submission will be preferred (and may be required for some assignments). Handwritten assignments and hand-drawn figures are not acceptable.


Collaboration Policy

Each student is expected to do his/her own work -- including developing the details and writing the solutions. For the homeworks, you are free to discuss basic strategies and approaches with your fellow classmates or others, but detail designs, implementations, analysis, and writeups should always be the work of the individual. If you get advice or insights from others that significantly influenced your work, please acknowledge this in your writeups. More specific policy for projects will be included with the project assignments.


Reading, Text, and Lectures

Roughly one paper per lecture is expected reading. Most of the papers will be electronically available through links from the syllabus page (not up, yet). You will be reponsible for acquiring those copies for yourself. Citations for additional reading material will be posted on the web along with the detailed syllabus (most of those also come with links to the papers themsleves). There is no required text as I will be pulling together material form many places. Since this course is not based upon any particular text, following lecture will be essential to keep up with the course material.

For those that want integrated references to backup the reading, consider the following:

@Book{gerez_vlsida99,
  author = 	 {Sabih H. Gerez},
  title = 	 {Alagorithms for VLSI Design Automation},
  publisher = 	 {John Wiley \& Son Ltd},
  year = 	 {1999},
  note = {general reference}
amazon.com link
@Book{reconfigurable_computing_mk2008,
  editor =   {Scott Hauck and Andr\'e DeHon},
  title =    {Reconfigurable Computing: The Theory and Practice of FPGA-Based Computation},
  publisher =    {Elsevier},
  year =     2008,
  series =   {Systems-on-Silicon}
  note = {has a section on major components of tool flow for FPGA-like devices}
amazon.com linnk
@book{clrs_algorithms_mitpress2001,
  author={Thomas Cormen and Charles Leiserson and Ronald Rivest and
  Clifford Stein},
  title={Introduction to Algorithms},
  year=2001,
  edition={2nd},
  publisher={MIT Press},
  note = {general algorithms reference}
 }

amazon.com link


Previous Offering

Past Offerings

At Caltech, Prof. DeHon taught this as a two quarter sequence, with the bulk of the instructional material in the first term.
The second term was focused on a large, student-selected project, but did include additional topics.
André DeHon