% ------------------------------------------------------------------------------
% Copyright (c) 2019, 2025 Contributors to the Eclipse Foundation
%
% See the NOTICE file(s) distributed with this work for additional
% information regarding copyright ownership.
%
% This program and the accompanying materials are made available under the terms
% of the MIT License which is available at https://opensource.org/licenses/MIT
%
% SPDX-License-Identifier: MIT
% ------------------------------------------------------------------------------
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, arrows, automata, calc, positioning, shapes, shapes.misc}
\usepackage[paperwidth=40in, paperheight=20in]{geometry}

\renewcommand{\familydefault}{\sfdefault}

\begin{document}
\pagestyle{empty}

\begin{tikzpicture}[
    auto,
    ->,
    node distance=4cm,
    every state/.style={ellipse, semithick, fill=black!5, minimum size=1.5cm, font=\Large},
    initial distance=0.8cm,
    every initial by arrow/.style={-{Stealth[scale=1.4]}},
    initial text=,
    transform shape,
    double distance=2pt,
    every loop/.style={min distance=10mm},
    myfile/.style={rounded rectangle, semithick, align=center, draw, minimum width=2.5cm, minimum height=1cm, fill=black!5},
    mytool/.style={rectangle, semithick, align=center, draw, minimum width=2.5cm, minimum height=1cm, fill=black!25}
]

\node[myfile] (pldef)  at (0,0)                {\texttt{plant\_definitions.cif}};
\node[myfile] (plant)  [above=1.5cm of pldef]  {\texttt{plant.cif}};
\node[myfile] (req)    [above=1.5cm of plant]  {\texttt{requirements.cif}};
\node[mytool] (syn)    [right=0.5cm of req]    {Synthesize};
\node[myfile] (sup)    [right=0.5cm of syn]    {\texttt{controlled\_system.cif}};
\node[mytool] (merge)  [right=0.5cm of sup]    {Merge};
\node[myfile] (simf)   [below=1.5cm of merge]  {\texttt{simulation.cif}};
\node[myfile] (image)  [below=1.5cm of simf]   {\texttt{lock.svg}};
\node[myfile] (hpldef) [left =0.5cm of image]  {\texttt{hybrid\_plant\_definitions.cif}};
\node[myfile] (hybpl)  [above=1.5cm of hpldef] {\texttt{hybrid\_plant.cif}};
\node[myfile] (simmf)  [right=0.5cm of merge]  {\texttt{simulation\_merged.cif}};
\node[mytool] (simt)   [right=0.5cm of simmf]  {Simulate};

\path[-{Stealth[scale=1.4]}]
    (pldef)  edge[left]             node[align=center]            {Imported\\into} (plant)
    (plant)  edge[left]             node[align=center]            {Imported\\into} (req)
    (req)    edge[]                 node[align=center]            {}               (syn)
    (syn)    edge[]                 node[align=center]            {}               (sup)
    (hpldef) edge[left]             node[align=center]            {Imported\\into} (hybpl)
    (hybpl)  edge[above]            node[align=center]            {Imported\\into} (simf)
    (image)  edge[left]             node[align=center]            {Used by}        (simf)
    (sup)    edge[]                 node[align=center]            {}               (merge)
    (simf)   edge[]                 node[align=center]            {}               (merge)
    (merge)  edge[]                 node[align=center]            {}               (simmf)
    (image)  edge[right,bend right] node[align=center,xshift=2pt] {Used by}        (simmf)
    (simmf)  edge[]                 node[align=center]            {}               (simt)
;

\end{tikzpicture}
\end{document}
