Update on Overleaf.

This commit is contained in:
Anonymous
2024-08-13 21:24:29 +00:00
committed by node
commit fb29084ddd
45 changed files with 33052 additions and 0 deletions

3081
ACM-Reference-Format.bst Normal file

File diff suppressed because it is too large Load Diff

BIN
DSC03604.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 MiB

View File

@@ -0,0 +1,12 @@
a, b, c, d, e, f, g, h, i, j, k, l, m
64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
512, 0, 0, 0, 197, 0, 0, 0, 37, 0, 0, 7, 537
1024, 0, 0, 1219.6, 63662.8, 0, 0, 296, 14797, 0, 0, 3309, 174612
2048, 0, 10.6, 178778.2, 4201821.4, 0, 0, 60968, 1381534, 0, 32, 437578, 9682786
4096, 0, 4463.8, 7990948.8, 81014443, 0, 1010, 2802215, 40692346, 0, 10051, 14556545, 160355995
8192, 0, 576033.8, 149843319.2, 402960591.6, 0, 211070, 92538587, 267494307, 0, 1363570, 220701740, 607659926
16384, 97, 20729625.2, 511684176.2, 927719668.2, 28, 9566085, 364291044, 689077437, 190, 46289430, 735470538, 1230207246
32768, 18950.8, 198052673.6, 1107609324, 1704095420, 6124, 118852829, 845828644, 1314515184, 34429, 314298304, 1435614677, 2148804925
65536, 1211377.6, 622831861.2, 1758018636, 3142261674, 507844, 467168234, 1557315142, 2480425341, 1990740, 837902464, 2094151660, 3730160064
1 a b c d e f g h i j k l m
2 64 0 0 0 0 0 0 0 0 0 0 0 0
3 128 0 0 0 0 0 0 0 0 0 0 0 0
4 256 0 0 0 0 0 0 0 0 0 0 0 0
5 512 0 0 0 197 0 0 0 37 0 0 7 537
6 1024 0 0 1219.6 63662.8 0 0 296 14797 0 0 3309 174612
7 2048 0 10.6 178778.2 4201821.4 0 0 60968 1381534 0 32 437578 9682786
8 4096 0 4463.8 7990948.8 81014443 0 1010 2802215 40692346 0 10051 14556545 160355995
9 8192 0 576033.8 149843319.2 402960591.6 0 211070 92538587 267494307 0 1363570 220701740 607659926
10 16384 97 20729625.2 511684176.2 927719668.2 28 9566085 364291044 689077437 190 46289430 735470538 1230207246
11 32768 18950.8 198052673.6 1107609324 1704095420 6124 118852829 845828644 1314515184 34429 314298304 1435614677 2148804925
12 65536 1211377.6 622831861.2 1758018636 3142261674 507844 467168234 1557315142 2480425341 1990740 837902464 2094151660 3730160064

95
acmart.bib Normal file
View File

