diff --git a/doc/diplodocus_simulator/Makefile b/doc/diplodocus_simulator/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..8076e274b0213762d9baff14b9684af1f8bc0bd1 --- /dev/null +++ b/doc/diplodocus_simulator/Makefile @@ -0,0 +1,7 @@ +TOP = ttool_diplodocus_simulator.tex +FIGDIR := images +BUILDDIR := build + +include ../mli.mk + +$(BUILDDIR)/ttool_diplodocus_simulator.pdf: $(FIGDIR) diff --git a/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.aux b/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.aux new file mode 100644 index 0000000000000000000000000000000000000000..98cc3dd84f7ff64dc4a0a0f714a76152f6ced2c8 --- /dev/null +++ b/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.aux @@ -0,0 +1,32 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\babel@aux[2]{} +\@nameuse{bbl@beforestart} +\catcode `:\active +\catcode `;\active +\catcode `!\active +\catcode `?\active +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand \oddpage@label [2]{} +\babel@aux{french}{} +\@writefile{toc}{\contentsline {section}{\numberline {1}Preface}{3}{section.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Table of Versions}{3}{subsection.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Table of References and Applicable Documents}{3}{subsection.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Acronyms and glossary}{3}{subsection.1.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {1.4}Executive Summary}{3}{subsection.1.4}\protected@file@percent } +\gdef \@abspage@last{17} diff --git a/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.log b/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.log new file mode 100644 index 0000000000000000000000000000000000000000..7cdb7b42c8aa6ebb8e2bccc1ea007c80391ab7ba --- /dev/null +++ b/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.log @@ -0,0 +1,1017 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/MacPorts 2021.58693_0) (preloaded format=pdflatex 2021.11.16) 3 MAR 2022 16:31 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**ttool_diplodocus_simulator +(./ttool_diplodocus_simulator.tex +LaTeX2e <2020-10-01> patch level 4 +L3 programming layer <2021-02-18> (/opt/local/share/texmf-texlive/tex/latex/bas +e/article.cls +Document Class: article 2020/04/10 v1.4m Standard LaTeX document class +(/opt/local/share/texmf-texlive/tex/latex/base/size11.clo +File: size11.clo 2020/04/10 v1.4m Standard LaTeX file (size option) +) +\c@part=\count179 +\c@section=\count180 +\c@subsection=\count181 +\c@subsubsection=\count182 +\c@paragraph=\count183 +\c@subparagraph=\count184 +\c@figure=\count185 +\c@table=\count186 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen138 +) (/opt/local/share/texmf-texlive/tex/latex/base/inputenc.sty +Package: inputenc 2020/08/01 v1.3d Input encoding file +\inpenc@prehook=\toks15 +\inpenc@posthook=\toks16 +) (/opt/local/share/texmf-texlive/tex/generic/babel/babel.sty +Package: babel 2021/03/24 3.56 The Babel package +(/opt/local/share/texmf-texlive/tex/generic/babel/babel.def +File: babel.def 2021/03/24 3.56 Babel common definitions +\babel@savecnt=\count187 +\U@D=\dimen139 +\l@babelnohyphens=\language52 +(/opt/local/share/texmf-texlive/tex/generic/babel/txtbabel.def) +\bbl@readstream=\read2 +) +\bbl@dirlevel=\count188 +(/opt/local/share/texmf-texlive/tex/generic/babel-french/francais.ldf +Language: francais 2020/10/10 v3.5l French support from the babel system + +Package francais.ldf Warning: Option `francais' for Babel is *deprecated*, +(francais.ldf) it might be removed sooner or later. Please +(francais.ldf) use `french' instead; reported on input line 31. + +(/opt/local/share/texmf-texlive/tex/generic/babel-french/french.ldf +Language: french 2020/10/10 v3.5l French support from the babel system +Package babel Info: \l@acadian = using hyphenrules for french +(babel) (\language36) on input line 91. +Package babel Info: \l@canadien = using hyphenrules for french +(babel) (\language36) on input line 92. +\FB@nonchar=\count189 +Package babel Info: Making : an active character on input line 430. +Package babel Info: Making ; an active character on input line 431. +Package babel Info: Making ! an active character on input line 432. +Package babel Info: Making ? an active character on input line 433. +\FBguill@level=\count190 +\FBold@everypar=\toks17 +\FB@Mht=\dimen140 +\mc@charclass=\count191 +\mc@charfam=\count192 +\mc@charslot=\count193 +\std@mcc=\count194 +\dec@mcc=\count195 +\listindentFB=\dimen141 +\descindentFB=\dimen142 +\labelindentFB=\dimen143 +\labelwidthFB=\dimen144 +\leftmarginFB=\dimen145 +\parindentFFN=\dimen146 +\FBfnindent=\dimen147 +))) (/opt/local/share/texmf-texlive/tex/latex/carlisle/scalefnt.sty) (/opt/loca +l/share/texmf-texlive/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks18 +) (/opt/local/share/texmf-texlive/tex/latex/base/fontenc.sty +Package: fontenc 2020/08/10 v2.0s Standard LaTeX package +) (/opt/local/share/texmf-texlive/tex/latex/slantsc/slantsc.sty +Package: slantsc 2012/01/01 v2.11 Provide Slanted an Italic Small Caps +(/opt/local/share/texmf-texlive/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +LaTeX Info: Redefining \upshape on input line 35. +LaTeX Info: Redefining \slshape on input line 45. +LaTeX Info: Redefining \itshape on input line 55. +LaTeX Info: Redefining \scshape on input line 65. +) (/opt/local/share/texmf-texlive/tex/latex/lm/lmodern.sty +Package: lmodern 2015/05/01 v1.6.1 Latin Modern Fonts +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/lmr/m/n on input line 22. +LaTeX Font Info: Overwriting symbol font `letters' in version `normal' +(Font) OML/cmm/m/it --> OML/lmm/m/it on input line 23. +LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' +(Font) OMS/cmsy/m/n --> OMS/lmsy/m/n on input line 24. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 25. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 26. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/cmm/b/it --> OML/lmm/b/it on input line 27. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/cmsy/b/n --> OMS/lmsy/b/n on input line 28. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 29. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 31. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> OT1/lmss/m/n on input line 32. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/lmr/m/it on input line 33. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 34. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 35. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/lmss/bx/n on input line 36. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/lmr/bx/it on input line 37. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 38. +) (/opt/local/share/texmf-texlive/tex/latex/base/textcomp.sty +Package: textcomp 2020/02/02 v2.0n Standard LaTeX package +) (/opt/local/share/texmf-texlive/tex/latex/boxedminipage/boxedminipage.sty +Package: boxedminipage 2020/04/19 v1.1 Boxed LaTeX2e minipages +\bmp@box=\box47 +\bmp@width=\skip49 +\bmp@height=\skip50 +) (/opt/local/share/texmf-texlive/tex/latex/graphics/graphicx.sty +Package: graphicx 2020/09/09 v1.2b Enhanced LaTeX Graphics (DPC,SPQR) +(/opt/local/share/texmf-texlive/tex/latex/graphics/graphics.sty +Package: graphics 2020/08/30 v1.4c Standard LaTeX Graphics (DPC,SPQR) +(/opt/local/share/texmf-texlive/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) (/opt/local/share/texmf-texlive/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 105. +(/opt/local/share/texmf-texlive/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen148 +\Gin@req@width=\dimen149 +) (/opt/local/share/texmf-texlive/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) +(/opt/local/share/texmf-texlive/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +(/opt/local/share/texmf-texlive/tex/latex/graphics/dvipsnam.def +File: dvipsnam.def 2016/06/17 v3.0m Driver-dependent file (DPC,SPQR) +)) (/opt/local/share/texmf-texlive/tex/latex/hyperref/hyperref.sty +Package: hyperref 2021-02-27 v7.00k Hypertext links for LaTeX +(/opt/local/share/texmf-texlive/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) +) (/opt/local/share/texmf-texlive/tex/generic/iftex/iftex.sty +Package: iftex 2020/03/06 v1.0d TeX engine tests +) (/opt/local/share/texmf-texlive/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) +(/opt/local/share/texmf-texlive/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) (/opt/local/share/texmf-texlive/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) (/opt/local/share/texmf-texlive/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) (/opt/local/share/texmf-texlive/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) (/opt/local/share/texmf-texlive/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) (/opt/local/share/texmf-texlive/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) (/opt/local/share/texmf-texlive/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) (/opt/local/share/texmf-texlive/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO) +) +\@linkdim=\dimen150 +\Hy@linkcounter=\count196 +\Hy@pagecounter=\count197 +(/opt/local/share/texmf-texlive/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2021-02-27 v7.00k Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) (/opt/local/share/texmf-texlive/tex/latex/hyperref/hyperref-langpatches.def +File: hyperref-langpatches.def 2021-02-27 v7.00k Hyperref: patches for babel la +nguages +) (/opt/local/share/texmf-texlive/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) (/opt/local/share/texmf-texlive/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count198 +(/opt/local/share/texmf-texlive/tex/latex/hyperref/puenc.def +File: puenc.def 2021-02-27 v7.00k Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Hyper figures OFF on input line 4192. +Package hyperref Info: Link nesting OFF on input line 4197. +Package hyperref Info: Hyper index ON on input line 4200. +Package hyperref Info: Plain pages OFF on input line 4207. +Package hyperref Info: Backreferencing OFF on input line 4212. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4445. +\c@Hy@tempcnt=\count199 +(/opt/local/share/texmf-texlive/tex/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4804. +\XeTeXLinkMargin=\dimen151 +(/opt/local/share/texmf-texlive/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) +(/opt/local/share/texmf-texlive/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count266 +\Field@Width=\dimen152 +\Fld@charsize=\dimen153 +Package hyperref Info: Hyper figures OFF on input line 6075. +Package hyperref Info: Link nesting OFF on input line 6080. +Package hyperref Info: Hyper index ON on input line 6083. +Package hyperref Info: backreferencing OFF on input line 6090. +Package hyperref Info: Link coloring OFF on input line 6095. +Package hyperref Info: Link coloring with OCG OFF on input line 6100. +Package hyperref Info: PDF/A mode OFF on input line 6105. +LaTeX Info: Redefining \ref on input line 6145. +LaTeX Info: Redefining \pageref on input line 6149. +(/opt/local/share/texmf-texlive/tex/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2020/08/17 v1.0a Emulation of the original atbegshi packa +ge +with kernel methods +) +\Hy@abspage=\count267 +\c@Item=\count268 +\c@Hfootnote=\count269 +) +Package hyperref Info: Driver (autodetected): hpdftex. +(/opt/local/share/texmf-texlive/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2021-02-27 v7.00k Hyperref driver for pdfTeX +(/opt/local/share/texmf-texlive/tex/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atvery packag +e +with kernel methods +) +\Fld@listcount=\count270 +\c@bookmark@seq@number=\count271 +(/opt/local/share/texmf-texlive/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) +(/opt/local/share/texmf-texlive/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +86. +) +\Hy@SectionHShift=\skip51 +) +LaTeX Font Info: Trying to load font information for T1+lmtt on input line 2 +3. +(/opt/local/share/texmf-texlive/tex/latex/lm/t1lmtt.fd +File: t1lmtt.fd 2015/05/01 v1.6.1 Font defs for Latin Modern +) (/opt/local/share/texmf-texlive/tex/latex/amsmath/amsmath.sty +Package: amsmath 2020/09/23 v2.17i AMS math features +\@mathmargin=\skip52 +For additional information on amsmath, use the `?' option. +(/opt/local/share/texmf-texlive/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text +(/opt/local/share/texmf-texlive/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks19 +\ex@=\dimen154 +)) (/opt/local/share/texmf-texlive/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen155 +) (/opt/local/share/texmf-texlive/tex/latex/amsmath/amsopn.sty +Package: amsopn 2016/03/08 v2.02 operator names +) +\inf@bad=\count272 +LaTeX Info: Redefining \frac on input line 234. +\uproot@=\count273 +\leftroot@=\count274 +LaTeX Info: Redefining \overline on input line 399. +\classnum@=\count275 +\DOTSCASE@=\count276 +LaTeX Info: Redefining \ldots on input line 496. +LaTeX Info: Redefining \dots on input line 499. +LaTeX Info: Redefining \cdots on input line 620. +\Mathstrutbox@=\box48 +\strutbox@=\box49 +\big@size=\dimen156 +LaTeX Font Info: Redeclaring font encoding OML on input line 743. +LaTeX Font Info: Redeclaring font encoding OMS on input line 744. +\macc@depth=\count277 +\c@MaxMatrixCols=\count278 +\dotsspace@=\muskip17 +\c@parentequation=\count279 +\dspbrk@lvl=\count280 +\tag@help=\toks20 +\row@=\count281 +\column@=\count282 +\maxfields@=\count283 +\andhelp@=\toks21 +\eqnshift@=\dimen157 +\alignsep@=\dimen158 +\tagshift@=\dimen159 +\tagwidth@=\dimen160 +\totwidth@=\dimen161 +\lineht@=\dimen162 +\@envbody=\toks22 +\multlinegap=\skip53 +\multlinetaggap=\skip54 +\mathdisplay@stack=\toks23 +LaTeX Info: Redefining \[ on input line 2923. +LaTeX Info: Redefining \] on input line 2924. +) (/opt/local/share/texmf-texlive/tex/latex/base/latexsym.sty +Package: latexsym 1998/08/17 v2.2e Standard LaTeX package (lasy symbols) +\symlasy=\mathgroup4 +LaTeX Font Info: Overwriting symbol font `lasy' in version `bold' +(Font) U/lasy/m/n --> U/lasy/b/n on input line 52. +) (/opt/local/share/texmf-texlive/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup5 +\symAMSb=\mathgroup6 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +) (/opt/local/share/texmf-texlive/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols +) (/opt/local/share/texmf-texlive/tex/latex/txfonts/txfonts.sty +Package: txfonts 2008/01/22 v3.2.1 +LaTeX Font Info: Redeclaring symbol font `operators' on input line 21. +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/lmr/m/n --> OT1/txr/m/n on input line 21. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/lmr/bx/n --> OT1/txr/m/n on input line 21. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/txr/m/n --> OT1/txr/bx/n on input line 22. +\symitalic=\mathgroup7 +LaTeX Font Info: Overwriting symbol font `italic' in version `bold' +(Font) OT1/txr/m/it --> OT1/txr/bx/it on input line 26. +LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 29. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/lmr/bx/n --> OT1/txr/bx/n on input line 29. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/lmr/bx/n --> OT1/txr/bx/n on input line 29. +LaTeX Font Info: Redeclaring math alphabet \mathit on input line 30. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/lmr/m/it --> OT1/txr/m/it on input line 30. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/lmr/bx/it --> OT1/txr/m/it on input line 30. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/txr/m/it --> OT1/txr/bx/it on input line 31. +LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 40. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/lmss/m/n --> OT1/txss/m/n on input line 40. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/lmss/bx/n --> OT1/txss/m/n on input line 40. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/txss/m/n --> OT1/txss/b/n on input line 41. +LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 50. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/lmtt/m/n --> OT1/txtt/m/n on input line 50. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/lmtt/m/n --> OT1/txtt/m/n on input line 50. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/txtt/m/n --> OT1/txtt/b/n on input line 51. +LaTeX Font Info: Redeclaring symbol font `letters' on input line 58. +LaTeX Font Info: Overwriting symbol font `letters' in version `normal' +(Font) OML/lmm/m/it --> OML/txmi/m/it on input line 58. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/lmm/b/it --> OML/txmi/m/it on input line 58. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/txmi/m/it --> OML/txmi/bx/it on input line 59. +\symlettersA=\mathgroup8 +LaTeX Font Info: Overwriting symbol font `lettersA' in version `bold' +(Font) U/txmia/m/it --> U/txmia/bx/it on input line 67. +LaTeX Font Info: Redeclaring math alphabet \mathfrak on input line 70. +LaTeX Font Info: Redeclaring symbol font `symbols' on input line 77. +LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' +(Font) OMS/lmsy/m/n --> OMS/txsy/m/n on input line 77. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/lmsy/b/n --> OMS/txsy/m/n on input line 77. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/txsy/m/n --> OMS/txsy/bx/n on input line 78. +LaTeX Font Info: Redeclaring symbol font `AMSa' on input line 93. +LaTeX Font Info: Overwriting symbol font `AMSa' in version `normal' +(Font) U/msa/m/n --> U/txsya/m/n on input line 93. +LaTeX Font Info: Overwriting symbol font `AMSa' in version `bold' +(Font) U/msa/m/n --> U/txsya/m/n on input line 93. +LaTeX Font Info: Overwriting symbol font `AMSa' in version `bold' +(Font) U/txsya/m/n --> U/txsya/bx/n on input line 94. +LaTeX Font Info: Redeclaring symbol font `AMSb' on input line 102. +LaTeX Font Info: Overwriting symbol font `AMSb' in version `normal' +(Font) U/msb/m/n --> U/txsyb/m/n on input line 102. +LaTeX Font Info: Overwriting symbol font `AMSb' in version `bold' +(Font) U/msb/m/n --> U/txsyb/m/n on input line 102. +LaTeX Font Info: Overwriting symbol font `AMSb' in version `bold' +(Font) U/txsyb/m/n --> U/txsyb/bx/n on input line 103. +\symsymbolsC=\mathgroup9 +LaTeX Font Info: Overwriting symbol font `symbolsC' in version `bold' +(Font) U/txsyc/m/n --> U/txsyc/bx/n on input line 113. +LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 120. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/lmex/m/n --> OMX/txex/m/n on input line 120. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/lmex/m/n --> OMX/txex/m/n on input line 120. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/txex/m/n --> OMX/txex/bx/n on input line 121. +\symlargesymbolsA=\mathgroup10 +LaTeX Font Info: Overwriting symbol font `largesymbolsA' in version `bold' +(Font) U/txexa/m/n --> U/txexa/bx/n on input line 129. +LaTeX Font Info: Redeclaring math symbol \mathsterling on input line 164. +LaTeX Info: Redefining \not on input line 1043. +) (/opt/local/share/texmf-texlive/tex/latex/wasysym/wasysym.sty +Package: wasysym 2020/01/19 v2.4 Wasy-2 symbol support package +\symwasy=\mathgroup11 +LaTeX Font Info: Overwriting symbol font `wasy' in version `bold' +(Font) U/wasy/m/n --> U/wasy/b/n on input line 93. +) (/opt/local/share/texmf-texlive/tex/latex/adjustbox/adjustbox.sty +Package: adjustbox 2020/08/19 v1.3 Adjusting TeX boxes (trim, clip, ...) +(/opt/local/share/texmf-texlive/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2020/11/20 v2.8 package option processing (HA) +(/opt/local/share/texmf-texlive/tex/generic/xkeyval/xkeyval.tex (/opt/local/sha +re/texmf-texlive/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks24 +\XKV@tempa@toks=\toks25 +) +\XKV@depth=\count284 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) (/opt/local/share/texmf-texlive/tex/latex/adjustbox/adjcalc.sty +Package: adjcalc 2012/05/16 v1.1 Provides advanced setlength with multiple back +-ends (calc, etex, pgfmath) +) (/opt/local/share/texmf-texlive/tex/latex/adjustbox/trimclip.sty +Package: trimclip 2020/08/19 v1.2 Trim and clip general TeX material +(/opt/local/share/texmf-texlive/tex/latex/collectbox/collectbox.sty +Package: collectbox 2012/05/17 v0.4b Collect macro arguments as boxes +\collectedbox=\box50 +) +\tc@llx=\dimen163 +\tc@lly=\dimen164 +\tc@urx=\dimen165 +\tc@ury=\dimen166 +Package trimclip Info: Using driver 'tc-pdftex.def'. +(/opt/local/share/texmf-texlive/tex/latex/adjustbox/tc-pdftex.def +File: tc-pdftex.def 2019/01/04 v2.2 Clipping driver for pdftex +)) +\adjbox@Width=\dimen167 +\adjbox@Height=\dimen168 +\adjbox@Depth=\dimen169 +\adjbox@Totalheight=\dimen170 +\adjbox@pwidth=\dimen171 +\adjbox@pheight=\dimen172 +\adjbox@pdepth=\dimen173 +\adjbox@ptotalheight=\dimen174 +(/opt/local/share/texmf-texlive/tex/latex/ifoddpage/ifoddpage.sty +Package: ifoddpage 2016/04/23 v1.1 Conditionals for odd/even page detection +\c@checkoddpage=\count285 +) (/opt/local/share/texmf-texlive/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box51 +\sift@deathcycles=\count286 +\@vwid@loff=\dimen175 +\@vwid@roff=\dimen176 +)) (/opt/local/share/texmf-texlive/tex/latex/ragged2e/ragged2e.sty +Package: ragged2e 2021/02/05 v3.0 ragged2e Package +(/opt/local/share/texmf-texlive/tex/latex/everysel/everysel.sty +Package: everysel 2021/01/20 v2.1 EverySelectfont Package (MS) +(/opt/local/share/texmf-texlive/tex/latex/everysel/everysel-2011-10-28.sty)) +\CenteringLeftskip=\skip55 +\RaggedLeftLeftskip=\skip56 +\RaggedRightLeftskip=\skip57 +\CenteringRightskip=\skip58 +\RaggedLeftRightskip=\skip59 +\RaggedRightRightskip=\skip60 +\CenteringParfillskip=\skip61 +\RaggedLeftParfillskip=\skip62 +\RaggedRightParfillskip=\skip63 +\JustifyingParfillskip=\skip64 +\CenteringParindent=\skip65 +\RaggedLeftParindent=\skip66 +\RaggedRightParindent=\skip67 +\JustifyingParindent=\skip68 +) (/opt/local/share/texmf-texlive/tex/latex/tools/tabularx.sty +Package: tabularx 2020/01/15 v2.11c `tabularx' package (DPC) +(/opt/local/share/texmf-texlive/tex/latex/tools/array.sty +Package: array 2020/10/01 v2.5c Tabular extension package (FMi) +\col@sep=\dimen177 +\ar@mcellbox=\box52 +\extrarowheight=\dimen178 +\NC@list=\toks26 +\extratabsurround=\skip69 +\backup@length=\skip70 +\ar@cellbox=\box53 +) +\TX@col@width=\dimen179 +\TX@old@table=\dimen180 +\TX@old@col=\dimen181 +\TX@target=\dimen182 +\TX@delta=\dimen183 +\TX@cols=\count287 +\TX@ftn=\toks27 +) (/opt/local/share/texmf-texlive/tex/latex/tools/hhline.sty +Package: hhline 2020/01/04 v2.04 Table rule package (DPC) +) (/opt/local/share/texmf-texlive/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count288 +\float@exts=\toks28 +\float@box=\box54 +\@float@everytoks=\toks29 +\@floatcapt=\box55 +) (/opt/local/share/texmf-texlive/tex/latex/multirow/multirow.sty +Package: multirow 2021/03/15 v2.8 Span multiple rows of a table +\multirow@colwidth=\skip71 +\multirow@cntb=\count289 +\multirow@dima=\skip72 +\bigstrutjot=\dimen184 +) (/opt/local/share/texmf-texlive/tex/latex/makecell/makecell.sty +Package: makecell 2009/08/03 V0.1e Managing of Tab Column Heads and Cells +\rotheadsize=\dimen185 +\c@nlinenum=\count290 +\TeXr@lab=\toks30 +) (/opt/local/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2021/01/28 v4.0.1 Extensive control of page headers and foote +rs +\f@nch@headwidth=\skip73 +\f@nch@O@elh=\skip74 +\f@nch@O@erh=\skip75 +\f@nch@O@olh=\skip76 +\f@nch@O@orh=\skip77 +\f@nch@O@elf=\skip78 +\f@nch@O@erf=\skip79 +\f@nch@O@olf=\skip80 +\f@nch@O@orf=\skip81 +) (/opt/local/share/texmf-texlive/tex/latex/base/fontenc.sty +Package: fontenc 2020/08/10 v2.0s Standard LaTeX package +LaTeX Font Info: Trying to load font information for T1+txr on input line 11 +2. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/t1txr.fd +File: t1txr.fd 2000/12/15 v3.1 +)) (/opt/local/share/texmf-texlive/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry +(/opt/local/share/texmf-texlive/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. +) +\Gm@cnth=\count291 +\Gm@cntv=\count292 +\c@Gm@tempcnt=\count293 +\Gm@bindingoffset=\dimen186 +\Gm@wd@mp=\dimen187 +\Gm@odd@mp=\dimen188 +\Gm@even@mp=\dimen189 +\Gm@layoutwidth=\dimen190 +\Gm@layoutheight=\dimen191 +\Gm@layouthoffset=\dimen192 +\Gm@layoutvoffset=\dimen193 +\Gm@dimlist=\toks31 +) (/opt/local/share/texmf-texlive/tex/latex/listings/listings.sty +\lst@mode=\count294 +\lst@gtempboxa=\box56 +\lst@token=\toks32 +\lst@length=\count295 +\lst@currlwidth=\dimen194 +\lst@column=\count296 +\lst@pos=\count297 +\lst@lostspace=\dimen195 +\lst@width=\dimen196 +\lst@newlines=\count298 +\lst@lineno=\count299 +\lst@maxwidth=\dimen197 +(/opt/local/share/texmf-texlive/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2020/03/24 1.8d (Carsten Heinz) +\c@lstnumber=\count300 +\lst@skipnumbers=\count301 +\lst@framebox=\box57 +) (/opt/local/share/texmf-texlive/tex/latex/listings/listings.cfg +File: listings.cfg 2020/03/24 1.8d listings configuration +)) +Package: listings 2020/03/24 1.8d (Carsten Heinz) +(/opt/local/share/texmf-texlive/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2020/03/24 1.8d listings language file +) (/opt/local/share/texmf-texlive/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2020/03/24 1.8d (Carsten Heinz) +) (/opt/local/share/texmf-texlive/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2021-03-18 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count302 +\l__pdf_internal_box=\box58 +) (build/ttool_diplodocus_simulator.aux) +\openout1 = `ttool_diplodocus_simulator.aux'. + +LaTeX Font Info: Checking defaults for OML/txmi/m/it on input line 75. +LaTeX Font Info: Trying to load font information for OML+txmi on input line +75. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/omltxmi.fd +File: omltxmi.fd 2000/12/15 v3.1 +) +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for OMS/txsy/m/n on input line 75. +LaTeX Font Info: Trying to load font information for OMS+txsy on input line +75. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/omstxsy.fd +File: omstxsy.fd 2000/12/15 v3.1 +) +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 75. +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 75. +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 75. +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for OMX/txex/m/n on input line 75. +LaTeX Font Info: Trying to load font information for OMX+txex on input line +75. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/omxtxex.fd +File: omxtxex.fd 2000/12/15 v3.1 +) +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for U/txexa/m/n on input line 75. +LaTeX Font Info: Trying to load font information for U+txexa on input line 7 +5. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/utxexa.fd +File: utxexa.fd 2000/12/15 v3.1 +) +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 75. +LaTeX Font Info: ... okay on input line 75. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 75. +LaTeX Font Info: ... okay on input line 75. +LaTeX Info: Redefining \degres on input line 75. +LaTeX Info: Redefining \dots on input line 75. +LaTeX Info: Redefining \up on input line 75. +(/opt/local/share/texmf-texlive/tex/latex/tools/hhline.sty +Package: hhline 2020/01/04 v2.04 Table rule package (DPC) +) (/opt/local/share/texmf-texlive/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count303 +\scratchdimen=\dimen198 +\scratchbox=\box59 +\nofMPsegments=\count304 +\nofMParguments=\count305 +\everyMPshowfont=\toks33 +\MPscratchCnt=\count306 +\MPscratchDim=\dimen199 +\MPnumerator=\count307 +\makeMPintoPDFobject=\count308 +\everyMPtoPDFconversion=\toks34 +) (/opt/local/share/texmf-texlive/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. +(/opt/local/share/texmf-texlive/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package hyperref Info: Link coloring OFF on input line 75. +(/opt/local/share/texmf-texlive/tex/latex/hyperref/nameref.sty +Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section +(/opt/local/share/texmf-texlive/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) (/opt/local/share/texmf-texlive/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count309 +) +LaTeX Info: Redefining \ref on input line 75. +LaTeX Info: Redefining \pageref on input line 75. +LaTeX Info: Redefining \nameref on input line 75. +(build/ttool_diplodocus_simulator.out) (build/ttool_diplodocus_simulator.out) +\@outlinefile=\write3 +\openout3 = `ttool_diplodocus_simulator.out'. + +ABD: EverySelectfont initializing macros +LaTeX Info: Redefining \selectfont on input line 75. +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: a4paper +* layout: <same size as paper> +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* bindingoffset: 14.45377pt +* modes: +* h-part:(L,W,R)=(72.26999pt, 438.51413pt, 72.26999pt) +* v-part:(T,H,B)=(56.9055pt, 702.78308pt, 85.35826pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=438.51413pt +* \textheight=702.78308pt +* \oddsidemargin=14.45377pt +* \evensidemargin=0.0pt +* \topmargin=-86.49635pt +* \headheight=56.9055pt +* \headsep=14.22636pt +* \topskip=11.0pt +* \footskip=30.0pt +* \marginparwidth=50.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +\c@lstlisting=\count310 +LaTeX Font Info: Trying to load font information for OT1+txr on input line 8 +2. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/ot1txr.fd +File: ot1txr.fd 2000/12/15 v3.1 +) +LaTeX Font Info: Trying to load font information for U+lasy on input line 82 +. +(/opt/local/share/texmf-texlive/tex/latex/base/ulasy.fd +File: ulasy.fd 1998/08/17 v2.2e LaTeX symbol font definitions +) +LaTeX Font Info: Trying to load font information for U+txsya on input line 8 +2. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/utxsya.fd +File: utxsya.fd 2000/12/15 v3.1 +) +LaTeX Font Info: Trying to load font information for U+txsyb on input line 8 +2. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/utxsyb.fd +File: utxsyb.fd 2000/12/15 v3.1 +) +LaTeX Font Info: Trying to load font information for U+txmia on input line 8 +2. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/utxmia.fd +File: utxmia.fd 2000/12/15 v3.1 +) +LaTeX Font Info: Trying to load font information for U+txsyc on input line 8 +2. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/utxsyc.fd +File: utxsyc.fd 2000/12/15 v3.1 +) +LaTeX Font Info: Trying to load font information for U+wasy on input line 82 +. +(/opt/local/share/texmf-texlive/tex/latex/wasysym/uwasy.fd +File: uwasy.fd 2020/01/19 v2.4 Wasy-2 symbol font definitions +) +LaTeX Font Info: Font shape `T1/txr/b/n' in size <12> not available +(Font) Font shape `T1/txr/bx/n' tried instead on input line 91. +<images/tp.pdf, id=24, 164.71948pt x 259.32451pt> +File: images/tp.pdf Graphic file (type pdf) +<use images/tp.pdf> +Package pdftex.def Info: images/tp.pdf used on input line 106. +(pdftex.def) Requested size: 131.55557pt x 207.11166pt. +[1 + +{/opt/local/var/db/texmf/fonts/map/pdftex/updmap/pdftex.map} <./images/tp.pdf>] +LaTeX Font Info: Font shape `T1/txr/b/n' in size <14.4> not available +(Font) Font shape `T1/txr/bx/n' tried instead on input line 110. +(build/ttool_diplodocus_simulator.toc +LaTeX Font Info: Font shape `T1/txr/b/n' in size <10.95> not available +(Font) Font shape `T1/txr/bx/n' tried instead on input line 2. +) +\tf@toc=\write4 +\openout4 = `ttool_diplodocus_simulator.toc'. + +[2] +Underfull \hbox (badness 10000) in paragraph at lines 127--128 +[]|\T1/txr/bx/n/12 Sections Mo-di- + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 144--144 +[]|\T1/txr/bx/n/12 Author or + [] + +[3] +LaTeX Font Info: Trying to load font information for T1+txtt on input line 1 +79. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/t1txtt.fd +File: t1txtt.fd 2000/12/15 v3.1 +) +LaTeX Font Info: Font shape `T1/txtt/b/n' in size <14.4> not available +(Font) Font shape `T1/txtt/bx/n' tried instead on input line 181. +LaTeX Font Info: Trying to load font information for TS1+txr on input line 1 +83. +(/opt/local/share/texmf-texlive/tex/latex/txfonts/ts1txr.fd +File: ts1txr.fd 2000/12/15 v3.1 +) +LaTeX Font Info: Font shape `T1/txtt/b/n' in size <12> not available +(Font) Font shape `T1/txtt/bx/n' tried instead on input line 183. +[4] +Underfull \hbox (badness 10000) in paragraph at lines 290--291 +[] [][][][][][] \T1/txr/m/n/12 up-dates \T1/txtt/m/n/12 _nbToWrite \T1/txr/m/n/ +12 and \T1/txtt/m/n/12 _writeTrans\T1/txr/m/n/12 . Then calls + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 293--294 +[] [][][][][][] \T1/txr/m/n/12 up-dates \T1/txtt/m/n/12 _nbToRead \T1/txr/m/n/1 +2 and \T1/txtt/m/n/12 _readTrans\T1/txr/m/n/12 . Then calls + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 296--297 +[] [][][][][][] \T1/txr/m/n/12 up-dates \T1/txtt/m/n/12 _nbToRead \T1/txr/m/n/1 +2 and \T1/txtt/m/n/12 _writeTrans\T1/txr/m/n/12 . Then calls + [] + + +Underfull \hbox (badness 1430) in paragraph at lines 299--301 +[] [][][][][][] \T1/txr/m/n/12 cal-led af-ter \T1/txtt/m/n/12 testWrite\T1/txr/ +m/n/12 , thus num-ber of samples is known and al- + [] + + +Underfull \hbox (badness 5161) in paragraph at lines 299--301 +\T1/txr/m/n/12 (set its run-nable time). Re-set (to 0) \T1/txtt/m/n/12 _nbToRea +d \T1/txr/m/n/12 and \T1/txtt/m/n/12 _nbToWrite\T1/txr/m/n/12 , then calls + [] + +[5] +Underfull \hbox (badness 10000) in paragraph at lines 310--311 +[] [][][][][][] \T1/txr/m/n/12 si-mi-lar to + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 330--332 +[] [][][][][][] \T1/txtt/m/n/12 write \T1/txr/m/n/12 calls \T1/txtt/m/n/12 writ +e(this) \T1/txr/m/n/12 and re-sets + [] + + +Underfull \hbox (badness 6575) in paragraph at lines 348--350 +\T1/txr/m/n/12 mand), \T1/txtt/m/n/12 _writeTrans\T1/txr/m/n/12 's vir-tual len +gth (fixed constant WAIT_SEND_VLEN) and + [] + + +Underfull \hbox (badness 1552) in paragraph at lines 352--354 +[] [][][][][][] \T1/txr/m/n/12 Up-dates \T1/txtt/m/n/12 _readTrans\T1/txr/m/n/1 +2 , \T1/txtt/m/n/12 _readTrans\T1/txr/m/n/12 's vir-tual length (fixed + [] + + +Underfull \hbox (badness 2781) in paragraph at lines 352--354 +\T1/txr/m/n/12 constant WAIT_SEND_VLEN, if chan-nel not empty), \T1/txtt/m/n/12 + _readTrans\T1/txr/m/n/12 's chan-nel and + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 369--371 +[] [][][][][][] \T1/txr/m/n/12 si-mi-lar to + [] + +[6] +Underfull \hbox (badness 1502) in paragraph at lines 422--423 +\T1/txtt/m/n/12 _current-Transaction \T1/txr/m/n/12 al-ready exists (then re-tu +rns \T1/txtt/m/n/12 _currentTransaction\T1/txr/m/n/12 's + [] + +[7] [8] +Underfull \hbox (badness 1688) in paragraph at lines 503--505 +[] [][][][][][] \T1/txr/m/n/12 Si-mi-lar to \T1/txtt/m/n/12 TMLDelayCommand \T1 +/txr/m/n/12 ex-cept that when + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 521--522 +[] [][][][][][] \T1/txr/m/n/12 Si-mi-lar to \T1/txtt/m/n/12 TMLDelayCommand\T1/ +txr/m/n/12 , mo-reo-ver sets \T1/txtt/m/n/12 _resultVar \T1/txr/m/n/12 to + [] + +[9] +Underfull \hbox (badness 10000) in paragraph at lines 563--565 +[] [][][][][][] \T1/txr/m/n/12 Si-mi-lar to \T1/txtt/m/n/12 TMLReadCommand \T1/ +txr/m/n/12 ex-cept that + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 603--605 +[] [][][][][][] \T1/txr/m/n/12 if \T1/txtt/m/n/12 _currTransaction \T1/txr/m/n/ +12 is 0 then re-turns + [] + + +Underfull \hbox (badness 1337) in paragraph at lines 605--607 +[] [][][][][][] \T1/txr/m/n/12 create a new \T1/txtt/m/n/12 _currTransaction \T +1/txr/m/n/12 with length : + [] + +[10] +LaTeX Font Info: Font shape `T1/txr/b/it' in size <12> not available +(Font) Font shape `T1/txr/bx/it' tried instead on input line 607. + +Underfull \hbox (badness 2181) in paragraph at lines 652--654 +[] [][][][][][] \T1/txr/m/n/12 up-dates \T1/txtt/m/n/12 _nextTransaction\T1/txr +/m/n/12 (virtual length of new + [] + +[11] +Underfull \hbox (badness 10000) in paragraph at lines 714--715 +[] [][][][][][] \T1/txr/m/n/12 in \T1/txtt/m/n/12 _nextTransaction\T1/txr/m/n/1 +2 , up-date start + [] + + +Underfull \hbox (badness 2035) in paragraph at lines 714--715 +\T1/txr/m/n/12 time, length and pe-nal-ties (round to full cycles when re-qui-r +ed). In CPU, up-date + [] + +[12] [13] +Underfull \hbox (badness 3460) in paragraph at lines 841--842 +[] [][][][][][] \T1/txr/m/n/12 Dirty flag of the cur-rent sche-du-ling de-ci-si +on. Set by + [] + +[14] +Underfull \hbox (badness 8075) in paragraph at lines 881--882 +[] [][][][][][] \T1/txr/m/n/12 Flag in-di-ca-ting whe-ther + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 890--891 +[] [][][][][][] \T1/txr/m/n/12 re-turns true if \T1/txtt/m/n/12 _nextTransactio +n$\U/txsyc/m/n/12 ,$\T1/txr/m/n/12 0 and is the + [] + + +Underfull \hbox (badness 3179) in paragraph at lines 896--897 +[] [][][][][][] \T1/txr/m/n/12 Add tran-sac-tion to \T1/txtt/m/n/12 _nextBus \T +1/txr/m/n/12 and set + [] + +[15] +LaTeX Font Info: Font shape `T1/txtt/m/it' in size <12> not available +(Font) Font shape `T1/txtt/m/sl' tried instead on input line 931. + +Underfull \hbox (badness 2990) in paragraph at lines 934--935 +[]\T1/txr/m/n/12 Transaction (and \T1/txtt/m/n/12 CPU\T1/txr/m/n/12 ) is se-lec +-ted by si-mu-la-tor, af-ter ve-ri-fying that all + [] + + +Underfull \hbox (badness 2608) in paragraph at lines 934--935 +\T1/txr/m/n/12 bus mas-ters un-til \T1/txtt/m/n/12 _masterNextTransaction \T1/t +xr/m/n/12 have been gran-ted. In-deed + [] + +[16] + +pdfTeX warning: /opt/local/bin/pdflatex (file ./images/simulate.pdf): PDF inclu +sion: found PDF version <1.7>, but at most version <1.5> allowed +<images/simulate.pdf, id=125, 147.55125pt x 203.76125pt> +File: images/simulate.pdf Graphic file (type pdf) +<use images/simulate.pdf> +Package pdftex.def Info: images/simulate.pdf used on input line 946. +(pdftex.def) Requested size: 170.71652pt x 235.75691pt. + + +pdfTeX warning: /opt/local/bin/pdflatex (file ./images/channelTrans.pdf): PDF i +nclusion: found PDF version <1.7>, but at most version <1.5> allowed +<images/channelTrans.pdf, id=126, 246.9225pt x 246.9225pt> +File: images/channelTrans.pdf Graphic file (type pdf) +<use images/channelTrans.pdf> +Package pdftex.def Info: images/channelTrans.pdf used on input line 947. +(pdftex.def) Requested size: 256.0748pt x 256.08875pt. + +Overfull \hbox (21.78355pt too wide) in paragraph at lines 946--948 +[][] [] + [] + +[17 <./images/simulate.pdf> <./images/channelTrans.pdf>] (build/ttool_diplodocu +s_simulator.aux) +Package rerunfilecheck Info: File `ttool_diplodocus_simulator.out' has not chan +ged. +(rerunfilecheck) Checksum: E0D03855A439827D416C77AA32016BC4;831. + ) +Here is how much of TeX's memory you used: + 16004 strings out of 480035 + 229571 string characters out of 5879654 + 730923 words of memory out of 5000000 + 32932 multiletter control sequences out of 15000+600000 + 458036 words of font info for 147 fonts, out of 8000000 for 9000 + 475 hyphenation exceptions out of 8191 + 71i,12n,74p,644b,608s stack positions out of 5000i,500n,10000p,200000b,80000s +{/opt/local/share/texmf-texlive/fonts/enc/dvips/base/8r.enc}</opt/local/share +/texmf-texlive/fonts/type1/public/txfonts/rtcxr.pfb></opt/local/share/texmf-tex +live/fonts/type1/public/txfonts/rtxmi.pfb></opt/local/share/texmf-texlive/fonts +/type1/public/txfonts/rtxr.pfb></opt/local/share/texmf-texlive/fonts/type1/publ +ic/txfonts/t1xbtt.pfb></opt/local/share/texmf-texlive/fonts/type1/public/txfont +s/t1xtt.pfb></opt/local/share/texmf-texlive/fonts/type1/public/txfonts/t1xtt.pf +b></opt/local/share/texmf-texlive/fonts/type1/public/txfonts/txsy.pfb></opt/loc +al/share/texmf-texlive/fonts/type1/public/txfonts/txsyc.pfb></opt/local/share/t +exmf-texlive/fonts/type1/urw/times/utmb8a.pfb></opt/local/share/texmf-texlive/f +onts/type1/urw/times/utmbi8a.pfb></opt/local/share/texmf-texlive/fonts/type1/ur +w/times/utmr8a.pfb> +Output written on build/ttool_diplodocus_simulator.pdf (17 pages, 139417 bytes) +. +PDF statistics: + 208 PDF objects out of 1000 (max. 8388607) + 167 compressed objects within 2 object streams + 41 named destinations out of 1000 (max. 500000) + 56 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.out b/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.out new file mode 100644 index 0000000000000000000000000000000000000000..268b24ffecc5262d123fdb71366c63900f65bae9 --- /dev/null +++ b/doc/diplodocus_simulator/build/ttool_diplodocus_simulator.out @@ -0,0 +1,5 @@ +\BOOKMARK [1][-]{section.1}{\376\377\000P\000r\000e\000f\000a\000c\000e}{}% 1 +\BOOKMARK [2][-]{subsection.1.1}{\376\377\000T\000a\000b\000l\000e\000\040\000o\000f\000\040\000V\000e\000r\000s\000i\000o\000n\000s}{section.1}% 2 +\BOOKMARK [2][-]{subsection.1.2}{\376\377\000T\000a\000b\000l\000e\000\040\000o\000f\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s\000\040\000a\000n\000d\000\040\000A\000p\000p\000l\000i\000c\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000s}{section.1}% 3 +\BOOKMARK [2][-]{subsection.1.3}{\376\377\000A\000c\000r\000o\000n\000y\000m\000s\000\040\000a\000n\000d\000\040\000g\000l\000o\000s\000s\000a\000r\000y}{section.1}% 4 +\BOOKMARK [2][-]{subsection.1.4}{\376\377\000E\000x\000e\000c\000u\000t\000i\000v\000e\000\040\000S\000u\000m\000m\000a\000r\000y}{section.1}% 5 diff --git a/doc/diplodocus_simulator/images/channelTrans.fig b/doc/diplodocus_simulator/images/channelTrans.fig new file mode 100644 index 0000000000000000000000000000000000000000..b8aa8d3753dbbd008cad2d5b91dbb835c7609363 --- /dev/null +++ b/doc/diplodocus_simulator/images/channelTrans.fig @@ -0,0 +1,48 @@ +#FIG 3.2 Produced by xfig version 3.2.7a +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +0 32 #e6e6e6 +6 3510 3375 6210 3555 +2 2 0 0 0 32 51 -1 20 0.000 0 0 -1 0 0 5 + 3510 3375 6030 3375 6030 3555 3510 3555 3510 3375 +4 0 0 50 -1 14 10 0.0000 4 135 2625 3555 3510 Channel transaction story\001 +-6 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 4455 29 29 4095 4455 4092 4484 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 3825 29 29 4095 3825 4092 3854 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 5445 29 29 4095 5445 4092 5474 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 5805 29 29 4095 5805 4092 5834 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 6210 29 29 4095 6210 4092 6239 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4500 6615 29 29 4500 6615 4497 6644 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 7065 29 29 4095 7065 4092 7094 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 5 + 1 1 1.00 60.00 120.00 + 4095 3645 4095 7245 3645 7245 3645 5445 4050 5445 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4095 5805 4095 6885 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4095 6210 4455 6570 +4 0 0 50 -1 0 12 0.0000 4 135 2505 4185 4410 CPU schedules transaction and\001 +4 0 0 50 -1 0 12 0.0000 4 180 1920 4185 5535 next master are granted.\001 +4 0 0 50 -1 0 12 0.0000 4 180 1950 4185 3825 prepareNextTransaction\001 +4 0 0 50 -1 0 12 0.0000 4 165 1845 4185 4005 (create the transaction)\001 +4 0 0 50 -1 0 12 0.0000 4 135 2835 4185 4770 master which becomes next master.\001 +4 0 0 50 -1 0 12 0.0000 4 180 2325 4185 4590 register it with channel's first\001 +4 0 0 50 -1 0 12 0.0000 4 135 2700 4185 5175 simulator selects transaction after\001 +4 0 0 50 -1 0 12 0.0000 4 180 2565 4185 5355 verifying that all masters before\001 +4 0 0 50 -1 0 12 0.0000 4 135 2850 4185 5715 This schedules next master's busses\001 +4 0 0 50 -1 0 12 0.0000 4 180 2655 4185 5895 and update start time and length.\001 +4 0 0 50 -1 0 12 0.0000 4 135 2580 4185 6255 test if next master is the last one\001 +4 0 0 50 -1 0 12 0.0000 4 135 2430 4590 6570 add transaction to task and all\001 +4 0 0 50 -1 0 12 0.0000 4 180 2730 4590 6750 masters. End of transaction's story\001 +4 0 0 50 -1 1 10 5.4978 4 90 270 4320 6345 true\001 +4 0 0 50 -1 1 10 1.5708 4 150 315 4050 6660 false\001 +4 0 0 50 -1 0 12 0.0000 4 180 2895 4185 7020 set next master to the following one\001 +4 0 0 50 -1 0 12 0.0000 4 180 2505 4185 7200 and register transaction with it.\001 diff --git a/doc/diplodocus_simulator/images/channelTrans.pdf b/doc/diplodocus_simulator/images/channelTrans.pdf new file mode 100644 index 0000000000000000000000000000000000000000..98220d4c8578da51531d96790b3a72fc8a086200 Binary files /dev/null and b/doc/diplodocus_simulator/images/channelTrans.pdf differ diff --git a/doc/diplodocus_simulator/images/simulate.fig b/doc/diplodocus_simulator/images/simulate.fig new file mode 100644 index 0000000000000000000000000000000000000000..2b90c19c9f4c5231c234a212782569d776f6fd21 --- /dev/null +++ b/doc/diplodocus_simulator/images/simulate.fig @@ -0,0 +1,42 @@ +#FIG 3.2 Produced by xfig version 3.2.7a +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +0 32 #e6e6e6 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 5085 29 29 4095 5085 4092 5114 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 4455 29 29 4095 4455 4092 4484 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 4005 29 29 4095 4005 4092 4034 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 5535 29 29 4095 5535 4092 5564 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 6210 29 29 4095 6210 4092 6239 +1 3 0 4 0 7 50 -1 -1 0.000 1 0.0000 4095 6615 29 29 4095 6615 4092 6644 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4095 5535 4095 6165 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4095 5535 3645 5535 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 5 + 1 1 1.00 60.00 120.00 + 4095 3780 4095 6750 3645 6750 3645 4680 4095 4680 +2 2 0 0 0 32 51 -1 20 0.000 0 0 -1 0 0 5 + 3600 3555 5445 3555 5445 3735 3600 3735 3600 3555 +4 0 0 50 -1 0 12 0.0000 4 135 1680 4185 5040 find transaction with\001 +4 0 0 50 -1 0 12 0.0000 4 135 1275 4185 5220 lowest end time\001 +4 0 0 50 -1 0 12 0.0000 4 135 975 4185 4410 schedule all\001 +4 0 0 50 -1 0 12 0.0000 4 135 1335 4185 4545 execution nodes\001 +4 0 0 50 -1 0 12 0.0000 4 180 1305 4185 4050 prepare all tasks\001 +4 0 0 50 -1 0 12 0.0000 4 135 1245 4185 5535 add transaction\001 +4 0 0 50 -1 1 10 0.0000 4 150 315 3780 5490 false\001 +4 0 0 50 -1 0 12 0.0000 4 135 1260 4185 6705 execution node\001 +4 0 0 50 -1 0 12 0.0000 4 135 720 4185 6570 schedule\001 +4 0 0 50 -1 0 12 0.0000 4 135 975 4185 6345 transactions\001 +4 0 0 50 -1 0 12 0.0000 4 135 1425 4185 6210 awake unblocked\001 +4 0 0 50 -1 1 10 1.5708 4 90 270 4050 5940 true\001 +4 0 0 50 -1 0 10 0.0000 4 90 990 4230 5670 - true: execute\001 +4 0 0 50 -1 0 10 0.0000 4 120 1275 4230 5805 - false: nextMaster\001 +4 0 0 50 -1 14 10 0.0000 4 105 1890 3645 3690 Simulator.simulate\001 diff --git a/doc/diplodocus_simulator/images/simulate.pdf b/doc/diplodocus_simulator/images/simulate.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9124197dac39ecc4d65ea780aeaaad8ab58a7d3d Binary files /dev/null and b/doc/diplodocus_simulator/images/simulate.pdf differ diff --git a/doc/diplodocus_simulator/images/tp.pdf b/doc/diplodocus_simulator/images/tp.pdf new file mode 100755 index 0000000000000000000000000000000000000000..a597c381ab3f4e1c29eb1f0084709a58101ac70f Binary files /dev/null and b/doc/diplodocus_simulator/images/tp.pdf differ diff --git a/doc/diplodocus_simulator/ttool_diplodocus_simulator.tex b/doc/diplodocus_simulator/ttool_diplodocus_simulator.tex new file mode 100644 index 0000000000000000000000000000000000000000..0e6d3b68dd80afd67aa439274b60cb5bdb225d97 --- /dev/null +++ b/doc/diplodocus_simulator/ttool_diplodocus_simulator.tex @@ -0,0 +1,950 @@ +\documentclass[a4paper,11pt]{article} +% FONTS and SYMBOLS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[utf8]{inputenc} +\usepackage[francais]{babel} +%\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{slantsc} +\usepackage{lmodern} +\usepackage{textcomp} +% USUAL GRAPHICAL TOOLS %%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{boxedminipage} +\usepackage{graphicx} +\usepackage[dvipsnames]{xcolor} +\usepackage{hyperref} + +% PAGE LAYOUT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\textwidth 16cm +%\textheight 25.5cm +%\voffset -3cm +%\hoffset -2cm +%\parindent 0mm + +\ttfamily +\newcommand{\lfont}{\fontseries{l}\selectfont} +\newcommand{\mfont}{\fontseries{m}\selectfont} +\newcommand{\bfont}{\fontseries{b}\selectfont} + +% COLORS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\definecolor{file}{RGB}{215,230,255} +\definecolor{method}{RGB}{240,240,200} +\definecolor{variable}{RGB}{215,255,230} +% COLORS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\cod}[1]{{\ttfamily #1}} +\newcommand{\class}[2]{\par\vspace{1mm}\hspace{-5mm}\large\colorbox{file}{\textbullet\bfont\cod{#1}:} (\cod{#2})\par} +\newcommand{\method}[1]{\par\vspace{1mm}\hspace{-2mm}\colorbox{method}{\textopenbullet\bfont\cod{#1}:}} +\newcommand{\variable}[1]{\par\vspace{1mm}\hspace{-2mm}\colorbox{variable}{\textopenbullet\bfont\cod{#1}:}} + + + +\usepackage{amsmath} +\usepackage{latexsym} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{graphicx} +\usepackage{txfonts} +\usepackage{wasysym} +\usepackage{adjustbox} +\usepackage{ragged2e} +\usepackage{tabularx} +\usepackage{hhline} +\usepackage{float} +\usepackage{multirow} +\usepackage{makecell} +\usepackage{fancyhdr} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[a4paper,bindingoffset=0.2in,headsep=0.5cm,left=1in,right=1in,bottom=3cm,top=2cm,headheight=2cm]{geometry} +\usepackage{hyperref} +\usepackage{listings} +\usepackage{color} + +\definecolor{pblue}{rgb}{0.13,0.13,1} +\definecolor{pgreen}{rgb}{0,0.5,0} +\definecolor{pred}{rgb}{0.9,0,0} +\definecolor{pgrey}{rgb}{0.46,0.45,0.48} + +\everymath{\displaystyle} +\pagestyle{fancy} +\fancyhf{} +\rfoot{Page \thepage} + +\lstset{language=C,basicstyle=\footnotesize,keywordstyle=\color{red}\bfseries, commentstyle=\color{blue}\textit,stringstyle=\color{green}\ttfamily, showspaces=false,showstringspaces=false} + + +\begin{document} +\sloppy + +\begin{center} +\Large Telecom Paris \\ +\Large COMELEC Department \\ +\vspace{20 pt} +\underline{\Huge TTool: Simulator of DIPLODOCUS} +\end{center} + +\begin{table}[H] +\large +\centering +\begin{adjustbox}{width=\textwidth} +\begin{tabular}{ |p{1.6cm}|p{6.0cm}|p{4.4cm}|p{4.2cm}| } +\hhline{----} + & \textbf{Document Manager} & \textbf{Contributors} & \textbf{Checked by} \\ +\hhline{----} +\textbf{Name} & Sophie COUDERT & Sophie COUDERT & +\multirow{2}{*}{Ludovic APVRILLE} \\ +\hhline{--~~} +\textbf{Contact} & sophie.coudert@telecom-paris.fr & \multirow{2}{*}{} & \\ +\hhline{--~~} +\textbf{Date} & \today & Ludovic APVRILLE & \\ +\hline +\end{tabular} +\end{adjustbox} +\end{table} + +\begin{figure}[!h] +\centering +\includegraphics[width=0.3\textwidth]{images/tp} +\end{figure} + +\newpage +\tableofcontents + +% \newpage +% \listoffigures + +\newpage +\section{Preface} + +\subsection{Table of Versions} + +\begin{table}[H] +\large +\centering +\begin{adjustbox}{width=\textwidth} +\begin{tabular}{ |p{1.5cm}|p{2.5cm}|p{9.0cm}|p{3.0cm}| } +\hhline{----} +\textbf{Version} & \textbf{Date} & \textbf{Description $ \& $ Rationale of +Modifications} & \textbf{Sections Modified} \\ +\hhline{----} +1.0 & 03/03/2022 & First draft & \\ +\hline +\end{tabular} +\end{adjustbox} +\end{table} + +\subsection{Table of References and Applicable Documents} + +\begin{table}[H] +\large +\centering +\begin{adjustbox}{width=\textwidth} +\begin{tabular}{ |p{2.66in}|p{2.66in}|p{0.95in}|p{0.43in}| } +\hhline{----} +\textbf{Reference} & \textbf{Title $ \& $ Edition} & \textbf{Author or +Editor} & \textbf{Year} +\\ +\hhline{----} + & & & \\ +\hline +\end{tabular} +\end{adjustbox} +\end{table} + +\subsection{Acronyms and glossary} + +\begin{table}[H] +\large +\centering +\begin{adjustbox}{width=\textwidth} +\begin{tabular}{ |p{1.24in}|p{5.45in}| } +\hhline{--} +\textbf{Term} & \textbf{Description} \\ +\hhline{--} + & \\ +\hline +\end{tabular} +\end{adjustbox} +\end{table} + +\subsection{Executive Summary} + +This document describes the structure and meaning of the code of the DIPLODOCUS simulator. General algorithms as well as individual methods of C++ classes are commented. + +\newpage + +%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +%\begin{document} +%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +\section*{Notes} +\cod{\_length} of communication command: number of bytes: TML param * width of channel. becomes virtual length of transaction. +%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +\section*{Base Directory \cod{src\_simulator}} +%=========================================== +\class{Transaction}{} +%----------------------- +\variable{\_command} Transaction's command +%----------------------- +\variable{\_channel} Transaction's channel. Relevant for communication transactions. +%----------------------- +\variable{\_runnableTime} Time at which the transaction is allowed to start. May be in the future, for example after a static delay. +%----------------------- +\variable{\_startTime} transaction's actual start time. Progressively updated while trying to execute, until transaction is actually executed (in particular for bus transaction). +%----------------------- +\variable{\_virtualLength} number of execution units of the transaction, i.e. bytes for communication transaction and integer instructions for exec-similar commands. Also progressively updated. +%----------------------- +\variable{\_length} length with "real" time as unit (cycles??). Also progressively updated. +%----------------------- +\variable{\_idlePenalty} time (cycle) updated while simulating. +%----------------------- +\variable{\_taskSwitchingPenalty} time (cycle) updated while simulating. +%----------------------- +\variable{\_transactCoreNumber} core that executes transaction (when multicore CPU). +%----------------------- +\method{getStartTimeOperation()} takes penalties into account +%----------------------- +\method{getEndTime()} takes penalties into account + +%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +\section*{Directory \cod{app}} + +%£££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££ +\subsection*{Channels} +%=========================================== +\class{TMLChannel}{} +Class for mapped channels. +%----------------------- +\variable{\_width} Channel size (in bytes or samples??) + +%----------------------- +\variable{\_readTask} tasks which performs read operation on the channel + +%----------------------- +\variable{\_writeTask} tasks which performs write operation on the channel + +%----------------------- +\variable{\_writeTrans} transaction which attempts to write in the channel + +%----------------------- +\variable{\_readTrans} transaction which attempts to read the channel + +%----------------------- +\variable{\_masters} buses on which the channel is mapped. doubble list: from first write master to last one, then from last read master to first one. + +%----------------------- +\variable{\_slaves} slaves on which the channel is mapped. Respects order of masters. + +%----------------------- +\variable{\_writeTransCurrHop} current Hop (master/slave) of write Transaction + +%----------------------- +\variable{\_readTransCurrHop} current Hop (master/slave) of read Transaction + +%----------------------- +\method{testWrite(iTrans)} Prepares a write operation + +%----------------------- +\method{testRead(iTrans)} Prepares a read operation + +%----------------------- +\method{write()} Performs the write operation + +%----------------------- +\method{read()} returns bool. Performs the read operation + +%----------------------- +\method{getNextMaster(iTrans)} Returns the next communication master on which the given transaction is conveyed. Supposes that \cod{iTrans} is \cod{\_writeTrans} or \cod{\_readTrans}. First increments \cod{\_writeTransCurrHop} or decrements \cod{\_readTransCurrHop}. Returns the newly pointed master. + +%----------------------- +\method{getFirstMaster(iTrans)} Returns the first communication master on which the given transaction is conveyed. Supposes that \cod{iTrans} is \cod{\_writeTrans} or \cod{\_readTrans}. Set (read or write) current hop to this master. + +%----------------------- +\method{getNextSlave(iTrans)} Returns the next slave component to which the given transaction is sent. Supposes that \cod{iTrans} is \cod{\_writeTrans} or \cod{\_readTrans}. Returns slave without modifying hops. + +%=========================================== +\class{TMLStateChannel}{TMLChannel} +Class for mapped channels with content (FIFOs). There are also data to handle losses of samples in the channel, which are abstracted here. + +%----------------------- +\variable{\_content} Content of the channel + +%----------------------- +\variable{\_nbToWrite} Number of samples the write transaction attempts to write + +%----------------------- +\variable{\_nbToRead} Number of samples the read transaction attempts to read + +%----------------------- +\variable{\_overflow} Buffer overflow flag + +%----------------------- +\variable{\_underflow} Buffer underflow flag + + +%=========================================== +\class{TMLbrbwChannel}{TMLStateChannel} +Blocking read-blocking write. Handling of losses is abstracted. +%----------------------- +\method{setTransactionLength()} Determines the virtual length of read and write transactions based on the state of the channel. Updates \cod{\_readTrans} and\cod{\_writeTrans}'s virtual lengthes, \cod{\_overflow} and \cod{\_underflow}. Chooses the maximal length respecting demanded length and content/place, but split it at the size that allows the symetric operation to fully execute if relevant and possible (when \cod{\_nbToRead}$>${\_content} ($\Rightarrow$ \cod{\_underflow}={\tt true}), or \cod{\_nbToWrite}$>$\cod{length $-$\_content} ($\Rightarrow$\cod{\_overflow}={\tt true})). + +%----------------------- +\method{testWrite(iTrans)} updates \cod{\_nbToWrite} and \cod{\_writeTrans}. Then calls \cod{setTransac\-tion\-Length}. + +%----------------------- +\method{testRead(iTrans)} updates \cod{\_nbToRead} and \cod{\_readTrans}. Then calls \cod{setTransaction\-Length}. + +%----------------------- +\method{testwrite} updates \cod{\_nbToRead} and \cod{\_writeTrans}. Then calls \cod{setTransactionLength}. + +%----------------------- +\method{write()} called after \cod{testWrite}, thus number of samples is known and allowed (\cod{\_wri\-te\-Trans}'s virtual length). Updates \cod{\_content} and unblock \cod{\_readTrans} (set its runnable time). Reset (to 0) \cod{\_nbToRead} and \cod{\_nbToWrite}, then calls \cod{setTransactionLength}. Losses are handled here. +%----------------------- +\method{read()} called after \cod{testRead}, thus number of samples is known and allowed (\cod{\_read\-Trans}'s virtual length). Returns {\tt false} if \cod{\_content} $<$ \cod{\_readTrans}'s virtual length. Otherwise, returns {\tt true}, updates \cod{\_content} and unblock \cod{\_writeTrans} (set its runnable time). Reset (to 0) \cod{\_nbToRead} and \cod{\_nbToWrite}, then calls \cod{setTransactionLength}. + +%=========================================== +\class{TMLbrnbwChannel}{TMLStateChannel} +Blocking read-non blocking write. Handling of losses is abstracted. +%----------------------- +\method{setTransactionLength()} Determines the virtual length of read and write transactions based on the state of the channel. Updates \cod{\_readTrans} and\cod{\_writeTrans}'s virtual lengthes and \cod{\_underflow}. Chooses the maximal length respecting demanded length and content/place, but split it at the size that allows the symetric operation to fully execute if relevant and possible (when \cod{\_nbToRead}$>${\_content} ($\Rightarrow$ \cod{\_underflow}={\tt true})). + +%----------------------- +\method{testWrite(iTrans), testRead(iTrans), write()} similar to \cod{TMLbrbwChannel}. + +%----------------------- +\method{read()} called after \cod{testRead}, thus number of samples is known and allowed (\cod{\_read\-Trans}'s virtual length). returns {\tt false} if \cod{\_content} $<$ \cod{\_readTrans}'s virtual length. Returns {\tt false} if \cod{\_content} $<$ \cod{\_readTrans}'s virtual length. Otherwise, returns {\tt true}, updates \cod{\_content} and reset \cod{\_nbToRead} and \cod{\_nbToWrite}. + +%=========================================== +\class{TMLnbrnbwChannel}{TMLChannel} +Non blocking read-non blocking write + +%----------------------- +\method{testWrite(iTrans), testRead(iTrans)} respectively update \cod{\_readTrans} and \cod{\_wri\-teTrans}. + +%----------------------- +\method{write(iTrans), read(iTrans)} respectively reset (to 0) \cod{\_readTrans} and \cod{\_wri\-te\-Trans}. + +%=========================================== +\class{TMLEventChannel}{TMLStateChannel} +%----------------------- +\method{cancelReadTransaction()} Cancels a pending read operation +%----------------------- +\method{{\rm virtual} write(iTrans), write()} \cod{write} calls \cod{write(this)} and resets \cod{\_writeTrans}. +%----------------------- +\method{getRequestChannel()} test channel's type. returns bool, default 0. + +%=========================================== +\class{TMLEventSizedChannel}{TMLEventChannel} +%----------------------- +\variable{\_paramQueue} Queue for parameters +%----------------------- +\variable{\_tmpParam} Temporary buffer for the parameters of the registered write transaction. + +%=========================================== +\class{TMLEventFChannel}{TMLEventSizedChannel} +Blocking read non blocking write. Samples which do not fit in the channel are dropped + +%----------------------- +\variable{\_length}Length of the channel +%----------------------- +\method{testWrite(iTrans)} +Updates \cod{\_writeTrans}, \cod{\_tmpParam} (from \cod{iTrans}'s command), \cod{\_writeTrans}'s virtual length (fixed constant WAIT\_SEND\_VLEN) and \cod{\_overflow} (set to {\tt true} when \cod{\_content} is \cod{\_length}. ); + +%----------------------- +\method{testRead(iTrans)} +Updates \cod{\_readTrans}, \cod{\_readTrans}'s virtual length (fixed constant WAIT\_SEND\_VLEN, if channel not empty), \cod{\_readTrans}'s channel and \cod{\_underflow} ({\tt true} if channel is empty); + +%----------------------- +\method{write} (handles losses, abstracted) Called after testwrite. If channel is not full, increments \cod{\_content} and pushes \cod{\_tmpParam} in queue. awake {\_readTrans} if relevant (set its runnalbe time, channel and virtual length) +Resets \cod{\_writeTrans} (also when channel full). If the channel is full, then the message is lost. +%----------------------- +\method{read} Returns {\tt false} when empty channel. Otherwise decrements \cod{\_content}. Pops parameter from queue and update \cod{\_readTrans}'s command with the poped value. +%----------------------- +\method{cancelReadTransaction()} resets \cod{\_readTrans}. + +%=========================================== +\class{TMLEventFBChannel}{TMLEventSizedChannel} +blocking read blocking write (finite FIFO) +%----------------------- +\variable{\_length}Length of the channel +%----------------------- +\method{testRead(), testWrite(), cancelReadTransaction()} similar to \cod{TMLEventFChan\-nel}. +%----------------------- +\method{write()} similar to \cod{TMLEventFChannel} but does not check if channel is full. +%----------------------- +\method{read()} similar to \cod{TMLEventFChannel} but also awake \cod{\_writeTrans} if relevant (set its runnalbe time, channel and virtual length) + +%=========================================== +\class{TMLEventBChannel}{TMLEventSizedChannel} +blocking read non blocking write channel (infinite FIFO) +%----------------------- +\variable{\_requestChannel} flag, boolean. +%----------------------- +\method{testRead(), write()} similar to \cod{TMLEventFChannel} except that \cod{\_tmpParam} is not set by \cod{testWrite} but by \cod{write}.. +%----------------------- +\method{testWrite()} Updates \cod{\_writeTrans} and its virtual length. +%----------------------- +\method{read()} Returns {\tt false} if channel is empty. Similar to \cod{TMLEventFChannel}. + +%£££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££ +\subsection*{Tasks} + +%=========================================== +\class{TMLCommand}{} +%----------------------- +\variable{\_length} Length of the command +%----------------------- +\variable{\_progress} Progress of the command (in execution units) +%----------------------- +\variable{\_currTransaction} current transaction +%----------------------- +\variable{\_task} the task the command belongs to +%----------------------- +\variable{\_nextCommand} array of next commands +%----------------------- +\variable{\_justStarted} {\tt true} until the first transaction of a task is executed +%----------------------- +\variable{\_commandStartTime} Command Start Time +True if there was a transaction to prepare +%----------------------- +\method{setParams(ioParam)}Initializes a parameter structure to the values specified by the command. Virtual, returns Parameter, default is 0. +%----------------------- +\method{getChannel(iIndex)}channel on which the command performs operations +%----------------------- +\method{getDependentTask(iIndex)} task which could be unblocked by the command +%----------------------- +\method{getNextCommands(oNbOfCmd), getNextCommands()} respectively return an array of commands and the first of them. {\tt oNbOfCmd} is the size of the array. +%----------------------- +\method{isDelayTransaction(), getActiveDelay()} check command type, booleans. +%----------------------- +\method{prepare(iInit)} {\tt iInit} is only true at the initial call of the method by simulator. If command is terminated initializes next command and \cod{prepare()} it. Otherwise, progrees in command by calling \cod{prepareNext\-Transaction()} which is implemented by subclasses of TMLCommand. Returns the prepared transaction if there is one. Two cases: +\begin{itemize} + \item \cod{\_length}=\cod{\_progress}, i.e. command is terminated. Change to the next command: reset \cod{\_progress}, + \cod{\_currTransaction} and \cod{\_commandStartTime} and update task's current command. Then prepare new command if not 0, otherwise returns 0. + \item otherwise, if start time not set, set it to simulated time and sets \cod{\_justStarted} if \cod{\_progress} is 0. Returns \cod{prepareNextTransaction} except if {\tt iInit} and \cod{\_current\-Transaction} already exists (then returns \cod{\_currentTransaction}'s command (redoundant call (?))). +\end{itemize} +%----------------------- +\method{prepareNextTransaction()} {\tt true} if there was a transaction to prepare. Virtual, returns TMLCommand, default is 0. +%----------------------- +\method{execute()} Updates the inner state of the command as well as the state of all dependent objects (channel, bus,...) + + +%=========================================== +\class{Task}{WorkloadSource} +note: \cod{schedule} does nothing. Instances also comprise command-specific function (such as length computation for example) which are called by command' s \cod{xxx} methods. + +%----------------------- +\variable{\_priority} priority of the task +%----------------------- +\variable{\_endLastTransaction} End of the last scheduled transaction of the task +%----------------------- +\variable{\_firstCommand} first command of the task +%----------------------- +\variable{\_currCommand} current command of the task +%----------------------- +\variable{\_isDaemon} flag +%----------------------- +\variable{\_justStarted} true until the first transaction of a task is executed +%----------------------- +\method{addTransaction(iTrans)} Updates \cod{\_endLastTransaction} with {\tt iTrans}'s end time and unsets \cod{\_justStarted}. +%----------------------- +\method{finished()} Is called when a stop command is encountered. Sets \cod{\_justStarted}. +%----------------------- +\method{getNextTransaction(iEndSchedule)} Returns \cod{\_currCommand}'s current transaction + +%£££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££££ +\subsection*{Commands} +First, see \cod{TMLCommand} above. +%=========================================== +\class{TMLActionCommand}{TMLCommand} +%----------------------- +\variable{\_actionFunc} pointer to the function that implementss command's specific action. +%----------------------- +\method{prepareNextTransaction()} Calls \cod{\_actionFunc}, then makes task change to next command and call \cod{prepare(false)}. +%----------------------- +\method{execute()} does nothing + +%=========================================== +\class{TMLChoiceCommand}{TMLCommand} +%----------------------- +\variable{\_rangeFunc} pointer to the condition function returning the index of the next command. +%----------------------- +\method{prepareNextTransaction()} makes task change to next command and then call \cod{pre\-pa\-re(false)}. +%----------------------- +\method{execute()} does nothing +%----------------------- +\method{getNextCommands()} selects next command by calling \cod{\_rangeFunc}. + +%=========================================== +\class{TMLRandomChoiceCommand}{TMLChoiceCommand} +%----------------------- +\variable{\_randomValue} in fact in {\tt IndeterminismSource.h}, no true implementtion (??) +%----------------------- +\method{prepareNextTransaction()} change \cod{\_randomValue} by calling \cod{\_rangeFunc}. then similar to \cod{TMLChoiceCommand} +%----------------------- +\method{execute()} does nothing +%----------------------- +\method{getNextCommands()} returns \cod{\_nextCommand[\_randomValue]} + +%=========================================== +\class{TMLDelayCommand}{TMLCommand} +%----------------------- +\variable{\_actionFunc} pointer to the function that increments \cod{\_endLastTransaction} with delay duration for passive delays. +%----------------------- +\method{getActiveDelay(), isDelayTransaction()} are redefined +%----------------------- +\method{prepareNextTransaction()} when \cod{\_progress} is 0 (beginning of command), calls \cod{\_ac\-tionFunc} and then, if \cod{length} is 0, makes task change to next transaction and returns \cod{prepare(false)} (this should not happend as \cod{prepareNextTransaction()} seems to be always called with \cod{\_length}$\neq$\cod{\_progress}).\\ Then updates \cod{\_currTransaction} with new one of length \cod{\_length}$-$\cod{\_progress}, and start time \cod{\_endLastTransaction}. +%----------------------- +\method{execute()} increments \cod{\_progress} with \cod{\_currTransaction}'s virtual length, then add \cod{\_curr\-Transaction} to task and calls \cod{prepare(false)}. + +%=========================================== +\class{TMLExeciCommand}{TMLCommand} +%----------------------- +\variable{\_lengthFunc} pointer to a function computing the length of the command. +%----------------------- +\method{prepareNextTransaction()} Similar to \cod{TMLDelayCommand} except that when \cod{\_prog\-ress} is 0 (beginning of command), updates \cod{\_length} using \cod{\_lengthFunc} instead of calling \cod{\_actionFunc}. +%----------------------- +\method{execute()} Similar to \cod{TMLDelayCommand} + +%=========================================== +\class{TMLExeciRangeCommand}{TMLCommand} +Similar to \cod{TMLExeciCommand} except that \cod{\_lengthFunc} has range parameters. + +%=========================================== +\class{TMLNotifiedCommand}{TMLCommand} +determines the number of events queued in a channel. length: fixed constant. +%----------------------- +\variable{\_channel} Channel on which the event is conveyed +%----------------------- +\variable{\_resultVar} number of sample in the channel updated by \cod{execute}. +%----------------------- +\method{prepareNextTransaction()} Updates \cod{\_currTransaction} with new one, with length \cod{\_length}$-$\cod{\_progress}, start time \cod{\_endLastTransaction} and \cod{\_channel}. +%----------------------- +\method{execute()} Similar to \cod{TMLDelayCommand}, moreover sets \cod{\_resultVar} to \cod{\_channel}'s content (amount of messages). + +%=========================================== +\class{TMLRandomCommand}{TMLCommand} +%----------------------- +\variable{\_rangeFunc} Function returning the range allowed by the command in output parameters {\tt oMin} and {\tt oMax}. +%----------------------- +\variable{*\_resultVar} pointer to the variable in which the random number is put by \cod{prepare\-NextTransaction()}. +%----------------------- +\method{prepareNextTransaction()} Updates \cod{\_resultVar} with generated random number and change task current command to next one before calling \cod{prepare(false)} for this new command. +%----------------------- +\method{execute()} does nothing + +%=========================================== +\class{TMLReadCommand}{TMLCommand} +%----------------------- +\variable{\_lengthFunc} Function returning the length of the command. +%----------------------- +\variable{\_channel} Channel which is read +%----------------------- +\method{prepareNextTransaction()} When \cod{\_prog\-ress} is 0 (beginning of command), updates \cod{\_length} using \cod{\_lengthFunc} and taking \cod{\_channel}'s width into account (and if length is 0,\ldots\ c.f. \cod{TMLExeciCommand}). Then updates \cod{\_currTransaction} with new one, with length \cod{\_length}$-$\cod{\_progress}, start time \cod{\_endLastTransaction} and \cod{\_channel}. Finally calls \cod{\_channel}'s \cod{testread()} method. +%----------------------- +\method{execute()} Similar to \cod{TMLDelayCommand}, moreover calls \cod{\_channel}'s \cod{read()} method. + +%=========================================== +\class{TMLWaitCommand}{TMLCommand} +%----------------------- +\variable{\_channel} Channel on which the event is conveyed +%----------------------- +\variable{\_paramFunc} function (\cod{f(param)}) that sets variables of command profile to values provided by {\tt param}. +%----------------------- +\method{prepareNextTransaction()} Updates \cod{\_currTransaction} with new one, with length \cod{\_length}$-$\cod{\_progress}, start time \cod{\_endLastTransaction} and \cod{\_channel}. Then calls \cod{\_chan\-nel}'s \cod{testread(\_currTransaction)} method. Moreover, for request channels, if progress is 0 then \cod{\_task->finished()} is called which sets task's \cod{\_justStarted}. +%----------------------- +\method{execute()} Similar to \cod{TMLDelayCommand}, moreover calls \cod{\_channel}'s \cod{read()} method. + +%=========================================== +\class{TMLWriteCommand}{TMLCommand} +%----------------------- +\variable{\_lengthFunc} Function returning the length of the command. +%----------------------- +\variable{\_channel} Channel which is written +%----------------------- +\method{prepareNextTransaction()} Similar to \cod{TMLReadCommand} except that \cod{testwrite()} is called instead of \cod{testRead()}. +%----------------------- +\method{execute()} Similar to \cod{TMLDelayCommand}, moreover calls \cod{\_channel}'s \cod{write()} method. + +%=========================================== +\class{TMLSendCommand}{TMLCommand} +%----------------------- +\variable{\_paramFunc} Function returning the the command parameter. +%----------------------- +\variable{\_channel} (array of) channels conveying the desired signals +%----------------------- +\method{prepareNextTransaction()} Updates \cod{\_currTransaction} with new one, with length \cod{\_length}$-$\cod{\_progress}, start time \cod{\_endLastTransaction} and \cod{\_channel}. Then calls \cod{\_chan\-nel}'s \cod{testwrite(\_currTransaction)} method. +%----------------------- +\method{execute()} similar to \cod{TMLWriteCommand}. + +%=========================================== +\class{TMLRequestCommand}{TMLCommand} +%----------------------- +\variable{\_paramFunc} Function returning the parameter of the command. +%----------------------- +\variable{\_channel} Channel on which the request is conveyed. +%----------------------- +\method{prepareNextTransaction()} Similar to \cod{TMLSendCommand} +%----------------------- +\method{execute()} Similar to \cod{TMLSendCommand} + +%=========================================== +\class{TMLSelectCommand}{TMLCommand} +%----------------------- +\variable{\_channel} array of channels conveying the desired signals +%----------------------- +\variable{\_indexNextCommand} Index of the next command within the \cod{\_nextCommand} array +%----------------------- +\variable{\_paramFuncs} array of parameter function pointers (\cod{\_indexNextCommand} used as index) +%----------------------- +\variable{\_maxChannelIndex} Highest index of the channels on which the \cod{testRead()} method has been performed + +%----------------------- +\method{getNextCommand()} returns \cod{\_nextCommand[\_indexNextCommand]} +%----------------------- +\method{getChannel(iIndex)} if \cod{\_currTransaction} is 0 then returns \cod{\_channel[\_indexNext\-Command]} else returns \cod{\_currTransaction}'s channel. +%----------------------- +\method{prepareNextTransaction()} create a new \cod{\_currTransaction} with length: \cod{\_length}$-$ \cod{\_progress} and start time: tasks's \cod{\_endLastTransaction}.\\ Then, makes \cod{testRead(\_currTransaction}) on channels until finding one that can read, and sets \cod{\_maxChannelIndex} to its index. At the end, if not 0, \cod{\_maxChannelIndex} points to a channel with an available event. Note: \cod{testRead} sets transaction's channel. +%----------------------- +\method{execute()} Cancel read transaction on all channels before cod{\_maxChannelIndex} (or, if 0, \cod{\_nbOfNextCmds}. One browsed channel must be readable, otherwise "error"). Update \cod{\_indexNextCommand} with found index. Updates \cod{\_progress}. Then, adds transaction to task, resets \cod{\_maxChannelIndex} and calls \cod{prepare(false)}. {\bf\textit{Warning}:} if event's length is greather than 1, a transaction may begin on a channel and continue on another one. +%=========================================== +\class{TMLStopCommand}{TMLCommand} +%----------------------- +\method{prepareNextTransaction()} Calls \cod{\_task->finished()} and returns 0. +%----------------------- +\method{execute()} does nothing + +%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +\section*{Directory \cod{arch}} + +%=========================================== +\class{WorkloadSource}{} +Base class for components providing workload like tasks and scheduler +%----------------------- +\variable{workloadList} List of sources which provide transactions to the scheduler + +%----------------------- +\variable{\_priority} Priority of the workload source + +%----------------------- +\method{getNextTransaction} returns the next scheduled transaction. + +%----------------------- +\method{schedule(iEndSchedule)} virtual method. return allocated time slice. + +%=========================================== +\class{RRScheduler}{WorkloadSource} + +%----------------------- +\variable{\_nextTransaction} Next transaction to be executed + +%----------------------- +\variable{\_timeSlice} Time slice which is granted to ressources + +%----------------------- +\variable{\_minSliceSize} Minimum size of a time slice + +%----------------------- +\variable{\_elapsedTime} Consumed portion of a time slice + +%----------------------- +\variable{\_lastSource} Last workload source to which ressource access was granted + +%----------------------- +\method{schedule(iEndSchedule)} updates \cod{\_nextTransaction}(virtual length of new \cod{\_next\-Transaction} is not 0) , \cod{\_lastSource} and \cod{\_elapsedTime}. +For this, schedules the sources and selects the one whose \cod{\_nextTransaction} has the lowest runnable time.\\ Exception (only if new \cod{\_lastSource}'s transaction is not a static delay): last source is kept if scheduler's \cod{\_nextTransaction} was 0 (is it possible?) or equal to new \cod{\_lastSource}'s transaction, or if time remains in timeslice for \cod{\_lastSource}. + +%=========================================== +\class{ScedulableDevice}{} + +%----------------------- +\variable{\_simulatedTime} static. Class variable holding the simulation time. + +%----------------------- +\variable{\_transactList} List containing all already scheduled transactions. + +%----------------------- +\variable{\_nextTransaction} next transaction to be executed + +%----------------------- +\method{schedule()} (virtual. ) Determines the next transaction to be executed.\\ (update \cod{\_nextTransaction}) + +%----------------------- +\method{addTransaction(iTransToBeAdded)} returns bool if done. Adds the transaction determined by the scheduling algorithm to the internal list of scheduled transactions. + +%----------------------- +\method{getNextTransaction()} Returns the transaction determined by the scheduling algorithm (\cod{\_nextTransaction}) + + +%----------------------- +\variable{\_endSchedule} End time of the last scheduled transaction (\cod{\_lastTransaction} in CPU) + +%----------------------- +\variable{\_scheduler} internal scheduler, generally invocated by \cod{schedule}. + +%=========================================== +\class{CPU}{SchedulableDevice} + +%----------------------- +\variable{\_taskList} List of all tasks running on the CPU + +%----------------------- +\variable{\_lastTransaction} last transaction which has been executed + +%----------------------- +\variable{\_busMasterList} List of bus masters + +%----------------------- +\variable{amountOfCore} Amount of cores + +%=========================================== +\class{SingleCoreCPU}{CPU} + +%----------------------- +\variable{\_busMasterList} list of busmaster of the CPU + +%----------------------- +\method{getMasterForBus(master)} returns the CPU's bus master associated to the bus of master (obtained by getBus, de facto, first bus of master's \cod{\_busArray}). + +%----------------------- +\variable{\_lastTransaction} Last executed transaction. + +%----------------------- +\variable{\_nextTransaction} Currently selected transaction (not yet executed). + +%----------------------- +\method{calcStartTimeLength(iTimeSlice)} in \cod{\_nextTransaction}, update start time, length and penalties (round to full cycles when required). In CPU, update \cod{\_masterNextTransac\-tion} (to master of first bus of channel) and register transaction for this master. +\begin{itemize} +\item update start time as the maximum of CPU's \cod{\_endSchedule} and \cod{\_runnableTime} of \cod{\_nextTransaction}. +\item update length (only if not bus transaction else it is computed elsewhere) as the minimum of \cod{\_nextTransaction}'s virtual length and \cod{iTimeSlice}. +\item updates \cod{\_taskSwitchingPenalty} and \cod{\_idlePenalty} (for this, compare start time and \cod{\_endSchedule}). +\item updates \cod{\_masterNextTransaction} and registers \cod{\_nextTransaction} for this master if \cod{\_nextTransaction} is communication. +\end{itemize} + +%----------------------- +\method{getNextTransaction} returns \cod{\_nextTransaction} except if some master before \cod{\_mas\-terNextTransaction} is not granted. Otherwise returns 0. + +%----------------------- +\variable{\_masterNextTransaction} Current bus master for \cod{\_nextTransaction} if it is communication transaction, else 0. + +%----------------------- +\method{addTransaction} Adds \cod{\_nextTransaction} to the internal list of scheduled transactions (return true), except if \cod{\_nextTransaction} is a not terminated channel transaction (return false: not all busses of the channel have been handled). + +If \cod{\_nextTransaction} is communication, + \begin{itemize} + \item If next master exists (return false), update \cod{\_masterNextTransaction} and register the transaction for this new master. + \item Otherwise (return true), add \cod{\_nextTransaction} to all relevant masters ans slaves. Update bus contention. + \end{itemize} +If "return true", + \begin{itemize} + \item update \cod{\_endSchedule} with end time of \cod{\_nextTransaction}\\ + update \cod{\_simulatedTime} if it is lower than \cod{\_nextTransaction}'s end time (only if we are not at the end of a daemon task) + \item execute \cod{\_nextTransaction}'s command, i.e. in short: increment task progress with transaction's virtual length and add transaction to task. + \item add transaction to CPU's transaction list. + \item Set \cod{\_lastTransaction} to \cod{\_nextTransaction}. Set \cod{\_nextTransaction} to 0. + \end{itemize} +%----------------------- +\method{schedule(iEndSchedule)} Call scheduler and update \cod{\_nextTransaction}. If transaction has changed,\\ +- call \cod{calcStartTimeLength}\\ +- call \cod{\_masterNextTransaction->registerTransaction(0)} if relevant (does not change \cod{\_masterNextTransaction} pointer). + +%----------------------- +\method{truncateAndAddNextTransAt(iTime)} called when a transaction may have unblocked a communication transaction on this CPU. Schedule the CPU and if \cod{\_next\-Transaction} have changed, then truncate original one at {\tt iTime}, \cod{addTransaction(0)} and \cod{calcStart\-TimeLength} to update new one. + +%----------------------- +\method{truncateNextTransAt(iTime)} called by \cod{truncateAndAddNextTransAt} to truncate \cod{\_next\-Transaction}. It computes new length of transaction and updates transaction with this length.\\ {\bfseries\textit{Warning (?)}}: this computation seems to consider that \cod{\_nextTransaction}'s command is similar to exec, which is not always true. What append if it is a communication command? + + +%=========================================== +\class{MultiCoreCPU}{ScedulableDevice} + +%----------------------- +\variable{\_busMasterList} list of busmaster of the CPU + +%----------------------- +\method{getMasterForBus(master)} returns the CPU's bus master associated to the bus of master (obtained by getBus). +%----------------------- +\variable{coreNumber} core having the lowest end schedule date. + +%----------------------- +\variable{multicore} {\ttfamily Cores $\rightarrow$ Dates}, associates end schedule dates to core numbers. + +%----------------------- +\method{getMinEndSchedule} return the minimal end schedule date of \cod{multicore}.\\ Set \cod{coreNumber} to the corresponding core. + +%----------------------- +\variable{channelEndTime}{\ttfamily Channel $\rightarrow$ Dates}, associates + +%----------------------- +\variable{\_lastTransaction} Last executed transaction. + +%----------------------- +\variable{\_nextTransaction} Currently selected transaction (not yet executed). + +%----------------------- +\method{calcStartTimeLength(iTimeSlice)} in \cod{\_nextTransaction}, update start time, length and penalties. In CPU, update \cod{\_masterNextTransaction}. (round to full cycles where required) +\begin{itemize} + \item update start time as the maximum of CPU's \cod{\_endSchedule},\cod{\_nextTransaction}'s \cod{\_runnableTime} and \cod{\_nextTransaction}'s channel's \cod{channelEndTime}. + \item update length (only if not bus transaction else it is computed elsewhere) as the minimum of \cod{\_nextTransaction}'s virtual length and \cod{iTimeSlice}. + \item updates \cod{\_taskSwitchingPenalty} and \cod{\_idlePenalty} (for this, compare start time and \cod{\_endSchedule}). + \item updates \cod{\_masterNextTransaction} and registers \cod{\_nextTransaction} for this master if \cod{\_nextTransaction} is communication. +\end{itemize} + +%----------------------- +\method{getNextTransaction} returns \cod{\_nextTransaction} except if some master before \cod{\_mas\-terNextTransaction} is not granted. Otherwise returns 0. +%----------------------- +\variable{\_masterNextTransaction} Current bus master for \cod{\_nextTransaction} if it is communication transaction, else 0. +%----------------------- +\method{addTransaction} Adds \cod{\_nextTransaction} to the internal list of scheduled transactions (return true), except if \cod{\_nextTransaction} is a not terminated channel transaction (return false: not all busses of the channel have been handled). + +If \cod{\_nextTransaction} is communication, +\begin{itemize} + \item If next master exists (return false), update \cod{\_masterNextTransaction} and register the transaction for this new master. + \item Otherwise (return true), add \cod{\_nextTransaction} to all relevant masters ans slaves. Update bus contention. +\end{itemize} +If "return true", +\begin{itemize} + \item Select a core (update \cod{\_nextTransaction} with it), and updates \cod{multicore} for the selected core with end time of \cod{\_nextTransaction} if it is greater than the current end time associated to this core. The selected core is \cod{coreNumber} except if \cod{\_lastTransaction} and \cod{\_nextTransaction} belong to the same task and the end time of \cod{\_lastTransaction} is lower than the start time of \cod{\_nextTransaction}, in which case the selected core is the one of \cod{\_lastTransaction}. + \item update \cod{\_endSchedule} with \cod{getMinEndSchedule}\\ + update \cod{\_simulatedTime} if it is lower than \cod{\_nextTransaction}'s end time (only if we are not at the end of a daemon task) + \item execute \cod{\_nextTransaction}'s command, i.e. in short: increment task progress with transaction's virtual length and add transaction to task. + \item add transaction to CPU's transaction list. + \item Set \cod{\_lastTransaction} to \cod{\_nextTransaction}. Update \cod{channelEndTime} associated to \cod{\_nextTransaction}'s channel with \cod{\_nextTransaction}'s end time (if relevant). Set \cod{\_nextTransaction} to 0. +\end{itemize} +%----------------------- +\method{schedule(iEndSchedule)} Call scheduler and update \cod{\_nextTransaction}. If transaction has changed,\\ +- call \cod{calcStartTimeLength}\\ +- call \cod{\_masterNextTransaction->registerTransaction(0)} if relevant (does not change \cod{\_masterNextTransaction} pointer). + +%----------------------- +\method{truncateAndAddNextTransAt(iTime)} identical to \cod{SingleCoreCPU}.\\ {\bfseries\textit{Warning (?):}} code inside the method seems to be duplicated... + +%----------------------- +\method{truncateNextTransAt(iTime)} identical to \cod{SingleCoreCPU} +%=========================================== +\class{SchedulableComDevice}{SchedulableDevice} + +%----------------------- +\method{getBurstSize} Returns the size of an atomic bus transaction + +%----------------------- +\method{registerTransaction()} Signals the component that a new transaction has become available and thus rescheduling is needed + +%----------------------- +\variable{\_channelBasedPrio} Flag indicating whether bus master based or channel based priorities are used to arbitrate the bus + +%=========================================== +\class{Bus}{SchedulableCommDevice} + +%----------------------- +\variable{\_scheduler} Workload sources are busmasters (set in {\tt appmodel.cpp}). + +%----------------------- +\variable{\_schedulingNeeded} Dirty flag of the current scheduling decision. Set by \cod{addTransac\-tion} and \cod{registerTransaction}. Unset by \cod{schedule}. + +%----------------------- +\method{schedule()} Determines the next bus transaction to be executed. For this, call its internal scheduler (\cod{\_scheduler->schedule(\_endSchedule)}), update \cod{\_nextTransaction} and call \cod{calcStartTimeLength} with the obtained time slice. Unset \cod{\_schedulingNeeded}. + +%----------------------- +\method{calcStartTimeLength(iTimeSlice)} Calculates the start time and the length of the next transaction. Start time updated to \cod{\_endschedule}+penalties if greather than current start time. Update length and virtual length taking bus characteristics into account. Increments slave and if new slave exist, then call \cod{\_calcStartTimeLength} of slave. + +%----------------------- +\method{addTransaction(iTransToBeAdded)} return {\tt true}. Adds the parameter transaction (supposed to be similar to the transaction determined by the scheduling algorithm?) to the internal list of scheduled transactions. Set \cod{\_endSchedule} to the end time of \cod{\_nextTransaction} and \cod{\_nextTransaction} to 0. Set the \cod{\_schedulingNeeded} flag. + +%----------------------- +\method{registerTransaction()} Add a transaction waiting for execution to the internal list. ({\_schedulingNeeded=true; \_nextTransaction=0;}) + +%----------------------- +\method{getNextTransaction()} + return \_nextTransaction after calling scheduling if required (w.r.t. \cod{\_schedulingNeeded}) + +%=========================================== +\class{Slave}{} + +%----------------------- +\method{CalcTransactionLength(iTrans)} virtual. + +%----------------------- +\method{addTransaction(iTrans)} virtual. + +%=========================================== +\class{BusMaster}{WorkloadSource} + +%----------------------- +\variable{nbOfBuses, \_busArray, \_busSortArray} \cod{\_busArray} points to the bus the master is connected to. \cod{} has the same content, sorted w.r.t. schedule end time. + +%----------------------- +\variable{\_nextTransaction} + +%----------------------- +\variable{\_nextBus} Next bus pointer + +%----------------------- +\variable{\_channelBasedPrioEnabled, \_channelBasedPrio} Flag indicating whether channel based priorities apply and Channel based priority if applicable.\\ (\cod{\_channelBasedPrio} initialized to \cod{\_busArray[0]->ChannelBasedPrio()}). + +%----------------------- +\method{registerTransaction(iTrans)} if {\tt iTrans} is not already \cod{\_nextTransaction},\\ set \cod{\_nextTransaction} to {\tt iTrans} and register transaction on any bus (of \cod{\_busArray}). If relevant, set \cod{\_channelBasedPrio} to {\tt iTrans}'s channel's Priority. + +%----------------------- +\method{getNextTransaction(iEndSchedule)} returns \cod{\_nextTransaction} except if it is the \cod{\_nextTransaction} of one of the busses (then return 0). + +%----------------------- +\method{accessGranted()} returns true if \cod{\_nextTransaction}$\neq$0 and is the \cod{\_nextTransaction} of a bus (schedule the busses while checking). Set \cod{\_nextBus} to the one of these bus with the lowest end schedule date. + +%----------------------- +\method{getBus()} \cod{\_busArray[0]} + +%----------------------- +\method{addTransaction(iTransToBeAdded)} Add transaction to \cod{\_nextBus} and set \cod{\_next\-Tran\-saction} to 0. + +%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +\section*{Directory \cod{sim}} +%=========================================== +\class{Simulator}{} + +%----------------------- +\method{channelImpactsCommand(iCh,iCmd)} Checks if command may be impacted by a anction on a channel, i.e. if {\tt iCh} belongs to {\tt iCmd}'channels. + +%----------------------- +\method{getTransLowestEndTime(oResultDevice)} Returns the transaction with the lowest end time proposed by CPU schedulers. Iters \cod{\_getNextTransaction} on CPU (and FPGA) list and compare lowest end time of these transactions to find result. + +%----------------------- +\method{simulate(oLastTrans)} call \cod{prepare} on current command (initial one) of each task. Schedule all CPUs (and FPGAs). Run the following main loop untill stop flag or no more transaction on non-daemon task. Return the last executed transaction. The loop: +\begin{itemize} + \item get transaction \cod{T} with lowest end time and its associated device \cod{D}. + \item \cod{T->addTransaction(0)}, which may update \cod{\_masterNextTransaction} and return false when \cod{T} is communication. In this case, the loop is terminated. Otherwise, continue with next items. While doing this, the transaction is "executed" and may unblock communication command waiting for data or write space to be available. + \item for each task \cod{t} on another CPU (or FPGA) \cod{C} whose current (communication) command may be unblocked by (communication) \cod{T}, if \cod{t} is not the current task of its associated CPU (or FPGA) then + \begin{itemize} + \item if \cod{C} has no current transaction, then it is scheduled. + \item Otherwise \cod{C->truncateAndAddNextTransAt(T->getEndTime())} is called. This schedule \cod{C} and if \cod{C}'s \cod{\_nextTransaction} changes, the original one is truncated at \cod{T}'s end time and added, i.e. it is terminated at the current date.\\ + {\bfseries\textit{warning (?)}}: I'm not sure that \cod{C}'s \cod{\_nextTransaction} can change as often as expected with the current version of schedulers. + \end{itemize} + \item schedule \cod{D} +\end{itemize} + +\section*{Remarks about communication transactions on channels} +\begin{itemize} + \item \cod{Bus}'schedulers call \cod{Bus}'s \cod{calcStartTimeLength} which may modify transaction's end time. + \item \cod{Bus}'schedulers are called by \cod{Bus}'s \cod{getNextTransaction} which is called by \cod{BusMas\-ter}'s \cod{getNextTransaction} and \cod{BusMaster}'s \cod{accessGranted} + \item \cod{getNextTransaction} returns \cod{\_nextTRansaction} only if it is not the \cod{\_next\-Trans\-ac\-tion} of one of the busses. Not sure that this method is called anywhere (searched and not found\ldots). + \item \cod{accessGranted} is called by CPU's \cod{getNextTransaction} and access is granted if \cod{\_nextTRansaction} is also the \cod{\_nextTransaction} of one of the busses of the master. + \item Story of a channel-bus transaction: + \begin{enumerate} + \item \cod{\textit{Communication}Command}'s \cod{prepareNextTransaction} create the transaction.\\ The transaction is provided with a runnable time and an initial virtual length which takes channel state into account. + \item transaction is chosen for the first time by the \cod{CPU}'s scheduler in which a call to + \cod{CPU}'s \cod{calcStartTimeLength} sets \cod{\_masterNextTransaction} to first master and registers the transaction for this master. Here, transaction's end time is 0, as start time and length are initialized to 0 and not modified until this point. And all channel's bus until \cod{\_masterNextTrans\-action} are (trivially) granted (as there are none). + \item Transaction (and \cod{CPU}) is selected by simulator, after verifying that all bus masters until \cod{\_masterNextTransaction} have been granted. Indeed \cod{getLowest\-Transac\-tionEndTime} calls \cod{getNextTransaction} on each CPU and \cod{getNext\-Trans\-action} only select a communication transaction if bus masters before \cod{\_masterNext\-Trans\-action} are granted. + \item \cod{addTransaction} is called and + \begin{enumerate} + \item either \cod{\_masterNextTrransaction} is the last master of the channel and the transaction is executed: the transaction is added to all masters and slaves of the channel. This is the end of the story. + \item or \cod{\_masterNextTrransaction} is not the last master of the channel. Then \cod{\_masterNextTrransaction} is set to the following one and the transaction is registered for this new master. + \end{enumerate} + \item If the story is not terminated (point (b) above) then, return to possibly after some simulator loop iterations on other CPUs), the transaction is selected again and then point 4 above is executed again. This step verifies that all masters before \cod{\_masterNextTransaction} and at the same time, \cod{\_masterNextTransac\-tion}'s busses are scheduled which may update start time and length of the transaction. + \end{enumerate} + +\end{itemize} + +\section*{Figures} +\includegraphics[width=6cm]{images/simulate.pdf}\hspace{5mm} +\includegraphics[width=9cm]{images/channelTrans.pdf} + +\end{document} + diff --git a/src/main/java/tmltranslator/TMLActivity.java b/src/main/java/tmltranslator/TMLActivity.java index 7471501cf25e97dc075b203dde0fbe20f8cc99e6..b96792f7289c3a8ddbb6df70a965f6f806a883b3 100755 --- a/src/main/java/tmltranslator/TMLActivity.java +++ b/src/main/java/tmltranslator/TMLActivity.java @@ -864,8 +864,18 @@ public class TMLActivity extends TMLElement { for(TMLActivityElement tmlae: elements) { if (execOp) { - if (tmlae instanceof TMLExecI) { - ((TMLExecI) tmlae).setAction("0"); + if ((tmlae instanceof TMLExecI) || (tmlae instanceof TMLExecC)) { + ((TMLActivityElementWithAction) tmlae).setAction("0"); + } else if ((tmlae instanceof TMLExecIInterval) || (tmlae instanceof TMLExecCInterval)) { + ((TMLActivityElementWithIntervalAction) tmlae).setMinDelay("0"); + ((TMLActivityElementWithIntervalAction) tmlae).setMaxDelay("0"); + } + } + + if (timeOp) { + if (tmlae instanceof TMLDelay) { + ((TMLActivityElementWithIntervalAction) tmlae).setMinDelay("0"); + ((TMLActivityElementWithIntervalAction) tmlae).setMaxDelay("0"); } }