Adding old documentation. Partially updated intro and overview. It is very outdated.

This commit is contained in:
Matt Guthaus 2018-01-19 17:31:17 -08:00
parent 84ec7a5be0
commit c80a55c13d
77 changed files with 25601 additions and 0 deletions

6
docs/Makefile Normal file
View File

@ -0,0 +1,6 @@
all: openram_manual.tex
pdflatex openram_manual
bib:
bibtex openram_manual
clean:
rm -f openram_manual.pdf *.aux *.bbl *.blq *.dvi *.log *.lot *.toc *.lof *.blg

4
docs/control.tex Normal file
View File

@ -0,0 +1,4 @@
\section{Internal Control Signals}
\label{sec:control}
This section not needed... All information is in Section~\ref{sec:timing} (Timing).

49
docs/debug.tex Normal file
View File

@ -0,0 +1,49 @@
\section{Debug Framework}
\label{sec:debug}
All output in OpenRAM should use the shared debug framework. This is
still under development but is in a usable state. It is going to be
replaced with the Python Logging framework which is quite simple.
All of the debug framework is contained in debug.py and is based
around the concept of a ``debug level'' which is a single global
variable in this file. This level is, by default, 0 which will output
normal minimal output. The general guidelines for debug output are:
\begin{itemize}
\item 0 Normal output
\item 1 Verbose output
\item 2 Detailed output
\item 3+ Excessively detailed output
\end{itemize}
The debug level can be adjusted on the command line when arguments are parsed using the ``-v'' flag. Adding more ``-v'' flags will increase the debug level as in the following examples:
\begin{verbatim}
python tests/01_library_drc_test.py -vv
python openram.py 4 16 -v -v
\end{verbatim}
which each put the program in debug level 2 (detailed output).
Since every module may output a lot of information in the higher debug
levels, the output format is standardized to allow easy searching via
grep or other command-line tools. The standard output formatting is
used through three interface functions:
\begin{itemize}
\item debug.info(int, msg)
\item debug.warning(msg)
\item debug.error(msg)
\end{itemize}
The msg string in each case can be any string format including data or
other useful debug information. The string should also contain
information to make it human understandable. {\bf It should not just be
a number!} The warning and error messages are independent of debug
levels while the info message will only print the message if the
current debug level is above the parameter value.
The output format of the debug info messages are:
\begin{verbatim}
[ module ]: msg
\end{verbatim}
where module is the calling module name and msg is the string
provided. This enables a grep command to get the relevant lines. The
warning and error messages include the file name and line number of
the warning/error.

Binary file not shown.

BIN
docs/figs/2t4decoder.pdf Normal file

Binary file not shown.

BIN
docs/figs/4t16decoder.pdf Normal file

Binary file not shown.

Binary file not shown.

1475
docs/figs/Array.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 51 KiB

1401
docs/figs/Col_mux.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 47 KiB

747
docs/figs/Logic Diagram.svg Normal file
View File

@ -0,0 +1,747 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="Logic Diagram.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient4867">
<stop
style="stop-color:#cccccc;stop-opacity:1;"
offset="0"
id="stop4869" />
<stop
style="stop-color:#cccccc;stop-opacity:0;"
offset="1"
id="stop4871" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3807">
<stop
style="stop-color:#cccccc;stop-opacity:1;"
offset="0"
id="stop3809" />
<stop
style="stop-color:#cccccc;stop-opacity:0;"
offset="1"
id="stop3811" />
</linearGradient>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3831"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path3834"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3807"
id="linearGradient3813"
x1="199.69901"
y1="218.7489"
x2="199.43983"
y2="217.65218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,116)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3807"
id="linearGradient3819"
gradientUnits="userSpaceOnUse"
x1="199.69901"
y1="218.7489"
x2="199.43983"
y2="217.65218"
gradientTransform="translate(0,-691.72632)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4867"
id="linearGradient4873"
x1="394.20999"
y1="489.94479"
x2="393.62537"
y2="490.3624"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,100)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4867"
id="linearGradient4879"
gradientUnits="userSpaceOnUse"
x1="394.20999"
y1="489.94479"
x2="393.62537"
y2="490.3624"
gradientTransform="translate(-1019.8693,100)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4867"
id="linearGradient4885"
gradientUnits="userSpaceOnUse"
x1="394.20999"
y1="489.94479"
x2="393.62537"
y2="490.3624"
gradientTransform="translate(0,100)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16.932823"
inkscape:cx="504.04531"
inkscape:cy="492.15828"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1600"
inkscape:window-height="1132"
inkscape:window-x="0"
inkscape:window-y="0"
showguides="true"
inkscape:guide-bbox="true" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:url(#linearGradient3813);fill-opacity:1"
id="rect2383"
width="165.71428"
height="94.646927"
x="133.76231"
y="309.66827" />
<rect
style="fill:#cccccc"
id="rect2385"
width="208.57143"
height="188.57143"
x="406.00479"
y="309.50024" />
<rect
style="fill:#cccccc"
id="rect2387"
width="208.38266"
height="62.857143"
x="405.96155"
y="70.725639" />
<rect
style="fill:url(#linearGradient4873);fill-opacity:1"
id="rect2389"
width="138.24103"
height="54.285713"
x="371.81412"
y="558.85974" />
<text
xml:space="preserve"
style="font-size:23.82649612px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="452.81046"
y="105.8875"
id="text2399"
transform="scale(0.9927707,1.0072819)"><tspan
sodipodi:role="line"
id="tspan2401"
x="452.81046"
y="105.8875">Precharge</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="478.94641"
y="410.42963"
id="text2403"><tspan
sodipodi:role="line"
id="tspan2405"
x="478.94641"
y="410.42963">Array</tspan></text>
<rect
style="fill:#cccccc"
id="rect2429"
width="277.14285"
height="54.285713"
x="371.49484"
y="672.11481" />
<rect
style="fill:#cccccc"
id="rect2431"
width="277.14285"
height="54.285713"
x="372.53488"
y="794.2793" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="439.30377"
y="708.78662"
id="text2437"><tspan
sodipodi:role="line"
id="tspan2439"
x="439.30377"
y="708.78662">Sense Amp</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="428.77615"
y="828.11359"
id="text2441"><tspan
sodipodi:role="line"
id="tspan2443"
x="428.77615"
y="828.11359">Output Latch</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);marker-end:none;stroke-opacity:1"
d="M 510.87523,794.2793 L 510.29735,726.40052"
id="path2453"
inkscape:connector-type="polyline"
inkscape:connection-start="#rect2431"
inkscape:connection-end="#rect2429" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00533342px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
d="M 510.37148,613.14813 L 510.36003,672.35929"
id="path2455"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00327015px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
d="M 297.90384,403.80303 L 406.00315,403.80054"
id="path2469"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="237.36064"
y="462.23129"
id="text2497"><tspan
sodipodi:role="line"
id="tspan2499"
x="237.36064"
y="462.23129" /></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
d="M 511.49401,848.56501 L 512.51267,919.88151"
id="path2521"
inkscape:connector-type="polyline"
inkscape:connection-start="#rect2431" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="432.52811"
y="954.8941"
id="text2527"><tspan
sodipodi:role="line"
id="tspan2529"
x="432.52811"
y="954.8941">Out to System</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="322.32162"
y="-51.962601"
id="text2531"
transform="matrix(9.034996e-4,0.9999996,-0.9999996,9.034996e-4,0,0)"><tspan
sodipodi:role="line"
id="tspan2533"
x="322.32162"
y="-51.962601">In From System</tspan><tspan
sodipodi:role="line"
x="322.32162"
y="-21.962603"
id="tspan2535" /></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="538.99377"
y="516.83362"
id="text2832"><tspan
sodipodi:role="line"
id="tspan2834"
x="538.99377"
y="516.83362"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="538.99377"
y="531.83362"
id="tspan2938">BL<tspan
style="font-size:6px"
id="tspan2950">0</tspan>,BR<tspan
style="font-size:6px"
id="tspan2948">0</tspan>, BL<tspan
style="font-size:6px"
id="tspan2946">1</tspan>, BR<tspan
style="font-size:6px"
id="tspan2944">1</tspan>, ... BL<tspan
style="font-size:6px"
id="tspan2942">j</tspan> BR<tspan
style="font-size:6px"
id="tspan2940">j </tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 364.52511,382.19547 L 336.74637,425.84777"
id="path2836" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="280.00189"
y="-339.76331"
id="text2838"
transform="matrix(3.852356e-3,0.9999926,-0.9999926,3.852356e-3,0,0)"><tspan
sodipodi:role="line"
id="tspan2840"
x="280.00189"
y="-339.76331"> Word Lines</tspan><tspan
sodipodi:role="line"
x="280.00189"
y="-324.76331"
id="tspan2930"> W<tspan
style="font-size:6px"
id="tspan2936">0</tspan>, W<tspan
style="font-size:6px"
id="tspan2934">1</tspan>, ..., W<tspan
style="font-size:6px"
id="tspan2932">log(n)</tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 371.888,589.5005 L 309.17124,589.84843"
id="path2842"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 370.94208,702.41208 L 308.22531,702.76001"
id="path2854"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 371.88799,824.43518 L 309.17123,824.78311"
id="path2860"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 491.10498,654.25031 L 526.70018,628.88523"
id="path2870" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="320.09518"
y="-99.119331"
id="text2888"
transform="matrix(-1.094382e-2,0.9999401,-0.9999401,-1.094382e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan2890"
x="320.09518"
y="-99.119331">A<tspan
style="font-size:6px"
id="tspan2892">0</tspan>, A<tspan
style="font-size:6px"
id="tspan2896">1</tspan>, ... A<tspan
style="font-size:6px"
id="tspan2898">n</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="552.88428"
y="-299.25662"
id="text2902"
transform="matrix(-1.094382e-2,0.9999401,-0.9999401,-1.094382e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan2904"
x="552.88428"
y="-299.25662">A<tspan
style="font-size:6px"
id="tspan2906">0</tspan>, A<tspan
style="font-size:6px"
id="tspan2908">1</tspan>, ... Ak<tspan
style="font-size:6px"
id="tspan2910" /></tspan></text>
<text
xml:space="preserve"
style="font-size:37.14432144px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="784.93219"
y="-237.72998"
id="text2912"
transform="matrix(2.6675397e-2,0.8871754,-1.1264084,2.54215e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan2914"
x="784.93219"
y="-237.72998"
style="font-size:18.57216072px">S<tspan
style="font-size:9.28608036px"
id="tspan2916">clk</tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 491.47553,766.55443 L 530.65923,741.92468"
id="path2922" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="784.55219"
y="-372.34665"
id="text2924"
transform="matrix(-9.6248034e-2,0.9953574,-0.9953574,-9.6248034e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan2926"
x="784.55219"
y="-372.34665">clk</tspan><tspan
sodipodi:role="line"
x="784.55219"
y="-357.34665"
id="tspan2928" /></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="727.75165"
y="543.27771"
id="text2970"><tspan
sodipodi:role="line"
id="tspan2972"
x="727.75165"
y="543.27771" /></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="537.27209"
y="156.72511"
id="text2992"><tspan
sodipodi:role="line"
id="tspan2994"
x="537.27209"
y="156.72511"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="537.27209"
y="171.72511"
id="tspan2996">BL<tspan
style="font-size:6px"
id="tspan2998">0</tspan>,BR<tspan
style="font-size:6px"
id="tspan3000">0</tspan>, BL<tspan
style="font-size:6px"
id="tspan3002">1</tspan>, BR<tspan
style="font-size:6px"
id="tspan3004">1</tspan>, ... BL<tspan
style="font-size:6px"
id="tspan3006">j</tspan> BR<tspan
style="font-size:6px"
id="tspan3008">j </tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="523.96411"
y="638.21588"
id="text3010"><tspan
sodipodi:role="line"
id="tspan3012"
x="523.96411"
y="638.21588"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="523.96411"
y="653.21588"
id="tspan3014">BL<tspan
style="font-size:6px"
id="tspan3016">0</tspan>,BR<tspan
style="font-size:6px"
id="tspan3018">0</tspan>, BL<tspan
style="font-size:6px"
id="tspan3020">1</tspan>, BR<tspan
style="font-size:6px"
id="tspan3022">1</tspan>, ... BL<tspan
style="font-size:6px"
id="tspan3024">j/2^k</tspan> BR<tspan
style="font-size:6px"
id="tspan3026">j/2^k </tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-mid:none;marker-end:none;marker-start:url(#Arrow1Lstart)"
d="M 404.99504,103.56693 L 342.27828,103.91486"
id="path3046"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="86.832726"
y="-327.60617"
id="text3052"
transform="matrix(-1.094382e-2,0.9999401,-0.9999401,-1.094382e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan3054"
x="86.832726"
y="-327.60617">Pclk</tspan><tspan
sodipodi:role="line"
x="86.832726"
y="-312.60617"
id="tspan3062" /></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="551.03613"
y="753.10077"
id="text3064"><tspan
sodipodi:role="line"
id="tspan3066"
x="551.03613"
y="753.10077"
style="font-size:12px"> Data</tspan><tspan
sodipodi:role="line"
x="551.03613"
y="768.10077"
id="tspan3068"><tspan
style="font-size:12px"
id="tspan3111">D</tspan><tspan
style="font-size:8px"
id="tspan3074">0</tspan><tspan
style="font-size:12px"
id="tspan3115">, </tspan><tspan
style="font-size:12px"
id="tspan3109">D</tspan><tspan
style="font-size:8px"
id="tspan3072">1</tspan><tspan
style="font-size:12px"
id="tspan3113">, ...,</tspan><tspan
style="font-size:12px"
id="tspan3107"> D</tspan><tspan
style="font-size:8px"
id="tspan3070">j/2^k</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="543.46613"
y="865.92303"
id="text3117"><tspan
sodipodi:role="line"
id="tspan3119"
x="543.46613"
y="865.92303"
style="font-size:12px"> Data Out</tspan><tspan
sodipodi:role="line"
x="543.46613"
y="880.92303"
id="tspan3121"><tspan
style="font-size:12px"
id="tspan3123">Do</tspan><tspan
style="font-size:8px"
id="tspan3125">0</tspan><tspan
style="font-size:12px"
id="tspan3127">, </tspan><tspan
style="font-size:12px"
id="tspan3129">Do</tspan><tspan
style="font-size:8px"
id="tspan3131">1</tspan><tspan
style="font-size:12px"
id="tspan3133">, ...,</tspan><tspan
style="font-size:12px"
id="tspan3135"> Do</tspan><tspan
style="font-size:8px"
id="tspan3137">j/2^k</tspan></tspan></text>
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.40000001000000002;stroke-miterlimit:18.10000038000000089;stroke-dasharray:none"
id="path3309"
d="M 75.196328,158.6717 C 80.758538,157.28869 86.44734,156.6028 92.133726,155.94035 C 107.05435,154.05138 121.8677,151.43215 136.75528,149.30749 C 147.64996,147.53122 158.58499,146.01225 169.47598,144.21603 C 171.5715,143.74706 173.73538,143.65255 175.84432,143.27807 C 176.90658,143.08945 177.95684,142.73177 179.00742,142.48204 C 180.58421,142.34805 181.98047,141.66528 183.53245,141.39396 L 172.37378,149.88252 C 170.88347,150.29297 169.41362,150.72728 167.88051,150.96244 C 164.844,151.6568 161.73546,151.85357 158.66031,152.32711 C 148.00248,153.81685 137.31827,155.11752 126.69325,156.8396 C 111.66369,159.01206 96.704443,161.62748 81.668664,163.7554 C 75.768122,164.62195 69.820463,165.47786 64.116915,167.27925 L 75.196328,158.6717 z" />
<rect
y="-498.05804"
x="133.76231"
height="94.646927"
width="165.71428"
id="rect3815"
style="fill:url(#linearGradient3819);fill-opacity:1"
transform="scale(1,-1)" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="170.85649"
y="394.76114"
id="text2393"><tspan
sodipodi:role="line"
id="tspan2395"
x="170.85649"
y="394.76114">Address </tspan><tspan
sodipodi:role="line"
x="170.85649"
y="424.76114"
id="tspan2397">Decoder</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 133.5,403.36218 L 70.75,402.86218"
id="path3823" />
<rect
y="558.85974"
x="371.81412"
height="54.285713"
width="138.24103"
id="rect4875"
style="fill:url(#linearGradient4885);fill-opacity:1" />
<rect
style="fill:url(#linearGradient4879);fill-opacity:1"
id="rect4877"
width="138.24103"
height="54.285713"
x="-648.05518"
y="558.85974"
transform="scale(-1,1)" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="439.2803"
y="595.7511"
id="text2407"><tspan
sodipodi:role="line"
id="tspan2409"
x="439.2803"
y="595.7511">Column Mux</tspan></text>
<path
inkscape:connector-type="polyline"
id="path4881"
d="M 510.37147,497.86869 L 510.36004,557.47571"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00782228px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1" />
<path
id="path4883"
d="M 491.10498,538.25031 L 526.70018,512.88523"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#cccccc"
id="rect2427"
width="277.14285"
height="54.285713"
x="372.23978"
y="190.47002" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="432.57791"
y="225.61827"
id="text2433"><tspan
sodipodi:role="line"
id="tspan2435"
x="432.57791"
y="225.61827">Write Driver</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 371.40729,219.41404 L 308.69052,219.76197"
id="path2848"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;stroke-opacity:1"
d="M 340.99482,208.10497 C 327.752,230.80694 327.752,230.80694 327.752,230.80694"
id="path2882" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="167.72096"
y="-293.01819"
id="text2884"
transform="matrix(-2.8547241e-3,0.9999959,-0.9999959,-2.8547241e-3,0,0)"><tspan
sodipodi:role="line"
id="tspan2886"
x="167.72096"
y="-293.01819">Enable, Data in</tspan></text>
<text
xml:space="preserve"
style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="519.95123"
y="268.63846"
id="text3028"><tspan
sodipodi:role="line"
id="tspan3030"
x="519.95123"
y="268.63846"
style="font-size:12px"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="519.95123"
y="283.63846"
id="tspan3084"><tspan
style="font-size:12px"
id="tspan3103">BL</tspan>0 ,<tspan
style="font-size:12px"
id="tspan3101">BR</tspan><tspan
style="font-size:8px"
id="tspan3036">0</tspan>, <tspan
style="font-size:12px"
id="tspan3099">BL</tspan><tspan
style="font-size:8px"
id="tspan3038">1</tspan>, <tspan
style="font-size:12px"
id="tspan3097">BR</tspan><tspan
style="font-size:8px"
id="tspan3078">1</tspan>, ... <tspan
style="font-size:12px"
id="tspan3095">BL</tspan><tspan
style="font-size:8px"
id="tspan3042">j/2^k</tspan><tspan
style="font-size:12px"
id="tspan3093"> BR</tspan><tspan
style="font-size:8px"
id="tspan3044">j /2^k</tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
d="M 510.33208,133.58278 L 510.65644,190.47002"
id="path4910"
inkscape:connector-type="polyline"
inkscape:connection-start="#rect2387"
inkscape:connection-end="#rect2427" />
<path
inkscape:connector-type="polyline"
id="path6475"
d="M 508.33374,244.83566 L 508.65589,308.42732"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0536716px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 491.10498,280.25031 L 526.70018,254.88523"
id="path6477" />
<path
id="path6479"
d="M 491.10498,168.25031 L 526.70018,142.88523"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

BIN
docs/figs/ZBT.pdf Normal file

Binary file not shown.

BIN
docs/figs/bank.pdf Normal file

Binary file not shown.

BIN
docs/figs/bank2.pdf Normal file

Binary file not shown.

BIN
docs/figs/bank4.pdf Normal file

Binary file not shown.

BIN
docs/figs/cell_6t_schem.pdf Normal file

Binary file not shown.

522
docs/figs/cell_6t_schem.svg Normal file
View File

@ -0,0 +1,522 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg6017"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="cell_6t.svg">
<defs
id="defs6019" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="199"
inkscape:cy="609.48139"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1580"
inkscape:window-height="810"
inkscape:window-x="143"
inkscape:window-y="132"
inkscape:window-maximized="0">
<inkscape:grid
type="xygrid"
id="grid6109" />
</sodipodi:namedview>
<metadata
id="metadata6022">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g6894"
transform="translate(20,1.3297774e-6)">
<g
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none"
id="g6006"
transform="matrix(0.51500628,0,0,0.4585435,23.157615,250.95114)">
<path
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
id="path5141"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 142.12846,439.3006 111.72287,0"
id="path5143"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 149.90664,429.40111 96.16652,0"
id="path5145"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="matrix(0.51500333,0,0,0.45312146,186.14808,178.39506)"
id="g6011-6" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 230,452.36218 0,60"
id="path6181"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:none"
id="path6210"
sodipodi:cx="325"
sodipodi:cy="417.36218"
sodipodi:rx="55"
sodipodi:ry="35"
d="m 380,417.36218 a 55,35 0 1 1 -110,0 55,35 0 1 1 110,0 z" />
<g
id="g6948">
<g
style="stroke-width:3.34598514;stroke-miterlimit:4;stroke-dasharray:none"
id="g6006-9"
transform="matrix(0,0.51500628,-0.4585435,0,461.41104,285.5198)">
<path
style="fill:none;stroke:#000000;stroke-width:3.34598514;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
id="path5141-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:3.34598514;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 142.12846,439.3006 111.72287,0"
id="path5143-42"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.34598514;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 149.90664,429.40111 96.16652,0"
id="path5145-5"
inkscape:connector-curvature="0" />
</g>
<path
transform="translate(-75,10)"
d="m 350,377.36218 a 5,5 0 1 1 -10,0 5,5 0 1 1 10,0 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744"
style="fill:none;stroke:#000000;stroke-width:1.626;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
transform="matrix(0,0.51500628,-0.4585435,0,461.60097,475.41293)"
id="g6006-24"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,-0.51500628,0.4585435,0,158.39903,679.31144)"
id="g6006-3"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-2"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-8"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-3"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(-1,0,0,-1,620,774.72437)"
id="g6948-0">
<g
style="stroke-width:3.34598517;stroke-miterlimit:4;stroke-dasharray:none"
id="g6006-9-4"
transform="matrix(0,0.51500628,-0.4585435,0,461.41104,285.5198)">
<path
style="fill:none;stroke:#000000;stroke-width:3.34598517;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
id="path5141-6-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:3.34598517;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 142.12846,439.3006 111.72287,0"
id="path5143-42-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:3.34598517;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 149.90664,429.40111 96.16652,0"
id="path5145-5-8"
inkscape:connector-curvature="0" />
</g>
<path
transform="translate(-75,10)"
d="m 350,377.36218 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-9"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 390,512.36218 0,-60"
id="path6988"
inkscape:connector-curvature="0" />
<g
transform="translate(350,1.3297774e-6)"
id="g6894-7">
<g
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none"
id="g6006-5"
transform="matrix(0.51500628,0,0,0.4585435,23.157615,250.95114)">
<path
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
id="path5141-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 142.12846,439.3006 111.72287,0"
id="path5143-27"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 149.90664,429.40111 96.16652,0"
id="path5145-30"
inkscape:connector-curvature="0" />
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 190,482.36218 40,0"
id="path7020"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 440,482.36218 -50,0"
id="path7022"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 230,292.36218 160,0 0,0 0,30"
id="path7024"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 230,322.36218 0,-30"
id="path7026"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 310,292.36218 0,-30 30,0 -60,0"
id="path7028"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 230,642.36218 0,20 160,0 0,-20"
id="path7030"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 310,662.36218 0,30 -30,0 60,0"
id="path7032"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 290,702.36218 40,0"
id="path7034"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 300,712.36218 20,0"
id="path7036"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 540,482.36218 0,-150 0,300"
id="path7057"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 80,482.36218 0,-150 0,300"
id="path7059"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 80,232.36218 460,0"
id="path7061"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.96486509;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 330,386.34238 0,193.03475"
id="path7063"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 230,482.36218 100,0"
id="path7067"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.9069252;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 290,452.36218 100,0"
id="path7069"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 275,387.36218 15,0"
id="path7071"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2.26907873;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 345.73333,387.36218 -16.73333,0"
id="path7073"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 265,576.36218 24,0"
id="path7075"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:2.03967071;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 331.03846,578.36218 24.96154,0"
id="path7075-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:1.96486509;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 290,384.84481 0,193.03475"
id="path7063-1"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,158.90421,154.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-7"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,199.40421,183.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-8"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,259.40421,185.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-4"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,179.40421,-6.456369)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-9"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,179.40421,364.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,98.40421,185.54363)" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 145,446.36218 2,-215"
id="path7183"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 475,446.36218 0,-216"
id="path7185"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-1"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,16.404208,-64.456369)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-5"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,344.40421,-65.456369)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-74"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,409.40421,184.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-89"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,-51.595792,184.54363)" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:0.99999998%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="350"
y="262.36218"
id="text7226"
sodipodi:linespacing="0.99999998%"><tspan
sodipodi:role="line"
id="tspan7228"
x="350"
y="262.36218"
style="line-height:0.99999998%" /></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:10.00000015%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="342"
y="270.36218"
id="text7230"
sodipodi:linespacing="10%"><tspan
sodipodi:role="line"
id="tspan7232"
x="342"
y="270.36218">VDD</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:10.00000015%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="350"
y="691.36218"
id="text7234"
sodipodi:linespacing="10%"><tspan
sodipodi:role="line"
id="tspan7236"
x="350"
y="691.36218">GND</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:10.00000015%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="549"
y="482.36218"
id="text7238"
sodipodi:linespacing="10%"><tspan
sodipodi:role="line"
id="tspan7240"
x="549"
y="482.36218">BL_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:10.00000015%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="48"
y="483.36218"
id="text7242"
sodipodi:linespacing="10%"><tspan
sodipodi:role="line"
id="tspan7244"
x="48"
y="483.36218">BL</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:10.00000015%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="116"
y="229.36218"
id="text7246"
sodipodi:linespacing="10%"><tspan
sodipodi:role="line"
id="tspan7248"
x="116"
y="229.36218">WL</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -0,0 +1,10 @@
digraph G {
module [shape=record, label="module\n(e.g., bit-cell array)"];
design [shape=record, label="design\nDRC_LVS()"];
hierarchy_layout [shape=record, label="layout\n"];
hierarchy_spice [shape=record, label="spice\n"];
module -> design
design -> hierarchy_layout;
design -> hierarchy_spice;
}

Binary file not shown.

View File

@ -0,0 +1,2 @@
#!/bin/bash
dot -Tpdf class_hierarchy.dot > class_hierarchy.pdf

Binary file not shown.

View File