@@ -0,0 +1,95 @@
@Misc{TeXFAQ,
title = {{UK} List of {\TeX} Frequently Asked Questions},
author = {{UK \TeX{} Users Group}},
year = 2019,
howpublished = {\url{https://texfaq.org}}
}
@Manual{Downes04:amsart,
title = {The \textsf{amsart}, \textsf{amsproc}, and
\textsf{amsbook} document~classes},
author = {Michael Downes and Barbara Beeton},
organization = {American Mathematical Society},
year = 2004,
month = aug,
note = {\url{http://www.ctan.org/pkg/amslatex}}
}
@Manual{Fiorio15,
title = {{a}lgorithm2e.sty---package for algorithms},
author = {Cristophe Fiorio},
year = 2015,
month = oct,
note = {\url{http://www.ctan.org/pkg/algorithm2e}}
}
@Manual{Brito09,
title = {The algorithms bundle},
author = {Rog\'erio Brito},
year = 2009,
month = aug,
note = {\url{http://www.ctan.org/pkg/algorithms}}
}
@Manual{Heinz15,
title = {The Listings Package},
author = {Carsten Heinz and Brooks Moses and Jobst Hoffmann},
year = 2015,
month = jun,
note = {\url{http://www.ctan.org/pkg/listings}}
}
@Manual{Fear05,
title = {Publication quality tables in {\LaTeX}},
author = {Simon Fear},
year = 2005,
month = apr,
note = {\url{http://www.ctan.org/pkg/booktabs}}
}
@Manual{ACMIdentityStandards,
title = {{ACM} Visual Identity Standards},
organization = {Association for Computing Machinery},
year = 2007,
note = {\url{http://identitystandards.acm.org}}
}
@Manual{Sommerfeldt13:Subcaption,
title = {The subcaption package},
author = {Axel Sommerfeldt},
year = 2013,
month = apr,
note = {\url{http://www.ctan.org/pkg/subcaption}}
}
@Manual{Nomencl,
title = {A package to create a nomenclature},
author = {Boris Veytsman and Bern Schandl and Lee Netherton
and C. V. Radhakrishnan},
year = 2005,
month = sep,
note = {\url{http://www.ctan.org/pkg/nomencl}}
}
@Manual{Talbot16:Glossaries,
title = {User Manual for glossaries.sty v4.44},
author = {Nicola L. C. Talbot},
year = 2019,
month = dec,
note = {\url{http://www.ctan.org/pkg/glossaries}}
}
@Manual{Carlisle04:Textcase,
title = {The \textsl{textcase} package},
author = {David Carlisle},
month = oct,
year = 2004,
note = {\url{http://www.ctan.org/pkg/textcase}}
}
@Manual{Braams22:Babel,
title = {Babel},
author = {Johannes L. Braams and Javier Bezos},
year = 2022,
note = {\url{http://www.ctan.org/pkg/babel}}}

3530
acmart.cls Normal file

File diff suppressed because it is too large Load Diff

8666
acmart.dtx Normal file

File diff suppressed because it is too large Load Diff

30
acmart.ins Normal file
View File

@@ -0,0 +1,30 @@
%
% Doctrip file for acmart
% This file is in public domain
% $Id: acmart.ins,v 1.1 2015/11/23 22:42:55 boris Exp $
%
\def\batchfile{acmart.ins}
\input docstrip
\keepsilent
\showprogress
\askforoverwritefalse
\generate{%
\file{acmart.cls}{\from{acmart.dtx}{class}}
}
\obeyspaces
\Msg{*****************************************************}%
\Msg{* Congratulations! You successfully generated the *}%
\Msg{* acmart package. *}%
\Msg{* *}%
\Msg{* Please move the file acmart.cls to where LaTeX *}%
\Msg{* files are stored in your system. The manual is *}%
\Msg{* acmart.pdf. *}%
\Msg{* *}%
\Msg{* The package is released under LPPL *}%
\Msg{* *}%
\Msg{* Happy TeXing! *}%
\Msg{*****************************************************}%

900
acmauthoryear.bbx Normal file
View File

@@ -0,0 +1,900 @@
\ProvidesFile{acmauthoryear.bbx}[2022-02-14 v0.1 biblatex bibliography style]
% Inherit a default style
\RequireBibliographyStyle{authoryear-comp}
%%% New command definitions from trad-standard.bbx
\newcommand*{\newcommaunit}{\@ifstar\newcommaunitStar\newcommaunitNoStar}
\newcommand*{\newcommaunitStar}{\setunit*{\addcomma\space}}
\newcommand*{\newcommaunitNoStar}{\setunit{\addcomma\space}}
%%% Forward compatibility for date+extradate
\ifcsundef{ifbibmacroundef}{
\ifcsundef{abx@macro@date+extradate}{ %%% For really really old biblatex that miss \ifbibmacroundef
\blx@warning{bibmacro 'date+extradate' is missing.\MessageBreak
Please consider updating your version of biblatex.\MessageBreak
Using 'date+extrayear' instead}%
\providebibmacro*{date+extradate}{\usebibmacro{date+extrayear}}
}{}
}
{
\ifbibmacroundef{date+extradate}{
\blx@warning{bibmacro 'date+extradate' is missing.\MessageBreak
Please consider updating your version of biblatex.\MessageBreak
Using 'date+extrayear' instead}%
\providebibmacro*{date+extradate}{\usebibmacro{date+extrayear}}
}{}
}
%%% Localisation strings for ACM
\DefineBibliographyStrings{american}{%
mathesis = {Master's thesis},
phdthesis = {Ph\adddot{}D\adddotspace Dissertation},
editor = {(Ed\adddot)},
editors = {(Eds\adddot)},
edition = {ed\adddot},
}
%%% Formatting for fields
%\DeclareFieldFormat
% [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
% {title}{#1}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{numpages}{#1 pages}
\DeclareFieldFormat{number}{#1}
\DeclareFieldFormat{articleno}{Article #1}
\DeclareFieldFormat{key}{#1}
\DeclareFieldFormat{urldate}{Retrieved\space{}#1\space{}from}
\DeclareFieldFormat{lastaccessed}{Retrieved\space{}#1\space{}from}
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{edition}{%
\printtext[parens]{\ifinteger{#1}
{\mkbibordedition{#1}~\bibstring{edition}}
{#1\isdot~\bibstring{edition}}}}
% Handle urls field containing 'and' separated list of URLs
% https://github.com/plk/biblatex/issues/229
\DeclareListFormat{urls}{%
\url{#1}%
\ifthenelse{\value{listcount}<\value{liststop}}
{\addcomma\space}
{}}
\renewbibmacro*{url}{\iffieldundef{url}{\printlist{urls}}{\printfield{url}}}
%%% Bibmacro definitions
\renewbibmacro*{translator+others}{%
\ifboolexpr{
test \ifusetranslator
and
not test {\ifnameundef{translator}}
}
{\printnames{translator}%
\setunit{\addcomma\space}%
\usebibmacro{translator+othersstrg}%
\clearname{translator}}
{\printfield{key}}}
\newbibmacro*{year}{%
\iffieldundef{year}%
{\printtext{[n.\ d.]}}%
{\printfield{year}}%
}
\renewbibmacro*{date}{\printtext[parens]{\printdate}}
\renewbibmacro*{url+urldate}{\iffieldundef{urlyear}
{\iffieldundef{lastaccessed}
{}
{\printfield{lastaccessed}%
\setunit*{\addspace}}%
}
{\usebibmacro{urldate}%
\setunit*{\addspace}}%
\usebibmacro{url}%
}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addcomma\space}%
\iffieldundef{series}
{}
{\newunit%
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+date+pages+eid}%
\newcommaunit%
% \setunit{\addspace}%
\usebibmacro{issue-issue}%
\setunit*{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\newbibmacro*{volume+number+date+pages+eid}{%
\printfield{volume}%
\setunit*{\addcomma\space}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\setunit{\addcomma\space}
\usebibmacro{date-ifmonth}
\setunit{\addcomma\space}%
\iffieldundef{pages}%
{\printfield{numpages}}%
{\printfield{pages}}%
\newcommaunit%
\printfield{eid}}%
\renewbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
\iffieldundef{pages}%
{\printfield{numpages}}%
{\printfield{pages}}%
\newunit}
\renewbibmacro*{editor+others}{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\printnames{editor}%
\setunit{\addcomma\space}%
\usebibmacro{editor+othersstrg}%
\clearname{editor}}
{\iflistundef{organization}{}{\printlist{organization}}}
\usebibmacro{date+extradate}
}
\newbibmacro*{issue-issue}{%
\iffieldundef{issue}%
{}%
{\printfield{issue}%
\setunit*{\addcomma\space}%
\usebibmacro{date-ifmonth}%
}%
\newunit}
\newbibmacro*{maintitle+booktitle+series+number}{%
\iffieldundef{maintitle}
{}
{\usebibmacro{maintitle}%
\newunit\newblock
\iffieldundef{volume}
{}
{\printfield{volume}%
\printfield{part}%
\setunit{\addcolon\space}}}%
\usebibmacro{booktitle}%
\setunit*{\addspace}
\printfield[parens]{series}%
\setunit*{\addspace}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\newunit
}
\renewbibmacro*{booktitle}{%
\ifboolexpr{
test {\iffieldundef{booktitle}}
and
test {\iffieldundef{booksubtitle}}
}
{}
{\printtext[booktitle]{%
\printfield[titlecase]{booktitle}%
\iffieldundef{booksubtitle}{}{
\setunit{\subtitlepunct}%
\printfield[titlecase]{booksubtitle}}%
}%
}%
\printfield{booktitleaddon}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addcomma\space}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\setunit{\addcomma\space}%
\printfield{eid}}
\renewbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\printlist{location}%
\setunit*{\addcomma\space}%
\usebibmacro{date-ifmonth}%
\newunit}
\newbibmacro{date-ifmonth}{%
\iffieldundef{month}{}{%
\usebibmacro{date}
}%
}
\renewbibmacro*{institution+location+date}{%
\printlist{school}%
\setunit*{\addcomma\space}%
\printlist{institution}%
\setunit*{\addcomma\space}%
\printlist{location}%
\setunit*{\addcomma\space}%
\usebibmacro{date-ifmonth}%
\newunit}
\renewbibmacro*{periodical}{%
\iffieldundef{title}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}%
\newunit%
\usebibmacro{journal}}
\renewbibmacro*{issue+date}{%
\iffieldundef{issue}
{\usebibmacro{date}}
{\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}%
\newunit}
\renewbibmacro*{title+issuetitle}{%
\usebibmacro{periodical}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\printfield{volume}%
\setunit*{\addcomma\space}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\setunit{\addcomma\space}%
\printfield{eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\renewbibmacro*{doi+eprint+url}{%
\iftoggle{bbx:url}
{\iffieldundef{doi}{
\usebibmacro{url+urldate}
}{\iffieldundef{distinctURL}
{}
{\usebibmacro{url+urldate}}
}
}%
\newunit\newblock
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\iftoggle{bbx:doi}
{\printfield{doi}}
{}}
%%% Definitions for drivers (alphabetical)
\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock%
\usebibmacro{title}%
\newunit%
\printlist{language}%
\newunit\newblock%
\usebibmacro{byauthor}%
\newunit\newblock%
\usebibmacro{bytranslator+others}%
\newunit\newblock%
\printfield{version}%
\newunit\newblock%
\usebibmacro{journal+issuetitle}%
\newunit%
\usebibmacro{byeditor+others}%
\newunit%
\printfield{note}%
\newunit\newblock%
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock%
\usebibmacro{doi+eprint+url}%
\newunit\newblock%
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock%
\usebibmacro{related}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{maintitle+title}%
\newunit%
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\usebibmacro{series+number}%
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\newunit\newblock
\printfield{volumes}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inbook}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\iffieldundef{author}%
{\usebibmacro{byeditor+others}}%
{\usebibmacro{author/translator+others}}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
% \usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\iffieldundef{author}{}%if undef then we already printed editor
{\usebibmacro{byeditor+others}}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{incollection}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle+series+number}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{manual}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor}%
\newunit\newblock
\printfield{edition}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{type}%
\newunit
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{misc}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{howpublished}%
\newunit\newblock
\printfield{type}%
\newunit
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\usebibmacro{organization+location+date}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{online}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit\newblock
\usebibmacro{date-ifmonth}%
\newunit\newblock
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareFieldFormat[patent]{number}{Patent No.~#1}
\DeclareBibliographyDriver{patent}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{date}%
\newunit\newblock
\printfield{type}%
\setunit*{\addspace}%
\printfield{number}%
\iflistundef{location}
{}
{\setunit*{\addspace}%
\printtext[parens]{%
\printlist[][-\value{listtotal}]{location}}}%
\newunit\newblock
\usebibmacro{byholder}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{periodical}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{editor}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title+issuetitle}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byeditor}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{issn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{report}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\printfield{type}%
\setunit*{\addspace}%
\printfield{number}%
\newunit\newblock
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\usebibmacro{institution+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isrn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{thesis}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\printfield{type}%
\newunit
\usebibmacro{institution+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
%
% Include support for software entries
%
\blx@inputonce{software.bbx}{biblatex style for software}{}{}{}{}
%
% Handle ACM specific ArtifactSoftware entry exactly as the software entry (a soft alias will not work)
%
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
\step[typesource=artifactsoftware,typetarget=software]
\step[typesource=artifactdataset,typetarget=dataset]
}
}
}
%%% Compatibility with ACM bibtex formatting
%
% Show given name first in the reference list
%
\DeclareNameAlias{sortname}{given-family}
%
% Produce a bibliography with small font size
%
\renewcommand*{\bibfont}{\bibliofont\footnotesize}
%
% Remove parentheses from date+extradate
%
\RequirePackage{xpatch}
\xpatchbibmacro{date+extradate}{%
\printtext[parens]%
}{%
\newblock\setunit*{.\space}%
\printtext%
}{}{}
%%% Set option values for ACM style
\ExecuteBibliographyOptions{
dashed=false, % Do not use dashes for bibliography items with the same set of authors
labeldate=year,
abbreviate=true,
dateabbrev=true,
isbn=true,
doi=true,
urldate=comp,
url=true,
maxbibnames=9,
maxcitenames=2,
backref=false,
sorting=nty,
halid=true,
swhid=true,
swlabels=true,
vcs=true,
license=false,
language=american
}

219
acmauthoryear.cbx Normal file
View File

@@ -0,0 +1,219 @@
\ProvidesFile{acmauthoryear.cbx}[2022-02-14 v0.1]
\RequireCitationStyle{authoryear-comp}
\RequirePackage{xpatch}
%
% Hyperlink citations like acmart natbib implementation
%
% From https://tex.stackexchange.com/a/27615/133551
% Combine label and labelyear links
\xpatchbibmacro{cite}
{\usebibmacro{cite:label}%
\setunit{\printdelim{nonameyeardelim}}%
\usebibmacro{cite:labeldate+extradate}}
{\printtext[bibhyperref]{%
\DeclareFieldAlias{bibhyperref}{default}%
\usebibmacro{cite:label}%
\setunit{\printdelim{nonameyeardelim}}%
\usebibmacro{cite:labeldate+extradate}}}
{}
{\PackageWarning{biblatex-patch}
{Failed to patch cite bibmacro}}
% Include labelname in labelyear link
\xpatchbibmacro{cite}
{\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}%
\usebibmacro{cite:labeldate+extradate}}
{\printtext[bibhyperref]{%
\DeclareFieldAlias{bibhyperref}{default}%
\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}%
\usebibmacro{cite:labeldate+extradate}}}
{}
{\PackageWarning{biblatex-patch}
{Failed to patch cite bibmacro}}
\renewbibmacro*{textcite}{%
\iffieldequals{namehash}{\cbx@lasthash}
{\iffieldundef{shorthand}
{\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND
\(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
{\setunit{\addcomma}%
\usebibmacro{cite:extradate}}
{\setunit{\compcitedelim}%
\usebibmacro{cite:labeldate+extradate}%
\savefield{labelyear}{\cbx@lastyear}}}
{\setunit{\compcitedelim}%
\usebibmacro{cite:shorthand}%
\global\undef\cbx@lastyear}}
{\ifnameundef{labelname}
{\iffieldundef{shorthand}
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
\printdelim{nonameyeardelim}\bibopenbracket}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{cite:labeldate+extradate}}
{\usebibmacro{cite:shorthand}}}
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
\printdelim{nameyeardelim}\bibopenbracket}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\iffieldundef{shorthand}
{\iffieldundef{labelyear}
{\usebibmacro{cite:label}}
{\usebibmacro{cite:labeldate+extradate}}%
\savefield{labelyear}{\cbx@lastyear}}
{\usebibmacro{cite:shorthand}%
\global\undef\cbx@lastyear}}%
\stepcounter{textcitecount}%
\savefield{namehash}{\cbx@lasthash}}%
\setunit{%
\ifbool{cbx:parens}
{\bibclosebracket\global\boolfalse{cbx:parens}}
{}%
\textcitedelim}}
\xpatchbibmacro{textcite}
{\printnames{labelname}}
{\printtext[bibhyperref]{\printnames{labelname}}}
{}
{\PackageWarning{biblatex-patch}
{Failed to patch textcite bibmacro}}
\renewbibmacro*{textcite:postnote}{%
\usebibmacro{postnote}%
\ifthenelse{\value{multicitecount}=\value{multicitetotal}}
{\setunit{}%
\printtext{%
\ifbool{cbx:parens}
{\bibclosebracket\global\boolfalse{cbx:parens}}
{}}}
{\setunit{%
\ifbool{cbx:parens}
{\bibclosebracket\global\boolfalse{cbx:parens}}
{}%
\textcitedelim}}}
% NEW
\newbibmacro*{citeauthor}{%
\ifnameundef{labelname}
{\iffieldundef{shorthand}
{\printtext[bibhyperref]{%
\usebibmacro{cite:label}}%
\setunit{%
\global\booltrue{cbx:parens}%
\printdelim{nonameyeardelim}\bibopenbracket}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\printtext[bibhyperref]{\usebibmacro{cite:labeldate+extradate}}}
{\printtext[bibhyperref]{\usebibmacro{cite:shorthand}}}}
\printtext[bibhyperref]{\printnames{labelname}}}
%
% Put brackets around citations
%
\DeclareCiteCommand{\cite}[\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\cite}[\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{citeyear}}
{}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\parencite}[\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\parencite}[\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{citeyear}}
{}
{\usebibmacro{postnote}}
\DeclareMultiCiteCommand{\parencites}[\mkbibbrackets]{\parencite}
{\setunit{\multicitedelim}}
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\footcitetext}[\mkbibfootnotetext]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibbrackets\mkbibfootnote]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{}
{\usebibmacro{postnote}}
\DeclareMultiCiteCommand{\smartcites}[\iffootnote\mkbibbrackets\mkbibfootnote]
{\smartcite}{\setunit{\multicitedelim}}
\DeclareCiteCommand{\citeauthor}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{citeauthor}}
{}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeyear}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{citeyear}}
{}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeyearpar}[\mkbibbrackets]
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{citeyear}}
{}
{\usebibmacro{postnote}}
%
% Provide aliases for natbib-compatible commands
%
\newcommand*{\citep}{\parencite}
\newcommand*{\citet}{\textcite}
% add others here
\endinput

33
acmdatamodel.dbx Normal file
View File

@@ -0,0 +1,33 @@
% Teach biblatex about numpages field
\DeclareDatamodelFields[type=field, datatype=literal]{numpages}
\DeclareDatamodelEntryfields{numpages}
% Teach biblatex about articleno field
\DeclareDatamodelFields[type=field, datatype=literal]{articleno}
\DeclareDatamodelEntryfields{articleno}
% Teach biblatex about urls field
\DeclareDatamodelFields[type=list, datatype=uri]{urls}
\DeclareDatamodelEntryfields{urls}
% Teach biblatex about school field
\DeclareDatamodelFields[type=list, datatype=literal]{school}
\DeclareDatamodelEntryfields[thesis]{school}
\DeclareDatamodelFields[type=field, datatype=literal]{key}
\DeclareDatamodelEntryfields{key}
% Teach biblatex about lastaccessed field
\DeclareDatamodelFields[type=field,datatype=literal]{lastaccessed}
\DeclareDatamodelEntryfields{lastaccessed}
% Teach biblatex about distincturl field
\DeclareDatamodelFields[type=field, datatype=literal]{distinctURL}
\DeclareDatamodelEntryfields{distinctURL}
%
% include software data model from biblatex-software
%
\blx@inputonce{software.dbx}{biblatex data model extension for software}{}{}{}{}

885
acmnumeric.bbx Normal file
View File

@@ -0,0 +1,885 @@
\ProvidesFile{acmnumeric.bbx}[2017-09-27 v0.1 biblatex bibliography style]
% Inherit a default style
\RequireBibliographyStyle{trad-plain}
%%% Localisation strings for ACM
\DefineBibliographyStrings{american}{%
mathesis = {Master's thesis},
phdthesis = {Ph\adddot{}D\adddotspace Dissertation},
editor = {(Ed\adddot)},
editors = {(Eds\adddot)},
edition = {ed\adddot},
}
%%% Formatting for fields
%\DeclareFieldFormat
% [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
% {title}{#1}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{numpages}{#1 pages}
\DeclareFieldFormat{number}{#1}
\DeclareFieldFormat{articleno}{Article #1}
\DeclareFieldFormat{key}{#1}
\DeclareFieldFormat{urldate}{Retrieved\space{}#1\space{}from}
\DeclareFieldFormat{lastaccessed}{Retrieved\space{}#1\space{}from}
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat{edition}{%
\printtext[parens]{\ifinteger{#1}
{\mkbibordedition{#1}~\bibstring{edition}}
{#1\isdot~\bibstring{edition}}}}
% Handle urls field containing 'and' separated list of URLs
% https://github.com/plk/biblatex/issues/229
\DeclareListFormat{urls}{%
\url{#1}%
\ifthenelse{\value{listcount}<\value{liststop}}
{\addcomma\space}
{}}
\renewbibmacro*{url}{\iffieldundef{url}{\printlist{urls}}{\printfield{url}}}
%%% Bibmacro definitions
\renewbibmacro*{translator+others}{%
\ifboolexpr{
test \ifusetranslator
and
not test {\ifnameundef{translator}}
}
{\printnames{translator}%
\setunit{\addcomma\space}%
\usebibmacro{translator+othersstrg}%
\clearname{translator}}
{\printfield{key}}}
\newbibmacro*{year}{%
\iffieldundef{year}%
{\printtext{[n.\ d.]}}%
{\printfield{year}}%
}
\renewbibmacro*{date}{\printtext[parens]{\printdate}}
\renewbibmacro*{url+urldate}{\iffieldundef{urlyear}
{\iffieldundef{lastaccessed}
{}
{\printfield{lastaccessed}%
\setunit*{\addspace}}%
}
{\usebibmacro{urldate}%
\setunit*{\addspace}}%
\usebibmacro{url}%
}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addcomma\space}%
\iffieldundef{series}
{}
{\newunit%
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+date+pages+eid}%
\newcommaunit%
% \setunit{\addspace}%
\usebibmacro{issue-issue}%
\setunit*{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\newbibmacro*{volume+number+date+pages+eid}{%
\printfield{volume}%
\setunit*{\addcomma\space}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\setunit{\addcomma\space}
\usebibmacro{date-ifmonth}
\setunit{\addcomma\space}%
\iffieldundef{pages}%
{\printfield{numpages}}%
{\printfield{pages}}%
\newcommaunit%
\printfield{eid}}%
\renewbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
\iffieldundef{pages}%
{\printfield{numpages}}%
{\printfield{pages}}%
\newunit}
\renewbibmacro*{editor+others}{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\printnames{editor}%
\setunit{\addcomma\space}%
\usebibmacro{editor+othersstrg}%
\clearname{editor}}
{\iflistundef{organization}{}{\printlist{organization}}}}
\newbibmacro*{issue-issue}{%
\iffieldundef{issue}%
{}%
{\printfield{issue}%
\setunit*{\addcomma\space}%
\usebibmacro{date-ifmonth}%
}%
\newunit}
\newbibmacro*{maintitle+booktitle+series+number}{%
\iffieldundef{maintitle}
{}
{\usebibmacro{maintitle}%
\newunit\newblock
\iffieldundef{volume}
{}
{\printfield{volume}%
\printfield{part}%
\setunit{\addcolon\space}}}%
\usebibmacro{booktitle}%
\setunit*{\addspace}
\printfield[parens]{series}%
\setunit*{\addspace}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\newunit
}
\renewbibmacro*{booktitle}{%
\ifboolexpr{
test {\iffieldundef{booktitle}}
and
test {\iffieldundef{booksubtitle}}
}
{}
{\printtext[booktitle]{%
\printfield[titlecase]{booktitle}%
\iffieldundef{booksubtitle}{}{
\setunit{\subtitlepunct}%
\printfield[titlecase]{booksubtitle}}%
}%
}%
\printfield{booktitleaddon}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addcomma\space}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\setunit{\addcomma\space}%
\printfield{eid}}
\renewbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\printlist{location}%
\setunit*{\addcomma\space}%
\usebibmacro{date-ifmonth}%
\newunit}
\newbibmacro{date-ifmonth}{%
\iffieldundef{month}{}{%
\usebibmacro{date}
}%
}
\renewbibmacro*{institution+location+date}{%
\printlist{school}%
\setunit*{\addcomma\space}%
\printlist{institution}%
\setunit*{\addcomma\space}%
\printlist{location}%
\setunit*{\addcomma\space}%
\usebibmacro{date-ifmonth}%
\newunit}
\renewbibmacro*{periodical}{%
\iffieldundef{title}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}}%
\newunit%
\usebibmacro{journal}}
\renewbibmacro*{issue+date}{%
\iffieldundef{issue}
{\usebibmacro{date}}
{\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}%
\newunit}
\renewbibmacro*{title+issuetitle}{%
\usebibmacro{periodical}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\printfield{volume}%
\setunit*{\addcomma\space}%
\printfield{number}%
\setunit*{\addcomma\space}%
\printfield{articleno}
\setunit{\addcomma\space}%
\printfield{eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\renewbibmacro*{doi+eprint+url}{%
\iftoggle{bbx:url}
{\iffieldundef{doi}{
\usebibmacro{url+urldate}
}{\iffieldundef{distinctURL}
{}
{\usebibmacro{url+urldate}}
}
}%
\newunit\newblock
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\iftoggle{bbx:doi}
{\printfield{doi}}
{}}
%%% Definitions for drivers (alphabetical)
\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock%
\usebibmacro{year}%
\newunit%
\usebibmacro{title}%
\newunit%
\printlist{language}%
\newunit\newblock%
\usebibmacro{byauthor}%
\newunit\newblock%
\usebibmacro{bytranslator+others}%
\newunit\newblock%
\printfield{version}%
\newunit\newblock%
\usebibmacro{journal+issuetitle}%
\newunit%
\usebibmacro{byeditor+others}%
\newunit%
\printfield{note}%
\newunit\newblock%
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock%
\usebibmacro{doi+eprint+url}%
\newunit\newblock%
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock%
\usebibmacro{related}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}%
\newunit%
\usebibmacro{maintitle+title}%
\newunit%
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\usebibmacro{series+number}%
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\newunit\newblock
\printfield{volumes}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inbook}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\iffieldundef{author}%
{\usebibmacro{byeditor+others}}%
{\usebibmacro{author/translator+others}}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
% \usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\iffieldundef{author}{}%if undef then we already printed editor
{\usebibmacro{byeditor+others}}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{incollection}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle+series+number}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{manual}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor}%
\newunit\newblock
\printfield{edition}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{type}%
\newunit
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{misc}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{howpublished}%
\newunit\newblock
\printfield{type}%
\newunit
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\usebibmacro{organization+location+date}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{online}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit\newblock
\usebibmacro{date-ifmonth}%
\newunit\newblock
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareFieldFormat[patent]{number}{Patent No.~#1}
\DeclareBibliographyDriver{patent}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}%
\newunit
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{date}%
\newunit\newblock
\printfield{type}%
\setunit*{\addspace}%
\printfield{number}%
\iflistundef{location}
{}
{\setunit*{\addspace}%
\printtext[parens]{%
\printlist[][-\value{listtotal}]{location}}}%
\newunit\newblock
\usebibmacro{byholder}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{periodical}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{editor}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit
\usebibmacro{title+issuetitle}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byeditor}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{issn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{report}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\printfield{type}%
\setunit*{\addspace}%
\printfield{number}%
\newunit\newblock
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\usebibmacro{institution+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isrn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{thesis}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{year}
\newunit
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\printfield{type}%
\newunit
\usebibmacro{institution+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
%
% Include support for software entries
%
\blx@inputonce{software.bbx}{biblatex style for software}{}{}{}{}
%
% Handle ACM specific ArtifactSoftware entry exactly as the software entry (a soft alias will not work)
%
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
\step[typesource=artifactsoftware,typetarget=software]
\step[typesource=artifactdataset,typetarget=dataset]
}
}
}
%
% Show given name first in the reference list
%
\DeclareNameAlias{sortname}{given-family}
%
% Produce a bibliography with small font size
%
\renewcommand*{\bibfont}{\bibliofont\footnotesize}
%%% Set option values for ACM style
\ExecuteBibliographyOptions{
labeldate=year,
abbreviate=true,
dateabbrev=true,
isbn=true,
doi=true,
urldate=comp,
url=true,
maxbibnames=9,
maxcitenames=2,
backref=false,
sorting=nty,
halid=true,
swhid=true,
swlabels=true,
vcs=true,
license=false,
language=american
}

5
acmnumeric.cbx Normal file
View File

@@ -0,0 +1,5 @@
\ProvidesFile{acmnumeric.cbx}[2017-09-27 v0.1]
\RequireCitationStyle{numeric}
\endinput

BIN
block_diagram.pdf Normal file

Binary file not shown.

5542
ce.bib Normal file

File diff suppressed because it is too large Load Diff

BIN
layout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 KiB

503
main.tex Normal file
View File

@@ -0,0 +1,503 @@
\documentclass[sigconf]{acmart}
\usepackage{tikz, pgfplots}
\usepackage{siunitx}
\pgfplotsset{compat=1.18}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tabularray}
\usepackage{todonotes}
\usepackage{csquotes}
\AtBeginDocument{%
\providecommand\BibTeX{{%
Bib\TeX}}}
\copyrightyear{2023}
\acmYear{2023}
\setcopyright{acmlicensed}\acmConference[MEMSYS '23]{The International Symposium on Memory Systems}{October 2--5, 2023}{Alexandria, VA, USA}
\acmBooktitle{The International Symposium on Memory Systems (MEMSYS '23), October 2--5, 2023, Alexandria, VA, USA}
\acmPrice{15.00}
\acmDOI{10.1145/3631882.3631899}
\acmISBN{979-8-4007-1644-7/23/10}
\begin{document}
\title{A Precise Measurement Platform for LPDDR4 Memories}
\author{Johannes Feldmann}
\orcid{0009-0007-8989-7510}
\email{j.feldmann@rptu.de}
\affiliation{%
\institution{University of Kaiserslautern-Landau}
\city{Kaiserslautern}
\country{Germany}
}
\author{Lukas Steiner}
\orcid{0000-0003-2677-6475}
\email{lukas.steiner@rptu.de}
\affiliation{%
\institution{University of Kaiserslautern-Landau}
\city{Kaiserslautern}
\country{Germany}
}
\author{Derek Christ}
\orcid{0009-0005-4234-6362}
\email{derek.christ@iese.fraunhofer.de}
\affiliation{%
\institution{Fraunhofer IESE}
\city{Kaiserslautern}
\country{Germany}
}
\author{Thomas Psota}
\orcid{0009-0009-3368-5396}
\email{thomas.psota@iese.fraunhofer.de}
\affiliation{%
\institution{Fraunhofer IESE}
\city{Kaiserslautern}
\country{Germany}
}
\author{Matthias Jung}
\orcid{0000-0003-0036-2143}
\email{m.jung@uni-wuerzburg.de}
\affiliation{%
\institution{JMU Würzburg}
\city{Würzburg}
\country{Germany}
}
\author{Norbert Wehn}
\orcid{0000-0002-9010-086X}
\email{norbert.wehn@rptu.de}
\affiliation{%
\institution{University of Kaiserslautern-Landau}
\city{Kaiserslautern}
\country{Germany}
}
\renewcommand{\shortauthors}{Feldmann and Steiner et al.}
\begin{abstract}
LPDDR4, the most widely used low-power DRAM standard in the industry, plays a crucial role in modern system design. Understanding the non-functional properties of these DRAMs such as power consumption and reliability is essential for accurate system design, as the values reported in vendor's data sheets tend to be overly pessimistic compared to real-world performance. This research paper aims to characterize LPDDR4 memories of the three major vendors by conducting retention time and current measurements. To achieve these results, a custom measurement platform was developed, capable of precisely heating up the DRAM within a range of~$\pm\qty{1.0}{\celsius}$.
\end{abstract}
\begin{CCSXML}
<ccs2012>
<concept>
<concept_id>10010583.10010600.10010607.10010608</concept_id>
<concept_desc>Hardware~Dynamic memory</concept_desc>
<concept_significance>500</concept_significance>
</concept>
<concept>
<concept_id>10010583.10010737.10010746</concept_id>
<concept_desc>Hardware~Memory test and repair</concept_desc>
<concept_significance>500</concept_significance>
</concept>
<concept>
<concept_id>10010583.10010737.10010747</concept_id>
<concept_desc>Hardware~Hardware reliability screening</concept_desc>
<concept_significance>500</concept_significance>
</concept>
<concept>
<concept_id>10010583.10010662.10010674</concept_id>
<concept_desc>Hardware~Power estimation and optimization</concept_desc>
<concept_significance>500</concept_significance>
</concept>
</ccs2012>
\end{CCSXML}
\ccsdesc[500]{Hardware~Dynamic memory}
\ccsdesc[300]{Hardware~Memory test and repair}
\ccsdesc[300]{Hardware~Hardware reliability screening}
\ccsdesc[500]{Hardware~Power estimation and optimization}
\keywords{DRAM, LPDDR4, Measurement}
%\received{20 February 2007}
%\received[revised]{12 March 2009}
%\received[accepted]{5 June 2009}
\maketitle
\section{Introduction}
Data-driven applications are increasingly becoming the focus of our information technology society. AI techniques disruptively change almost all areas of our society and economy. A common feature of all these applications is the enormous amount of data that needs to be captured, stored, and processed. As a result, external memory systems, particularly in System-on-Chip (SoC) or compute architectures, are gaining greater prominence. The state-of-the-art external memory systems are known as \textit{Dynamic Random Access Memories} (DRAM), which come in various types (DDRx, LPDDRx, HBMx, etc.). These different DRAM types vary significantly in their maximum bandwidths and latencies, storage capacity, reliability, and energy consumption. Of particular importance is energy consumption. Google recently demonstrated that more than \qty{90}{\percent} of system energy is consumed by large machine learning models in memory. In \textit{Augmented Reality Devices} for the Metaverse, according to Meta, memory can account for up to \qty{80}{\percent} of energy consumption. Hence, selecting the appropriate DRAM memory based on applications and system context is of utmost importance. Moreover, in autonomous systems, AI-driven signal processing of numerous sensor data requires DRAM memory, where reliability takes precedence alongside power consumption. Therefore, it is crucial for system design to thoroughly characterize the reliability and power consumption of DRAM memories.
This paper presents an in-depth analysis of LPDDR4 DRAMs, which recently hold significant usage in the industry, including consumer products and safety-critical systems such as \textit{Advanced Driving Assistant Systems} (ADAS) in automobiles. The primary focus of this analysis lies in assessing reliability, specifically retention errors, and power consumption. To accomplish this characterization, we devised a customized measurement platform to meticulously examine the DRAMs from the three major vendors.
\noindent In summary, the paper makes the following new contributions:
%
\begin{itemize}
\item We present a precise retention error analysis that includes different temperature and data patterns, and compare the results of the measurements with the latest memory modules with previous measurements in literature.
\item We present, to the best of our knowledge, for the first time, a current analysis of LPDDR4 DRAMs and compare the data with the vendor's data sheets.
\item We analyze the impact of the internal SEC-ECC on the reliability at different temperatures.
\item From our results, we can conclude the internal array architectures of the different vendors.
\item We present a sophisticated measurement platform that is capable to precisely heat up the DRAM and provide current measurements on all LPDDR4 voltage domains.
\end{itemize}
The paper is structured as follows: Section~\ref{sec:rel} presents the related work. The measurement platform is presented in~\ref{sec:meas}, whereas Section~\ref{sec:res} presents the experimental results. The paper is then finally concluded in Section~\ref{sec:con}.
%
\section{Related Work}\label{sec:rel}
%
There are several studies that analyze the retention behavior of DRAM chips. Kim and Lee presented in 2009 a detailed study on data retention times of nanoscaled DDR3 DRAMs~\cite{kimlee_09}. Most of the following investigations, for instance \cite{liujai_12,naikim_13,lucalv_14} and \cite{linshe_12}, are based on these results. However, the authors of \cite{junmat_16} showed with Wide I/O that even with high temperatures the majority of cells in this device can hold data much longer than 10,000s for a \texttt{0xFF} data pattern. Later they confirmed in~\cite{junmat_17} for a similar DDR3 DRAM Device (same vendor) from 2009 that the presented numbers by~\cite{kimlee_09} are way too pessimistic in the average case; DRAM cells can hold their value up to two orders of magnitude longer than assumed.
All previously presented platforms for measuring DRAM reliability and power consumption have been DIMM-based (e.g., \cite{junmat_17} for DDR3 or \cite{matsch_18} for DDR4) and employ Peltier elements to heat up the DRAM. Other studies have utilized a thermal chamber to house the entire DRAM measurement system (e.g., \cite{patkim_17}). They present a study on 368 LPDDR4 devices. However, the authors do not disclose any details about their measurement platform beside that they used a thermal chamber. The authors of~\cite{liujai_13} analyze the data retention behavior with respect to temperature, DPD, and VRT. However, they measure the retention times only for several seconds (< \qty{10}{\second}) and use a thermal chamber.
Rahmati et al. \cite{rahhic_14} also use a thermal chamber, but moreover, they analyze a DRAM device from the 90's. Therefore, their results have absolutely no relevance for nowadays DDR4/5 world. The authors of~\cite{houli_13} measure only short retention times (<\qty{3}{\second}) and only one bank of one single DDR3 DRAM. Therefore, their results do not consider process variations. Moreover, they do not disclose details about their measurement setup, e.g. how they heat up the DRAM.
However, placing the entire measurement system within the thermal chamber may introduce undesired effects on the system itself, potentially influencing the results. Moreover, these platforms utilize the DIMM's temperature sensor, which does not provide the actual chip temperature as it is not physically integrated into the DRAM chips. Therefore, it is important to directly heat up and measure the devices in order to obtain realistic results.
In~\cite{venher_06} the authors measure the number of faulty pages with respect to ambient temperature and time. They heat up the DRAM chip manually by using a heat gun, which has the drawback that stabilizing the temperature over several hours is impossible.
\section{Measurement Platform}\label{sec:meas}
%
\begin{figure}
\centering
\includegraphics[width=\linewidth]{block_diagram.pdf}
\caption{Block-Diagramm of Measurement Plattform}
\label{fig:block}
\end{figure}
%
DIMM-based systems offer more convenient measurement, since off-the-shelf FPGA boards can be used. In such scenarios, currents can be measured using a specially designed adapter, as shown in~\cite{junmat_17, matsch_18}. However, low-power DRAM systems like LPDDR4 do not utilize DIMMs; instead, the devices are directly soldered onto the \textit{Printed Circuit Board} (PCB) of the computing system or even use \textit{Package on Package} (PoP) technology. This presents a significant challenge, as it necessitates the design of an entire PCB, including FPGA and device socket, as a single adapter is insufficient for the measurement process. Therefore, we designed a custom measurement platform which allows a precise current and retention measurement while temperatures can be regulated with an accuracy of $\pm\qty{1.0}{\celsius}$. In the following we will describe the components of the platform, shown in Figure~\ref{fig:block}.
\paragraph{System on Chip (SoC)}
The measurement platform utilizes the Xilinx Zynq Ultrascale+ XCZU3EG-1SFVA625E, a \textit{Multiprocessor System on Chip} (MPSoC), as its primary control unit. All essential tasks for conducting the measurements are executed on this platform. These tasks encompass heat regulation, generation of DRAM data patterns, measurement of current and retention time, and the storage of acquired data.
Since the DRAM itself is the subject to test, it remains unavailable for use by the measurement software. The sole available main memory accessible to the software was a 256 kB on-chip SRAM memory. As a solution, we developed a microkernel tailored to operate on the four cores, optimized to fully reside within the platform's on-chip memory. The purpose of the microkernel was to run diagnostics by filling the whole DRAM with certain specified patterns, while simultaneously controlling the output of the heating component. Each core was allocated for distinct functions within the system, encompassing tasks such as pattern writing and reading, heat control, and communication. Interaction with the platform was facilitated through the serial bus, enabling the exchange of JSON messages. These messages facilitated operations such as triggering new test runs, soliciting board diagnostics, and retrieving test results, all managed by external PC software written in Qt, as depicted in Figure~\ref{fig:software}.
\paragraph{DRAM Connection and Socket}
In contrast to DDR4, which is typically linked to the target platform through a DIMM inserted into the appropriate socket, LPDDR4 is commonly soldered directly onto the PCB. This soldered configuration poses challenges for a measurement platform, as replacing the DRAM devices could lead to damage to both the device and the PCB. To address this, our measurement platform features an Ironwood SBT-BGA200 socket, facilitating swift interchangeability of LPDDR4 devices, including those of varying dimensions. This socket-based approach obviates the need for soldering of both the socket and the device itself. All test devices are connected to the hard IP memory controller of the Xilinx Zynq Ultrascale+. The measurement platform achieves a maximum data rate of \qty{2133}{Mb/s/pin}.
\paragraph{Current Measurement Circuit}
The measurement platform features four independent current measurement channels to measure all three supply currents of the LPDDR4 ($VDD_1$, $VDD_2$, $VDD_Q$) and the $VCCO_{PSDDR}$ voltage domain of the Zynq Ultrascale+.
Each current is measured using a shunt resistor, which is connected in series to the device.
All resistance values were carefully selected to maximize the voltage drop across the shunt resistor while guaranteeing sufficient supply voltage to the device.
The chosen values are listed in Table~\ref{tab:shunt_res}.
The voltage drop across each resistor is first filtered using a low-pass filter with a cut-off frequency of \qty{1.6}{MHz} and amplified with a factor of 200 using high-precision current sense amplifiers (Analog Devices MAX44284W).
The amplified voltages are synchronously sampled by a 24-bit analog-to-digital converter (ADC) of type MAX11040K as well as the corresponding supply voltages itself using a cascaded device.
These ADCs are connected to the Xilinx Zynq Ultrascale+, which processes the data.
The measurement board provides also the option to measure the amplified voltages using a oscilloscope.
\begin{table}[!ht]
\centering
\begin{tblr}{l|c}
Voltage domain & Shunt resistance \\
\hline
$VDD_1$ & $ 750\, m \Omega $ \\
$VDD_2$ & $ 27\, m \Omega $ \\
$VDD_Q$ & $ 120\, m \Omega $ \\
$VCCO_{PSDDR}$ & $ 50\, m \Omega $ \\
\end{tblr}
\caption{Shunt resistor of current measurement circuit}
\label{tab:shunt_res}
\end{table}
\paragraph{I/O Interfaces}
The measurement platform offers a variety of I/O interfaces. A 1000BASE-T Ethernet connection provides remote access to the platform. A separate UART is used to print debug outputs which offers the opportunity to monitor the measurement procedure in detail. The UART can be accessed via USB using an FTDI UART-to-USB IC. Two micro-sd card slots are available to store all measured data. Additionally, there are several buttons, switches, leds, and I/O header which offer user communication as well as extension capabilities.
\paragraph{Heating Element}
The heating element, which is attached to the LPDDR4 socket, consists of a CNC manufactured copper block which contains a \qty{12}{V} heating cartridge as well as a temperature sensor. To isolate the heating element from the surrounding air, a 3D-printed cover, called the \enquote{Dome}, consisting of air-filled chambers is put over the heating element and the socket containing the DRAM, c.f. Figure~\ref{fig:plattform:image}. The \qty{20}{W} heating cartridge can be controlled by the SoC using pulse width modulation. The current temperature is measured using a MCP9700A sensor, which is connected to the internal ADC of the Xilinx Zynq Ultrascale+.
\begin{figure}
\centering
\includegraphics[width=\linewidth]{layout.png}
\caption{PCB Layout}
\label{fig:layout}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{sw.png}
\caption{Control Software}
\label{fig:software}
\end{figure}
\begin{figure*}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] at (0,0)
{\includegraphics[width=\textwidth]{DSC03604.JPG}};
\draw[red,ultra thick,rounded corners]
(12.25,3.3) rectangle (17.0,8.2);
\draw[red](14.625,8.75) node[](){\Large The \enquote{Dome}};
\draw[red](11.0,4.5) node[](){\Large FPGA};
\draw[red](15.0,2.5) node[](){\Large Current Measurement};
\end{tikzpicture}
\caption{Developed Measurement Platform}
\label{fig:plattform:image}
\end{figure*}
%
\section{Experimental Results}\label{sec:res}
%
With the presented platform of Section~\ref{sec:meas} we conducted several measurements with respect to retention time and power consumption.
%
\subsection{Retention Analysis}
The first set of experiments is an analysis of the data pattern dependencies that have been reported in previous studies, e.g.,~\cite{matsch_18}. Therefore, we conducted experiments with LPDDR4 using \texttt{0x00}, \texttt{0x55}, \texttt{0xAA}, \texttt{0xFF} and random data patterns. With these patterns it is possible to reverse engineer the internal DRAM architecture. Some DRAM vendors use only true-cells, other vendors are mixing true- and anti-cells in their DRAM architectures, where a true-cell stores the data value as it is and an anti-cell stores the inverse~\cite{liujai_13}. The reason for that is the architecture of the array and the primary sense amplifier. In order to analyze the data pattern dependencies, we analyzed one LPDDR4 device for each vendor. With these measurements it is also possible to rate the reliability, e.g., for \textit{Approximate DRAM} scenarios.
For this purpose, the DRAM refresh is temporarily disabled, and the number of errors is measured within this time frame. It is important to highlight that all vendors meet the claimed reliability standards for typical refresh rates as required in the JEDEC standards (e.g., \qty{64}{\milli\second}).
For Vendor-A, we observe errors for all data patterns, as shown in Figure~\ref{fig:micron}, indicating the usage of a mixed true- and anti-cell DRAM. In contrast, Vendor-B (Figure~\ref{fig:samsung}) and Vendor-C (Figure~\ref{fig:hynix}) do not exhibit errors for the \texttt{0x00} data pattern, implying a true-cell DRAM. The data pattern dependency for Vendor-A is minimal, while the other two vendors show a much higher data pattern dependency. Notably, for Vendor-B and Vendor-C, the majority of errors occur with the \texttt{0xFF} pattern, which aligns with the true-cell architecture. Conversely, Vendor-A experiences most errors with random data patterns.
To estimate the variance across multiple devices, we conducted measurements on five different devices from each vendor using a random pattern. The results are illustrated in Figure~\ref{fig:spread}, where we present the maximum, minimum, and average errors. Among the vendors, Vendor-A exhibits the highest variance, while Vendor-C shows a medium variance, and Vendor-B has the lowest variance. A direct comparison between the vendors is depicted in Figure~\ref{fig:comp}, whereas Figure~\ref{fig:comp} shows the same results in a linear form instead of logarithmic. Notably, at elevated temperatures, the performance disparity becomes evident, particularly with Vendor-A being considerably less reliable compared to Vendor-B and Vendor-C. Nonetheless, as mentioned before, all vendors meet the claimed reliability standards when the DRAM is used within the specification. Table~\ref{tab:comp} summarizes the qualitatively the measured results.
LPDDR4 is the first JEDEC standard that allows the integration of in-DRAM ECC into devices. For the tested devices the used ECC is a \textit{Single Error Correction} (SEC) (136,128) shortened Hamming code~\cite{kwoseo_17, leeeom_17}.
We analyzed the performance of this ECC for Vendor-A and compared it with previous DDR4 measurements for the same vendor from~\cite{matsch_18}, as shown in Figure~\ref{fig:ddr4}.
It is important to note that DDR4 uses an external ECC engine placed inside the memory controller, which covers all errors from the DRAM cell up to the memory controller, whereas LPDDR4's ECC engine can only correct errors that appear within the memory array. Furthermore, it might be that for both devices different DRAM technologies are used.
However, from an information-theoretical perspective, the (136,128) shortened Hamming code used in LPDDR4 devices has a higher code rate than the (72,64) shortened Hamming code of DDR4's external ECC engine. Thus, its error correction capability is lower. This general trend can also be observed in our measurements.
Furthermore, we compared our results with prior art~\cite{patkim_17}, as shown in Figure~\ref{fig:onur}. They measured at \qty{45}{\celsius} in a thermal chamber. Their values are closer to our \qty{60}{\celsius} results than to our \qty{30}{\celsius}. This might be because of the usage of a thermal chamber, which also extensively heats up the DRAM interface on the FPGA side, or they have used an earlier generation of LPDDR4 devices. Unfortunately, they do not disclose their measurement setup and the DRAMs they have analyzed.
%
\subsection{Current Measurements}
%
Using the measurement circuit presented in Section~\ref{sec:meas}, we conducted current measurements for all three voltage domains, namely $VDD_1$, $VDD_2$, and $VDD_Q$. Figure~\ref{fig:current} illustrates the measured currents, and the total current $I_{\text{total}}$ is calculated as the sum of $I_1$, $I_2$, and $I_Q$. However, it was not possible to accurately measure the write current IDD4W*, as the FPGA platform cannot send two write requests consecutively. Similarly, measuring the \texttt{ACT-PRE} current IDD0* in a JEDEC-compliant manner was not feasible, as it was not possible to execute \texttt{ACT} and \texttt{PRE} commands consecutively due to the absence of this feature in hard-IP memory controller of the FPGA. Instead, IDD0* reflects the sequence \texttt{ACT-RD-PRE}. Therefore, these two currents only provide approximate values, but they are still valid for comparing different vendors. For Vendor-C, no datasheet was provided. Notably, we observed that the values in the datasheet are overly pessimistic (especially for Vendor-B) compared to the measured results. These measurements can be invaluable to system designers in optimizing the power planning and ensuring a more optimistic design.
\begin{table}[]
\centering
\begin{tblr}{c|lllll}
~ & Type & DPD & Variance & SEC & Most Errors\\\hline
A & Mixed-Cell & very low & medium & yes & random\\
B & True-Cell & low & low & yes & 0xFF\\
C & True-Cell & low & very low & yes & 0xFF\\
\end{tblr}
\caption{Qualitative Comparison of Vendors}
\label{tab:comp}
\end{table}
%
\section{Conclusion}\label{sec:con}
This paper focuses on the analysis of LPDDR4 DRAMs, which are widely used in various applications, including consumer products and safety-critical systems like \textit{Advanced Driving Assistant Systems} (ADAS) in cars. The study centers around assessing the reliability and power consumption of these DRAMs. To achieve this, we designed a customized measurement platform capable of accurately characterizing the DRAMs from the three major vendors. The paper makes several notable contributions, including a precise retention error analysis with different temperature and data patterns, a current analysis of LPDDR4 DRAMs, an evaluation of internal SEC-ECC impact on reliability at different temperatures, and insights into the internal array architectures of the vendors. We demonstrated that the datasheet values provided by the vendors were overly pessimistic. The study's results offer valuable information to system designers for optimizing power planning and layout design.
%
\begin{acks}
We thank \anon{Martin Schultheis} and Mercedes-Benz for their support. This paper was partially funded by the Federal Minestry of Education and Research (BMBF) within the \anon{MEMTONOMY-2} project (\anon{16ME0716K}).
\end{acks}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/micron_30}
\caption{\qty{30}{\celsius}}
\label{fig:micron:30}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/micron_60}
\caption{\qty{60}{\celsius}}
\label{fig:micron:60}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/micron_80}
\caption{\qty{80}{\celsius}}
\label{fig:micron:80}
\end{subfigure}
\caption{Data Pattern Analysis Vendor-A}
\label{fig:micron}
\end{figure*}
%
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/samsung_30}
\caption{\qty{30}{\celsius}}
\label{fig:samsung:30}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/samsung_60}
\caption{\qty{60}{\celsius}}
\label{fig:samsung:60}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/samsung_80}
\caption{\qty{80}{\celsius}}
\label{fig:samsung:80}
\end{subfigure}
\caption{Data Pattern Analysis Vendor-B}
\label{fig:samsung}
\end{figure*}
%
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/hynix_30}
\caption{\qty{30}{\celsius}}
\label{fig:hynix:30}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/hynix_60}
\caption{\qty{60}{\celsius}}
\label{fig:hynix:60}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/hynix_80}
\caption{\qty{80}{\celsius}}
\label{fig:hynix:80}
\end{subfigure}
\caption{Data Pattern Analysis Vendor-C}
\label{fig:hynix}
\end{figure*}
\newpage
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/micron_spread}
\caption{Vendor-A}
\label{fig:spread:a}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/samsung_spread}
\caption{Vendor-B}
\label{fig:spread:b}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/hynix_spread}
\caption{Vendor-C}
\label{fig:spread:c}
\end{subfigure}
\caption{Spread of Retention Errors for 5 Devices for each Vendor with Random Data Pattern}
\label{fig:spread}
\end{figure*}
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/comp_30}
\caption{\qty{30}{\celsius}}
\label{fig:comp:30}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/comp_60}
\caption{\qty{60}{\celsius}}
\label{fig:comp:60}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/comp_80}
\caption{\qty{80}{\celsius}}
\label{fig:comp:80}
\end{subfigure}
\caption{Comparison of Different Vendors with Random Data Pattern (log)}
\label{fig:comp}
\end{figure*}
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/comp2_30}
\caption{\qty{30}{\celsius}}
\label{fig:comp2:30}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/comp2_60}
\caption{\qty{60}{\celsius}}
\label{fig:comp2:60}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/comp2_80}
\caption{\qty{80}{\celsius}}
\label{fig:comp2:80}
\end{subfigure}
\caption{Comparison of Different Vendors with Random Data Pattern (linear)}
\label{fig:comp2}
\end{figure*}
\newpage
%%%%%%%%%%%%%%%%%%
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.45\textwidth}
\centering
\input{plots/ddr4_30}
\caption{\qty{30}{\celsius}}
\label{fig:ddr4:30}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.45\textwidth}
\centering
\input{plots/ddr4_60}
\caption{\qty{60}{\celsius}}
\label{fig:ddr4:60}
\end{subfigure}
%\hfill
%\begin{subfigure}[b]{0.33\textwidth}
% \centering
% \input{plots/ddr4_90}
% \caption{\qty{80}{\celsius}}
% \label{fig:ddr4:90}
%\end{subfigure}
\caption{Comparison of DDR4 SECDED with LPDDR4 SEC}
\label{fig:ddr4}
\end{figure*}
\begin{figure*}[p]
\centering
\input{plots/onur}
\caption{Comparison with Results of \cite{patkim_17}}
\label{fig:onur}
\end{figure*}
\begin{figure*}[p]
\centering
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/micron_current}
\caption{Vendor-A}
\label{fig:current:30}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/samsung_current}
\caption{Vendor-B}
\label{fig:current:60}
\end{subfigure}
%\hfill
\begin{subfigure}[b]{0.33\textwidth}
\centering
\input{plots/hynix_current}
\caption{Vendor-C}
\label{fig:current:90}
\end{subfigure}
\caption{Currents for Different Vendors}
\label{fig:current}
\end{figure*}
\bibliographystyle{ACM-Reference-Format}
\bibliography{ce}
\end{document}

BIN
meander.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 KiB

5542
plots/ce.bib Normal file

File diff suppressed because it is too large Load Diff

78
plots/comp2_30.tex Normal file
View File

@@ -0,0 +1,78 @@
\begin{tikzpicture}
\begin{axis}[
%xmode=log,
%ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=0, xmax=70000,
ymin=1e-10, ymax=0.15,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
yticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled y ticks=false,
xticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled x ticks=false
]
% Micron
\addplot[smooth, very thick, color=blue]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 5.64614E-9)
(32768, 1.10308E-6)
(65536, 7.05115E-5)
};
% Samsung
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 1.16415E-10)
(16384, 1.22935E-08)
(32768, 6.84918E-07)
(65536, 1.82253E-05)
};
% Hynix
\addplot[smooth, very thick, color=orange]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 4.17931E-09)
(32768, 1.12945E-06)
(65536, 8.12418E-05)
};
\legend{
Vendor-A,
Vendor-B,
Vendor-C
}
\end{axis}
\end{tikzpicture}

