Initial commit
Initial template from overleaf
This commit is contained in:
45
inc/0.titlepage.tex
Normal file
45
inc/0.titlepage.tex
Normal file
@@ -0,0 +1,45 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{titlepage}
|
||||
\setcounter{page}{-1}
|
||||
\begin{center}
|
||||
\includegraphics*[scale=1.3]{img/RPTU_Logo_1c-1.pdf}\\[3ex]
|
||||
|
||||
Department of Electrical and Computer Engineering\\[1.5ex]
|
||||
Microelectronic Systems Design Research Group \\[3ex]
|
||||
|
||||
\vfill
|
||||
\vfill
|
||||
|
||||
\textsc{\Huge Bachelor/Master Thesis}\\[6ex]
|
||||
\centerline{\Large The Title of Yout Topic}
|
||||
\vspace{20pt}
|
||||
\centerline{\Large Should be here}
|
||||
|
||||
\vfill
|
||||
\vfill
|
||||
|
||||
\begin{tabular}{rl}\hline\\
|
||||
Presented: & \quad \today \\[1.5ex]
|
||||
Author: & \quad Max Mustermann (123456) \\[1.5ex]
|
||||
Research Group Chief: & \quad Prof.\,Dr.-Ing.\,~N.~Wehn\\[1.5ex]
|
||||
Tutor: & \quad Dipl.-Ing. M. Jung\\[1.5ex]\\\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\clearpage
|
||||
\pagestyle{empty}
|
||||
\begin{flushleft}
|
||||
\section*{Statement}
|
||||
\vspace{10mm}
|
||||
I declare that this thesis was written solely by myself and exclusively with
|
||||
help of the cited resources.
|
||||
|
||||
\vspace{12pt}
|
||||
Kaiserslautern, \today \\
|
||||
% Kaiserslautern, XXst XXXXXX 2010 \\
|
||||
\vspace{20mm}
|
||||
Max Mustermann
|
||||
\end{flushleft}
|
||||
|
||||
\end{titlepage}
|
||||
|
||||
22
inc/1.introduction.tex
Normal file
22
inc/1.introduction.tex
Normal file
@@ -0,0 +1,22 @@
|
||||
\section{Introduction}
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sit amet ante elit. Etiam vel pharetra orci. Integer mollis auctor ante, non lacinia turpis lacinia eget. Vestibulum in orci ligula, tempor fringilla ipsum. Phasellus scelerisque elementum mauris iaculis euismod. Morbi a neque cursus turpis varius lobortis nec sed lorem. Nullam non nisi purus, eget ullamcorper urna. Proin dignissim, lacus id convallis tristique, metus felis pellentesque purus, at hendrerit lacus turpis eu justo. Quisque semper pretium turpis eu tempus. Nunc vehicula, erat et auctor blandit, elit augue ultrices tortor, id lacinia mi ligula et risus. Praesent mauris massa, porttitor ac rhoncus vitae, porta vitae elit.
|
||||
|
||||
Morbi in quam dolor, nec eleifend turpis. Phasellus consequat scelerisque purus, eget iaculis leo condimentum eu. Curabitur non augue non enim adipiscing interdum a a risus. Morbi commodo magna ultrices nisi adipiscing eu laoreet ante molestie. In hac habitasse platea dictumst. Sed nulla nulla, gravida eu ultricies vitae, venenatis quis dui. Nam cursus lectus eu nisi facilisis tristique. Praesent vulputate neque ut ligula convallis nec consequat enim semper. Nullam at lorem sit amet est rutrum convallis non eu ligula. Proin gravida tincidunt nibh, quis suscipit lacus convallis eget. Aenean id mi in lorem accumsan fermentum. Fusce.
|
||||
\cite{weiser91}
|
||||
|
||||
\begin{listing}[H]
|
||||
\begin{cppcode}
|
||||
static void vTask1( void *pvParameters ); // Prototype for task function
|
||||
|
||||
int main()
|
||||
{
|
||||
xTaskCreate( vTask1, "Task1", 100, NULL, 1, NULL ); // Configure Task
|
||||
vTaskStartScheduler(); // Starting scheduler
|
||||
}
|
||||
\end{cppcode}
|
||||
\caption{Test}
|
||||
\end{listing}
|
||||
|
||||
|
||||
Test test test \abbr{Transaction Level Modeling}{TLM}
|
||||
195
inc/appendix.tex
Normal file
195
inc/appendix.tex
Normal file
@@ -0,0 +1,195 @@
|
||||
\section{Appendix}
|
||||
\label{sec:appendix}
|
||||
|
||||
|
||||
\begin{listing}[H]
|
||||
\begin{perlcode}
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
|
||||
# University of Kaiserslautern 2014
|
||||
# Matthias Jung
|
||||
# Christian Weis
|
||||
# Peter Ehses
|
||||
# programm call: perl error_detecta.pl input output
|
||||
|
||||
my $input = $ARGV[0];
|
||||
my $id = "022804e800";
|
||||
my $pattern = hex("FFFFFFFF"); # data pattern can be changed to AAAAAAAA or 55555555
|
||||
my $errors = 0;
|
||||
my $i = 1;
|
||||
my $addr = 0; # DRAM address in hex
|
||||
my $addrb = 0; # 23 bit in binary
|
||||
my $addroffset = 536870912; # offset for the address in hex 0x20000000
|
||||
my $bank =0; # 2 bits for the bank
|
||||
my $bankshift =21; # shiftoperator
|
||||
my $bankand = 6291456; # 2^22+2^21
|
||||
my $row =0; # 12 bits for the row
|
||||
my $rowshift =9; # shiftoperator
|
||||
my $rowand = 2096640; # 2^20+...+2^9
|
||||
my $column =0; # 9 bits for the column
|
||||
my $columnand = 511; # 2^8+...+2^0
|
||||
|
||||
open(IFH, $input);
|
||||
open(out_file, ">errorout_$ARGV[1]");
|
||||
|
||||
printf out_file ("The following table shows the addresses ");
|
||||
printf out_file ("from the errors in the wideIO SDRAM.\n");
|
||||
printf out_file ("Addresses in binary \t\t\t Addresses in hexadecimal\n");
|
||||
printf out_file ("bank \t row \t\t column \t SDRAM address \t data value\n");
|
||||
|
||||
while(<IFH>)
|
||||
{
|
||||
unless($_ =~ /\[.*\]/ || $_ =~ /$id/)
|
||||
{
|
||||
my $value = $_;
|
||||
chop($value);
|
||||
$value = substr( $value , 2);
|
||||
my $result = sprintf("%0b", (hex($value) ^ $pattern));
|
||||
for(my $j = 0; $j < length($result); $j ++)
|
||||
{
|
||||
if(substr( $result, $j , 1 ) eq "1")
|
||||
{
|
||||
$errors++;
|
||||
$addrb = $i-((ceil($i/11))*3);
|
||||
$addr = $addrb + $addroffset;
|
||||
$bank = ($addrb & $bankand) >> $bankshift;
|
||||
$row = ($addrb & $rowand) >> $rowshift;
|
||||
$column = ($addrb & $columnand);
|
||||
printf out_file ("%02b\t %012b\t %09b\t %#8x\t $value\n", $bank, $row, $column, $addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
close(out_file);
|
||||
print "Errors = ".$errors."\n";
|
||||
close(IFH);
|
||||
\end{perlcode}
|
||||
\caption{Perl script to find errors for data pattern F, A or 5}
|
||||
\label{lis:5af}
|
||||
\end{listing}
|
||||
|
||||
\pagebreak
|
||||
Pagebreak and linebreak has to be done manually with pygmentize, this feature is
|
||||
not yet implemented. Open the appendix.tex file and see the source code
|
||||
afterwards how the pagebreak is done. For that the appendix.tex has to be
|
||||
written with pagebreaks, so that the layout of the pages is done manually.
|
||||
|
||||
Linebreaks are easier to do, just check that the lines are in the box of the pdf
|
||||
file, otherwise make a linebreak yourself.
|
||||
\pagebreak
|
||||
|
||||
%\begin{listing}[H]
|
||||
\begin{minted}[linenos, bgcolor=light-gray, fontsize=\scriptsize]{perl}
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
use Chart::Gnuplot;
|
||||
|
||||
# University of Kaiserslautern 2014
|
||||
# Matthias Jung
|
||||
# Christian Weis
|
||||
# Peter Ehses
|
||||
# call programm: perl plotreffff_0xf.pl dfile1 dfile2 dfile3
|
||||
|
||||
my $i = 0;
|
||||
my $line = 3;
|
||||
my $addr = 0; # DRAM address in hex
|
||||
my $bankb; # 2 bits for the bank
|
||||
my $rowb; # 12 bits for the row
|
||||
my $columnb; # 9 bits for the column
|
||||
my $bank; # banknumber in decimal
|
||||
my $row; # rownumber in decimal
|
||||
my $column; # columnnumber in decimal
|
||||
my $value;
|
||||
my @ytics = [0, 25,50,75,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500];
|
||||
my @xtics = [0,250,500,750,1000,1250,1500,1750,2000,2250,2500,2750,3000,3250,3500,3750,4000];
|
||||
|
||||
# set terminal to svg format
|
||||
my $terminal = 'svg mouse jsdir '.'"http://gnuplot.sourceforge.net/demo_svg"';
|
||||
sub bin2dec {return unpack("N", pack("B32", substr("0" x 32 . shift, -33)));}
|
||||
|
||||
my @row_array;
|
||||
my @column_array;
|
||||
|
||||
foreach my $argnum (0 .. $#ARGV)
|
||||
{
|
||||
open(IFH, $ARGV[$argnum]);
|
||||
$i = 0;
|
||||
while(<IFH>)
|
||||
{
|
||||
chomp;
|
||||
$i++;
|
||||
if ($i > $line)
|
||||
{
|
||||
($bankb, $rowb, $columnb, $addr, $value) = split("\t");
|
||||
$bank = (bin2dec($bankb));
|
||||
$row = (bin2dec($rowb));
|
||||
$column = (bin2dec($columnb));
|
||||
if ($argnum == 0)
|
||||
{
|
||||
push(@{$row_array[$bank]}, $row);
|
||||
push(@{$column_array[$bank]}, $column);
|
||||
}
|
||||
if ($argnum == 1)
|
||||
{
|
||||
push(@{$row_array[$bank+4]}, $row);
|
||||
push(@{$column_array[$bank+4]}, $column);
|
||||
}
|
||||
if ($argnum == 2)
|
||||
{
|
||||
push(@{$row_array[$bank+8]}, $row);
|
||||
push(@{$column_array[$bank+8]}, $column);
|
||||
}
|
||||
}
|
||||
}
|
||||
close(IFH);
|
||||
}
|
||||
for (my $count = 1; $count < 5; $count++)
|
||||
{
|
||||
$bank = $count -1;
|
||||
\end{minted}
|
||||
|
||||
%here is a pagebreak, and the next line of the code is starting with 70, has to be specified with minted like below.
|
||||
\begin{listing}[H]
|
||||
\begin{minted}[linenos, bgcolor=light-gray, fontsize=\scriptsize, firstnumber=70]{perl}
|
||||
my $plot1 = Chart::Gnuplot->new(
|
||||
terminal => $terminal, output => "plot_ref202ms_0xf_b_$count.svg",
|
||||
title => "Errors channel 3 of SDRAM, bank $count, data pattern 0xffffffff and refresh 202 ms",
|
||||
imagesize => '1024, 768', xlabel => "row address", ylabel => "column address", yrange=>[0, 511],
|
||||
xrange=>[0, 4095], ytics => {labels => @ytics}, xtics => {labels => @xtics},
|
||||
legend => {position => "outside center bottom", order =>"horizontal reverse",
|
||||
border => "on", align => "left"}
|
||||
);
|
||||
my $dataSet1 = Chart::Gnuplot::DataSet->new(
|
||||
xdata => \@{$row_array[$bank]}, ydata => \@{$column_array[$bank]},
|
||||
color => "blue", pointtype => 6, pointsize => 1.75, width => 2,
|
||||
title => "95 degree C"
|
||||
);
|
||||
my $dataSet2 = Chart::Gnuplot::DataSet->new(
|
||||
xdata => \@{$row_array[$bank+4]}, ydata => \@{$column_array[$bank+4]},
|
||||
color => "red", pointtype => 8, pointsize => 1.25, width => 2,
|
||||
title => "100 degree C"
|
||||
);
|
||||
my $dataSet3 = Chart::Gnuplot::DataSet->new(
|
||||
xdata => \@{$row_array[$bank+8]}, ydata => \@{$column_array[$bank+8]},
|
||||
color => "dark-green", pointtype => 10, pointsize => 1.25, width => 2,
|
||||
title => "105 degree C"
|
||||
);
|
||||
|
||||
if (@{$row_array[$bank]}){$plot1->plot2d($dataSet1, $dataSet2, $dataSet3);}
|
||||
if (!@{$row_array[$bank]}){$plot1->plot2d($dataSet2, $dataSet3);}
|
||||
if (!@{$row_array[$bank]} && !@{$row_array[$bank+4]}){$plot1->plot2d($dataSet3);}
|
||||
}
|
||||
\end{minted}
|
||||
\caption{Perl script for scatter plot of different refresh periods}
|
||||
\label{lis:plotref}
|
||||
\end{listing}
|
||||
|
||||
Reference in New Issue
Block a user