@ -0,0 +1,665 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg4094"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="column_mux.svg">
<defs
id="defs4096" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="406.3623"
inkscape:cy="446.14093"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid4102" />
</sodipodi:namedview>
<metadata
id="metadata4099">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
transform="matrix(0,0.51500628,0.4585435,0,-101.41104,255.5198)"
id="g6006-24"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,-21.411043,255.5198)"
id="g6006-24-5"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-4"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-9"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-0"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,68.588951,385.5198)"
id="g6006-24-7"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-1"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-5"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-6"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,148.58896,385.5198)"
id="g6006-24-5-5"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-4-4"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-9-0"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-0-3"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,238.58896,255.5198)"
id="g6006-24-73"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-6"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-2"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-7"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,318.58896,255.5198)"
id="g6006-24-5-9"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-4-5"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-9-3"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-0-0"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,398.58896,385.5198)"
id="g6006-24-7-0"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-1-8"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-5-8"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-6-9"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,478.58896,385.5198)"
id="g6006-24-5-5-9"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-4-4-7"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-9-0-0"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-0-3-6"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 130,292.36218 0,-70"
id="path4232"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 210,292.36218 0,-70"
id="path4742"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 300,422.36218 0,-200"
id="path4744"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 380,422.36218 0,-200"
id="path4746"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 470,302.36218 0,-80"
id="path4748"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 550,302.36218 0,-80"
id="path4750"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 630,432.36218 0,-210"
id="path4752"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 710,432.36218 0,-210"
id="path4754"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 40,352.36218 480,0"
id="path4756"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 40,482.36218 640,0"
id="path4758"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 130,422.36218 0,130"
id="path4760"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 210,422.36218 0,130"
id="path4762"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 470,422.36218 0,130"
id="path4764"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 550,422.36218 0,130"
id="path4766"
inkscape:connector-curvature="0" />
<g
transform="matrix(0,0.51500628,0.4585435,0,-61.411052,555.51979)"
id="g6006-24-7-9"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-1-5"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-5-4"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-6-3"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,28.588957,555.5198)"
id="g6006-24-5-5-7"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-4-4-76"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-9-0-7"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-0-3-2"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,268.58895,655.5198)"
id="g6006-24-7-9-3"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-1-5-1"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-5-4-0"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-6-3-9"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,0.51500628,0.4585435,0,358.58896,655.5198)"
id="g6006-24-5-5-7-7"
style="stroke-width:4.11560297;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-8-4-4-76-7"
d="m 71.537739,504.66541 77.668961,0 0.20751,-65.01034 96.87868,-0.41421 0,65.42455 77.66896,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5143-2-9-0-7-0"
d="m 142.12846,439.3006 111.72287,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-8-0-3-2-0"
d="m 149.90664,429.40111 96.16652,0"
style="fill:none;stroke:#000000;stroke-width:4.11560297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 40,652.36218 190,0"
id="path4900"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 40,752.36218 520,0"
id="path4902"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 130,552.36218 0,10 170,0 0,-10"
id="path4904"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 210,552.36218 0,30 170,0 0,-30"
id="path4906"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 470,552.36218 0,10 160,0 0,-10"
id="path4908"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 550,552.36218 0,30 160,0 0,-30"
id="path4910"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 260,592.36218 0,-10"
id="path4912"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 170,592.36218 0,-30"
id="path4914"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 500,692.36218 0,-130"
id="path4916"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 590,692.36218 0,-110"
id="path4918"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 260,722.36218 0,120 330,0 0,-20"
id="path4920"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 500,822.36218 -330,0 0,-100"
id="path4922"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 320,822.36218 0,70 10,-10 -10,10 -10,-10"
id="path4924"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 440,842.36218 0,50 10,-10 -10,10 -10,-10"
id="path4926"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-7"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,39.404208,265.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-7-6"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,129.40421,285.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-7-8"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,369.40421,265.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-7-5"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,459.40421,285.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-7-2"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,189.40421,525.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-7-83"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,309.40421,545.54363)" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="309"
y="909.36218"
id="text4981"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4983"
x="309"
y="909.36218">BL</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="419"
y="907.36218"
id="text4985"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4987"
x="419"
y="907.36218">BL_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="113"
y="219.36218"
id="text4989"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4991"
x="113"
y="219.36218">BL0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="177"
y="217.36218"
id="text4993"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4995"
x="177"
y="217.36218">BL0_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="285"
y="219.36218"
id="text4997"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4999"
x="285"
y="219.36218">BL1</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="346"
y="217.36218"
id="text5001"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5003"
x="346"
y="217.36218">BL1_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="456"
y="218.36218"
id="text5005"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5007"
x="456"
y="218.36218">BL2</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="518"
y="216.36218"
id="text5009"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5011"
x="518"
y="216.36218">BL2_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="613"
y="220.36218"
id="text5013"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5015"
x="613"
y="220.36218">BL3</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="676"
y="216.36218"
id="text5017"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5019"
x="676"
y="216.36218">BL3_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="13"
y="357.36218"
id="text5021"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5023"
x="13"
y="357.36218">A0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="7"
y="479.36218"
id="text5025"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5027"
x="7"
y="479.36218">A0_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="15"
y="656.36218"
id="text5029"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5031"
x="15"
y="656.36218">A1</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="9"
y="748.36218"
id="text5033"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5035"
x="9"
y="748.36218">A1_bar</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/figs/control_logic.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,409 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.46"
sodipodi:docname="decoder_to _array.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path3229"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3226"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8) translate(12.5,0)" />
</marker>
<linearGradient
inkscape:collect="always"
id="linearGradient2461">
<stop
style="stop-color:#b3b3b3;stop-opacity:1;"
offset="0"
id="stop2463" />
<stop
style="stop-color:#b3b3b3;stop-opacity:0;"
offset="1"
id="stop2465" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2451">
<stop
style="stop-color:#b3b3b3;stop-opacity:1;"
offset="0"
id="stop2453" />
<stop
style="stop-color:#b3b3b3;stop-opacity:0;"
offset="1"
id="stop2455" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2445">
<stop
style="stop-color:#b3b3b3;stop-opacity:1;"
offset="0"
id="stop2447" />
<stop
style="stop-color:#b3b3b3;stop-opacity:0;"
offset="1"
id="stop2449" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2445"
id="linearGradient2443"
x1="370.17203"
y1="408.19574"
x2="372.40872"
y2="517.79352"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7710419,0,0,0.8337292,8.1937292,7.8098171)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2451"
id="linearGradient2457"
x1="371.29037"
y1="409.31409"
x2="367.72989"
y2="523.38525"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7712785,0,0,0.8337292,8.0871771,7.8098171)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2461"
id="linearGradient2467"
x1="551.34387"
y1="456.28641"
x2="551.34387"
y2="619.56287"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.5308865,0,114.74779)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.1448286"
inkscape:cx="309.70169"
inkscape:cy="808.88914"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="1132"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:url(#linearGradient2467);fill-opacity:1"
id="rect2459"
width="354.07697"
height="193.31812"
x="391.42059"
y="246.19127" />
<rect
style="fill:url(#linearGradient2457);fill-opacity:1"
id="rect2433"
width="127.34832"
height="191.49203"
x="228.03519"
y="248.01219" />
<rect
style="fill:#ff6600"
id="rect2549"
width="518.00879"
height="37.828362"
x="227.68326"
y="302.75879" />
<rect
style="fill:#00ff00"
id="rect2547"
width="544.10468"
height="38.307152"
x="201.76241"
y="243.43471" />
<rect
style="fill:url(#linearGradient2443);fill-opacity:1"
id="rect2383"
width="192.29077"
height="392.53891"
x="35.787025"
y="46.97047" />
<text
xml:space="preserve"
style="font-size:19.24255753px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="94.222366"
y="-121.21298"
id="text2387"
transform="matrix(-6.8463303e-3,1.0398304,-0.9616465,-7.4029511e-3,0,0)"><tspan
sodipodi:role="line"
id="tspan2389"
x="94.222366"
y="-121.21298">Address Decoder</tspan><tspan
sodipodi:role="line"
x="94.222366"
y="-97.15979"
id="tspan2391" /></text>
<rect
style="fill:#ff0000"
id="rect2393"
width="159.23743"
height="17.715534"
x="202.95409"
y="254.21713" />
<rect
style="fill:#0000ff"
id="rect2399"
width="159.23741"
height="17.715534"
x="202.9501"
y="280.85464" />
<rect
style="fill:#008000"
id="rect2401"
width="159.40862"
height="17.715534"
x="202.94533"
y="310.23676" />
<text
xml:space="preserve"
style="font-size:14.67683983000000048px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="254.6263"
y="281.54678"
id="text2403"
transform="scale(1.0494184,0.9529088)"><tspan
sodipodi:role="line"
id="tspan2405"
x="254.6263"
y="281.54678">Vdd </tspan></text>
<text
xml:space="preserve"
style="font-size:14.9124279px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="278.65591"
y="268.46613"
id="text2407"
transform="scale(0.9095598,1.0994329)"><tspan
sodipodi:role="line"
id="tspan2409"
x="278.65591"
y="268.46613">Word Line</tspan></text>
<text
xml:space="preserve"
style="font-size:15.81832218px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="277.87473"
y="316.27682"
id="text2411"
transform="scale(0.9736983,1.0270121)"><tspan
sodipodi:role="line"
id="tspan2413"
x="277.87473"
y="316.27682">Vss</tspan></text>
<rect
style="fill:#ff0000"
id="rect2469"
width="362.56842"
height="17.715534"
x="382.1893"
y="254.20079" />
<rect
style="fill:#0000ff"
id="rect2471"
width="363.03949"
height="17.715534"
x="382.1853"
y="280.83832" />
<rect
style="fill:#008000"
id="rect2473"
width="361.6424"
height="17.715534"
x="383.1106"
y="310.22043" />
<text
xml:space="preserve"
style="font-size:14.67683983px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="445.56149"
y="281.52963"
id="text2475"
transform="scale(1.0494184,0.9529088)"><tspan
sodipodi:role="line"
id="tspan2477"
x="445.56149"
y="281.52963">Vdd </tspan></text>
<text
xml:space="preserve"
style="font-size:14.9124279px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="498.65213"
y="268.45126"
id="text2479"
transform="scale(0.9095598,1.0994329)"><tspan
sodipodi:role="line"
id="tspan2481"
x="498.65213"
y="268.45126">Word Line</tspan></text>
<text
xml:space="preserve"
style="font-size:15.81830978px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="485.32767"
y="315.46939"
id="text2483"
transform="scale(0.9736983,1.0270121)"><tspan
sodipodi:role="line"
id="tspan2485"
x="485.32767"
y="315.46939">Vss</tspan></text>
<rect
style="fill:#ffffff"
id="rect2551"
width="16.346491"
height="152.72293"
x="364.29324"
y="215.42181" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:18.10000038;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
d="M 382.1893,263.0691 L 362.19151,263.07027"
id="path2487"
inkscape:connector-type="polyline"
inkscape:connection-start="#rect2469"
inkscape:connection-end="#rect2393" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:18.10000038;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
d="M 362.35394,319.0899 L 383.1106,319.08869"
id="path2491"
inkscape:connector-type="polyline"
inkscape:connection-start="#rect2401"
inkscape:connection-end="#rect2473" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:18.10000038;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
d="M 382.1853,289.70663 L 362.18752,289.70779"
id="path2493"
inkscape:connector-type="polyline"
inkscape:connection-start="#rect2471"
inkscape:connection-end="#rect2399" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="533.82971"
y="239.70804"
id="text2543"><tspan
sodipodi:role="line"
id="tspan2545"
x="533.82971"
y="239.70804">Array</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:18.10000038;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
d="M 380.28173,247.63341 L 363.69741,247.63484"
id="path2553"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:18.10000038;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
d="M 380.8161,335.38958 L 364.23178,335.39101"
id="path2563"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-238.96878"
y="379.59302"
id="text2583"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan2585"
x="-238.96878"
y="379.59302">}</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="345.11981"
y="380.30951"
id="text2587"
transform="matrix(0,1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan2589"
x="345.11981"
y="380.30951">}</tspan></text>
<text
xml:space="preserve"
style="font-size:16.78106117px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="331.69421"
y="231.48781"
id="text2591"
transform="scale(1.0378936,0.9634899)"><tspan
sodipodi:role="line"
id="tspan2593"
x="331.69421"
y="231.48781">N-Well</tspan></text>
<text
xml:space="preserve"
style="font-size:16.01638031px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="354.27347"
y="370.5802"
id="text2595"
transform="scale(0.9905987,1.0094905)"><tspan
sodipodi:role="line"
id="tspan2597"
x="354.27347"
y="370.5802">P-Well</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/figs/gds_file.pdf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

866
docs/figs/methodology.eps Normal file
View File

