\begin{figure}[t] \centering \tikzset{ file/.style={draw=none, fill=black!25, shape=circle, minimum width=5mm}, block/.style={draw, minimum height=8mm,align=center}, } \begin{tikzpicture} \node[block] (csmith) at (-1.3,1) {\strut Csmith}; \node[block] (pragma) at (-0.2,-1) {\strut pragma \\ generation}; \node[block] (gcc) at (2,1) {\strut GCC}; \node[block] (hls) at (3.2,-1) {\strut HLS tool \\ under test}; \node[block] (eq) at (5.5,1) {\strut co-simulation \\ checking }; \node[block] (red) at (5.8,-1) {\strut reduction}; \draw[-latex] (csmith.east) to [out=0, in=90] (pragma.north) ; \draw[-latex] (csmith.east) to [auto] node {C program} (gcc.west); \draw[-latex] (pragma) to [auto] node[align=center] {C program \\ $+$ \\ directives} (hls) ; \draw[-latex] (gcc) to [auto] node {executable} (eq); \draw[-latex] (hls) to [auto, pos=0.3] node[inner sep=0, align=center] {Verilog \\ program} (eq) ; \draw[-latex,dashed,red] (eq) to [auto, pos=0.7] node [red] {fail} (red) ; \draw[-latex,dashed,red] (hls) to [auto] node [red] {crash} (red) ; % marking the test harness %\node[] (label) at (3.7,1.75) {\strut Test harness} ; %\draw[-,dashed] (2.85,2) -- (2.85,-1.6) -- (5.2,-1.6) -- (5.2,-0.6) -- (7.1,0.3) -- (9.2,0.3) -- (9.2,2) -- (2.8,2) ; %\draw[-latex] (pragma) [out=360-15,in=180+15] to (red); %\node[] () at (4,-2) {C program}; \end{tikzpicture} % \includegraphics{} \caption{The overall flow of our approach to fuzzing HLS tools.} \label{fig:method:toolflow} \end{figure}