summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main.tex2
-rw-r--r--method-new.tex50
-rw-r--r--related.tex2
3 files changed, 28 insertions, 26 deletions
diff --git a/main.tex b/main.tex
index 44cf1d6..2ceeea6 100644
--- a/main.tex
+++ b/main.tex
@@ -3,7 +3,7 @@
\usepackage[english]{babel}
\usepackage{graphicx}
\usepackage{siunitx}
-\usepackage{minted}
+\usepackage{minted}\setminted{baselinestretch=1,linenos,numbersep=5pt}
\usepackage{amsthm}
\usepackage{pgfplots}
\usepackage{tikz}
diff --git a/method-new.tex b/method-new.tex
index a3ad2ba..434d2e2 100644
--- a/method-new.tex
+++ b/method-new.tex
@@ -44,32 +44,32 @@ The ability to customise program generation is vital for our work since we want
Configuring Csmith to generate HLS-friendly programs is mostly an exercise of reducing and restricting feature probabilities.
-\begin{table}[]
+\begin{table}
\centering
- \begin{tabular}{l|l}
- \hline
- Properties/Parameters & Change \\
- \hline
- \code{statement\_ifelse\_prob} & Increased \\
- \code{statement\_for\_prob} & Reduced \\
- \code{statement\_arrayop\_prob} & Reduced \\
- \code{statement\_break/goto/continue\_prob} & Reduced \\
- \code{float\_as\_ltype\_prob} & Disabled \\
- \code{pointer\_as\_ltype\_prob} & Disabled \\
- \code{void\_prob} & Disabled \\
- \code{union\_as\_ltype\_prob} & Disabled \\
- \code{more\_struct\_union\_type\_prob} & Disabled \\
- \code{safe\_ops\_signed\_prob} & Disabled \\
- \code{binary\_bit\_and/or\_prob} & Disabled \\
- \code{-{}-no-packed-struct} & Enabled \\
- \code{-{}-no-safe-math} & Enabled \\
- \code{-{}-no-embedded-assigns} & Enabled\\
- \code{-{}-no-argc} & Enabled\\
- \code{-{}-max-funcs} & 5 \\
- \code{-{}-max-block-depth} & 2 \\
- \code{-{}-max-array-dim} & 3 \\
- \code{-{}–max-expr-complexity} & 2 \\
- \hline
+ \begin{tabular}{ll}
+ \toprule
+ \textbf{Properties/Parameters} & \textbf{Change} \\
+ \midrule
+ \code{statement\_ifelse\_prob} & Increased \\
+ \code{statement\_for\_prob} & Reduced \\
+ \code{statement\_arrayop\_prob} & Reduced \\
+ \code{statement\_break/goto/continue\_prob} & Reduced \\
+ \code{float\_as\_ltype\_prob} & Disabled \\
+ \code{pointer\_as\_ltype\_prob} & Disabled \\
+ \code{void\_prob} & Disabled \\
+ \code{union\_as\_ltype\_prob} & Disabled \\
+ \code{more\_struct\_union\_type\_prob} & Disabled \\
+ \code{safe\_ops\_signed\_prob} & Disabled \\
+ \code{binary\_bit\_and/or\_prob} & Disabled \\
+ \code{-{}-no-packed-struct} & Enabled \\
+ \code{-{}-no-safe-math} & Enabled \\
+ \code{-{}-no-embedded-assigns} & Enabled\\
+ \code{-{}-no-argc} & Enabled\\
+ \code{-{}-max-funcs} & 5 \\
+ \code{-{}-max-block-depth} & 2 \\
+ \code{-{}-max-array-dim} & 3 \\
+ \code{-{}–max-expr-complexity} & 2 \\
+ \bottomrule
\end{tabular}
\caption{Summary of important changes to Csmith's feature probabilities and parameters to generate HLS-friendly programs for our testing campaign.~\NR{Discussion point: Do we enable unions or not? If not, why do have a union bug in Fig. 4? Reviewers may question this.}}
\label{tab:properties}
diff --git a/related.tex b/related.tex
index 1d22c4d..af4d491 100644
--- a/related.tex
+++ b/related.tex
@@ -1,5 +1,7 @@
\section{Related Work}
+Compiler Fuzzing is a popular technique to find bugs in programs, and it is especially effective at finding compiler bugs, as Yang \textit{et al.}~\cite{yang11_findin_under_bugs_c_compil} demonstrated by finding more than 300 bugs in GCC and clang. This technique can therefore also be used to find bugs in HLS tools. There has also been some prior work in trying to find bugs in HLS tools and also ensuring that synthesis tools output a correct design.
+
Lidbury et al. \cite{lidbury15_many_core_compil_fuzzin} fuzz-tested several OpenCL compilers, including an HLS compiler from Altera (now Intel). They were only able to subject that compiler to superficial testing because so many of the test cases they generated led to it crashing. In comparison to our work: where Lidbury et al. generated target-independent OpenCL programs that could be used to test HLS tools and conventional compilers alike, we specifically generate programs that are tailored for HLS (e.g. with HLS-specific pragmas) with the aim of testing the HLS tools more deeply. Another difference is that where we test using sequential C programs, they test using highly concurrent OpenCL programs, and thus have to go to great lengths to ensure that any discrepancies observed between compilers cannot be attributed to the nondeterminism of concurrency.
Herklotz et al.~\cite{verismith} fuzz-tested several FPGA synthesis tools using randomly generated Verilog programs. Where they concentrated on the RTL-to-netlist stage of hardware design, we focus our attention on the earlier C-to-RTL stage.