@ -0,0 +1,866 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.8.8 (http://cairographics.org)
%%CreationDate: Mon Oct 17 14:59:32 2011
%%Pages: 1
%%BoundingBox: 0 0 630 399
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%EndComments
%%BeginProlog
/cairo_eps_state save def
/dict_count countdictstack def
/op_count count 1 sub def
userdict begin
/q { gsave } bind def
/Q { grestore } bind def
/cm { 6 array astore concat } bind def
/w { setlinewidth } bind def
/J { setlinecap } bind def
/j { setlinejoin } bind def
/M { setmiterlimit } bind def
/d { setdash } bind def
/m { moveto } bind def
/l { lineto } bind def
/c { curveto } bind def
/h { closepath } bind def
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
0 exch rlineto 0 rlineto closepath } bind def
/S { stroke } bind def
/f { fill } bind def
/f* { eofill } bind def
/B { fill stroke } bind def
/B* { eofill stroke } bind def
/n { newpath } bind def
/W { clip } bind def
/W* { eoclip } bind def
/BT { } bind def
/ET { } bind def
/pdfmark where { pop globaldict /?pdfmark /exec load put }
{ globaldict begin /?pdfmark /pop load def /pdfmark
/cleartomark load def end } ifelse
/BDC { mark 3 1 roll /BDC pdfmark } bind def
/EMC { mark /EMC pdfmark } bind def
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
/Tj { show currentpoint cairo_store_point } bind def
/TJ {
{
dup
type /stringtype eq
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
} forall
currentpoint cairo_store_point
} bind def
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
/Tf { pop /cairo_font exch def /cairo_font_matrix where
{ pop cairo_selectfont } if } bind def
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
/cairo_font where { pop cairo_selectfont } if } bind def
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
/g { setgray } bind def
/rg { setrgbcolor } bind def
/d1 { setcachedevice } bind def
%%EndProlog
11 dict begin
/FontType 42 def
/FontName /f-0-0 def
/PaintType 0 def
/FontMatrix [ 1 0 0 1 0 0 ] def
/FontBBox [ 0 0 0 0 ] def
/Encoding 256 array def
0 1 255 { Encoding exch /.notdef put } for
Encoding 1 /uni004D put
Encoding 2 /uni0065 put
Encoding 3 /uni006D put
Encoding 4 /uni006F put
Encoding 5 /uni0072 put
Encoding 6 /uni0079 put
Encoding 7 /uni0020 put
Encoding 8 /uni0043 put
Encoding 9 /uni0070 put
Encoding 10 /uni0069 put
Encoding 11 /uni006C put
Encoding 12 /uni0028 put
Encoding 13 /uni0050 put
Encoding 14 /uni0074 put
Encoding 15 /uni0068 put
Encoding 16 /uni006E put
Encoding 17 /uni0029 put
Encoding 18 /uni004C put
Encoding 19 /uni0067 put
Encoding 20 /uni0063 put
Encoding 21 /uni0061 put
Encoding 22 /uni0045 put
Encoding 23 /uni0046 put
Encoding 24 /uni002F put
Encoding 25 /uni0052 put
Encoding 26 /uni0041 put
Encoding 27 /uni0047 put
Encoding 28 /uni0044 put
Encoding 29 /uni0053 put
Encoding 30 /uni0049 put
Encoding 31 /uni0062 put
Encoding 32 /uni002E put
Encoding 33 /uni0056 put
Encoding 34 /uni002D put
Encoding 35 /uni0064 put
Encoding 36 /uni0073 put
Encoding 37 /uni0054 put
Encoding 38 /uni0077 put
Encoding 39 /uni007A put
Encoding 40 /uni0075 put
Encoding 41 /uni002C put
Encoding 42 /uni0078 put
Encoding 43 /uni0042 put
Encoding 44 /uni006B put
Encoding 45 /uni0055 put
Encoding 46 /uni0066 put
/CharStrings 47 dict dup begin
/.notdef 0 def
/uni004D 1 def
/uni0065 2 def
/uni006D 3 def
/uni006F 4 def
/uni0072 5 def
/uni0079 6 def
/uni0020 7 def
/uni0043 8 def
/uni0070 9 def
/uni0069 10 def
/uni006C 11 def
/uni0028 12 def
/uni0050 13 def
/uni0074 14 def
/uni0068 15 def
/uni006E 16 def
/uni0029 17 def
/uni004C 18 def
/uni0067 19 def
/uni0063 20 def
/uni0061 21 def
/uni0045 22 def
/uni0046 23 def
/uni002F 24 def
/uni0052 25 def
/uni0041 26 def
/uni0047 27 def
/uni0044 28 def
/uni0053 29 def
/uni0049 30 def
/uni0062 31 def
/uni002E 32 def
/uni0056 33 def
/uni002D 34 def
/uni0064 35 def
/uni0073 36 def
/uni0054 37 def
/uni0077 38 def
/uni007A 39 def
/uni0075 40 def
/uni002C 41 def
/uni0078 42 def
/uni0042 43 def
/uni006B 44 def
/uni0055 45 def
/uni0066 46 def
end readonly def
/sfnts [
<00010000000a008000030020636d61700252f32d00001fd00000009c63767420ffd31d390000
206c000001fc6670676de7b4f1c4000022680000008b676c79661cacd2b0000000ac00001f24
68656164dd84a2d0000022f40000003668686561104507920000232c00000024686d7478d559
18d200002350000000bc6c6f6361aa82b2fc0000240c000000606d617870046a063a0000246c
00000020707265703b07f1000000248c0000056800020066fe96046605a400030007001a400c
04fb0006fb0108057f0204002fc4d4ec310010d4ecd4ec301311211125211121660400fc7303
1bfce5fe96070ef8f2720629000100c90000061f05d5000c00bf403403110708070211010208
080702110302090a0901110a0a09420a070203080300af080b050908030201050a061c043e0a
1c00040d10fcecfcec11173931002f3cc4ec32111739304b5358071005ed071008ed071008ed
071005ed5922b2700e01015d405603070f080f09020a15021407130a260226072007260a200a
3407350a69027c027b07790a80028207820a90021604010b0313011b0323012c032708280934
013c035608590965086a097608790981018d0395019b03145d005d1321090121112311012301
1123c9012d017d017f012dc5fe7fcbfe7fc405d5fc0803f8fa2b051ffc000400fae100000002
0071ffe3047f047b0014001b00704024001501098608880515a90105b90c01bb18b912b80c8c
1c1b1502081508004b02120f451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4ee11
12393040293f1d701da01dd01df01d053f003f013f023f153f1b052c072f082f092c0a6f006f
016f026f156f1b095d71015d0115211e0133323637150e01232000111000333200072e012322
0607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5889ab90e025e5abec734
34ae2a2c0138010a01130143feddc497b4ae9e00000100ba0000071d047b0022005a40260612
09180f00061d07150c871d2003b81bbc19100700110f0808065011080f501c18081a462310fc
ec32fcfcfcec11123931002f3c3ce4f43cc4ec32111217393040133024502470249024a024a0
24bf24df24ff2409015d013e0133321615112311342623220615112311342623220615112311
33153e01333216042945c082afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5e2fd
5c029ea19cbea4fd87029ea29bbfa3fd870460ae67627c00000000020071ffe30475047b000b
0017004a401306b91200b90cb8128c1809120f51031215451810fcecf4ec310010e4f4ec10ee
3040233f197b007b067f077f087f097f0a7f0b7b0c7f0d7f0e7f0f7f107f117b12a019f01911
015d012206151416333236353426273200111000232200111000027394acab9593acac93f001
12feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8feecfeedfec701390113011401380000
000100ba0000034a047b001100304014060b0700110b03870eb809bc070a06080008461210fc
c4ec3231002fe4f4ecc4d4cc11123930b450139f1302015d012e012322061511231133153e01
33321617034a1f492c9ca7b9b93aba85132e1c03b41211cbbefdb20460ae6663050500000001
003dfe56047f0460000f01a240430708020911000f0a110b0a00000f0e110f000f0d110c0d00
000f0d110e0d0a0b0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a0906030008
0f040f0b1010d4c4c4111739310010e432f4ec113911391239304b5358071005ed071008ed07
1008ed071005ed071008ed0705ed17325922014bb00a544bb008545b58bd0010ffc000010010
001000403811373859014bb0145458bd00100040000100100010ffc0381137385940f0060005
080609030d160a170d100d230d350d490a4f0a4e0d5a095a0a6a0a870d800d930d120a000a09
060b050c0b0e0b0f1701150210041005170a140b140c1a0e1a0f270024012402200420052908
2809250a240b240c270d2a0e2a0f201137003501350230043005380a360b360c380d390e390f
30114100400140024003400440054006400740084209450a470d490e490f4011540051015102
5503500450055606550756085709570a550b550c590e590f501166016602680a690e690f6011
7b08780e780f89008a09850b850c890d890e890f9909950b950c9a0e9a0fa40ba40cab0eab0f
b011cf11df11ff11655d005d050e012b01353332363f01013309013302934e947c936c4c5433
21fe3bc3015e015ec368c87a9a488654044efc94036c00010073ffe3052705f000190036401a
0da10eae0a951101a100ae04951791118c1a07190d003014101a10fcec32ec310010e4f4ecf4
ec10eef6ee30b40f1b1f1b02015d01152e0123200011100021323637150e0123200011100021
3216052766e782ff00fef00110010082e7666aed84feadfe7a0186015386ed0562d55f5efec7
fed8fed9fec75e5fd34848019f01670168019f470000000200bafe5604a4047b0010001c003e
401b1ab9000e14b90508b80e8c01bd03bc1d11120b471704000802461d10fcec3232f4ec3100
10e4e4e4f4c4ec10c4ee304009601e801ea01ee01e04015d2511231133153e01333212111002
2322260134262322061514163332360173b9b93ab17bccffffcc7bb10238a79292a7a79292a7
a8fdae060aaa6461febcfef8fef8febc6101ebcbe7e7cbcbe7e7000200c10000017906140003
0007002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30400b10094009
50096009700905015d1333112311331523c1b8b8b8b80460fba00614e900000100c100000179
061400030022b7009702010800460410fcec31002fec30400d10054005500560057005f00506
015d13331123c1b8b80614f9ec00000100b0fef2027b0612000d004f400f069800970e0d0700
03120600130a0e10dce432ec113939310010fcec30014bb0135458bd000e00400001000e000e
ffc03811373859014bb00f5458bd000effc00001000e000e0040381137385901060215141217
23260235341237027b86828385a0969594970612e6fe3ee7e7fe3be5eb01c6e0df01c4ec0002
00c90000048d05d500080013003a40180195100095098112100a0802040005190d3f11001c09
041410fcec32fcec11173931002ff4ecd4ec30400b0f151f153f155f15af1505015d01113332
3635342623252132041514042b0111230193fe8d9a9a8dfe3801c8fb0101fefffbfeca052ffd
cf92878692a6e3dbdde2fda800010037000002f2059e0013003840190e05080f03a9001101bc
08870a0b08090204000810120e461410fc3cc4fc3cc432393931002fecf43cc4ec3211393930
b2af1501015d01112115211114163b01152322263511233533110177017bfe854b73bdbdd5a2
8787059efec28ffda0894e9a9fd202608f013e000000000100ba000004640614001300344019
030900030e0106870e11b80c970a010208004e0d09080b461410fcec32f4ec31002f3cecf4c4
ec1112173930b2601501015d0111231134262322061511231133113e013332160464b87c7c95
acb9b942b375c1c602a4fd5c029e9f9ebea4fd870614fd9e6564ef00000100ba00000464047b
001300364019030900030e0106870e11b80cbc0a010208004e0d09080b461410fcec32f4ec31
002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322061511231133153e0133
32160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef000100a4
fef2026f0612000d001f400f079800970e0701000b12041308000e10dc3cf4ec113939310010
fcec301333161215140207233612353402a4a096959596a08583830612ecfe3cdfe0fe3aebe5
01c5e7e701c20000000100c90000046a05d500050025400c0295008104011c033a00040610fc
ecec31002fe4ec304009300750078003800404015d133311211521c9ca02d7fc5f05d5fad5aa
00020071fe56045a047b000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90f
bd1a1d261900080c4706121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee11
12393930b6602a802aa02a03015d01342623220615141633323617100221222627351e013332
363d010e0123220211101233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5
b439b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a
01030104013a6263aa0000010071ffe303e7047b0019003f401b00860188040e860d880ab911
04b917b8118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30400b0f1b
101b801b901ba01b05015d01152e0123220615141633323637150e0123220011100021321603
e74e9d50b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2baa242401
3e010e0112013a2300000002007bffe3042d047b000a002500bc4027191f0b17090e00a91706
b90e1120861fba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4ec323211
393931002fc4e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f
27401d401e401f402040214022501d501e501f50205021502250277027851d871e871f872087
2185229027a027f0271e301e301f30203021401e401f40204021501e501f50205021601e601f
60206021701e701f70207021801e801f80208021185d015d0122061514163332363d01371123
350e01232226353436332135342623220607353e0133321602bedfac816f99b9b8b83fbc88ac
cbfdfb0102a79760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e
2eaa2727fc00000100c90000048b05d5000b002e401506950402950081089504ad0a05010907
031c00040c10fcec32d4c4c431002fececf4ec10ee30b21f0d01015d13211521112115211121
1521c903b0fd1a02c7fd3902f8fc3e05d5aafe46aafde3aa0000000100c90000042305d50009
002940120695040295008104ad08050107031c00040a10fcec32d4c431002fecf4ec10ee30b2
0f0b01015d13211521112115211123c9035afd700250fdb0ca05d5aafe48aafd370000010000
ff4202b205d50003002d4014001a010201021a03000342029f008104020001032fc439393100
10f4ec304b5358071005ed071005ed5922013301230208aafdf8aa05d5f96d000000000200c9
0000055405d50013001c00b14035090807030a06110304030511040403420604001503041595
0914950d810b040506031109001c160e050a191904113f140a1c0c041d10fcec32fcc4ec1117
391139393931002f3cf4ecd4ec123912391239304b5358071005ed071005ed1117395922b240
1e01015d40427a13010500050105020603070415001501140216031704250025012502260327
06260726082609201e3601360246014602680575047505771388068807980698071f5d005d01
1e01171323032e012b01112311212016151406011133323635342623038d417b3ecdd9bf4a8b
78dcca01c80100fc83fd89fe9295959202bc16907efe68017f9662fd8905d5d6d88dba024ffd
ee8783838500000200100000056805d50002000a00ba40410011010004050402110505040111
0a030a0011020003030a0711050406110505040911030a08110a030a42000307950103810905
09080706040302010009050a0b10d4c4173931002f3ce4d4ec1239304b5358071005ed0705ed
071005ed0705ed071008ed071005ed071005ed071008ed5922b2200c01015d403a0f00580076
0070008c000507010802060309041601190256015802500c67016802780176027c0372047707
780887018802800c980299039604175d005d090121013301230321032302bcfeee0225fe7be5
0239d288fd5f88d5050efd1903aefa2b017ffe81000000010073ffe3058b05f0001d00394020
00051b0195031b950812a111ae15950e91088c1e02001c1134043318190b101e10fcecfce4fc
c4310010e4f4ecf4ec10fed4ee11393930251121352111060423200011100021320417152626
23200011100021323604c3feb6021275fee6a0fea2fe75018b015e9201076f70fc8bfeeefeed
011301126ba8d50191a6fd7f53550199016d016e01994846d75f60fecefed1fed2fece250000
000200c9000005b005d500080011002e4015009509810195100802100a0005190d32001c0904
1210fcecf4ec113939393931002fecf4ec30b2601301015d0111332000111000212521200011
100029010193f40135011ffee1fecbfe42019f01b20196fe68fe50fe61052ffb770118012e01
2c0117a6fe97fe80fe7efe96000000010087ffe304a205f00027007e403c0d0c020e0b021e1f
1e080902070a021f1f1e420a0b1e1f0415010015a11494189511049500942591118c281e0a0b
1f1b0700221b190e2d071914222810dcc4ecfcece4111239393939310010e4f4e4ec10eef6ee
10c6111739304b535807100eed11173907100eed1117395922b20f2901015db61f292f294f29
035d01152e012322061514161f011e0115140421222627351e013332363534262f012e013534
24333216044873cc5fa5b377a67ae2d7feddfee76aef807bec72adbc879a7be2ca0117f569da
05a4c53736807663651f192bd9b6d9e0302fd04546887e6e7c1f182dc0abc6e42600000100c9
0000019305d500030039b700af02011c00040410fcec31002fec30014bb0105458bd0004ffc0
00010004000400403811373859400d30054005500560058f059f05065d13331123c9caca05d5
fa2b0000000200baffe304a40614000b001c0038401903b90c0f09b918158c0fb81b97190012
1247180c06081a461d10fcec3232f4ec31002fece4f4c4ec10c6ee30b6601e801ea01e03015d
013426232206151416333236013e01333212111002232226271523113303e5a79292a7a79292
a7fd8e3ab17bccffffcc7bb13ab9b9022fcbe7e7cbcbe7e702526461febcfef8fef8febc6164
a8061400000100db000001ae00fe00030011b7008302011900180410fcec31002fec30373315
23dbd3d3fefe000100100000056805d5000600b7402704110506050311020306060503110403
000100021101010042030401af0006040302000505010710d4c4173931002fec3239304b5358
071005ed071008ed071008ed071005ed5922b2500801015d406200032a03470447055a037d03
8303070600070208040906150114021a041a052a002601260229042905250620083800330133
023c043c053706480045014502490449054706590056066602690469057a0076017602790479
057506800898009706295d005d21013309013301024afdc6d301d901dad2fdc705d5fb1704e9
fa2b0001006401df027f028300030011b6009c020401000410dccc310010d4ec301321152164
021bfde50283a40000020071ffe3045a06140010001c003840191ab9000e14b905088c0eb801
970317040008024711120b451d10fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea0
1e03015d0111331123350e0123220211101233321601141633323635342623220603a2b8b83a
b17ccbffffcb7cb1fdc7a79292a8a89292a703b6025ef9eca86461014401080108014461fe15
cbe7e7cbcbe7e7000001006fffe303c7047b002700e7403c0d0c020e0b531f1e080902070a53
1e1f1e420a0b1e1f041500860189041486158918b91104b925b8118c281e0a0b1f1b0700521b
080e07081422452810fcc4ecd4ece4111239393939310010e4f4ec10fef5ee10f5ee12173930
4b535807100eed111739070eed1117395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b
2c0c3b093b0a3b0b3b0c0b200020012402280a280b2a132f142f152a16281e281f2920292124
27860a860b860c860d12000000010202060a060b030c030d030e030f03100319031a031b031c
041d09272f293f295f297f2980299029a029f029185d005d7101152e012322061514161f011e
0115140623222627351e013332363534262f012e01353436333216038b4ea85a898962943fc4
a5f7d85ac36c66c661828c65ab40ab98e0ce66b4043fae282854544049210e2a99899cb62323
be353559514b50250f2495829eac1e0000000001fffa000004e905d50007004a400e06029500
81040140031c0040050810d4e4fce431002ff4ec3230014bb00a5458bd000800400001000800
08ffc03811373859401300091f00100110021f071009400970099f09095d0321152111231121
0604effdeecbfdee05d5aafad5052b0000010056000006350460000c0201404905550605090a
0904550a0903550a0b0a025501020b0b0a061107080705110405080807021103020c000c0111
00000c420a050203060300bf0b080c0b0a09080605040302010b07000d10d4cc173931002f3c
ec32321739304b5358071005ed071008ed071008ed071005ed071008ed071005ed0705ed0710
08ed5922014bb00a544bb011545b4bb012545b4bb013545b4bb00b545b58bd000dffc0000100
0d000d00403811373859014bb00c544bb00d545b4bb010545b58bd000d00400001000d000dff
c0381137385940ff050216021605220a350a49024905460a400a5b025b05550a500a6e026e05
660a79027f0279057f05870299029805940abc02bc05ce02c703cf051d0502090306040b050a
080b09040b050c1502190316041a051b081b09140b150c250025012302270321042505220622
0725082709240a210b230c390336043608390c300e4602480346044004420540064007400844
09440a440b400e400e560056015602500451055206520750085309540a550b6300640165026a
0365046a056a066a076e09610b670c6f0e7500750179027d0378047d057a067f067a077f0778
0879097f097b0a760b7d0c870288058f0e97009701940293039c049b05980698079908402f96
0c9f0ea600a601a402a403ab04ab05a906a907ab08a40caf0eb502b103bd04bb05b809bf0ec4
02c303cc04ca05795d005d13331b01331b013301230b012356b8e6e5d9e6e5b8fedbd9f1f2d9
0460fc96036afc96036afba00396fc6a000000010058000003db0460000900b4401a08110203
0203110708074208a900bc03a905080301000401060a10dcc432c411393931002fecf4ec304b
5358071005ed071005ed5922014bb00b544bb00c545b58bd000a00400001000a000affc03811
373859014bb0135458bd000affc00001000a000a004038113738594042050216022602470249
07050b080f0b18031b082b08200b36033908300b400140024503400440054308570359085f0b
6001600266036004600562087f0b800baf0b1b5d005d1321150121152135012171036afd4c02
b4fc7d02b4fd650460a8fcdb93a803250000000100aeffe30458046000130036401903090003
0e0106870e118c0a01bc0c0d09080b4e020800461410fcecf4ec3231002fe432f4c4ec111217
3930b46015cf1502015d1311331114163332363511331123350e01232226aeb87c7c95adb8b8
43b175c1c801ba02a6fd619f9fbea4027bfba0ac6663f0000001009eff1201c300fe00050019
400c039e0083060304011900180610fcecd4cc310010fcec30373315032313f0d3a48152feac
fec001400001003b000004790460000b015a4046051106070604110304070706041105040102
0103110202010b110001000a11090a0101000a110b0a0708070911080807420a070401040800
bf05020a0704010408000208060c10d4c4d4c411173931002f3cec321739304b5358071005ed
071008ed071008ed071005ed071005ed071008ed071008ed071005ed5922014bb00a544bb00f
545b4bb010545b4bb011545b58bd000cffc00001000c000c00403811373859014bb0145458bd
000c00400001000c000cffc0381137385940980a04040a1a04150a260a3d04310a5504570758
0a660a76017a047607740a8d04820a99049f049707920a900aa601a904af04a507a30aa00a1c
0a03040505090a0b1a03150515091a0b2903260525092a0b200d3a013903370534073609390b
300d4903460545094a0b400d590056015902590357055606590756085609590b500d6f0d7801
7f0d9b019407ab01a407b00dcf0ddf0dff0d2f5d005d09022309012309013309010464fe6b01
aad9febafebad901b3fe72d9012901290460fddffdc101b8fe48024a0216fe71018f00000003
00c9000004ec05d5000800110020004340231900950a0995128101950aad1f110b080213191f
05000e1c1605191c2e09001c12042110fcec32fcecd4ec111739393931002fececf4ec10ee39
30b20f2201015d01112132363534262301112132363534262325213216151406071e01151404
232101930144a39d9da3febc012b94919194fe0b0204e7fa807c95a5fef0fbfde802c9fddd87
8b8c850266fe3e6f727170a6c0b189a21420cb98c8da000100ba0000049c0614000a00bc4029
0811050605071106060503110405040211050504420805020303bc0097090605010406080108
00460b10fcec32d4c4113931002f3cece41739304b5358071004ed071005ed071005ed071004
ed5922b2100c01015d405f04020a081602270229052b0856026602670873027705820289058e
08930296059708a3021209050906020b030a072803270428052b062b07400c6803600c890385
0489058d068f079a039707aa03a705b607c507d607f703f003f704f0041a5d71005d13331101
33090123011123bab90225ebfdae026bf0fdc7b90614fc6901e3fdf4fdac0223fddd000100b2
ffe3052905d50011004b40160802110b0005950e8c09008112081c0a38011c00411210fcecfc
ec310010e432f4ec113939393930014bb0105458bd00120040000100120012ffc03811373859
b61f138f139f13035d133311141633323635113311100021200011b2cbaec3c2aecbfedffee6
fee5fedf05d5fc75f0d3d3f0038bfc5cfedcfed6012a012400000001002f000002f806140013
0070401c0510010c08a906018700970e06bc0a02130700070905080d0f0b4c1410fc3cc4fc3c
c4c412393931002fe432fcec10ee3212393930014bb00a5458bd0014ffc00001001400140040
3811373859014bb00e5458bd00140040000100140014ffc03811373859b640155015a015035d
01152322061d012115211123112335333534363302f8b0634d012ffed1b9b0b0aebd06149950
68638ffc2f03d18f4ebbab000000000200030000000000140001000000000034000400200000
0004000400010000f02effff0000f000ffff10000001000000000006006800000000002f0000
000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013
001400150016001700180019001a001b001c001d001e001f0020002100220023002400250026
002700280029002a002b002c002d002e013500b800cb00cb00c100aa009c01a600b800660000
007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d300aa008700cb03aa
0400014a003300cb000000d9050200f4015400b4009c01390114013907060400044e04b40452
04b804e704cd0037047304cd04600473013303a2055605a60556053903c5021200c9001f00b8
01df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb008f00a4007b
00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e01d300f000ba0183
00d5009803040248009e01d500c100cb00f600830354027f00000333026600d300c700a400cd
008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000001d032d05d505d5
05d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec069300a000d3035c
037103db0185042304a80448008f0139011401390360008f05d5019a06140723066601790460
04600460047b009c00000277046001aa00e904600762007b00c5007f027b000000b4025205cd
006600bc00660077061000cd013b01850389008f007b0000001d00cd074a042f009c009c0000
077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f600830354063705f6
008f009c04e10266008f018d02f600cd03440029006604ee007300001400b606050403020100
2c2010b002254964b040515820c859212d2cb002254964b040515820c859212d2c20100720b0
0050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff
5058041b0559b0051cb0032508e12d2c4b505820b0fd454459212d2cb002254560442d2c4b53
58b00225b0022545445921212d2c45442d000001000000020000322394a85f0f3cf5001f0800
00000000bab9f0b800000000bac26791fe89fe1d0a4c076d0000000800010000000000000001
0000076dfe1d00000abcfe89fe890a4c00010000000000000000000000000000002f04cd0066
06e700c904ec007107cb00ba04e50071034a00ba04bc003d028b000005960073051400ba0239
00c1023900c1031f00b004d300c903230037051200ba051200ba031f00a4047500c905140071
0466007104e7007b050e00c9049a00c902b20000058f00c90579001006330073062900c90514
0087025c00c9051400ba028b00db0579001002e3006405140071042b006f04e3fffa068b0056
04330058051200ae028b009e04bc003b057d00c904a200ba05db00b202d1002f0000002200a0
010a016c01be01f602e602e60332038003a803c6040a044a048804c40500052c054e05b205fe
069406c406ee0714079e0818086c08ac09280952099e09b20a220a380a840b340b6c0c8a0cfc
0d380d540e220e7a0ef20f3a0f9200010000002f004d00070042000400020010004000070000
0415056800030001b8028040fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f3
2503f20e03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e842
03e7fe03e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df
3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d4
4703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca
3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe
03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505
b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab25
05ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a2
0e05a33203a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c039c9b19059c6403
9b9a10059b19039a1003990a0398fe0397960d0597fe03960d03958a410595960394930e0594
2803930e0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f5d038f40048e2503
8dfe038c8b2e058cfe038b2e038a8625058a410389880b05891403880b038786250587640386
85110586250385110384fe038382110583fe0382110381fe0380fe037ffe0340ff7e7d7d057e
fe037d7d037c64037b5415057b25037afe0379fe03780e03770c03760a0375fe0374fa0373fa
0372fa0371fa0370fe036ffe036efe036c21036bfe036a1142056a530369fe03687d03671142
0566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035afe0359580a05
59fa03580a035716190557320356fe035554150555420354150353011005531803521403514a
130551fe03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe034a4910054a1303
491d0d05491003480d0347fe0346960345960344fe0343022d0543fa0342bb03414b0340fe03
3ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe0339fe03383714
0538fa033736100537140336350b05361003350b03341e03330d0332310b0532fe03310b0330
2f0b05300d032f0b032e2d09052e10032d09032c32032b2a25052b64032a2912052a25032912
032827250528410327250326250b05260f03250b0324fe0323fe03220f032101100521120320
64031ffa031e1d0d051e64031d0d031c1142051cfe031bfa031a42031911420519fe03186403
1716190517fe031601100516190315fe0314fe0313fe031211420512fe0311022d0511420310
7d030f64030efe030d0c16050dfe030c0110050c16030bfe030a100309fe0308022d0508fe03
0714030664030401100504fe03401503022d0503fe0302011005022d0301100300fe0301b801
64858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00>
] def
FontName currentdict end definefont pop
%%Page: 1 1
%%BeginPageSetup
%%PageBoundingBox: 0 0 630 399
%%EndPageSetup
q
0 g
1.005231 w
0 J
0 j
[] 0.0 d
4 M q 1 0 0 -1 0 398.268463 cm
220.387 54.336 m 351.496 54.336 l 351.496 88.773 l 220.387 88.773 l
220.387 54.336 l h
220.387 54.336 m S Q
BT
9.6 0 0 9.6 240.400003 325.596368 Tm
/f-0-0 1 Tf
[<01>1<02>2<03>2<0405>-1<060708>-1<0403>2<090a0b>1<02>2<05>]TJ
0 -1.25 Td
[<0c0d>-1<060e0f>-1<0410>-1<11>]TJ
ET
1.60016 w
q 1 0 0 -1 0 398.268463 cm
175.582 163.477 m 175.582 168.566 160.82 172.695 142.613 172.695 c
124.402 172.695 109.645 168.566 109.645 163.477 c 109.645 158.383
124.402 154.254 142.613 154.254 c 160.82 154.254 175.582 158.383
175.582 163.477 c h
175.582 163.477 m S Q
q 1 0 0 -1 0 398.268463 cm
175.504 212.371 m 175.504 217.461 160.742 221.59 142.535 221.59 c
124.328 221.59 109.566 217.461 109.566 212.371 c 109.566 207.277
124.328 203.148 142.535 203.148 c 160.742 203.148 175.504 207.277
175.504 212.371 c h
175.504 212.371 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
175.023 163.754 m 175.023 212.371 l S Q
q 1 0 0 -1 0 398.268463 cm
109.645 163.477 m 109.645 212.09 l S Q
1.60016 w
q 1 0 0 -1 0 398.268463 cm
311.406 163.895 m 311.406 168.988 296.645 173.113 278.438 173.113 c
260.227 173.113 245.469 168.988 245.469 163.895 c 245.469 158.801
260.227 154.676 278.438 154.676 c 296.645 154.676 311.406 158.801
311.406 163.895 c h
311.406 163.895 m S Q
q 1 0 0 -1 0 398.268463 cm
311.328 212.789 m 311.328 217.879 296.566 222.008 278.359 222.008 c
260.152 222.008 245.391 217.879 245.391 212.789 c 245.391 207.695
260.152 203.57 278.359 203.57 c 296.566 203.57 311.328 207.695 311.328
212.789 c h
311.328 212.789 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
310.844 164.176 m 310.844 212.789 l S Q
q 1 0 0 -1 0 398.268463 cm
245.469 163.895 m 245.469 212.508 l S Q
1.60016 w
q 1 0 0 -1 0 398.268463 cm
439.926 166.688 m 439.926 171.781 425.164 175.91 406.957 175.91 c
388.75 175.91 373.988 171.781 373.988 166.688 c 373.988 161.598 388.75
157.469 406.957 157.469 c 425.164 157.469 439.926 161.598 439.926
166.688 c h
439.926 166.688 m S Q
q 1 0 0 -1 0 398.268463 cm
439.848 215.582 m 439.848 220.676 425.09 224.801 406.883 224.801 c
388.672 224.801 373.914 220.676 373.914 215.582 c 373.914 210.492
388.672 206.363 406.883 206.363 c 425.09 206.363 439.848 210.492
439.848 215.582 c h
439.848 215.582 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
439.367 166.969 m 439.367 215.582 l S Q
q 1 0 0 -1 0 398.268463 cm
373.988 166.688 m 373.988 215.305 l S Q
1.60016 w
q 1 0 0 -1 0 398.268463 cm
252.73 339.355 m 252.73 344.445 237.973 348.574 219.762 348.574 c
201.555 348.574 186.793 344.445 186.793 339.355 c 186.793 334.262
201.555 330.133 219.762 330.133 c 237.973 330.133 252.73 334.262 252.73
339.355 c h
252.73 339.355 m S Q
q 1 0 0 -1 0 398.268463 cm
252.656 388.25 m 252.656 393.34 237.895 397.469 219.688 397.469 c
201.48 397.469 186.719 393.34 186.719 388.25 c 186.719 383.156 201.48
379.027 219.688 379.027 c 237.895 379.027 252.656 383.156 252.656
388.25 c h
252.656 388.25 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
252.172 339.633 m 252.172 388.25 l S Q
q 1 0 0 -1 0 398.268463 cm
186.793 339.355 m 186.793 387.969 l S Q
BT
9.6 0 0 9.6 75.557163 243.454333 Tm
/f-0-0 1 Tf
[<12>18<04>1<130a14>1<15>-2<0b>]TJ
18.684519 -2.996216 Td
[<1216>1<17>1<18>-1<17>1<19>41<1a01>]TJ
0 -1.25 Td
[<1b1c1d>-2<1e1e>]TJ
12.805588 0.0276477 Td
[<120a>1<1f02>2<05>-1<0e>-1<06070c>-1<200b0a>1<1f11>]TJ
-26.891736 1.133586 Td
[<1d>-2<090a>1<14>1<02>1<18>-1<12>110<21>1<1d>]TJ
0 -1.25 Td
[<21>79<02>2<05>-1<0a0b>1<0413>]TJ
8.43187 5.747114 Td
[<17>73<05>21<0410>-1<0e22>-1<16>1<10>-1<23>]TJ
0 -1.25 Td
[<0d0f>-1<0624>-1<0a>1<14>1<15>-3<0b>]TJ
25.203725 -0.0305608 Td
[<16>1<24>-1<0e0a03>2<15>-2<0e>-1<02>2<23>]TJ
0 -1.25 Td
[<25>29<0a03>2<0a10>-1<1318>-1<0d>35<042602>2<05>]TJ
ET
1.005231 w
q 1 0 0 -1 0 398.268463 cm
156.406 248.234 m 287.516 248.234 l 287.516 282.676 l 156.406 282.676 l
156.406 248.234 l h
156.406 248.234 m S Q
BT
9.6 0 0 9.6 168.816605 130.165637 Tm
/f-0-0 1 Tf
[<01>1<02>2<03>2<0405>-1<060708>-1<0f>-1<15>-2<05>-1<15>-3<14>1<0e02>2<05>-1<0a
27>]TJ
10.126953 0 Td
[<02>2<05>]TJ
-10.126953 -1.25 Td
[<0c0d>-1<060e0f>-1<0410>-1<11>]TJ
ET
0.921608 w
[ 5.529648 0.921608] 0 d
q 1 0 0 1 0 398.268463 cm
0.461 -281.039 m 116.008 -281.039 l 116.008 -248.191 l 0.461 -248.191 l
0.461 -281.039 l h
0.461 -281.039 m S Q
BT
9.6 0 0 9.6 4.795825 134.635925 Tm
/f-0-0 1 Tf
[<1d>-2<0a>1<03>1<28>-1<0b>1<15>-3<0e0405>]TJ
0 -1.25 Td
[<0c02>1<201320>-1<0710>-1<1324090a14>1<02>2<29>-1<0724>-1<0902>2<14>1<0e
05>]TJ
10.197266 0 Td
[<02>2<11>]TJ
ET
0.874385 w
[ 0.874385 1.748769] 0 d
q 1 0 0 -1 0 398.268463 cm
331.52 249.285 m 435.379 249.285 l 435.379 282.18 l 331.52 282.18 l
331.52 249.285 l h
331.52 249.285 m S Q
BT
9.6 0 0 9.6 345.902591 136.871082 Tm
/f-0-0 1 Tf
[<16>1<2a0e>-1<0515>-3<14>1<0e0405>]TJ
0 -1.25 Td
[<0c02>1<201320>-1<0708>-1<15>-2<0b0a>1<1f05>20<02>2<11>]TJ
-23.853645 -9.999148 Td
[<1a1010>-1<040e15>-3<0e02>2<23>]TJ
0 -1.25 Td
[<25>29<0a03>2<0a10>-1<1318>-1<0d>35<042602>2<05>]TJ
7.661297 2.021848 Td
[<120a>1<1f02>2<05>-1<0e>-1<06070c>-1<200b0a>1<1f11>]TJ
0 -1.25 Td
[<1d>-2<090a>1<14>1<02>]TJ
ET
1.6 w
[] 0.0 d
q 1 0 0 -1 0 398.268463 cm
280.633 88.879 m 145.965 152.578 l S Q
151.75 248.425 m 153.273 252.686 l 144.52 245.007 l 156.012 246.901 l
151.75 248.425 l h
151.75 248.425 m f*
0.723173 w
q 1 0.473029 0.473029 -1 0 398.268463 cm
66.083 181.103 m 68.975 178.209 l 58.853 181.101 l 68.977 183.995 l
66.083 181.103 l h
66.083 181.103 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
280.074 89.438 m 280.074 153.695 l S Q
280.074 250.972 m 276.875 254.171 l 280.074 242.972 l 283.273 254.171 l
280.074 250.972 l h
280.074 250.972 m f*
0.8 w
q -0.000000000000000061 1 1 0.000000000000000061 0 398.268463 cm
-147.297 280.074 m -144.098 276.875 l -155.297 280.074 l -144.098
283.273 l -147.297 280.074 l h
-147.297 280.074 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
285.27 89.043 m 340.207 121.863 l S Q
334.711 279.69 m 330.324 278.581 l 341.578 275.585 l 333.605 284.077 l
334.711 279.69 l h
334.711 279.69 m f*
0.686779 w
q -1 0.597406 0.597406 1 0 398.268463 cm
-298.881 59.975 m -296.137 57.226 l -305.75 59.973 l -296.135 62.722 l
-298.881 59.975 l h
-298.881 59.975 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
155.465 265.453 m 116.348 265.453 l S Q
149.062 132.815 m 145.863 129.612 l 157.062 132.815 l 145.863 136.015 l
149.062 132.815 l h
149.062 132.815 m f*
0.8 w
q -1 -0.000000000000000122 -0.000000000000000122 1 0 398.268463 cm
-149.062 -265.453 m -145.863 -268.656 l -157.062 -265.453 l -145.863
-262.254 l -149.062 -265.453 l h
-149.062 -265.453 m S Q
122.75 132.815 m 125.949 136.015 l 114.75 132.815 l 125.949 129.612 l
122.75 132.815 l h
122.75 132.815 m f*
q 1 -0.000000000000000122 -0.000000000000000122 -1 0 398.268463 cm
122.75 265.453 m 125.949 262.254 l 114.75 265.453 l 125.949 268.656 l
122.75 265.453 l h
122.75 265.453 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
252.395 219.602 m 218.934 247.098 l S Q
223.879 155.233 m 224.32 159.737 l 217.699 150.155 l 228.383 154.792 l
223.879 155.233 l h
223.879 155.233 m f*
0.618042 w
q 1 0.821886 0.821886 -1 0 398.268463 cm
14.403 254.873 m 16.876 252.401 l 8.224 254.872 l 16.874 257.345 l
14.403 254.873 l h
14.403 254.873 m S Q
1.005231 w
q 1 0 0 -1 0 398.268463 cm
341.922 104.066 m 473.031 104.066 l 473.031 138.508 l 341.922 138.508 l
341.922 104.066 l h
341.922 104.066 m S Q
BT
9.6 0 0 9.6 354.334622 274.333276 Tm
/f-0-0 1 Tf
[<01>1<02>2<03>2<0405>-1<060708>-1<0f>-1<15>-2<05>-1<15>-3<14>1<0e02>2<05>-1<0a
27>]TJ
10.126953 0 Td
[<02>2<05>]TJ
-10.126953 -1.25 Td
[<0c0d>-1<060e0f>-1<0410>-1<11>]TJ
ET
1.6 w
q 1 0 0 -1 0 398.268463 cm
408.594 137.887 m 408.594 156.578 l S Q
408.594 248.089 m 405.395 251.288 l 408.594 240.089 l 411.797 251.288 l
408.594 248.089 l h
408.594 248.089 m f*
0.8 w
q -0.000000000000000061 1 1 0.000000000000000061 0 398.268463 cm
-150.18 408.594 m -146.98 405.395 l -158.18 408.594 l -146.98 411.797 l
-150.18 408.594 l h
-150.18 408.594 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
157.699 221.309 m 200.727 247.016 l S Q
195.23 154.538 m 190.844 153.429 l 202.098 150.433 l 194.125 158.925 l
195.23 154.538 l h
195.23 154.538 m f*
0.68678 w
q -1 0.597403 0.597403 1 0 398.268463 cm
-251.189 -93.67 m -248.444 -96.418 l -258.057 -93.672 l -248.443
-90.923 l -251.189 -93.67 l h
-251.189 -93.67 m S Q
2.4 w
[ 7.2 7.2] 0 d
q 1 0 0 -1 0 398.268463 cm
22.473 236.957 m 597.465 236.957 l S Q
BT
16 0 0 16 5.708505 64.082971 Tm
/f-0-0 1 Tf
[<2b15>-2<14>1<2c>1<22161023>]TJ
0 -1 Td
[<01>1<02>2<0e0f>-1<042304>1<0b04>1<1306>]TJ
0.674965 15.682794 Td
[<17>73<05>21<0410>-1<0e22>-1<16>1<10>-1<23>]TJ
0 -1 Td
[<01>1<02>2<0e0f>-1<042304>1<0b04>1<1306>]TJ
ET
0.921608 w
[ 5.529648 0.921608] 0 d
q 1 0 0 1 0 398.268463 cm
514.727 -138.27 m 630.273 -138.27 l 630.273 -105.422 l 514.727 -105.422
l 514.727 -138.27 l h
514.727 -138.27 m S Q
BT
9.6 0 0 9.6 519.059866 277.406592 Tm
/f-0-0 1 Tf
[<1d>-2<0a>1<03>1<28>-1<0b>1<15>-3<0e0405>]TJ
0 -1.25 Td
[<0c02>1<201320>-1<0710>-1<1324090a14>1<02>2<29>-1<0724>-1<0902>2<14>1<0e
05>]TJ
10.197266 0 Td
[<02>2<11>]TJ
ET
1.6 w
[] 0.0 d
q 1 0 0 -1 0 398.268463 cm
513.824 122.125 m 474.711 122.125 l S Q
507.426 276.143 m 504.227 272.944 l 515.426 276.143 l 504.227 279.343 l
507.426 276.143 l h
507.426 276.143 m f*
0.8 w
q -1 -0.000000000000000122 -0.000000000000000122 1 0 398.268463 cm
-507.426 -122.125 m -504.227 -125.324 l -515.426 -122.125 l -504.227
-118.926 l -507.426 -122.125 l h
-507.426 -122.125 m S Q
481.109 276.143 m 484.312 279.343 l 473.109 276.143 l 484.312 272.944 l
481.109 276.143 l h
481.109 276.143 m f*
q 1 -0.000000000000000122 -0.000000000000000122 -1 0 398.268463 cm
481.109 122.125 m 484.312 118.926 l 473.109 122.125 l 484.312 125.324 l
481.109 122.125 l h
481.109 122.125 m S Q
1.60016 w
q 1 0 0 -1 0 398.268463 cm
488.539 29.785 m 488.539 34.879 473.781 39.004 455.57 39.004 c 437.363
39.004 422.602 34.879 422.602 29.785 c 422.602 24.691 437.363 20.566
455.57 20.566 c 473.781 20.566 488.539 24.691 488.539 29.785 c h
488.539 29.785 m S Q
q 1 0 0 -1 0 398.268463 cm
488.465 78.68 m 488.465 83.77 473.703 87.898 455.496 87.898 c 437.289
87.898 422.527 83.77 422.527 78.68 c 422.527 73.586 437.289 69.461
455.496 69.461 c 473.703 69.461 488.465 73.586 488.465 78.68 c h
488.465 78.68 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
487.98 30.062 m 487.98 78.68 l S Q
q 1 0 0 -1 0 398.268463 cm
422.602 29.785 m 422.602 78.398 l S Q
BT
9.6 0 0 9.6 441.005374 347.123721 Tm
/f-0-0 1 Tf
[<25>167<02>2<14>1<0f>]TJ
0 -1.25 Td
[<120a>1<1f05>-1<15>-2<05>-1<06>]TJ
ET
q 1 0 0 -1 0 398.268463 cm
422.809 52.973 m 353.52 73.09 l S Q
359.664 326.964 m 361.848 330.929 l 351.984 324.733 l 363.629 324.784 l
359.664 326.964 l h
359.664 326.964 m f*
0.768277 w
q 1 0.290323 0.290323 -1 0 398.268463 cm
312.613 162.063 m 315.689 158.991 l 304.933 162.064 l 315.686 165.135 l
312.613 162.063 l h
312.613 162.063 m S Q
1.6 w
q 1 0 0 -1 0 398.268463 cm
282.879 22.918 m 282.32 51.973 l S Q
282.441 352.694 m 279.305 355.956 l 282.289 344.694 l 285.703 355.831 l
282.441 352.694 l h
282.441 352.694 m f*
0.799852 w
q 0.0192309 1 1 -0.0192309 0 398.268463 cm
-40.128 283.213 m -36.928 280.015 l -48.128 283.215 l -36.93 286.413 l
-40.128 283.213 l h
-40.128 283.213 m S Q
BT
9.6 0 0 9.6 199.049588 390.974713 Tm
/f-0-0 1 Tf
[<2d24>-1<02>2<05>-1<071d>-2<0902>2<140a>1<2e>-1<0a14>1<15>-2<0e>-1<0a>1<04
10>]TJ
0 -1.25 Td
[<0c26>-1<04>1<05>16<230724>-1<0a>1<27>-1<02>2<2907>-1<03>2<02>2<03>1<04
050607>]TJ
10.234375 0 Td
[<240a2702>1<2907>-1<15>-2<240902>2<140e0705>-1<15>-3<0e0a04>1<29>-1<07
02>2<0e>]TJ
10.169922 0 Td
<1420>Tj
ET
1.6 w
q 1 0 0 -1 0 398.268463 cm
327.57 265.453 m 288.457 265.453 l S Q
321.172 132.815 m 317.973 129.612 l 329.172 132.815 l 317.973 136.015 l
321.172 132.815 l h
321.172 132.815 m f*
0.8 w
q -1 -0.000000000000000122 -0.000000000000000122 1 0 398.268463 cm
-321.172 -265.453 m -317.973 -268.656 l -329.172 -265.453 l -317.973
-262.254 l -321.172 -265.453 l h
-321.172 -265.453 m S Q
294.855 132.815 m 298.055 136.015 l 286.855 132.815 l 298.055 129.612 l
294.855 132.815 l h
294.855 132.815 m f*
q 1 -0.000000000000000122 -0.000000000000000122 -1 0 398.268463 cm
294.855 265.453 m 298.055 262.254 l 286.855 265.453 l 298.055 268.656 l
294.855 265.453 l h
294.855 265.453 m S Q
1.370434 w
q 1 0 0 -1 0 398.268463 cm
219.727 282.898 m 219.727 328.188 l S Q
219.727 75.561 m 216.984 78.304 l 219.727 68.71 l 222.465 78.304 l
219.727 75.561 l h
219.727 75.561 m f*
0.685217 w
q -0.000000000000000061 1 1 0.000000000000000061 0 398.268463 cm
-322.707 219.727 m -319.965 216.984 l -329.559 219.727 l -319.965
222.465 l -322.707 219.727 l h
-322.707 219.727 m S Q
Q
showpage
%%Trailer
count op_count sub {pop} repeat
countdictstack dict_count sub {end} repeat
cairo_eps_state restore
%%EOF

BIN
docs/figs/methodology.pdf Normal file

Binary file not shown.

1053
docs/figs/methodology.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 44 KiB

BIN
docs/figs/ms_flop_schem.pdf Normal file

Binary file not shown.

1562
docs/figs/ms_flop_schem.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 42 KiB

BIN
docs/figs/nand2.pdf Normal file

Binary file not shown.

BIN
docs/figs/nand3.pdf Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,909 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg5357"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="nand_decoder.pdf">
<defs
id="defs5359" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="199"
inkscape:cy="520"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1855"
inkscape:window-height="1056"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid5365" />
</sodipodi:namedview>
<metadata
id="metadata5362">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g6154"
transform="translate(0,-120)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g6284"
transform="translate(0,-120)">
<path
inkscape:connector-curvature="0"
id="path5621"
d="m 50,432.36218 -20,0 0,-20 0,40"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6131"
d="m 20,422.36218 0,20"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6133"
d="m 12,426.36218 0,12"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(0,70.000003)"
id="g6284-0">
<path
inkscape:connector-curvature="0"
id="path5621-6"
d="m 50,432.36218 -20,0 0,-20 0,40"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6131-8"
d="m 20,422.36218 0,20"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6133-8"
d="m 12,426.36218 0,12"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(0,260)"
id="g6284-2">
<path
inkscape:connector-curvature="0"
id="path5621-65"
d="m 50,432.36218 -20,0 0,-20 0,40"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6131-4"
d="m 20,422.36218 0,20"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6133-2"
d="m 12,426.36218 0,12"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(0,450)"
id="g6284-3">
<path
inkscape:connector-curvature="0"
id="path5621-9"
d="m 50,432.36218 -20,0 0,-20 0,40"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6131-1"
d="m 20,422.36218 0,20"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path6133-7"
d="m 12,426.36218 0,12"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(116.92308,70.000003)"
id="g6154-5">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-5"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-7"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-2"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(233.07692,-120)"
id="g6154-6">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-8"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-0"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-7"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(233.07692,70.000003)"
id="g6154-3">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-4"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-1"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-4"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 110,182.36218 0,330"
id="path6395"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 230,182.36218 c 0,0 0,270 0,280 0,10 0,50 0,50"
id="path6397"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 340,182.36218 0,330"
id="path6399"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 460,182.36218 0,330"
id="path6401"
inkscape:connector-curvature="0" />
<g
transform="translate(-3.07692,260)"
id="g6154-2">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-54"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-8"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-5"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(346.92308,260)"
id="g6154-8">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-1"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-5"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-3"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(346.92308,450)"
id="g6154-4">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-2"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-56"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-37"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(120,450)"
id="g6154-0">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-3"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-9"
d="m 87.360281,408.9838 45.716639,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-1"
d="m 84.153851,414.03786 50.769229,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 170,312.36218 120,0"
id="path6488"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 400,312.36218 120,0"
id="path6490"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 50,502.36218 120,0"
id="path6492"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 400,502.36218 120,0"
id="path6494"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 170,692.36218 230,0"
id="path6496"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 400,882.36218 -110,0"
id="path6498"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50,882.36218 120,0"
id="path6500"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 140,692.36218 40,0"
id="path6502"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 590,182.36218 0,330"
id="path6531"
inkscape:connector-curvature="0" />
<g
id="g6578"
transform="translate(10,-59.999997)">
<path
transform="translate(194,-66.999997)"
d="m 350,377.36218 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<g
id="g6154-6-1"
transform="matrix(0,1,-1,0,942.36218,202.36218)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
id="path5141-5-8-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 87.360281,408.9838 45.716639,0"
id="path5145-6-0-1"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 84.153851,414.03786 50.769229,0"
id="path3414-7-5"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="translate(10,130)"
id="g6578-0">
<path
transform="translate(194,-66.999997)"
d="m 350,377.36218 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2-8"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<g
id="g6154-6-1-0"
transform="matrix(0,1,-1,0,942.36218,202.36218)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
id="path5141-5-8-3-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 87.360281,408.9838 45.716639,0"
id="path5145-6-0-1-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 84.153851,414.03786 50.769229,0"
id="path3414-7-5-2"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="translate(10,320)"
id="g6578-0-2">
<path
transform="translate(194,-66.999997)"
d="m 350,377.36218 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2-8-3"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<g
id="g6154-6-1-0-6"
transform="matrix(0,1,-1,0,942.36218,202.36218)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
id="path5141-5-8-3-8-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 87.360281,408.9838 45.716639,0"
id="path5145-6-0-1-2-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 84.153851,414.03786 50.769229,0"
id="path3414-7-5-2-4"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="translate(10,510)"
id="g6578-0-0">
<path
transform="translate(194,-66.999997)"
d="m 350,377.36218 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2-8-2"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<g
id="g6154-6-1-0-5"
transform="matrix(0,1,-1,0,942.36218,202.36218)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 50,432.36218 36.923081,0 0,-18.32432 46.153839,0 0,18.32432 36.92308,0"
id="path5141-5-8-3-8-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 87.360281,408.9838 45.716639,0"
id="path5145-6-0-1-2-95"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 84.153851,414.03786 50.769229,0"
id="path3414-7-5-2-8"
inkscape:connector-curvature="0" />
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 110,512.36218 0,430"
id="path6668"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 230,512.36218 0,430"
id="path6670"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 340,512.36218 0,430"
id="path6672"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 460,512.36218 0,430"
id="path6674"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 590,512.36218 0,430"
id="path6676"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.7320509;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 510,692.36218 120,0"
id="path6678"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.71269763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 520,312.36218 110,0"
id="path6680"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.71269763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 520,502.36218 110,0"
id="path6682"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.71269763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 520,882.36218 110,0"
id="path6684"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 500,882.36218 30,0"
id="path6686"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,390.40421,394.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3-8"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,390.40421,584.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3-4"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,390.40421,204.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3-0"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,390.40421,14.543631)" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 555,630.36218 35,0"
id="path6738"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 555,819.36218 33,0"
id="path6740"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3-3"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,458.40421,331.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3-7"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,459.40421,520.54363)" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 554.5,439.36218 35,0"
id="path6738-7"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 555.5,250.36218 35,0"
id="path6738-2"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3-3-0"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,459.40421,141.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3-3-3"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,460.40421,-47.456369)" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 500,192.36218 40,0"
id="path6806"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 500,382.36218 40,0"
id="path6808"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 500,572.36218 40,0"
id="path6810"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 500,762.36218 40,0"
id="path6812"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="100"
y="176.36218"
id="text6814"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6816"
x="100"
y="176.36218">A0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="204"
y="176.36218"
id="text6818"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6820"
x="204"
y="176.36218">A0_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="330"
y="175.36218"
id="text6822"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6824"
x="330"
y="175.36218">A1</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="434"
y="175.36218"
id="text6826"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6828"
x="434"
y="175.36218">A1_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="566"
y="179.36218"
id="text6830"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6832"
x="566"
y="179.36218">PCLK</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="521"
y="378.36218"
id="text6834"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6836"
x="521"
y="378.36218"
style="font-size:10px">VDD</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="527.14062"
y="203.0072"
id="text6834-5"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6836-3"
x="527.14062"
y="203.0072"
style="font-size:10px">VDD</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="522.14062"
y="568.0072"
id="text6834-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6836-7"
x="522.14062"
y="568.0072"
style="font-size:10px">VDD</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="521.14062"
y="757.0072"
id="text6834-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6836-8"
x="521.14062"
y="757.0072"
style="font-size:10px">VDD</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="690"
y="302.36218"
id="text6877"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6879"
x="690"
y="302.36218">WL3</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="690"
y="492.36218"
id="text6881"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6883"
x="690"
y="492.36218">WL2</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="690"
y="682.36218"
id="text6885"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6887"
x="690"
y="682.36218">WL1</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="690"
y="872.36218"
id="text6889"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6891"
x="690"
y="872.36218">WL0</tspan></text>
<g
id="g6987"
transform="translate(-20,2.6171874e-6)">
<path
inkscape:connector-curvature="0"
id="path6893-34"
d="m 650,862.36218 0,40 30,-20 z"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(340,505)"
d="m 350,377.36218 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2-5"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
id="g6987-8"
transform="translate(-20,-190)">
<path
inkscape:connector-curvature="0"
id="path6893-34-6"
d="m 650,862.36218 0,40 30,-20 z"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(340,505)"
d="m 350,377.36218 a 5,5 0 1 1 -10,0 5,5 0 1 1 10,0 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2-5-5"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
id="g6987-1"
transform="translate(-20,-380)">
<path
inkscape:connector-curvature="0"
id="path6893-34-7"
d="m 650,862.36218 0,40 30,-20 z"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(340,505)"
d="m 350,377.36218 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2-5-4"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
id="g6987-6"
transform="translate(-20,-570)">
<path
inkscape:connector-curvature="0"
id="path6893-34-72"
d="m 650,862.36218 0,40 30,-20 z"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(340,505)"
d="m 350,377.36218 a 5,5 0 1 1 -10,0 5,5 0 1 1 10,0 z"
sodipodi:ry="5"
sodipodi:rx="5"
sodipodi:cy="377.36218"
sodipodi:cx="345"
id="path6744-2-5-2"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 670,312.36218 50,0"
id="path7037"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 670,502.36218 50,0"
id="path7039"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 670,692.36218 50,0"
id="path7041"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 670,882.36218 50,0"
id="path7043"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 41 KiB