72
plots/comp2_60.tex Normal file
View File

@@ -0,0 +1,72 @@
\begin{tikzpicture}
\begin{axis}[
%xmode=log,
%ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=0, xmax=70000,
ymin=1e-10, ymax=0.15,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
yticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled y ticks=false,
xticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled x ticks=false
]
% Micron
\addplot[smooth, very thick, color=blue]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 6.17001E-10)
(4096, 2.59827E-07)
(8192, 3.35296E-05)
(16384, 0.001206623)
(32768, 0.011528183)
(65536, 0.036253586)
};
% Samsung
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 1.42027E-09)
(4096, 1.59652E-07)
(8192, 7.78309E-06)
(16384, 0.000152732)
(32768, 0.001065224)
(65536, 0.004212467)
};
% Hynix
\addplot[smooth, very thick, color=orange]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 8.26549E-10)
(4096, 7.55081E-07)
(8192, 0.000105995)
(16384, 0.001462461)
(32768, 0.006927195)
(65536, 0.017466683)
};
\end{axis}
\end{tikzpicture}

72
plots/comp2_80.tex Normal file
View File

@@ -0,0 +1,72 @@
\begin{tikzpicture}
\begin{axis}[
%xmode=log,
%ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=0, xmax=70000,
ymin=1e-10, ymax=0.15,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
yticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled y ticks=false,
xticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled x ticks=false
]
% Micron
\addplot[smooth, very thick, color=blue]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 7.09901E-08)
(2048, 1.04063E-05)
(4096, 0.000465134)
(8192, 0.008722029)
(16384, 0.029783939)
(32768, 0.064471348)
(65536, 0.102330153)
};
% Samsung
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 3.62517E-08)
(2048, 3.02603E-06)
(4096, 8.20644E-05)
(8192, 0.000688446)
(16384, 0.003470714)
(32768, 0.009178362)
(65536, 0.018137646)
};
% Hynix
\addplot[smooth, very thick, color=orange]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 2.56114E-10)
(1024, 3.02272E-07)
(2048, 4.2077E-05)
(4096, 0.000996151)
(8192, 0.005669198)
(16384, 0.016854079)
(32768, 0.030819036)
(65536, 0.047067711)
};
\end{axis}
\end{tikzpicture}

