summaryrefslogtreecommitdiffstats
path: root/algorithm.tex
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2021-08-09 12:23:28 +0200
committerYann Herklotz <git@yannherklotz.com>2021-08-09 12:23:28 +0200
commita7e5f60e759bcb83769341154c17166ecfad723e (patch)
treee553371b4e3859229fab3067fbef6ffc074b75bb /algorithm.tex
parentdc23a3e2a53cb56e0bde73a3d0ae7206ab13bafd (diff)
downloadoopsla21_fvhls-a7e5f60e759bcb83769341154c17166ecfad723e.tar.gz
oopsla21_fvhls-a7e5f60e759bcb83769341154c17166ecfad723e.zip
Add approximate size of passes in Figure 1
Diffstat (limited to 'algorithm.tex')
-rw-r--r--algorithm.tex22
1 files changed, 14 insertions, 8 deletions
diff --git a/algorithm.tex b/algorithm.tex
index 1e3eae6..c71b54c 100644
--- a/algorithm.tex
+++ b/algorithm.tex
@@ -32,22 +32,28 @@ The .NET framework has been used as a basis for other HLS tools, such as Kiwi~\c
%\resizebox{0.85\textwidth}{!}{
\begin{tikzpicture}
[language/.style={fill=white,rounded corners=3pt,minimum height=7mm},
- continuation/.style={}]
- \fill[compcert,rounded corners=3pt] (-1,-0.5) rectangle (10,2);
- \fill[formalhls,rounded corners=3pt] (-1,-1) rectangle (10,-2);
+ continuation/.style={},
+ linecount/.style={rounded corners=3pt,dashed}]
+ \fill[compcert,rounded corners=3pt] (-1,-0.5) rectangle (11.4,2);
+ \fill[formalhls,rounded corners=3pt] (-1,-1) rectangle (11.4,-2);
+ \draw[linecount] (-0.95,-0.45) rectangle (3.6,1);
+ \draw[linecount] (4,-0.45) rectangle (7.5,1);
\node[language] at (-0.3,0) (clight) {Clight};
\node[continuation] at (1,0) (conta) {$\cdots$};
\node[language] at (2.7,0) (cminor) {CminorSel};
\node[language] at (4.7,0) (rtl) {3AC};
\node[language] at (6.2,0) (ltl) {LTL};
- \node[language,anchor=west] at (8.4,0) (aarch) {aarch64};
- \node[language,anchor=west] at (8.4,0.8) (x86) {x86};
+ \node[language,anchor=west] at (8.4,0) (aarch) {aarch64 \small ($\sim$ 12 kloc)};
+ \node[language,anchor=west] at (8.4,0.8) (x86) {x86 \small ($\sim$ 14 kloc)};
\node[continuation,anchor=west] at (8.4,1.4) (backs) {$\cdots$};
\node[continuation] at (7.3,0) (contb) {$\cdots$};
\node[language] at (4.7,-1.5) (htl) {HTL};
\node[language] at (6.7,-1.5) (verilog) {Verilog};
\node at (0,1.5) {\bf\compcert{}};
\node at (0,-1.5) {\bf\vericert{}};
+ \node[anchor=west] at (-0.9,0.7) {\small $\sim$ 27 kloc};
+ \node[anchor=west] at (4.1,0.7) {\small $\sim$ 46 kloc};
+ \node[anchor=west] at (2,-1.5) {\small $\sim$ 17 kloc};
\node[align=center] at (3.5,-2.4) {\footnotesize RAM\\[-0.5em]\footnotesize insertion};
\draw[->,thick] (clight) -- (conta);
\draw[->,thick] (conta) -- (cminor);
@@ -55,13 +61,13 @@ The .NET framework has been used as a basis for other HLS tools, such as Kiwi~\c
\draw[->,thick] (rtl) -- (ltl);
\draw[->,thick] (ltl) -- (contb);
\draw[->,thick] (contb) -- (aarch);
- \draw[->,thick] (contb) to [out=0,in=210] (x86);
- \draw[->,thick] (contb) to [out=0,in=200] (backs);
+ \draw[->,thick] (contb) to [out=0,in=200] (x86.west);
+ \draw[->,thick] (contb) to [out=0,in=190] (backs.west);
\draw[->,thick] (rtl) -- (htl);
\draw[->,thick] (htl) -- (verilog);
\draw[->,thick] (htl.west) to [out=180,in=150] (4,-2.2) to [out=330,in=270] (htl.south);
\end{tikzpicture}%}
- \caption{\vericert{} as a Verilog back end to \compcert{}.
+ \caption{\vericert{} as a Verilog back end to \compcert{}. For scale, the approximate lines of code (kloc) are shown for \vericert{}, as well as for the front end and back end of \compcert{}, including any comments and whitespace.
%\JW{Did we ought to add CompCert's other back ends to the diagram? X86 etc? Otherwise it might look like we have a very out-of-date view of CompCert.}%
}%
\label{fig:rtlbranch}