Aggiunti file della relazione
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 267 KiB |
|
After Width: | Height: | Size: 297 KiB |
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 129 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 41 KiB |
@@ -0,0 +1,63 @@
|
||||
\relax
|
||||
\providecommand \babel@aux [2]{\global \let \babel@toc \@gobbletwo }
|
||||
\@nameuse{bbl@beforestart}
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\babel@aux{italian}{}
|
||||
\babel@aux{italian}{}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduzione}{1}{section.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Specifiche generali}{1}{subsection.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}Descrizione}{1}{subsubsection.1.1.1}\protected@file@percent }
|
||||
\newlabel{fig:00}{{\caption@xref {??}{ on input line 97}}{1}{Descrizione}{figure.caption.2}{}}
|
||||
\newlabel{fig:01}{{\caption@xref {??}{ on input line 104}}{1}{Descrizione}{figure.caption.2}{}}
|
||||
\newlabel{fig:10}{{\caption@xref {??}{ on input line 114}}{1}{Descrizione}{figure.caption.3}{}}
|
||||
\newlabel{fig:11}{{\caption@xref {??}{ on input line 121}}{1}{Descrizione}{figure.caption.3}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.2}Funzionamento}{2}{subsubsection.1.1.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Descrizione modulo}{3}{subsection.1.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Descrizione memoria}{4}{subsection.1.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.3.1}Implementazione fornita}{4}{subsubsection.1.3.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.3.2}Layout di memoria}{5}{subsubsection.1.3.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Architettura}{6}{section.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Segnali interni}{6}{subsection.2.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Processo sincrono}{7}{subsection.2.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Processo combinatorio}{8}{subsection.2.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.1}Stati di gestione del protocollo}{8}{subsubsection.2.3.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2}Operazione 00}{9}{subsubsection.2.3.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.3}Operazione 01}{10}{subsubsection.2.3.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.4}Operazione 10}{11}{subsubsection.2.3.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.5}Operazione 11}{14}{subsubsection.2.3.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Risultati sperimentali}{15}{section.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Report di sintesi}{15}{subsection.3.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Risorse utilizzate}{15}{subsubsection.3.1.1}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Risorse utilizzate}}{15}{table.caption.4}\protected@file@percent }
|
||||
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
|
||||
\newlabel{tab:utilization}{{1}{15}{Risorse utilizzate}{table.caption.4}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2}FSM codificata}{16}{subsubsection.3.1.2}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Codifica degli stati}}{16}{table.caption.5}\protected@file@percent }
|
||||
\newlabel{tab:fsm-encoding}{{2}{16}{Codifica degli stati}{table.caption.5}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.3}Statistiche RTL}{17}{subsubsection.3.1.3}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {3}{\ignorespaces Statistiche RTL}}{17}{table.caption.6}\protected@file@percent }
|
||||
\newlabel{tab:rtl-stats}{{3}{17}{Statistiche RTL}{table.caption.6}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.4}Timing}{18}{subsubsection.3.1.4}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {4}{\ignorespaces Design Timing Summary}}{18}{table.caption.7}\protected@file@percent }
|
||||
\newlabel{tab:timing}{{4}{18}{Design Timing Summary}{table.caption.7}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Report di simulazioni}{19}{subsection.3.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}Test bench 1}{19}{subsubsection.3.2.1}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Operazione di reset.}}{19}{figure.caption.8}\protected@file@percent }
|
||||
\newlabel{fig:reset}{{1}{19}{Operazione di reset}{figure.caption.8}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Operazione di inserimento in lista vuota.}}{19}{figure.caption.9}\protected@file@percent }
|
||||
\newlabel{fig:insert_empty}{{2}{19}{Operazione di inserimento in lista vuota}{figure.caption.9}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Operazione di svuotamento della lista.}}{20}{figure.caption.10}\protected@file@percent }
|
||||
\newlabel{fig:empty}{{3}{20}{Operazione di svuotamento della lista}{figure.caption.10}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Operazione di inserimento in lista popolata.}}{20}{figure.caption.11}\protected@file@percent }
|
||||
\newlabel{fig:insert_full}{{4}{20}{Operazione di inserimento in lista popolata}{figure.caption.11}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Operazione di rimozione di un task.}}{20}{figure.caption.12}\protected@file@percent }
|
||||
\newlabel{fig:remove}{{5}{20}{Operazione di rimozione di un task}{figure.caption.12}{}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Operazione di decremento della priorità.}}{20}{figure.caption.13}\protected@file@percent }
|
||||
\newlabel{fig:decrease}{{6}{20}{Operazione di decremento della priorità}{figure.caption.13}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}Test bench 2 (casi limite)}{21}{subsubsection.3.2.2}\protected@file@percent }
|
||||
\newlabel{tab:testbench2}{{\caption@xref {tab:testbench2}{ on input line 757}}{21}{Test bench 2 (casi limite)}{table.caption.14}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}Test bench 3 (latenze)}{21}{subsubsection.3.2.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Conclusioni}{22}{section.4}\protected@file@percent }
|
||||
\gdef \@abspage@last{24}
|
||||
@@ -0,0 +1,750 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026) (preloaded format=pdflatex 2026.6.11) 12 JUL 2026 20:29
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**Relazione.tex
|
||||
(./Relazione.tex
|
||||
LaTeX2e <2026-06-01>
|
||||
L3 programming layer <2026-05-26>
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/base/article.cls
|
||||
Document Class: article 2025/01/22 v1.4n Standard LaTeX document class
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/base/size12.clo
|
||||
File: size12.clo 2025/01/22 v1.4n Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count276
|
||||
\c@section=\count277
|
||||
\c@subsection=\count278
|
||||
\c@subsubsection=\count279
|
||||
\c@paragraph=\count280
|
||||
\c@subparagraph=\count281
|
||||
\c@figure=\count282
|
||||
\c@table=\count283
|
||||
\abovecaptionskip=\skip49
|
||||
\belowcaptionskip=\skip50
|
||||
\bibindent=\dimen150
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/base/inputenc.sty
|
||||
Package: inputenc 2024/02/08 v1.3d Input encoding file
|
||||
\inpenc@prehook=\toks17
|
||||
\inpenc@posthook=\toks18
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/base/fontenc.sty
|
||||
Package: fontenc 2025/07/18 v2.1d Standard LaTeX package
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/babel/babel.sty
|
||||
Package: babel 2026/05/20 v26.8 The multilingual framework for LuaLaTeX, pdfLaT
|
||||
eX and XeLaTeX
|
||||
\babel@savecnt=\count284
|
||||
LaTeX Encoding Info: Redeclaring text command \ij (encoding OT1) on input li
|
||||
ne 2084.
|
||||
LaTeX Encoding Info: Redeclaring text command \IJ (encoding OT1) on input li
|
||||
ne 2086.
|
||||
LaTeX Encoding Info: Redeclaring text command \ij (encoding T1) on input lin
|
||||
e 2088.
|
||||
LaTeX Encoding Info: Redeclaring text command \IJ (encoding T1) on input lin
|
||||
e 2089.
|
||||
LaTeX Encoding Info: Ignoring declaration for text command \ij (encoding ?)
|
||||
on input line 2090.
|
||||
LaTeX Encoding Info: Ignoring declaration for text command \IJ (encoding ?)
|
||||
on input line 2092.
|
||||
LaTeX Encoding Info: Ignoring declaration for text command \SS (encoding ?)
|
||||
on input line 2117.
|
||||
\U@D=\dimen151
|
||||
\l@unhyphenated=\language91
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/babel/txtbabel.def)
|
||||
\bbl@readstream=\read2
|
||||
\bbl@dirlevel=\count285
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/babel/locale/it/babel-italian.tex)
|
||||
Package babel Info: Importing font and identification data for italian
|
||||
(babel) from babel-it.ini. Reported on input line 4356.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/babel-italian/italian.ldf
|
||||
Language: italian 2026/01/13 v.1.5.02 Italian support for the babel system
|
||||
\it@lettering=\count286
|
||||
\it@doublequoteactive=\count287
|
||||
\it@ISOcompliance=\count288
|
||||
))
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
Package: etoolbox 2025/10/02 v2.5m e-TeX tools for LaTeX (JAW)
|
||||
\etb@tempcnta=\count289
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
Package: amsmath 2026/05/19 v2.18d AMS math features
|
||||
\@mathmargin=\skip51
|
||||
|
||||
For additional information on amsmath, use the `?' option.
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
Package: amstext 2024/11/17 v2.01 AMS text
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
File: amsgen.sty 1999/11/30 v2.0 generic functions
|
||||
\@emptytoks=\toks19
|
||||
\ex@=\dimen152
|
||||
))
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
|
||||
\pmbraise@=\dimen153
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
Package: amsopn 2022/04/08 v2.04 operator names
|
||||
)
|
||||
\inf@bad=\count290
|
||||
LaTeX Info: Redefining \frac on input line 233.
|
||||
\uproot@=\count291
|
||||
\leftroot@=\count292
|
||||
LaTeX Info: Redefining \overline on input line 398.
|
||||
LaTeX Info: Redefining \colon on input line 409.
|
||||
\classnum@=\count293
|
||||
\DOTSCASE@=\count294
|
||||
LaTeX Info: Redefining \ldots on input line 495.
|
||||
LaTeX Info: Redefining \dots on input line 498.
|
||||
LaTeX Info: Redefining \cdots on input line 619.
|
||||
\Mathstrutbox@=\box53
|
||||
\strutbox@=\box54
|
||||
LaTeX Info: Redefining \big on input line 721.
|
||||
LaTeX Info: Redefining \Big on input line 722.
|
||||
LaTeX Info: Redefining \bigg on input line 723.
|
||||
LaTeX Info: Redefining \Bigg on input line 724.
|
||||
\big@size=\dimen154
|
||||
LaTeX Font Info: Redeclaring font encoding OML on input line 742.
|
||||
LaTeX Font Info: Redeclaring font encoding OMS on input line 743.
|
||||
\macc@depth=\count295
|
||||
LaTeX Info: Redefining \bmod on input line 904.
|
||||
LaTeX Info: Redefining \pmod on input line 909.
|
||||
LaTeX Info: Redefining \smash on input line 939.
|
||||
LaTeX Info: Redefining \relbar on input line 969.
|
||||
LaTeX Info: Redefining \Relbar on input line 970.
|
||||
\c@MaxMatrixCols=\count296
|
||||
\dotsspace@=\muskip17
|
||||
\c@parentequation=\count297
|
||||
\dspbrk@lvl=\count298
|
||||
\tag@help=\toks20
|
||||
\row@=\count299
|
||||
\column@=\count300
|
||||
\maxfields@=\count301
|
||||
\andhelp@=\toks21
|
||||
\eqnshift@=\dimen155
|
||||
\alignsep@=\dimen156
|
||||
\tagshift@=\dimen157
|
||||
\tagwidth@=\dimen158
|
||||
\totwidth@=\dimen159
|
||||
\lineht@=\dimen160
|
||||
\@envbody=\toks22
|
||||
\multlinegap=\skip52
|
||||
\multlinetaggap=\skip53
|
||||
\mathdisplay@stack=\toks23
|
||||
LaTeX Info: Redefining \[ on input line 2965.
|
||||
LaTeX Info: Redefining \] on input line 2966.
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
|
||||
\symAMSa=\mathgroup4
|
||||
\symAMSb=\mathgroup5
|
||||
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/texlive/2026/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
Package: amssymb 2013/01/14 v3.01 AMS font symbols
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
Package: geometry 2026/03/07 v6.0 Page Geometry
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
Package: keyval 2026-05-17 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks24
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
Package: iftex 2024/12/12 v1.0g TeX engine tests
|
||||
))
|
||||
\Gm@cnth=\count302
|
||||
\Gm@cntv=\count303
|
||||
\c@Gm@tempcnt=\count304
|
||||
\Gm@bindingoffset=\dimen161
|
||||
\Gm@wd@mp=\dimen162
|
||||
\Gm@odd@mp=\dimen163
|
||||
\Gm@even@mp=\dimen164
|
||||
\Gm@layoutwidth=\dimen165
|
||||
\Gm@layoutheight=\dimen166
|
||||
\Gm@layouthoffset=\dimen167
|
||||
\Gm@layoutvoffset=\dimen168
|
||||
\Gm@dimlist=\toks25
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
Package: graphicx 2026-05-17 v1.2e Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
Package: graphics 2026-05-17 v1.4h Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/graphics/trig.sty
|
||||
Package: trig 2023/12/02 v1.11 sin cos tan (DPC)
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/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 106.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex
|
||||
))
|
||||
\Gin@req@height=\dimen169
|
||||
\Gin@req@width=\dimen170
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/listings/listings.sty
|
||||
\lst@mode=\count305
|
||||
\lst@gtempboxa=\box55
|
||||
\lst@token=\toks26
|
||||
\lst@length=\count306
|
||||
\lst@currlwidth=\dimen171
|
||||
\lst@column=\count307
|
||||
\lst@pos=\count308
|
||||
\lst@lostspace=\dimen172
|
||||
\lst@width=\dimen173
|
||||
\lst@newlines=\count309
|
||||
\lst@lineno=\count310
|
||||
\lst@maxwidth=\dimen174
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/listings/lstpatch.sty
|
||||
File: lstpatch.sty 2025/11/14 1.11b (Carsten Heinz)
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
File: lstmisc.sty 2025/11/14 1.11b (Carsten Heinz)
|
||||
\c@lstnumber=\count311
|
||||
\lst@skipnumbers=\count312
|
||||
\lst@framebox=\box56
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/listings/listings.cfg
|
||||
File: listings.cfg 2025/11/14 1.11b listings configuration
|
||||
))
|
||||
Package: listings 2025/11/14 1.11b (Carsten Heinz)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
Package: xcolor 2024/09/29 v3.02 LaTeX color extensions (UK)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/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 274.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/graphics/mathcolor.ltx)
|
||||
Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1349.
|
||||
Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1353.
|
||||
Package xcolor Info: Model `RGB' extended on input line 1365.
|
||||
Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1367.
|
||||
Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1368.
|
||||
Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1369.
|
||||
Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1370.
|
||||
Package xcolor Info: Model `Gray' substituted by `gray' on input line 1371.
|
||||
Package xcolor Info: Model `wave' substituted by `hsb' on input line 1372.
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/lstaddons/lstautogobble.sty
|
||||
Package: lstautogobble 2012/05/03 v0.1 Implements 'autogobble' option for 'list
|
||||
ings'
|
||||
\lstag@spacecount=\count313
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/booktabs/booktabs.sty
|
||||
Package: booktabs 2020/01/12 v1.61803398 Publication quality tables
|
||||
\heavyrulewidth=\dimen175
|
||||
\lightrulewidth=\dimen176
|
||||
\cmidrulewidth=\dimen177
|
||||
\belowrulesep=\dimen178
|
||||
\belowbottomsep=\dimen179
|
||||
\aboverulesep=\dimen180
|
||||
\abovetopsep=\dimen181
|
||||
\cmidrulesep=\dimen182
|
||||
\cmidrulekern=\dimen183
|
||||
\defaultaddspace=\dimen184
|
||||
\@cmidla=\count314
|
||||
\@cmidlb=\count315
|
||||
\@aboverulesep=\dimen185
|
||||
\@belowrulesep=\dimen186
|
||||
\@thisruleclass=\count316
|
||||
\@lastruleclass=\count317
|
||||
\@thisrulewidth=\dimen187
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/colortbl/colortbl.sty
|
||||
Package: colortbl 2026/05/01 v1.0l Color table columns (DPC)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/tools/array.sty
|
||||
Package: array 2026/02/24 v2.7b Tabular extension package (FMi)
|
||||
\col@sep=\dimen188
|
||||
\ar@mcellbox=\box57
|
||||
\extrarowheight=\dimen189
|
||||
\NC@list=\toks27
|
||||
\extratabsurround=\skip54
|
||||
\backup@length=\skip55
|
||||
\ar@cellbox=\box58
|
||||
)
|
||||
new hooks used!!
|
||||
\minrowclearance=\skip56
|
||||
\rownum=\count318
|
||||
) (/opt/texlive/2026/texmf-dist/tex/latex/float/float.sty
|
||||
Package: float 2001/11/08 v1.3d Float enhancements (AL)
|
||||
\c@float@type=\count319
|
||||
\float@exts=\toks28
|
||||
\float@box=\box59
|
||||
\@float@everytoks=\toks29
|
||||
\@floatcapt=\box60
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/caption/caption.sty
|
||||
Package: caption 2023/08/05 v3.6o Customizing captions (AR)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/caption/caption3.sty
|
||||
Package: caption3 2023/07/31 v2.4d caption3 kernel (AR)
|
||||
\caption@tempdima=\dimen190
|
||||
\captionmargin=\dimen191
|
||||
\caption@leftmargin=\dimen192
|
||||
\caption@rightmargin=\dimen193
|
||||
\caption@width=\dimen194
|
||||
\caption@indent=\dimen195
|
||||
\caption@parindent=\dimen196
|
||||
\caption@hangindent=\dimen197
|
||||
Package caption Info: Standard document class detected.
|
||||
)
|
||||
\c@caption@flags=\count320
|
||||
\c@continuedfloat=\count321
|
||||
Package caption Info: float package is loaded.
|
||||
Package caption Info: listings package is loaded.
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
Package: hyperref 2026-04-24 v7.01q Hypertext links for LaTeX
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||
Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO)
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
|
||||
Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
|
||||
)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/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/texlive/2026/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
Package: nameref 2026-01-29 v2.58 Cross-referencing by name of section
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
|
||||
))
|
||||
\c@section@level=\count322
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/stringenc/stringenc.sty
|
||||
Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO
|
||||
)
|
||||
)
|
||||
\@linkdim=\dimen198
|
||||
\Hy@linkcounter=\count323
|
||||
\Hy@pagecounter=\count324
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
File: pd1enc.def 2026-04-24 v7.01q Hyperref: PDFDocEncoding definition (HO)
|
||||
Now handling font encoding PD1 ...
|
||||
... no UTF-8 mapping file for font encoding PD1
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
|
||||
)
|
||||
\Hy@SavedSpaceFactor=\count325
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
File: puenc.def 2026-04-24 v7.01q 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 4199.
|
||||
Package hyperref Info: Link nesting OFF on input line 4204.
|
||||
Package hyperref Info: Hyper index ON on input line 4207.
|
||||
Package hyperref Info: Plain pages OFF on input line 4214.
|
||||
Package hyperref Info: Backreferencing OFF on input line 4219.
|
||||
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
|
||||
Package hyperref Info: Bookmarks ON on input line 4466.
|
||||
\c@Hy@tempcnt=\count326
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/url/url.sty
|
||||
\Urlmuskip=\muskip18
|
||||
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
|
||||
)
|
||||
LaTeX Info: Redefining \url on input line 4805.
|
||||
\XeTeXLinkMargin=\dimen199
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
|
||||
)
|
||||
))
|
||||
\Fld@menulength=\count327
|
||||
\Field@Width=\dimen256
|
||||
\Fld@charsize=\dimen257
|
||||
Package hyperref Info: Hyper figures OFF on input line 6091.
|
||||
Package hyperref Info: Link nesting OFF on input line 6096.
|
||||
Package hyperref Info: Hyper index ON on input line 6099.
|
||||
Package hyperref Info: backreferencing OFF on input line 6106.
|
||||
Package hyperref Info: Link coloring OFF on input line 6111.
|
||||
Package hyperref Info: Link coloring with OCG OFF on input line 6116.
|
||||
Package hyperref Info: PDF/A mode OFF on input line 6121.
|
||||
\Hy@abspage=\count328
|
||||
\c@Item=\count329
|
||||
\c@Hfootnote=\count330
|
||||
)
|
||||
Package hyperref Info: Driver (autodetected): hpdftex.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
File: hpdftex.def 2026-04-24 v7.01q Hyperref driver for pdfTeX
|
||||
\Fld@listcount=\count331
|
||||
\c@bookmark@seq@number=\count332
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
Package: rerunfilecheck 2025-06-21 v1.11 Rerun checks for auxiliary files (HO)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/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
|
||||
84.
|
||||
)
|
||||
\Hy@SectionHShift=\skip57
|
||||
)
|
||||
Package hyperref Info: Option `colorlinks' set `false' on input line 25.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
File: lstlang1.sty 2025/11/14 1.11b listings language file
|
||||
)
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
File: l3backend-pdftex.def 2026-02-18 L3 backend support: PDF output (pdfTeX)
|
||||
\l__color_backend_stack_int=\count333
|
||||
)
|
||||
(./Relazione.aux)
|
||||
\openout1 = `Relazione.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 46.
|
||||
LaTeX Font Info: ... okay on input line 46.
|
||||
LaTeX Info: Redefining \it@ocap on input line 46.
|
||||
LaTeX Info: Redefining \it@ccap on input line 46.
|
||||
|
||||
*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)
|
||||
* modes:
|
||||
* h-part:(L,W,R)=(85.35826pt, 426.79135pt, 85.35826pt)
|
||||
* v-part:(T,H,B)=(85.35826pt, 674.33032pt, 85.35826pt)
|
||||
* \paperwidth=597.50787pt
|
||||
* \paperheight=845.04684pt
|
||||
* \textwidth=426.79135pt
|
||||
* \textheight=674.33032pt
|
||||
* \oddsidemargin=13.08827pt
|
||||
* \evensidemargin=13.08827pt
|
||||
* \topmargin=-23.91173pt
|
||||
* \headheight=12.0pt
|
||||
* \headsep=25.0pt
|
||||
* \topskip=12.0pt
|
||||
* \footskip=30.0pt
|
||||
* \marginparwidth=35.0pt
|
||||
* \marginparsep=10.0pt
|
||||
* \columnsep=10.0pt
|
||||
* \skip\footins=10.8pt 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)
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count334
|
||||
\scratchdimen=\dimen258
|
||||
\scratchbox=\box61
|
||||
\nofMPsegments=\count335
|
||||
\nofMParguments=\count336
|
||||
\everyMPshowfont=\toks30
|
||||
\MPscratchCnt=\count337
|
||||
\MPscratchDim=\dimen259
|
||||
\MPnumerator=\count338
|
||||
\makeMPintoPDFobject=\count339
|
||||
\everyMPtoPDFconversion=\toks31
|
||||
) (/opt/texlive/2026/texmf-dist/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/texlive/2026/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
\c@lstlisting=\count340
|
||||
Package caption Info: Begin \AtBeginDocument code.
|
||||
Package caption Info: hyperref package is loaded.
|
||||
Package caption Info: End \AtBeginDocument code.
|
||||
Package hyperref Info: Link coloring OFF on input line 46.
|
||||
|
||||
(./Relazione.out) (./Relazione.out)
|
||||
\@outlinefile=\write3
|
||||
\openout3 = `Relazione.out'.
|
||||
|
||||
<logo_polimi.jpg, id=116, 1303.87125pt x 1013.7875pt>
|
||||
File: logo_polimi.jpg Graphic file (type jpg)
|
||||
<use logo_polimi.jpg>
|
||||
Package pdftex.def Info: logo_polimi.jpg used on input line 52.
|
||||
(pdftex.def) Requested size: 170.71393pt x 132.72514pt.
|
||||
[1
|
||||
|
||||
{/opt/texlive/2026/texmf-var/fonts/map/pdftex/updmap/pdftex.map}{/opt/texlive/2
|
||||
026/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc} <./logo_polimi.jpg>] (
|
||||
./Relazione.toc
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 4.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
|
||||
)
|
||||
LaTeX Font Info: Trying to load font information for U+msb on input line 4.
|
||||
|
||||
(/opt/texlive/2026/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||
))
|
||||
\tf@toc=\write4
|
||||
\openout4 = `Relazione.toc'.
|
||||
|
||||
[1]
|
||||
<INTRODUZIONE/OP_00.png, id=160, 1449.415pt x 606.265pt>
|
||||
File: INTRODUZIONE/OP_00.png Graphic file (type png)
|
||||
<use INTRODUZIONE/OP_00.png>
|
||||
Package pdftex.def Info: INTRODUZIONE/OP_00.png used on input line 95.
|
||||
(pdftex.def) Requested size: 192.0548pt x 80.3251pt.
|
||||
<INTRODUZIONE/OP_01.png, id=162, 1449.415pt x 606.265pt>
|
||||
File: INTRODUZIONE/OP_01.png Graphic file (type png)
|
||||
<use INTRODUZIONE/OP_01.png>
|
||||
Package pdftex.def Info: INTRODUZIONE/OP_01.png used on input line 102.
|
||||
(pdftex.def) Requested size: 192.0548pt x 80.3251pt.
|
||||
<INTRODUZIONE/OP_10.png, id=163, 1449.415pt x 610.28pt>
|
||||
File: INTRODUZIONE/OP_10.png Graphic file (type png)
|
||||
<use INTRODUZIONE/OP_10.png>
|
||||
Package pdftex.def Info: INTRODUZIONE/OP_10.png used on input line 112.
|
||||
(pdftex.def) Requested size: 192.0548pt x 80.85706pt.
|
||||
<INTRODUZIONE/OP_11.png, id=164, 1449.415pt x 606.265pt>
|
||||
File: INTRODUZIONE/OP_11.png Graphic file (type png)
|
||||
<use INTRODUZIONE/OP_11.png>
|
||||
Package pdftex.def Info: INTRODUZIONE/OP_11.png used on input line 119.
|
||||
(pdftex.def) Requested size: 192.0548pt x 80.3251pt.
|
||||
|
||||
pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has
|
||||
been already used, duplicate ignored
|
||||
<to be read again>
|
||||
\relax
|
||||
l.125 \newpage
|
||||
[1{/opt/texlive/2026/texmf-dist/fonts/enc/dvips/cm-super/cm-sup
|
||||
er-ts1.enc} <./INTRODUZIONE/OP_00.png> <./INTRODUZIONE/OP_01.png> <./INTRODUZIO
|
||||
NE/OP_10.png> <./INTRODUZIONE/OP_11.png>]
|
||||
<START-DONE handshake.png, id=176, 1208.515pt x 1007.765pt>
|
||||
File: START-DONE handshake.png Graphic file (type png)
|
||||
<use START-DONE handshake.png>
|
||||
Package pdftex.def Info: START-DONE handshake.png used on input line 145.
|
||||
(pdftex.def) Requested size: 256.07741pt x 213.52829pt.
|
||||
[2 <./START-DONE handshake.png>]
|
||||
[3] [4]
|
||||
<MemoryDiagram.png, id=247, 570.13pt x 726.715pt>
|
||||
File: MemoryDiagram.png Graphic file (type png)
|
||||
<use MemoryDiagram.png>
|
||||
Package pdftex.def Info: MemoryDiagram.png used on input line 265.
|
||||
(pdftex.def) Requested size: 128.0387pt x 163.20442pt.
|
||||
[5 <./MemoryDiagram.png>] [6]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 365--367
|
||||
|
||||
[]
|
||||
|
||||
[7] [8]
|
||||
<DIAGRAMS/S_00_DIAGRAM.png, id=319, 1453.43pt x 1292.83pt>
|
||||
File: DIAGRAMS/S_00_DIAGRAM.png Graphic file (type png)
|
||||
<use DIAGRAMS/S_00_DIAGRAM.png>
|
||||
Package pdftex.def Info: DIAGRAMS/S_00_DIAGRAM.png used on input line 402.
|
||||
(pdftex.def) Requested size: 170.71393pt x 151.8385pt.
|
||||
[9 <./DIAGRAMS/S_00_DIAGRAM.png>]
|
||||
<DIAGRAMS/S_01_DIAGRAM.png, id=325, 2413.015pt x 1770.615pt>
|
||||
File: DIAGRAMS/S_01_DIAGRAM.png Graphic file (type png)
|
||||
<use DIAGRAMS/S_01_DIAGRAM.png>
|
||||
Package pdftex.def Info: DIAGRAMS/S_01_DIAGRAM.png used on input line 418.
|
||||
(pdftex.def) Requested size: 298.75264pt x 219.19196pt.
|
||||
|
||||
Overfull \hbox (13.78151pt too wide) in paragraph at lines 423--424
|
||||
[]\T1/cmr/bx/n/12 S_01_CHECK_NUMBER: \T1/cmr/m/n/12 Se non ci so-no ta-sk ter-m
|
||||
i-na su-bi-to (\T1/cmr/bx/n/12 o_task_id
|
||||
[]
|
||||
|
||||
[10 <./DIAGRAMS/S_01_DIAGRAM.png>]
|
||||
<S_10_EXAMPLE/S_10_ITERATION1.png, id=331, 2252.415pt x 610.28pt>
|
||||
File: S_10_EXAMPLE/S_10_ITERATION1.png Graphic file (type png)
|
||||
<use S_10_EXAMPLE/S_10_ITERATION1.png>
|
||||
Package pdftex.def Info: S_10_EXAMPLE/S_10_ITERATION1.png used on input line 4
|
||||
51.
|
||||
(pdftex.def) Requested size: 298.75264pt x 80.94086pt.
|
||||
<S_10_EXAMPLE/S_10_ITERATION2.png, id=332, 2256.43pt x 606.265pt>
|
||||
File: S_10_EXAMPLE/S_10_ITERATION2.png Graphic file (type png)
|
||||
<use S_10_EXAMPLE/S_10_ITERATION2.png>
|
||||
Package pdftex.def Info: S_10_EXAMPLE/S_10_ITERATION2.png used on input line 4
|
||||
55.
|
||||
(pdftex.def) Requested size: 298.75264pt x 80.26959pt.
|
||||
<S_10_EXAMPLE/S_10_ITERATION3.png, id=333, 2898.83pt x 606.265pt>
|
||||
File: S_10_EXAMPLE/S_10_ITERATION3.png Graphic file (type png)
|
||||
<use S_10_EXAMPLE/S_10_ITERATION3.png>
|
||||
Package pdftex.def Info: S_10_EXAMPLE/S_10_ITERATION3.png used on input line 4
|
||||
59.
|
||||
(pdftex.def) Requested size: 371.30638pt x 77.6516pt.
|
||||
[11 <./S_10_EXAMPLE/S_10_ITERATION1.png> <./S_10_EXAMPLE/S_10_ITERATION2.png>]
|
||||
[12 <./S_10_EXAMPLE/S_10_ITERATION3.png>]
|
||||
<DIAGRAMS/S_10_DIAGRAM.png, id=349, 2417.03pt x 1774.63pt>
|
||||
File: DIAGRAMS/S_10_DIAGRAM.png Graphic file (type png)
|
||||
<use DIAGRAMS/S_10_DIAGRAM.png>
|
||||
Package pdftex.def Info: DIAGRAMS/S_10_DIAGRAM.png used on input line 471.
|
||||
(pdftex.def) Requested size: 298.75264pt x 219.33698pt.
|
||||
|
||||
[13 <./DIAGRAMS/S_10_DIAGRAM.png>]
|
||||
<DIAGRAMS/S_11_DIAGRAM.png, id=355, 1453.43pt x 811.03pt>
|
||||
File: DIAGRAMS/S_11_DIAGRAM.png Graphic file (type png)
|
||||
<use DIAGRAMS/S_11_DIAGRAM.png>
|
||||
Package pdftex.def Info: DIAGRAMS/S_11_DIAGRAM.png used on input line 502.
|
||||
(pdftex.def) Requested size: 298.75264pt x 166.70773pt.
|
||||
[14 <./DIAGRAMS/S_11_DIAGRAM.png>] [15]
|
||||
[16] [17] [18]
|
||||
<WAVEFORM/RESET.png, id=388, 1407.2575pt x 463.7325pt>
|
||||
File: WAVEFORM/RESET.png Graphic file (type png)
|
||||
<use WAVEFORM/RESET.png>
|
||||
Package pdftex.def Info: WAVEFORM/RESET.png used on input line 672.
|
||||
(pdftex.def) Requested size: 426.79135pt x 140.63507pt.
|
||||
<WAVEFORM/INSERIMENTO_VUOTA.png, id=389, 1750.54pt x 457.71pt>
|
||||
File: WAVEFORM/INSERIMENTO_VUOTA.png Graphic file (type png)
|
||||
<use WAVEFORM/INSERIMENTO_VUOTA.png>
|
||||
Package pdftex.def Info: WAVEFORM/INSERIMENTO_VUOTA.png used on input line 679
|
||||
.
|
||||
(pdftex.def) Requested size: 426.79135pt x 111.59167pt.
|
||||
<WAVEFORM/SVUOTA.png, id=390, 1412.27625pt x 459.7175pt>
|
||||
File: WAVEFORM/SVUOTA.png Graphic file (type png)
|
||||
<use WAVEFORM/SVUOTA.png>
|
||||
Package pdftex.def Info: WAVEFORM/SVUOTA.png used on input line 686.
|
||||
(pdftex.def) Requested size: 426.79135pt x 138.92642pt.
|
||||
[19 <./WAVEFORM/RESET.png> <./WAVEFORM/INSERIMENTO_VUOTA.png>]
|
||||
<WAVEFORM/INSERIMENTO_PIENA.png, id=402, 1596.96625pt x 459.7175pt>
|
||||
File: WAVEFORM/INSERIMENTO_PIENA.png Graphic file (type png)
|
||||
<use WAVEFORM/INSERIMENTO_PIENA.png>
|
||||
Package pdftex.def Info: WAVEFORM/INSERIMENTO_PIENA.png used on input line 693
|
||||
.
|
||||
(pdftex.def) Requested size: 426.79135pt x 122.85571pt.
|
||||
<WAVEFORM/RIMOZIONE.png, id=403, 2151.03625pt x 484.81125pt>
|
||||
File: WAVEFORM/RIMOZIONE.png Graphic file (type png)
|
||||
<use WAVEFORM/RIMOZIONE.png>
|
||||
Package pdftex.def Info: WAVEFORM/RIMOZIONE.png used on input line 700.
|
||||
(pdftex.def) Requested size: 426.79135pt x 96.19118pt.
|
||||
<WAVEFORM/DECREMENTA.png, id=404, 1944.26375pt x 455.7025pt>
|
||||
File: WAVEFORM/DECREMENTA.png Graphic file (type png)
|
||||
<use WAVEFORM/DECREMENTA.png>
|
||||
Package pdftex.def Info: WAVEFORM/DECREMENTA.png used on input line 707.
|
||||
(pdftex.def) Requested size: 426.79135pt x 100.03233pt.
|
||||
|
||||
[20 <./WAVEFORM/SVUOTA.png> <./WAVEFORM/INSERIMENTO_PIENA.png> <./WAVEFORM/RIMO
|
||||
ZIONE.png> <./WAVEFORM/DECREMENTA.png>]
|
||||
Underfull \hbox (badness 4084) in paragraph at lines 754--755
|
||||
[]|\T1/cmr/m/n/12 Inserimenti, in-vec-chia-men-ti, ri-mo-zio-ni e
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 761--763
|
||||
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 761--763
|
||||
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 761--763
|
||||
|
||||
[]
|
||||
|
||||
[21] [22] (./Relazione.aux)
|
||||
***********
|
||||
LaTeX2e <2026-06-01>
|
||||
L3 programming layer <2026-05-26>
|
||||
***********
|
||||
Package rerunfilecheck Info: File `Relazione.out' has not changed.
|
||||
(rerunfilecheck) Checksum: EF6280F63A37FC4289E8E47AEC7A0484;4158.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
15834 strings out of 467167
|
||||
246524 string characters out of 5379830
|
||||
1020282 words of memory out of 5000000
|
||||
44731 multiletter control sequences out of 15000+600000
|
||||
643197 words of font info for 78 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
74i,10n,79p,605b,1290s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</opt/texlive/2026/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></opt
|
||||
/texlive/2026/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></opt/texliv
|
||||
e/2026/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></opt/texlive/2026/t
|
||||
exmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></opt/texlive/2026/texmf-dist
|
||||
/fonts/type1/public/amsfonts/cm/cmsy10.pfb></opt/texlive/2026/texmf-dist/fonts/
|
||||
type1/public/cm-super/sfbx1095.pfb></opt/texlive/2026/texmf-dist/fonts/type1/pu
|
||||
blic/cm-super/sfbx1200.pfb></opt/texlive/2026/texmf-dist/fonts/type1/public/cm-
|
||||
super/sfbx1440.pfb></opt/texlive/2026/texmf-dist/fonts/type1/public/cm-super/sf
|
||||
bx1728.pfb></opt/texlive/2026/texmf-dist/fonts/type1/public/cm-super/sfrm0600.p
|
||||
fb></opt/texlive/2026/texmf-dist/fonts/type1/public/cm-super/sfrm1095.pfb></opt
|
||||
/texlive/2026/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb></opt/texlive
|
||||
/2026/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb></opt/texlive/2026/te
|
||||
xmf-dist/fonts/type1/public/cm-super/sfti1095.pfb></opt/texlive/2026/texmf-dist
|
||||
/fonts/type1/public/cm-super/sfti1200.pfb></opt/texlive/2026/texmf-dist/fonts/t
|
||||
ype1/public/cm-super/sftt1095.pfb></opt/texlive/2026/texmf-dist/fonts/type1/pub
|
||||
lic/cm-super/sftt1200.pfb>
|
||||
Output written on Relazione.pdf (24 pages, 2058958 bytes).
|
||||
PDF statistics:
|
||||
541 PDF objects out of 1000 (max. 8388607)
|
||||
436 compressed objects within 5 object streams
|
||||
175 named destinations out of 1000 (max. 500000)
|
||||
325 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
\BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000z\000i\000o\000n\000e}{}% 1
|
||||
\BOOKMARK [2][-]{subsection.1.1}{\376\377\000S\000p\000e\000c\000i\000f\000i\000c\000h\000e\000\040\000g\000e\000n\000e\000r\000a\000l\000i}{section.1}% 2
|
||||
\BOOKMARK [3][-]{subsubsection.1.1.1}{\376\377\000D\000e\000s\000c\000r\000i\000z\000i\000o\000n\000e}{subsection.1.1}% 3
|
||||
\BOOKMARK [3][-]{subsubsection.1.1.2}{\376\377\000F\000u\000n\000z\000i\000o\000n\000a\000m\000e\000n\000t\000o}{subsection.1.1}% 4
|
||||
\BOOKMARK [2][-]{subsection.1.2}{\376\377\000D\000e\000s\000c\000r\000i\000z\000i\000o\000n\000e\000\040\000m\000o\000d\000u\000l\000o}{section.1}% 5
|
||||
\BOOKMARK [2][-]{subsection.1.3}{\376\377\000D\000e\000s\000c\000r\000i\000z\000i\000o\000n\000e\000\040\000m\000e\000m\000o\000r\000i\000a}{section.1}% 6
|
||||
\BOOKMARK [3][-]{subsubsection.1.3.1}{\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000z\000i\000o\000n\000e\000\040\000f\000o\000r\000n\000i\000t\000a}{subsection.1.3}% 7
|
||||
\BOOKMARK [3][-]{subsubsection.1.3.2}{\376\377\000L\000a\000y\000o\000u\000t\000\040\000d\000i\000\040\000m\000e\000m\000o\000r\000i\000a}{subsection.1.3}% 8
|
||||
\BOOKMARK [1][-]{section.2}{\376\377\000A\000r\000c\000h\000i\000t\000e\000t\000t\000u\000r\000a}{}% 9
|
||||
\BOOKMARK [2][-]{subsection.2.1}{\376\377\000S\000e\000g\000n\000a\000l\000i\000\040\000i\000n\000t\000e\000r\000n\000i}{section.2}% 10
|
||||
\BOOKMARK [2][-]{subsection.2.2}{\376\377\000P\000r\000o\000c\000e\000s\000s\000o\000\040\000s\000i\000n\000c\000r\000o\000n\000o}{section.2}% 11
|
||||
\BOOKMARK [2][-]{subsection.2.3}{\376\377\000P\000r\000o\000c\000e\000s\000s\000o\000\040\000c\000o\000m\000b\000i\000n\000a\000t\000o\000r\000i\000o}{section.2}% 12
|
||||
\BOOKMARK [3][-]{subsubsection.2.3.1}{\376\377\000S\000t\000a\000t\000i\000\040\000d\000i\000\040\000g\000e\000s\000t\000i\000o\000n\000e\000\040\000d\000e\000l\000\040\000p\000r\000o\000t\000o\000c\000o\000l\000l\000o}{subsection.2.3}% 13
|
||||
\BOOKMARK [3][-]{subsubsection.2.3.2}{\376\377\000O\000p\000e\000r\000a\000z\000i\000o\000n\000e\000\040\0000\0000}{subsection.2.3}% 14
|
||||
\BOOKMARK [3][-]{subsubsection.2.3.3}{\376\377\000O\000p\000e\000r\000a\000z\000i\000o\000n\000e\000\040\0000\0001}{subsection.2.3}% 15
|
||||
\BOOKMARK [3][-]{subsubsection.2.3.4}{\376\377\000O\000p\000e\000r\000a\000z\000i\000o\000n\000e\000\040\0001\0000}{subsection.2.3}% 16
|
||||
\BOOKMARK [3][-]{subsubsection.2.3.5}{\376\377\000O\000p\000e\000r\000a\000z\000i\000o\000n\000e\000\040\0001\0001}{subsection.2.3}% 17
|
||||
\BOOKMARK [1][-]{section.3}{\376\377\000R\000i\000s\000u\000l\000t\000a\000t\000i\000\040\000s\000p\000e\000r\000i\000m\000e\000n\000t\000a\000l\000i}{}% 18
|
||||
\BOOKMARK [2][-]{subsection.3.1}{\376\377\000R\000e\000p\000o\000r\000t\000\040\000d\000i\000\040\000s\000i\000n\000t\000e\000s\000i}{section.3}% 19
|
||||
\BOOKMARK [3][-]{subsubsection.3.1.1}{\376\377\000R\000i\000s\000o\000r\000s\000e\000\040\000u\000t\000i\000l\000i\000z\000z\000a\000t\000e}{subsection.3.1}% 20
|
||||
\BOOKMARK [3][-]{subsubsection.3.1.2}{\376\377\000F\000S\000M\000\040\000c\000o\000d\000i\000f\000i\000c\000a\000t\000a}{subsection.3.1}% 21
|
||||
\BOOKMARK [3][-]{subsubsection.3.1.3}{\376\377\000S\000t\000a\000t\000i\000s\000t\000i\000c\000h\000e\000\040\000R\000T\000L}{subsection.3.1}% 22
|
||||
\BOOKMARK [3][-]{subsubsection.3.1.4}{\376\377\000T\000i\000m\000i\000n\000g}{subsection.3.1}% 23
|
||||
\BOOKMARK [2][-]{subsection.3.2}{\376\377\000R\000e\000p\000o\000r\000t\000\040\000d\000i\000\040\000s\000i\000m\000u\000l\000a\000z\000i\000o\000n\000i}{section.3}% 24
|
||||
\BOOKMARK [3][-]{subsubsection.3.2.1}{\376\377\000T\000e\000s\000t\000\040\000b\000e\000n\000c\000h\000\040\0001}{subsection.3.2}% 25
|
||||
\BOOKMARK [3][-]{subsubsection.3.2.2}{\376\377\000T\000e\000s\000t\000\040\000b\000e\000n\000c\000h\000\040\0002\000\040\000\050\000c\000a\000s\000i\000\040\000l\000i\000m\000i\000t\000e\000\051}{subsection.3.2}% 26
|
||||
\BOOKMARK [3][-]{subsubsection.3.2.3}{\376\377\000T\000e\000s\000t\000\040\000b\000e\000n\000c\000h\000\040\0003\000\040\000\050\000l\000a\000t\000e\000n\000z\000e\000\051}{subsection.3.2}% 27
|
||||
\BOOKMARK [1][-]{section.4}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000i}{}% 28
|
||||
@@ -0,0 +1,783 @@
|
||||
\documentclass[12pt,a4paper]{article}
|
||||
|
||||
% --- Preambolo ---
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[italian]{babel}
|
||||
\usepackage{amsmath, amsfonts, amssymb}
|
||||
\usepackage{geometry}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{listings}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{lstautogobble}
|
||||
|
||||
\usepackage{booktabs}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{colortbl}
|
||||
\usepackage{float}
|
||||
|
||||
\usepackage{caption}
|
||||
|
||||
\usepackage{hyperref}
|
||||
\hypersetup{
|
||||
colorlinks=false,
|
||||
pdfborder={0 0 0}
|
||||
}
|
||||
|
||||
|
||||
\geometry{a4paper, margin=3cm}
|
||||
|
||||
% Configurazione professionale per il codice VHDL
|
||||
\lstset{
|
||||
language=VHDL,
|
||||
basicstyle=\ttfamily\small, % Font monospaziato piccolo
|
||||
keywordstyle=\color{blue}, % Parole chiave in blu
|
||||
commentstyle=\color{gray}, % Commenti in grigio
|
||||
breaklines=true, % VA A CAPO AUTOMATICAMENTE
|
||||
frame=single, % Bordo attorno al codice
|
||||
numbers=left, % Numeri di riga a sinistra
|
||||
numberstyle=\tiny\color{gray},
|
||||
xleftmargin=10pt, % Margine per far rientrare i numeri di riga
|
||||
showstringspaces=false,
|
||||
autogobble=true,
|
||||
tabsize=2,
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{titlepage}
|
||||
\centering
|
||||
{\large \textbf{POLITECNICO DI MILANO 1863}} \\
|
||||
\vspace{1cm}
|
||||
\includegraphics[width=0.4\textwidth]{logo_polimi.jpg} \\
|
||||
\vspace{2cm}
|
||||
|
||||
{\Large \textbf{Relazione Progetto Reti Logiche}} \\
|
||||
\vspace{1cm}
|
||||
|
||||
{\large Aleandro Pagani} \\
|
||||
\vspace{0.5cm}
|
||||
{\large Giugno 2026} \\
|
||||
|
||||
\vfill
|
||||
|
||||
{\large Matricola: 236992} \\
|
||||
{\large Codice persona: 10893566} \\
|
||||
\vspace{1cm}
|
||||
{\large Professore: Fabio Salice}
|
||||
\end{titlepage}
|
||||
|
||||
\newpage
|
||||
|
||||
\pagenumbering{roman}
|
||||
\tableofcontents
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
\pagenumbering{arabic}
|
||||
\section{Introduzione}
|
||||
\subsection{Specifiche generali}
|
||||
\subsubsection{Descrizione}
|
||||
|
||||
Il progetto consiste nel descrivere un modulo hardware che si interfaccia con una memoria in cui la prima cella contiene il contatore dei task e le celle successive la lista ordinata. Il modulo deve supportare quattro tipi di operazioni il cui codice identificativo è fornito in ingresso:
|
||||
\begin{itemize}
|
||||
\item \textbf{00}: Decrementa la priorità di tutti i task
|
||||
\item \textbf{01}: Rimuove il primo task della lista
|
||||
\item \textbf{10}: Aggiunge un nuovo task in lista
|
||||
\item \textbf{11}: Svuota completamente la lista
|
||||
\end{itemize}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_00.png}
|
||||
\caption*{OP 00.}
|
||||
\label{fig:00}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_01.png}
|
||||
\caption*{OP 01.}
|
||||
\label{fig:01}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_10.png}
|
||||
\caption*{OP 10 (inserisco task 100000 01).}
|
||||
\label{fig:10}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{INTRODUZIONE/OP_11.png}
|
||||
\caption*{OP 11.}
|
||||
\label{fig:11}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsubsection{Funzionamento}
|
||||
La sincronizzazione tra la logica esterna e il modulo hardware avviene tramite un protocollo di handshake \textbf{START-DONE}.
|
||||
Il funzionamento del modulo è scandito attraverso 5 fasi:
|
||||
\begin{itemize}
|
||||
\item \textbf{Inizializzazione:} Vengono forniti i dati e posto il segnale \textbf{START} a 1.
|
||||
\item \textbf{Elaborazione:} Il modulo avvia le operazioni e interagisce con la memoria.
|
||||
\item \textbf{Completamento:} Terminate le operazioni, il modulo imposta il segnale \textbf{DONE} a 1.
|
||||
\item \textbf{Riconoscimento:} La logica esterna pone il segnale \textbf{START} a 0.
|
||||
\item \textbf{Ripristino:} Il modulo riporta il segnale \textbf{DONE} a 0 e torna in attesa di nuove direttive.
|
||||
\end{itemize}
|
||||
|
||||
\vspace{0.5cm}
|
||||
\centerline{\includegraphics[width=0.6\textwidth]{START-DONE handshake.png}}
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Descrizione modulo}
|
||||
|
||||
\begin{lstlisting}
|
||||
entity project_reti_logiche is
|
||||
port (
|
||||
i_clk: in std_logic;
|
||||
i_rst: in std_logic;
|
||||
|
||||
i_start: in std_logic;
|
||||
i_task_id: in std_logic_vector(5 downto 0);
|
||||
i_task_priority : in std_logic_vector(1 downto 0);
|
||||
i_op: in std_logic_vector(1 downto 0);
|
||||
|
||||
o_done: out std_logic;
|
||||
o_task_id: out std_logic_vector(5 downto 0);
|
||||
|
||||
o_mem_addr : out std_logic_vector(15 downto 0);
|
||||
i_mem_data : in std_logic_vector(7 downto 0);
|
||||
o_mem_data : out std_logic_vector(7 downto 0);
|
||||
o_mem_we: out std_logic;
|
||||
o_mem_en: out std_logic
|
||||
);
|
||||
end project_reti_logiche;
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{i\_clk:} Segnale di clock
|
||||
\item \textbf{i\_rst:} Segnale di reset
|
||||
\vspace{0.5cm}
|
||||
\item \textbf{i\_start:} Segnale \textbf{START} di handshake
|
||||
\item \textbf{i\_task\_id:} Codice del task da inserire
|
||||
\item \textbf{i\_task\_priority:} Priorità del task da inserire
|
||||
\item \textbf{i\_op:} ID dell'operazione da eseguire
|
||||
\vspace{0.5cm}
|
||||
\item \textbf{o\_done:} Segnale \textbf{DONE} di handshake
|
||||
\item \textbf{o\_task\_id:} Codice del task restituito dall'eliminazione
|
||||
\vspace{0.5cm}
|
||||
\item \textbf{o\_mem\_addr:} Indirizzo di memoria con cui interagire
|
||||
\item \textbf{i\_mem\_data:} Informazioni lette dalla memoria
|
||||
\item \textbf{o\_mem\_data:} Informazioni da scrivere in memoria
|
||||
\item \textbf{o\_mem\_we:} Flag per abilitare la scrittura in memoria
|
||||
\item \textbf{o\_mem\_en:} Flag per abilitare la lettura in memoria
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Descrizione memoria}
|
||||
\subsubsection{Implementazione fornita}
|
||||
\begin{lstlisting}
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.std_logic_unsigned.all;
|
||||
|
||||
entity rams_sp_wf is
|
||||
port(
|
||||
clk : in std_logic;
|
||||
we : in std_logic;
|
||||
en : in std_logic;
|
||||
addr : in std_logic_vector(15 downto 0);
|
||||
di : in std_logic_vector(7 downto 0);
|
||||
do : out std_logic_vector(7 downto 0)
|
||||
);
|
||||
end rams_sp_wf;
|
||||
|
||||
architecture syn of rams_sp_wf is
|
||||
type ram_type is array (65535 downto 0) of std_logic_vector(7 downto 0);
|
||||
signal RAM : ram_type;
|
||||
begin
|
||||
process(clk)
|
||||
begin
|
||||
if clk'event and clk = '1' then
|
||||
if en = '1' then
|
||||
if we = '1' then
|
||||
RAM(conv_integer(addr)) <= di;
|
||||
do <= di; -- Write-First
|
||||
else
|
||||
do <= RAM(conv_integer(addr));
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
end syn;
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{clk:} Segnale di clock
|
||||
\item \textbf{we:} Flag di scrittura
|
||||
\item \textbf{en:} Flag di lettura
|
||||
\item \textbf{addr:} Indirizzo con cui interagire
|
||||
\item \textbf{di:} Dati in ingresso
|
||||
\item \textbf{do:} Dati in uscita
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
\subsubsection{Layout di memoria}
|
||||
La RAM indirizza 65536 celle da un byte (indirizzi a 16 bit); la lista ne utilizza al più 64: la prima (\textbf{0}) rappresenta il numero di task presenti, le successive contengono i task (al massimo 63, dato che gli ID sono a 6 bit e l'ID 0 è riservato).\\
|
||||
Per ogni task, i primi 6 bit ne identificano il codice, mentre gli ultimi 2 la priorità.
|
||||
\vspace{0.7cm}
|
||||
|
||||
|
||||
\begin{minipage}[c]{0.30\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{MemoryDiagram.png}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}[c]{0.60\textwidth}
|
||||
|
||||
In questo esempio abbiamo 3 task:
|
||||
\begin{itemize}
|
||||
\item \textbf{001111 00:} Task con codice 15 e priorità 0
|
||||
\item \textbf{010100 00:} Task con codice 20 e priorità 0
|
||||
\item \textbf{011011 11:} Task con codice 27 e priorità 3
|
||||
\end{itemize}
|
||||
Tutti gli altri elementi in memoria non vengono considerati validi.
|
||||
\end{minipage}
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section{Architettura}
|
||||
Data la dimensione ridotta del progetto, il componente è composto da un unico modulo con due processi: uno sincrono e uno combinatorio.
|
||||
|
||||
Nell'implementazione presentata è stata privilegiata la leggibilità rispetto all'efficienza e alla minimizzazione del numero di segnali.
|
||||
|
||||
\subsection{Segnali interni}
|
||||
\begin{lstlisting}
|
||||
signal state: state_type;
|
||||
signal next_state: state_type;
|
||||
|
||||
signal current_mem_addr: std_logic_vector(15 downto 0);
|
||||
signal next_mem_addr: std_logic_vector(15 downto 0);
|
||||
|
||||
signal current_task_count: std_logic_vector(7 downto 0);
|
||||
signal next_task_count: std_logic_vector(7 downto 0);
|
||||
|
||||
signal current_popped_id: std_logic_vector(5 downto 0);
|
||||
signal next_popped_id: std_logic_vector(5 downto 0);
|
||||
|
||||
signal ctrl_done: std_logic;
|
||||
signal ctrl_mem_en: std_logic;
|
||||
signal ctrl_mem_we: std_logic;
|
||||
signal ctrl_mem_data: std_logic_vector(7 downto 0);
|
||||
signal ctrl_task_id: std_logic_vector(5 downto 0);
|
||||
\end{lstlisting}
|
||||
|
||||
I registri interni sono organizzati in coppie \textbf{current\_*}/\textbf{next\_*}: il processo combinatorio calcola il valore \textbf{next\_*}, il processo sincrono lo registra in \textbf{current\_*} sul fronte di clock.
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{state:} Stato attuale dell'FSM
|
||||
\item \textbf{next\_state:} Prossimo stato dell'FSM
|
||||
\vspace{0.5cm}
|
||||
\item \textbf{current\_mem\_addr / next\_mem\_addr:} Indirizzo di memoria su cui la FSM sta lavorando (0 = contatore, 1..N = task)
|
||||
\item \textbf{current\_task\_count / next\_task\_count:} Copia locale del numero di task presenti in lista (cella 0 della memoria)
|
||||
\item \textbf{current\_popped\_id / next\_popped\_id:} ID estratto dall'ultima rimozione, presentato su \textbf{o\_task\_id} quando \textbf{DONE} viene alzato
|
||||
\vspace{0.5cm}
|
||||
\item \textbf{ctrl\_done:} Segnale di controllo di \textbf{DONE}
|
||||
\item \textbf{ctrl\_mem\_en:} Segnale per abilitare la lettura in memoria
|
||||
\item \textbf{ctrl\_mem\_we:} Segnale per abilitare la scrittura in memoria
|
||||
\item \textbf{ctrl\_mem\_data:} Dati da scrivere in memoria
|
||||
\item \textbf{ctrl\_task\_id:} Valore da presentare sull'uscita \textbf{o\_task\_id}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Processo sincrono}
|
||||
Questo processo registra sul fronte di salita del clock lo stato, i registri e tutte le uscite del modulo.
|
||||
\begin{lstlisting}
|
||||
process(i_clk, i_rst)
|
||||
begin
|
||||
if i_rst = '1' then
|
||||
state <= S_RESET;
|
||||
o_done <= '1';
|
||||
o_mem_en <= '0';
|
||||
o_mem_we <= '0';
|
||||
elsif rising_edge(i_clk) then
|
||||
state <= next_state;
|
||||
current_mem_addr <= next_mem_addr;
|
||||
current_task_count <= next_task_count;
|
||||
current_popped_id <= next_popped_id;
|
||||
|
||||
o_done <= ctrl_done;
|
||||
o_mem_en <= ctrl_mem_en;
|
||||
o_mem_we <= ctrl_mem_we;
|
||||
o_mem_addr <= next_mem_addr;
|
||||
o_mem_data <= ctrl_mem_data;
|
||||
o_task_id <= ctrl_task_id;
|
||||
end if;
|
||||
end process;
|
||||
\end{lstlisting}
|
||||
Sul fronte di salita del clock i registri \textbf{current\_*} vengono aggiornati con i corrispettivi valori \textbf{next\_*} e, contemporaneamente, vengono scritti sui bus di uscita \textbf{o\_*} i valori calcolati dal processo combinatorio.
|
||||
|
||||
Il reset, asincrono, porta la FSM in \textbf{S\_RESET} con \textbf{DONE} a 1 (come richiesto dalla specifica) e disabilita l'accesso alla memoria: in questo modo il modulo non può produrre scritture involontarie mentre il reset è attivo, indipendentemente dall'istante in cui arriva.\\\\
|
||||
\textbf{Nota:} \textbf{o\_mem\_addr} viene registrato da \textbf{next\_mem\_addr} (e non da \textbf{current\_mem\_addr}). In questo modo l'indirizzo arriva alla memoria con un ciclo di anticipo rispetto allo stato che ne consumerà il dato. Questa convenzione permette a ogni stato di richiedere una lettura e allo stato successivo (dopo un solo ciclo "cuscinetto") di usarne il risultato.
|
||||
|
||||
\newpage
|
||||
|
||||
\subsection{Processo combinatorio}
|
||||
Questo è il processo principale del modulo hardware: esso è responsabile della logica interna e della gestione degli stati FSM.\\
|
||||
Vengono di seguito analizzati tutti gli stati presenti.
|
||||
|
||||
|
||||
\begin{lstlisting}
|
||||
type state_type is (
|
||||
S_IDLE, S_RESET, S_DONE,
|
||||
|
||||
S_00_READ, S_00_WAIT, S_00_CHECK, S_00_GO_NEXT,
|
||||
|
||||
S_01_CHECK_NUMBER, S_01_WAIT, S_01_WRITE, S_01_CHECK_END, S_01_COPY, S_01_GO_NEXT, S_01_WAIT_FOR_COUNT,
|
||||
|
||||
S_10_PLACE_AT_START, S_10_WAIT_FOR_CHECK, S_10_CHECK_ID, S_10_WAIT, S_10_COMPARE, S_10_GO_NEXT, S_10_UPDATE_COUNT, S_10_WAIT_FOR_COUNT,
|
||||
|
||||
S_11_UPDATE_COUNT, S_11_WAIT_FOR_COUNT
|
||||
);
|
||||
\end{lstlisting}
|
||||
|
||||
\subsubsection{Stati di gestione del protocollo}
|
||||
\begin{itemize}
|
||||
\item \textbf{S\_IDLE:} Stato di attesa. Quando viene rilevato il segnale \textbf{START=1}, viene avviata l'operazione indicata dal codice \textbf{i\_op}. Viene anche azzerato il registro \textbf{popped\_id}, così \textbf{o\_task\_id} varrà 0 per ogni operazione diversa da una rimozione andata a buon fine.
|
||||
\item \textbf{S\_RESET:} Stato di reset. Imposta il contatore nella prima cella di memoria a 0, invalidando tutte le altre, mentre \textbf{DONE} rimane a 1 come richiesto dalla specifica.
|
||||
\item \textbf{S\_DONE:} Alza \textbf{DONE} e lo tiene a 1 finché \textbf{START} non torna a 0, come richiesto dal protocollo di handshake. Tutte le operazioni raggiungono questo stato un ciclo dopo il proprio stato terminale per permettere il completamento delle scritture in memoria e fornire i dati già aggiornati.
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
\subsubsection{Operazione 00}
|
||||
Questa operazione decrementa la priorità di tutti i task presenti in lista.
|
||||
Se un task ha già la priorità minima \textbf{11}, questa non viene modificata.
|
||||
\vspace{0.5cm}
|
||||
|
||||
\centerline{\includegraphics[width=0.4\textwidth]{DIAGRAMS/S_00_DIAGRAM.png}}
|
||||
|
||||
\vspace{0.5cm}
|
||||
Gli stati presenti sono 4:
|
||||
\begin{itemize}
|
||||
\item \textbf{S\_00\_READ:} Seleziona il primo elemento in lista
|
||||
\item \textbf{S\_00\_WAIT:} Stato cuscinetto. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato
|
||||
\item \textbf{S\_00\_CHECK:} Controlla se l'indirizzo selezionato è un task valido. In tal caso, se possibile, ne incrementa la priorità numerica di 1.
|
||||
\item \textbf{S\_00\_GO\_NEXT:} Seleziona la cella di memoria successiva
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
\subsubsection{Operazione 01}
|
||||
Questa operazione rimuove il primo task della lista e sposta in alto tutti i task sottostanti.
|
||||
\vspace{0.5cm}
|
||||
|
||||
\centerline{\includegraphics[width=0.7\textwidth]{DIAGRAMS/S_01_DIAGRAM.png}}
|
||||
|
||||
\vspace{0.5cm}
|
||||
Gli stati presenti sono 7:
|
||||
\begin{itemize}
|
||||
\item \textbf{S\_01\_CHECK\_NUMBER:} Se non ci sono task termina subito (\textbf{o\_task\_id} resterà \textbf{000000}). Altrimenti avvia la lettura del primo task.
|
||||
\item \textbf{S\_01\_WAIT:} Stato cuscinetto. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato
|
||||
\item \textbf{S\_01\_WRITE:} Salva l'ID del primo task nel registro \textbf{popped\_id} (verrà presentato su \textbf{o\_task\_id} in \textbf{S\_DONE}) e avvia la lettura del task successivo.
|
||||
\item \textbf{S\_01\_CHECK\_END:} Controlla se ha raggiunto la fine della lista. In tal caso scrive nella prima cella il valore del contatore decrementato di uno.
|
||||
\item \textbf{S\_01\_COPY:} Copia il contenuto della cella \textbf{n+1} dentro alla cella \textbf{n}.
|
||||
\item \textbf{S\_01\_GO\_NEXT:} Passa al task successivo.
|
||||
\item \textbf{S\_01\_WAIT\_FOR\_COUNT:} Attende il commit della scrittura del contatore, poi transita in \textbf{S\_DONE}.
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
\subsubsection{Operazione 10}
|
||||
Questa operazione inserisce un nuovo task nella posizione corretta secondo la sua priorità, in coda ai task di pari priorità. L'operazione è divisa in due fasi:
|
||||
\begin{enumerate}
|
||||
\item \textbf{Scansione duplicati:} la lista viene percorsa dall'ultimo task verso il primo; se viene trovato un task con lo stesso ID, l'inserimento viene ignorato (la specifica vieta la presenza di due task con lo stesso ID). Vengono inoltre scartate immediatamente le richieste con ID = 0.
|
||||
\item \textbf{Inserimento dal fondo:} partendo dall'ultimo task e salendo, viene controllata la priorità del task corrente. Se questa risulta numericamente maggiore (gerarchicamente inferiore) rispetto a quella del task da inserire, la cella viene copiata in quella sottostante e il confronto prosegue verso l'alto. Contrariamente, se la priorità dovesse risultare minore o uguale, il nuovo task viene inserito nella cella sottostante: il confronto "minore o uguale" è ciò che colloca il nuovo task \emph{dopo} quelli di pari priorità.
|
||||
\end{enumerate}
|
||||
|
||||
Si fa notare come il caso limite di lista piena non può verificarsi: con ID a 6 bit e ID = 0 escluso esistono al più 63 task distinti, e un 64-esimo inserimento sarebbe necessariamente un duplicato, quindi ignorato dalla fase di scansione.
|
||||
|
||||
\vspace{0.5cm}
|
||||
Di seguito viene illustrato un esempio di inserimento del task \textbf{011110 01}.
|
||||
|
||||
Nota: la scansione iniziale per identificare i duplicati viene ignorata nell'esempio.
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item L’ultimo task presenta una priorità gerarchicamente minore, di conseguenza viene copiato nella cella sottostante.
|
||||
|
||||
\includegraphics[width=0.7\textwidth]{S_10_EXAMPLE/S_10_ITERATION1.png}
|
||||
|
||||
\item Si passa quindi al task soprastante. Anche questo presenta una priorità inferiore e viene pertanto copiato nella cella sottostante.
|
||||
|
||||
\includegraphics[width=0.7\textwidth]{S_10_EXAMPLE/S_10_ITERATION2.png}
|
||||
|
||||
\item Il task nella cella 1 presenta invece una priorità maggiore o uguale: il nuovo task viene quindi inserito nella cella sottostante.
|
||||
|
||||
\includegraphics[width=0.87\textwidth]{S_10_EXAMPLE/S_10_ITERATION3.png}
|
||||
|
||||
\item Infine, viene aggiornato il contatore.
|
||||
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
|
||||
\vspace{0.5cm}
|
||||
|
||||
\centerline{\includegraphics[width=0.7\textwidth]{DIAGRAMS/S_10_DIAGRAM.png}}
|
||||
\vspace{0.5cm}
|
||||
Gli stati presenti sono 8:
|
||||
\begin{itemize}
|
||||
\item \textbf{S\_10\_PLACE\_AT\_START:} Scarta le richieste con ID = 0 e avvia la scansione duplicati dall'ultimo task della lista.
|
||||
|
||||
\item \textbf{S\_10\_WAIT\_FOR\_CHECK:} Stato cuscinetto della fase di scansione. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato.
|
||||
|
||||
\item \textbf{S\_10\_CHECK\_ID:} Confronta l'ID del task letto con quello da inserire: se coincidono, l'operazione termina senza modifiche. Altrimenti se la scansione ha raggiunto la cima della lista, rilegge l'ultimo task e passa alla fase di inserimento. In caso contrario prosegue la scansione verso l'alto.
|
||||
|
||||
\item \textbf{S\_10\_WAIT:} Stato cuscinetto della fase di inserimento. Serve per dare tempo alla RAM di leggere il contenuto del task selezionato.
|
||||
|
||||
\item \textbf{S\_10\_COMPARE:} Verifica la condizione di inserimento del nuovo task.
|
||||
Se tutta la lista è stata sfogliata (o era vuota), il nuovo task viene scritto in testa.
|
||||
In caso contrario, se il task da inserire presenta una priorità numericamente maggiore o uguale rispetto al task corrente, viene copiato nella cella sottostante;
|
||||
se invece presenta una priorità numericamente minore, è il task corrente a venire scritto nella cella sottostante.
|
||||
|
||||
\item \textbf{S\_10\_GO\_NEXT:} Seleziona il task precedente nella lista, da confrontare al giro successivo.
|
||||
|
||||
\item \textbf{S\_10\_UPDATE\_COUNT:} Aggiorna il contatore con il numero totale di task presenti nella lista.
|
||||
|
||||
\item \textbf{S\_10\_WAIT\_FOR\_COUNT:} Attende il commit della scrittura del contatore, poi transita in \textbf{S\_DONE}.
|
||||
|
||||
\end{itemize}
|
||||
\newpage
|
||||
|
||||
|
||||
\subsubsection{Operazione 11}
|
||||
Questa operazione svuota completamente la lista impostando il contatore dei task a 0 (non è necessario resettare tutti i valori nella memoria).
|
||||
|
||||
\vspace{0.5cm}
|
||||
\centerline{\includegraphics[width=0.7\textwidth]{DIAGRAMS/S_11_DIAGRAM.png}}
|
||||
\vspace{0.5cm}
|
||||
Gli stati presenti sono 2:
|
||||
\begin{itemize}
|
||||
\item \textbf{S\_11\_UPDATE\_COUNT:} Imposta il contatore a 0.
|
||||
|
||||
\item \textbf{S\_11\_WAIT\_FOR\_COUNT:} Attende il commit della scrittura del contatore, poi transita in \textbf{S\_DONE}.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\newpage
|
||||
\section{Risultati sperimentali}
|
||||
\subsection{Report di sintesi}
|
||||
\subsubsection{Risorse utilizzate}
|
||||
La seguente tabella mostra le risorse hardware occupate dal design sul dispositivo target Artix-7 FPGA xc7a200tfbg484-1. L'utilizzo è estremamente contenuto: le Slice LUT occupano solo lo 0.13\% delle risorse disponibili e i registri lo 0.03\%. Inoltre, non è presente alcun latch: tutti gli elementi di memoria sono flip-flop.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{Risorse utilizzate}
|
||||
\label{tab:utilization}
|
||||
\begin{tabular}{lrrrrr}
|
||||
\toprule
|
||||
\textbf{Site Type} & \textbf{Used} & \textbf{Fixed} & \textbf{Prohibited} & \textbf{Available} & \textbf{Util\%} \\
|
||||
\midrule
|
||||
Slice LUTs* & 181 & 0 & 0 & 134600 & 0.13 \\
|
||||
\quad LUT as Logic & 181 & 0 & 0 & 134600 & 0.13 \\
|
||||
\quad LUT as Memory & 0 & 0 & 0 & 46200 & 0.00 \\
|
||||
Slice Registers & 71 & 0 & 0 & 269200 & 0.03 \\
|
||||
\quad Register as Flip Flop & 71 & 0 & 0 & 269200 & 0.03 \\
|
||||
\quad Register as Latch & 0 & 0 & 0 & 269200 & 0.00 \\
|
||||
F7 Muxes & 0 & 0 & 0 & 67300 & 0.00 \\
|
||||
F8 Muxes & 0 & 0 & 0 & 33650 & 0.00 \\
|
||||
Unique Control Sets & 6 & -- & 0 & 33650 & 0.02 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\newpage
|
||||
|
||||
|
||||
\subsubsection{FSM codificata}
|
||||
La tabella riporta la codifica degli stati FSM generata automaticamente dal tool di sintesi. Sono presenti in totale 24 stati. Vivado ha scelto una codifica \textbf{one-hot} (un flip-flop per stato, 24 bit complessivi). Per compattezza la tabella riporta, per ogni stato, l'indice del bit attivo della codifica one-hot e la codifica sequenziale a 5 bit di partenza.
|
||||
\begin{table}[H]
|
||||
\caption{Codifica degli stati}
|
||||
\label{tab:fsm-encoding}
|
||||
\centering
|
||||
\begin{tabular}{lcc}
|
||||
\toprule
|
||||
\textbf{Stato} & \textbf{One-hot (bit attivo)} & \textbf{Previous Encoding} \\
|
||||
\midrule
|
||||
\texttt{s\_reset} & 0 & 00001 \\
|
||||
\texttt{s\_done} & 1 & 00010 \\
|
||||
\texttt{s\_idle} & 2 & 00000 \\
|
||||
\texttt{s\_00\_read} & 3 & 00011 \\
|
||||
\texttt{s\_00\_wait} & 4 & 00100 \\
|
||||
\texttt{s\_00\_check} & 5 & 00101 \\
|
||||
\texttt{s\_00\_go\_next} & 6 & 00110 \\
|
||||
\texttt{s\_01\_check\_number} & 7 & 00111 \\
|
||||
\texttt{s\_01\_wait} & 8 & 01000 \\
|
||||
\texttt{s\_01\_write} & 9 & 01001 \\
|
||||
\texttt{s\_01\_check\_end} & 10 & 01010 \\
|
||||
\texttt{s\_01\_wait\_for\_count}& 11 & 01101 \\
|
||||
\texttt{s\_01\_copy} & 12 & 01011 \\
|
||||
\texttt{s\_01\_go\_next} & 13 & 01100 \\
|
||||
\texttt{s\_10\_place\_at\_start}& 14 & 01110 \\
|
||||
\texttt{s\_10\_wait\_for\_check}& 15 & 01111 \\
|
||||
\texttt{s\_10\_check\_id} & 16 & 10000 \\
|
||||
\texttt{s\_10\_wait} & 17 & 10001 \\
|
||||
\texttt{s\_10\_compare} & 18 & 10010 \\
|
||||
\texttt{s\_10\_update\_count} & 19 & 10100 \\
|
||||
\texttt{s\_10\_wait\_for\_count}& 20 & 10101 \\
|
||||
\texttt{s\_10\_go\_next} & 21 & 10011 \\
|
||||
\texttt{s\_11\_update\_count} & 22 & 10110 \\
|
||||
\texttt{s\_11\_wait\_for\_count}& 23 & 10111 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
\subsubsection{Statistiche RTL}
|
||||
La tabella riporta i componenti RTL usati dal tool di sintesi a partire dal codice VHDL. Sono presenti sommatori e registri da diversi bit per la gestione degli indirizzi RAM (16 bit) ed i segnali interni.
|
||||
Sono anche presenti multiplexer a 24 ingressi per la codifica one-hot dello stato.
|
||||
\begin{table}[H]
|
||||
\caption{Statistiche RTL}
|
||||
\label{tab:rtl-stats}
|
||||
\centering
|
||||
\small
|
||||
\begin{tabular}{rlrl}
|
||||
\toprule
|
||||
\textbf{Ingressi} & \textbf{Bit} & \textbf{Tipo} & \textbf{Quantità} \\
|
||||
\midrule
|
||||
\multicolumn{4}{l}{\textit{Adders}} \\
|
||||
2 & 16 bit & Adder & 4 \\
|
||||
2 & 9 bit & Adder & 1 \\
|
||||
2 & 8 bit & Adder & 3 \\
|
||||
\midrule
|
||||
\multicolumn{4}{l}{\textit{Registers}} \\
|
||||
-- & 16 bit & Register & 1 \\
|
||||
-- & 8 bit & Register & 2 \\
|
||||
-- & 6 bit & Register & 2 \\
|
||||
-- & 1 bit & Register & 3 \\
|
||||
\midrule
|
||||
\multicolumn{4}{l}{\textit{Muxes}} \\
|
||||
24 & 24 bit & Mux & 1 \\
|
||||
4 & 24 bit & Mux & 1 \\
|
||||
2 & 24 bit & Mux & 7 \\
|
||||
2 & 16 bit & Mux & 3 \\
|
||||
24 & 16 bit & Mux & 1 \\
|
||||
2 & 8 bit & Mux & 4 \\
|
||||
24 & 8 bit & Mux & 2 \\
|
||||
2 & 6 bit & Mux & 1 \\
|
||||
24 & 6 bit & Mux & 2 \\
|
||||
2 & 1 bit & Mux & 1 \\
|
||||
24 & 1 bit & Mux & 6 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
\newpage
|
||||
|
||||
|
||||
|
||||
\subsubsection{Timing}
|
||||
La specifica richiede che il progetto funzioni con un periodo di clock di almeno 20 ns. Il requisito è stato verificato in sintesi applicando il vincolo \texttt{create\_clock -period 20.000} sul segnale \texttt{i\_clk}:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{Design Timing Summary}
|
||||
\label{tab:timing}
|
||||
\begin{tabular}{lrr}
|
||||
\toprule
|
||||
\textbf{Metrica} & \textbf{Slack (ns)} & \textbf{Endpoint in violazione} \\
|
||||
\midrule
|
||||
Worst Negative Slack (setup, WNS) & $+14.786$ & 0 / 114 \\
|
||||
Worst Hold Slack (WHS) & $+0.149$ & 0 / 114 \\
|
||||
Worst Pulse Width Slack (WPWS) & $+9.500$ & 0 / 72 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
Il Worst Negative Slack indica che il modulo può operare fino a periodi di clock di 5.2 ns, rispettando il vincolo dei 20 ns con un margine di quasi 4 volte.
|
||||
\newpage
|
||||
|
||||
\subsection{Report di simulazioni}
|
||||
\subsubsection{Test bench 1}
|
||||
Il test bench di esempio fornito dal docente copre le operazioni base quali reset, inserimento in lista, rimozione dalla lista, decremento di priorità e svuotamento della lista.
|
||||
|
||||
Seppur non vengano coperti molti casi limite, questo test bench ci offre la possibilità di analizzare facilmente i tempi di esecuzione delle singole operazioni.
|
||||
Le 10 operazioni, infatti, vengono eseguite correttamente in 2540 ns.\\
|
||||
In particolar modo, le latenze in cicli di clock (periodo 20 ns), con \textbf{N} task presenti in lista e \textbf{k} task spostati, sono le seguenti:
|
||||
\begin{itemize}
|
||||
\item \textbf{OP 00}: $(4 + 3N) \cdot 20\,$ns
|
||||
\item \textbf{OP 01}: $(6 + 3k) \cdot 20\,$ns, con $k = N - 1$; lista vuota: $2 \cdot 20\,$ns
|
||||
\item \textbf{OP 10}: $(6 + 2N + 3k) \cdot 20\,$ns
|
||||
\item \textbf{OP 11}: $3 \cdot 20\,$ns
|
||||
\end{itemize}
|
||||
|
||||
Nota: nell'operazione \textbf{10} il termine $2N$ è il costo della scansione duplicati, che percorre sempre l'intera lista, mentre $3k$ è il costo degli spostamenti, con $k$ compreso tra 0 (inserimento in fondo) e $N$ (inserimento in testa).
|
||||
Per caratterizzare il comportamento medio, si considera una distribuzione delle priorità equiprobabile: $E[T] = \left(6 + \frac{25}{8}N\right) \cdot 20\,$ns.
|
||||
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1\textwidth]{WAVEFORM/RESET.png}
|
||||
\caption{Operazione di reset.}
|
||||
\label{fig:reset}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1\textwidth]{WAVEFORM/INSERIMENTO_VUOTA.png}
|
||||
\caption{Operazione di inserimento in lista vuota.}
|
||||
\label{fig:insert_empty}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1\textwidth]{WAVEFORM/SVUOTA.png}
|
||||
\caption{Operazione di svuotamento della lista.}
|
||||
\label{fig:empty}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1\textwidth]{WAVEFORM/INSERIMENTO_PIENA.png}
|
||||
\caption{Operazione di inserimento in lista popolata.}
|
||||
\label{fig:insert_full}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1\textwidth]{WAVEFORM/RIMOZIONE.png}
|
||||
\caption{Operazione di rimozione di un task.}
|
||||
\label{fig:remove}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1\textwidth]{WAVEFORM/DECREMENTA.png}
|
||||
\caption{Operazione di decremento della priorità.}
|
||||
\label{fig:decrease}
|
||||
\end{figure}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\newpage
|
||||
|
||||
\subsubsection{Test bench 2 (casi limite)}
|
||||
Il secondo test bench è stato pensato per coprire i possibili casi limite che potrebbero presentarsi:
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\renewcommand{\arraystretch}{1.6}
|
||||
\begin{tabular}{|m{6cm}|m{8cm}|}
|
||||
\hline
|
||||
\textbf{Caso testato} & \textbf{Descrizione} \\
|
||||
\hline
|
||||
Reset asincrono & Reset durante operazioni in corso: il modulo torna allo stato iniziale senza corrompere la memoria. \\
|
||||
\hline
|
||||
Operazioni su lista vuota & Rimozione, decremento e svuotamento su lista vuota non producono scritture. La rimozione restituisce ID = 000000. \\
|
||||
\hline
|
||||
Saturazione della priorità & Task già a priorità 11 non vengono modificati da ulteriori decrementi. \\
|
||||
\hline
|
||||
Ordinamento & Inserimenti con priorità diverse e tra task di pari priorità mantengono il corretto ordinamento. \\
|
||||
\hline
|
||||
ID duplicati e ID = 0 & L'inserimento viene ignorato se l'ID è già presente o vale 0. Il modulo conclude comunque correttamente il protocollo START-DONE. \\
|
||||
\hline
|
||||
Sequenza mista di operazioni & Inserimenti, invecchiamenti, rimozioni e svuotamento in sequenza mista. \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\label{tab:testbench2}
|
||||
\end{table}
|
||||
|
||||
\subsubsection{Test bench 3 (latenze)}
|
||||
Un terzo test bench è stato usato per misurare, per ciascuna operazione, il numero esatto di cicli di clock che passano tra il ricevimento di START e l'invio di DONE. Usato per verificare le formule di latenza riportate nel paragrafo 3.2.1.\\Le 15 misure (inserimenti con 0--3 spostamenti e inserimento in fondo, rimozioni con lista vuota e con 1--4 task, invecchiamenti con 0--4 task) coincidono tutte con il valore atteso, a conferma che le formule di latenza sono corrette.\\\\\\\\
|
||||
\textbf{Tutti e tre i test bench passano sia in simulazione comportamentale sia in simulazione post-sintesi functional.}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\newpage
|
||||
\section{Conclusioni}
|
||||
I test comportamentali e post-sintesi mostrano che il modulo funziona correttamente, rispettando la specifica.
|
||||
Il componente completa l'elaborazione del test bench di esempio in 2540 ns, con un utilizzo delle risorse hardware
|
||||
estremamente contenuto sul dispositivo target Artix-7 FPGA xc7a200tfbg484-1, senza alcun latch inferito. Il vincolo di clock di 20 ns è rispettato con ampio margine (percorso critico $\approx 5.2$ ns).
|
||||
|
||||
In fase di progettazione ho scelto deliberatamente di adottare un numero di stati superiore allo stretto necessario, privilegiando la leggibilità rispetto all'efficienza. Questa scelta, pur garantendo la correttezza del comportamento, introduce una leggera inefficienza temporale:
|
||||
accorpando o eliminando alcuni stati intermedi sarebbe possibile ridurre la latenza complessiva di qualche punto percentuale.
|
||||
Ad esempio, gli stati iniziali di alcune operazioni possono essere accorpati nello stato \textbf{S\_IDLE}, all'interno del ramo di decodifica dell'operazione corrispondente.
|
||||
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,30 @@
|
||||
\babel@toc {italian}{}\relax
|
||||
\babel@toc {italian}{}\relax
|
||||
\contentsline {section}{\numberline {1}Introduzione}{1}{section.1}%
|
||||
\contentsline {subsection}{\numberline {1.1}Specifiche generali}{1}{subsection.1.1}%
|
||||
\contentsline {subsubsection}{\numberline {1.1.1}Descrizione}{1}{subsubsection.1.1.1}%
|
||||
\contentsline {subsubsection}{\numberline {1.1.2}Funzionamento}{2}{subsubsection.1.1.2}%
|
||||
\contentsline {subsection}{\numberline {1.2}Descrizione modulo}{3}{subsection.1.2}%
|
||||
\contentsline {subsection}{\numberline {1.3}Descrizione memoria}{4}{subsection.1.3}%
|
||||
\contentsline {subsubsection}{\numberline {1.3.1}Implementazione fornita}{4}{subsubsection.1.3.1}%
|
||||
\contentsline {subsubsection}{\numberline {1.3.2}Layout di memoria}{5}{subsubsection.1.3.2}%
|
||||
\contentsline {section}{\numberline {2}Architettura}{6}{section.2}%
|
||||
\contentsline {subsection}{\numberline {2.1}Segnali interni}{6}{subsection.2.1}%
|
||||
\contentsline {subsection}{\numberline {2.2}Processo sincrono}{7}{subsection.2.2}%
|
||||
\contentsline {subsection}{\numberline {2.3}Processo combinatorio}{8}{subsection.2.3}%
|
||||
\contentsline {subsubsection}{\numberline {2.3.1}Stati di gestione del protocollo}{8}{subsubsection.2.3.1}%
|
||||
\contentsline {subsubsection}{\numberline {2.3.2}Operazione 00}{9}{subsubsection.2.3.2}%
|
||||
\contentsline {subsubsection}{\numberline {2.3.3}Operazione 01}{10}{subsubsection.2.3.3}%
|
||||
\contentsline {subsubsection}{\numberline {2.3.4}Operazione 10}{11}{subsubsection.2.3.4}%
|
||||
\contentsline {subsubsection}{\numberline {2.3.5}Operazione 11}{14}{subsubsection.2.3.5}%
|
||||
\contentsline {section}{\numberline {3}Risultati sperimentali}{15}{section.3}%
|
||||
\contentsline {subsection}{\numberline {3.1}Report di sintesi}{15}{subsection.3.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.1}Risorse utilizzate}{15}{subsubsection.3.1.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.2}FSM codificata}{16}{subsubsection.3.1.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.3}Statistiche RTL}{17}{subsubsection.3.1.3}%
|
||||
\contentsline {subsubsection}{\numberline {3.1.4}Timing}{18}{subsubsection.3.1.4}%
|
||||
\contentsline {subsection}{\numberline {3.2}Report di simulazioni}{19}{subsection.3.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.2.1}Test bench 1}{19}{subsubsection.3.2.1}%
|
||||
\contentsline {subsubsection}{\numberline {3.2.2}Test bench 2 (casi limite)}{21}{subsubsection.3.2.2}%
|
||||
\contentsline {subsubsection}{\numberline {3.2.3}Test bench 3 (latenze)}{21}{subsubsection.3.2.3}%
|
||||
\contentsline {section}{\numberline {4}Conclusioni}{22}{section.4}%
|
||||
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 158 KiB |
|
After Width: | Height: | Size: 162 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 824 KiB |