BIN
docs/figs/nor2.pdf Normal file

Binary file not shown.

BIN
docs/figs/overall_flow.pdf Normal file

Binary file not shown.

BIN
docs/figs/overview.dia Normal file

Binary file not shown.

BIN
docs/figs/overview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
docs/figs/pinv.pdf Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,311 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg3222"
version="1.1"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="precharge_schem.svg">
<defs
id="defs3224" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="161.5"
inkscape:cy="520"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1280"
inkscape:window-height="752"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3230" />
</sodipodi:namedview>
<metadata
id="metadata3227">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g4222"
transform="matrix(0,1,-1,0,482.36218,172.36218)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5"
d="m 110,292.36218 40,0 0,-30 50,0 0,30 40,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6"
d="m 150.47364,257.36218 49.52636,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414"
d="m 147,262.36218 55,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="matrix(0,-1,1,0,67.63782,522.36218)"
id="g4222-5">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-8"
d="m 110,292.36218 40,0 0,-30 50,0 0,30 40,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-8"
d="m 150.47364,257.36218 49.52636,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-9"
d="m 147,262.36218 55,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(100,190)"
id="g4222-9">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path5141-5-1"
d="m 110,292.36218 40,0 0,-30 50,0 0,30 40,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5145-6-1"
d="m 150.47364,257.36218 49.52636,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path3414-8"
d="m 147,262.36218 55,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 190,412.36218 0,70 20,0"
id="path4473"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 360,412.36218 0,70 -20,0"
id="path4475"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 360,282.36218 0,-20 -170,0 0,20"
id="path4477"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 360,482.36218 0,80"
id="path4479"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 190,482.36218 0,80"
id="path4481"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 280,262.36218 0,-40 30,0 -60,0"
id="path4483"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path6744"
sodipodi:cx="345"
sodipodi:cy="377.36218"
sodipodi:rx="5"
sodipodi:ry="5"
d="m 350,377.36218 a 5,5 0 1 1 -10,0 5,5 0 1 1 10,0 z"
transform="translate(-114,-31)" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path6744-2"
sodipodi:cx="345"
sodipodi:cy="377.36218"
sodipodi:rx="5"
sodipodi:ry="5"
d="m 350,377.36218 a 5,5 0 1 1 -10,0 5,5 0 1 1 10,0 z"
transform="translate(-26,-31)" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:1.62600005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path6744-8"
sodipodi:cx="345"
sodipodi:cy="377.36218"
sodipodi:rx="5"
sodipodi:ry="5"
d="m 350,377.36218 a 5,5 0 1 1 -10,0 5,5 0 1 1 10,0 z"
transform="translate(-69,64)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="184"
y="577.36218"
id="text4517"><tspan
sodipodi:role="line"
id="tspan4519"
x="184"
y="577.36218"
style="font-size:16px;line-height:1.25;font-family:sans-serif">BL</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="336"
y="577.36218"
id="text4521"><tspan
sodipodi:role="line"
id="tspan4523"
x="336"
y="577.36218"
style="font-size:16px;line-height:1.25;font-family:sans-serif">BL_bar</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="287"
y="217.36218"
id="text4525"><tspan
sodipodi:role="line"
id="tspan4527"
x="287"
y="217.36218"
style="font-size:16px;line-height:1.25;font-family:sans-serif">VDD</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 237,346.36218 77,0"
id="path4529"
inkscape:connector-curvature="0" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,145.40421,49.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-3"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,230.40421,184.54363)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-1"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,149.40421,-36.456369)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path7117-9-71-31"
sodipodi:cx="108"
sodipodi:cy="307.86218"
sodipodi:rx="2"
sodipodi:ry="2.5"
d="m 110,307.86218 a 2,2.5 0 1 1 -4,0 2,2.5 0 1 1 4,0 z"
transform="matrix(1.2092203,0,0,0.96737621,59.404208,183.54363)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="271"
y="334.36218"
id="text4791"><tspan
sodipodi:role="line"
id="tspan4793"
x="271"
y="334.36218"
style="font-size:16px;line-height:1.25;font-family:sans-serif">CLK</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="191"
y="351.36218"
id="text4795"><tspan
sodipodi:role="line"
id="tspan4797"
x="191"
y="351.36218"
style="font-size:14px;line-height:1.25;font-family:sans-serif">M1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="341"
y="351.36218"
id="text4799"><tspan
sodipodi:role="line"
id="tspan4801"
x="341"
y="351.36218"
style="font-size:14px;line-height:1.25;font-family:sans-serif">M2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="265"
y="472.36218"
id="text4803"><tspan
sodipodi:role="line"
id="tspan4805"
x="265"
y="472.36218"
style="font-size:14px;line-height:1.25;font-family:sans-serif">M3</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:2.01133299;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 276,435.35094 0,-87.98876"
id="path5336"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 400,572.36218 0,20 -250,0 0,-400 250,0 z"
id="path7280"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/figs/ptx.pdf Normal file

Binary file not shown.

1557
docs/figs/ptx.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

BIN
docs/figs/replica_cell.pdf Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,550 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="sense_amp.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="199"
inkscape:cy="520"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1855"
inkscape:window-height="1056"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2989" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g3496"
transform="translate(-148.99875,80.014073)">
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3011">
<path
id="path3013"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3015">
<path
id="path3017"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3019">
<path
id="path3021"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3496-2"
transform="matrix(0,-1,1,0,-62.34811,791.36093)">
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3011-2">
<path
id="path3013-5"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3015-0">
<path
id="path3017-5"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3019-3">
<path
id="path3021-5"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3496-3"
transform="matrix(0,1,-1,0,802.34811,113.36343)">
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3011-6">
<path
id="path3013-6"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3015-2">
<path
id="path3017-1"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3019-35">
<path
id="path3021-51"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3496-7"
transform="translate(211.00125,80.014073)">
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3011-9">
<path
id="path3013-2"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3015-8">
<path
id="path3017-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3019-4">
<path
id="path3021-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3496-8"
transform="matrix(0,-1,1,0,-2.34811,920.37376)">
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3011-0">
<path
id="path3013-66"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3015-3">
<path
id="path3017-52"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,240,223.19311)"
id="g3019-1">
<path
id="path3021-6"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3630"
transform="matrix(0,-1,1,0,-332.3481,1091.3609)">
<g
transform="matrix(1.25,0,0,1.25,370,363.1931)"
id="g3035">
<path
id="path3037"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,271.324 -16,0 0,-16 0,32"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,370,363.1931)"
id="g3039">
<path
id="path3041"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 7.199,263.324 0,16"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,370,363.1931)"
id="g3043">
<path
id="path3045"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 0.801,266.523 0,9.602"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3689"
transform="translate(1.00125,0.01406962)">
<g
transform="matrix(1.25,0,0,1.25,-200,23.193113)"
id="g3223">
<path
id="path3225"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 434.398,221.727 c 0,2.207 -1.789,4 -4,4 -2.207,0 -4,-1.793 -4,-4 0,-2.211 1.793,-4 4,-4 2.211,0 4,1.789 4,4 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3227">
<path
id="path3229"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 175.324,-407.199 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3231">
<path
id="path3233"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 205.215,-425.902 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3235">
<path
id="path3237"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 202.648,-421.859 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3689-1"
transform="matrix(-1,0,0,1,738.99875,0.01406962)">
<g
transform="matrix(1.25,0,0,1.25,-200,23.193113)"
id="g3223-4">
<path
id="path3225-0"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 434.398,221.727 c 0,2.207 -1.789,4 -4,4 -2.207,0 -4,-1.793 -4,-4 0,-2.211 1.793,-4 4,-4 2.211,0 4,1.789 4,4 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3227-8">
<path
id="path3229-5"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 175.324,-407.199 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3231-3">
<path
id="path3233-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 205.215,-425.902 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3235-8">
<path
id="path3237-5"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 202.648,-421.859 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 310,362.36218 0,30"
id="path3810"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 430,362.36218 0,30"
id="path4580"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 310,242.36218 0,-20 120,0 0,20"
id="path4582"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 370,222.36218 0,-40 30,0 -60,0"
id="path4584"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 310,512.36218 120,0 -60,0 0,10"
id="path4588"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2.23606801;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 370,632.36218 0,50"
id="path4590"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 130,452.36218 -30,0 0,-120 0,220 0,10"
id="path4592"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 610,452.36218 30,0 0,-120 0,230"
id="path4594"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 190,432.36218 0,-20 0,-10"
id="path4598"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 550,432.36218 0,-30"
id="path4600"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 490,452.36218 -40,0"
id="path4602"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 250,452.36218 40,0"
id="path4604"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 350,582.36218 -30,0"
id="path4606"
inkscape:connector-curvature="0" />
<g
id="g3319-2"
transform="matrix(1.25,0,0,1,-140,173.20718)">
<path
inkscape:connector-curvature="0"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3321-6" />
</g>
<g
id="g3319-9"
transform="matrix(1.25,0,0,1,-410,113.20718)">
<path
inkscape:connector-curvature="0"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3321-1" />
</g>
<g
id="g3319-3"
transform="matrix(1.25,0,0,1,129,112.20718)">
<path
inkscape:connector-curvature="0"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3321-5" />
</g>
<g
id="g3319"
transform="matrix(1.25,0,0,1,-139,-116.79282)">
<path
inkscape:connector-curvature="0"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3321" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 370,302.36218 0,70 -60,0"
id="path4656"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 430,372.36218 80,0 0,-70 0,0 -10,10 10,-10 10,10"
id="path4658"
inkscape:connector-curvature="0" />
<g
id="g3319-4"
transform="matrix(1.25,0,0,1,-201,33.207183)">
<path
inkscape:connector-curvature="0"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3321-58" />
</g>
<g
id="g3319-91"
transform="matrix(1.25,0,0,1,-79,33.207183)">
<path
inkscape:connector-curvature="0"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3321-4" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 345,300.36218 50,0"
id="path4680"
inkscape:connector-curvature="0" />
<g
id="g3319-1"
transform="matrix(1.25,0,0,1,-140,-37.792817)">
<path
inkscape:connector-curvature="0"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3321-42" />
</g>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="390"
y="172.36218"
id="text4691"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4693"
x="390"
y="172.36218">VDD</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="488"
y="297.36218"
id="text4695"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4697"
x="488"
y="297.36218">DATA</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="615"
y="577.36218"
id="text4699"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4701"
x="615"
y="577.36218">BL_bar</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="89"
y="580.36218"
id="text4703"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4705"
x="89"
y="580.36218">BL</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="295"
y="588.36218"
id="text4707"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4709"
x="295"
y="588.36218">EN</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="540"
y="398.36218"
id="text4711"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4713"
x="540"
y="398.36218">EN</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="180"
y="399.36218"
id="text4715"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4717"
x="180"
y="399.36218">EN</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
d="m 680,572.36218 0,-440 -620,0 0,610 620,0 z"
id="path4738"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,679 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.47 r22583"
sodipodi:docname="sram_architecture.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient4867">
<stop
style="stop-color:#cccccc;stop-opacity:1;"
offset="0"
id="stop4869" />
<stop
style="stop-color:#cccccc;stop-opacity:0;"
offset="1"
id="stop4871" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3807">
<stop
style="stop-color:#cccccc;stop-opacity:1;"
offset="0"
id="stop3809" />
<stop
style="stop-color:#cccccc;stop-opacity:0;"
offset="1"
id="stop3811" />
</linearGradient>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3831"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path3834"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3807"
id="linearGradient3813"
x1="199.69901"
y1="218.7489"
x2="199.43983"
y2="217.65218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,116)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3807"
id="linearGradient3819"
gradientUnits="userSpaceOnUse"
x1="199.69901"
y1="218.7489"
x2="199.43983"
y2="217.65218"
gradientTransform="translate(0,-691.72632)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4867"
id="linearGradient4873"
x1="394.20999"
y1="489.94479"
x2="393.62537"
y2="490.3624"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,100)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4867"
id="linearGradient4879"
gradientUnits="userSpaceOnUse"
x1="394.20999"
y1="489.94479"
x2="393.62537"
y2="490.3624"
gradientTransform="translate(-1019.8693,100)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4867"
id="linearGradient4885"
gradientUnits="userSpaceOnUse"
x1="394.20999"
y1="489.94479"
x2="393.62537"
y2="490.3624"
gradientTransform="translate(0,100)" />
<inkscape:perspective
id="perspective11695"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.59865321"
inkscape:cx="372.04724"
inkscape:cy="526.18109"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1440"
inkscape:window-height="878"
inkscape:window-x="0"
inkscape:window-y="0"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:url(#linearGradient3813);fill-opacity:1"
id="rect2383"
width="165.71428"
height="94.646927"
x="133.76231"
y="309.66827" />
<rect
style="fill:#cccccc"
id="rect2385"
width="208.57143"
height="188.57143"
x="406.00479"
y="309.50024" />
<rect
style="fill:#cccccc"
id="rect2387"
width="208.38266"
height="62.857143"
x="405.96155"
y="70.725639" />
<rect
style="fill:url(#linearGradient4873);fill-opacity:1"
id="rect2389"
width="138.24103"
height="54.285713"
x="371.81412"
y="558.85974" />
<text
xml:space="preserve"
style="font-size:23.82649612px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="452.81046"
y="105.8875"
id="text2399"
transform="scale(0.9927707,1.0072819)"><tspan
sodipodi:role="line"
id="tspan2401"
x="452.81046"
y="105.8875">Precharge</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="478.94641"
y="410.42963"
id="text2403"><tspan
sodipodi:role="line"
id="tspan2405"
x="478.94641"
y="410.42963">Array</tspan></text>
<rect
style="fill:#cccccc"
id="rect2429"
width="277.14285"
height="54.285713"
x="371.49484"
y="672.11481" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="439.30377"
y="708.78662"
id="text2437"><tspan
sodipodi:role="line"
id="tspan2439"
x="439.30377"
y="708.78662">Sense Amp</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);marker-end:none;stroke-opacity:1"
d="M 510.87523,794.2793 L 510.29735,726.40052"
id="path2453"
inkscape:connector-type="polyline"
inkscape:connection-end="#rect2429" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00533342px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
d="M 510.37148,613.14813 L 510.36003,672.35929"
id="path2455"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00327015px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
d="M 297.90384,403.80303 L 406.00315,403.80054"
id="path2469"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="237.36064"
y="462.23129"
id="text2497"><tspan
sodipodi:role="line"
id="tspan2499"
x="237.36064"
y="462.23129" /></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="25.282948"
y="393.58963"
id="text2531"
transform="matrix(0.99999959,-9.0349959e-4,9.0349959e-4,0.99999959,0,0)"><tspan
sodipodi:role="line"
x="25.282948"
y="393.58963"
id="tspan2535">Address</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="538.99377"
y="516.83362"
id="text2832"><tspan
sodipodi:role="line"
id="tspan2834"
x="538.99377"
y="516.83362"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="538.99377"
y="531.83362"
id="tspan2938">BL<tspan
style="font-size:6px"
id="tspan2950">0</tspan>,BR<tspan
style="font-size:6px"
id="tspan2948">0</tspan>, BL<tspan
style="font-size:6px"
id="tspan2946">1</tspan>, BR<tspan
style="font-size:6px"
id="tspan2944">1</tspan>, ... BL<tspan
style="font-size:6px"
id="tspan2942">j</tspan> BR<tspan
style="font-size:6px"
id="tspan2940">j </tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 364.52511,382.19547 L 336.74637,425.84777"
id="path2836" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="280.00189"
y="-339.76331"
id="text2838"
transform="matrix(3.852356e-3,0.9999926,-0.9999926,3.852356e-3,0,0)"><tspan
sodipodi:role="line"
id="tspan2840"
x="280.00189"
y="-339.76331"> Word Lines</tspan><tspan
sodipodi:role="line"
x="280.00189"
y="-324.76331"
id="tspan2930"> W<tspan
style="font-size:6px"
id="tspan2936">0</tspan>, W<tspan
style="font-size:6px"
id="tspan2934">1</tspan>, ..., W<tspan
style="font-size:6px"
id="tspan2932">log(n)</tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 371.888,589.5005 L 309.17124,589.84843"
id="path2842"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 370.94208,702.41208 L 308.22531,702.76001"
id="path2854"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 491.10498,654.25031 L 526.70018,628.88523"
id="path2870" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="52.220901"
y="420.68866"
id="text2888"
transform="matrix(0.99994011,0.01094382,-0.01094382,0.99994011,0,0)"><tspan
sodipodi:role="line"
id="tspan2890"
x="52.220901"
y="420.68866">A<tspan
style="font-size:6px"
id="tspan2892">0</tspan>, A<tspan
style="font-size:6px"
id="tspan2896">1</tspan>, ... A<tspan
style="font-size:6px"
id="tspan2898">n</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="552.88428"
y="-299.25662"
id="text2902"
transform="matrix(-1.094382e-2,0.9999401,-0.9999401,-1.094382e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan2904"
x="552.88428"
y="-299.25662">A<tspan
style="font-size:6px"
id="tspan2906">0</tspan>, A<tspan
style="font-size:6px"
id="tspan2908">1</tspan>, ... Ak<tspan
style="font-size:6px"
id="tspan2910" /></tspan></text>
<text
xml:space="preserve"
style="font-size:37.14432144px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="784.93219"
y="-237.72998"
id="text2912"
transform="matrix(2.6675397e-2,0.8871754,-1.1264084,2.54215e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan2914"
x="784.93219"
y="-237.72998"
style="font-size:18.57216072px">S<tspan
style="font-size:9.28608036px"
id="tspan2916">clk</tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 491.47553,766.55443 L 530.65923,741.92468"
id="path2922" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="727.75165"
y="543.27771"
id="text2970"><tspan
sodipodi:role="line"
id="tspan2972"
x="727.75165"
y="543.27771" /></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="537.27209"
y="156.72511"
id="text2992"><tspan
sodipodi:role="line"
id="tspan2994"
x="537.27209"
y="156.72511"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="537.27209"
y="171.72511"
id="tspan2996">BL<tspan
style="font-size:6px"
id="tspan2998">0</tspan>,BR<tspan
style="font-size:6px"
id="tspan3000">0</tspan>, BL<tspan
style="font-size:6px"
id="tspan3002">1</tspan>, BR<tspan
style="font-size:6px"
id="tspan3004">1</tspan>, ... BL<tspan
style="font-size:6px"
id="tspan3006">j</tspan> BR<tspan
style="font-size:6px"
id="tspan3008">j </tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="523.96411"
y="638.21588"
id="text3010"><tspan
sodipodi:role="line"
id="tspan3012"
x="523.96411"
y="638.21588"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="523.96411"
y="653.21588"
id="tspan3014">BL<tspan
style="font-size:6px"
id="tspan3016">0</tspan>,BR<tspan
style="font-size:6px"
id="tspan3018">0</tspan>, BL<tspan
style="font-size:6px"
id="tspan3020">1</tspan>, BR<tspan
style="font-size:6px"
id="tspan3022">1</tspan>, ... BL<tspan
style="font-size:6px"
id="tspan3024">j/2^k</tspan> BR<tspan
style="font-size:6px"
id="tspan3026">j/2^k </tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-mid:none;marker-end:none;marker-start:url(#Arrow1Lstart)"
d="M 404.99504,103.56693 L 342.27828,103.91486"
id="path3046"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="86.832726"
y="-327.60617"
id="text3052"
transform="matrix(-1.094382e-2,0.9999401,-0.9999401,-1.094382e-2,0,0)"><tspan
sodipodi:role="line"
id="tspan3054"
x="86.832726"
y="-327.60617">Pclk</tspan><tspan
sodipodi:role="line"
x="86.832726"
y="-312.60617"
id="tspan3062" /></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="551.03613"
y="753.10077"
id="text3064"><tspan
sodipodi:role="line"
id="tspan3066"
x="551.03613"
y="753.10077"
style="font-size:12px"> </tspan><tspan
sodipodi:role="line"
x="551.03613"
y="768.10077"
id="tspan3068"><tspan
style="font-size:12px"
id="tspan3111">D</tspan><tspan
style="font-size:8px"
id="tspan3074">0</tspan><tspan
style="font-size:12px"
id="tspan3115">, </tspan><tspan
style="font-size:12px"
id="tspan3109">D</tspan><tspan
style="font-size:8px"
id="tspan3072">1</tspan><tspan
style="font-size:12px"
id="tspan3113">, ...,</tspan><tspan
style="font-size:12px"
id="tspan3107"> D</tspan><tspan
style="font-size:8px"
id="tspan3070">j/2^k</tspan></tspan></text>
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.40000001000000002;stroke-miterlimit:18.10000038000000089;stroke-dasharray:none"
id="path3309"
d="M 75.196328,158.6717 C 80.758538,157.28869 86.44734,156.6028 92.133726,155.94035 C 107.05435,154.05138 121.8677,151.43215 136.75528,149.30749 C 147.64996,147.53122 158.58499,146.01225 169.47598,144.21603 C 171.5715,143.74706 173.73538,143.65255 175.84432,143.27807 C 176.90658,143.08945 177.95684,142.73177 179.00742,142.48204 C 180.58421,142.34805 181.98047,141.66528 183.53245,141.39396 L 172.37378,149.88252 C 170.88347,150.29297 169.41362,150.72728 167.88051,150.96244 C 164.844,151.6568 161.73546,151.85357 158.66031,152.32711 C 148.00248,153.81685 137.31827,155.11752 126.69325,156.8396 C 111.66369,159.01206 96.704443,161.62748 81.668664,163.7554 C 75.768122,164.62195 69.820463,165.47786 64.116915,167.27925 L 75.196328,158.6717 z" />
<rect
y="-498.05804"
x="133.76231"
height="94.646927"
width="165.71428"
id="rect3815"
style="fill:url(#linearGradient3819);fill-opacity:1"
transform="scale(1,-1)" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="170.85649"
y="394.76114"
id="text2393"><tspan
sodipodi:role="line"
id="tspan2395"
x="170.85649"
y="394.76114">Address </tspan><tspan
sodipodi:role="line"
x="170.85649"
y="424.76114"
id="tspan2397">Decoder</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 133.5,403.36218 L 70.75,402.86218"
id="path3823" />
<rect
y="558.85974"
x="371.81412"
height="54.285713"
width="138.24103"
id="rect4875"
style="fill:url(#linearGradient4885);fill-opacity:1" />
<rect
style="fill:url(#linearGradient4879);fill-opacity:1"
id="rect4877"
width="138.24103"
height="54.285713"
x="-648.05518"
y="558.85974"
transform="scale(-1,1)" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="439.2803"
y="595.7511"
id="text2407"><tspan
sodipodi:role="line"
id="tspan2409"
x="439.2803"
y="595.7511">Column Mux</tspan></text>
<path
inkscape:connector-type="polyline"
id="path4881"
d="M 510.37147,497.86869 L 510.36004,557.47571"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00782228px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1" />
<path
id="path4883"
d="M 491.10498,538.25031 L 526.70018,512.88523"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#cccccc"
id="rect2427"
width="277.14285"
height="54.285713"
x="372.23978"
y="190.47002" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="432.57791"
y="225.61827"
id="text2433"><tspan
sodipodi:role="line"
id="tspan2435"
x="432.57791"
y="225.61827">Write Driver</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);stroke-opacity:1"
d="M 371.40729,219.41404 L 308.69052,219.76197"
id="path2848"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;stroke-opacity:1"
d="M 340.99482,208.10497 C 327.752,230.80694 327.752,230.80694 327.752,230.80694"
id="path2882" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="167.72096"
y="-293.01819"
id="text2884"
transform="matrix(-2.8547241e-3,0.9999959,-0.9999959,-2.8547241e-3,0,0)"><tspan
sodipodi:role="line"
id="tspan2886"
x="167.72096"
y="-293.01819">Enable, Data in</tspan></text>
<text
xml:space="preserve"
style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="519.95123"
y="268.63846"
id="text3028"><tspan
sodipodi:role="line"
id="tspan3030"
x="519.95123"
y="268.63846"
style="font-size:12px"> Bit Lines</tspan><tspan
sodipodi:role="line"
x="519.95123"
y="283.63846"
id="tspan3084"><tspan
style="font-size:12px"
id="tspan3103">BL</tspan>0 ,<tspan
style="font-size:12px"
id="tspan3101">BR</tspan><tspan
style="font-size:8px"
id="tspan3036">0</tspan>, <tspan
style="font-size:12px"
id="tspan3099">BL</tspan><tspan
style="font-size:8px"
id="tspan3038">1</tspan>, <tspan
style="font-size:12px"
id="tspan3097">BR</tspan><tspan
style="font-size:8px"
id="tspan3078">1</tspan>, ... <tspan
style="font-size:12px"
id="tspan3095">BL</tspan><tspan
style="font-size:8px"
id="tspan3042">j/2^k</tspan><tspan
style="font-size:12px"
id="tspan3093"> BR</tspan><tspan
style="font-size:8px"
id="tspan3044">j /2^k</tspan></tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
d="M 510.33208,133.58278 L 510.65644,190.47002"
id="path4910"
inkscape:connector-type="polyline"
inkscape:connection-start="#rect2387"
inkscape:connection-end="#rect2427" />
<path
inkscape:connector-type="polyline"
id="path6475"
d="M 508.33374,244.83566 L 508.65589,308.42732"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.0536716px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 491.10498,280.25031 L 526.70018,254.88523"
id="path6477" />
<path
id="path6479"
d="M 491.10498,168.25031 L 526.70018,142.88523"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="421.4057"
y="772.73633"
id="text2531-9"
transform="matrix(0.99999959,-9.0349959e-4,9.0349959e-4,0.99999959,0,0)"><tspan
sodipodi:role="line"
x="421.4057"
y="772.73633"
id="tspan2535-7">Data</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

3128
docs/figs/sram_overview.eps Normal file

File diff suppressed because it is too large Load Diff

BIN
docs/figs/sram_overview.pdf Normal file

Binary file not shown.

717
docs/figs/sram_overview.svg Normal file
View File

