Lab on hardware-software digital systems codesign

EE-390(a)

This file is part of the content downloaded from Lab on hardware-software digital systems codesign.

This TP complements previous courses on digital systems design by presenting the complete design of complex systems-on-chip (SoC) that run on Linux with Xilinx FPGAs. We explore high-level synthesis (HLS) as a mechanism to improve productivity in the design of HW.

The complete set of sessions will be given in the lab ELG 022 on Thursdays from 14:15 to 17:00.


February 20th

Introduction to course format and planning.

The structure of the course and evaluation is presented.

Concept of HW-SW co-design for SoC.

Processor access to peripherals and buses. Types of peripherals. Flow of computation in a SoC with accelerators. Example of SoC: Zynq-7000.

Exercises.

Setting up Linux on the Pynq board. Basic peripherals in a SoC.



February 27th

Introduction to co-design with high-level synthesis (HLS)
Introduction to high-level synthesis (HLS)
Levels of optimization and parallelism
Mapping of function arguments to peripheral ports.
Examples of peripherals in HLS
Integration with SW in Linux
Memory & DSP resources in the Zynq 7000 FPGA family

Exercises

Design of combinational peripheral in HLS. Integration in a SoC and use from a Linux application.
Design of sequential peripherals in HLS. Integration in a SoC and use from a Linux application.
Performance characterization (time measurement) in the Pynq board.

March 6th

Design exploration & optimization using HLS

Synthesis flow.
HLS scheduler.
Loop optimizations.


March 13th

Array optimizations in HLS
Types of storage resources.
Array optimizations: partitioning & reshaping.
Combining loop & array optimizations.


March 20th

Cache coherence & virtual memory
Introduction to the concept of virtual memory (VM) and address space protection.
Accessing peripheral registers with MMIO from the address space of a user-level Linux application.
Why memory hierarchies?
Allocating memory suitable for direct memory access (DMA) by peripherals.


March 27th

Interrupts and Linux device drivers


Exercises
Device drivers for FPGA AXI peripherals in Linux


April 3rd

Memory hierarchies. Caches and buses.


April 10th

Dynamic job scheduling across multiple accelerators.


April 17th

Explanation and discussion of final project.


April 24th

EASTER BREAK


May 1st

Work on the final project.

May 8th

Work on the final project.


May 15th

Work on the final project.


PROJECT PRESENTATIONS: May 22nd

FINAL PROJECT PRESENTATIONS