\begin{figure*}[t]
    \centering
    \tikzset{
file/.style={draw=none, fill=black!25, shape=circle, minimum width=5mm},
block/.style={draw, minimum width=20mm, minimum height=8mm,align=center},
} 
    \begin{tikzpicture}
    \node[block] (csmith) at (-2,1) {\strut Csmith};
    \node[block] (pragma) at (0,-1) {\strut pragma \\ generation};
    \node[block] (gcc) at (4,1) {\strut GCC};
    \node[block] (hls) at (4,-1) {\strut HLS};
    \node[block] (eq) at (8,1) {\strut co-simulation \\ checking };
    \node[block] (red) at (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] node[inner sep=0] {Verilog program} (eq) ;
    \draw[-latex,dashed,red] (eq) to [auto] 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 for fuzzing HLS tools.}
    \label{fig:method:toolflow}
\end{figure*}
