System design is the central topic of this course. We move beyond the methods developed in circuit design (although we shall have interest in those) and consider situations in which the functional behavior of a system is the first object under consideration. There will be an introduction to modeling methods that can be used in the context of system design, followed by a discussion of the main issues that are to be considered when one want to design a system that satisfies a number of relevant performance indices. We start out with a classical situation in which topics such as space, time and processing cycle are the objects to be optimized on. This will lead to a quest for a variety of optimization methods depending on what kind of information can be assumed chosen and on which data the optimization procedure is going to be executed on. Optimization theory and operations research will always be right around the corner. The particular topics to be covered are:

  • optimization in time and space: we consider this classical problem as it arises in systems synthesis.
  • Various methods for scheduling and resource binding will be considered.
  • timing optimization and retiming of state machines: we consider the problem of optimizing a state diagram and timing behavior in the context of the signal flow diagram of a sequential system.
  • algorithmic complexity and the NP problem: we encounter the problem of algorithmic complexity and how meaningful statements can be made about it.
  • Static timimg analyzes.

The way we intend to run the course is as follows:

  • We follow the main topics in the book of De Micheli. It covers pretty much the material needed. We do that by agreeing to read before class, discuss problems in the book, and work out systematic questions from it.
  • One laboratory exercise.
  • We read a relevant paper from the literature.

What will you learn from this course?

After the course, you will know:

  • how to set up and use a ‘design methodology’ for complex data processing systems, in particular you will know how to set up its ‘design space’ and how to explore it.
  • you will have worked out a nice example in design methodology.
  • you will know how to make parallel implementations for algorithms and how to use a paralleling compiler for that purpose.
  • you will be capable of designing an ’embedded system for signal processing’.

Preliminary knowledge

To follow this course with profit, you need elementary background knowledge in the following topics:

  • Digital Signal Processing
  • Computer Architecture
  • Boolean algebra and discrete mathematics
  • System optimalization.
Creative Commons License
Methods and Algorithms for System Design by TU Delft OpenCourseWare is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at https://ocw.tudelft.nl/courses/methods-and-algorithms-for-system-design/.
Back to top