ISCA 2024 tutorial
The ESP Approach to Agile Chip Design

Latest update: 2024-06-20


Tutorial date: Saturday June 29 or Sunday June 30, 2024.

Tutorial venue: Hilton Buenos Aires.

Tutorial registration: Instructions.

Preliminary setup: Instructions.

Hands-on tutorial steps: (COMING SOON!).

If you are interested in attending this tutorial, please be sure to sign up for it when registering for ISCA.

Tutorial Overview

Energy-efficient, high-performance computing requires the integration of specialized accelerators with general-purpose processors. Designing such systems, however, imposes a difficult set of challenges, particularly for small teams. Integrating and verifying many components, potentially designed by different teams with different tools, into a single SoC is already a difficult task. Arriving at functional FPGA prototypes and real silicon implementations further increases the complexity exponentially. In this tutorial, we present ESP, an open-source platform to support research on the design and programming of heterogeneous SoC architectures. By combining a scalable, modular, tile-based architecture with a flexible system-level design methodology, ESP simplifies the design of individual accelerators and automates their hardware/software integration into complete SoCs. This tutorial focuses on recent developments to ESP for ASIC design, which are backed by real silicon implementations.

In the first part of the tutorial, attendees will be given a hands-on introduction to ESP, showing them how to design a new custom accelerator for ESP, how to generate an FPGA bitstream for a complete SoC featuring that accelerator, and how to deploy software applications that invoke the accelerator. We will also demo new extensions to the ESP network-on-chip that enhance the flexibility of on-chip communication for many-accelerator SoCs.

The next section of the tutorial will focus on ASIC design of ESP SoCs. We will leverage an open-source process design kit (PDK) to integrate memories, pads, and clock generators into the design. Next, we will show how to perform functional verification of the SoC – both with the RTL design and synthesized netlists – and describe how the same tests can be leveraged to perform bring-up on the fabricated silicon thanks to our provided test infrastructure. Finally, we will show how to prepare the design for synthesis and place and route and discuss some best practices for physical design based on our experience with two complex silicon implementations.

The last part of the tutorial focuses on the design and integration of embedded FPGAs into ESP-based SoCs. We first demonstrate the design and tool flow to generate the RTL of the custom FPGA, leveraging the open-source OpenFPGA framework to automate this process. We then describe the architectural modifications and new components designed to enable the integration of an FPGA fabric inside ESP alongside CPUs, memory, I/O peripherals, and fixed-function accelerators. Finally, we demonstrate the compilation and execution flow of applications targeting the embedded FPGA inside ESP.

For more information check out the Github release, the Publications page and the Tutorials and talks page on this website.

Back to top

Preliminary setup

If they wish, participants have the opportunity to try the parts of the tutorial that don’t require licensed CAD tools or FPGAs. Doing so requires to go through some preliminary setup before the beginning of the tutorial. There are two options:

  • use the Docker image for the ESP tutorial: instructions.

  • install on your machine the packages and tools required by ESP: instructions.

Back to top


Time Agenda Material
9:00-9:20 am Overview Slides
9:20-9:40 am How to: Design an accelerator with SystemC and Stratus HLS Tutorial
9:40-10:00 am How to: Accelerator integration, FPGA prototyping, and software development Tutorial (single-core)
Tutorial (multi-core)
10:00-10:20 am Break  
  Deplyoing Software Applications on Many-Accelerator SoCs  
10:20-10:35 am How to: Software development with the ESP accelerator invocation and performance monitors APIs Tutorial (many-accelerator)
Tutorial (monitors-api)
10:35-10:50 am Case Study: Complex data dependencies on the Wide-Area Motion Imagery (WAMI) application Paper
  ASIC Design with ESP  
10:50-11:05 am Case Study: Prior ESP Chip Designs ESP at ISSCC
ESP’s First Chip
11:05-11:25 am How to: prepare an SoC for ASIC design with the Skywater PDK Tutorial
11:25-11:35 am How to: Verify and test an ESP ASIC ASIC Methodology Paper
  Supporting Embedded FPGAs in ESP  
11:35-12:00 pm Case Study: eFPGA integration in the ESP archietcutre with OpenFPGA OpenFPGA
12:00-12:20 pm How to: accelerator compilation, bitstream generation, and programming flow for eFPGA-SoCs  
12:20-12:30 pm Teaching with ESP and concluding remarks Paper

Back to top

Video recording


Back to top


System-Level Design (SLD) group at Columbia University, New York.


Luca P. Carloni is professor and chair of Computer Science at Columbia University in the City of New York. He holds a Laurea Degree Summa cum Laude in Electronics Engineering from the University of Bologna, Italy, and the MS and PhD degrees in Electrical Engineering and Computer Sciences from the University of California, Berkeley. His research interests include heterogeneous computing, system-on-chip platforms, embedded systems,and open-source hardware. He coauthored over one hundred and seventy refereed papers. Luca received the NSF CAREER Award, the Alfred P. Sloan Research Fellowship, and the ONR Young Investigator Award. He is an IEEE Fellow.

Kuan-Lin Chiu is a PhD student in Computer Science at Columbia University. He received his BS degree in Engineering Science and Ocean Engineering from National Taiwan University and MS degree in Electrical and Computer Engineering from University of California, Los Angeles. His research interests include system-level design methodologies for heterogeneous system-on-chip platforms, focusing on hardware accelerators and on-chip data movement for image processing and machine learning.

Biruk Seyoum received his PhD from the Real-Time Systems (ReTiS) Laboratory of Scuola Superiore Sant’Anna. He is currently a post-doctoral research scientist in the System-Level Design group at Columbia university. His research interests include design and implementation of heterogeneous architectures for reconfigurable platforms, design tools and applications for dynamic partially reconfigurable platforms, and FPGA-based deep neural network acceleration.

Joseph Zuckerman is a Computer Science PhD candidate at Columbia University, working in the System-Level Design group. His research interests include agile design methodologies, novel architectures, and runtime optimization of heterogeneous systems-on-chip. He is the recipient of an NSF Graduate Research Fellowship and previously completed his bachelor’s degree in electrical engineering at Harvard University in 2019. Joseph currently leads the development of ESP.

Back to top