68
plots/comp_30.tex Normal file
View File

@@ -0,0 +1,68 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=100, xmax=100000,
ymin=1e-10, ymax=1,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% Micron
\addplot[smooth, very thick, color=blue]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 5.64614E-9)
(32768, 1.10308E-6)
(65536, 7.05115E-5)
};
% Samsung
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 1.16415E-10)
(16384, 1.22935E-08)
(32768, 6.84918E-07)
(65536, 1.82253E-05)
};
% Hynix
\addplot[smooth, very thick, color=orange]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 4.17931E-09)
(32768, 1.12945E-06)
(65536, 8.12418E-05)
};
\legend{
Vendor-A,
Vendor-B,
Vendor-C
}
\end{axis}
\end{tikzpicture}

62
plots/comp_60.tex Normal file
View File

@@ -0,0 +1,62 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=100, xmax=100000,
ymin=1e-10, ymax=1,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% Micron
\addplot[smooth, very thick, color=blue]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 6.17001E-10)
(4096, 2.59827E-07)
(8192, 3.35296E-05)
(16384, 0.001206623)
(32768, 0.011528183)
(65536, 0.036253586)
};
% Samsung
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 1.42027E-09)
(4096, 1.59652E-07)
(8192, 7.78309E-06)
(16384, 0.000152732)
(32768, 0.001065224)
(65536, 0.004212467)
};
% Hynix
\addplot[smooth, very thick, color=orange]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 8.26549E-10)
(4096, 7.55081E-07)
(8192, 0.000105995)
(16384, 0.001462461)
(32768, 0.006927195)
(65536, 0.017466683)
};
\end{axis}
\end{tikzpicture}

