From d366689ddcac2a03a51e1fb169938bbec1324496 Mon Sep 17 00:00:00 2001 From: "christ.derek" Date: Thu, 27 Jun 2024 08:50:03 +0000 Subject: [PATCH] Update on Overleaf. --- main.tex | 8 +-- model2.tex | 198 ++++++++++++++++++++++++++++++++++++++++------------ result1.tex | 39 ++++++----- result2.tex | 100 +++++++++++++------------- 4 files changed, 229 insertions(+), 116 deletions(-) diff --git a/main.tex b/main.tex index 0cbcdf8..8200754 100644 --- a/main.tex +++ b/main.tex @@ -106,7 +106,7 @@ % Dear Editor, -thank you for the valuable reviews of our journal paper. We revised the paper according to the recommendations of the reviewers. We used the long reviewing time also to further improve the quality and \todo{todo?}. +thank you for the valuable reviews of our journal paper. We revised the paper according to the recommendations of the reviewers. We used the long reviewing time also to further improve the quality and also refined some calculations due to discussions that we had with a DRAM vendor. The additional content of the journal is marked in \new{cyan}, and the additional/updated content of this first revision is marked in \newer{green}. % \subsection*{Reviewer 1} @@ -928,7 +928,7 @@ The offset is derived from the following equations, where $R$ is the original ro \begin{figure} \centering \input{model2} - \vspace{10cm} + % \vspace{10cm} \caption{\new{Safety Model of a Single LPDDR5 Channel}} \label{fig:model} \end{figure} @@ -958,8 +958,8 @@ In order to analyze the safety behavior of the provided DRAM system and the ECC If we take a look at the relative metrics shown in Figure~\ref{fig:relative}, we see that even with a DRAM fault rate below 304\,FIT, the SPFM threshold of 99\,\% of ASIL\,D can be reached easily. From the LFM perspective, ASIL\,D can be reached with even higher $\lambda_\mathrm{DRAM}$. Since both relative and absolute metrics must be met for any ASIL certification, we observe that, due to the remaining fault budget of 10\,FIT, the DRAM fault rate $\lambda_\mathrm{DRAM}$ must be below 2.7\,FIT to reach ASIL\,D. -This is well below reported failure rates in the field, so current safety measures are not sufficient to achieve ASIL\,D.} -\newer{While the newly added link ECC feature helps address interface errors that become more severe as data rates increase and I/O voltages decrease, it does not change how $\lambda_\mathrm{DRAM}$ propagates through the DRAM subsystem. +This is well below reported failure rates in the field, so the current safety measures are not sufficient to achieve ASIL\,D.} +\newer{While the newly added link ECC feature helps addressing interface errors that become more severe as data rates increase and I/O voltages decrease, it does not change how $\lambda_\mathrm{DRAM}$ propagates through the DRAM subsystem. Thus, our results for LPDDR5 are similar to the LPDDR4 results of the original conference paper. For a higher ASIL certification, it is necessary to introduce more robust and holistic safety measures within the DRAM and the memory controller as well as on software level.} %\todo{...Link ECC is only able to correct errors that happen on the bus. Parity bits are calculated directly before transmission and correction is done directly after transmission. Errors that are in the data before transmission (e.g., errors from the array) are just propagated and are still in the data after transmission. Original paper considered lower error rates for link and only MBE, in this paper we distinguish between SBE/DBE/MBE, LP4 has higher VDDQ and lower data rates (max 4266 vs max 6400 for LP5 and 8533 for LP5X), AZ error rate is the same and dominant, SBE of LP5 are corrected by link ECC, only small influence on final result, what about latent failures of link ECC coverage block?} diff --git a/model2.tex b/model2.tex index dc01d32..b260ece 100644 --- a/model2.tex +++ b/model2.tex @@ -1,18 +1,18 @@ \resizebox{!}{0.94\textheight}{% \begin{circuitikz} \newcommand{\add}[2]{ - \draw #1 node[draw, circle](#2){$+$}; + \draw #1 node[draw, circle,fill=white](#2){$+$}; } \newcommand{\basicevent}[4]{ \draw #1 node[draw, circle,inner sep=0,minimum size=1cm,align=center](#2){#3 \\ \tiny $#4$}; } \newcommand{\lane}[4]{ \def\height{#3} - \draw(#1) node[draw, minimum width=16cm, minimum height=\height, outer sep=0, anchor=south west](#2lane){}; + \draw #1 node[draw, minimum width=16cm, minimum height=\height, outer sep=0, anchor=south west](#2lane){}; \draw(#2lane.west) node[anchor=south, outer sep=0, minimum width=\height,rotate=90](#2lable){#4}; } % DRAM: - \lane{0,0}{dram}{1.75cm}{DRAM} + \lane{(0,0)}{dram}{1.75cm}{DRAM} %outputs \draw (dramlane.north) ++(-5.25,0) node[outport, anchor=south](dram_wd_out){}; \draw (dramlane.north) ++(-1.75,0) node[outport, anchor=south](dram_sbe_out) {}; @@ -30,7 +30,7 @@ \draw[-Triangle,red] (mbe.north) -- (dram_mbe_out); % SEC: - \lane{0,3.75}{sec}{3.5cm}{SEC} + \lane{(dramlane.north west) ++(0,1)}{sec}{3.5cm}{SEC} % inputs \draw (seclane.south) ++(-5.25,0) node[inport, anchor=north](sec_wd_in){}; \draw (seclane.south) ++(-1.75,0) node[inport, anchor=north](sec_sbe_in) {}; @@ -45,7 +45,7 @@ \draw (seclane.north) ++(5.25,0) node[outport, anchor=south](sec_mbe_out){}; \draw (seclane.north) ++(+7,0) node[outport, anchor=south](sec_sb_out){}; % blocks - \draw (sec_sbe_in.north) ++(0,0.5) node[coverage, anchor=in, coverage residual=10\%, coverage latent=0\%] (seccov){}; + \draw (sec_sbe_in.north) ++(0,0.5) node[coverage, anchor=in, coverage residual=100\%, coverage latent=0\%] (seccov){}; \draw (sec_dbe_in.north) ++(0,0.5) node[split2, anchor=in, split2 left=83\%, split2 right=17\%] (secsplit){}; \basicevent{(sec_sb_out) ++(0,-1.5)}{sb}{SB}{0.1} % inner connections @@ -60,13 +60,13 @@ \draw[-Triangle,blue] (sb) -- (sec_sb_out); % dram -> SEC - \draw[-Triangle,red] (dram_wd_out.north) -- (sec_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny TODO}; - \draw[-Triangle,red] (dram_sbe_out.north) -- (sec_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny TODO}; - \draw[-Triangle,red] (dram_dbe_out.north) -- (sec_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny TODO}; - \draw[-Triangle,red] (dram_mbe_out.north) -- (sec_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny TODO}; + \draw[-Triangle,red] (dram_wd_out.north) -- (sec_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny 172}; + \draw[-Triangle,red] (dram_sbe_out.north) -- (sec_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny 1610}; + \draw[-Triangle,red] (dram_dbe_out.north) -- (sec_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny 172}; + \draw[-Triangle,red] (dram_mbe_out.north) -- (sec_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny 172}; % DRAM-TRIM: - \lane{0,8.5}{dramtrim}{5cm}{DRAM-TRIM} + \lane{(seclane.north west) ++(0,1.5)}{dramtrim}{5cm}{DRAM-TRIM} % inputs \draw (dramtrimlane.south) ++(-5.25,0) node[inport, anchor=north](dram_trim_wd_in){}; \draw (dramtrimlane.south) ++(-2.5,0) node[inport, anchor=north](dram_trim_sbe_in){}; @@ -76,7 +76,7 @@ % blocks \draw (dram_trim_sbe_in.north) ++(-2,0.5) node[split1, anchor=in, split1 top=94\%] (dram_trim_sbe_split){}; \draw (dram_trim_dbe_in.north) ++(-2.5,0.5) node[split2, anchor=in, split2 left=11\%, split2 right=89\%] (dram_trim_dbe_split){}; - \draw (dram_trim_tbe_in.north) ++(0,0.5) node[split3, anchor=in, split3 left=0.9\%, split3 middle=16\%, split3 right=83\%] (dram_trim_tbe_split){}; + \draw (dram_trim_tbe_in.north) ++(0,0.5) node[split3, anchor=in, split3 left=0.9\%, split3 middle=15\%, split3 right=83\%] (dram_trim_tbe_split){}; \add {(dram_trim_dbe_split.out 1) ++(0,0.75)}{dram_trim_sbe_add}; \add {(dram_trim_tbe_split.out 1) ++(0,1.35)}{dram_trim_dbe_add}; % outputs @@ -101,14 +101,14 @@ \draw[-Triangle,red] (dram_trim_mbe_in.north) -- (dram_trim_mbe_out.south); % sec -> DRAM-TRIM - \draw[-Triangle,red] (sec_wd_out.north) -- (dram_trim_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny TODO}; - \draw[-Triangle,red] (sec_sbe_out.north) -- (dram_trim_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny TODO}; - \draw[-Triangle,red] (sec_dbe_out.north) -- (dram_trim_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny TODO}; - \draw[-Triangle,red] (sec_tbe_out.north) -- (dram_trim_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny TODO}; - \draw[-Triangle,red] (sec_mbe_out.north) -- (dram_trim_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny TODO}; + \draw[-Triangle,red] (sec_wd_out.north) -- (dram_trim_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny 172}; + \draw[-Triangle,red] (sec_sbe_out.north) -- (dram_trim_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny 0}; + \draw[-Triangle,red] (sec_dbe_out.north) -- (dram_trim_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny 142.8}; + \draw[-Triangle,red] (sec_tbe_out.north) -- (dram_trim_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny 29.2}; + \draw[-Triangle,red] (sec_mbe_out.north) -- (dram_trim_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny 172}; % BUS-TRIM: - \lane{0,15}{bustrim}{5cm}{BUS-TRIM} + \lane{(dramtrimlane.north west) ++(0,1)}{bustrim}{5cm}{BUS-TRIM} % inputs \draw (bustrimlane.south -| dram_trim_wd_out) node[inport, anchor=north](bus_trim_wd_in){}; \draw (bustrimlane.south -| dram_trim_sbe_out) node[inport, anchor=north](bus_trim_sbe_in){}; @@ -116,16 +116,16 @@ \draw (bustrimlane.south -| dram_trim_tbe_out) node[inport, anchor=north](bus_trim_tbe_in){}; \draw (bustrimlane.south -| dram_trim_mbe_out) node[inport, anchor=north](bus_trim_mbe_in){}; % DRAM-TRIM -> BUS-TRIM - \draw[-Triangle,red] (dram_trim_wd_out.north) -- (bus_trim_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny TODO}; - \draw[-Triangle,red] (dram_trim_sbe_out.north) -- (bus_trim_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny TODO}; - \draw[-Triangle,red] (dram_trim_dbe_out.north) -- (bus_trim_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny TODO}; - \draw[-Triangle,red] (dram_trim_tbe_out.north) -- (bus_trim_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny TODO}; - \draw[-Triangle,red] (dram_trim_mbe_out.north) -- (bus_trim_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny TODO}; + \draw[-Triangle,red] (dram_trim_wd_out.north) -- (bus_trim_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny 172}; + \draw[-Triangle,red] (dram_trim_sbe_out.north) -- (bus_trim_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny 16.0}; + \draw[-Triangle,red] (dram_trim_dbe_out.north) -- (bus_trim_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny 131.5}; + \draw[-Triangle,red] (dram_trim_tbe_out.north) -- (bus_trim_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny 24.3}; + \draw[-Triangle,red] (dram_trim_mbe_out.north) -- (bus_trim_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny 172}; % blocks \draw (bus_trim_sbe_in.north) ++(-1.5,0.5) node[split1, anchor=in, split1 top=43.8\%] (bus_trim_sbe_split){}; \draw (bus_trim_dbe_in.north) ++(-2,0.5) node[split2, anchor=in, split2 left=49.6\%, split2 right=31.4\%] (bus_trim_dbe_split){}; \draw (bus_trim_tbe_in.north) ++(0,0.5) node[split3, anchor=in, split3 left=32.5\%, split3 middle=41.9\%, split3 right=17.5\%] (bus_trim_tbe_split){}; - \basicevent{(bus_trim_sbe_split) ++(-2,1.75)}{az}{AZ}{172} + \basicevent{(bus_trim_sbe_split) ++(-2,1.75)}{az}{AZ}{172}; \add {(bus_trim_dbe_split.out 1) ++(0,0.75)}{bus_trim_sbe_add}; \add {(bus_trim_tbe_split.out 1) ++(0,1.35)}{bus_trim_dbe_add}; % outputs @@ -153,7 +153,7 @@ \draw[-Triangle,red] (bus_trim_tbe_split.out 3) -- (bus_trim_tbe_out.south); % LINK-ECC: - \lane{0,22}{linkecc}{5cm}{LINK-ECC} + \lane{(bustrimlane.north west) ++(0,1)}{linkecc}{5cm}{LINK-ECC} % inputs \draw (linkecclane.south -| bus_trim_wd_out) node[inport, anchor=north](linkecc_wd_in){}; \draw (linkecclane.south -| bus_trim_az_out) node[inport, anchor=north](linkecc_az_in){}; @@ -169,14 +169,14 @@ \draw (linkecclane.north -| linkecc_tbe_in) node[outport, anchor=south](linkecc_tbe_out){}; \draw (linkecclane.north -| linkecc_mbe_in) node[outport, anchor=south](linkecc_mbe_out){}; % BUS-TRIM -> LINK-ECC - \draw[-Triangle,red] (bus_trim_wd_out.north) -- (linkecc_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny TODO}; - \draw[-Triangle,red] (bus_trim_az_out.north) -- (linkecc_az_in.south) node[anchor=east,midway,align=center]{AZ \\ \tiny TODO}; - \draw[-Triangle,red] (bus_trim_sbe_out.north) -- (linkecc_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny TODO}; - \draw[-Triangle,red] (bus_trim_dbe_out.north) -- (linkecc_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny TODO}; - \draw[-Triangle,red] (bus_trim_tbe_out.north) -- (linkecc_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny TODO}; - \draw[-Triangle,red] (bus_trim_mbe_out.north) -- (linkecc_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny TODO}; + \draw[-Triangle,red] (bus_trim_wd_out.north) -- (linkecc_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny 172}; + \draw[-Triangle,red] (bus_trim_az_out.north) -- (linkecc_az_in.south) node[anchor=east,midway,align=center]{AZ \\ \tiny 172}; + \draw[-Triangle,red] (bus_trim_sbe_out.north) -- (linkecc_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny 80.1}; + \draw[-Triangle,red] (bus_trim_dbe_out.north) -- (linkecc_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny 51.5}; + \draw[-Triangle,red] (bus_trim_tbe_out.north) -- (linkecc_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny 4.2}; + \draw[-Triangle,red] (bus_trim_mbe_out.north) -- (linkecc_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny 172}; % blocks - \basicevent{(linkecc_sbe_in) ++(1,1)}{linkecc_sbe}{SBE}{6 \cdot 10^8} + \basicevent{(linkecc_sbe_in) ++(1,1)}{linkecc_sbe}{SBE}{5 \cdot 10^9} \draw (linkecc_sbe) ++(0,0.9) node[coverage, anchor=in, coverage residual=100\%, coverage latent=100\%] (linkecc_cov){}; \add {(linkecc_sbe_out) ++(0,-0.75)}{linkecc_add}; \draw (linkecclane.north -| linkecc_cov.lat) node[outport, anchor=south](linkecc_sbe_lat_out){}; @@ -193,7 +193,7 @@ \draw[-Triangle,blue] (linkecc_cov.lat) -- (linkecc_sbe_lat_out); % SEC-DED: - \lane{0,29}{secded}{6cm}{SEC-DED} + \lane{(linkecclane.north west) ++(0,1)}{secded}{6cm}{SEC-DED} % inputs \draw (secdedlane.south -| linkecc_wd_out) node[inport, anchor=north](secded_wd_in){}; \draw (secdedlane.south -| linkecc_az_out) node[inport, anchor=north](secded_az_in){}; @@ -202,19 +202,19 @@ \draw (secdedlane.south -| linkecc_tbe_out) node[inport, anchor=north](secded_tbe_in){}; \draw (secdedlane.south -| linkecc_mbe_out) node[inport, anchor=north](secded_mbe_in){}; % LINK-ECC -> SEC-DED - \draw[-Triangle,red] (linkecc_wd_out.north) -- (secded_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny TODO}; - \draw[-Triangle,red] (linkecc_az_out.north) -- (secded_az_in.south) node[anchor=east,midway,align=center]{AZ \\ \tiny TODO}; - \draw[-Triangle,red] (linkecc_sbe_out.north) -- (secded_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny TODO}; - \draw[-Triangle,red] (linkecc_dbe_out.north) -- (secded_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny TODO}; - \draw[-Triangle,red] (linkecc_tbe_out.north) -- (secded_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny TODO}; - \draw[-Triangle,red] (linkecc_mbe_out.north) -- (secded_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny TODO}; + \draw[-Triangle,red] (linkecc_wd_out.north) -- (secded_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny 172}; + \draw[-Triangle,red] (linkecc_az_out.north) -- (secded_az_in.south) node[anchor=east,midway,align=center]{AZ \\ \tiny 172}; + \draw[-Triangle,red] (linkecc_sbe_out.north) -- (secded_sbe_in.south) node[anchor=east,midway,align=center]{SBE \\ \tiny 80.1}; + \draw[-Triangle,red] (linkecc_dbe_out.north) -- (secded_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny 51.5}; + \draw[-Triangle,red] (linkecc_tbe_out.north) -- (secded_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny 4.2}; + \draw[-Triangle,red] (linkecc_mbe_out.north) -- (secded_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny 172}; % blocks - \draw (secded_sbe_in) ++(-0.75,0.5) node[coverage, anchor=in, coverage residual=100\%, coverage latent=100\%] (secded_sbe_cov){}; + \draw (secded_sbe_in) ++(-0.75,0.75) node[coverage, anchor=in, coverage residual=100\%, coverage latent=100\%] (secded_sbe_cov){}; \draw (secded_sbe_cov.east) ++(0.5,0) node[coverage, anchor=west, coverage residual=100\%, coverage latent=100\%] (secded_dbe_cov){}; - \draw (secded_dbe_cov.east) ++(0.5,0) node[split2, anchor=west] (secded_tbe_split){}; - \draw (secded_tbe_split.east) ++(0.5,0) node[coverage, anchor=west, coverage residual=50\%, coverage latent=100\%] (secded_mbe_cov){}; - \basicevent{(secded_mbe_cov.north east) ++(0.65,1.5)}{secded_sdb}{SDB}{0.1} - \draw (secded_tbe_split.out 1) ++(0,0.5) node[coverage, anchor=in, coverage residual=100\%, coverage latent=100\%] (secded_tbe_cov){}; + \draw (secded_dbe_cov.east) ++(0.5,0) node[split2, anchor=west,split2 left=44\%,split2 right=56\%] (secded_tbe_split){}; + \draw (secded_tbe_split.east) ++(0.5,0) node[coverage, anchor=west, coverage residual=50\%, coverage latent=50\%] (secded_mbe_cov){}; + \basicevent{(secded_mbe_cov.north east) ++(0.5,1.5)}{secded_sdb}{SDB}{0.1} + \draw (secded_tbe_split.out 1) ++(0,0.25) node[coverage, anchor=in, coverage residual=100\%, coverage latent=100\%] (secded_tbe_cov){}; \add {(secded_mbe_cov.res) ++(0,1.5)}{secded_add}; % outputs \draw (secdedlane.north -| secded_wd_in) ++(-0.5,0) node[outport, anchor=south](secded_wd_out){}; @@ -239,6 +239,118 @@ \draw[-Triangle,blue] (secded_sdb) -- (secded_sdb_lat_out); \draw[-Triangle,red] (secded_wd_in) -- ++(0,0.25) coordinate (secded_c0) -- (secded_c0 -| secded_wd_out) -- (secded_wd_out); \draw[-Triangle,red] (secded_az_in) -- ++(0,0.5) coordinate (secded_c1) -- (secded_c1 -| secded_az_out) -- (secded_az_out); + \draw[-Triangle,red] (secded_sbe_in) -- ++(0,0.25) coordinate (secded_c2) -- (secded_c2 -| secded_sbe_cov.in) -- (secded_sbe_cov.in); + \draw[-Triangle,red] (secded_dbe_in) -- ++(0,0.25) coordinate (secded_c3) -- (secded_c3 -| secded_dbe_cov.in) -- (secded_dbe_cov.in); + \draw[-Triangle,red] (secded_tbe_in) -- ++(0,0.5) coordinate (secded_c4) -- (secded_c4 -| secded_tbe_split.in) -- (secded_tbe_split.in); + \draw[-Triangle,red] (secded_mbe_in) -- ++(0,0.25) coordinate (secded_c5) -- (secded_c5 -| secded_mbe_cov.in) -- (secded_mbe_cov.in); + \draw[-Triangle,red] (secded_tbe_split.out 1) -- (secded_tbe_cov.in); + \draw[-Triangle,red] (secded_mbe_cov.res) -- (secded_add.south); + \draw[-Triangle,red] (secded_add.north) -- (secded_mbe_out); + \draw[-Triangle,red] (secded_tbe_split.out 2) -- ++(0,0.25) -- ++(0.25,0) coordinate (secded_c6) -- (secded_c6 |- secded_add) -- (secded_add.west); + + % SEC-DED-TRIM: + \lane{(secdedlane.north west) ++(0,3)}{secdedtrim}{5cm}{SEC-DED-TRIM} + % inputs + \draw (secdedtrimlane.south -| secded_wd_out) node[inport, anchor=north](secdedtrim_wd_in){}; + \draw (secdedtrimlane.south -| secded_az_out) node[inport, anchor=north](secdedtrim_az_in){}; + \draw (secdedtrimlane.south -| secded_sbe_out) node[inport, anchor=north](secdedtrim_sbe_in){}; + \draw (secdedtrimlane.south -| secded_dbe_out) node[inport, anchor=north](secdedtrim_dbe_in){}; + \draw (secdedtrimlane.south -| secded_tbe_out) node[inport, anchor=north](secdedtrim_tbe_in){}; + \draw (secdedtrimlane.south -| secded_mbe_out) node[inport, anchor=north](secdedtrim_mbe_in){}; + % SEC-DED -> SEC-DED-TRIM + \draw[-Triangle,red] (secded_wd_out.north) -- (secdedtrim_wd_in.south) node[anchor=east,midway,align=center]{WD \\ \tiny 172}; + \draw[-Triangle,red] (secded_az_out.north) -- (secdedtrim_az_in.south) node[anchor=west,midway,align=center]{AZ \\ \tiny 172}; + \draw[-Triangle,red] (secded_sbe_out.north) -- (secdedtrim_sbe_in.south) node[anchor=west,midway,align=center]{SBE \\ \tiny 0}; + \draw[-Triangle,red] (secded_dbe_out.north) -- (secdedtrim_dbe_in.south) node[anchor=east,midway,align=center]{DBE \\ \tiny 0}; + \draw[-Triangle,red] (secded_tbe_out.north) -- (secdedtrim_tbe_in.south) node[anchor=east,midway,align=center]{TBE \\ \tiny 0}; + \draw[-Triangle,red] (secded_mbe_out.north) -- (secdedtrim_mbe_in.south) node[anchor=east,midway,align=center]{MBE \\ \tiny 88.4}; + % blocks + \draw (secdedtrim_dbe_in.north) ++(0,0.75) node[split2, anchor=in, split2 left=20\%, split2 right=79\%] (secdedtrim_dbe_split){}; + \draw (secdedtrim_dbe_split.west) ++(-0.75,0) node[split1, anchor=east, split1 top=89\%] (secdedtrim_sbe_split){}; + \draw (secdedtrim_dbe_split.east) ++(0.75,0) node[split3, anchor=west, split3 left=3\%, split3 middle=27\%, split3 right=70\%] (secdedtrim_tbe_split){}; + \add {(secdedtrim_dbe_split.out 1) ++(0,0.7)}{secdedtrim_sbe_add}; + \add {(secdedtrim_tbe_split.out 2) ++(0,1)}{secdedtrim_dbe_add}; + % outputs + \draw (secdedtrimlane.north -| secdedtrim_wd_in) node[outport, anchor=south](secdedtrim_wd_out){}; + \draw (secdedtrimlane.north -| secdedtrim_az_in) node[outport, anchor=south](secdedtrim_az_out){}; + \draw (secdedtrimlane.north -| secdedtrim_sbe_add.north) node[outport, anchor=south](secdedtrim_sbe_out){}; + \draw (secdedtrimlane.north -| secdedtrim_dbe_add.north) node[outport, anchor=south](secdedtrim_dbe_out){}; + \draw (secdedtrimlane.north -| secdedtrim_tbe_split.out 3) node[outport, anchor=south](secdedtrim_tbe_out){}; + \draw (secdedtrimlane.north -| secdedtrim_mbe_in) node[outport, anchor=south](secdedtrim_mbe_out){}; + % inner connections + \draw[-Triangle,red] (secdedtrim_wd_in) -- (secdedtrim_wd_out); + \draw[-Triangle,red] (secdedtrim_az_in) -- (secdedtrim_az_out); + \draw[-Triangle,red] (secdedtrim_sbe_split.out 1) -- (secdedtrim_sbe_add -| secdedtrim_sbe_split.out 1) -- (secdedtrim_sbe_add.west); + \draw[-Triangle,red] (secdedtrim_dbe_split.out 1) -- (secdedtrim_sbe_add.south); + \draw[-Triangle,red] (secdedtrim_tbe_split.out 1) -- (secdedtrim_sbe_add -| secdedtrim_tbe_split.out 1) -- (secdedtrim_sbe_add.east); + \draw[-Triangle,red] (secdedtrim_dbe_split.out 2) -- (secdedtrim_dbe_add -| secdedtrim_dbe_split.out 2) -- (secdedtrim_dbe_add.west); + \draw[-Triangle,red] (secdedtrim_tbe_split.out 2) -- (secdedtrim_dbe_add.south); + \draw[-Triangle,red] (secdedtrim_tbe_split.out 3) -- (secdedtrim_tbe_out); + \draw[-Triangle,red] (secdedtrim_sbe_add.north) -- (secdedtrim_sbe_out); + \draw[-Triangle,red] (secdedtrim_dbe_add.north) -- (secdedtrim_dbe_out); + \draw[-Triangle,red] (secdedtrim_mbe_in) -- (secdedtrim_mbe_out); + \draw[-Triangle,red] (secdedtrim_sbe_in) -- ++(0,0.5) coordinate (secdedtrim_c0) -- (secdedtrim_c0 -| secdedtrim_sbe_split.in) -- (secdedtrim_sbe_split.in); + \draw[-Triangle,red] (secdedtrim_dbe_in) -- (secdedtrim_dbe_split.in); + \draw[-Triangle,red] (secdedtrim_tbe_in) -- ++(0,0.5) coordinate (secdedtrim_c1) -- (secdedtrim_c1 -| secdedtrim_tbe_split.in) -- (secdedtrim_tbe_split.in); + + % ASIL + \lane{(secdedtrimlane.north west) ++(0,4)}{asil}{2cm}{ASIL} + \draw (asillane) node[]() {\large \textbf{Calculate ASIL}}; + \draw (asillane.east) ++(2,0) node[red](spfm) {$\mathrm{SPFM} = 89.45\%$}; + \draw (spfm.south) ++(0,-0.15) node[blue,anchor=north](lfm) {$\mathrm{LFM} = 54.86\%$}; + % inputs + \draw (asillane.south) ++(-5,0) node[inport, anchor=north](asil_res_in){}; + \draw (asillane.south) ++(+5,0) node[inport, anchor=north](asil_lat_in){}; + % adder + \draw (asil_res_in) ++(0,-1.25) node[draw, circle, minimum size=1cm](asil_res_add){$+$}; + % \coordinate (asil_lat_add) at (asil_lat_in) +(0,-1.25); + \basicevent{(asil_res_add) ++(-2,0)}{other}{Other}{9.5}; + % connections + \draw[-Triangle,red,dashed] (other) -- (asil_res_add); + \draw[-Triangle,red] (secdedtrim_wd_out.north) -- +(0,0.75) node[anchor=east,midway,align=center]{WD \\ \tiny 172} -- (asil_res_add); + \draw[-Triangle,red] (secdedtrim_az_out.north) -- +(0,0.75) node[anchor=west,midway,align=center]{AZ \\ \tiny 172} -- (asil_res_add); + \draw[-Triangle,red] (secdedtrim_sbe_out.north) -- +(0,0.75) node[anchor=east,midway,align=center]{SBE \\ \tiny 0} -- (asil_res_add); + \draw[-Triangle,red] (secdedtrim_dbe_out.north) -- +(0,0.75) node[anchor=east,midway,align=center]{DBE \\ \tiny 0} -- +(-3,0.75) -- (asil_res_add); + \draw[-Triangle,red] (secdedtrim_tbe_out.north) -- +(0,1.15) node[anchor=west,midway,align=center]{TBE \\ \tiny 0} -- +(-4,1.15) -- (asil_res_add); + \draw[-Triangle,red] (secdedtrim_mbe_out.north) -- +(0,1.55) node[anchor=west,midway,align=center]{MBE \\ \tiny 88.4} -- +(-6.1,1.55) -- (asil_res_add); + % \draw[-Triangle,red] (asil_res_add) -- (asil_res_in) node[anchor=west,midway,align=center]{$\lambda_{RF}=$}; + % \draw[-Triangle,blue] (asil_lat_add) -- (asil_lat_in) node[anchor=west,midway,align=center]{$\lambda_{MPF,L}=$}; + + \draw[gray, dashed] (dramtrimlane.north west) ++(-4,0.5) -- ++(24,0); + \draw[gray, dashed] (linkecclane.north west) ++(-4,0.5) -- ++(24,0); + \draw[gray, dashed] (secdedtrimlane.north west) ++(-4,0.5) -- ++(24,0); + + \draw[gray!50](22,7) node(){\Huge \bf DRAM}; + \draw[gray!50](22,19) node(){\Huge \bf BUS}; + \draw[gray!50](22,33) node(){\Huge \bf SoC}; + + % latent connections + \add {(seclane.north east) ++(1,0.75)}{sec_lat_add}; + \draw[-Triangle,blue] (sec_sb_out) -- ++(0,0.4) node[anchor=east,align=center](latsb0){SB \\ \tiny 0.1} -- (latsb0 -| seclane.east) -- (sec_lat_add); + \draw[-Triangle,blue] (sec_sbe_lat_out) -- ++(0,1) node[anchor=east,align=center](latsbe0){SBE \\ \tiny 0} -- (latsbe0 -| seclane.east) -- (sec_lat_add); + + \add {(linkecclane.north east) ++(1,0.5)}{linkecc_lat_add}; + \draw[-Triangle,blue] (sec_lat_add) -- (linkecc_lat_add); + \draw[-Triangle,blue] (linkecc_sbe_lat_out) -- ++(0,0.4) node[anchor=east,align=center]{SBE \\ \tiny 0} -- (linkecc_lat_add); + + \add {(secdedlane.north east) ++(1,1.5)}{secded_lat_add}; + \draw[-Triangle,blue] (linkecc_lat_add) -- (secded_lat_add); + \draw[-Triangle,blue] (secded_sdb_lat_out) -- ++(0,0.5) node[anchor=east,align=center](secdedsb_lat){SDB \\ \tiny 0.1} -- (secdedsb_lat -| secdedlane.east) -- (secded_lat_add); + \draw[-Triangle,blue] (secded_mbe_lat_out) -- ++(0,1.0) node[anchor=east,align=center](secdedmbe_lat){MBE \\ \tiny 86} -- (secdedmbe_lat -| secdedlane.east) -- (secded_lat_add); + \draw[-Triangle,blue] (secded_tbe_lat_out) -- ++(0,1.5) node[anchor=east,align=center](secdedtbe_lat){TBE \\ \tiny 0} -- (secdedtbe_lat -| secdedlane.east) -- (secded_lat_add); + \draw[-Triangle,blue] (secded_dbe_lat_out) -- ++(0,2.0) node[anchor=east,align=center](secdeddbe_lat){DBE \\ \tiny 0} -- (secdeddbe_lat -| secdedlane.east) -- (secded_lat_add); + \draw[-Triangle,blue] (secded_sbe_lat_out) -- ++(0,2.5) node[anchor=east,align=center](secdedsbe_lat){SBE \\ \tiny 0} -- (secdedsbe_lat -| secdedlane.east) -- (secded_lat_add); + + \draw[-Triangle,red] (asil_res_add) -- (asil_res_in) node[anchor=west,midway,align=center]{$\lambda_\mathrm{RF}=441.9$}; + \draw[-Triangle,blue] (secded_lat_add) -- ++(0,9) coordinate (secdedlatc0) -- (secdedlatc0 -| asil_lat_in) -- (asil_lat_in) node[anchor=west,near end,align=center]{$\lambda_\mathrm{MPF,L}=1696.3$}; + + %Legends: + \draw(22.5,3.5) node(){\Large \textbf{Legend:}}; + \draw[red](22.5,2.75) node(){\Large $\lambda_\mathrm{RF}$}; + \draw[blue](22.5,2.0) node(){\Large $\lambda_\mathrm{MPF,L}$}; + + % Additional text + \draw(linkecclane.south east) node[anchor=south east](){\tiny DBE and MBE not drawn for sake of space}; \end{circuitikz}% } \ No newline at end of file diff --git a/result1.tex b/result1.tex index 4ddbb5c..862742f 100644 --- a/result1.tex +++ b/result1.tex @@ -68,25 +68,26 @@ % (2000, 184.975) % (2500, 231.169) -(0.01, 0.307) -(0.0206913808111479, 0.314484) -(0.04281332398719394, 0.329969) -(0.08858667904100823, 0.362011) -(0.18329807108324356, 0.428309) -(0.37926901907322497, 0.565488) -(0.7847599703514611, 0.849332) -(1.623776739188721, 1.43664) -(3.359818286283781, 2.65187) -(6.951927961775605, 5.16635) -(14.38449888287663, 10.3691) -(29.76351441631316, 21.1345) -(61.584821106602604, 43.4094) -(127.42749857031322, 89.4992) -(263.6650898730355, 184.866) -(545.5594781168514, 382.192) -(1128.8378916846884, 790.487) -(2335.7214690901214, 1635.31) -(4832.930238571752, 3383.35) +(0.01, 0.307374) +(0.0206913808111479, 0.315258) +(0.04281332398719394, 0.331571) +(0.08858667904100823, 0.365324) +(0.18329807108324356, 0.435164) +(0.37926901907322497, 0.579673) +(0.7847599703514611, 0.878682) +(1.623776739188721, 1.49737) +(3.359818286283781, 2.77753) +(6.951927961775605, 5.42635) +(14.38449888287663, 10.9071) +(29.76351441631316, 22.2476) +(61.584821106602604, 45.7126) +(127.42749857031322, 94.265) +(263.6650898730355, 194.727) +(545.5594781168514, 402.596) +(1128.8378916846884, 832.705) +(2335.7214690901214, 1722.66) +(4832.930238571752, 3564.1) +(10000.0, 7374.3) }; \addplot[smooth,color=red!30, style=dashed] diff --git a/result2.tex b/result2.tex index dc429b1..b7a7b96 100644 --- a/result2.tex +++ b/result2.tex @@ -1,8 +1,8 @@ \begin{tikzpicture} \begin{axis}[ xmode=log, - xmin=1, xmax=2500, - ymin=50, ymax=110, + xmin=1e-2, xmax=2500, + ymin=50, ymax=109, ylabel={SPFM and LFM [\%]}, xlabel={$\lambda_\mathrm{DRAM}$ [FIT]}, width=\linewidth, @@ -26,25 +26,25 @@ coordinates { % (2000, 81.1966) % (2500, 81.1966) -(1.0, 99.4904) -(1.6237767391887217, 99.4844) -(2.636650898730358, 99.4746) -(4.281332398719393, 99.4588) +(0.01, 99.4999) +(0.0206913808111479, 99.4998) +(0.04281332398719394, 99.4996) +(0.08858667904100823, 99.4991) +(0.18329807108324356, 99.4982) +(0.37926901907322497, 99.4963) +(0.7847599703514611, 99.4924) +(1.623776739188721, 99.4844) +(3.359818286283781, 99.4677) (6.951927961775605, 99.4333) -(11.28837891684689, 99.3919) -(18.329807108324356, 99.3251) -(29.76351441631318, 99.2177) -(48.32930238571752, 99.046) -(78.47599703514611, 98.774) -(127.42749857031335, 98.3496) -(206.913808111479, 97.7025) -(335.9818286283781, 96.7497) +(14.38449888287663, 99.3625) +(29.76351441631316, 99.2177) +(61.584821106602604, 98.9254) +(127.42749857031322, 98.3496) +(263.6650898730355, 97.2695) (545.5594781168514, 95.4168) -(885.8667904100823, 93.6798) -(1438.449888287663, 91.6135) +(1128.8378916846884, 92.6784) (2335.7214690901214, 89.4069) -(3792.690190732246, 87.3055) -(6158.48211066026, 85.5121) +(4832.930238571752, 86.3617) (10000.0, 84.119) }; @@ -63,26 +63,26 @@ coordinates { % (2000, 88.6094) % (2500, 88.6119) -(1.0, 99.9471) -(1.6237767391887217, 99.9241) -(2.636650898730358, 99.8866) -(4.281332398719393, 99.8259) -(6.951927961775605, 99.7275) -(11.28837891684689, 99.5682) -(18.329807108324356, 99.3109) -(29.76351441631318, 98.8962) -(48.32930238571752, 98.2313) -(78.47599703514611, 97.1736) -(127.42749857031335, 95.5115) -(206.913808111479, 92.9493) -(335.9818286283781, 89.1145) -(545.5594781168514, 83.6214) -(885.8667904100823, 76.2277) -(1438.449888287663, 67.068) -(2335.7214690901214, 56.8182) -(3792.690190732246, 46.5762) -(6158.48211066026, 37.4365) -(10000.0, 30.068) +(0.01, 99.9837) +(0.0206913808111479, 99.9833) +(0.04281332398719394, 99.9825) +(0.08858667904100823, 99.9807) +(0.18329807108324356, 99.977) +(0.37926901907322497, 99.9693) +(0.7847599703514611, 99.9535) +(1.623776739188721, 99.9209) +(3.359818286283781, 99.8533) +(6.951927961775605, 99.7138) +(14.38449888287663, 99.4266) +(29.76351441631316, 98.838) +(61.584821106602604, 97.6443) +(127.42749857031322, 95.2725) +(263.6650898730355, 90.7475) +(545.5594781168514, 82.747) +(1128.8378916846884, 70.3355) +(2335.7214690901214, 54.5115) +(4832.930238571752, 38.705) +(10000.0, 26.3318) }; \legend{ @@ -92,47 +92,47 @@ coordinates { \addplot[smooth,color=red!30] coordinates { - (1, 90) + (1e-2, 90) (2500, 90) }; \addplot[smooth,color=red!30, style=dashed] coordinates { - (1, 97) + (1e-2, 97) (2500, 97) }; \addplot[smooth,color=red!30, style=dashed] coordinates { - (1, 99) + (1e-2, 99) (2500, 99) }; \addplot[smooth,color=blue!30, style=dashed] coordinates { - (1, 90) + (1e-2, 90) (2500, 90) }; \addplot[smooth,color=blue!30, style=dashed] coordinates { - (1, 80) + (1e-2, 80) (2500, 80) }; \addplot[smooth,color=blue!30, style=dashed] coordinates { - (1, 60) + (1e-2, 60) (2500, 60) }; -\node[color=blue!30] at (axis cs: 600,92) {\scriptsize ASIL\,D (LFM $> 90\%$)}; -\node[color=blue!30] at (axis cs: 600,82) {\scriptsize ASIL\,C (LFM $> 80\%$)}; -\node[color=blue!30] at (axis cs: 600,62) {\scriptsize ASIL\,B (LFM $> 60\%$)}; -\node[color=red!30] at (axis cs: 4,92) {\scriptsize ASIL\,B (SPFM $>90\%$)}; -\node[color=red!30] at (axis cs: 15.8,102) {\scriptsize ASIL\,C (SPFM $>97\%$), ASIL-D (SPFM $>99\%$)}; +\node[color=blue!30] at (axis cs: 1e-1,92) {\scriptsize ASIL\,D (LFM $> 90\%$)}; +\node[color=blue!30] at (axis cs: 1e-1,82) {\scriptsize ASIL\,C (LFM $> 80\%$)}; +\node[color=blue!30] at (axis cs: 1e-1,62) {\scriptsize ASIL\,B (LFM $> 60\%$)}; +\node[color=red!30] at (axis cs: 6,92) {\scriptsize ASIL\,B (SPFM $>90\%$)}; +\node[color=red!30] at (axis cs: 1,102) {\scriptsize ASIL\,C (SPFM $>97\%$), ASIL-D (SPFM $>99\%$)}; -\addplot[thick, samples=50, smooth, blue!30, dashed] coordinates {(304.25,50)(304.25,90)}; +\addplot[thick, samples=50, smooth, blue!30, dashed] coordinates {(285,50)(285,90)}; \addplot[thick, samples=50, smooth, red!30, dashed] coordinates {(53.316,50)(53.316,99)}; \end{axis}