Skip to the content of the web site.

ECE423: Embedded Computer Systems

General Information

Course Name: Embedded Computer Systems

Hours per Week: Lecture = 3, Tutorial = 1, Lab = 1.5

Next Offering: Winter 2015

Class, tutorial and lab times: TBD

Calendar Description

Specification and design of embedded systems, specification languages, hardware/software co-design, performance estimation, co-simulation, verification, validation, embedded architectures, processor architectures and software synthesis, system-on-a-chip paradigm, retargetable code generation and optimization, verification and validation, environmental issues and considerations.

Why should you take this course?

The embedded system industry is arguably the dominant force in the development and commercialization of digital systems. Over 99% of all processors produced nowadays are shipped as part of embedded systems. Many embedded markets are among the most competitive in the whole industry (ex: smartphones). Being able to co-optimize both the hardware and software platform is paramount to gain a competitive advantage.

  • Learn key skills required by the industry: companies such as Blackberry, Qualcomm, ARM, etc., actively seek engineers with key skills imparted by this course: 1) reason about complex trade-offs in terms of cost, performance, power consumption, etc.; 2) understand the relation between hardware architectural choices and software components; 3) maintain a holistic view of system design.
  • Strengthen your understanding of computer architecture: for students interested in computer architecture, ECE 423 provides a natural continuation of the topics covered in ECE 429. In particular, it covers topics in embedded processor architecture (general purpose vs application-specific instruction processor vs gpgpu vs coprocessor vs reconfigurable logic), interconnects and system-on-chip design.
  • Become an embedded systems specialist: for students directly interested in the area of embedded systems, ECE 423 provides a companion course to ECE 455. ECE 455 introduces software technologies, models, languages and analysis methods for embedded systems. ECE 423 extends these concepts to the combined design of hardware/software systems.

Course Description

Embedded systems are omnipresent; they range from consumer products such as cell-phones to safety-critical systems such as cars and airplanes. An embedded system is designed to support a specific set of functionalities and must typically satifisy stringent requirements in terms of cost, performance, power consumption, timing, etc. To meet such requirements, the System-on-Chip (SoC) paradigm is becoming increasingly popular, where all components of the electronic system are integrated on a single chip.

The goal of ECE 423 is to provide students with the knowledge and skills to design modern embedded systems. The course takes a requirement-driven design approach, where a functional specification is derived from a set of system requirements and then mapped into hardware and software components. A significant portion of the course is devoted to performance estimation of hardware-software systems, co-design and design space exploration. The key problem we try to solve is the follow: given a functional specification of the desired system, how do we decide which functionalities should be implemented in hardware rather than software? How do we validate that the designed hardware/software system will meet requirements?

To address such questions, the course also introduces students to existing alternatives in embedded processor and interconnect architecture, as well as general SoC design methodologies. The course project provides further on-hand experience on major phases in the development lifecycle of a SoC-based embedded system.

List of Topics

The course content has been revised based on received feedback (first offering in Winter 2014) to streamline the material. The next offering will cover the following main topics:

  • Embedded Systems and SoC Design
  • Embedded Architectures: Processing Elements
  • Embedded Architectures: On-Chip Interconnects and Memory Systems
  • Models of Computation and Scheduling
  • Performance Estimation
  • System Software For Embedded Multicores
  • HW/SW Codesign and Design Space Exploration

Lab Description

The lab component of the course consists of a system design project used to expose the students to major aspects of the embedded systems development cycle, including: system-level co-design, design space exploration and optimization, integration and validation. Students work in groups of 3 to design, implement, integrate and test a simplified video decoder application. The project represents a natural evolution of the techniques learned in the ECE 224/325 project, employing a more complex platform: a heterogenous multicore platform on FPGA.


ECE 224/325: the course assumes basic understanding of microprocessor architecture, interfacing, synchronization and bus structures. The students are also assumed to be familiar with Altera Quartus Development tools.

Some understanding of OS fundamentals and digital design is also beneficial. Students who are interested in the course but did not take one of ECE 254 or ECE 429 or ECE 455 (or equivalent) are invited to contact the instructor. Note that while ECE 327 is listed as a prerequisite, it can be waived for students with a sufficient understanding and/or interest in digital design.

Course Materials

All course materials will be made available through Learn, including course slides, lab manual and assignments.


The course grade will be based on a midterm examination, final examination and lab project.