0
1
00:00:01,060 --> 00:00:06,370
Choosing a proper data type is the first step in developing an efficient software or hardware code. 
1

2
00:00:07,270 --> 00:00:13,180
These data types define the way that the corresponding values should be saved temporarily in registers 
2

3
00:00:13,180 --> 00:00:15,400
or permanently in external memories. 
3

4
00:00:16,360 --> 00:00:22,960
This section explains the data type options in HLS their related optimisation and development techniques.
4

5
00:00:25,020 --> 00:00:30,960
Software programming languages usually provide a set of common data types as their built-in components. 
5

6
00:00:31,650 --> 00:00:40,560
For example, C++ language built-in data types include bool, char, int, float double, each of which 
6

7
00:00:40,560 --> 00:00:45,050
can also have a modifier such as signed, unsigned, short and long. 
7

8
00:00:45,810 --> 00:00:52,650
The software languages also provide user-defined data types and complex data type via, struct and enumeration language 
8

9
00:00:52,650 --> 00:00:53,390
statements.
9

10
00:00:54,240 --> 00:01:00,120
As you may realize from this slide, the size of software data types are on 8-bit boundaries. 
10

11
00:01:02,770 --> 00:01:09,700
A proper data type has a vital role in describing a hardware circuit in HLS. C-based built-in data
11

12
00:01:09,700 --> 00:01:11,560
types are all on 8-bit 
12

13
00:01:11,560 --> 00:01:21,340
boundaries such as 8, 16, 32, and 64 bits. Hardware descriptions can use these data types to define
13

14
00:01:21,340 --> 00:01:22,680
their signals and ports. 
14

15
00:01:22,900 --> 00:01:27,010
However, most hardware circuits use arbitrary bit-width signals. 
15

16
00:01:27,230 --> 00:01:31,620
Therefore, introducing these bit-accurate data types in HLS is essential. 
16

17
00:01:31,900 --> 00:01:34,210
For example, a 23-bit data type. 
17

18
00:01:34,750 --> 00:01:41,320
Notice that, the built-in C-data types, used in a hardware description, may be optimised by the HLS synthesis
18

19
00:01:41,320 --> 00:01:44,890
tools to the exact bit-with required in the final hardware; 
19

20
00:01:45,160 --> 00:01:48,040
however, this is not the case in all designs.
20

21
00:01:50,800 --> 00:01:56,530
This section, which mainly explains the arbitrary-precision integer data types in HLS, consists 
21

22
00:01:56,530 --> 00:01:57,730
of 11 lectures.
22

23
00:01:58,210 --> 00:02:02,340
The current lecture introduces the section and talks about its structure.
23

24
00:02:03,950 --> 00:02:10,910
The next lecture will explain how HLS supports native C/C++ data types. Synthesising a specific 
24

25
00:02:10,910 --> 00:02:14,890
data type to the corresponding hardware would be the subject of the third lecture. 
25

26
00:02:15,530 --> 00:02:21,590
The fourth lecture will introduce the bit-accurate (or arbitrary-precision) data types in Vivado-HLS
26

27
00:02:21,590 --> 00:02:24,050
and how to declare variables of those types.
27

28
00:02:25,000 --> 00:02:31,030
The arbitrary-precision data type variable initialisation would be the topic of the fifth lecture. The sixth 
28

29
00:02:31,030 --> 00:02:34,480
lecture will explain the arbitrary-precision variable assignment. 
29

30
00:02:35,530 --> 00:02:40,750
How to print the value of an arbitrary-precision variable on the screen would be the primary concern
30

31
00:02:40,750 --> 00:02:41,770
of lecture seven.
31

32
00:02:43,180 --> 00:02:49,330
Lecture eight will review the Vivado-HLS features for arbitrary-precision variable bit-level manipulations.
32

33
00:02:50,880 --> 00:02:55,180
Bit-wise operators would be the topic of the ninth lecture.
33

34
00:02:55,220 --> 00:02:59,240
Lecture 10 will have a look at the shift and rotate operations in Vivado-HLS.
34

35
00:03:00,060 --> 00:03:05,370
Finally, the last lecture will give you a couple of problems to exercise all the concepts and techniques 
35

36
00:03:05,370 --> 00:03:06,810
explained throughout this section.
