Hardware Software Co-Design

Academic year
Subject Area
Language of Instruction
Other Languages of Instruction
Mode of Delivery
ECTS Credits
2nd Cycle Studies - Mestrado

Recommended Prerequisites

Digital Systems Laboratory, Microprocessor systems, Computer Programming, and Digital Systems Design

Teaching Methods

Lecture classes with detailed presentation, using audiovisual resources, of the concepts, principles and fundamental theories and solving of basic practical exercises to illustrate the practical interest of the subject and exemplify its application to real cases.


Laboratory classes, with lab assignments of growing complexity, initially with a tutorial set of instructions, but later fostering a more autonomou work, and the last assignment is already a full mini-project. 

Learning Outcomes

The main objective is to provide key concepts and skills for the correct execution of modern hardware/software co-design. At the end students will be able to have an integrated view and be able to explore the full design space that current techonlogues enable for digital systems, and that will become more prevalent in the near future due to the slow down of Moore’s Law, that forces a renewed focus on design and optimization.  Starting from a software solution, they should be able to profile and accelerate critical parts on hardware, as well as partition for a given problem the hardware and software, and also use high level descriptions to allow concurrent hardware and software development and optimizations in the partitioning. 


The course objectives and planned work lead the students to acquire competencies in synthesis and analysis, written communication, problem solving, critical reasoning, autonomous learning, and practical application of theoretical knowledge.

Work Placement(s)



In summary the course starts by differentiating general purpose processors and custom processors and systems, addressing HS/SW boundaries and interfaces and how soft-cores and hardware accelerators can be used to improve overall performance. A broad and encompassing view on digital computing solutions is given, and the focus on codesign is structured as follows:

- Basic Concepts: The Nature of Hardware and Software; Data Flow Modelling and Transformation; Data Flow Implementation in Software and Hardware; Analysis of Control Flow and Data Flow;

- The Design Space of Custom Architectures; Finite State Machine with Datapath; Microprogrammed Architectures, Hardware Accelerators; General-Purpose Tuneable Soft Cores; System on Chip

- Hardware/Software Interfaces; Principles of Hardware/Software Communication; On-Chip Busses; Microprocessor Interfaces; Hardware Interfaces

-High level synthesis for H/S co-design.

Head Lecturer(s)

Jorge Nuno de Almeida e Sousa Almada Lobo

Assessment Methods

Laboratory work or Field work: 20.0%
Project: 40.0%
Exam: 40.0%


Bibliografia principal / key bibliography

• P. Schaumont (2013), A practical Introduction to Hardware/Software Codesign, Springer 2013

• Vahid/Givargis (2002),  Embedded Systems Design: A Unified Hardware/Software Introduction

• Altera NIOS II tutorials and documentation

• Altera DE1-SoC tutorials and documentation