0
1
00:00:01,280 --> 00:00:07,100
Despite all the benefits of the FPGA technology, FPGA-based design can be a real challenge. 
1

2
00:00:07,580 --> 00:00:13,820
Implementing logic circuits and computing algorithms on an FPGA requires its own design flow and 
2

3
00:00:13,820 --> 00:00:14,380
techniques.
3

4
00:00:15,080 --> 00:00:19,930
This lecture briefly explains different levels of abstractions in the FPGA design flow. 
4

5
00:00:21,740 --> 00:00:28,850
Low-level design flow based on logic gates such as AND, OR and NOT was the first design flow for implementing 
5

6
00:00:28,850 --> 00:00:30,890
simple logic circuits on FPGAs. 
6

7
00:00:31,430 --> 00:00:35,840
Using this approach, designers can implement simple circuits on small FPGAs. 
7

8
00:00:37,830 --> 00:00:43,620
With the increase in the number of resources available on new FPGAs and their high design capacity, 
8

9
00:00:43,800 --> 00:00:50,730
Register Transfer Level (RTL) design approach became a standard which still is used by many designers. 
9

10
00:00:51,390 --> 00:00:57,970
VHDL and Verilog are the two widely adopted RTL languages among the designers in industry and academia. 
10

11
00:00:59,290 --> 00:01:04,930
The high demand for computational power and the unique features of advanced FPGAs have motivated 
11

12
00:01:04,930 --> 00:01:11,320
designers to propose a higher-level design approach to map complex algorithms on an FPGA with less effort. 
12

13
00:01:11,800 --> 00:01:17,500
Therefore, High-level synthesis (HLS) design techniques, in which software languages such as C/C++ 
13

14
00:01:17,500 --> 00:01:22,390
are used for design description is proposed. In this design approach, 
14

15
00:01:22,420 --> 00:01:27,850
the HLS toolsets are responsible for automatically synthesising the C description into an efficient 
15

16
00:01:27,850 --> 00:01:28,590
hardware circuit. 
16

17
00:01:29,790 --> 00:01:36,060
Hardware Design Languages (HDLs) such as VHDL and Verilog are the standard way for describing a design at 
17

18
00:01:36,060 --> 00:01:42,450
gate-level or RTL. These languages are used to describe the functionality and timing of a hardware 
18

19
00:01:42,450 --> 00:01:42,840
circuit.
19

20
00:01:43,710 --> 00:01:48,960
There is also a close relationship between the language statements and the hardware resources available 
20

21
00:01:48,960 --> 00:01:49,830
on an FPGA.
21

22
00:01:51,480 --> 00:01:57,600
These features make the design process tedious as designers should have in-depth knowledge about the 
22

23
00:01:57,600 --> 00:02:03,510
hardware timing and resources. The HDL languages are usually compared with the assembly languages 
23

24
00:02:03,510 --> 00:02:04,230
in software.
24

25
00:02:05,570 --> 00:02:11,360
The HLS uses high-level software-based languages that are used to describe the design functionality. And 
25

26
00:02:11,360 --> 00:02:17,060
it is the responsibility of the HLS toolset to extract the timing and hardware resources, automatically. 
26

27
00:02:18,350 --> 00:02:25,010
This approach helps the designers with low hardware knowledge to map complex algorithms and applications 
27

28
00:02:25,010 --> 00:02:26,080
on a given FPGA.
28

29
00:02:26,570 --> 00:02:32,780
Therefore, rapid advances in FPGA applications have been possible with using High-Level Synthesis techniques.
29

30
00:02:34,660 --> 00:02:39,430
HLS is pretty hot these days, and it is a topic which is definitely here to stay.
30

31
00:02:40,340 --> 00:02:46,570
HLS is a set of coding styles, optimisation techniques, and synthesis tools to map a software function 
31

32
00:02:46,570 --> 00:02:48,820
onto a hardware platform such as FPGA. 
32

33
00:02:49,920 --> 00:02:55,590
Notice that using HLS with specific coding styles and optimisation directives enables us to 
33

34
00:02:55,590 --> 00:02:59,580
map almost any logical or mathematical function on a given FPGA. 
34

35
00:03:01,220 --> 00:03:07,280
Several companies are using HLS techniques to design their hardware products including Nvidia 
35

36
00:03:07,280 --> 00:03:14,810
in designing Tegra embedded GPU, Google in building VP9 encoder/decoder, Qualcomm in image processing
36

37
00:03:15,110 --> 00:03:20,780
AMD in designing microprocessors,  ST Micro in implementing H.265.
37

38
00:03:22,730 --> 00:03:28,850
Both FPGAs and CPUs can be used to implement logical and computational functions. But what are their 
38

39
00:03:28,850 --> 00:03:30,890
differences? In the following lecture, 
39

40
00:03:31,010 --> 00:03:35,120
I briefly explain the underlying difference between these two computing platforms.
40

41
00:03:36,130 --> 00:03:41,950
The takeaway messages from this lecture are: HLS is a new hardware design approach, and it is a 
41

42
00:03:41,950 --> 00:03:48,130
topic which is definitely here to stay. HLS is the preferable design approach to map a complex algorithm 
42

43
00:03:48,130 --> 00:03:53,260
on a given FPGA. HLS can also be used for designing traditional logic circuits
43

44
00:03:55,030 --> 00:03:56,320
Now, the quiz of this lecture, 
44

45
00:03:57,410 --> 00:04:03,380
Which design level is more suitable for implementing a machine-learning algorithm on an FPGA? And Why?
45

46
00:04:05,610 --> 00:04:12,720
Gate level based on VHDL language,  RTL based on Verilog language,  HLS based on C/C++
