High-Level Synthesis with the Vitis Unified IDE
High-Level Synthesis with the Vitis Unified IDE
COURSE CODE: DSP-HLS
This course provides a thorough introduction to high-level synthesis (HLS) using the AMD Vitis™ Unified IDE.
The focus of this course is on:
- Converting C/C++ designs into RTL implementations
- Learning the HLS component development flow
- Creating I/O interfaces for designs
- Applying different optimization techniques to designs
- Improving throughput, area, latency, and logic by using different HLS pragmas/directives
- Exporting IP that can be used with the Vivado™ IP catalog
- Migrating designs from the classic Vitis HLS tool to the Vitis Unified IDE
| 3-Day Instructor-led Course | Price USD | Training Credits |
|---|---|---|
| Hosted Online - $600/day | $1800 | 18 |
| In-Person Public Registration - $600/day | $1800 | 18 |
| Private Training | Learn More | Learn More |
| Coaching | Learn More | Learn More |
Printed Course Book (A PDF book is included in the course fee)
Cannot be purchased without registration. | $200 | 2 |
Scheduled Classes
Live Online Training (Starts at 9am ET)
Be the first to know. Sign up for our newsletter.
Who should attend:
Software and hardware engineers who are looking to utilize high-level synthesis.
Software Tools
- Vitis IDE
- Vivado Design Suite
Hardware
- Architecture: Zynq UltraScale+ MPSoC and Versal AI Core series
- Demo board: Zynq UltraScale+ MPSoC ZCU104 board*
* This course focuses on the Zynq UltraScale+ MPSoC architecture.
Skills Gained
After completing this comprehensive training, you will have the necessary skills to:
- Enhance productivity by using the AMD Vitis Unified IDE for HLS component development
- Describe the HLS component development flow
- Use the Vitis Unified IDE to create an HLS component
- Identify common coding pitfalls as well as methods for improving RTL/hardware code
- Use directives/pragmas to improve throughput, area, latency, and logic and to select RTL interfaces
- Perform system-level integration of IP generated by the Vitis Unified IDE
- Migrate designs from the classic Vitis HLS tool to the Vitis Unified IDE
Course Outline
| Day 1 | Day 2 | Day 3 |
|---|---|---|
| Introduction to High-Level Synthesis Provides an overview of high-level synthesis (HLS), the Vitis Unified IDE for HLS flow, and the verification advantage. {Lecture} HLS Component Development Flow Explores the HLS component development flow in the Vitis Unified IDE. {Lecture, Lab} Abstract Parallel Programming Model for HLS Describes the structuring of a design at a high level using an abstract parallel programming model. {Lecture} Design Exploration with Directives Explores different optimization techniques that can improve design performance. {Lecture} HLS Component Development Using the Command Line Describes the unified command line interface and the v++ and vitis-run commands. {Lecture, Lab} Introduction to Vitis HLS Design Methodology Introduces the methodology guidelines covered in this course and the HLS Design Methodology steps. {Lecture} Introduction to I/O Interfaces Explains interfaces such as the block-level and port-level protocols abstracted by Vitis HLS from a C design. {Lecture} Block-Level Protocols Explains the different types of block-level protocols abstracted by Vitis HLS. {Lecture, Lab} Port-Level I/O Protocols Describes the port-level interface protocols abstracted by Vitis HLS from a C design. {Lecture, Labs} | AXI Adapter Interface Protocols Explains the different AXI interfaces (such as AXI4-Master, AXI4-Lite (Slave), and AXI4-Stream) supported by Vitis HLS. {Lecture} Vitis HLS Code Analyzer Provides an overview of the Vitis Code Analyzer, its features, and how to view generated reports. {Lecture, Lab} Optimizing for Performance: PIPELINE Describes the PIPELINE directive for improving the throughput of a design. {Lecture, Lab} Optimizing for Performance: DATAFLOW Describes the DATAFLOW directive for improving the throughput of a design by pipelining the functions to execute as soon as possible. {Lecture, Lab} Optimizing for Throughput Describes the performance limitations caused by arrays in a design. Also explores optimization techniques to handle arrays for improving performance. {Lecture, Lab} Optimizing for Latency: Default Behavior Describes the default behavior of Vitis HLS on latency and throughput. {Lecture} Optimizing for Latency: Reducing Latency Describes how to optimize the C design to improve latency. {Lecture} | Optimizing for Area and Logic Describes different methods for improving resource utilization and explains how some of the directives have impact on the area utilization. {Lecture, Lab} Optimizing AXI System Performance Describes AXI burst transfers and their types. Also outlines the optimization steps to improve system performance. {Lecture} Vitis HLS Performance Pragma Explains the Vitis HLS Performance pragma and details its step-by-step methodology for achieving performance targets. {Lecture} Vitis HLS Libraries Describes the library support offered by Vitis HLS. {Lecture} Vitis HLS Libraries: Arbitrary Precision Data Types Describes Vitis HLS support for the C/C++ languages as well as arbitrary precision data types. {Lecture, Lab} Using Pointers in Vitis HLS Explains the use of pointers in a design and workarounds for some of the limitations. {Lecture} HLS Component Design Flow – System Integration Illustrates the process of developing and exporting an HLS component as Vivado IP. {Lab} Migrating to the Vitis Unified IDE – HLS Component Describes the need for the Vitis Unified IDE and identifies different approaches for migrating projects from the classic Vitis HLS tool to the Vitis Unified IDE. {Lecture, Lab} |
Please note: The instructor may change the content order to provide a better learning experience.
Prerequisites:
- C or C++ knowledge
- Basic RTL design flow knowledge