62
plots/comp_80.tex Normal file
View File

@@ -0,0 +1,62 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=100, xmax=100000,
ymin=1e-10, ymax=1,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% Micron
\addplot[smooth, very thick, color=blue]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 7.09901E-08)
(2048, 1.04063E-05)
(4096, 0.000465134)
(8192, 0.008722029)
(16384, 0.029783939)
(32768, 0.064471348)
(65536, 0.102330153)
};
% Samsung
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 3.62517E-08)
(2048, 3.02603E-06)
(4096, 8.20644E-05)
(8192, 0.000688446)
(16384, 0.003470714)
(32768, 0.009178362)
(65536, 0.018137646)
};
% Hynix
\addplot[smooth, very thick, color=orange]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 2.56114E-10)
(1024, 3.02272E-07)
(2048, 4.2077E-05)
(4096, 0.000996151)
(8192, 0.005669198)
(16384, 0.016854079)
(32768, 0.030819036)
(65536, 0.047067711)
};
\end{axis}
\end{tikzpicture}

77
plots/ddr4_30.tex Normal file
View File

@@ -0,0 +1,77 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=100, xmax=10000000,
ymin=1e-11, ymax=1,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
legend cell align={left},
width=1.0\linewidth,
height=5.0cm,
yticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled y ticks=false,
xticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled x ticks=false
]
\addplot[smooth, very thick, color=green, dashed]
coordinates {
(3000 , 5.82077E-11)
(4000 , 3.20142E-10)
(5000 , 1.28057E-09)
(6000 , 3.49246E-09)
(7000 , 7.71252E-09)
(8000 , 1.46974E-08)
(9000 , 2.40398E-08)
(10000 , 3.97267E-08)
(11000 , 6.11180E-08)
(12000 , 8.84465E-08)
(13000 , 1.24681E-07)
(14000 , 1.73110E-07)
(15000 , 2.33384E-07)
(20000 , 8.39587E-07)
(50000 , 3.68159E-05)
(100000 , 0.000346706)
(500000 , 0.012452756)
(1000000, 0.029934668)
};
%
\addplot[smooth, very thick, color=green]
coordinates {
(16384, 5.64614E-09)
(32768, 1.10308E-06)
(65536, 7.05115E-05)
};
%
\addplot[smooth, very thick, color=green, dotted]
coordinates {
(10000 , 5.82077E-11)
(11000 , 1.74623E-10)
(12000 , 2.32831E-10)
(13000 , 2.32831E-10)
(14000 , 3.49246E-10)
(15000 , 4.94765E-10)
(20000 , 1.97906E-09)
(50000 , 1.33994E-07)
(100000 , 9.21523E-06)
(500000 , 0.008096751)
(1000000, 0.028645443)
};
\legend{
DDR4 \qty{30}{\celsius},
LPDDR4 \qty{30}{\celsius},
DDR4 \qty{30}{\celsius} ECC
}
\end{axis}
\end{tikzpicture}

