-
Notifications
You must be signed in to change notification settings - Fork 154
Expand file tree
/
Copy pathpreface.tex
More file actions
19 lines (12 loc) · 3.46 KB
/
preface.tex
File metadata and controls
19 lines (12 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
% !TeX root = main.tex
\chapter*{Preface}
\addcontentsline{toc}{chapter}{Preface}
\begin{aside}
``When someone says, 'I want a programming language in which I need only say what I wish done', give him a lollipop.'' -Alan Perlis
\end{aside}
This book focuses on the use of algorithmic high-level synthesis (HLS) to build application-specific FPGA systems. Our goal is to give the reader an appreciation of the process of creating an optimized hardware design using HLS. Although the details are, of necessity, different from parallel programming for multicore processors or GPUs, many of the fundamental concepts are similar. For example, designers must understand memory hierarchy and bandwidth, spatial and temporal locality of reference, parallelism, and tradeoffs between computation and storage.
This book is a practical guide for anyone interested in building FPGA systems. In a university environment, it is appropriate for advanced undergraduate and graduate courses. At the same time, it is also helpful for practicing system designers and embedded programmers. The book assumes the reader has a working knowledge of C/C++ and includes substantial sample code. In addition, we assume familiarity with basic computer architecture concepts (pipelining, speedup, Amdahl's Law, etc.). Knowledge of the RTL-based FPGA design flow is helpful, though not required.
The book includes several features that make it particularly valuable in a classroom environment. Each chapter contains questions that challenge readers to solidify their understanding of the material. There are associated projects and labs developed and used in the HLS class (UCSD CSE 237C) that are available on Read the Docs (\url{https://pp4fpgas.readthedocs.io/}). The projects teach HLS concepts using examples from digital signal processing, with a focus on developing wireless communication systems. Each project is roughly associated with one chapter in the book. The labs aim to help understand how to integrate HLS designs into an FPGA system on chip. The projects and labs have reference designs targeting FPGA boards distributed through the AMD University Program (\url{https://www.amd.com/en/corporate/university-program.html}). The FPGA boards are available for commercial purchase. The \VHLS are freely available.
This book is {\em not} primarily about HLS algorithms. Many excellent resources provide details about the HLS process, including algorithms for scheduling, resource allocation, and binding \cite{micheli1994synthesis, gupta2004spark, coussy2010high, gajski2012high}. This book is valuable as supplementary material in a course that focuses on these concepts, offering students an idea of how the algorithms fit together coherently and providing concrete use cases of applications developed in an HLS language. This book is also {\em not} primarily about the intricacies of FPGA architectures or RTL design techniques. However, it may be valuable as supplementary material for those looking to understand the system-level context.
This book focuses on using HLS tools to implement designs, in particular \VHLS for translating C-like code to RTL. C programming examples are given that are specific to the syntax used in \VHLS. In general, the book explains not only \VHLS specifics, but also the underlying generic HLS concepts that are often found in other tools. We encourage readers with access to different tools to understand how these concepts are interpreted in the HLS tools they use.
Good luck and happy programming!