Commit 10ad0f4c authored by Stefan Tauner's avatar Stefan Tauner
Browse files

TRM: add Doxygen-generated dependency graphs

parent f5e47546
#!/bin/sh
#
# This script removes all undocumented nodes and associated arrows from
# the given paths to Doxygen-generated .dot files.
# The original files are preserved - the edited files are named
# "*-converted.dot" instead of "*.dot".
# Additionally, it inserts \texttt commands into the labels representing
# the class names.
IFS="
"
remove_undocumented_nodes () {
file=$1
shift
newfile="$(dirname "$file")/$(basename "$file" ".dot")-converted.dot"
cp -a "$file" "$newfile"
nodes=$(grep ',color="grey75"' "$newfile" | grep -E '(Node[^ ]+)' -o)
for node in $nodes; do
sed -i "/$node /d" "$newfile"
done
sed -ri 's|/|::|g;s/label="([^"]+).pm"/label=" \1 ",texlbl="\\texttt{\1}"/' "$newfile"
}
for p in "$@"
do
remove_undocumented_nodes "$p"
done
......@@ -100,9 +100,20 @@ The two major differences are:
\subsubsection{FIJI Setup Tool}
\texttt{Tk::FIJISettingsViewer} makes up for the majority of the visible UI of \texttt{fiji\_setup.pl}.
Apart from the widgets on the top it shows several tabs containing controls for most of the \ac{FIJI} Settings.
Apart from the widgets specifying things like the save location of the settings file on the top it shows several tabs containing controls for most of the \ac{FIJI} Settings.
The tabs are filled automatically according to the constants described in \Cref{sec:settings_usage} (cf., \texttt{Tk::FIJISettingsViewer::\_populate\_widget}).
Additionally there is a graphical representation of the \ac{FIJI} system that is implemented by \texttt{Tk::FIJISettingsCanvas}.
The dependency graph of \texttt{Tk::FIJISettingsViewer} is depicted in \Cref{fig:FIJISettingsViewer_8pm__incl}.
\begin{figure}[ht]
\centering
\resizebox{\textwidth}{!}{
\input{content/FIJISettingsViewer_8pm__incl.dot.tex}
}
\caption{Dependency graph of \texttt{Tk::FIJISettingsViewer}}
\label{fig:FIJISettingsViewer_8pm__incl}
\end{figure}
All settings of type \texttt{net} (representing a net in the Verilog netlist) can be set by a distinct dialog that is represented by \texttt{Tk::FIJINetSelection}.
Another dialog that is not exclusive to \texttt{fiji\_setup.pl} is \texttt{Tk::FIJIModalDialog} that is a simple implementation of a modal dialog that conveniencetly handles buttons and supports images and markup text (used in the about dialog) as well.
......@@ -163,6 +174,17 @@ All run-time communication with the \ac{DUT} works via the \ac{UART} protocol sp
The Perl implementation is split into several files.
The part filling a buffer representing the payload as preparation for sending as well as parsing the messages from the \ac{FIC} resides in \texttt{FIJI::Connection} and relies on \texttt{FIJI::AnySerialPort} to be compatible across platforms.
Its \texttt{send\_config} method allows \texttt{FIJI::Downloader} to offer various \texttt{download\_*} methods to classes further up the stack in the \ac{FIJIEE}.
Its dependency graph is depicted in \Cref{fig:Downloader_8pm__incl}.
\begin{figure}[ht]
\centering
\resizebox{\textwidth}{!}{
\input{content/Downloader_8pm__incl.dot.tex}
}
\caption{Dependency graph of \texttt{FIJI::Downloader}}
\label{fig:Downloader_8pm__incl}
\end{figure}
The two available user interfaces of \texttt{fiji\_ee.pl} and \texttt{fiji\_ee\_gui.pl} merely prepare data structures representing test patterns and pass them to the classes mentioned above.
The GUI application is the only truely\footnote{As far as Perl threads are \textit{real} anyway,\\cf.\ \url{http://perldoc.perl.org/perlthrtut.html\#What-kind-of-threads-are-Perl-threads\%3f}} multithreaded application in the framework.
......
......@@ -97,7 +97,7 @@ fields:
The fault model of \acp{FIU} configured as \texttt{RUNTIME} is configured
at runtime using a 3-bit-wide configuration register for each fault configuration
as seen in Figure~\ref{fig:hardwareblockd}. Six of the possible values
as seen in \Cref{fig:hardwareblockd}. Six of the possible values
are already mapped to fault models as can be seen in the VHDL package
\texttt{fault\_injection\_unit\_pkg} (via the constants \texttt{c\_fault\_select\_*}).
Two more fault models can be added without changing the width of these
......
\begin{tikzpicture}[>=latex,line join=bevel,]
\pgfsetlinewidth{1bp}
%%
\pgfsetcolor{black}
% Edge: Node14 -> Node11
\pgfsetcolor{midnightblue}
\draw [->,solid] (202.23bp,56.444bp) .. controls (225.56bp,47.045bp) and (263.05bp,31.934bp) .. (297.7bp,17.971bp);
% Edge: Node1 -> Node16
\draw [->,solid] (403.5bp,168.44bp) .. controls (427.08bp,159.48bp) and (464.32bp,145.31bp) .. (500.6bp,131.52bp);
% Edge: Node1 -> Node8
\draw [->,solid] (342.4bp,168.45bp) .. controls (306.69bp,160.22bp) and (252.3bp,146.85bp) .. (206.0bp,132.0bp) .. controls (156.61bp,116.16bp) and (100.71bp,93.562bp) .. (57.898bp,75.577bp);
% Edge: Node3 -> Node11
\draw [->,solid] (280.66bp,121.06bp) .. controls (314.48bp,119.15bp) and (365.83bp,110.31bp) .. (391.0bp,76.0bp) .. controls (408.27bp,52.458bp) and (370.05bp,31.796bp) .. (332.33bp,16.752bp);
% Edge: Node8 -> Node11
\draw [->,solid] (76.225bp,57.548bp) .. controls (133.05bp,46.47bp) and (238.43bp,25.927bp) .. (297.91bp,14.331bp);
% Edge: Node8 -> Node7
\draw [->,solid] (43.449bp,56.083bp) .. controls (48.014bp,48.613bp) and (54.668bp,37.724bp) .. (65.652bp,19.751bp);
% Edge: Node1 -> Node3
\draw [->,solid] (359.93bp,168.44bp) .. controls (337.94bp,159.52bp) and (303.27bp,145.44bp) .. (268.98bp,131.52bp);
% Edge: Node3 -> Node14
\draw [->,solid] (237.24bp,112.32bp) .. controls (227.23bp,104.26bp) and (212.11bp,92.077bp) .. (191.96bp,75.834bp);
% Edge: Node3 -> Node7
\draw [->,solid] (215.39bp,114.46bp) .. controls (188.71bp,107.96bp) and (150.95bp,95.991bp) .. (123.0bp,76.0bp) .. controls (105.26bp,63.312bp) and (90.36bp,42.99bp) .. (75.893bp,19.862bp);
% Edge: Node3 -> Node15
\draw [->,solid] (258.76bp,112.32bp) .. controls (268.77bp,104.26bp) and (283.89bp,92.077bp) .. (304.04bp,75.834bp);
% Edge: Node3 -> Node8
\draw [->,solid] (215.19bp,112.56bp) .. controls (179.03bp,103.26bp) and (120.74bp,88.276bp) .. (71.275bp,75.556bp);
% Edge: Node1 -> Node11
\draw [->,solid] (386.98bp,168.35bp) .. controls (400.63bp,147.41bp) and (431.21bp,93.017bp) .. (408.0bp,56.0bp) .. controls (393.6bp,33.042bp) and (363.81bp,21.509bp) .. (332.03bp,13.677bp);
% Edge: Node16 -> Node19
\draw [->,solid] (523.5bp,112.08bp) .. controls (523.89bp,105.01bp) and (524.45bp,94.861bp) .. (525.51bp,75.751bp);
% Edge: Node15 -> Node11
\draw [->,solid] (315.0bp,56.083bp) .. controls (315.0bp,49.006bp) and (315.0bp,38.861bp) .. (315.0bp,19.751bp);
% Node: Node11
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (315.0bp,10.0bp) node {\texttt{FIJI}};
\end{scope}
% Node: Node15
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (315.0bp,66.0bp) node {\texttt{FIJI::Tests::SystemVerilog}};
\end{scope}
% Node: Node14
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (181.0bp,66.0bp) node {\texttt{FIJI::Tests::VHDL}};
\end{scope}
% Node: Node16
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (523.0bp,122.0bp) node {\texttt{FIJI::Connection}};
\end{scope}
% Node: Node19
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (526.0bp,66.0bp) node {\texttt{FIJI::AnySerialPort}};
\end{scope}
% Node: Node8
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (38.0bp,66.0bp) node {\texttt{FIJI::Settings}};
\end{scope}
% Node: Node1
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{0.75,0.75,0.75};
\pgfsetfillcolor{fillcol}
\draw (381.0bp,178.0bp) node {\texttt{FIJI::Downloader}};
\end{scope}
% Node: Node3
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (248.0bp,122.0bp) node {\texttt{FIJI::Tests}};
\end{scope}
% Node: Node7
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (71.0bp,10.0bp) node {\texttt{FIJI::ConfigSorted}};
\end{scope}
%
\end{tikzpicture}
\begin{tikzpicture}[>=latex,line join=bevel,]
\pgfsetlinewidth{1bp}
%%
\pgfsetcolor{black}
% Edge: Node1 -> Node25
\pgfsetcolor{midnightblue}
\draw [->,solid] (197.26bp,224.44bp) .. controls (229.96bp,215.2bp) and (282.18bp,200.44bp) .. (327.88bp,187.52bp);
% Edge: Node1 -> Node19
\draw [->,solid] (159.59bp,224.41bp) .. controls (152.72bp,215.84bp) and (142.99bp,201.98bp) .. (139.0bp,188.0bp) .. controls (126.48bp,144.19bp) and (129.72bp,93.252bp) .. (165.0bp,56.0bp) .. controls (198.38bp,20.751bp) and (257.57bp,12.602bp) .. (302.72bp,10.707bp);
% Edge: Node32 -> Node33
\draw [->,solid] (424.0bp,56.083bp) .. controls (424.0bp,49.006bp) and (424.0bp,38.861bp) .. (424.0bp,19.751bp);
% Edge: Node1 -> Node5
\draw [->,solid] (145.29bp,224.44bp) .. controls (122.65bp,215.52bp) and (86.928bp,201.44bp) .. (51.606bp,187.52bp);
% Edge: Node25 -> Node19
\draw [->,solid] (355.96bp,168.08bp) .. controls (349.98bp,141.95bp) and (332.41bp,65.211bp) .. (321.96bp,19.568bp);
% Edge: Node30 -> Node32
\draw [->,solid] (422.33bp,112.08bp) .. controls (422.59bp,105.01bp) and (422.97bp,94.861bp) .. (423.68bp,75.751bp);
% Edge: Node1 -> Node14
\draw [->,solid] (173.77bp,224.08bp) .. controls (179.56bp,216.46bp) and (188.06bp,205.26bp) .. (201.36bp,187.75bp);
% Edge: Node14 -> Node22
\draw [->,solid] (220.21bp,168.32bp) .. controls (231.78bp,160.11bp) and (249.38bp,147.6bp) .. (271.57bp,131.83bp);
% Edge: Node1 -> Node22
\draw [->,solid] (208.44bp,224.46bp) .. controls (229.84bp,217.96bp) and (254.62bp,206.81bp) .. (270.0bp,188.0bp) .. controls (280.61bp,175.03bp) and (283.69bp,155.86bp) .. (284.49bp,131.63bp);
% Edge: Node25 -> Node30
\draw [->,solid] (368.28bp,168.32bp) .. controls (377.84bp,160.26bp) and (392.28bp,148.08bp) .. (411.53bp,131.83bp);
% Edge: Node22 -> Node11
\draw [->,solid] (276.57bp,112.08bp) .. controls (270.15bp,104.38bp) and (260.69bp,93.033bp) .. (246.29bp,75.751bp);
% Edge: Node14 -> Node11
\draw [->,solid] (210.43bp,168.37bp) .. controls (215.46bp,150.54bp) and (227.08bp,109.3bp) .. (236.58bp,75.591bp);
% Edge: Node32 -> Node19
\draw [->,solid] (407.29bp,56.324bp) .. controls (390.69bp,47.703bp) and (365.0bp,34.364bp) .. (336.67bp,19.655bp);
% Edge: Node1 -> Node11
\draw [->,solid] (160.26bp,224.49bp) .. controls (151.22bp,211.98bp) and (137.15bp,187.96bp) .. (145.0bp,168.0bp) .. controls (159.62bp,130.84bp) and (195.06bp,99.248bp) .. (226.12bp,75.722bp);
% Edge: Node22 -> Node19
\draw [->,solid] (287.18bp,112.41bp) .. controls (290.49bp,103.38bp) and (295.77bp,88.75bp) .. (300.0bp,76.0bp) .. controls (305.17bp,60.415bp) and (310.62bp,42.582bp) .. (317.4bp,19.87bp);
% Edge: Node14 -> Node19
\draw [->,solid] (201.44bp,168.47bp) .. controls (186.05bp,147.33bp) and (150.83bp,91.668bp) .. (177.0bp,56.0bp) .. controls (203.53bp,19.833bp) and (259.15bp,11.968bp) .. (302.71bp,10.478bp);
% Node: Node11
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (239.0bp,66.0bp) node {\texttt{Tk::FIJIModalDialog}};
\end{scope}
% Node: Node14
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (208.0bp,178.0bp) node {\texttt{Tk::FIJINetSelection}};
\end{scope}
% Node: Node19
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (320.0bp,10.0bp) node {\texttt{FIJI}};
\end{scope}
% Node: Node25
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (358.0bp,178.0bp) node {\texttt{FIJI::Netlist}};
\end{scope}
% Node: Node30
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (422.0bp,122.0bp) node {\texttt{FIJI::VHDL}};
\end{scope}
% Node: Node22
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (284.0bp,122.0bp) node {\texttt{Tk::FIJIUtils}};
\end{scope}
% Node: Node33
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (424.0bp,10.0bp) node {\texttt{FIJI::ConfigSorted}};
\end{scope}
% Node: Node32
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (424.0bp,66.0bp) node {\texttt{FIJI::Settings}};
\end{scope}
% Node: Node1
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{0.75,0.75,0.75};
\pgfsetfillcolor{fillcol}
\draw (167.0bp,234.0bp) node {\texttt{Tk::FIJISettingsViewer}};
\end{scope}
% Node: Node5
\begin{scope}
\definecolor{strokecol}{rgb}{0.0,0.0,0.0};
\pgfsetstrokecolor{strokecol}
\definecolor{fillcol}{rgb}{1.0,1.0,1.0};
\pgfsetfillcolor{fillcol}
\draw (30.0bp,178.0bp) node {\texttt{FIJI::Utils}};
\end{scope}
%
\end{tikzpicture}
......@@ -18,6 +18,9 @@
\setcounter{page}{1}
% Define doxygen's favorite color for arrows
\definecolor{midnightblue}{rgb}{0.1, 0.1, 0.44}
%%%%% MAIN CONTENT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{content/01-foreword.tex}
\input{content/02-protocol.tex}
......
......@@ -39,7 +39,18 @@ endif
#$(ACR) $(JOB)
$(TEX) $(TEX_MAIN)
content/protocol_host_to_fic.tex: bin/generate_host_to_fic_protocol.sh
# No prerequisites because we want to trigger this rule manually only
content/protocol_host_to_fic.tex:
bin/generate_host_to_fic_protocol.sh > $@
# The following rule converts Doxygen-generated .dot files into tikz-based figures
# Currently used files:
# - content/FIJISettingsViewer_8pm__incl.dot.tex
# - content/Downloader_8pm__incl.dot.tex
# No prerequisites because we want to trigger this rule manually only
content/%.dot.tex:
$(info Preparing file $*.dot for tex)
@bin/remove_undocumented_from_dot.sh ../doxygen/html/$*.dot
@dot2tex -c --figonly ../doxygen/html/$*-converted.dot -o content/$*.dot.tex
.PHONY = clean view all fast
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment