Basic HLS Tutorial - so-logic

Basic HLS Tutorial

using C++ language and Vivado Design Suite to design two frequencies PWM modulator system

January 25, 2017

Contents

1 INTRODUCTION

1

1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Purpose of this Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.3 Objectives of this Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.4 One Possible Solution for the Modulator Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.5 About HLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.6 Design Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.7 Vivado HLS Design Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 DEVELOPING CUSTOM IP CORE USING HLS

11

2.1 Create a New Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Develop C Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3 Verify C Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.3.1 C Simulation Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.4 Synthesize C Algorithm into an RTL Implementation (High-Level Synthesis) . . . . . . . . . . . . . . . . . 26

2.4.1 C Synthesis Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.4.2 C Synthesis Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.4.3 Clock, Reset, and RTL Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.4.4 Applying Optimization Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.4.4.1 Clock, Reset, and RTL Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.4.4.2 Optimizing for Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.4.4.3 Optimizing for Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.4.4.4 Optimizing for Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2.5 Verify the RTL Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.5.1 Using C/RTL Co-Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

2.5.2 Analyzing RTL Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

2.6 Package the RTL Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

2.6.1 Packaging IP using IP Catalog Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

3 USING DEVELOPED IP CORE IN VIVADO DESIGN SUITE

71

Index

76

CONTENTS ii

List of Figures

1.1 Example of the PWM signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Sine wave with 256 samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Design Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Vivado HLS Design Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5 Example of performance tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1 The Vivado HLS Welcome Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Project Configuration dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Add/Remove Files dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Save As dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.5 Add/Remove Files dialog box with added C++ file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.6 Add/Remove Files dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7 Save As dialog box with testbench file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.8 Add/Remove TestBench Files dialog box with added testbench file . . . . . . . . . . . . . . . . . . . . . 16 2.9 Solution Configuration dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.10 Device Selection Dialog dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.11 Solution Configuration dialog box with selected board . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.12 Vivado HLS Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.13 Vivado HLS GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.14 Source folder with modulator.cpp file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.15 Test Bench folder with modulator_tb.cpp file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.16 Run C Simulation button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.17 C Simulation dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.18 Console window showing message about successful simulation . . . . . . . . . . . . . . . . . . . . . . . 25 2.19 Explorer window with C Simulation Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.20 Run C Synthesis button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.21 Information pane with synthesis report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.22 Outline tab with selected Performance Estimates option . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.23 Performance Estimates report - Timing Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.24 Performance Estimates report - Loop Latency Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.25 Utilization Estimates report - Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.26 Utilization Estimates report - Detail Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.27 Interface report - Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download