From bc84a5a961e954787a029d1a9caf7c2da9fcd91a Mon Sep 17 00:00:00 2001
From: "n.ramanathan14" <n.ramanathan14@imperial.ac.uk>
Date: Tue, 17 Nov 2020 10:41:44 +0000
Subject: Update on Overleaf.

---
 introduction.tex | 9 +++++++++
 1 file changed, 9 insertions(+)

(limited to 'introduction.tex')

diff --git a/introduction.tex b/introduction.tex
index afbaabe..a5421e4 100644
--- a/introduction.tex
+++ b/introduction.tex
@@ -6,6 +6,15 @@
 
 One current approach to writing energy-efficient and high-throughput applications is to use application-specific hardware, instead of relying on a general-purpose CPU.\@  However, custom hardware designs come at the cost of having to design and produce them, which can be a tedious and error-prone process using hardware description languages (HDL) such as Verilog.  High-level synthesis (HLS) is becoming a viable alternative, allowing designers to describe the hardware in a software programming language such as C, and inferring the hardware design from it.  Can we really trust that the generated hardware functions correctly?  It is often assumed that compilers do not change the behaviour of the original program through it's various transformations, however, as HLS tools perform complex transformations, this might not always be the case.
 
+\NR{
+As latency, throughput and energy efficiency become increasingly important, custom hardware accelerators are being designed for numerous applications~\cite{??}. 
+Alas, designing these accelerators come at a cost of additional engineering effort and risk, since it typically involves designing in hardware description languages (HDL), such as Verilog.
+Designing at HDL level is not only arduous and time-consuming but also it limits the expressiveness and abstraction of computation. 
+As such, high-level synthesis (HLS) is becoming an attractive alternative, since it compiles high-level languages like C/C++ to HDL. 
+HLS compilation is generally realised by leveraging existing software compiler frameworks like LLVM, introducing the possibility of bugs during the translation from C to Verilog.  
+Hence, the premise of this work is: Can we trust these compilers to translate high-level languages like C/C++ to HDL correctly? 
+}
+
 High-level synthesis is becoming increasingly important in the hardware design process.  HLS elevates the level of abstraction, allowing designers to describe behaviour using an untimed representation, which reduces the amount of bugs that could be introduced into the design.  The higher level of abstraction makes it easier to reason about the algorithms and therefore also facilitates maintaining them.  In addition to reducing the time it takes hardware designers to produce hardware, it also reduces the barrier of entry to hardware design for software programmers.  In both cases, correctness of the HLS tool is important, as it hinders the productivity of hardware designers by needing them to check the function correctness of the hardware, whereas software programmers may be unable to properly test the  hardware as they may be unaware of the proper tools.  In addition to that, functional verification of the design becomes much more efficient than at the HDL stage, since the entire software ecosystem can be mobilised for this task.  However, any properties that were proven about the functionality of the design may not hold for the hardware design, which may require separate checks.
 
 %% Definition and benefits of HLS
-- 
cgit 

