Tutorial on hardware programming with Seashell

This tutorial is targeted to introduce hardware programming in high-level languages to C programmers or hardware programmers interested in moving into high level synthesis. This tutorial will use: * Seashell, which is a type overlay to ensure hardware safety of your program and porgram synthesis to C/C++ * Buildbot, which is infrastructure created to submit a seashell program and receive hardware results

Buildbot itself hides away some other tools that can be replaced with different tools, * Vivado HLS, which is a C/C++ to Verilog/VHDL translator on top of Vivado synthesis tool flow * Xilinx Zedboard SoC development board, which has an arm CPU and a Zync FPGA with memory and interconnections which have some configurability

Prerequisites

We’ll be going through the following examples to get familiarized with the tools and to use the infrastructure to create interesting programs.

  1. vector-vector add on host processor
  2. vector-vector add on reconfigurable hardware controlled by the host processor
  3. optimized vector-vector add on reconfigurable hardware controlled by the host processor
  4. matrix multiplication
  5. convolution