@ -0,0 +1,717 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1400"
height="600"
id="svg15111"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="sram_overview.eps">
<defs
id="defs15113">
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path4426"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path4429"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 300 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="800 : 300 : 1"
inkscape:persp3d-origin="400 : 200 : 1"
id="perspective15119" />
<inkscape:perspective
id="perspective15833"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15833-1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15833-8"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15833-4"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15882"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15882-4"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15882-7"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15924"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15946"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15968"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective15990"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16012"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-9"
style="overflow:visible">
<path
id="path4429-4"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<inkscape:perspective
id="perspective16040"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16062"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16084"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16106"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16131"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16158"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-1"
style="overflow:visible">
<path
id="path4429-2"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<inkscape:perspective
id="perspective16186"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16211"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16242"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16269"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16294"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16316"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16347"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16372"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-94"
style="overflow:visible">
<path
id="path4429-9"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<inkscape:perspective
id="perspective16400"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16422"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16422-0"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16471"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16500"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16525"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16575"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16600"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective16614"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-97"
style="overflow:visible">
<path
id="path4429-5"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<inkscape:perspective
id="perspective17030"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5572"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5597"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.99333333"
inkscape:cx="947.59955"
inkscape:cy="300"
inkscape:current-layer="layer1"
inkscape:document-units="px"
showgrid="false"
inkscape:window-width="1329"
inkscape:window-height="844"
inkscape:window-x="20"
inkscape:window-y="20"
inkscape:window-maximized="0" />
<metadata
id="metadata15116">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect15121"
width="519.36816"
height="303.93195"
x="262.29578"
y="64.980331" />
<path
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 173.15436,64.429532 0,305.033558 -47.31544,-47.31544 0,-222.483218 47.31544,-35.2349 z"
id="path15123" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
d="m 80.536913,206.37584 45.302007,0"
id="path15635" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 173.45039,90.900049 608.46835,0"
id="path15823" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 173.45039,199.80261 608.46835,0"
id="path15823-4" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 173.45039,308.70514 608.46835,0"
id="path15823-8" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 173.45039,127.20093 608.46835,0"
id="path15823-8-8" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 173.45039,345.00599 608.46835,0"
id="path15823-8-9" />
<rect
style="fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect15914-8"
width="125.77853"
height="23.09396"
x="441.47318"
y="451.54028" />
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 263.71178,386.53057 514.52275,0 -88.72094,45.39523 -354.68358,0 -71.11823,-45.39523 z"
id="path15123-4"
sodipodi:nodetypes="ccccc" />
<rect
style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect15914-88"
width="520.47858"
height="21.149712"
x="259.22379"
y="24.660044" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 275.80504,45.725931 0,340.520019"
id="path15823-04" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 291.90036,45.255571 0,340.520019"
id="path15823-04-0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94553411;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 751.05521,44.49338 0,342.35862"
id="path15823-04-5" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94553411;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 767.14539,44.02048 0,342.35862"
id="path15823-04-0-3" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 515.43792,43.943229 0,340.520021"
id="path15823-04-8" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 531.53324,43.472879 0,340.520011"
id="path15823-04-0-5" />
<rect
style="fill:none;stroke:#000000;stroke-width:3.10895896;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect16148"
width="26.065538"
height="24.052114"
x="511.45044"
y="188.30951" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 455.27666,434.4221 0,19.10164"
id="path15823-04-8-6" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 472.91124,434.39572 0,19.10164"
id="path15823-04-0-5-7" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 539.84043,433.41539 0,19.10164"
id="path15823-04-8-6-5" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 557.47501,433.38901 0,19.10164"
id="path15823-04-0-5-7-5" />
<rect
style="fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect16228"
width="26.174496"
height="305.03357"
x="203.35571"
y="63.422813" />
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="479.19464"
y="42.281887"
id="text16230"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan16232"
x="479.19464"
y="42.281887"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">Precharge</tspan></text>
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="71.762146"
y="70.878868"
id="text16230-0"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
x="71.762146"
y="70.878868"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16259">Decoder</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect15914-8-7"
width="125.77853"
height="23.09396"
x="440.46643"
y="493.82217" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 453.26324,475.19391 0,19.10164"
id="path15823-04-8-6-7" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 470.89782,475.16753 0,19.10164"
id="path15823-04-0-5-7-9" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 537.82701,474.1872 0,19.10164"
id="path15823-04-8-6-5-7" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 555.46159,474.16082 0,19.10164"
id="path15823-04-0-5-7-5-5" />
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="450.28564"
y="414.16745"
id="text16230-2-3"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan16232-0-9"
x="450.28564"
y="414.16745"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">Column Mux</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
d="m 251.4312,410.73825 45.30201,0"
id="path15635-1" />
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="169.25159"
y="38.423615"
id="text16230-0-9"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan16232-5-8"
x="169.25159"
y="38.423615"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">WL</tspan><tspan
sodipodi:role="line"
x="169.25159"
y="58.423615"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16259-3">Driver</tspan></text>
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="5.1576228"
y="205.53769"
id="text16230-0-90"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
x="5.1576228"
y="205.53769"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16259-7">Upper</tspan><tspan
sodipodi:role="line"
x="5.1576228"
y="225.53769"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16490">Address</tspan></text>
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="167.97337"
y="416.18088"
id="text16230-0-90-6"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
x="167.97337"
y="416.18088"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16259-7-8">Lower</tspan><tspan
sodipodi:role="line"
x="167.97337"
y="436.18088"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16488">Address</tspan></text>
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="444.78488"
y="469.53656"
id="text16230-2-3-3"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan16232-0-9-8"
x="444.78488"
y="469.53656"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">Write Driver</tspan></text>
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="445.72153"
y="513.83191"
id="text16230-2-3-3-6"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan16232-0-9-8-1"
x="445.72153"
y="513.83191"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">Sense Amp</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 851.56072,95.754712 538.23024,189.2374 536.69431,213.36198 851.0315,344.17817"
id="path16542"
sodipodi:nodetypes="cccc" />
<rect
style="fill:none;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect16544"
width="333.23553"
height="248.6718"
x="850.16071"
y="96.133888" />
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="892.23199"
y="81.952698"
id="text16230-0-96"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
x="892.23199"
y="81.952698"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16259-78">6T Cell</tspan></text>
<image
y="99.161064"
x="855.36914"
id="image16602"
height="231.54362"
width="322.81879"
xlink:href="file:///Users/mrg/vlsi/proposals/nsfCRI10/figs/inkscape_pasted_image_20100722_082329.png" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 502.349,519.21644 0,45.302"
id="path15635-5" />
<text
xml:space="preserve"
style="font-size:50px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="451.86597"
y="583.0545"
id="text16230-0-90-2"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
x="451.86597"
y="583.0545"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
id="tspan16490-9">Data In/Out</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 712.75772,45.411404 0,340.520026"
id="path15823-04-8-5" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 728.85304,44.941054 0,340.520016"
id="path15823-04-0-5-5" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 309.06643,47.424828 0,340.520022"
id="path15823-04-8-5-4" />
<path
style="fill:none;stroke:#000000;stroke-width:1.94061279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 325.16175,46.954478 0,340.520012"
id="path15823-04-0-5-5-2" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

BIN
docs/figs/timing_read.pdf Normal file

Binary file not shown.

641
docs/figs/timing_read.svg Normal file
View File

@ -0,0 +1,641 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1052.3622"
height="744.09448"
id="svg3956"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="timing_read.svg">
<defs
id="defs3958">
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path4694"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.4) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;">
<path
id="path4697"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-5"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-5"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-6"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-6"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-7"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-7"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-8"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-0"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-3"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-8"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-5"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-3"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-3-5"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-8-3"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-5-2"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-3-8"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-54"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-70"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-9"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-9"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-2"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-0"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-51"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-8"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-33"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-1"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-90"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-7"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="427.64919"
inkscape:cy="216.91628"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3964"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata3961">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-308.2677)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,342.36218 0,0 0,0 100,0 10,50 100,0 10,-50 100,0 10,50 100,0 10,-50 100,0 10,50 90,0"
id="path3966"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,194.09448 150,0 10,50 110,0 10,-50 90,0 10,50 100,0 10,-50 150,0"
id="path4501"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="cccccccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,582.36218 150,0 10,50 110,0 10,-50 90,0 10,50 100,0 10,-50 150,0"
id="path4501-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<g
id="g4534">
<path
sodipodi:nodetypes="cc"
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4521"
d="m 140,354.09448 590,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4523"
d="m 130,404.09448 10,-50"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4525"
d="m 130,404.09448 -40,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<g
id="g4529"
transform="translate(-20,2.4218748e-6)">
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4497"
d="m 110,114.09448 150,0 10,50 210,0 10,-50 200,0 10,50 50,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cccccccc" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4499"
d="m 110,164.09448 150,0 10,-50 210,0 10,50 200,0 10,-50"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="ccccccc" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4527"
d="m 700,114.09448 50,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0"
d="m 305,322.36218 0,500"
id="path4566"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0"
d="m 524,323.36218 0,500"
id="path4566-2"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="372.36218"
id="text4586"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4588"
x="50"
y="372.36218">CLK</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="452.36218"
id="text4590"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4592"
x="50"
y="452.36218">ADDR</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="532.36218"
id="text4594"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4596"
x="50"
y="532.36218">CSb</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="612.36218"
id="text4598"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4600"
x="50"
y="612.36218">OEb</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="692.36218"
id="text4602"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4604"
x="50"
y="692.36218">WEb</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="852.36218"
id="text4606"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4608"
x="50"
y="852.36218">DATA OUT</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="340"
y="452.36218"
id="text4610"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4612"
x="340"
y="452.36218">A0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="560"
y="452.36218"
id="text4614"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4616"
x="560"
y="452.36218">A1</tspan></text>
<g
id="g4620"
transform="translate(-20,80.000002)">
<g
id="g4529-7"
transform="translate(0,320)">
<path
sodipodi:nodetypes="cccccccc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 110,114.09448 80,0 10,50 220,0 10,-50 210,0 10,50 100,0"
id="path4497-7"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
sodipodi:nodetypes="ccccccc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 110,164.09448 80,0 10,-50 220,0 10,50 210,0 10,-50"
id="path4499-4"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 700,114.09448 30,0"
id="path4527-5"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
</g>
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4618"
d="m 650,434.09448 100,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
</g>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="490"
y="852.36218"
id="text4652"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4654"
x="490"
y="852.36218">D0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="680"
y="852.36218"
id="text4656"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4658"
x="680"
y="852.36218">D1</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend);marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none"
d="m 250,214.09448 50,0"
id="path4682"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 250,602.36218 50,0"
id="path4682-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 310,602.36218 50,0"
id="path4682-2-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 310,522.36218 50,0"
id="path4682-2-3"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="260"
y="592.36218"
id="text5843"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5845"
x="260"
y="592.36218"
style="font-size:12px">Setup</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="320"
y="592.36218"
id="text5847"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5849"
x="320"
y="592.36218"
style="font-size:12px">Hold</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="260"
y="512.36218"
id="text5843-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5845-4"
x="260"
y="512.36218"
style="font-size:12px">Setup</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="320"
y="512.36218"
id="text5847-7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5849-7"
x="320"
y="512.36218"
style="font-size:12px">Hold</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart-2);marker-end:url(#Arrow1Mend-51)"
d="m 310,852.36218 90,0"
id="path6523"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="314"
y="844.36218"
id="text7149"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan7151"
x="314"
y="844.36218"
style="font-size:14px">Read Delay</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="260"
y="442.36218"
id="text5843-2-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5845-4-5"
x="260"
y="442.36218"
style="font-size:12px">Setup</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 250,452.36218 50,0"
id="path4682-4"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,484.09448 220,0 10,-50 100,0 10,50 100,0 10,-50 100,0 10,50 80,0"
id="path3080"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="cccccccccc" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="772.36218"
id="text3946"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3948"
x="50"
y="772.36218">SCLK</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0"
d="m 305,817.36218 0,80"
id="path3969"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0"
d="m 524,817.36218 0,80"
id="path4004"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/figs/timing_write.pdf Normal file

Binary file not shown.

853
docs/figs/timing_write.svg Normal file
View File

@ -0,0 +1,853 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1052.3622"
height="744.09448"
id="svg3956"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="timing_write.svg">
<defs
id="defs3958">
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path4694"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.4) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;">
<path
id="path4697"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-5"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-5"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-6"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-6"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-7"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-7"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-8"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-0"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-3"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-8"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-5"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-3"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-3-5"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-8-3"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-5-2"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-3-8"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-54"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-70"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-9"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-9"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-2"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-0"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-51"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-8"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-33"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-1"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-90"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-7"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-4"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-703"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-84"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-70"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-32"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-73"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-4"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-76"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart-32-6"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4694-73-8"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-4-3"
style="overflow:visible">
<path
inkscape:connector-curvature="0"
id="path4697-76-9"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="412.2745"
inkscape:cy="329.51856"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3964"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata3961">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-308.2677)">
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,342.36218 0,0 0,0 100,0 10,50 100,0 10,-50 100,0 10,50 100,0 10,-50 100,0 10,50 90,0"
id="path3966"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,194.09448 150,0 10,50 110,0 10,-50 90,0 10,50 100,0 10,-50 150,0"
id="path4501"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="cccccccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,582.36218 150,0 10,50 110,0 10,-50 90,0 10,50 100,0 10,-50 150,0"
id="path4501-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<g
id="g4534">
<path
sodipodi:nodetypes="cc"
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4521"
d="m 140,354.09448 590,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4523"
d="m 130,404.09448 10,-50"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4525"
d="m 130,404.09448 -40,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<g
id="g4529"
transform="translate(-20,2.4218748e-6)">
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4497"
d="m 110,114.09448 150,0 10,50 210,0 10,-50 200,0 10,50 50,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cccccccc" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4499"
d="m 110,164.09448 150,0 10,-50 210,0 10,50 200,0 10,-50"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="ccccccc" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4527"
d="m 700,114.09448 50,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0"
d="m 305,322.36218 0,500"
id="path4566"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3, 3;stroke-dashoffset:0"
d="m 524,323.36218 0,500"
id="path4566-2"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="372.36218"
id="text4586"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4588"
x="50"
y="372.36218">CLK</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="452.36218"
id="text4590"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4592"
x="50"
y="452.36218">ADDR</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="532.36218"
id="text4594"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4596"
x="50"
y="532.36218">CSb</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="692.36218"
id="text4598"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4600"
x="50"
y="692.36218">OEb</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="612.36218"
id="text4602"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4604"
x="50"
y="612.36218">WEb</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="852.36218"
id="text4606"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4608"
x="50"
y="852.36218">DATA IN</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="340"
y="452.36218"
id="text4610"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4612"
x="340"
y="452.36218">A0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="560"
y="452.36218"
id="text4614"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4616"
x="560"
y="452.36218">A1</tspan></text>
<g
transform="translate(-180,400)"
id="g4529-7">
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4497-7"
d="m 270,164.09448 0,0 0,0 150,0 10,-50 120,0 10,50 80,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cccccccc" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4499-4"
d="m 270,114.09448 0,0 0,0 150,0 10,50 120,0 10,-50"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="ccccccc" />
<path
transform="translate(0,308.2677)"
inkscape:connector-curvature="0"
id="path4527-5"
d="m 700,114.09448 0,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
</g>
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 470,822.36218 0,0"
id="path4618"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="293"
y="866.36218"
id="text4652"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4654"
x="293"
y="866.36218">D0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#666666;fill-opacity:1;stroke:none;font-family:Sans"
x="511"
y="853.36218"
id="text4656"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4658"
x="511"
y="853.36218"
style="fill:#000000">D1</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend);marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none"
d="m 250,214.09448 50,0"
id="path4682"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 250,602.36218 50,0"
id="path4682-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 310,602.36218 50,0"
id="path4682-2-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 310,522.36218 50,0"
id="path4682-2-3"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="260"
y="592.36218"
id="text5843"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5845"
x="260"
y="592.36218"
style="font-size:12px">Setup</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="320"
y="592.36218"
id="text5847"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5849"
x="320"
y="592.36218"
style="font-size:12px">Hold</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="260"
y="512.36218"
id="text5843-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5845-4"
x="260"
y="512.36218"
style="font-size:12px">Setup</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="320"
y="512.36218"
id="text5847-7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5849-7"
x="320"
y="512.36218"
style="font-size:12px">Hold</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="260"
y="442.36218"
id="text5843-2-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5845-4-5"
x="260"
y="442.36218"
style="font-size:12px">Setup</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 250,452.36218 50,0"
id="path4682-4"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,484.09448 220,0 10,-50 100,0 10,50 100,0 10,-50 100,0 10,50 80,0"
id="path3080"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="cccccccccc" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="50"
y="772.36218"
id="text3946"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3948"
x="50"
y="772.36218">WD_EN</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.00000002, 3.00000002;stroke-dashoffset:0"
d="m 305,817.36218 0,155"
id="path3969"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3,3;stroke-dashoffset:0"
d="m 524,817.36218 0,155"
id="path4004"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
d="m 372,815.36218 0,50"
id="path4382"
inkscape:connector-curvature="0" />
<path
style="opacity:0.31687245;color:#000000;fill:#999999;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d=""
id="path4390"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 250,842.36218 50,0"
id="path4682-2-9"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="259"
y="834.36218"
id="text5843-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5845-5"
x="259"
y="834.36218"
style="font-size:12px">Setup</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
d="m 310,842.36218 50,0"
id="path4682-2-2-0"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="322"
y="835.36218"
id="text5847-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5849-8"
x="322"
y="835.36218"
style="font-size:12px">Hold</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 470,514.09448 -90,0"
id="path3165"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 460,564.09448 10,-50 120,0 10,50 90,0 10,-50 30,0"
id="path4060"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 460,514.09448 10,50 120,0 10,-50 90,0 10,50 30,0"
id="path4062"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="ccccccc" />
<path
style="opacity:0.31687245;color:#000000;fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 380.11279,557.12592 c -3.43878,-16.01305 -3.5001,-17.72303 -1.07757,-30.05012 l 2.29927,-11.69988 38.74001,0 38.74001,0 2.2939,11.67258 2.29391,11.67258 -2.27882,11.82742 -2.27882,11.82742 -38.80223,0 -38.80223,0 -1.12743,-5.25 z"
id="path4064"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
style="opacity:0.31687245;color:#000000;fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 600.11279,557.12592 c -3.43878,-16.01305 -3.5001,-17.72303 -1.07757,-30.05012 l 2.29927,-11.69988 43.74001,0 43.74001,0 2.2939,11.67258 2.29391,11.67258 -2.27882,11.82742 -2.27882,11.82742 -43.80223,0 -43.80223,0 -1.12743,-5.25 z"
id="path4066"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,594.09448 300,0 10,50 210,0 10,-50 110,0"
id="path4068"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 90,644.09448 300,0 10,-50 210,0 10,50 110,0"
id="path4070"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)"
sodipodi:nodetypes="cccccc" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="440"
y="932.36218"
id="text4652-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4654-9"
x="440"
y="932.36218">D0</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#666666;fill-opacity:1;stroke:none;font-family:Sans"
x="660"
y="932.36218"
id="text4656-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4658-4"
x="660"
y="932.36218"
style="fill:#000000">D1</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="80"
y="922.36218"
id="text4114"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4116"
x="80"
y="922.36218"
style="text-align:center;text-anchor:middle">X</tspan><tspan
sodipodi:role="line"
x="80"
y="936.38171"
id="tspan4118"
style="font-size:10px;text-align:center;text-anchor:middle">Mem Cell</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#Arrow1Mstart-32);marker-end:url(#Arrow1Mend-4)"
d="m 310,624.09448 80,0"
id="path4120"
inkscape:connector-curvature="0"
transform="translate(0,308.2677)" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="311"
y="924.36218"
id="text4592"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4594"
x="311"
y="924.36218"
style="font-size:13px">Write Delay</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,643 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg4759"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="write_driver.svg">
<defs
id="defs4761" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="199"
inkscape:cy="520"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1855"
inkscape:window-height="1056"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid4767" />
</sodipodi:namedview>
<metadata
id="metadata4764">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g5108"
transform="translate(101,-10.999997)">
<g
transform="matrix(0,-1,1,0,-382.3481,1191.3609)"
id="g3630">
<g
id="g3035"
transform="matrix(1.25,0,0,1.25,370,363.1931)">
<path
inkscape:connector-curvature="0"
d="m 31.199,271.324 -16,0 0,-16 0,32"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3037" />
</g>
<g
id="g3039"
transform="matrix(1.25,0,0,1.25,370,363.1931)">
<path
inkscape:connector-curvature="0"
d="m 7.199,263.324 0,16"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3041" />
</g>
<g
id="g3043"
transform="matrix(1.25,0,0,1.25,370,363.1931)">
<path
inkscape:connector-curvature="0"
d="m 0.801,266.523 0,9.602"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path3045" />
</g>
</g>
<path
inkscape:connector-curvature="0"
id="path4590"
d="m 320,732.36218 0,50"
style="fill:none;stroke:#000000;stroke-width:2.23606801;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
id="g5101"
transform="translate(111,-2)">
<path
inkscape:connector-curvature="0"
id="path4584"
d="m 310,192.36218 0,-40 30,0 -60,0"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<g
transform="matrix(1.25,0,0,1,-199,-146.79282)"
id="g3319">
<path
id="path3321"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.93475199;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 409.934,339.155 c 0,1.338 -0.864,2.417 -1.934,2.417 -1.07,0 -1.934,-1.079 -1.934,-2.417 0,-1.333 0.864,-2.417 1.934,-2.417 1.07,0 1.934,1.084 1.934,2.417 z"
inkscape:connector-curvature="0" />
</g>
<text
sodipodi:linespacing="125%"
id="text4691"
y="142.36218"
x="330"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="142.36218"
x="330"
id="tspan4693"
sodipodi:role="line">VDD</tspan></text>
</g>
<g
id="g3689-3"
transform="matrix(-1,0,0,1,869.99875,-10.985927)">
<g
transform="matrix(1.25,0,0,1.25,-200,23.193113)"
id="g3223-5">
<path
id="path3225-9"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 434.398,221.727 c 0,2.207 -1.789,4 -4,4 -2.207,0 -4,-1.793 -4,-4 0,-2.211 1.793,-4 4,-4 2.211,0 4,1.789 4,4 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3227-9">
<path
id="path3229-3"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 175.324,-407.199 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3231-4">
<path
id="path3233-7"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 205.215,-425.902 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3235-2">
<path
id="path3237-1"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 202.648,-421.859 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3689-33"
transform="matrix(-1,0,0,1,869.99875,109.01407)">
<g
transform="matrix(1.25,0,0,1.25,-200,23.193113)"
id="g3223-69">
<path
id="path3225-1"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 434.398,221.727 c 0,2.207 -1.789,4 -4,4 -2.207,0 -4,-1.793 -4,-4 0,-2.211 1.793,-4 4,-4 2.211,0 4,1.789 4,4 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3227-5">
<path
id="path3229-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 175.324,-407.199 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3231-7">
<path
id="path3233-0"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 205.215,-425.902 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3235-0">
<path
id="path3237-6"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 202.648,-421.859 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4931-2"
transform="matrix(0,-1,1,0,38.65189,750.36093)">
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3011-3">
<path
id="path3013-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3015-4">
<path
id="path3017-3"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3019-3">
<path
id="path3021-4"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4931-1-5"
transform="matrix(0,-1,1,0,38.65189,870.36093)">
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3011-8-7">
<path
id="path3013-2-7"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3015-6-5">
<path
id="path3017-4-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3019-5-4">
<path
id="path3021-8-3"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 461,361.36218 0,290 80,0"
id="path5722"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 461,361.36218 0,-40"
id="path5728"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 527,289.36218 -66,0 0,35"
id="path5757"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 528,408.36218 -26,0 0,0"
id="path5769"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<g
id="g3689-3-7"
transform="matrix(-1,0,0,1,589.99875,-10.985926)">
<g
transform="matrix(1.25,0,0,1.25,-200,23.193113)"
id="g3223-5-6">
<path
id="path3225-9-2"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 434.398,221.727 c 0,2.207 -1.789,4 -4,4 -2.207,0 -4,-1.793 -4,-4 0,-2.211 1.793,-4 4,-4 2.211,0 4,1.789 4,4 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3227-9-5">
<path
id="path3229-3-7"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 175.324,-407.199 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3231-4-4">
<path
id="path3233-7-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 205.215,-425.902 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3235-2-3">
<path
id="path3237-1-7"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 202.648,-421.859 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g3689-33-0"
transform="matrix(-1,0,0,1,589.99875,109.01407)">
<g
transform="matrix(1.25,0,0,1.25,-200,23.193113)"
id="g3223-69-9">
<path
id="path3225-1-1"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 434.398,221.727 c 0,2.207 -1.789,4 -4,4 -2.207,0 -4,-1.793 -4,-4 0,-2.211 1.793,-4 4,-4 2.211,0 4,1.789 4,4 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3227-5-6">
<path
id="path3229-9-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 175.324,-407.199 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3231-7-4">
<path
id="path3233-0-6"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 205.215,-425.902 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0,1.25,-1.25,0,-200,23.193113)"
id="g3235-0-4">
<path
id="path3237-6-9"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 202.648,-421.859 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4931-2-2"
transform="matrix(0,-1,1,0,-241.34811,750.36093)">
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3011-3-5">
<path
id="path3013-9-3"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3015-4-8">
<path
id="path3017-3-1"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3019-3-1">
<path
id="path3021-4-1"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g4931-1-5-9"
transform="matrix(0,-1,1,0,-241.34811,870.36093)">
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3011-8-7-3">
<path
id="path3013-2-7-3"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 31.199,119.324 29.539,0 0,-14.66 36.922,0 0,14.66 29.539,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3015-6-5-0">
<path
id="path3017-4-9-3"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 61.09,100.621 36.57,0"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,120,373.19311)"
id="g3019-5-4-0">
<path
id="path3021-8-3-8"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 58.523,104.664 40.614,0"
inkscape:connector-curvature="0" />
</g>
</g>
<g
id="g5665-2"
transform="matrix(0,-1,1,0,-131.34811,590.36093)">
<g
transform="matrix(1.25,0,0,1.25,-490,-176.80689)"
id="g3411-4">
<path
id="path3413-5"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 495.199,407.324 0,32 24,-16 -24,-16 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,-490,-176.80689)"
id="g3415-1">
<path
id="path3417-8"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 527.199,423.324 c 0,2.211 -1.789,4 -4,4 -2.207,0 -4,-1.789 -4,-4 0,-2.207 1.793,-4 4,-4 2.211,0 4,1.793 4,4 z"
inkscape:connector-curvature="0" />
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 181,361.36218 0,290 80,0"
id="path5722-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 181,361.36218 0,-40"
id="path5728-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 247,289.36218 -66,0 0,35"
id="path5757-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 261,531.36218 -40,0 0,-70"
id="path5767-7"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 248,408.36218 -26,0 0,14"
id="path5769-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#000000;stroke-width:2.23387456;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 221,531.36218 -124.754902,0"
id="path6000"
inkscape:connector-curvature="0" />
<path
id="path3321-6"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.1631186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 223.4175,531.36218 c 0,1.338 -1.08,2.417 -2.4175,2.417 -1.3375,0 -2.4175,-1.079 -2.4175,-2.417 0,-1.333 1.08,-2.417 2.4175,-2.417 1.3375,0 2.4175,1.084 2.4175,2.417 z"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 261,531.36218 280,0"
id="path6065"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 502,408.36218 -259,0"
id="path6067"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="71"
y="536.36218"
id="text6069"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6071"
x="71"
y="536.36218">EN</tspan></text>
<g
id="g5665-2-0"
transform="matrix(0,1,-1,0,493.34811,272.36343)">
<g
transform="matrix(1.25,0,0,1.25,-490,-176.80689)"
id="g3411-4-5">
<path
id="path3413-5-6"
style="fill:none;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 495.199,407.324 0,32 24,-16 -24,-16 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(1.25,0,0,1.25,-490,-176.80689)"
id="g3415-1-6">
<path
id="path3417-8-9"
style="fill:none;stroke:#000000;stroke-width:1.30079997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 527.199,423.324 c 0,2.211 -1.789,4 -4,4 -2.207,0 -4,-1.789 -4,-4 0,-2.207 1.793,-4 4,-4 2.211,0 4,1.793 4,4 z"
inkscape:connector-curvature="0" />
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 141,441.36218 0,50 40,0"
id="path6146"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 141,401.36218 0,-50 320,0"
id="path6148"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 141,351.36218 -50,0"
id="path6150"
inkscape:connector-curvature="0" />
<path
id="path3321-6-8"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.1631186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 143.4175,351.36218 c 0,1.338 -1.08,2.417 -2.4175,2.417 -1.3375,0 -2.4175,-1.079 -2.4175,-2.417 0,-1.333 1.08,-2.417 2.4175,-2.417 1.3375,0 2.4175,1.084 2.4175,2.417 z"
inkscape:connector-curvature="0" />
<path
id="path3321-6-7"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.1631186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 183.4175,491.36218 c 0,1.338 -1.08,2.417 -2.4175,2.417 -1.3375,0 -2.4175,-1.079 -2.4175,-2.417 0,-1.333 1.08,-2.417 2.4175,-2.417 1.3375,0 2.4175,1.084 2.4175,2.417 z"
inkscape:connector-curvature="0" />
<path
id="path3321-6-0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.1631186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 463.4175,351.36218 c 0,1.338 -1.08,2.417 -2.4175,2.417 -1.3375,0 -2.4175,-1.079 -2.4175,-2.417 0,-1.333 1.08,-2.417 2.4175,-2.417 1.3375,0 2.4175,1.084 2.4175,2.417 z"
inkscape:connector-curvature="0" />
<path
id="path3321-6-88"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.1631186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 283.4175,471.36218 c 0,1.338 -1.08,2.417 -2.4175,2.417 -1.3375,0 -2.4175,-1.079 -2.4175,-2.417 0,-1.333 1.08,-2.417 2.4175,-2.417 1.3375,0 2.4175,1.084 2.4175,2.417 z"
inkscape:connector-curvature="0" />
<path
id="path3321-6-86"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.1631186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 563.4175,471.36218 c 0,1.338 -1.08,2.417 -2.4175,2.417 -1.3375,0 -2.4175,-1.079 -2.4175,-2.417 0,-1.333 1.08,-2.417 2.4175,-2.417 1.3375,0 2.4175,1.084 2.4175,2.417 z"
inkscape:connector-curvature="0" />
<path
id="path3321-6-3"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.1631186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 423.4175,721.36218 c 0,1.338 -1.08,2.417 -2.4175,2.417 -1.3375,0 -2.4175,-1.079 -2.4175,-2.417 0,-1.333 1.08,-2.417 2.4175,-2.417 1.3375,0 2.4175,1.084 2.4175,2.417 z"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="47"
y="356.36218"
id="text6205"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6207"
x="47"
y="356.36218">DATA</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 561,471.36218 80,0 -10,-10 10,10 -10,10"
id="path6209"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 281,471.36218 80,0 -10,-10 10,10 -10,10"
id="path6211"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 281,231.36218 0,-40 280,0 0,40"
id="path6213"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 381,721.36218 180,0 0,-10"
id="path6215"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 281,711.36218 0,10 100,0"
id="path6217"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="365"
y="476.36218"
id="text6219"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6221"
x="365"
y="476.36218">BL</tspan></text>
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="645"
y="477.36218"
id="text6223"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6225"
x="645"
y="477.36218">BL_bar</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

199
docs/figs/xsram_block.svg Normal file
View File