89
plots/ddr4_60.tex Normal file
View File

@@ -0,0 +1,89 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=100, xmax=10000000,
ymin=1e-11, ymax=1,
legend pos=south east,
legend style={font=\footnotesize, draw=none, fill=none},
legend cell align={left},
width=1.0\linewidth,
height=5.0cm,
yticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled y ticks=false,
xticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled x ticks=false
]
\addplot[smooth, very thick, color=yellow, dashed]
coordinates {
(1000 , 5.61413E-08)
(2000 , 1.5918E-06)
(3000 , 9.41046E-06)
(4000 , 2.9681E-05)
(5000 , 6.39595E-05)
(6000 , 0.000115407)
(7000 , 0.000185806)
(8000 , 0.000281661)
(9000 , 0.000380776)
(10000 , 0.000482023)
(11000 , 0.000681065)
(12000 , 0.000808455)
(13000 , 0.000998421)
(14000 , 0.001125485)
(15000 , 0.001615577)
(20000 , 0.002977654)
(50000 , 0.01795677)
(100000 , 0.040775499)
(500000 , 0.126358154)
(1000000, 0.175007808)
};
%
\addplot[smooth, very thick, color=yellow]
coordinates {
(2048 ,6.17001E-10)
(4096 ,2.59827E-07)
(8192 ,3.35296E-05)
(16384,0.001206623)
(32768,0.011528183)
(65536,0.036253586)
};
%
\addplot[smooth, very thick, color=yellow, dotted]
coordinates {
(3000 , 1.19326E-09)
(4000 , 1.68802E-08)
(5000 , 1.16794E-07)
(6000 , 5.45551E-07)
(7000 , 1.4836E-06)
(8000 , 3.98149E-06)
(9000 , 9.0742E-06)
(10000 , 1.80504E-05)
(11000 , 3.2256E-05)
(12000 , 5.46999E-05)
(13000 , 8.51597E-05)
(14000 , 0.000132802)
(15000 , 0.000170692)
(20000 , 0.000718489)
(50000 , 0.01476685)
(100000 , 0.041258835)
(500000 , 0.128361605)
(1000000, 0.176177339)
};
\legend{
DDR4 \qty{60}{\celsius},
LPDDR4 \qty{60}{\celsius},
DDR4 \qty{60}{\celsius} ECC
}
\end{axis}
\end{tikzpicture}

107
plots/ddr4_90.tex Normal file
View File

@@ -0,0 +1,107 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=100, xmax=10000000,
ymin=1e-11, ymax=1,
legend pos=south east,
legend style={font=\footnotesize, draw=none, fill=none},
legend cell align={left},
width=1.0\linewidth,
height=5.0cm,
yticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled y ticks=false,
xticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled x ticks=false
]
\addplot[smooth, very thick, color=red, dashed]
coordinates {
(100, 5.52973E-10)
(200, 6.64149E-08)
(300, 3.91476E-07)
(400, 1.55994E-06)
(500, 4.28263E-06)
(600, 1.09514E-05)
(700, 2.18365E-05)
(800, 3.54853E-05)
(900, 7.42787E-05)
(1000, 0.000101257)
(2000, 0.00120861 )
(3000, 0.003786446)
(4000, 0.007342965)
(5000, 0.011274888)
(6000, 0.015424992)
(7000, 0.019265638)
(8000, 0.023463517)
(9000, 0.02723531 )
(10000, 0.030822466)
(11000, 0.037785031)
(12000, 0.038797955)
(13000, 0.044739773)
(14000, 0.046502736)
(15000, 0.050462484)
(20000, 0.064585622)
(50000, 0.12036126 )
(100000, 0.171231476)
(500000, 0.318054388)
(1000000,0.411075948)
};
%
\addplot[smooth, very thick, color=orange]
coordinates {
(1024 , 7.09901E-08)
(2048 , 1.04063E-05)
(4096 , 0.000465134)
(8192 , 0.008722029)
(16384, 0.029783939)
(32768, 0.064471348)
(65536, 0.102330153)
};
%
\addplot[smooth, very thick, color=red, dotted]
coordinates {
(400, 2.03727E-10)
(500, 1.5425E-09)
(600, 1.04774E-08)
(700, 5.37839E-08)
(800, 1.99216E-07)
(900, 6.22356E-07)
(1000, 1.52315E-06)
(2000, 0.000131612)
(3000, 0.000913978)
(4000, 0.003144482)
(5000, 0.007653748)
(6000, 0.012529761)
(7000, 0.016723443)
(8000, 0.020918224)
(9000, 0.025034057)
(10000, 0.029216281)
(11000, 0.038123813)
(12000, 0.042557777)
(13000, 0.045916313)
(14000, 0.048960478)
(15000, 0.051916683)
(20000, 0.068391991)
(50000, 0.124291814)
(100000, 0.173243051)
(500000, 0.321741555)
(1000000,0.411033884)
};
\legend{
DDR4 \qty{90}{\celsius},
LPDDR4 \qty{80}{\celsius},
DDR4 \qty{90}{\celsius} ECC
}
\end{axis}
\end{tikzpicture}

100
plots/hynix_30.tex Normal file
View File

