Course:
Course Program:
1. Introduction:
Some Basics: Timing, Area, Power, Energy.
What is an Accelerator? What is its difference from coding for other computing units?
2. Fundamentals of High-Level Synthesis
From C code to Accelerator: Input, Output, Dataflow, Control, Scheduling, Resource Allocation.
Design Space. Objectives. Constraints. Compilation. Debug. Functional testing.
3. Revisiting Data Types, Arrays, Pointers for HLS
Limitations and their reasons: uninitialized variables, unbounded loops, system calls, dynamic memory allocation.
4. Revisiting Loops for HLS
Pipelining, Parallelism, Unrolling, Bounds, Dependencies between iterations, Optimizing Loop Counter, Optimizing Loop Control, Nested Loops
5. I/O Scheduling and Memories
Conditional and unconditional I/O. Stream I/O. Array to memory mapping. Designing for throughput.
Textbook:
Reference Books:
- Vivado HLS User Manual (http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_4/ug902-vivado-high-level-synthesis.pdf)
- Vivado HLS Tutorial
Notes:
Grading: (Tentative)
· 60%: weekly implementations at the lectures
· 40%: final project: GROUP projects
o 10%: an initial report for project specifications (details will be announced)
o 15%: final demo
o 15%: final report submission (details will be announced)