# How to draw a block diagram using TikZ?

I would like to draw a block diagram such as this using TikZ. I am unable to find arrow heads / suitable tutorials for block diagrams. • Please show some effort and give us some code. What have you tried so far? There are many block diagrams on this site. And have a look into the pgf manual. For the error heads: texample.net/tikz/examples/double-arrows – LaRiFaRi Jun 23 '15 at 8:24
• This is rather known as flow chart not block diagram. In the manual there is a node shape single arrow. – percusse Jun 23 '15 at 8:53

## 1 Answer

Two possible solutions. First simple one:

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{arrows.meta,calc,positioning}

\begin{document}
\begin{tikzpicture}[
node distance= 9mm and 3 mm,
inout/.style = {minimum width=#1,
draw, thick, rounded corners,
minimum height=9mm, align=center},
inter/.style = {minimum width=#1,
draw, thick, minimum height=9mm,
font=\Large\bfseries},
Arrow/.style = {line width=2mm, draw=gray,
-{Triangle[length=3mm,width=4mm]},
shorten >=1mm, shorten <=1mm},
]
\node[inout=22mm]               (a)   {property};
\node[inout=22mm,right=of a]    (b)   {automaton\\ model};
\path   let \p1 = (a.west),
\p2 = (b.east),
\n1 = {veclen(\x2-\x1,\y2-\y1)} in
node[inter=\n1,
below right=9mm and 0mm of a.south west] (c) {Intersection}
node[inout=\n1,below=of c] (d) {empty language\\
(property sastified)};
\draw[Arrow]    (a) -- (a |- c.north);
\draw[Arrow]    (b) -- (b |- c.north);
\draw[Arrow]    (c) -- (d);
\end{tikzpicture}
\end{document} and more fancy one with arrows determined with arrows shape:

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{arrows.meta,calc,positioning,
shapes.arrows}

\begin{document}
\begin{tikzpicture}[
node distance= 9mm and 3 mm,
inout/.style = {minimum width=#1,
draw, thick, rounded corners,
minimum height=9mm, align=center},
inter/.style = {minimum width=#1,
draw, thick, minimum height=9mm,
font=\Large\bfseries},
Arrow/.style = {single arrow,draw,
minimum height=7mm, minimum width=3mm,
rotate=-90},
]
\node[inout=22mm]               (a)   {property};
\node[inout=22mm,right=of a]    (b)   {automaton\\ model};
\path   let \p1 = (a.west),
\p2 = (b.east),
\n1 = {veclen(\x2-\x1,\y2-\y1)} in
node[inter=\n1,
below right=9mm and 0mm of a.south west] (c) {Intersection}
node[inout=\n1,below=of c] (d) {empty language\\
(property sastified)};
\node[Arrow]  at ($(a)!0.65!(a |- c.north)$) {};
\node[Arrow]  at ($(b)!0.65!(b |- c.north)$) {};
\node[Arrow]  at ($(c)!0.65!(d.north)$) {};
\end{tikzpicture}
\end{document} 