Choosing a proper data type is the first step in developing an efficient software or hardware code. 1
These data types define the way that the corresponding values should be saved temporarily in registers 2
or permanently in external memories. 3
This section explains the data type options in HLS their related optimisation and development techniques. 4
Software programming languages usually provide a set of common data types as their built-in components. 5
For example, C++ language built-in data types include bool, char, int, float double, each of which 6
can also have a modifier such as signed, unsigned, short and long. 7
The software languages also provide user-defined data types and complex data type via, struct and enumeration language 8
statements. 9
As you may realize from this slide, the size of software data types are on 8-bit boundaries. 10
A proper data type has a vital role in describing a hardware circuit in HLS. C-based built-in data 11
types are all on 8-bit 12
boundaries such as 8, 16, 32, and 64 bits. Hardware descriptions can use these data types to define 13
their signals and ports. 14
However, most hardware circuits use arbitrary bit-width signals. 15
Therefore, introducing these bit-accurate data types in HLS is essential. 16
For example, a 23-bit data type. 17
Notice that, the built-in C-data types, used in a hardware description, may be optimised by the HLS synthesis 18
tools to the exact bit-with required in the final hardware; 19
however, this is not the case in all designs. 20
This section, which mainly explains the arbitrary-precision integer data types in HLS, consists 21
of 11 lectures. 22
The current lecture introduces the section and talks about its structure. 23
The next lecture will explain how HLS supports native C/C++ data types. Synthesising a specific 24
data type to the corresponding hardware would be the subject of the third lecture. 25
The fourth lecture will introduce the bit-accurate (or arbitrary-precision) data types in Vivado-HLS 26
and how to declare variables of those types. 27
The arbitrary-precision data type variable initialisation would be the topic of the fifth lecture. The sixth 28
lecture will explain the arbitrary-precision variable assignment. 29
How to print the value of an arbitrary-precision variable on the screen would be the primary concern 30
of lecture seven. 31
Lecture eight will review the Vivado-HLS features for arbitrary-precision variable bit-level manipulations. 32
Bit-wise operators would be the topic of the ninth lecture. 33
Lecture 10 will have a look at the shift and rotate operations in Vivado-HLS. 34
Finally, the last lecture will give you a couple of problems to exercise all the concepts and techniques 35
explained throughout this section.