@@ -0,0 +1,100 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0: Nothing because true cell
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 0)
(32768, 0)
(65536, 0.0000000001)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 59)
(32768, 20094)
(65536, 1491060)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 60)
(32768, 18953)
(65536, 1373804)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 128)
(32768, 48926)
(65536, 3829479)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 81)
(32768, 23212)
(65536, 1512641)
};
\legend{
\texttt{0x00},
\texttt{0x55},
\texttt{0xaa},
\texttt{0xff},
\texttt{rand}
}
\end{axis}
\end{tikzpicture}

91
plots/hynix_60.tex Normal file
View File

@@ -0,0 +1,91 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0: Nothing because true cell
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 0)
(32768, 0)
(65536, 0.0000000001)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 17)
(4096, 3536)
(8192, 864880)
(16384, 17685948)
(32768, 115575907)
(65536, 280834953)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 13)
(4096, 5676)
(8192, 582001)
(16384, 16695026)
(32768, 105919134)
(65536, 278527004)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 29)
(4096, 24967)
(8192, 1845179)
(16384, 45605514)
(32768, 248909752)
(65536, 542267164)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 8)
(4096, 5422)
(8192, 1301985)
(16384, 20629644)
(32768, 95138514)
(65536, 271274219)
};
\end{axis}
\end{tikzpicture}

91
plots/hynix_80.tex Normal file
View File

@@ -0,0 +1,91 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0: Nothing because true cell
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 0)
(32768, 0)
(65536, 0.0000000001)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 1790)
(2048, 508270)
(4096, 10539664)
(8192, 86748318)
(16384, 267299092)
(32768, 521344096)
(65536, 804603263)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 710)
(2048, 224968)
(4096, 13967512)
(8192, 92216450)
(16384, 259435811)
(32768, 522096860)
(65536, 817555867)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 5118)
(2048, 1026899)
(4096, 34715042)
(8192, 250111783)
(16384, 512169958)
(32768, 923461672)
(65536, 1437773921)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 1545)
(2048, 261376)
(4096, 14242561)
(8192, 77378754)
(16384, 258831947)
(32768, 495876582)
(65536, 766992175)
};
\end{axis}
\end{tikzpicture}

64
plots/hynix_current.tex Normal file
View File

@@ -0,0 +1,64 @@
\begin{tikzpicture}
\begin{axis}[
width = 0.85*\textwidth,
height = 8cm,
major x tick style = transparent,
ymajorgrids = true,
ylabel = {Current [\unit{\milli\ampere}]},
width=1.0\linewidth,
height=5.0cm,
symbolic x coords={
IDD2N,
IDD5AB,
IDD6,
IDD4R,
IDD4W*,
IDD0*,
},
xtick = data,
xticklabel style={rotate=90},
scaled y ticks = false,
enlarge x limits=0.1,
ybar=1*\pgflinewidth,
bar width=3pt,
ymin=0,
ymax=800,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
]
\addplot[style={green,fill=green,mark=none}] coordinates {
(IDD2N, 21.91481481)
%(IDD5AB*, 50.94666667)
(IDD5AB, 23.25)
(IDD6, 12.03481481)
(IDD4R, 251.3888889)
(IDD4W*, 137.0962963)
(IDD0*, 25.91259259)
};
\addplot[style={yellow,fill=yellow,mark=none}] coordinates {
(IDD2N, 24.48851852)
%(IDD5AB*, 50.97333333)
(IDD5AB, 25.7)
(IDD6, 14.19962963)
(IDD4R, 253.4259259)
(IDD4W*, 135.8462963)
(IDD0*, 32.07703704)
};
\addplot[style={orange,fill=orange,mark=none}] coordinates {
(IDD2N, 22.86962963)
%(IDD5AB*, 52.81814815)
(IDD5AB, 24.25)
(IDD6, 23.40185185)
(IDD4R, 258.4666667)
(IDD4W*, 139.2925926)
(IDD0*, 34.36666667)
};
\legend{
\qty{30}{\celsius},
\qty{60}{\celsius},
\qty{90}{\celsius}
}
\end{axis}
\end{tikzpicture}

148
plots/hynix_spread.tex Normal file
View File

@@ -0,0 +1,148 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 30:
\addplot[smooth,color=green, very thick, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 71.8)
(32768, 19403.8)
(65536, 1395723.4)
};
\addplot[smooth,color=green, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 0 )
(4096, 0 )
(8192, 0 )
(16384, 8)
(32768, 4404)
(65536, 594262)
};
\addplot[smooth,color=green, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 221)
(32768, 43055)
(65536, 2214471)
};
%60:
\addplot[smooth,color=yellow, very thick, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 14.2)
(4096, 12972.2)
(8192, 1820985.2)
(16384, 25124893.6)
(32768, 119008309.6)
(65536, 300075333.8)
};
\addplot[smooth,color=yellow, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 8)
(4096, 5422)
(8192, 1301985)
(16384, 20629644)
(32768, 95138514)
(65536, 271274219)
};
\addplot[smooth,color=yellow, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 21)
(4096, 19632)
(8192, 2527320)
(16384, 29458371)
(32768, 149854396)
(65536, 361493220)
};
%80:
\addplot[smooth,color=orange, very thick, dashed]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 4.4)
(1024, 5193)
(2048, 722877.8)
(4096, 17113742)
(8192, 97396076.4)
(16384, 289550864.8)
(32768, 529467000.8)
(65536, 808617120.6 )
};
\addplot[smooth,color=orange, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 3)
(1024, 1545)
(2048, 261376)
(4096, 12946240)
(8192, 77378754)
(16384, 258831947)
(32768, 495876582)
(65536, 766992175)
};
\addplot[smooth,color=orange, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 11)
(1024, 7395)
(2048, 1176168)
(4096, 24064322)
(8192, 120422691)
(16384, 362823128)
(32768, 610607372)
(65536, 921345613)
};
\end{axis}
\end{tikzpicture}

100
plots/micron_30.tex Normal file
View File

@@ -0,0 +1,100 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 19)
(32768, 6158)
(65536, 496335)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 49)
(32768, 8179)
(65536, 613303)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 40)
(32768, 8411)
(65536, 616918)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 30)
(32768, 6507)
(65536, 532777)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 58)
(32768, 9458)
(65536, 642932)
};
\legend{
\texttt{0x00},
\texttt{0x55},
\texttt{0xaa},
\texttt{0xff},
\texttt{rand}
}
\end{axis}
\end{tikzpicture}

92
plots/micron_60.tex Normal file
View File

@@ -0,0 +1,92 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 2)
(4096, 662)
(8192, 108091)
(16384, 6415930)
(32768, 100872172)
(65536, 374540022)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 3)
(4096, 1956)
(8192, 177441)
(16384, 7918510)
(32768, 133293916)
(65536, 508998376)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 757)
(8192, 281094)
(16384, 9428533)
(32768, 152266536)
(65536, 520179143)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 1271)
(8192, 181346)
(16384, 10310037)
(32768, 113268510)
(65536, 376873398)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 7)
(4096, 1296)
(8192, 286084)
(16384, 10230959)
(32768, 132023165)
(65536, 500299181)
};
\end{axis}
\end{tikzpicture}

92
plots/micron_80.tex Normal file
View File

@@ -0,0 +1,92 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 166)
(2048, 53072)
(4096, 2866932)
(8192, 85986233)
(16384, 446494614)
(32768, 940652838)
(65536, 1800968913)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 166)
(2048, 53072)
(4096, 2866932)
(8192, 85986233)
(16384, 446494614)
(32768, 940652838)
(65536, 1800968913)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 240)
(2048, 79602)
(4096, 4033131)
(8192, 94446458)
(16384, 434326924)
(32768, 981682620)
(65536, 1878848968)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 233)
(2048, 67771)
(4096, 5613553)
(8192, 90008762)
(16384, 313134600)
(32768, 707424124)
(65536, 1231673356)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 296)
(2048, 62223)
(4096, 3939369)
(8192, 102698083)
(16384, 384635300)
(32768, 905426673)
(65536, 1712875460)
};
\end{axis}
\end{tikzpicture}

73
plots/micron_current.tex Normal file
View File

@@ -0,0 +1,73 @@
\begin{tikzpicture}
\begin{axis}[
width = 0.85*\textwidth,
height = 8cm,
major x tick style = transparent,
ymajorgrids = true,
ylabel = {Current [\unit{\milli\ampere}]},
width=1.0\linewidth,
height=5.0cm,
symbolic x coords={
IDD2N,
IDD5AB,
IDD6,
IDD4R,
IDD4W*,
IDD0*,
},
xtick = data,
xticklabel style={rotate=90},
scaled y ticks = false,
enlarge x limits=0.1,
ybar=1*\pgflinewidth,
bar width=3pt,
ymin=0,
ymax=800,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
]
\addplot[style={green,fill=green,mark=none}] coordinates {
(IDD2N, 25.84722222)
%(IDD5AB*, 62.92222222)
(IDD5AB, 27.5)
(IDD6, 13.96925926)
(IDD4R, 291.5555556)
(IDD4W*, 125.7518519)
(IDD0*, 35.08666667)
};
\addplot[style={yellow,fill=yellow,mark=none}] coordinates {
(IDD2N, 25.57925926)
%(IDD5AB*, 63.53333333)
(IDD5AB, 27.3)
(IDD6, 16.23518519)
(IDD4R, 300.5177778)
(IDD4W*, 125.7725926)
(IDD0*, 35.70814815)
};
\addplot[style={orange,fill=orange,mark=none}] coordinates {
(IDD2N, 26.81666667)
%(IDD5AB*, 65.04148148)
(IDD5AB, 28.6)
(IDD6, 19.28814815)
(IDD4R, 307.56185190)
(IDD4W*, 130.68703700)
(IDD0*, 40.25925926)
};
\addplot[style={gray,fill=gray,mark=none}] coordinates {
(IDD2N, 36.15)
(IDD5AB, 38.65)
(IDD6, 21.75)
(IDD4R, 374.70)
(IDD4W*, 272.95)
(IDD0*, 56.45)
};
\legend{
\qty{30}{\celsius},
\qty{60}{\celsius},
\qty{90}{\celsius},
Datasheet
}
\end{axis}
\end{tikzpicture}

193
plots/micron_spread.tex Normal file
View File

@@ -0,0 +1,193 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 30:
\addplot[smooth,color=green, very thick, dashed]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 0 )
(4096, 0 )
(8192, 0 )
(16384, 97 )
(32768, 18950.8 )
(65536, 1211377.6 )
};
\addplot[smooth,color=green, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 0 )
(4096, 0 )
(8192, 0 )
(16384, 28)
(32768, 6124)
(65536, 507844)
};
\addplot[smooth,color=green, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 0 )
(4096, 0 )
(8192, 0 )
(16384, 190)
(32768, 34429)
(65536, 1990740)
};
%60:
\addplot[smooth,color=yellow, very thick, dashed]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 10.6 )
(4096, 4463.8 )
(8192, 576033.8 )
(16384, 20729625.2 )
(32768, 198052673.6 )
(65536, 622831861.2 )
};
\addplot[smooth,color=yellow, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 0 )
(4096, 1010 )
(8192, 211070 )
(16384, 9566085 )
(32768, 118852829 )
(65536, 467168234 )
};
\addplot[smooth,color=yellow, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 32 )
(4096, 10051 )
(8192, 1363570 )
(16384, 46289430 )
(32768, 314298304 )
(65536, 837902464 )
};
%80:
\addplot[smooth,color=orange, very thick, dashed]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 1219.6 )
(2048, 178778.2 )
(4096, 7990948.8 )
(8192, 149843319.2 )
(16384, 511684176.2 )
(32768, 1107609324 )
(65536, 1758018636 )
};
\addplot[smooth,color=orange, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 296 )
(2048, 60968 )
(4096, 2802215 )
(8192, 92538587 )
(16384, 364291044 )
(32768, 845828644 )
(65536, 1557315142 )
};
\addplot[smooth,color=orange, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 7 )
(1024, 3309 )
(2048, 437578 )
(4096, 14556545 )
(8192, 220701740 )
(16384, 735470538 )
(32768, 1435614677 )
(65536, 2094151660 )
};
%90:
%\addplot[smooth,color=red, very thick, dashed]
% coordinates {
% (64, 0 )
% (128, 0 )
% (256, 0 )
% (512, 197 )
% (1024, 63662.8 )
% (2048, 4201821.4 )
% (4096, 81014443 )
% (8192, 402960591.6 )
% (16384, 927719668.2 )
% (32768, 1704095420 )
% (65536, 3142261674 )
% };
%\addplot[smooth,color=red, very thick]
% coordinates {
% (64, 0 )
% (128, 0 )
% (256, 0 )
% (512, 37 )
% (1024, 14797 )
% (2048, 1381534 )
% (4096, 40692346 )
% (8192, 267494307 )
% (16384, 689077437 )
% (32768, 1314515184 )
% (65536, 2480425341 )
% };
%\addplot[smooth,color=red, very thick]
% coordinates {
% (64, 0 )
% (128, 0 )
% (256, 0 )
% (512, 537 )
% (1024, 174612 )
% (2048, 9682786 )
% (4096, 160355995 )
% (8192, 607659926 )
% (16384, 1230207246 )
% (32768, 2148804925 )
% (65536, 3730160064 )
% };
\legend{
$\qty{30}{\celsius}$,,,$\qty{60}{\celsius}$,,,$\qty{80}{\celsius}$%,,,$\qty{90}{\celsius}$
}
\end{axis}
\end{tikzpicture}

