summaryrefslogtreecommitdiffstats
path: root/method.tex
diff options
context:
space:
mode:
authorYann Herklotz <ymh15@ic.ac.uk>2021-04-04 20:12:20 +0000
committeroverleaf <overleaf@localhost>2021-04-04 20:18:08 +0000
commit62a127dfb009b8ffe94ac348ecafb7f596406cbd (patch)
tree7dbee2f45b6baa1edc4054d32610ff2b1fad6b5b /method.tex
parentadc0afcec6fe025f85fbfdfdfc5ef522fa760d98 (diff)
downloadfccm21_esrhls-62a127dfb009b8ffe94ac348ecafb7f596406cbd.tar.gz
fccm21_esrhls-62a127dfb009b8ffe94ac348ecafb7f596406cbd.zip
Update on Overleaf.
Diffstat (limited to 'method.tex')
-rw-r--r--method.tex6
1 files changed, 4 insertions, 2 deletions
diff --git a/method.tex b/method.tex
index 398a97d..c377c3e 100644
--- a/method.tex
+++ b/method.tex
@@ -120,9 +120,11 @@ We avoid floating-point numbers since these often involve external libraries or
%\subsection{Augmenting programs for HLS testing}
%\label{sec:method:annotate}
-To prepare the programs generated by Csmith for HLS testing, we modify them in two ways. First, we inject random HLS directives, which instruct the HLS tool to perform certain optimisations, including: loop pipelining, loop unrolling, loop flattening, loop merging, expression balancing, function pipelining, function-level loop merging, function inlining, array mapping, array partitioning, and array reshaping. Some directives can be applied via a separate configuration file (.tcl), some require us to add labels to the C program (e.g. to identify loops), and some require placing pragmas at particular locations in the C program.
+To prepare the programs generated by Csmith for HLS testing, we modify them in two ways. First, we inject random HLS directives, which instruct the HLS tool to perform certain optimisations, including: loop pipelining, loop unrolling, loop flattening, loop merging, expression balancing, function pipelining, function-level loop merging, function inlining, array mapping, array partitioning, and array reshaping. Some directives can be applied via a separate configuration file (.tcl), some require us to add labels to the C program (e.g. to identify loops), and some require placing pragmas at particular locations in the C program.
-The second modification has to do with the top-level function. Each program generated by Csmith ends its execution by printing a hash of all its variables' values, in the hope that any miscompilations will be exposed through this hash value. We found that Csmith's built-in hash function led to infeasibly long synthesis times, so we replace it with our own simple XOR-based one.
+%\AD{Did any reduced test-case involve these HLS-specific features?} \JW{The LegUp bug in Figure 4 requires NO\_INLINE -- does that count? If so, perhaps we could append to the Figure 4 caption: `thus vindicating our strategy of adding random HLS directives to our test-cases'.}
+
+The second modification has to do with the top-level function. Each program generated by Csmith ends its execution by printing a hash of all its variables' values, hoping that miscompilations will be exposed through this hash value. Csmith's built-in hash function leads to infeasibly long synthesis times, so we replace it with a simple XOR-based one.
Finally, we generate a synthesisable testbench that executes the main function of the original C program, and a tool-specific script that instructs the HLS tool to create a design project and then build and simulate the design.