Hardware/Software Codesign - ECE 4530

Course Summary

How will you select a microprocessor for your next embedded project? Would you develop software for the whole project or are there some parts that would be much more efficient when implemented in hardware?

Modern embedded systems are not just software or hardware, they're both. A smart designer is one that knows how to partition the system into software and hardware components, using an architecture strategy that will optimize performance, power consumption, development time, and cost.

This course goes to the root of this design problem. We will look into issues such as how to make software run faster by adding hardware coprocessors, how to design custom-instruction set processors, and how to optimize of memory-bandwidth and bus-bottlenecks in general-purpose architectures.

Syllabus fall 2016

The Codesign Challenge

This course relies heavily on hands-on and projects. Every course includes a 'codesign challenge', an open-ended assignment that is graded based on the performance-rank obtained by students (that is, better solutions get more points, and better solutions are those which have a better performance than other solutions).

The following figure captures the performance of the class as a group over the years. The X-axis is the log10 speedup over the reference implementation. The Y-axis enumerates the student population.

Class Performance

The most remarkable feature of the data is the very large spread in results: within a single year, the best design is several orders of magnitude better, in terms of performance, than the average design. This exponential variation seems to come naturally with the open-ended nature of the assignment.

Below, you find the assignments and results from the previous years. Explore, have fun and try to outperform the top design of any year!

2017 - Correlator

2016 - Star Map Plotter

2015 - I am Seeing Circles

2013 - SHA-1 Collision Searcher

2012 - Mandelbrot Fractal Generator

2011 - Bit Matrix Multiplication

2010 - Fast Fourier Transform

2009 - Monster Multiplier Madness

2008 - Bit Counting

2007 - CORDIC