123
plots/onur.tex Normal file
View File

@@ -0,0 +1,123 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Retention Error Rate},
xmin=1000, xmax=400000,
ymin=1e-11, ymax=1,
legend pos=north east,
legend style={font=\footnotesize, draw=none, fill=none},
legend cell align={left},
width=1.0\linewidth,
height=7.0cm,
yticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled y ticks=false,
xticklabel style={
/pgf/number format/fixed,
/pgf/number format/precision=5
},
scaled x ticks=false
]
% 45*C
% Mutlu Vendor A (X)
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(2048 , 1.00E-06)
(4096 , 2.50E-05)
(8192 , 1.75E-04)
};
% Mutlu Vendor B (Y)
\addplot[smooth, very thick, color=green, dashed]
coordinates {
(2048 , 5.00E-07)
(4096 , 1.00E-05)
(8192 , 6.80E-05)
};
% Mutlu Vendor C (Z)
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(2048 , 5.00E-07)
(4096 , 1.00E-05)
(8192 , 8.00E-05)
};
%
%%%%%%%%%%%%%%%%%%%%%
% 60 Grad Micron
\addplot[smooth, very thick, color=blue]
coordinates {
(512, 0)
(1024, 7.10E-08 )
(2048, 1.04E-05 )
(4096, 4.65E-04 )
(8192, 8.72E-03 )
(16384, 2.98E-02 )
(32768, 6.45E-02 )
(65536, 1.02E-01 )
};
% 60 Grad Micron
\addplot[smooth, very thick, color=green]
coordinates {
(512, 0)
(1024, 3.63E-08)
(2048, 3.03E-06)
(4096, 8.21E-05)
(8192, 6.88E-04)
(16384, 3.47E-03)
(32768, 9.18E-03)
(65536, 1.81E-02)
};
% 60 Grad Hynix
\addplot[smooth, very thick, color=orange]
coordinates {
(512, 2.56E-10)
(1024, 3.02E-07)
(2048, 4.21E-05)
(4096, 9.96E-04)
(8192, 5.67E-03)
(16384, 1.69E-02)
(32768, 3.08E-02)
(65536, 4.71E-02)
};
%%%%%%%%%%%%%%%%%%%%%
% 30 Grad Micron
\addplot[smooth, very thick, color=blue, dotted]
coordinates {
(16384, 5.65E-09)
(32768, 1.10E-06)
(65536, 7.05E-05)
};
% 30 Grad Samsung
\addplot[smooth, very thick, color=green, dotted]
coordinates {
(8192, 1.16E-10)
(16384, 1.23E-08)
(32768, 6.85E-07)
(65536, 1.82E-05)
};
% 30 Grad Hynix
\addplot[smooth, very thick, color=orange, dotted]
coordinates {
(16384, 4.18E-09)
(32768, 1.13E-06)
(65536, 8.12E-05)
};
\legend{
Vendor-X~\qty{45}{\celsius}~\cite{patkim_17},
Vendor-Y~\qty{45}{\celsius}~\cite{patkim_17},
Vendor-Z~\qty{45}{\celsius}~\cite{patkim_17},
Vendor-A~\qty{60}{\celsius}~[this work],
Vendor-B~\qty{60}{\celsius}~[this work],
Vendor-C~\qty{60}{\celsius}~[this work],
Vendor-A~\qty{30}{\celsius}~[this work],
Vendor-B~\qty{30}{\celsius}~[this work],
Vendor-C~\qty{30}{\celsius}~[this work]
}
\end{axis}
\end{tikzpicture}

100
plots/samsung_30.tex Normal file
View File

@@ -0,0 +1,100 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0: Nothing because true cell
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 0)
(32768, 0)
(65536, 0.0000000001)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 186)
(32768, 10679)
(65536, 253998)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 3)
(16384, 182)
(32768, 9298)
(65536, 224455)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 6)
(16384, 489)
(32768, 28789)
(65536, 717943)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 2)
(16384, 184)
(32768, 9804)
(65536, 228474)
};
\legend{
\texttt{0x00},
\texttt{0x55},
\texttt{0xaa},
\texttt{0xff},
\texttt{rand}
}
\end{axis}
\end{tikzpicture}

92
plots/samsung_60.tex Normal file
View File

@@ -0,0 +1,92 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0: Nothing because true cell
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 0)
(32768, 0)
(65536, 0.0000000001)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 25)
(4096, 2260)
(8192, 76097)
(16384, 1323568)
(32768, 9309334)
(65536, 36919926)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 7)
(4096, 1169)
(8192, 59420)
(16384, 1340669)
(32768, 8045026)
(65536, 33424668)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 54)
(4096, 4564)
(8192, 201875)
(16384, 3168927)
(32768, 24123792)
(65536, 86392381)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 6)
(4096, 1566)
(8192, 75316)
(16384, 994658)
(32768, 8113636)
(65536, 32840439)
};
\end{axis}
\end{tikzpicture}

92
plots/samsung_80.tex Normal file
View File

@@ -0,0 +1,92 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 0x0: Nothing because true cell
\addplot[smooth, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 0)
(16384, 0)
(32768, 0)
(65536, 0.0000000001)
};
% 0x5
\addplot[smooth, very thick, color=blue, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 346)
(2048, 15498)
(4096, 688860)
(8192, 6523457)
(16384, 30308736)
(32768, 78350419)
(65536, 154082004)
};
% 0xa
\addplot[smooth, very thick, color=orange, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 3)
(1024, 223)
(2048, 22148)
(4096, 420890)
(8192, 5399362)
(16384, 26283622)
(32768, 74243834)
(65536, 150082985)
};
% 0xf
\addplot[smooth, very thick, color=green]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 6)
(1024, 624)
(2048, 68203)
(4096, 2063703)
(8192, 15989005)
(16384, 66966873)
(32768, 169382394)
(65536, 299761019)
};
% rnd
\addplot[smooth, very thick, color=red]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 372)
(2048, 15920)
(4096, 415855)
(8192, 6205711)
(16384, 24085187)
(32768, 73166081)
(65536, 146151486)
};
\end{axis}
\end{tikzpicture}

74
plots/samsung_current.tex Normal file
View File

@@ -0,0 +1,74 @@
\begin{tikzpicture}
\begin{axis}[
width = 0.85*\textwidth,
height = 8cm,
major x tick style = transparent,
ymajorgrids = true,
ylabel = {Current [\unit{\milli\ampere}]},
width=1.0\linewidth,
height=5.0cm,
symbolic x coords={
IDD2N,
IDD5AB,
IDD6,
IDD4R,
IDD4W*,
IDD0*,
},
xtick = data,
xticklabel style={rotate=90},
scaled y ticks = false,
enlarge x limits=0.1,
ybar=1*\pgflinewidth,
bar width=3pt,
ymin=0,
ymax=800,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
]
\addplot[style={green,fill=green,mark=none}] coordinates {
(IDD2N, 19.69333333)
%(IDD5AB*, 41.8137037)
(IDD5AB, 20.7)
(IDD6, 14.97111111)
(IDD4R, 281.5114815)
(IDD4W*, 152.7266667)
(IDD0*, 23.5362963)
};
\addplot[style={yellow,fill=yellow,mark=none}] coordinates {
(IDD2N, 20.09740741)
%(IDD5AB*, 55.08148148)
(IDD5AB, 21.7)
(IDD6, 19.34148148)
(IDD4R, 284.9177778)
(IDD4W*, 155.0948148)
(IDD0*, 23.48296296)
};
\addplot[style={orange,fill=orange,mark=none}] coordinates {
(IDD2N, 20.12407407)
%(IDD5AB*, 97.45555556)
(IDD5AB, 23.7)
(IDD6, 24.89185185)
(IDD4R, 288.3114815)
(IDD4W*, 156.6296296)
(IDD0*, 31.23555556)
};
\addplot[style={gray,fill=gray,mark=none}] coordinates {
(IDD2N, 32)
(IDD5AB, 60.3)
(IDD6, 45.5)
(IDD4R, 734.5)
(IDD4W*, 423.5)
(IDD0*, 78.5)
};
\legend{
\qty{30}{\celsius},
\qty{60}{\celsius},
\qty{90}{\celsius},
Datasheet
}
\end{axis}
\end{tikzpicture}

146
plots/samsung_spread.tex Normal file
View File

@@ -0,0 +1,146 @@
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=log,
xlabel={Retention Time [\unit{\milli\second}]},
ylabel={Number of Errors},
xmin=100, xmax=100000,
ymin=1, ymax=10000000000,
legend pos=north west,
legend style={font=\footnotesize, draw=none, fill=none},
width=1.0\linewidth,
height=5.0cm,
]
% 30:
\addplot[smooth,color=green, very thick, dashed]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 0 )
(4096, 0 )
(8192, 1 )
(16384, 105.6 )
(32768, 5883.4 )
(65536, 156554.4 )
};
\addplot[smooth,color=green, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 0 )
(4096, 0 )
(8192, 0 )
(16384, 40 )
(32768, 3021 )
(65536, 101628 )
};
\addplot[smooth,color=green, very thick]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 0)
(4096, 0)
(8192, 3)
(16384, 184)
(32768, 9804)
(65536, 228474)
};
%60:
\addplot[smooth,color=yellow, very thick, dashed]
coordinates {
(64, 0)
(128, 0)
(256, 0)
(512, 0)
(1024, 0)
(2048, 12.2)
(4096, 1371.4)
(8192, 66856.2)
(16384, 1311960.4)
(32768, 9150206)
(65536, 36184816)
};
\addplot[smooth,color=yellow, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 6 )
(4096, 1094 )
(8192, 56194 )
(16384, 994658 )
(32768, 8113636 )
(65536, 32840439 )
};
\addplot[smooth,color=yellow, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 0 )
(2048, 16)
(4096, 1566)
(8192, 75316)
(16384, 1455979)
(32768, 10625891)
(65536, 38996542)
};
%80:
\addplot[smooth,color=orange, very thick, dashed]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 311.4)
(2048, 25993.4)
(4096, 704927.4)
(8192, 5913702)
(16384, 29813208.6)
(32768, 78841532.4)
(65536, 155801192.2)
};
\addplot[smooth,color=orange, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 0 )
(1024, 237)
(2048, 15920)
(4096, 415855)
(8192, 5420352)
(16384, 24085187)
(32768, 73166081)
(65536, 146151486)
};
\addplot[smooth,color=orange, very thick]
coordinates {
(64, 0 )
(128, 0 )
(256, 0 )
(512, 7 )
(1024, 375)
(2048, 33405)
(4096, 882603)
(8192, 6476324)
(16384, 32814932)
(32768, 83437555)
(65536, 163719284)
};
\end{axis}
\end{tikzpicture}

1651
sample-base.bib Normal file

File diff suppressed because it is too large Load Diff

BIN
sw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB