\documentclass[12pt,tikz]{standalone} \pdfinfoomitdate 1 \pdfsuppressptexinfo 1 \pdftrailerid{} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{pgfplots} \usepackage{tikz} \usetikzlibrary{shapes.geometric} \pagestyle{empty} \begin{document} \begin{tikzpicture} \tikzstyle{process} = [draw, fill=green!10, rectangle, minimum height=3em, minimum width=10em, node distance=5em, font={\ttfamily}] \tikzstyle{data} = [draw, fill=blue!10, ellipse, minimum height=3em, minimum width=7em, node distance=5em, font={\ttfamily}] \node[data] (n1) {Verilog Source}; \node[process] (n2) [below of=n1] {Verilog Frontend}; \node[data] (n3) [below of=n2] {AST}; \node[process] (n4) [below of=n3] {AST Frontend}; \node[data] (n5) [below of=n4] {RTLIL}; \draw[-latex] (n1) -- (n2); \draw[-latex] (n2) -- (n3); \draw[-latex] (n3) -- (n4); \draw[-latex] (n4) -- (n5); \tikzstyle{details} = [draw, fill=yellow!5, rectangle, node distance=6cm, font={\ttfamily}] \node[details] (d1) [right of=n2] {\begin{minipage}{5cm} \hfil \begin{tikzpicture} \tikzstyle{subproc} = [draw, fill=green!10, rectangle, minimum height=2em, minimum width=10em, node distance=3em, font={\ttfamily}] \node (s0) {}; \node[subproc] (s1) [below of=s0] {Preprocessor}; \node[subproc] (s2) [below of=s1] {Lexer}; \node[subproc] (s3) [below of=s2] {Parser}; \node[node distance=3em] (s4) [below of=s3] {}; \draw[-latex] (s0) -- (s1); \draw[-latex] (s1) -- (s2); \draw[-latex] (s2) -- (s3); \draw[-latex] (s3) -- (s4); \end{tikzpicture} \end{minipage}}; \draw[dashed] (n2.north east) -- (d1.north west); \draw[dashed] (n2.south east) -- (d1.south west); \node[details] (d2) [right of=n4] {\begin{minipage}{5cm} \hfil \begin{tikzpicture} \tikzstyle{subproc} = [draw, fill=green!10, rectangle, minimum height=2em, minimum width=10em, node distance=3em, font={\ttfamily}] \node (s0) {}; \node[subproc] (s1) [below of=s0] {Simplifier}; \node[subproc] (s2) [below of=s1] {RTLIL Generator}; \node[node distance=3em] (s3) [below of=s2] {}; \draw[-latex] (s0) -- (s1); \draw[-latex] (s1) -- (s2); \draw[-latex] (s2) -- (s3); \end{tikzpicture} \end{minipage}}; \draw[dashed] (n4.north east) -- (d2.north west); \draw[dashed] (n4.south east) -- (d2.south west); \end{tikzpicture} \end{document}