\documentclass[preview]{standalone}

\usepackage{tikz}
\usepackage{fontspec}

\setmainfont{Alegreya}

\usetikzlibrary{shapes,calc,arrows.meta}

\definecolor{hlscol}{HTML}{b3e2cd}
\definecolor{computingcol}{HTML}{fdcdac}
\definecolor{verificationcol}{HTML}{cbd5e8}

\begin{document}

\begin{tikzpicture}
  \fill[hlscol,rounded corners=8pt] (0,1) rectangle ++(3,6);
  \fill[computingcol,rounded corners=8pt] (3.5,1) rectangle ++(3,6);
  \fill[verificationcol,rounded corners=8pt] (7,1) rectangle ++(3,6);
  \node (hls) at (0.5,6.7) {HLS};
  \node (computing) at (4.5,6.7) {Computing};
  \node (verification) at (8,6.7) {Verification};

  \node[draw,circle] (hlsa) at (0.5,6) {\footnotesize 1a};
  \node[draw,circle] (hlsb) at (0.5,5) {\footnotesize 1b};
  \node[draw,circle] (hlsc) at (0.5,4) {\footnotesize 1c};
  \node[draw,circle] (hlsd) at (0.5,3) {\footnotesize 1d};
  \node[draw,circle] (hlse) at (1.5,3) {\footnotesize 1b1};
  \node[draw,circle] (hlsf) at (1.5,2) {\footnotesize 1b2};
  \node[draw,circle] (hlsg) at (1.5,5) {\footnotesize 1a1};
  \node[draw,circle] (hlsh) at (1.5,4) {\footnotesize 1a2};
  \node[draw,circle] (hlsi) at (2.5,4) {\footnotesize 1a1a};
  \node[draw,circle] (hlsj) at (2.5,3) {\footnotesize 1a1b};

  \draw[->] (hlsa) -> (hlsb);
  \draw[->] (hlsb) -> (hlsc);
  \draw[->] (hlsc) -> (hlsd);
  \draw[->] (hlsb) -> (hlse);
  \draw[->] (hlse) -> (hlsf);
  \draw[->] (hlsa) -> (hlsg);
  \draw[->] (hlsg) -> (hlsh);
  \draw[->] (hlsg) -> (hlsi);
  \draw[->] (hlsi) -> (hlsj);

  \node[draw,circle] (computinga) at (4,6) {\footnotesize 2a};
  \node[draw,circle] (computingb) at (4,5) {\footnotesize 2b};
  \node[draw,circle] (computingc) at (4,4) {\footnotesize 2c};
  \node[draw,circle] (computinge) at (5,4) {\footnotesize 2b1};
  \node[draw,circle] (computingf) at (5,3) {\footnotesize 2b2};
  \node[draw,circle] (computingg) at (5,2) {\footnotesize 2b3};
  \node[draw,circle] (computingh) at (6,2) {\footnotesize 2b2a};

  \draw[->] (computinga) -> (computingb);
  \draw[->] (computingb) -> (computingc);
  \draw[->] (computingb) -> (computinge);
  \draw[->] (computinge) -> (computingf);
  \draw[->] (computingf) -> (computingg);
  \draw[->] (computingf) -> (computingh);

  \node[draw,circle] (verificationa) at (7.5,6) {\footnotesize 3a};
  \node[draw,circle] (verificationb) at (7.5,5) {\footnotesize 3b};
  \node[draw,circle] (verificationc) at (7.5,4) {\footnotesize 3c};
  \node[draw,circle] (verificationd) at (7.5,3) {\footnotesize 3d};
  \node[draw,circle] (verificatione) at (7.5,2) {\footnotesize 3e};
  \node[draw,circle] (verificationf) at (8.5,2) {\footnotesize 3d1};
  \node[draw,circle] (verificationg) at (8.5,4) {\footnotesize 3b1};
  \node[draw,circle] (verificationh) at (8.5,3) {\footnotesize 3b2};

  \draw[->] (verificationa) -> (verificationb);
  \draw[->] (verificationb) -> (verificationc);
  \draw[->] (verificationc) -> (verificationd);
  \draw[->] (verificationd) -> (verificationf);
  \draw[->] (verificationd) -> (verificatione);
  \draw[->] (verificationb) -> (verificationg);
  \draw[->] (verificationg) -> (verificationh);

  %\draw[->] (hlsh) -> (computinga);
  %\draw[->] (hlsg) -> (computingb);
  %\draw[->] (hlsi) -> (computingg);
  %\draw[->] (computingf) -> (hlsj);
  %\draw[->] (computingh) to [out=60,in=225] ($(computingh) + (0.8,1.3)$) to [out=45,in=210] (verificationg);
  %\draw[->] (hlsd) -> (hlsh);
  %\draw[->] (hlsg) to [out=20,in=160] (verificationb);
\end{tikzpicture}

\end{document}