@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="765"
height="990"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="xsram_block.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.6010101"
inkscape:cx="506.22072"
inkscape:cy="495"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1440"
inkscape:window-height="813"
inkscape:window-x="4"
inkscape:window-y="22"
inkscape:window-maximized="0"
inkscape:snap-global="true"
inkscape:snap-grids="false"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2999"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-62.362183)">
<rect
style="fill:#cccccc;fill-rule:evenodd;stroke:#cccccc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3001"
width="284.521"
height="51.57983"
x="99.831932"
y="213.77394" />
<rect
style="fill:#cccccc;fill-rule:evenodd;stroke:#000000;stroke-width:0.87821972px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3003"
width="277.86554"
height="273.34061"
x="101.4958"
y="275.33698" />
<rect
style="fill:#b3b3b3;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:0.91462636px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3005"
width="261.50534"
height="58.716049"
x="107.27876"
y="875.5116" />
<rect
style="fill:#b3b3b3;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:0.91708475px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3005-6"
width="270.49432"
height="57.070377"
x="399.90186"
y="874.6615" />
<text
xml:space="preserve"
style="font-size:36.76748657px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
x="342.79984"
y="121.62278"
id="text3036"
sodipodi:linespacing="125%"
transform="scale(1.0581087,0.94508251)"><tspan
sodipodi:role="line"
x="347.39578"
y="121.62278"
id="tspan3040">Block Diagram of XSRAM </tspan><tspan
sodipodi:role="line"
x="342.79984"
y="167.58214"
id="tspan3044">Topmost Instance Datapath</tspan></text>
<rect
style="fill:#b3b3b3;fill-rule:evenodd;stroke:#000000;stroke-width:0.90747511px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3046"
width="276.20169"
height="57.548901"
x="106.48739"
y="694.13104" />
<text
xml:space="preserve"
style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="123.12605"
y="191.34454"
id="text3054"
sodipodi:linespacing="125%"
transform="translate(0,62.362183)"><tspan
sodipodi:role="line"
id="tspan3056"
x="123.12605"
y="191.34454" /></text>
<text
xml:space="preserve"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="129.78151"
y="245.38739"
id="text3058"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3060"
x="129.78151"
y="245.38739">XSRAM.XPRECHARGE</tspan></text>
<text
xml:space="preserve"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="158.06723"
y="342.75629"
id="text3064"
sodipodi:linespacing="125%"
transform="translate(0,62.362183)"><tspan
sodipodi:role="line"
id="tspan3066"
x="158.06723"
y="342.75629">XSRAM.XARRAY</tspan></text>
<text
xml:space="preserve"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="144.7563"
y="731.23608"
id="text3068"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3070"
x="144.7563"
y="731.23608">XSRAM.XCOLMUX</tspan></text>
<text
xml:space="preserve"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="129.78151"
y="910.93353"
id="text3072"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3074"
x="129.78151"
y="910.93353">XSRAM.XSENSE_AMP</tspan></text>
<text
xml:space="preserve"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="397.66388"
y="853.56305"
id="text3076"
sodipodi:linespacing="125%"
transform="translate(0,62.362183)"><tspan
sodipodi:role="line"
id="tspan3078"
x="397.66388"
y="853.56305" /></text>
<text
xml:space="preserve"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="412.63867"
y="910.93353"
id="text3080"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3082"
x="412.63867"
y="910.93353">XSRAM.XWRITE_DRIVER</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.0 KiB

33
docs/gdsmill.tex Normal file
View File

@ -0,0 +1,33 @@
\section*{GDSMill}
\label{sec:gdsMill_permission}
OpenRAM uses gdsMill, a GDS library written by Michael Wieckowski at
the University of Michigan. Michael gave us complete permission to use
the code. Since then, we have made several bug and performance
enhancements to gdsMill. In addition, gdsMill is no longer available
on the web, so we distribute it along with OpenRAM.
\begin{verbatim}
From: Michael Wieckowski <wieckows@umich.edu>
Date: Thu, Oct 14, 2010 at 12:49 PM
Subject: Re: GDS Mill
To: Matthew Guthaus <mrg@soe.ucsc.edu>
Hi Matt,
Feel free to use / modify / distribute the code as you like.
-Mike
On Oct 14, 2010, at 3:07 PM, Matthew Guthaus wrote:
> Hi Michael (& Dennis),
>
> A student and I were looking at your GDS tools, but
> we noticed that there is no license. What is the license?
>
> Thanks,
>
> Matt
\end{verbatim}

373
docs/implementation.tex Normal file
View File

@ -0,0 +1,373 @@
\section{Software Implementation}
\label{sec:implementation}
OpenRAM is implemented using object-oriented data structures in the
Python programming language. The top-level executable is
\verb|openram.py| which parses input arguments, creates the memory and
saves the output.
\subsection{Design Hierarchy}
\label{sec:design}
All modules in OpenRAM are derived from the \verb|design| class in
\verb|design.py|. The design class is a data structure that consists
of a spice netlist, a layout, and a name. The spice netlist
capabilities are inherited from the \verb|hierarchy_spice| class while
the layout capabilities are inherited from the \verb|hierarchy_layout|
class. The only additional function in design.py is \verb|DRC_LVS()|,
which performs a DRC/LVS check on the module.
\begin{figure}[htb]
\centering
\includegraphics[width=10cm]{./figs/class_hierarchy.pdf}
\caption{Class hierarchy}
\label{fig:class_hierarchy}
\end{figure}
\subsubsection{Spice Hierarchy}
The spice hierarchy is stored in the \verb|spice| class in
\verb|hierarchy_spice.py|. When the design class is initialized for a
module, a data structure for the spice hierarchy is created. The
spice data stucture name becomes the name of the top-level subcircuit
definition for the module. The list of pins for the module are added
to the subcircuit definition by using the \verb|add_pin()| function.
The \verb|add_mod()| function adds an instance of a
module/library\_cell/parameterized\_cell as a subcircuit to the
top-level structure. Each time a sub-module has been added to the
hierarchy, the pins of the sub-module must be connected using the
\verb|connect_pins()| function. It is important to note that the pins
must be listed in the same order as they were added to the submodule.
Also, an assertion error will occur if there is a mismatch in the
number of net connections. The \verb|spice| class also contains
functions for reading or writing spice files:
\begin{itemize}
\item \verb|sp_read():| this function is used to read in spice
netlists and parse the inputs defined by the ``subckt'' definition.
\item \verb|sp_write():| this function creates an empty spice file in
write mode and calls \verb|sp_write_file()|.
\item \verb|sp_write_file():| this function recursively writes the
modules and sub-modules from the data structure into the spice file
created by \verb|sp_write()|.
\end{itemize}
\subsubsection{Layout Hierarchy}
The layout hierarchy is stroed in the \verb|layout| class in
\verb|hierarchy_layout.py|. When the design class is initialized for
a module, a data structure for the layout hierarchy is created. The
layout data structure has two main components: a structure for the
instances of sub-modules contained in the layout, and a structure for
the objects (such as shapes, labels, etc...) contained in the layout.
The functions included in the \verb|layout| class are:
\begin{itemize}
\item \verb|def add_inst(self,name,mod,offset,mirror):| adds an
instance of a physical layout (library cell, module, or
parameterized cell) to the module. The input parameters are :
\begin{description}
\item[name] - name for the instance.
\item[mod] - the associated spice module.
\item[offset] - the x-y coordinates, in microns, where the instance
should be placed in the layout.
\item[mirror] - mirror or rotate the instance before it is added to
the layout. Accepted values for mirror are:
\verb|"R0", "R90", "R180", "R270"| $^\ast$Currently, only ``R0'' works.\\
\verb|"MX" or "x", "MY" or "y", "XY" or "xy"| (``xy'' is
equivalent to ``R180'')
\end{description}
\item \verb|add_rect(self,layerNumber,offset,width,height):| adds a
rectangle to the module's layout. The inputs are:
\begin{description}
\item[layernumber] - the layer that the rectangle is to be drawn in.
\item[offset] - the x-y coordinates, in microns, where the
rectangle's origin will be placed in the layout.
\item[width] - the width of the rectangle, can be positive or
negative value.
\item[height] - the height of the rectangle, can be positive or
negative value.
\end{description}
\item \verb|add_label(self,text,layerNumber,offset,zoom):| adds a
label to the layout. The inputs are:
\begin{description}
\item[text] - the text for the label
\item[layernumber] - the layer that the label is to be drawn in .
\item[offset] - the x-y coordinates, in microns, where the label
will be placed in the layout.
\item[zoom] - magnification of the label (ex: ``1e9'').
\end{description}
\item \verb|add_path(self,layerNumber,coordinates,width):| this
function is under construction...
\item \verb|gds_read():| reads in a GDSII file and creates a
\verb|VlsiLayout()| class for it.
\item \verb|gds_write():| writes the entire GDS of the object to a
file by gdsMill \verb|vlsiLayout()| class and calling the
\verb|gds2writer()| (see Sections~\ref{sec:vlsilayout}
and~\ref{sec:gdsmill}.
\item \verb|gds_write_file():| recursively the instances and objects
in layout data structure to the gds file.
\item \verb|pdf_write():| this function is under construction...
\end{itemize}
\subsection{Creating a New Design Module}
\label{sec:new_design}
Each module in the SRAM is its own Python class, which contains a
design class, or data structure, for the layout and spice. The
\verb|design| class (\verb|design.py|) is initialized within the
module class, subsequently creating separate data structurse to hold
the layout (\verb|hierarchy_layout|) and spice
(\verb|hierarchy_spice|) information. By having a class for each
module, it is very easy to instatiate instances of the modules in any
level of the hierarchy. Follow these guidelines when creating a new
module:
\begin{itemize}
\item Derive your class from the design module:
\begin{verbatim}
class bitcell_array(design.design):
\end{verbatim}
\item Always use the python constructor \verb|__init__| method so that
your class is initialized when an object of the module is
instatiated. The module parameters should also be declared:
\begin{verbatim}
def __init__(self, cols, rows):
\end{verbatim}
\item In the constructor, call the base class constructor with the
name such as:
\begin{verbatim}
design.design.__init__(self,"bitcell_array")
\end{verbatim}
\item Add the pins that will be used in the spice netlist for your
module using the \verb|add_pin()| function from the
\verb|hierarchy_spice| class.
\begin{verbatim}
self.add_pin("vdd")
\end{verbatim}
\item Create an instance of the module/library\_cell/parameterized
cell that you want to add to your module:
\begin{verbatim}
cell=bitcell.bitcell(cell_6t)
\end{verbatim}
\item Add the subckt/submodule instance to the spice hierarchy using
the \verb|add_mod()| function from the \verb|hierarchy_spice| class:
\begin{verbatim}
self.add_mod(cell)
\end{verbatim}
\item Add layout instance into your module's layout hierarchy using
the \verb|add_instance|() function, which takes a name, mod, offset,
and mirror as inputs:
\begin{verbatim}
self.add_inst(name=name,mod=cell,offset=[x_off,y_off],mirror=x)
\end{verbatim}
\item Connect the pins of the instance that was just added by using
the \verb|connect_pins| function from the \verb|hierarchy_spice|
class:
\begin{verbatim}
self.connect_inst([BL[%d]%col, BR[%d]%col, WL[%d]%row, gnd, vdd]).
\end{verbatim}
The pins must be listed in the same order as they were added to the
submodule. Also, an assertion error will occur if there is a
mismatch in the number of net connections.
\item Do whatever else needs to be done. Add rectangles for
power/ground rails or routing, add labels, etc...
\item Every module needs to have ``self'' height and width variable
that can be accessed from outside of the module class. These
paramaters are commonly used for placing instances modules in a
layout. For library cells, the \verb|self.width| and
\verb|self.height| variables are automatically parsed from the GDSII
layout using the \verb|cell_size()| function in \verb|vlsi_layout|.
Users must define the width and height of dynamically generated
designs.
\item Add a call to the \verb|DRC_LVS()| function.
\end{itemize}
\subsection{GDSII Files and GdsMill)}
\label{sec:gds}
GDSII is the standard file used in indusrty to store the layout
information of an integrated circuit. The GDSII file is a stream file
that consists of records and data types that hold the data for the
various instances, shapes, labels, etc.. in the layout. In OpenRAM, we
utlize a nifty tool, called gdsMill, to read, write, and manipulate
GDSII files. GdsMill was developed by Michael Wieckowski at the
University of Michigan.
\subsubsection{GDSII File Format}
\label{sec:format}
The format of gds file contains several parts, as it could be shown in
Figure~\ref{fig:gds_file}.
\begin{figure}[htb]
\centering
\includegraphics[width=10cm]{./figs/gds_file}
\caption{example of a GDSII file}
\label{fig:gds_file}
\end{figure}
The first part is the gds file header, which the contains GDSII
version number, date modified, date last accessed, library, user
units, and database units.
The second part is the list of structures. These structures contain
geometries or references to other structures of the layout in
heirarchical form. Within a structure there are several kinds of
records:
\begin{itemize}
\item Rectangle - basic geometry unit in a design, represent one layer
of material in a circuit(i.e. a metal pin). Five coordinates and
layer number are stored in rectangle record.
\item Structure Reference - a structure that is used in this
structure. The information about this reference will be used store
as a structure in the same gds file.
\item Text - a text record used for labels.
\item Path - used to represent a wire.
\item Boundary - defines a filled polygon.
\item Array Reference - specifies an array of structure instances
\item Node - Electrical nets may be specified with the NODE record
\end{itemize}
The last part is the tail of the GDSII file which ends the GDS
Library.
\fixme{Provide a link to the complete GDSII specification.}
\subsubsection{GdsMill}
\label{sec:gdsmill}
As previously stated, GdsMill is a set of scripts that can be used to read, write, and manipulate GDSII files.
\paragraph{The gds2\_reader and gds2\_writer:}
In GdsMill, the \verb|gds2_reader| and \verb|gds2_writer| classes contain the various functions used to convert data between GDSII files and the \verb|vlsilayout| class. These classes process the data by iterating through every record in the GDS structures and check or write every data record. The record type (see Section~\ref{sec:format}),is tracked and identified using flags.
\fixme{Do we need more information of these classes, or should we just point to the GdsMill documentation?}
\paragraph{The VlsiLayout Class:}
\label{sec:vlsilayout}
After the \verb|gds2_reader| class reads in the records, the data has to be stored in a
way that can be easily used by our code. Thus, the
\verb|VlsiLayout| class is made to represent the layout.
\verb|VlsiLayout| contains the same information as GDSII file but in a
different way. \verb|VlsiLayout| stores records in data structures, which
are defined in \verb|gdsPrimitives.py|. Each record type has a corresponding class defined in \verb|gdsPrimitives|. Thus, a vlsilayout should at least
contains following member data:
\begin{itemize}
\item \verb|self.rootStructureName| - name of the top design.
\item \verb|self.structures| -list of structure that are used in the class.
\item \verb|self.xyTree| - contains a list of all structure names that appeared in the design.
\end{itemize}
The \verb|VlsiLayout| class also contains many functions for adding
structures and records to a layout class, but the important and most
useful functions have been aggregated into a wrapper file. This
wrapper is called \verb|geometry.py| and is located in the
\verb|compiler| directory.
\subsubsection{OpenRAM-GdsMill Interface}
\label{sec:wrapper}
Dynamically generated cells and arrays each need to build a
\verb|VlsiLayout| data structure to represent the hierarchical layout.
This is performed using various functions from the \verb|VlsiLayout|
class in GdsMill, but the GdsMill file is very large and can be
difficult to understand. To make things easier, OpenRAM has its own
wrapper class called \verb|geometry| in \verb|geometry.py|. This
wrapper class initializes data structures for the
instances and objects that will be added to the \verb|VlsiLayout|
class. The functions \verb|add_inst()|, \verb|add_rect()|,
\verb|add_label()| in \verb|hierarchy_layout|, add the structures to
the \verb|geometry| class, which is then written out to a GDSII file
using \verb|VlsiLayout| and the \verb|gds2_writer|.
User included library cells, which should be in gds files, can be used
as dynamically generated cells by using GDSMill.
Cell information such as cell size and pin location can be obtained by using
built in functions in the \verb|VlsiLayout| class.
Cell size can be finded by using the \verb|readLayoutBorder| function of the \verb|VlsiLayout| class.
A boundary layer should be drawn in each library cell to indicate the cell area.
The \verb|readLayoutBorder| function will return the width and height of the boundary.
If a boundary layer do not exist in the layout, then \verb|measureSize| can find the physical
size cell.
The first method is used as primary method in \verb|auto_Measure_libcell| the lib\_utility.py,
while the second method is used as a back up one.
Each technolgy setup will import this utility function and read the library cell.
Pin location can be find by using the \verb|readPin| function of the \verb|VlsiLayout| class.
The \verb|readPin| function will return the biggest boundary which covers the label and
is at the same layer as the label is.
\subsection{Technology Directory}
\label{sec:techdir}
The aim of creating technology directory is to make OpenRAM portable
to different technologies. This directory contains all the information
related to the specific process/technology that is being used. In
OpenRAM, the default technology is FreePDK45, which has it own
technolony directory in the trunk. The technology-specific directory
should consist of the following:
\begin{itemize}
\item Technology-Specific Parameters - These parameters should include
layer numbers and any design rules that may be needed for generating
dynamic designs (DRC rules). The parameters should be added in
\verb|/techdir/tech/tech.py| and layer map in the \verb|/techdir|.
\item Library Cells - The library cells and corresponding spice
netlists should be added to the \verb|/gds_lib| and \verb|/sp_lib|
directories.
\item Portation Functions - Some of the dynamically generated cells
may need helper functions to deal with technology-specific
requirements. Additional, tech-specific, functions should be added
to the \verb|/techdir|.
\end{itemize}
For more information regarding the technology directory and how to set
one up for a new technology, refer to Section~\ref{sec:porting}
\subsection{DRC/LVS Interface}
\label{sec:drclvs}
Each design class contains a function \verb|DRC_LVS()| that performs both
DRC and LVS on the current design module. This enables bottom-up
correct-by-construction design and easy identification of where errors
occur. It does incur some run-time overhead and can be disabled on
the command line. The \verb|DRC_LVS()| function saves a GDSII file and a Spice
file into a temporary directory and then calls two functions to
perform DRC and LVS that are tool-dependent.
A reference implementation for the DRC and LVS functions are provided
for Cadence Calibre since this is the most common DRC/LVS tool. Each
of these functions generates a batch-mode ``runset'' file which
contains the options to correctly run DRC and LVS. The functions then
parse the batch mode output for any potential errors and returns the
number of errors encountered.
The function \verb|run_drc()| requires a cell name and a GDSII
file. The cell name corresponds to the top level cell in the GDSII
file. It also uses the layer map file for the technology to correctly
import the GDSII file into the Cadence database to perform DRC. The
function returns the number of DRC violations.
The function \verb|run_lvs()| requires a cell name, a GDSII file, and
a Spice file. Calibre will extract an extracted Spice netlist from the
GDSII file and will then compare this netlist with the OpenRAM Spice
netlist. The function returns the number of uncompared and unmatched
devices/nets in the design.
For both DRC and LVS, the summary file and other report files are left
in the OpenRAM temporary directory after DRC/LVS is run. These report
files can be examined to further understand why errors were
encountered. In addition, by increasing the debug level, the command
line to re-create the DRC/LVS check can be obtained and run manually.

263
docs/intro.tex Normal file
View File

