Commit 328f9c33 authored by Jens Korinth's avatar Jens Korinth

Remove outdated documentation in doc subdir

parent d0169b2d
MK ?= latexmk
MKFLAGS += -pdf
PDF = "Tapasco.pdf"
MAINTEX = Tapasco.tex
.PHONY: $(PDF) clean tikz tikz-clean
$(PDF): tikz
$(MK) $(MKFLAGS) $(MAINTEX)
clean: tikz-clean
$(MK) -C $(MAINTEX)
tikz:
$(MAKE) -C tikz
tikz-clean:
$(MAKE) -C tikz clean
\documentclass[a4paper, oneside, 11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{longtable}
\usepackage{array}
\usepackage{paralist}
\usepackage{rotating}
\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds,shadows,shapes}
\usepackage{pgf-umlsd}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\title{Threadpool Composer}
\subtitle{Installation and User Guide}
\date{}
\newcommand{\gloss}[1]{\textsf{\small #1}}
\newcommand{\tapasco}{\gloss{Tapasco}}
\newcommand{\tapascohome}{\code{TPC\_HOME}}
\newcommand{\code}[1]{\texttt{\footnotesize #1}}
\newcommand{\tblref}[1]{Table~\ref{#1}}
\newcommand{\figref}[1]{Figure~\ref{#1}}
\newcommand{\chpref}[1]{Chapter~\ref{#1}}
\newcommand{\secref}[1]{Section~\ref{#1}}
\newcommand{\lstref}[1]{Listing~\ref{#1}}
\lstset{
showstringspaces=false,
showspaces=false,
basicstyle=\footnotesize\ttfamily
}
\input{esacolors}
\newcommand{\lstnumbers}[1]{\smash{\ttfamily #1}}
\newcommand{\lstcomments}[1]{\smash{\color{gray}\ttfamily\itshape #1}}
\newcommand{\lstkeywords}[1]{\smash{\color{esa4}\ttfamily\bfseries #1}}
\newcommand{\fullscreen}[0]{\thispagestyle{empty}\vspace*{-15ex}}%
\lstdefinelanguage{kernel}{%
keywords={Name,Kernel,Version,ValueArgs,ReferenceArgs,ReturnSize,Files,TestbenchFiles},
comment=[l]{\#}
}
\lstdefinelanguage{arch}{%
keywords={Name,DesignTclTemplate,ReferenceArgTemplate,ValueArgTemplate},
comment=[l]{\#}
}
\lstdefinelanguage{platform}{%
keywords={Name,PlatformTclTemplate,Part,BoardPart},
comment=[l]{\#}
}
\lstdefinelanguage{bitstream}{%
keywords={Composition},
comment=[l]{\#}
}
\lstdefinelanguage{run}{%
keywords={Architecture, Platform, Bitstream, Kernel, ArchDir, KernelDir, PlatformDir, BitstreamDir},
comment=[l]{\#}
}
\lstdefinelanguage[TemplateTcl]{Tcl}[]{Tcl}{%
morecomment=**[s][\bfseries\color{green!30!black}]{@@}{@@},
morestring=*[b]"
}
\lstset{%
%frame = single,%
%backgroundcolor = \color{black!40},%
%numbers = left,%
basicstyle = \ttfamily\scriptsize, %
numberstyle = \lstnumbers, %
keywordstyle = \lstkeywords, %
commentstyle = \lstcomments
}
\usepackage[framemethod=tikz]{mdframed}
\newmdenv[innerlinewidth=0.5pt,
roundcorner=4pt,
linecolor=esa0!10!white,
innerleftmargin=6pt,
innerrightmargin=6pt,
innertopmargin=3pt,
innerbottommargin=3pt,
backgroundcolor=esa0!10!white
]{noteframe}
\newenvironment{note}[1][Note]{\begin{noteframe}\textbf{\color{esa3}#1 }\itshape}{\end{noteframe}}
\begin{document}
\maketitle
\input{revisions}
\tableofcontents
\chapter{Installation Guide}\label{chp:ig}
\input{ig.tex}
\chapter{User Guide}\label{chp:ug}
\input{ug.tex}
\chapter{Prototypical Implementations}\label{chp:ex}
\input{ex.tex}
\chapter{Appendix}\bibliographystyle{IEEEtran}
\bibliography{tapasco}
\end{document}
% define simple color names for esa colors and a highlight
\definecolor{esa}{RGB}{10,156,215}
\def\esacolorfactor{20}
\colorlet{esa0}{esa!90!white}
\colorlet{esa1}{black!\esacolorfactor!esa0}
\colorlet{esa2}{black!\esacolorfactor!esa1}
\colorlet{esa3}{black!\esacolorfactor!esa2}
\colorlet{esa4}{black!\esacolorfactor!esa3}
\colorlet{esa5}{black!\esacolorfactor!esa4}
\definecolor{highlight}{RGB}{189,27,27}
This diff is collapsed.
\input{ig_prerequisites}%
\section{Compile Xilinx IP Catalog for ModelSim}\label{sec:compile_simlib}%
Vivado Design Suite contains the Xilinx IP catalog with many useful predefined IP cores, some of which are used by \tapasco{}.
In order to simulate such IP with ModelSim \cite{modelsim} and to speed up the simulation, the entire IP catalog should be precompiled for ModelSim once.
Please refer to Xilinx UG900 "Logic Simulation" \cite{ug900-2014.3}, Chapter 8, p. 134ff for instructions on how to compile the Xilinx IP catalog for ModelSim.
Place the compiled library in a location reachable from the system where \tapasco{} is to be executed, and point the environment variable \emph{COMPILED\_SIMLIB} to this location.
\section{Installation of Tapasco}%
\begin{enumerate}
\item Extract the \tapasco{} archive to a suitable location.
%
\begin{lstlisting}[language=bash]
~$ mkdir tapasco && cd tapasco && tar xvzf ../REPARA_D5.1_v1.0.tar.gz
\end{lstlisting}
%
\item Set the \code{TPC\_HOME} environment variable to that location, e.g.,
%
\begin{lstlisting}[language=bash]
~$ export TAPASCO_HOME=~/tapasco
\end{lstlisting}
%
\item Make sure that the system has a working internet connection for the next step.
\item Change into that directory and compile \tapasco{}:
\begin{lstlisting}[language=bash]
~$ cd $TAPASCO_HOME && sbt compile && sbt doc
[info] Loading project definition from /tmp/tapasco/project
[info] Updating {file:/tmp/tapasco/project/}tapasco-build...
[info] Resolving org.scala-sbt#compiler-interface;0.13.1 ...
...
[info] Done updating.
[info] Set current project to tapasco (in build file:/tmp/tapasco/)
Building dependencies ...
make: Entering directory `/tmp/tapasco/arch/baseline'
mkdir -p lib
cc -g -O3 -fPIC -Iinclude -I../common/include -I/tmp/tapasco/platform/common/include -I../common/src -std=gnu99 -pedantic-errors -Wall -Werror -shared -o lib/libtapasco-baseline-sim.so src/tapasco_sim.c src/tapasco_device.c src/tapasco_address_map.c ../common/src/tapasco_errors.c ../common/src/tapasco_functions.c ../common/src/tapasco_scheduler.c ../common/src/tapasco_jobs.c
cc -g -O3 -fPIC -Iinclude -I../common/include -I/tmp/tapasco/platform/common/include -I../common/src -std=gnu99 -pedantic-errors -Wall -Werror -shared -o lib/libtapasco-baseline-bit.so src/tapasco_sim.c src/tapasco_device.c src/tapasco_address_map.c ../common/src/tapasco_errors.c ../common/src/tapasco_functions.c ../common/src/tapasco_scheduler.c ../common/src/tapasco_jobs.c
make: Leaving directory `/tmp/tapasco/arch/baseline'
make: Entering directory `/tmp/tapasco/platform/zynq'
mkdir -p lib
cd include && /opt/cad/mentor/modelsim/latest/modeltech/bin/vlib work && /opt/cad/mentor/modelsim/latest/modeltech/bin/vlog -dpiheader platform_dpi.h -sv ../sv/platform-dpi.sv +incdir+../include && rm -rf work transcript
Model Technology ModelSim SE-64 vlog 10.0c_1 Compiler 2011.08 Aug 26 2011
-- Compiling module tb
Top level modules:
tb
cc -O3 -fPIC -I/opt/cad/mentor/modelsim/latest/modeltech/include -Iinclude -I../common/include -std=gnu99 -pedantic-errors -Wall -Werror -shared -pthread -o lib/libplatform-server.so src/platform_server.c
cc -O3 -fPIC -I/opt/cad/mentor/modelsim/latest/modeltech/include -Iinclude -I../common/include -std=gnu99 -pedantic-errors -Wall -Werror -shared -pthread -o lib/libplatform-client.so src/platform_client.c
make: Leaving directory `/tmp/tapasco/platform/zynq'
[info] Updating {file:/tmp/tapasco/}tapasco...
[info] Resolving com.dongxiguo#fastring_2.10;0.2.4 ...
[info] Done updating.
[info] Compiling 11 Scala sources to /tmp/tapasco/target/scala-2.10/classes...
[success] Total time: 13 s, completed Feb 10, 2015 5:45:43 PM
[info] Loading project definition from /tmp/tapasco/project
[info] Set current project to tapasco (in build file:/tmp/tapasco/)
[info] Main Scala API documentation to /tmp/tapasco/target/scala-2.10/api...
model contains 21 documentable templates
[info] Main Scala API documentation successful.
[success] Total time: 10 s, completed Feb 10, 2015 5:45:56 PM
~$
\end{lstlisting}
\end{enumerate}
The last step should trigger a number of downloads via \gloss{sbt}, C library compilation in subdirectories \code{arch} and \code{platform} and, finally, compilation of the main Scala code.
Please make sure that the system has a working internet connection for this step.
Downloading the packages via sbt is usually only necessary once, an internet connection is not required after the first downloads have succeeded.
Manual installation of the packages is also possible, if the system cannot be connected to the internet.
Please refer to the sbt documentation for instructions on how to make packages available to sbt with a manual installation.
\section{System Requirements}
\tapasco{} requires a computer running a \textsf{Linux} operating system with a 3.x series kernel.
It has been tested on a system running Fedora 22 Linux distribution, more precisely \code{GNU/Linux 3.19.5-100.fc20.x86\_64}.
The recommended Linux distribution for the Xilinx Zynq platforms is \emph{archlinux/ARM} \cite{archlinuxarm}, which is also the basis for the ready-for-use SDcard image files available on the \tapasco{} website.
No other system requirements have been identified for \tapasco{}, however, the requirements of subsequently listed third-party software apply.
\section{Prerequisites}
\tapasco{} is based on several third-party software components, the most important of which are listed in \tblref{tbl:thirdparty}.
If nothing else is explicitly specified in the corresponding section, C/C++ code can be built by the GNU project toolchain, specifically the GNU C Compiler gcc \cite{gcc} and GNU make \cite{gmake}, Scala code by the Scala compiler \cite{scala} and \gloss{sbt} \cite{sbt} (for supported versions see \tblref{tbl:thirdparty}).
It is likely possible to use different tools for these tasks, but is neither recommended nor supported.
\emph{Xilinx Vivado Design Suite} is used for all synthesis tasks, but the capabilities of the Vivado Simulator (specifically the SystemVerilog DPI implementation) are not sufficient for simulation, hence simulation is tailored toward \emph{Mentor Graphics ModelSim}.
With the exception of \gloss{sbt}, for which a micro-installation guide is provided in the next paragraph, a working installation of the software components is assumed.
Please refer to the corresponding vendor's documentation for installation instructions.
\begin{longtable}[c]{llcc}
\caption{Third-party software components and compatible versions}
\label{tbl:thirdparty}\\
\toprule
\textbf{Software Name} & \textbf{Vendor} & \textbf{Version} & \textbf{Mandatory}\\\midrule
\endhead
\bottomrule
\endlastfoot
gcc/g++ & Free Software Foundation, Inc. & $\geq$ 4.9 & Yes\\\midrule
ModelSim SE & Mentor Graphics Corporation & $\geq$ 10.0c\_1 & No\\\midrule
sbt & Typesafe, Inc. & $\geq$0.13.5 & Yes\\\midrule
Scala & \begin{minipage}{5cm}Programming Methods Laboratory of École Polytechnique Fédérale de Lausanne\end{minipage} & 2.10 & Yes\\\midrule
Vivado Design Suite & Xilinx, Inc. & 2015.2 & Yes\\
\end{longtable}
\subsection*{Installation of sbt}
In case no precompiled package for \gloss{sbt} is provided for your Linux distribution, a very simple manual installation of \gloss{sbt} is possible:
\begin{enumerate}
\item Download a compatible version of \code{sbt-launch.jar} at\\
\url{https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/}.
\item Put \code{sbt-launch.jar} in a directory in the \code{PATH} environment variable, e.g., \code{\textasciitilde/bin}, or adapt your \code{PATH} accordingly.
\item At the same location, create a script \code{sbt}, with the following contents:
\begin{lstlisting}[language=bash]
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled \
-XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
\end{lstlisting}
\end{enumerate}
Check if the installation was successful by running \code{sbt version} on a command line, it should finish without errors.
For more information about \gloss{sbt}, refer to \cite{sbt}.
\section{Paths and other preparations}
Make sure that all software components listed in \tblref{tbl:thirdparty} are accessible from the command line.
If necessary, add their location to the \code{PATH} environment variable or source appropriate scripts supplied by the vendor.
To check this, make sure you can run the following commands from the command line:
\begin{lstlisting}[language=bash, breaklines=true]
~$ echo exit | vivado_hls -i
~$ echo exit | vivado -nojournal -nolog -mode tcl
~$ echo quit | vsim -c
~$ gcc -v
~$ sbt version
\end{lstlisting}
Running the commands should yield output similar to this:
\begin{lstlisting}[language=bash, breaklines=true]
~$ echo exit | vivado_hls -i
================================================================
Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
Version 2015.2
Build 1266856 on Fri Jun 26 16:57:37 PM 2015
Copyright (C) 2015 Xilinx Inc. All rights reserved.
================================================================
@I [LIC-101] Checked out feature [VIVADO_HLS]
@I [HLS-10] Running '/opt/cad/xilinx/vivado/Vivado_HLS/2015.2/bin/unwrapped/lnx64.o/vivado_hls'
for user 'jk' on host 'mountdoom.esa.informatik.tu-darmstadt.de' (Linux_x86_64 version 3.19.5-100.fc20.x86_64) on Mon Nov 02 11:05:24 CET 2015
in directory '/home/jk/rcu/doc'
@E [HLS-70] There is an error calling 'vivado_hls'; try "-help'.
@I [LIC-101] Checked in feature [VIVADO_HLS]
================================================================
Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
Version 2014.3
Build 1034051 on Fri Oct 03 16:32:44 PM 2014
Copyright (C) 2014 Xilinx Inc. All rights reserved.
================================================================
@I [LIC-101] Checked out feature [VIVADO_HLS]
@I [HLS-10] Running '/opt/cad/xilinx/vivado/Vivado_HLS/2014.3/bin/unwrapped/lnx64.o/vivado_hls'
for user 'jk' on host 'mountdoom.esa.informatik.tu-darmstadt.de' (Linux_x86_64 version 3.17.8-200.fc20.x86_64) on Tue Feb 10 17:28:49 CET 2015
in directory '/home/jk'
@E [HLS-70] There is an error calling 'vivado_hls'; try "-help'.
@I [LIC-101] Checked in feature [VIVADO_HLS]
~ $ echo exit | vivado -nojournal -nolog -mode tcl
****** Vivado v2015.2 (64-bit)
**** SW Build 1266856 on Fri Jun 26 16:35:25 MDT 2015
**** IP Build 1264090 on Wed Jun 24 14:22:01 MDT 2015
** Copyright 1986-2015 Xilinx, Inc. All Rights Reserved.
exit
INFO: [Common 17-206] Exiting Vivado at Mon Nov 2 11:06:22 2015...
~$ echo quit | vsim -c
Reading /opt/cad/mentor/modelsim/modelsim-10.0c_1/modeltech/tcl/vsim/pref.tcl
# 10.0c_1
#
ModelSim> quit
~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../5.2.0/configure
Thread model: posix
gcc version 5.2.0 (GCC)
~$ sbt version
[info] Set current project to jk (in build file:/home/jk/)
[info] 0.1-SNAPSHOT
~$
\end{lstlisting}
\input{ig_compile_simlib.tex}
\input{ig_installation.tex}
\begin{center}
\textbf{\huge Revision History}\\[1cm]
\begin{tabular}{C{.15\textwidth}L{.3\textwidth}L{.3\textwidth}R{.15\textwidth}}
\toprule
\textbf{Revision} & \textbf{Editor} & \textbf{Comment} & \textbf{Date}\\\midrule
1.0 & Jens Korinth (TU Darmstadt) & Initial version. & 11.02.2014\\
1.1 & Jens Korinth (TU Darmstadt) & Updated version. & 02.11.2015\\
\bottomrule
\end{tabular}
\end{center}
@misc{threadpool,
institution = {Wikimedia Foundation, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Threadpool Pattern}},
url = {http://en.wikipedia.org/wiki/Thread\_pool\_pattern},
urldate = {2015-02-05},
year = {2014}
}
@misc{sbt,
institution = {Typesafe Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{sbt - The interactive build tool}},
url = {http://www.scala-sbt.org/},
urldate = {2015-02-05},
year = {2014}
}
@misc{gcc,
institution = {Free Software Foundation, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{GCC, the GNU Compiler Collection}},
url = {https://gcc.gnu.org/},
urldate = {2015-02-05},
year = {2014}
}
@misc{modelsim,
institution = {Mentor Graphics Corporation},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{ModelSim - ASIC and FPGA design}},
url = {http://www.mentor.com/products/fpga/simulation/modelsim},
urldate = {2015-02-05},
year = {2014}
}
@misc{kactus2,
institution = {Tampere University of Technology},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Kactus2}},
url = {http://funbase.cs.tut.fi/\#kactus2},
urldate = {2015-02-05},
year = {2014}
}
@misc{ip-xact,
institution = {accellera Systems Initiative},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{IP-XACT}},
url = {http://www.accellera.org/activities/committees/ip-xact/},
urldate = {2015-02-05},
year = {2014}
}
@misc{vivado-hls,
institution = {Xilinx, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Vivado High-Level Synthesis}},
url = {http://www.xilinx.com/products/design-tools/vivado/integration/esl-design.html},
urldate = {2015-02-05},
year = {2014}
}
@misc{ug900-2014.3,
institution = {Xilinx, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Vivado Design Suite User Guide - Logic Simulation}},
url = {http://www.xilinx.com/support/documentation/sw\_manuals/xilinx2014\_3/ug900-vivado-logic-simulation.pdf},
urldate = {2015-02-05},
year = {2014}
}
@misc{vivado,
institution = {Xilinx, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Vivado Design Suite}},
url = {http://www.xilinx.com/products/design-tools/vivado.html},
urldate = {2015-02-05},
year = {2015}
}
@misc{scala,
institution = {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne (EPFL)},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Scala - Object-Oriented Meets Functional}},
url = {http://www.scala-lang.org/},
urldate = {2015-02-05},
year = {2014}
}
@misc{legup,
institution = {University of Toronto},
keywords = {D5.1},
title = {{High-Level Synthesis with LegUp}},
url = {http://legup.eecg.utoronto.ca/},
urldate = {2014-02-05},
year = {2014}
}
@misc{gmake,
institution = {Free Software Foundation, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{GNU Make}},
url = {http://www.gnu.org/software/make/},
urldate = {2015-02-05},
year = {2014}
}
@misc{ug902,
institution = {Xilinx, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Vivado Design Suite User Guide - High-level Synthesis}},
url = {http://www.xilinx.com/support/documentation/sw\_manuals/xilinx2014\_3/ug902-vivado-high-level-synthesis.pdf},
urldate = {2015-02-05},
year = {2014}
}
@misc{ug835,
institution = {Xilinx, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{Vivado Design Suite User Guide - Tcl Command Reference Guide}},
url = {http://www.xilinx.com/support/documentation/sw\_manuals/xilinx2014\_3/ug835-vivado-tcl-commands.pdf},
urldate = {2014-05-02},
year = {2014}
}
@misc{sv-spec,
institution = {Accellera Organization, Inc.},
keywords = {D5.1},
mendeley-tags = {D5.1},
title = {{SystemVerilog 3.1a Language Reference Manual}},
url = {http://www.eda.org/sv/SystemVerilog\_3.1a.pdf},
urldate = {2014-05-02},
year = {2004}
}
@misc{archlinuxarm,
title = {{archlinux | ARM}},
author = {{ArchLinux Project}},
howpublished = "\url{http://archlinuxarm.org/platforms/armv7/xilinx/zedboard}"
}
PDFLATEX ?= pdflatex
.PHONY: all clean clean-pdf
TEXSRC=$(wildcard *.tex)
TEXPDF=$(patsubst %.tex,%.pdf,$(TEXSRC))
%.pdf: %.tex
$(PDFLATEX) $<
all: $(TEXPDF)
clean-pdf:
rm -f *.pdf *.log *.aux *.fdb_latexmk *.fls
clean: clean-pdf
\documentclass[border=0pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\renewcommand\rmdefault{\sfdefault}
\input{../esacolors}
\begin{document}
\begin{tikzpicture} [
line width=1.5pt,
y=-1cm, x=3cm, rounded corners,
every node/.append style={align=center, font=\bfseries},
process background/.style={top color=esa0, bottom color=esa3, draw=esa5, fill=esa3}
]
\path [process background] (-.1, -1.1) rectangle (1.1, 7.1);
\node [font=\bfseries\large\color{white}] at (0.5, -.5) {User Process};
\begin{scope} [every path/.style={fill=white}]
\draw (0,0) rectangle (1,3) node [pos=0.5] {User\\Application};
%\draw (0,2) rectangle (1,3) node [pos=0.5] {FastFlow};
\draw (0,3) rectangle (1,4) node [pos=0.5] {TPC Library};
\draw (0,4) rectangle (1,7) node [pos=0.5] {Platform DPI\\Client Lib};
\end{scope}
\path [process background] (2.9, -1.1) rectangle (4.1, 7.1);
\node [font=\bfseries\large\color{white}] at (3.5, -.5) {User Process};
\begin{scope} [every path/.style={fill=white}]
\draw (3,0) rectangle (4,2) node [pos=0.5] {Hardware\\Description};
\draw (3,2) rectangle (4,4) node [pos=0.5] {Simulator};
\draw (3,4) rectangle (4,7) node [pos=0.5] {Platform DPI\\Server Lib};
\end{scope}
\node [font=\bfseries\large] at (2, -.5) {Socket IPC};
\begin{scope} [arr/.style={
draw=esa5, fill=esa5, line width=3pt, <->, >=triangle 60,
postaction={-, draw, line width=10pt, shorten >=12pt, shorten <=12pt}
},
every node/.style={font=\bfseries\color{white}}]
\path [arr] (1,4.5) -- (3,4.5) node [pos=0.5] {socket};
\path [arr] (1,5) -- (3,5) node [pos=0.5] {socket};
\node [font=\bfseries\Huge\color{esa5}] at (2, 5.5) {\vdots};
\path [arr] (1,6.5) -- (3,6.5) node [pos=0.5] {socket};
\end{scope}
\end{tikzpicture}
\end{document}
This diff is collapsed.
\documentclass[border=0pt,10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees}
\renewcommand\rmdefault{\ttdefault}
\makeatletter
\newcount\dirtree@lvl
\newcount\dirtree@plvl
\newcount\dirtree@clvl
\def\dirtree@growth{%
\ifnum\tikznumberofcurrentchild=1\relax
\global\advance\dirtree@plvl by 1
\expandafter\xdef\csname dirtree@p@\the\dirtree@plvl\endcsname{\the\dirtree@lvl}
\fi
\global\advance\dirtree@lvl by 1\relax
\dirtree@clvl=\dirtree@lvl
\advance\dirtree@clvl by -\csname dirtree@p@\the\dirtree@plvl\endcsname
\pgf@xa=.2cm\relax
\pgf@ya=-.5cm\relax
\pgf@ya=\dirtree@clvl\pgf@ya
\pgftransformshift{\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\ifnum\tikznumberofcurrentchild=\tikznumberofchildren
\global\advance\dirtree@plvl by -1
\fi
}
\tikzset{
dirtree/.style={
growth function=\dirtree@growth,
every node/.style={anchor=north, font=\bfseries},
every child node/.style={anchor=west},
edge from parent path={(\tikzparentnode\tikzparentanchor) |- (\tikzchildnode\tikzchildanchor)}
}
}
\makeatother
\begin{document}
\begin{tikzpicture}[dirtree, line width=1.2pt]
\node {tapasco}
child { node {arch}
child { node {baseline}
child { node {architecture.description} }
child { node {\ldots} }
}
child { node {\ldots} }
}
child { node {cores}
child { node {fft} child { node {\ldots} }} }
child { node {kernel}
% child { node {add}
% child { node {kernel.description} }
% child { node {\ldots} }
% }
% child { node {reader}
% child { node {kernel.description} }
% child { node {\ldots} }
% }
child { node {MachSuite}
child { node { spmv }
child { node {crs}
child { node {kernel.description} }
child { node {\ldots} }
}
child { node {\ldots} }
}
child { node { sort }
child { node {\ldots} }
}
child { node {\ldots} }
}
child { node {\ldots} }
}
child { node {platform}
child { node {zynq}
child { node {platform.description} }
}
child { node {\ldots} }
};
\end{tikzpicture}
\end{document}
\documentclass[border=0]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,calc,positioning}
\renewcommand\rmdefault{\sfdefault}
\input{../esacolors}
\begin{document}
\begin{tikzpicture}[
tapasco api step/.style={align=center, text width=1.8cm, font=\sffamily\footnotesize\bfseries\color{white}, minimum width=2.1cm, draw=esa5, top color=esa0, bottom color=esa3, outer sep=0pt, minimum height=1.2cm},
chain/.style={draw=esa5, thick, ->, >= open triangle 45, line width=1pt, rounded corners},
branch/.style={chain, dashed}
]
\node (start) {};
\begin{scope}[every node/.style={tapasco api step}, node distance=3cm]
\node [right of=start] (alloc) {Allocate Device Memory};
\node [right of=alloc] (transfer) {Transfer Data};
\node [right of=transfer] (acjob) {Acquire Job ID};
\node [right of=acjob] (jobpr) {Prepare Job};
\node [below of=jobpr, node distance=1.5cm] (launch) {Commit Job};
\node [below of=launch, node distance=1.5cm] (return) {Retrieve Return Args};
\node [left of=return] (rljob) {Release Job ID};
\node [left of=rljob] (fetch) {Fetch Data};
\node [left of=fetch] (relmem) {Release Device Memory};
\end{scope}
\node [below of=start, node distance=3cm] (end) {};
\begin{scope}[every path/.style={chain}]
\path (start) -- (alloc);
\path [branch] ($(start)!.5!(alloc)$) -- ++(0,1cm) -| ($(transfer)!.5!(acjob)$);
\path (alloc) -- (transfer);
\path (transfer) -- (acjob);
\path (acjob) -- (jobpr);
\path (jobpr) -- (launch);
\path (launch) -- (return);
\path [branch] (launch) -| (rljob);
\path (return) -- (rljob);
\path (rljob) -- (fetch);
\path [branch] ($(rljob)!.5!(fetch)$) -- ++(0,1.5cm) -| ($(relmem)!.5!(end)$);
\path (fetch) -- (relmem);
\path (relmem) -- (end);
\end{scope}
\end{tikzpicture}
\end{document}
\documentclass [border=0pt,10pt] {standalone}
\usepackage{tikz}
\usetikzlibrary{calc, patterns}
\renewcommand\rmdefault{\sfdefault}
\input{../esacolors}
\begin{document}
\begin{tikzpicture} [ line width=2pt,
main arrow/.style={fill=black!20, draw=black!70, line cap=round, line width=2pt},
tool/.style={draw=esa4, fill=white, rounded corners},
tool label/.style={font=\bfseries, align=center},
tapasco/.style={font=\bfseries\Large\color{white}},
tapasco step/.style={fill=white, rounded corners, draw=esa4},
tapasco step label/.style={font=\bfseries, align=center},
tool execution/.style={font=\bfseries, yshift=-3pt}
]
\def\width{25}
\def\height{5}
\def\swidth{0.125*\width}
\def\gapwidth{0.5}
\def\mainarrowdepth{0*\gapwidth}
\def\subarrowdepth{0.5*\gapwidth}
\def\tapascostepwidth{60pt}
\coordinate (t) at (0,.2*\height);
\coordinate (m) at (0,0);
\coordinate (b) at (0,-.45*\height);
\coordinate (tt) at (0,-.5*\gapwidth);
\coordinate (tb) at ($(b) +(0,.5*\gapwidth)$);
\coordinate (tm) at ($(m)!.5!(b)$);
\coordinate (l) at (-.5*\width,0);
\coordinate (c) at (0,0);
\coordinate (r) at (.5*\width,0);
\foreach \d in {1, 2, 3} {
\coordinate (s\d) at (${\d - 2}*(0.3*\width,0)$);
\coordinate (ls\d) at ($(s\d) - (.5*\swidth,0)$);
\coordinate (lls\d) at ($(ls\d) - (\gapwidth,0)$);
\coordinate (rs\d) at ($(s\d) + (.5*\swidth,0)$);
\coordinate (rrs\d) at ($(rs\d) + (\gapwidth,0)$);
}
\foreach \ts/\l/\r in {1/l/lls1, 2/rrs1/lls2, 3/rrs2/lls3, 4/rrs3/r}
\coordinate (ts\ts) at ($(\l)!.5!(\r)$);
\foreach \d/\l in {1/{High-Level\\Synthesis\\(Vivado HLS)}, 2/{Mid-Level\\Synthesis\\(Vivado IP\\Integrator)}, 3/{Low-Level\\Synthesis\\(Vivado)}}
\path [tool] (ls\d |- tt) rectangle (rs\d |- tb) node [pos=0.5, tool label] (n\d) {\l};
\shade [main arrow, top color=esa0, bottom color=esa3, draw=esa4] (l |- b) --
(lls1 |- b) -- ($(lls1 |- tm) +(\subarrowdepth,0)$) -- (lls1 |- m) -- (rrs1 |- m) -- (rrs1 |- b) --
(lls2 |- b) -- ($(lls2 |- tm) +(\subarrowdepth,0)$) -- (lls2 |- m) -- (rrs2 |- m) -- (rrs2 |- b) --
(lls3 |- b) -- ($(lls3 |- tm) +(\subarrowdepth,0)$) -- (lls3 |- m) -- (rrs3 |- m) -- (rrs3 |- b) --
(r |- b) -- ($(r |- m) +(\mainarrowdepth,0)$) -- (r |- t) -- (l |- t) -- ($(l |- m) +(\mainarrowdepth,0)$) -- cycle;
\node [tapasco] (tapasco) at ($(t)!.5!(m)$) {Tapasco};
\foreach \ts/\l in {1/{Kernel\\Preparation}, 2/{Threadpool\\Composition}, 3/{Platform\\Integration}, 4/{Evaluation}}
\path [tapasco step] ($(ts\ts |- tt) - (0.5*\tapascostepwidth,0)