@ -0,0 +1,263 @@
\section{Introduction}
\label{sec:intro}
The OpenRAM project aims to provide a free, open-source memory
compiler development framework for Random-Access Memories (RAMs).
Most academic Integrated Circuit (IC) design methodologies are
inhibited by the availability of memories. Many standard-cell process
design kits (PDKs) are available from foundries and vendors, but these
PDKs do not come with memory arrays or compilers. Some PDKs have
options to request ``black box'' memory models, but these are not
modifiable, have limited available configurations, and do not have
full details available to academics. These restrictions make
comparison and experimentation with real memory systems impossible.
OpenRAM, however, is user-modifiable and portable through
technology libraries to enable experimentation with real-world
memories at a variety of performance points and costs.
The specific features of OpenRAM are:
\begin{itemize}
\item \textbf{Memory Array Generation}
Currently, OpenRAM supports simple 1 read/write port synchronous
memories, but it will be extended to multi-port memories, register
files, and asynchronous memories in the future. The generation
includes features such as automatic word-line driver sizing,
efficient decoder sizing, multiple-word column support, and
self-timing with replica bitlines.
\item \textbf{Portability and Extensibility}
OpenRAM is a Python program. Python enables portability to numerous
platforms and enables the program to be extended by anyone. In
general, it works on Linux, MacOS, and Windows platforms.
User-readable technology files enable migration to a variety of
process technologies. Currently, an implementation in a
non-fabricale 45nm technology (FreePDK45) is provided and the MOSIS
Scalable CMOS (SCN3ME\_SUBM.30) is provided. The compiler has also
been extended to several technologies. We hope to work with vendors
to distribute the technology information of others commercial
technologies soon.
OpenRAM makes calls to commercial circuit simulators and DRC/LVS
tools in an abstracted way for circuit simulation and
verification. This enables adaptation to other design
methodologies. However, it also supports a completely open-source
platform for older technologies.
\item \textbf{Timing and Power Characterization}
OpenRAM provides a basic framework for analysis of timing and power.
This includes both analytical estimates, un-annotated spice
simulations, or back-annotated simulations. The timing and power
views are provided in the Liberty open format for use with the most
common logic synthesis and timing analysis tools.
\item \textbf{Commercial Tool Independence and Interoperability}
To keep OpenRAM portable and maximize its usefulness, it it
independent from any specific commercial tool suite or
language. OpenRAM interfaces to both open-source (e.g., NGSpice) and
commercial circuit simulators through the standard Spice3 circuit
format. The physical layout is directly generated in the GDSII
layout stream format which can be imported into any academic or
commercial layout tools. We provide a Library Exchange Format (LEF)
file for interfacing with commercial Placement and Routing tools.
We provide a Verilog behavioral model for simulation.
\item \textbf{Silicon Verification}
TBD
\end{itemize}
\subsection{Requirements}
Development is done on Ubuntu or MacOS systems with Python 2.7.
\subsubsection{Timing Verification Tools}
For peformance reasons, OpenRAM uses analytical delay models by
default. If you wish to enable simulation-based timing
characterization, you must enable this on the command line with the
``-c'' command line argument.
% Not complete yet
%If you wish to perform back-annotated characterization, you must
%further enable this with the ``-b'' command line argument.
OpenRAM can use the following circuit simulators and possibly others
if they support the Spice3 file format:
\begin{itemize}
\item HSpice I-2013.12-1 or later
\item ngSpice 26 \url{http://ngspice.sourceforge.net/}
\item CustomSim (xa) M-2017.03-SP5 or later
\end{itemize}
\subsubsection{Physical Verification Tools}
By default, OpenRAM will perform DRC and LVS on each level of
hierarchy. To do this, you must have a valid DRC and LVS tool and the
corresponding rule files for the technology. OpenRAM can, however,
run without DRC and LVS verification using the ``-n'' command line
argument. It is not recommended to use this if you make any changes,
however.
DRC can be done with:
\begin{itemize}
\item Calibre 2012.3\_15.13 or later (SCMOS or FreePDK45)
\item Magic \url{http://opencircuitdesign.com/magic/} (SCMOS only)
\end{itemize}
LVS can be done with:
\begin{itemize}
\item Calibre 2012.3\_15.13 or later (SCMOS or FreePDK45)
\item Netgen \url{http://opencircuitdesign.com/netgen/} (SCMOS only)
\end{itemize}
\subsubsection{Technology Files}
To work with FreePDK45, you must install the FreePDK baseline kit from:
\url{https://www.eda.ncsu.edu/wiki/FreePDK45:Contents}
We have included an example Calibre DRC deck for MOSIS SCMOS design
rules, but DRC with Magic relies on its own design rules:
\url{https://www.mosis.com/files/scmos/scmos.pdf} We require the
format 32 or later to enable stacked vias which is included with
Qflow:
\begin{verbatim}
git clone http://opencircuitdesign.com/qflow
cp tech/osu050/SCN3ME_SUBM.30.tech <your magic tech lib>
\end{verbatim}
You can over-ride the location of the DRC and LVS rules with the
DRCLVS\_HOME environment variable.
\subsubsection{Spice Models}
FreePDK45 comes with a spice device model. Once this is installed, it
is used.
SCMOS, however, does not come with a device spice model. This must be
obtained from MOSIS or another vendor. We use the ON Semiconductor
0.5um device models.
You can over-ride the location of the spice models with the
SPICE\_MODEL\_DIR environment variable.
\subsection{Environment Variables}
In order to make OpenRAM flexible, it uses two environment variables
to make it relocatable in a variety of user scenarios. Specifically,
the user may want technology directories that are separate from
OpenRAM. Or, the user may want to have several versions of
OpenRAM. This is done with the folowing required environment
variables: specifically:
\begin{itemize}
\item OPENRAM\_HOME defines the location of the compiler source directory.
\item OPENRAM\_TECH defines the location of the OpenRAM technology
files. This is discussed later in Section~\ref{sec:tech}.
\end{itemize}
Other environmental variables and additional required paths for
specific technologies are dynamically added during runtime by sourcing
a technology setup script. These are located in the
"\$OPENRAM\_TECH/setup\_scripts" directory. Example scripts for SCMOS and
FreePDK45 are included with the distribution. These setup any things
needed by the PDK.
\subsection{Design Flow}
%% % high-level org
%% The memory compiler framework is divided into several modules: the
%% compiler, the router, the characterizer, verify, and gdsMill.
%% Figure~\ref{fig:methodology} shows an overview of the methodology. The
%% compiler input is the memory organization with which it generates the
%% logical and layout views. The compiler then uses these views while
%% calling the characterization tool to ensure functionality and measure
%% timing/power. The characterization tool indirectly calls a spice
%% simulator for timing/power analysis.
%% % front-end
%% The ``front-end'' methodology can be run with no verification tools (spice, DRC, or LVS).
%% only a spice simulator
%% and will produce Spice models (eventually Verilog), layout/GDSII
%% (eventually LEF), and a timing/power model based on estimated
%% parasitics. It is intended that this mode be easily run on any
%% platform so that designers and architects can get timing, power and
%% area estimates quickly.
%% % back-end
%% The ``back-end'' methodology uses the spice netlist and detailed layout
%% generated by the front-end to perform back-annotated characterization
%% and generate annotated timing and power models. The back-end uses
%% layout directly in the GDSII stream format which is supported in both
%% commercial and academic back-end flows. The back-end mode is to be used
%% prior to fabrication and by designers who want detailed timing/power
%% values.
%% In both the front-end and back-end flows, the designs are Design Rule
%% Checked (DRC) and Layout Verses Schematic (LVS) checked at each level
%% of design hierarchy.
\subsection{Usage}
The OpenRAM compiler rquires a single argument of a configuration
file. The configuration file specifies, at a minimum, the memory size
parameters in terms of the number of words, word size (in bits), and
number of banks. By default, OpenRAM will chose the number of columns
to make the memory reasonably square. Commonly, the configuration file
also includes parameters for the output path, base output file name,
and technology of an SRAM.
The configuration file can be used to over-ride any option in the
options.py file. Many of these are controlled by the command-line,
but the configuration file takes priority and allows repeatable
generation of memories.
Lastly, the configuration file can over-ride any
of the different circuit implementations for each module. For example, you
can replace the default address decoder or bitcell with a new one by
specifying a new python module that implements a new one.
An entire example configuration file looks like:
\begin{verbatim}
word_size = 16
num_words = 32
num_banks = 1
tech_name = "freepdk45"
output_path = "/tmp/outputdir"
output_name = "mysram"
bitcell = "custom_bitcell"
\end{verbatim}
In this example, the user has specified a custom bitcell that will be
used when creating the bitcell\_array and other modules.
OpenRAM has many command line arguments. Other useful command line arguments are:
\begin{itemize}
\item -h : To get help for the command-line options
\item -v : To increase the verbosity (may be used multiple times)
\end{itemize}
\begin{figure}[tb]
\centering
\includegraphics[width=14cm]{./figs/methodology.pdf}
\caption{Overall Compilation and Characterization Methodology
\label{fig:methodology}}
\end{figure}

580
docs/modules.tex Normal file
View File

@ -0,0 +1,580 @@
\section{Modules}
\label{sec:modules}
This section provides an overview of the main modules that are used in
an SRAM. For each module, we will provide both an architectural
description and an explanation of how that design is generated and
used in OpenRAM. The modules described below are provided in the
first release of OpenRAM, but by no means is this an exhaustive list
of the possible circuits that can be adapted into a SRAM architecture;
refer to Section~\ref{sec:implementation} for more information on
adding different module designs to the compiler.
Each module has a corresponding python class in the \verb|compiler|
directory. These classes are used to generate both the GDSII layout
and spice netlists. Each module can consist of library cells as
discussed in Section~\ref{sec:techdir}, paramterized cells in
Section~\ref{sec:parameterized} or other modules. A discussion of the
design hierarchy and how to implement a module is provided in
Section~\ref{sec:design}.
When combining modules at any level of hierarchy, DRC rules for
minimum spacing of metals, wells, etc. must be followed and DRC and
LVS are run by default after each hierarchical module's creation.
\subsection{The Bitcell and Bitcell Array}
\label{sec:bitcellarray}
The 6T cell is the most commonly used memory cell in SRAM devices. It
is named a 6T cell because it consist of 6 transistors: 2 access
transistors and 2 cross coupled inverters as shown in
Figure~\ref{fig:6t_cell}. The cross coupled inverters hold a single
data bit that can either be driven into, or read from the cell by the
bitlines. The access transistors are used to isolate the cell from
the bitlines so that data is not corrupted while a cell is not being
accessed.
\begin{figure}[h!]
\centering
\includegraphics[scale=.9]{./figs/cell_6t_schem.pdf}
\caption{Schematic of 6T cell.}
\label{fig:6t_cell}
\end{figure}
% memory cell operation
The 6T cell can be accessed to perform the two main operation
associated with memory: reading and writing. When a read is to be
performed, both bitlines are precharged to VDD. This precharging is
done during the first half of the read cycle and is handled by the
precharge circuitry. In the second half of the read cycle the
wordline is asserted, which enable the access transistors. If a 1 is
stored in the cell then BLB is discharged to Gnd and BL is pulled up
to Vdd. Conversely, if the value stored is a 0, then BL is discharged
to Gnd and BLB is pulled up to Vdd. While performing a write
operation, both bitlines are also precharged to Vdd during the first
half of the write cycle. Again, the world line is asserted, and the
access transistors are enabled. The value that is to be written into
the cell is applied to BL, and its complement is applied to BLB. The
drivers that are applying the signals to the bitlines must be
appropriately sized so that the previous value in the cell can be
overwritten.
% tiling memory cells
The 6T cells are tiled together in both the horizontal and vertical
directions to make up the memory array. The size of the memory array
is directly related to the numbers of words, and the size of those
words, that will need to be stored in the RAM. For example, an 8kb
memory with a word size of 8 bits could be implemented as 8 columns
and 1024 rows.
% keeping it square
It is common practice to keep the aspect ratio of memory array as
square as possible\footnote{Future versions will consider optimizing
delay and/or power as well.}. This helps to make sure that the
bitlines do not become too long, which can increase the bitline
capacitance, slow down the operation and lead to more leakage. To
make the design ``more square'', multiple words can share rows by
interleaving the bits of each word. If the previous 8kb memory was
rearranged to allow 2 words per row, then the array would have 16
columns and 512 rows.
% memory cell is a library cell
In OpenRAM, we provide a library cell for the 6T cell so that users
can easily swap in different memory cell designs. The memory cell is
the most important cell in the RAM and should be customized to
minimize area and optimize performance. The memory cell is the most
replicated cell in the RAM; minimizing its size can have a drastic
effext on the overall size of the RAM. Also, the transitors in the cell
must be carefully sized to allow for correct read and write operation
as well as protection against corruption.
% bitcell and bitcell_array classes
The \verb|bitcell| class in \verb|bitcell.py| instantiates a single
memory cell and is usually a pre-made library cell. The
\verb|bitcell_array| class in \verb|bitcell_array.py| dynamically
implements the memory cell array by instantiating a single memory cell
according to the number of rows and columns. During the tiling
process, the cells are abutted so that all bitlines and word lines are
connected in the vertical and horizontal directions respectively. In
order to share supply rails, cells are flipped in alternating rows. To
avoid any extra routing, the power/ground rails, bitlines, and
wordlines should span the entire width/height of the cell so thay they
are automatically connected when the cells are abutted.
\subsection{Precharge Circuitry}
\label{sec:precharge}
The precharge circuit is depicted in Figure~\ref{fig:precharge} and is
implemented by three PMOS transistors. The input signal to the cell,
clk, enables all three transistors during the first half of a read or
write cycle (i.e. while the clock signal is low). M1 and M2 charge BL
and BLB to Vdd and M3 helps to equalize the voltages seen on BL and
BLB.
\begin{figure}[h!]
\centering
\includegraphics[width=5cm]{./figs/precharge_schem.pdf}
\caption{Schematic of a single precharge cell. \fixme{Change PCLK to CLK.}}
\label{fig:precharge}
\end{figure}
In OpenRAM, the precharge citcuitry is dynamically generated using the
parameterized transistor class (\verb|ptx|). The \verb|precharge|
class in \verb|precharge.py| dynamically generates a single precharge cell.
The offsets of the bitlines and the width of the precharge cell are
equal to the 6T cell so that the bitlines are correctly connected down
to the 6T cell. The \verb|precharge_array| class is then used to
generate a precharge array, which is a single row of \textbf{n}
precharge cells, where \textbf{n} equals the number of columns in the
bitcell array.
\subsection{Address Decoders}
\label{sec:addressdecoder}
The address decoder takes the row address bits from the address bus as
inputs, and asserts the appropriate wordline in the row that data is
to be read or written. A n-bit address input controls $2^n$ word
lines.
OpenRAM provides a hierarchical address decoder as the default, but
will soon have other options.
\subsubsection{Hierarchical Decoder}
\label{sec:hierdecoder}
Hierarchical decoder is a type of decoder which the constrcution takes place hierarchically.
The simple 2:4 decoder is shown in the Figure~\ref{fig:2 to 4 decoder}. The operation of
this decoder can be explained as follows: soon after the address signals A0 and A1 are put on the address lines,
depending on the signal combination, one of the wordlines will rise after a brief amount of time. For example if the
address input is A0A1=00 then the output is W0W1W2W3=1000. The 2:4 address decoder uses inverters and two
input nand gates for its constrcution while the gates are sized to have equal rise and fall time.
As the decoder size increases the size of the nand gates required for decoding also increases.
Table~\ref{table:2-4 hierarchical_decoder} gives the detailed input and output siganls
for the 2:4 hierarchical decoder.
\begin{figure}[h!]
\centering
\includegraphics[scale=.6]{./figs/2t4decoder.pdf}
\caption{Schematic of 2-4 simple decoder.}
\label{fig:2 to 4 decoder}
\end{figure}
\begin{table}[h!]
\begin{center}
\begin{tabular}{| c | c |}
\hline
A[1:0] & Selected WL\\ \hline
00 & 0\\ \hline
01 & 1\\ \hline
10 & 2\\ \hline
11 & 3\\ \hline
\end{tabular}
\end{center}
\caption{Truth table for 2:4 hierarchical decoder.}
\label{table:2-4 hierarchical_decoder}
\end{table}
An $n$-bit decoder requires {$2^n$} logic gates, each with $n$ inputs. For example, with $n$ = 6,
64 $NAND6$ gates are needed to drive 64 inverters to implement the decoder.
It is clear that gates with more than 3 inputs create large series resistances and long delays.
Rather than using $n$-input gates, it is preferable to use a cascade of gates.
Typically two stages are used: a predecode stage and a final decode stage.
The predecode stage generates intermediate signals that are used
by multiple gates in the final decode stage.
\begin{figure}[h!]
\centering
\includegraphics[scale=.6]{./figs/4t16decoder.pdf}
\caption{Schematic of 4 to 16 hierarchical decoder.}
\label{fig:4 to 16 decoder}
\end{figure}
Figure~\ref{fig:4 to 16 decoder} shows the 4 to 16 heirarchical decoder. The structure of the decoder consists of two 2:4 decoders for predecoding and 2-input nand gates and inverters for final decoding to form the 4:16 decoder.
In the predecoder, a total of 8 intermediate signals are generated from the address bits and their complements.
The concept of using predecoing and final decoding stage for construction of address decoder is very procutive since small
decoders like 2:4 decoder is used for predecoding. The operation of 4:16 heirarchical decoder can explained with an example. If the address is A0A1A2A3=0000 the output of the predecoder1 and predeocder2 will be
WL0WL1WL2WL3=1000 and WL0WL1WL2WL3=1000, respectively. According to the connections in figure~\ref{fig:4 to 16 decoder} the wordline 0 of predecoder1 and predecoder2 are conneted
to the first 2-input nand gate in the decode stage representing the wordline 0 of the final decoding stage. Hence depengin on the combination
of the input signal one of the wordline will rise. In this case since the address input is A0A1A2A3=0000 the wordline 0 should go high. Table~\ref{table:4-16 hierarchical_decoder} gives the detailed input and output siganls
for the 4:16 hierarchical decoder.
\begin{table}[h!]
\begin{center}
\begin{tabular}{| c | c | c | c |}
\hline
A[3:0] & predecoder1 & predecoder2 & Selected WL\\ \hline
0000 & 1000 & 1000 & 0\\ \hline
0001 & 1000 & 0100 & 1\\ \hline
0010 & 1000 & 0010 & 2\\ \hline
0011 & 1000 & 0001 & 3\\ \hline
0100 & 0100 & 1000 & 4\\ \hline
0101 & 0100 & 0100 & 5\\ \hline
0110 & 0100 & 0010 & 6\\ \hline
0111 & 0100 & 0001 & 7\\ \hline
1000 & 0010 & 1000 & 8\\ \hline
1001 & 0010 & 0100 & 9\\ \hline
1010 & 0010 & 0010 & 10\\ \hline
1011 & 0010 & 0001 & 11\\ \hline
1100 & 0001 & 1000 & 12\\ \hline
1101 & 0001 & 0100 & 13\\ \hline
1110 & 0001 & 0010 & 14\\ \hline
1111 & 0001 & 0001 & 15\\ \hline
\end{tabular}
\end{center}
\caption{Truth table for 4:16 hierarchical decoder.}
\label{table:4-16 hierarchical_decoder}
\end{table}
As the size of the address line increases higher level decoder can be created using the lower level decoders. For example for a 8:256 decoder, two instances of 4:16 followed by 256 2-input nand gates and inverters
can form the decoder. In order to construct the 8:256 decoder, first 4:16 decoder should be constructed through using 2:4 deccoders. Hence the name is hierarchical decoder.
\subsection{Wordline Driver}
\label{sec:wldriver}
Word line drivers are inserted, in between the word line
output of the address decoder and the word line input of the bitcell-array. The word
line drivers ensure that as the size of the memory array increases,
and the word line length and capacitance increases, the word line
signal is able to turn on the access transistors in the 6T cell. Also, as the bank select signal
in multi-bank structures is $ANDED$ with the word line output of decoder,
bitcells turn on only when bank is selected.
Figure~\ref{fig:wordline_driver} shows the diagram of word line driver and its input/output pins.
In OpenRAM, word line drivers are created by using the \verb|pinv| and \verb|nand2| classes which
takes the transistor size and cell height as inputs (so that it can abutt the
6T cell). Word line driver is added as seperate module in \verb|compiler|.
\begin{figure}[h!]
\centering
\includegraphics[scale=.8]{./figs/wordline_driver.pdf}
\caption{Diagram of word line driver.}
\label{fig:wordline_driver}
\end{figure}
\subsection{Column Mux}
The column mux takes the column address bits from the address bus
selects the appropriate bitlines for the word that is to be read from
or written to. It takes n-bits from the address bus and can select
$2^n$ bitlines. The column mux is used for both the read and write
operations; it connects the bitline of the memory array to both the
sense ampflifier and the write driver.
OpenRAM provides several options for column mux, but the default
is a single-level column mux which is sized for optimal speed.
\subsubsection{Tree\_Decoding Column Mux}
\label{sec:tree_decoding_column_mux}
The schematic for a 4-1 tree
multiplexer is shown in Figure~\ref{fig:colmux}.
\begin{figure}[h!]
\centering
\includegraphics[scale=.9]{./figs/tree_column_mux_schem.pdf}
\caption{Schematic of 4-1 tree column mux that passes both of the bitlines.}
\label{fig:colmux}
\end{figure}
\fixme{Shading/opacity is different on different platforms. Make this a box in the image. It doesn't work on OSX.}
This tree mux selects pairs of bitlines (both BL and BL\_B) as inputs
and outputs. This 4-1 tree mux illustrates the process of choosing
the correct bitlines if there are 4 words per row in the memory array.
Each bitline pair represents a single bit from each word. A binary
reduction pattern, shown in Table~\ref{table:colmux}, is used to
select the appropriate bitlines. As the number of words per row in
the memory array increases, the depth of the column mux grows. The
depth of the column mux is equal to the number of bits in the column
address bus. The 4-1 tree mux has a depth of 2. In level 1, the
least significant bit from the column address bus selects either the
first and second words or the third and fourth words. In level 2, the
most signifant column address bit selects one of the words passed down
from the previous level. Relative to other column mux designs, the
tree mus uses significantly less devices. But, this type of design
can provide poor performance if a large decoder with many levels are
needed. The delay of of a tree mux quadratically increases with each
level. Due to this fact, other types of column
decoders should be considered for larger arrays.
\begin{table}[h!]
\begin{center}
\begin{tabular}{| c | c | c | c |}
\hline
Selected BL & Inp1 & Inp2 & Binary\\ \hline
BL0 & SEL0\_bar & SEL1\_bar & 00\\ \hline
BL1 & SEL0 & SEL1\_bar & 01\\ \hline
BL2 & SEL0\_bar & SEL1 & 10\\ \hline
BL3 & SEL0 & SEL1 & 11\\
\hline
\end{tabular}
\end{center}
\caption{Binary reduction pattern for 4-1 tree column mux.}
\label{table:colmux}
\end{table}
In OpenRAM, the tree column mux is a dynamically generated design. The
\verb|tree_mux_array| is made up of two dynamically generated cells: \verb|muxa|
and \verb|mux_abar|. The only diffference between these cells is that input
select signal is either hooked up to the \textbf{SEL} or
\textbf{SEL\_bar} signals (see highlighted boxes in
Figure~\ref{fig:colmux}). These cells are initialized the the
\verb|column_muxa| and \verb|column_muxabar| classes in \verb|columm_mux.py|. Instances
of \verb|ptx| PMOS transistors are added to the design and the necessary
routing is performed using the \verb|add_rect()| function. A horizontal rail
is added in metal2 for both the SEL and Sel\_bar signals. Underneath
those input rails, horizontal straps are added. These straps are used
to connect the BL and BL\_B outputs from \verb|muxa| to the BL and BL\_B
outputs of \verb|mux_abar|. Vertical conenctors in metal3 are added at the
bottom of the cell so that connections can be made down to the sense
amp. Vertical connectors are also added in metal1 so that the cells
can connect down to other mux cells when the depth of the tree mux is
more than one level.
The \verb|tree_mux_array| class is used to generate the tree mux.
Instances of both the \verb|muxa| and \verb|mux_abar| cells are instantiated and
are tiled row by row. The offset of the cell in a row is determined
by the depth of that row in the tree mux. The pattern used to
determine the offset of the mux cells is
$muxa.width*(i)*(2*row\_depth)$ where is the column number. As the
depth increases, the mux cells become further apart. A separate
``for'' loop is invoked if the $depth>1$, which extends the
power/ground and select rails across the entire width of the array.
Similarly, if the $depth>1$, spice net names are created for the
intermediate connection made at the various levels. This is necessary
to ensure that a correct spice netlist is generated and that the
input/output pins of the column mux match the pins in the modules that
it is connected to.
\subsubsection{Single\_Level Column Mux}
\label{sec:single_level_column_mux}
The optimal design for column mux uses a single NMOS device, driven by the input address or decoded input addresses.
Figure~\ref{fig:2t1_single_level_column_mux} shows the schematic of a 2:1 single-level column mux. In this column mux one bit
of address and its complementry drive the pass transistors. Selected transistors will
connect their corresponding bitlines ( 1 set of column out of 2 set of columns) to sense-amp and write-driver circuitry for read or write operation.
Figure~\ref{fig:4t1_single_level_column_mux} shows the schematic of a 4:1 single-level column mux. In this column mux, 2 input
address are decoded using a 2:4 decoder ( 2:4 decoder is explain in section~\ref{sec:hierdecoder}). 2:4 decoder provides a one-hot set of outputs, so only one set of columns
will be selected and connected to sense-amp and write-driver
( in figure~\ref{fig:4t1_single_level_column_mux} one set of column out of four sets of column is selected).
In OpenRAM, the \verb|single-level_mux_array| is a dynamically generated design and
it is made up of dynamically generated cell (\verb|single-level_mux|).
\verb|single-level_mux| uses the parameterized transistor class \verb|ptx| to generate two NMOS transistors
which will connect the BL and BLB of selected columns to sense-amp and write-driver. Horizontal rails are added for $sel$ signals. Vertical
straps connect the BL and BLB of bitcell\_array to BL and BLB of single-level column mux and also BL-out and BLB-out of single-level
column mux to BL and BLB of sense-amp and write-driver.
\begin{figure}[h!]
\centering
\includegraphics[scale=.7]{./figs/2t1_single_level_column_mux.pdf}
\caption{Schematic of a 2:1 single level column mux.}
\label{fig:2t1_single_level_column_mux}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[scale=.6]{./figs/4t1_single_level_column_mux.pdf}
\caption{Schematic of a 4:1 single level column mux.}
\label{fig:4t1_single_level_column_mux}
\end{figure}
\subsection{Sense Amplifier}
\label{sec:senseamp}
The sense amplifier is used to sense the difference between the
bitline and bitline bar while a read operation is performed. The
sense amp is necessary to recover the signals from the bitlines
because they do not experience full voltage swing. As the size of the
memory array grows, the load of the bitlines increases and the voltage
swing is limited by the small memory cell driving this large load. A
differential sense amplifier is used to``sense'' the small voltage
difference between the bitlines.
\begin{figure}[h!]
\centering
\includegraphics[scale=.8]{./figs/sense_amp_schem.pdf}
\caption{Schematic of a single sense amplifier cell.}
\label{fig:sense_amp}
\end{figure}
The schematic for the sense amp is shown in
Figure~\ref{fig:sense_amp}. The sense amplifier is enable by the SCLK
signal, which initiates the read operation. Before the sense
amplifier is enable, the bitlines are precharged to Vdd by the
precharge unit. When the sense amp is enabled, one of the bitlines
experiences a voltage drop based on the value stored in the memory
cell. If a zero is stored, the bitline voltage drops. If a one is
stored, the bitline bar voltage drops. The output signal is then
taken to a true logic level and latched for output to the data bus.
In OpenRAM, the sense amplifier is a libray cell. The associated
layout and spice netlist can be found in the \verb|gds_lib| and \verb|sp_lib| in
the FreePDK45 directory. The \verb|sense_amp| class in \verb|sense_amp.py|
instantiates a single instance of the sense amp library cell. The
\verb|sense_amp_array| class handles the tiling of the sense amps cells.
One sense amp cell is needed per data bit and the sense amp cells need
to be appropriately spaced so that they can hook up to the column mux
bitline pairs. The spacing is determined based on the number of words
per row in the memory array. Instances are added and then Vdd, Gnd
and SCLK rails that span the entire width of the array are drawn using
the add\_rect() function.
We chose to leave the sense amp as a libray cell so that custom
amplifier designs could be swapped into the memory as needed. The two
major things that need to be considered while designing the sense
amplifier cell are the size of the cell and the bitline/input pitches.
Optimally, the cell should be no larger than the 6T cell so that it
abuts to the column mux and no extra routing or space is needed.
Also, the bitline inputs of the sense amp need to line up with the
outputs of the write driver. In the current version of OpenRAM, the
write driver is situated under the sense amp, which had bitlines
spaning the entire height of the cell. In this case, the sense
amplifier is disabled during a write operation but the bitlines still
connect the write driver to the column mux without any extra routing.
\subsection{Write Driver}
\label{sec:writedriver}
The write driver is used to drive the input signal into the memory
cell during a write operation. It can be seen in
Figure~\ref{fig:write_driver} that the write driver consists of two
tristate buffers, one inverting and one non-inverting. It takes in a
data bit, from the data bus, and outputs that value on the bitline,
and its complement on bitline bar. The bitlines need to be
complements so that the data value can be correctly stored in the 6T
cell. Both tristates are enabled by the EN signal.
\begin{figure}[h!]
\centering
\includegraphics[scale=.8]{./figs/write_driver_schem.pdf}
\caption{Schematic of a write driver cell, which consists of 2 tristates (non-inverting and inverting) to drive the bitlines.}
\label{fig:write_driver}
\end{figure}
Currently, in OpenRAM, the write driver is a library cell. The
associated layout and spice netlist can be found in the \verb|gds_lib| and
\verb|sp_lib| in the FreePDK45 directory. Similar to the \verb|sense_amp_array|,
the \verb|write_driver_array| class tiles the write driver cells. One
driver cell is needed per data bit and Vdd, Gnd, and EN signals must
be extended to span the entire width of the cell. It is not optimal to
have the write driver as a library cell because the driver needs to be
sized based on the capacitance of the bitlines. A large memory array
needs a stronger driver to drive the data values into the memory
cells. We are working on creating a parameterized tristate class,
which will dynamically generate write driver cells of different
sizes/strengths.
\subsection{Flip-Flop Array}
In a synchronous SRAM it is necessary to synchronize the inputs and
outputs with a clock signal by using flip-flops. In FreePDK45 we
provide a library cell for a simple master-slave flip-flop, see
schematic in Figure~\ref{fig:ms_flop}. In our library cell we provide
both Q and Q\_bar as outputs of the flop because inverted signals are
used in various modules. The \verb|ms_flop| class in \verb|ms_flop.py|
instatitates a single master-slave flop, and the \verb|ms_flop_array| class
generates an array of flip-flops. Arrays of flops are necessary for
the data bus (an array for both the inputs and outputs) as well as the
address bus (an array for row and column inputs). The \verb|ms_flop_array|
takes the number of flops and the type of array as inputs. Currently,
the type of the array must be either ``data\_in'', ``data\_out'',
``addr\_row'', or ``addr\_col'' verbatim. The array type input is
used to look up that associated pin names for each of the flop arrays.
This was implemented very quickly and should be improved in the near
future...
\begin{figure}[h!]
\centering
\includegraphics[scale=.7]{./figs/ms_flop_schem.pdf}
\caption{Schematic of a master-slave flip-flop provided in FreePDK45 library}
\label{fig:ms_flop}
\end{figure}
\subsection{Control Logic}
The details of the control logic architecture are outlined in
Section~\ref{sec:control}. The control logic module,
\verb|control_logic.py|, instantiates a \verb|control_logic| class that arranges
all of the flip-flops and logic associated with the control signals
into a single module. Flip-flops are instantiated for each control
signal input and library NAND and NOR gates are used for the logic. A
delay chain, of variable length, is also generted using parameterized
inverters. The associated layouts and spice netlists can be found in
the \verb|gds_lib| and \verb|sp_lib| in the FreePDK45 directory.
\section{Bank and SRAM}
\label{sec:bank}
The overall memory architecture is shown in figure~\ref{fig:bank}.
As shown in this figure one Bank contains different modules including
precharge-array which is positioned above the bitcell-array,
column-mux-array which is located below the bitcell-array,
sense-amp-array, write-driver-array, data-in-ms-flop-array
to synchronize the input data with negative edge of the clock,
tri-gata-array to share the bidirectional data-bus between input
and output data, hierarchical decoder which is placed on the right side
of the bitcell-array (predecoder + decoder), wordline-driver which drives
the wordlines horizontally across the bitcell-array and address-ms-flops
to synchronize the input address with positive edge of the clock.
In bitcell-array each memory cell is mirrored vertically and horizontally inorder to share VDD and GND rails with adjacent cells and form the array.
Data-bus is connected to tri-gate, address-bus is connected to address-ms-flops and bank-select
signal will enable the bank when it goes high. To complete the SRAM design, bank is connected to control-logic as shown in figure~\ref{fig:bank}.
Control-logic controls the timing
of modules inside the bank. CSb, OEb, Web and clk are inputs to the control logic and output of
control logic will ANDed with bank-select signal and send to the corresponding modules.
\begin{figure}[h!]
\centering
\includegraphics[scale=1]{./figs/bank.pdf}
\caption{Overal bank and SRAM architecture.}
\label{fig:bank}
\end{figure}
In order to reduce the delay and power, divided wordline strategy have been used in this compiler. Part of the address bits
are used to define the global wordline (bank-select) and rest of address bits are connected to hierarchical
decoder inside each bank to generate local wordlines that actually drive the bitcell access transistors.
As shown in figure~\ref{fig:bank2} SRAM is divided to two banks which share data-bus, address-bus, control-bus and control-logic.
In this case one bit of address (most significant bit) goes to an ms-flop and outputs of ms-flop (address-out and address-out-bar)
are connected to banks as bank-select signals. Control logic is shared between two banks and based on which bank is selected,
control signals will activate modules inside the selected bank. In this architecture, the total cell capacitance is reduced by up
to a factor of two. Therefore the power will be reduced greatly and the delay among the wordlines is also reduced.
\begin{figure}[h!]
\centering
\includegraphics[scale=.9]{./figs/bank2.pdf}
\caption{SRAM is divided to two banks which share the control-logic.}
\label{fig:bank2}
\end{figure}
In figure~\ref{fig:bank4}, four banks are connected together. In this case a 2:4 decoder is added to select one of the banks using two
most significant bits of input address. Control signals are connected to all banks but will turn on only the selected bank.
\begin{figure}[h!]
\centering
\includegraphics[scale=.9]{./figs/bank4.pdf}
\caption{SRAM is divided to 4 banks wich are controlled by the control-logic and a 2:4 decoder.}
\label{fig:bank4}
\end{figure}

47
docs/openram_manual.out Normal file
View File

@ -0,0 +1,47 @@
\BOOKMARK [1][-]{section.1}{License}{}% 1
\BOOKMARK [1][-]{section.2}{Introduction}{}% 2
\BOOKMARK [2][-]{subsection.2.1}{Requirements}{section.2}% 3
\BOOKMARK [2][-]{subsection.2.2}{Environment Variables}{section.2}% 4
\BOOKMARK [2][-]{subsection.2.3}{Design Flow}{section.2}% 5
\BOOKMARK [2][-]{subsection.2.4}{Usage}{section.2}% 6
\BOOKMARK [1][-]{section.3}{Overview of the SRAM Structure}{}% 7
\BOOKMARK [2][-]{subsection.3.1}{Inputs/Outputs}{section.3}% 8
\BOOKMARK [2][-]{subsection.3.2}{Top-Level SRAM Module}{section.3}% 9
\BOOKMARK [1][-]{section.4}{Modules}{}% 10
\BOOKMARK [2][-]{subsection.4.1}{The Bitcell and Bitcell Array}{section.4}% 11
\BOOKMARK [2][-]{subsection.4.2}{Precharge Circuitry}{section.4}% 12
\BOOKMARK [2][-]{subsection.4.3}{Address Decoders}{section.4}% 13
\BOOKMARK [2][-]{subsection.4.4}{Wordline Driver}{section.4}% 14
\BOOKMARK [2][-]{subsection.4.5}{Column Mux}{section.4}% 15
\BOOKMARK [2][-]{subsection.4.6}{Sense Amplifier}{section.4}% 16
\BOOKMARK [2][-]{subsection.4.7}{Write Driver}{section.4}% 17
\BOOKMARK [2][-]{subsection.4.8}{Flip-Flop Array}{section.4}% 18
\BOOKMARK [2][-]{subsection.4.9}{Control Logic}{section.4}% 19
\BOOKMARK [1][-]{section.5}{Bank and SRAM}{}% 20
\BOOKMARK [1][-]{section.6}{Software Implementation}{}% 21
\BOOKMARK [2][-]{subsection.6.1}{Design Hierarchy}{section.6}% 22
\BOOKMARK [2][-]{subsection.6.2}{Creating a New Design Module}{section.6}% 23
\BOOKMARK [2][-]{subsection.6.3}{GDSII Files and GdsMill\)}{section.6}% 24
\BOOKMARK [2][-]{subsection.6.4}{Technology Directory}{section.6}% 25
\BOOKMARK [2][-]{subsection.6.5}{DRC/LVS Interface}{section.6}% 26
\BOOKMARK [1][-]{section.7}{Custom Layout Design Functions in Software}{}% 27
\BOOKMARK [2][-]{subsection.7.1}{Parameterized Transistor}{section.7}% 28
\BOOKMARK [2][-]{subsection.7.2}{Parameterized Inverter}{section.7}% 29
\BOOKMARK [2][-]{subsection.7.3}{Parameterized NAND2}{section.7}% 30
\BOOKMARK [2][-]{subsection.7.4}{Parameterized NAND3}{section.7}% 31
\BOOKMARK [2][-]{subsection.7.5}{Parameterized NOR2}{section.7}% 32
\BOOKMARK [2][-]{subsection.7.6}{Path and Wire}{section.7}% 33
\BOOKMARK [1][-]{section.8}{Porting to a new Technologies}{}% 34
\BOOKMARK [2][-]{subsection.8.1}{The GDS and Spice Libraries}{section.8}% 35
\BOOKMARK [2][-]{subsection.8.2}{Technology Directory}{section.8}% 36
\BOOKMARK [1][-]{section.9}{Timing and Control Logic}{}% 37
\BOOKMARK [2][-]{subsection.9.1}{Signals}{section.9}% 38
\BOOKMARK [2][-]{subsection.9.2}{Timing Considerations}{section.9}% 39
\BOOKMARK [2][-]{subsection.9.3}{SRAM Operation}{section.9}% 40
\BOOKMARK [2][-]{subsection.9.4}{Zero Bus Turnaround \(ZBT\)}{section.9}% 41
\BOOKMARK [2][-]{subsection.9.5}{Control Logic}{section.9}% 42
\BOOKMARK [2][-]{subsection.9.6}{Replica Bitline Delay}{section.9}% 43
\BOOKMARK [2][-]{subsection.9.7}{Timing and Power Characterizer}{section.9}% 44
\BOOKMARK [1][-]{section.10}{Unit Tests}{}% 45
\BOOKMARK [2][-]{subsection.10.1}{Usage}{section.10}% 46
\BOOKMARK [1][-]{section.11}{Debug Framework}{}% 47

BIN
docs/openram_manual.pdf Normal file

Binary file not shown.

109
docs/openram_manual.tex Normal file
View File

@ -0,0 +1,109 @@
% The % is a comment. This file is an Example LaTeX document for GP111
\documentclass[11pt]{article}
\usepackage{times} % LaTeX 2e
\usepackage{graphicx}
\usepackage{epstopdf}
%\usepackage{subfigure}
\usepackage[colorlinks=true]{hyperref}
%\usepackage[doublespacing]{setspace}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Generic Shared across papers Keywords
\newcommand{\fixme}[1]{{\Large FIXME:} {\bf #1}}
\newcommand{\note}[1]{{\bf Note:} \{\uline{#1}\}\\}
% create some additional spacing between paragraphs.
\setlength{\parskip}{7pt}
% Default margins are too wide all the way around. I reset them here.
\setlength{\topmargin}{-.5in}
\setlength{\textheight}{9in}
\setlength{\oddsidemargin}{.125in}
\setlength{\textwidth}{6.25in}
\begin{document}
\title{OpenRAM Manual}
\author{Matthew R. Guthaus - mrg@ucsc.edu\\
James Stine - james.stine@okstate.edu\\
and many others
}
%\renewcommand{\today}{October 14, 2010}
\maketitle
\newpage
\section{License}
\begin{verbatim}
Copyright 2018 Regents of the University of California and The Board
of Regents for the Oklahoma Agricultural and Mechanical College
(acting for and on behalf of Oklahoma State University)
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\end{verbatim}
\newpage
\setcounter{tocdepth}{2}
\tableofcontents
\newpage
% Each chapter description
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{intro}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{overview}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{modules}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{implementation}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{parameterized}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{porting}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{timing}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{unittests}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{debug}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\input{conclusions}
\input{gdsmill}
\end{document}

91
docs/overview.tex Normal file
View File

@ -0,0 +1,91 @@
\section{Overview of the SRAM Structure}
\label{sec:overview}
% address decode and mem array
The baseline SRAMs generated by OpenRAM have 1 read/write port as
shown in Figure~\ref{fig:sram_architecture}. The address is decoded
(Section~\ref{sec:addressdecoder}) into a one-hot set of word lines
(WL) which are driven by word line drivers
(Section~\ref{sec:wldriver}) over the bit-cell array
(Section~\ref{sec:bitcellarray}). To facilitate reads, the precharge
circuitry (Section~\ref{sec:precharge}) precharges the bitlines so
that the column mux (Section~\ref{sec:column_mux}) can select the
appropriate word which is then sensed by the sense amplifiers
(Section~\ref{sec:senseamp}). Write drivers
(Section~\ref{sec:writedriver}) use the bidirectional nature of the
column mux to write the appropriate columns in a given memory row.
A representative layout of such a memory closely resembles the logical
representation and is shown in Figure~\ref{fig:layout_view}. The
address and data flip-flops and control circuitry are not shown but
are detailed in Section~\ref{sec:control}.
\begin{figure}[htb]
\centering
\includegraphics[width=10cm]{./figs/sram_overview.pdf}
\caption{Single Port SRAM Architecture}
\label{fig:sram_architecture}
\end{figure}
\begin{figure}[htb]
\centering
\includegraphics[width=6cm]{./figs/layout_view_1024_16_annotated.pdf}
\caption{1k SRAM with Two Columns and 16-bit Data}
\label{fig:layout_view}
\end{figure}
\subsection{Inputs/Outputs}
\label{sec:io}
The inputs to the SRAM are:
\begin{itemize}
\setlength{\itemsep}{0pt}
\item clk - External Clock
\item CSb - Active-low Chip Select
\item WEb - Active-low Write Enable
\item OEb - Active-low Output Enable
\item ADDR\# - corresponds to the Address Bus input, labeled 0 to N-address bits.
\item DATA\# - corresponds to the bi-directional Data bus.
\end{itemize}
The outputs to the SRAM are:
\begin{itemize}
\setlength{\itemsep}{0pt}
\item DATA\# - correspond to the bi-directional Data bus.
\end{itemize}
\subsection{Top-Level SRAM Module}
\label{sec:sram}
The \verb|sram| class in \verb|sram.py| is the top-level SRAM module.
This class handles the overall organization of the memory and the
input/output signals. Based on the user inputs, the various bus and
array sizes are calculated and passed to the \verb|bank| module.
All other sub-modules access the value of sizes from \verb|bank|.
The overall organization is depicted in
Figure~\ref{fig:sram_architecture}, discussion of the design data
structure is discussed in Section~\ref{sec:design} and the modules
contained in the top-level SRAM are detailed in
Section~\ref{sec:modules}.
When the user has specified the desired size (word size, total
number of words and number of banks) of the memory that is to be generated,
the following parameters must be calculated. There are several constraints
to be considered in this calculations:
(i) \verb|sram| can generate 1 bank, 2 banks or 4 banks.
(ii) The area of each bank should be as square as possible which is dependent on the area of a 6T cell.
(iii) There are several options for multiplexing (column-mux): 2-way, 4-way, 8-way and none.
All of the top level routing is performed in the \verb|sram| class.
\fixme{More soon...}

258
docs/parameterized.tex Normal file
View File

@ -0,0 +1,258 @@
\section{Custom Layout Design Functions in Software}
\label{sec:parameterized}
OpenRAM provides classes that can be used to generated parameterized
cells for the most common cells: transistors, inverters, nand2, nand3, etc...
There are many advantages to having parameterized cells.
The main advantage is that it makes it easier to dynamically generate designs and cuts
down the necessary code to be written.
We also need parameterized cells because some designs, such as the wordline drivers, need to be
dynamically sized based on the size of the memory.
Lastly, there may be certain physical dimension requirements that need to be met for a
cell, while still maintaing the expected operation/performance.
In OpenRAM we currently provide five parameterized cells: parameterized
transistor (\verb|ptx|), parameterized inverter (\verb|pinv|), parameterized nand2 (\verb|nand_2|),
parameterized nand3 (\verb|nand_3|) and parameterized nor2 (\verb|nor_2|).
\subsection{Parameterized Transistor}
\label{sec:ptx}
The parameterized transistor class generates a transistor of specified
width and number of mults.
The \verb|ptx| is constructed as follows:
\begin{verbatim}
def __init__(self,name,width,mults,tx_type)
\end{verbatim}
An explanation of the \verb|ptx| parameters is shown in
Table~\ref{table:ptx_params}. A layout of ptx, generated by the
following instatiation, is depicted in Figure~\ref{fig:ptx_example}.
\begin{verbatim}
fet = ptx.ptx(name = "nmos_1_finger", width = tech.drc["minwidth_tx"],
mults = 1, tx_type = "nmos").
\end{verbatim}
\begin{table}[h!]
\begin{center}
\begin{tabular}{| l | c |}
\hline
Parameter & Explanation \\ \hline
\verb|width| & active\_height \\ \hline
\verb|mults| & mult number of the transistor \\ \hline
\verb|tx_type| & type of transistor,”nmos” and “pmos” \\ \hline
\hline
\end{tabular}
\end{center}
\caption{Parameter Explanation of ptx}
\label{table:ptx_params}
\end{table}
\begin{figure}[h!]
\centering
\includegraphics[width=10cm]{./figs/ptx.pdf}
\caption{An example of Parameterized Transistor (ptx)}
\label{fig:ptx_example}
\end{figure}
\subsection{Parameterized Inverter}
\label{sec:pinv}
The parameterized inverter (\verb|pinv|) class generated an inverter
of a specified size/strength and height. The \verb|pinv| is
constructed as follows:
\begin{verbatim}
def __init__(self, cell_name, size, beta=tech.[pinv.beta],
cell_size=tech.cell[height])
\end{verbatim}
The parameterized inverter can provide significant drive strength
while adhering to physical cell size limitations. That is achieved by
having many small transistors connected in parallel, thus the height
of the inverter cell can be manipulated without the affecting the
drive strength. The NMOS size is an input parameter, and the PMOS size
will be determined by $beta*NMOS\_size$, where beta is the ratio of
the PMOS channel width to the NMOS channel width. The following code
instatiates the \verb|pinv| instance seen in Figure~\ref{fig:pinv}.
\begin{verbatim}
a=pinv.pinv(cell_name="pinv",size=tech.drc["minwidth_tx"]*8)
\end{verbatim}
\begin{figure}[h!]
\centering
\includegraphics[width=10cm]{./figs/pinv.pdf}
\caption{An example of Parameterized Inverter(pinv)}
\label{fig:pinv}
\end{figure}
The \verb|pinv| parameters are explained in Table~\ref{table:pinv_params}.
\begin{table}[h!]
\begin{center}
\begin{tabular}{| l | c |}
\hline
Parameter & Explanation \\ \hline
\verb|size| & The logic size of the transistor of the nmos in the pinv \\ \hline
\verb|beta| = tech.[pinv.beta] & Ratio of pmos channel width to nmos channel width. \\ \hline
\verb|cell_size| = tech.cell[height] & physical dimension of cell height. \\
\hline
\end{tabular}
\end{center}
\caption{Parameter Explanation of pinv}
\label{table:pinv_params}
\end{table}
\subsection{Parameterized NAND2}
\label{sec:nand2}
The parameterized nand2 (\verb|nand_2|) class generated a 2-input nand gate
of a specified size/strength and height. The \verb|nand_2| is
constructed as follows:
\begin{verbatim}
def __init__(self, name, nmos_width, height=tech.cell_6t[height])
\end{verbatim}
The NMOS size is an input parameter, and the PMOS size
will be equal to NMOS to have the equal rising and falling for output.
The following code instatiates the \verb|nand_2| instance seen in Figure~\ref{fig:nand2}.
\begin{verbatim}
a=nand_2.nand_2(name="nand2", nmos_width=2*tech.drc["minwidth_tx"],
height=tech.cell_6t["height"])
\end{verbatim}
\begin{figure}[h!]
\centering
\includegraphics[width=10cm]{./figs/nand2.pdf}
\caption{An example of Parameterized NAND2(nand\_2)}
\label{fig:nand2}
\end{figure}
The \verb|nand_2| parameters are explained in Table~\ref{table:nand2_params}.
\begin{table}[h!]
\begin{center}
\begin{tabular}{| l | c |}
\hline
Parameter & Explanation \\ \hline
\verb|nmos_width| & The logic size of the transistor of the nmos in the nand2 \\ \hline
\verb|height| = tech.cell\_6t[height] & physical dimension of cell height. \\
\hline
\end{tabular}
\end{center}
\caption{Parameter Explanation of nand2}
\label{table:nand2_params}
\end{table}
\subsection{Parameterized NAND3}
\label{sec:nand3}
The parameterized nand3 (\verb|nand_3|) class generated a 3-input nand gate
of a specified size/strength and height. The \verb|nand_3| is
constructed as follows:
\begin{verbatim}
def __init__(self, name, nmos_width, height=tech.cell_6t[height])
\end{verbatim}
The NMOS size is an input parameter, and the PMOS size
will be equal to $2/3$ NMOS size to have the equal rising and falling for output.
The following code instatiates the \verb|nand_3| instance seen in Figure~\ref{fig:nand3}.
\begin{verbatim}
a=nand_3.nand_3(name="nand3", nmos_width=3*tech.drc["minwidth_tx"],
height=tech.cell_6t["height"])
\end{verbatim}
\begin{figure}[h!]
\centering
\includegraphics[width=10cm]{./figs/nand3.pdf}
\caption{An example of Parameterized NAND3(nand\_3)}
\label{fig:nand3}
\end{figure}
The \verb|nand_3| parameters are explained in Table~\ref{table:nand3_params}.
\begin{table}[h!]
\begin{center}
\begin{tabular}{| l | c |}
\hline
Parameter & Explanation \\ \hline
\verb|nmos_width| & The logic size of the transistor of the nmos in the nand3 \\ \hline
\verb|height| = tech.cell\_6t[height] & physical dimension of cell height. \\
\hline
\end{tabular}
\end{center}
\caption{Parameter Explanation of nand3}
\label{table:nand3_params}
\end{table}
\subsection{Parameterized NOR2}
\label{sec:nor2}
The parameterized nor2 (\verb|nor_2|) class generated a 2-input nor gate
of a specified size/strength and height. The \verb|nor_2| is
constructed as follows:
\begin{verbatim}
def __init__(self, name, nmos_width, height=tech.cell_6t[height])
\end{verbatim}
The NMOS size is an input parameter, and the PMOS size
will be equal to $2$ NMOS size to have the equal rising and falling for output.
The following code instatiates the \verb|nor_2| instance seen in Figure~\ref{fig:nor2}.
\begin{verbatim}
a=nor_2.nor_2(name="nor2", nmos_width=2*tech.drc["minwidth_tx"],
height=tech.cell_6t["height"])
\end{verbatim}
\begin{figure}[h!]
\centering
\includegraphics[width=10cm]{./figs/nor2.pdf}
\caption{An example of Parameterized NOR2(nor\_2)}
\label{fig:nor2}
\end{figure}
The \verb|nor_2| parameters are explained in Table~\ref{table:nor2_params}.
\begin{table}[h!]
\begin{center}
\begin{tabular}{| l | c |}
\hline
Parameter & Explanation \\ \hline
\verb|nmos_width| & The logic size of the transistor of the nmos in the nor2 \\ \hline
\verb|height| = tech.cell\_6t[height] & physical dimension of cell height. \\
\hline
\end{tabular}
\end{center}
\caption{Parameter Explanation of nor2}
\label{table:nor2_params}
\end{table}
\subsection{Path and Wire}
\label{sec:path and wire}
OpenRam provides two routing classes in custom layout design.
Both Path and wire class will take a set of coordinates connect those points
with rectilinear metal connection.
The difference is that path only use the same layers for both vertical and
horizontal connection while wire will use two different adjacent metal layers.
The this example will construct a metal1 layer path
\begin{verbatim}
layer_stack = ("metal1")
position_list = [(0,0), (0,3), (1,3), (1,1), (4,3)]
w=path.path(layer_stack,position_list)
\end{verbatim}
and This exmaple will construct a wire using metal1 for vertical connection and metal2 for
horizontal connection:
\begin{verbatim}
layer_stack = ("metal1","via1","metal2")
position_list = [(0,0), (0,3), (1,3), (1,1), (4,3)]
w=wire.wire(layer_stack,position_list)
\end{verbatim}

47
docs/porting.tex Normal file
View File

@ -0,0 +1,47 @@
\section{Porting to a new Technologies}
\label{sec:porting}
The folllowing sub-directories and files should be added to your new technology directory:
\begin{itemize}
\item \verb|/sp_lib| - spice netlists for library cells
\item \verb|/gds_lib| - GDSII files for the library cell
\item \verb|layers.map| - layer/purpose pair map from the technology
\item \verb|/tech| - contains tech parameters, layers, and portation functions.
\end{itemize}
\subsection{The GDS and Spice Libraries}
The GDS and Spice libraries , \verb|\gds_lib| and \verb|\sp_lib|, should contain the GDSII layouts and spice netlists for each of the library cells in your SRAM design. For the FreePDK45 technology, library cells for the 6T Cell, Sense Amp, Write Driver, Flip-Flops, and Control Logic are provided. To reiterate: all layouts must be exported in the GDSII file format. The following commands can be used to stream GDSII files into or out of Cadence Virtuoso:
\begin{verbatim}
To stream out of Cadence:
strmout -layerMap ../sram_lib/layers.map
-library sram -topCell $i -view layout
-strmFile ../sram_lib/$i.gds
To stream a layout back into Cadence:
strmin -layerMap ../sram_lib/layers.map
-attachTechFileOfLib NCSU_TechLib_FreePDK45
-library sram_4_32 -strmFile sram_4_32.gds
\end{verbatim}
When you import a gds file, make sure to attach the correct tech lib or you will get incorrect layers in the resulting library.
\subsection{Technology Directory}
\label{sec:tech}
Inside of the \verb|/tech| directory should be the Python classes for \verb|tech.py|,
\verb|ptx_port.py|, and any other portation functions. The \verb|tech.py| file is very important and should contain the following:
\begin{itemize}
\item Layer Number/Name - GDSII files only contain layer numbers and it can be difficult to keep track of which layer corresponds to what number. In OpenRAM code, layers are referred to by name and \verb|tech.py| maps the layer names that we use to the layer numbers in the \verb|layer.map| This will associate the layer name used in OpenRAM program with the number used in the layer.map, thus the code in complier wont need to be changed for each technology.
\item Tech Parameters - important rules from the DRC rule deck(such as layer spacing and minimum sizes) should be included here. Please refer to the rules that are included in \verb|tech.py| to get a better idea as to what is important.
\item Cell Sizes and Pin Offsets - The \verb|cell_size()| and \verb|pin_finder()| functions should be used to populate this class with the various cell sizes and pin locations in your library cells. These functions are relatively slow because they must traverse the every shape in the entire hierarchy of a design. Due to this fact, these function are not invoked each time the compiler is run, it should be run one time or if any changes have been made to library cells. This sizes and pin locations gathered are needed to generate the dynamic cells and perform routing at the various levels of the hierarchy. It is suggested that boundary boxes on a specific layer should be added to define the cell size.
\end{itemize}

230
docs/timing.tex Normal file
View File

@ -0,0 +1,230 @@
\section{Timing and Control Logic}
\label{timing}
This section outlines the necessary signals, timing considerations, and control circuitry for a synchronous SRAM.
\subsection{Signals}
\label{signals}
Top-Level Signals:
\begin{itemize}
\setlength{\itemsep}{0pt}
\item ADDR - address bus.
\item DATA - bi-directional data bus.
\item CLK - the global clock.
\item OEb - active low output enable.
\item CSb - active low chip select.
\item WEb - active low write enable.
\end{itemize}
Internal Signals:
\begin{itemize}
\setlength{\itemsep}{0pt}
\item clk\_bar - enables the precharge unit.
\item s\_en - enables the sense amp during a read operation.
\item w\_en - enable the write driver during a write operation.
\item tri\_en and tri\_en\_bar - enable the data input tri-gate during a read operation.
\end{itemize}
\subsection{Timing Considerations}
\label{timing_params}
The main timing considerations for an SRAM are:
\begin{itemize}
\setlength{\itemsep}{0pt}
\item Setup Time - time an input needs to be stable before the positive/negative clock edge.
\item Hold Time - time an input needs to stay valid after the positive/negative clock edge.
\item Minimun Cycle Time - time inbetween subsequent memory operations.
\item Memory Read Time - time from positive clock edge until valid data appears on the data bus.
\item Memory Write Time - time from negative clock edge until data has been driven into a memory cell.
\end{itemize}
\subsection{SRAM Operation}
\label{operation}
\begin{figure}[tb]
\centering
\includegraphics[scale=.85]{./figs/timing_read.pdf}
\caption{Timing diagram for read operation showing the setup, hold, and read times.}
\label{fig:read}
\end{figure}
Read Operation:
\begin{enumerate}
\setlength{\itemsep}{0pt}
\item Before the clock transition (low to high) that initiates the read operation:
\begin{enumerate}
\item The chip must be selected (CSb low).
\item The WEb must be high (read).
\item The row and column addresses must be applied to the address input pins (ADDR).
\item OEb should be selected (OEb low).
\end{enumerate}
\item On the rising edge of the clock (CLK):
\begin{enumerate}
\item The control signals and address are latched into flip-flops and the read cycle begins.
\item The precharging of the bit lines starts.
\item The address bits become available for the decoder and column mux, which select the row and columns that we want to read from.
\end{enumerate}
\item On the falling edge of the clock (CLK):
\begin{enumerate}
\item Word line has been asserted, the value stored in the memory cells pulls down one of the bitlines (BL if a 0 is stored, BL\_bar if a 1 is stored).
\item s\_en enables the sense amplifier which senses the voltage difference of the bit lines, produces the output and keeps the value in its latch circuitry.
\item Tri-gate enables and put the output data on data bus. Data remains valid on the data bus for a complete clock cycle.
\end{enumerate}
\end{enumerate}
\begin{figure}[tb]
\centering
\includegraphics[scale=.9]{./figs/timing_write.pdf}
\caption{Timing diagram for write operation showing the setup, hold, and write times.}
\label{fig:write}
\end{figure}
Write Operation:
\begin{enumerate}
\setlength{\itemsep}{0pt}
\item Before the clock transition (low to high) that initiates the write operation:
\begin{enumerate}
\item The chip must be selected (CSb low).
\item The WEb must be low to enable the data input tristates.
\item The row and column addresses must be applied to the address input pins (ADDR).
\item OEb must be high (no output is available and sense amp disabled)
\end{enumerate}
\item On the rising edge of the clock (CLK):
\begin{enumerate}
\item OEb stays high (no output is available and sense amp disabled)
\item The inputs addresses are latched into flip-flops, precharging starts, and the write operation begins.
\item The address bits become available for the decoder and column mux, which select the row and columns that we want to write to.
\end{enumerate}
\item On the falling edge of the clock (CLK):
\begin{enumerate}
\item The data to be written must be applied to DATA and latched into flip-flops.
\item w\_en enables the write driver, which drives the data input through the column mux and into the selected memory cells. The write delay is the time from the negative clock edge until the data value is stored in the memory cell on node X.
\end{enumerate}
\end{enumerate}
\subsection{Zero Bus Turnaround (ZBT)}
\label{sec:ZBT}
In timing of SRAM, during a read operation, data should be available after the clock edge while
during a write, data should be set up before the clock edge. Due to this issue a wait state (dead cycle) is neccessary when SRAM switches
from read mode to write mode.
To avoide dead cycles in SRAM timing which slow down the operation and degrade the performance of SRAM, Zero Bus turnaround (ZBT) technique is used.
Using ZBT, during a write, data is set up after positive clock edge and before negative clock edge and input data is latched in negative edge flip-flops.
Using ZBT, we will get a higher memory throughput and there is no waite states.
Figure~\ref{fig:write} shows the correct timing for input signals during the write opertion to avoide the wait states.
Figure~\ref{fig:ZBT} shows how a write cycle is followed by a read cycle with no wait state through using ZBT.
Input address bits should be ready before positive edge to be loaded to positive edge flip-flops. Output data is ready to be loaded to data-bus during seconde half of cycle (after negative edge of clock) and
input data should be ready before negative edge of clock to be loaded in negative edge flip-flops.
\begin{figure}[h!]
\centering
\includegraphics[scale=0.9]{./figs/ZBT.pdf}
\caption{(a) Zero Bus Turnaround timing.}
\label{fig:ZBT}
\end{figure}
\subsection{Control Logic}
\label{sec:control}
The control circuitry ensures that the SRAM operates as intended during a read or write cycle by enabling the necessary structures in the SRAM.
As shown in Figure~\ref{fig:control}, the control logic takes three active low signals as inputs: chip select bar ($CSb$),
output enable bar ($OEb$), and write enable bar ($WEb$). $CSb$ enables the entire SRAM chip.
When $CSb$ is low, the appropriate control signals are generated and sent to the architecture blocks.
Conversely, if $CSb$ is high then no control signals are generated and SRAM is turned off or disabled.
The $OEb$ signal signifies a read operation; while it is low the value seen on the data bus will be an output from the memory.
Similarly, the $WEb$ signal signifies a write operation. All of the input control signals are latched with master-slave flip-flops,
ensuring that the control signal stays valid for the entire operation cycle. The control signal flip-flops use the normal clock to generate
local signals used to enable or disable structures based on the operation. Address flip-flops are combined with global clock as well.
In a standard write SRAM, switching from a read to a write operation results in a dead cycle. To avoid this dead cycle, Data flip-flops are
latched with $clk\_bar$ in order to have a Zero Bus Turnaround (ZBT) memory. More details on ZBT timing are outlined in Section~\ref{sec:ZBT}.
After all control signals are latched, they are ANDED with the $clk\_bar$ because the read/write circuitries should only be enabled after the precharging of
the bitlines had ended on the negative edge of the clock. The $w\_en$ signal enables the write driver during a write to the memory .The $s\_en$ signal
is generated using a Replica Bitline ($RBL$) to enable the sense amplifier during a read operation. Details on $RBL$ architecture are outlined in section~\ref{sec:RBL}.
$tri\_en$ and $tri\_en\_bar$ enable the tristates during read in order to drive the outputs onto the data bus.
Table~\ref{table:control} shows the truth table for the control logic. The $s\_en$ signal to enable the sense amplifier is
true when $(CS . OE . Clk\_bar)$ is true. Similarly, write driver enable signal, $w\_en$, is true when $(CS . WE . clk\_bar)$ is true.
$tri\_en$ and $tri\_en\_bar$ are true when $\neg(OEb\_bar | clk)$ and $\neg(OEb . clk\_bar)$ are true, respectively.
\begin{figure}[h!]
\centering
\includegraphics[scale=1]{./figs/control_logic.pdf}
\caption{(a) Control Logic diagram and (b) Replica Bitline Schematic.}
\label{fig:control}
\end{figure}
\begin{table}[h!]
\begin{center}
\begin{tabular}{| c | c | c | c | c | c | c |}
\hline
Operation & \multicolumn{3}{|c|}{Inputs} & \multicolumn{3}{|c|}{Outputs}\\ \hline
& CSb & OEb & WEb & s\_en & w\_en & tri\_en\\ \hline
READ & 0 & 0 & 1 & 1 & 0 & 1\\ \hline
WRITE & 0 & 1 & 0 & 0 & 1 & 0\\ \hline
\end{tabular}
\end{center}
\caption{Generation of control signals.}
\label{table:control}
\end{table}
\subsection{Replica Bitline Delay}
\label{sec:RBL}
In SRAM read operation, discharging the bitline is the most time consuming procedure.
Generally, sense amplifier amplifies the small voltage difference on the bitlines at the proper sense timing,
to realize high-speed operation. Therefore, the timing for sense amplifier ($s\_en$) is extremely important for the high speed and low power SRAM.
If the $s\_en$ arrives early before the bitline difference reaches the sense amplifier input transistors offset voltage,
a read functional failure may occur. Contrarily, a late-arrived $s\_en$ would consume more unnecessary time, thereby wasting the power.
The conventional way of generating $s\_en$ signal is to use a replica bitline ($RBL$). $RBL$ as shown in ~\ref{fig:RBL} consists of a column of SRAM cells (dummy cells),
which track the random process variation in array. $RBL$ is presented for matching the delay of the activation of the
sense amplifier with the delay of the propagation of the required voltage swing at the bitlines.
In $RBL$ technique, delay driven memory cell in control path is same as read path. Therefore the
delay shift of control path according to the Process, Voltage and Temperature (PVT) variation is same ratio as that of read path.
The $RBL$ technique attains self-timed tracking with optimal $s\_en$ timing according to PVT variation.
Using replica circuits, the variation on the delay of the sense amp activation and bitline swing is minimized.
\begin{figure}[h!]
\centering
\includegraphics[scale=.9]{./figs/replica_bitline.pdf}
\caption{Replica Bitline Schematic}
\label{fig:RBL}
\end{figure}
$RBL$ technique uses a Replica Cell ($RC$) driving a short bitline signal. The short bitline\'s capacitance is set to be a
fraction of the main bitline capacitance (e.g. one tenth). This fraction is determined by the required bitline swing
(bitline voltages larger than offset voltage at input transistors of sense amplifier) for proper sensing. So in SRAM, an
extra column block is converted into the replica column whose capacitance is the desired fraction of the main bitline.
Therefore, its capacitance ratio to the main bitlines is set purely by the ratio of the geometric lengths (e.g. one tenth).
The $RC$ is hard wired to store a zero such that it will discharge the $RBL$ once it is accessed.
Because of its similarity with the actual memory cell (in terms of design and fabrication) the delay of $RBL$ tracks the delay of
real bitlines very well and can be made roughly equal. Figure ~\ref{fig:RC} shows the schematic of the 6T replica cell.
The timing for $s\_en$ is generated as follows. At first, the $RBL$ and the normal bitlines are precharged to VDD.
Next, selected memory cells and $RC$ are activated. $RC$ draws the current from the $RBL$ and normal bitlines are
also discharged through the accessed cell. Discharged swing on $RBL$ is inverted and then buffered to generate the signal to enable the sense amplifier.
\begin{figure}[h!]
\centering
\includegraphics[scale=1]{./figs/replica_cell.pdf}
\caption{Replica Bitline Schematic}
\label{fig:RC}
\end{figure}
\subsection{Timing and Power Characterizer}
\label{characterizer}
The section will provide an explanantion of the characterizer that will generete spice stimuli for the top-level SRAM and perform spice timing simulations to determine the memory setup\&hold times, the write delay, and read delay. It will also provide a spice power estimate.

100
docs/unittests.tex Normal file
View File

@ -0,0 +1,100 @@
\section{Unit Tests}
\label{sec:unittests}
OpenRAM comes with a unit testing framework based on the Python
unittest framework. Since OpenRAM is technology independent, these
unit tests can be run in any technology to verify that the technology
is properly ported. By default, FreePDK45 is supported.
The unit tests consist of the following tests that test each module/sub-block of OpenRAM:
\begin{itemize}
\item \verb|00_code_format_check__test.py| - Checks the format of the codes. returns error if finds $TAB$ in codes.
\item \verb|01_library_drc_test.py| - DRC of library cells in technology \verb|gds_lib|
\item \verb|02_library_lvs_test.py| - LVS of library cells in technology \verb|gds_lib| and \verb|sp_lib| %(names must correspond with different extensions)
\item \verb|03_contact_test.py| - Test contacts/vias of different layers
\item \verb|03_path_test.py| - Test different types of paths based off of the wire module
\item \verb|03_ptx_test.py| - Test various sizes/fingers of PMOS and NMOS parameterized transistors
\item \verb|03_wire_test.py| - Test different types of wires with different layers
\item \verb|04_pinv_test.py| - Test various sizes of parameterized inverter
\item \verb|04_nand_2_test.py| - Test various sizes of parameterized nand2
\item \verb|04_nand_3_test.py| - Test various sizes of parameterized nand3
\item \verb|04_nor_2_test.py| - Test various sizes of parameterized nor2
\item \verb|04_wordline_driver_test.py| - Test a wordline\_driver array.
\item \verb|05_array_test.py| - Test a small bit-cell array
\item \verb|06_nand_decoder_test.py| - Test a dynamic NAND address decoder
\item \verb|06_hierarchical_decoder_test.py| - Test a dynamic hierarchical address decoder
\item \verb|07_tree_column_mux_test.py| - Test a small tree column mux.
\item \verb|07_single_level_column_mux_test.py| - Test a small single level column mux.
\item \verb|08_precharge_test.py| - Test a dynamically generated precharge array
\item \verb|09_sense_amp_test.py| - Test a sense amplifier array
\item \verb|10_write_driver_test.py| - Test a write driver array
\item \verb|11_ms_flop_array_test.py| - Test a MS\_FF array
\item \verb|13_control_logic_test.py| - Test the control logic module
\item \verb|14_delay_chain_test.py| - Test a delay chain array
\item \verb|15_tri_gate_array_test.py| - Test a tri-gate array
\item \verb|16_replica_bitline_test.py| - Test a replica bitline
\item \verb|19_bank_test.py| - Test a bank
\item \verb|20_sram_test.py| - Test a complete small SRAM
\item \verb|21_timing_sram_test.py| - Test timing of SRAM
\item \verb|22_sram_func_test.py| - Test functionality of SRAM
\end {itemize}
Each unit test instantiates a small component and performs DRC/LVS. Automatic DRC/LVS inside OpenRAM is disabled so that Python unittest assertions can be used to track failures, errors, and successful tests as follows:
\begin{verbatim}
self.assertFalse(calibre.run_drc(a.cell_name,tempgds))
self.assertFalse(calibre.run_lvs(a.cell_name,tempgds,tempspice))
\end{verbatim}
Each of these assertions will trigger a test failure. If there are
problems with interpreting modified code due to syntax errors, the
unit test framework will not capture this and it will result in an
Error.
\subsection{Usage}
A regression script is provided to check all of the unit tests by running:
\begin{verbatim}
python tests/regress.py
\end{verbatim}
from the compiler directory located at: "OpenRAM/trunk/compiler/". Each individual test can be run by running:
\begin{verbatim}
python tests/{unit-test file}
e.g. python tests/05_array_test.py
\end{verbatim}
from the compiler directory located at: "openram/trunk/compiler/". As an example, the unit tests all
complete and provide the following output except for the final
\verb|20_sram_test| which has 2 DRC violations:
\begin{verbatim}
[trunk/compiler]$ python tests/regress.py
runTest (01_library_drc_test.library_drc_test) ... ok
runTest (02_library_lvs_test.library_lvs_test) ... ok
runTest (03_contact_test.contact_test) ... ok
runTest (03_path_test.path_test) ... ok
runTest (03_ptx_test.ptx_test) ... ok
runTest (03_wire_test.wire_test) ... ok
runTest (04_pinv_test.pinv_test) ... ok
runTest (04_nand_2_test.nand_2_test) ... ok
runTest (04_nand_3_test.nand_3_test) ... ok
runTest (04_nor_2_test.nor_2_test) ... ok
runTest (04_wordline_driver_test.wordline_driver_test) ... ok
runTest (05_array_test.array_test) ... ok
runTest (06_hierdecoder_test.hierdecoder_test) ... ok
runTest (07_single_level_column_mux_test.single_level_column_mux_test) ... ok
runTest (08_precharge_test.precharge_test) ... ok
runTest (09_sense_amp_test.sense_amp_test) ... ok
runTest (10_write_driver_test.write_driver_test) ... ok
runTest (11_ms_flop_array_test.ms_flop_test) ... ok
runTest (13_control_logic_test.control_logic_test) ... ok
runTest (14_delay_chain_test.delay_chain_test) ... ok
runTest (15_tri_gate_array_test.tri_gate_array_test) ... ok
runTest (19_bank_test.bank_test) ... ok
runTest (20_sram_test.sram_test) ... ok
\end{verbatim}
If there are any DRC/LVS violations during the test, all the summary,output,and error files
will be generated in the technology directory's "openram\_temp" folder. One would view those
files to determine the cause of the DRC/LVS violations.
More information on the Python unittest framework is available at\\
\begin{center}
\url{http://docs.python.org/2/library/unittest.html}.
\end{center}