Patrick Rudolph has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/32334
Change subject: Documentation: Explain DDR3 read training ......................................................................
Documentation: Explain DDR3 read training
Add lots of colorful graphics to explain DDR3 read training in detail, what is done inside MCH and what needs to be done on firmware level.
Besides read training give a short explenation what DDR3 "FlyBy" is and compare it with DDR2 DIMMs.
Besides the SVG all sources files are added.
Change-Id: Ib477bd332984c397289404cfc33c65a2d4469257 Signed-off-by: Patrick Rudolph patrick.rudolph@9elements.com --- M Documentation/getting_started/index.md A Documentation/getting_started/ram_initialization/16delay.dia A Documentation/getting_started/ram_initialization/16delay.svg A Documentation/getting_started/ram_initialization/64delay.dia A Documentation/getting_started/ram_initialization/64delay.svg A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.dia A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.svg A Documentation/getting_started/ram_initialization/ddr3_flyby.md A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.dia A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.svg A Documentation/getting_started/ram_initialization/index.md A Documentation/getting_started/ram_initialization/read_training.dia A Documentation/getting_started/ram_initialization/read_training.svg A Documentation/getting_started/ram_initialization/read_training2.dia A Documentation/getting_started/ram_initialization/read_training2.svg A Documentation/getting_started/ram_initialization/read_training3.dia A Documentation/getting_started/ram_initialization/read_training3.svg A Documentation/getting_started/ram_initialization/read_training_pattern.dia A Documentation/getting_started/ram_initialization/read_training_pattern.svg A Documentation/getting_started/ram_initialization/readtraining.md A Documentation/getting_started/ram_initialization/recv_blocks.dia A Documentation/getting_started/ram_initialization/recv_blocks.svg 22 files changed, 1,989 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/32334/1
diff --git a/Documentation/getting_started/index.md b/Documentation/getting_started/index.md index 52d873e..a265c5d 100644 --- a/Documentation/getting_started/index.md +++ b/Documentation/getting_started/index.md @@ -7,3 +7,4 @@ * [Gerrit Guidelines](gerrit_guidelines.md) * [Documentation License](license.md) * [Writing Documentation](writing_documentation.md) +* [DDR3 memory initialization](ram_initialization/index.md) diff --git a/Documentation/getting_started/ram_initialization/16delay.dia b/Documentation/getting_started/ram_initialization/16delay.dia new file mode 100644 index 0000000..d0e0095 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/16delay.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/16delay.svg b/Documentation/getting_started/ram_initialization/16delay.svg new file mode 100644 index 0000000..f661ddd --- /dev/null +++ b/Documentation/getting_started/ram_initialization/16delay.svg @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="38cm" height="18cm" viewBox="366 265 754 351" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="367.719" y="266.052" width="751.775" height="348.316"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ffffff" x="367.719" y="266.052" width="751.775" height="348.316"/> + </g> + <g> + <rect style="fill: #d2d2d2" x="506.345" y="277.178" width="502.734" height="249.054"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="506.345" y="277.178" width="502.734" height="249.054"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="572.849" y1="318.94" x2="522.921" y2="318.99"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="547.885" y1="318.965" x2="548.15" y2="476.756"/> + <g> + <rect style="fill: #000000" x="544.842" y="316.162" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="544.842" y="316.162" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="950.244,384.889 975.523,399.561 975.876,504.035 950.421,514.464 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="950.244,384.889 975.523,399.561 975.876,504.035 950.421,514.464 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="975.7" y1="451.798" x2="1031.05" y2="451.908"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="1022.39" y1="445.241" x2="1015.02" y2="458.991"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="667.315" y1="318.831" x2="608.224" y2="318.44"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="637.769" y1="318.635" x2="638.3" y2="467.672"/> + <g> + <rect style="fill: #000000" x="635.418" y="315.699" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="635.418" y="315.699" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="779.885" y1="318.978" x2="729.755" y2="319.142"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="754.921" y1="319.003" x2="754.496" y2="412.086"/> + <g> + <rect style="fill: #000000" x="751.878" y="316.2" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="751.878" y="316.2" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="873.694" y1="319.085" x2="812.5" y2="318.942"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="843.097" y1="319.014" x2="843.082" y2="399.727"/> + <g> + <rect style="fill: #000000" x="840.384" y="315.954" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="840.384" y="315.954" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="702.689" y1="318.331" x2="724.275" y2="318.55"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="727.025" y1="309.237" x2="721.525" y2="327.862"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="732.505" y1="309.83" x2="727.005" y2="328.454"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="906.19" y1="318.765" x2="930.44" y2="318.817"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="930.69" y1="319.317" x2="930.44" y2="395.315"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="930.44" y1="395.315" x2="949.19" y2="395.315"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="842.729" y1="399.727" x2="948.823" y2="399.681"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="755.413" y1="411.627" x2="947.519" y2="411.627"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="638.3" y1="467.495" x2="945.987" y2="467.246"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="547.729" y1="477.309" x2="945.119" y2="477.561"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="915.253" y="441.862"> + <tspan x="915.253" y="441.862">...</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="963.149" y1="509.249" x2="962.865" y2="566.358"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="957.101" y1="541.319" x2="968.824" y2="536.14"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="972.03" y="538.204"> + <tspan x="972.03" y="538.204">4</tspan> + </text> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1019.07" y="440.383"> + <tspan x="1019.07" y="440.383">1</tspan> + </text> + <g> + <rect style="fill: #ffffff" x="859.215" y="566.358" width="207.3" height="38"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="859.215" y="566.358" width="207.3" height="38"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="962.865" y="589.258"> + <tspan x="962.865" y="589.258">DATAx RECV DELAY register</tspan> + </text> + </g> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="491.244" y="306.547"> + <tspan x="491.244" y="306.547">1</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="492.092" y1="311.658" x2="484.717" y2="325.408"/> + <g> + <rect style="fill: #ffffff" x="422.975" y="312.084" width="12.8129" height="13.6307"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="422.975" y="312.084" width="12.8129" height="13.6307"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="435.788" y1="318.899" x2="524.115" y2="318.899"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="974.304" y="392.911"> + <tspan x="974.304" y="392.911">MUX</tspan> + </text> + <text font-size="12.7998" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="373.99" y="322.624"> + <tspan x="373.99" y="322.624">DATAx</tspan> + </text> + <g> + <rect style="fill: #ffffff" x="1031.05" y="445.093" width="12.8129" height="13.6307"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1031.05" y="445.093" width="12.8129" height="13.6307"/> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="573.705" y="311.392" width="33.1574" height="52.435"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="573.705" y="311.392" width="33.1574" height="52.435"/> + </g> + <g> + <polygon style="fill: #ffffff" points="573.674,342.049 573.703,332.786 581.304,338.001 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="573.674,342.049 573.703,332.786 581.304,338.001 "/> + </g> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="574.835" y="322.411"> + <tspan x="574.835" y="322.411">D</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="596.957" y="322.296"> + <tspan x="596.957" y="322.296">Q</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="559.23" y="305.506"> + <tspan x="559.23" y="305.506">1 CLK delay</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke-dasharray: 4; stroke: #000000" x1="573.331" y1="337.729" x2="558.418" y2="337.567"/> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="668.403" y="311.466" width="33.1574" height="52.435"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="668.403" y="311.466" width="33.1574" height="52.435"/> + </g> + <g> + <polygon style="fill: #ffffff" points="668.371,342.123 668.4,332.86 676.002,338.075 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="668.371,342.123 668.4,332.86 676.002,338.075 "/> + </g> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="669.532" y="322.485"> + <tspan x="669.532" y="322.485">D</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="691.655" y="322.371"> + <tspan x="691.655" y="322.371">Q</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="653.928" y="305.58"> + <tspan x="653.928" y="305.58">1 CLK delay</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke-dasharray: 4; stroke: #000000" x1="668.029" y1="337.803" x2="653.115" y2="337.641"/> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="779.747" y="312.751" width="33.1574" height="52.435"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="779.747" y="312.751" width="33.1574" height="52.435"/> + </g> + <g> + <polygon style="fill: #ffffff" points="779.716,343.407 779.745,334.145 787.347,339.36 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="779.716,343.407 779.745,334.145 787.347,339.36 "/> + </g> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="780.877" y="323.77"> + <tspan x="780.877" y="323.77">D</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="802.999" y="323.655"> + <tspan x="802.999" y="323.655">Q</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="765.273" y="306.865"> + <tspan x="765.273" y="306.865">1 CLK delay</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke-dasharray: 4; stroke: #000000" x1="779.374" y1="339.087" x2="764.46" y2="338.925"/> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="873.107" y="312.166" width="33.1574" height="52.435"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="873.107" y="312.166" width="33.1574" height="52.435"/> + </g> + <g> + <polygon style="fill: #ffffff" points="873.076,342.822 873.105,333.56 880.706,338.775 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="873.076,342.822 873.105,333.56 880.706,338.775 "/> + </g> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="874.237" y="323.185"> + <tspan x="874.237" y="323.185">D</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="896.359" y="323.07"> + <tspan x="896.359" y="323.07">Q</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="858.633" y="306.28"> + <tspan x="858.633" y="306.28">1 CLK delay</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke-dasharray: 4; stroke: #000000" x1="872.733" y1="338.503" x2="857.82" y2="338.34"/> + </g> + <g> + <text font-size="12.7998" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1050.17" y="456.847"> + <tspan x="1050.17" y="456.847">DATAx</tspan> + </text> + <text font-size="6.77323" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1092.5" y="456.654"> + <tspan x="1092.5" y="456.654">delay</tspan> + </text> + </g> +</svg> diff --git a/Documentation/getting_started/ram_initialization/64delay.dia b/Documentation/getting_started/ram_initialization/64delay.dia new file mode 100644 index 0000000..38954ef --- /dev/null +++ b/Documentation/getting_started/ram_initialization/64delay.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/64delay.svg b/Documentation/getting_started/ram_initialization/64delay.svg new file mode 100644 index 0000000..95a9314 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/64delay.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="38cm" height="18cm" viewBox="208 321 754 351" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="209.504" y="322.405" width="751.775" height="348.316"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ffffff" x="209.504" y="322.405" width="751.775" height="348.316"/> + </g> + <g> + <rect style="fill: #d2d2d2" x="352.858" y="328.441" width="502.734" height="249.054"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="352.858" y="328.441" width="502.734" height="249.054"/> + </g> + <g> + <polygon style="fill: #ffffff" points="420.578,359.544 455.828,379.044 420.328,399.544 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="420.578,359.544 455.828,379.044 420.328,399.544 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="420.453" y1="379.544" x2="370.525" y2="379.595"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="395.489" y1="379.57" x2="395.754" y2="537.361"/> + <g> + <rect style="fill: #000000" x="392.445" y="376.766" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="392.445" y="376.766" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="797.848,445.494 823.127,460.166 823.48,564.639 798.025,575.069 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="797.848,445.494 823.127,460.166 823.48,564.639 798.025,575.069 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.303" y1="512.403" x2="880.061" y2="512.55"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="869.995" y1="505.846" x2="862.62" y2="519.595"/> + <g> + <polygon style="fill: #ffffff" points="515.043,359.436 550.293,378.935 514.793,399.435 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="515.043,359.436 550.293,378.935 514.793,399.435 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="514.918" y1="379.435" x2="456.914" y2="379.262"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="485.916" y1="379.349" x2="485.904" y2="528.277"/> + <g> + <rect style="fill: #000000" x="483.022" y="376.304" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="483.022" y="376.304" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="627.614,359.583 662.864,379.083 627.364,399.583 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="627.614,359.583 662.864,379.083 627.364,399.583 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="627.489" y1="379.583" x2="577.561" y2="379.633"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="602.525" y1="379.608" x2="602.099" y2="472.69"/> + <g> + <rect style="fill: #000000" x="599.481" y="376.805" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="599.481" y="376.805" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="721.423,359.69 756.673,379.19 721.173,399.69 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="721.423,359.69 756.673,379.19 721.173,399.69 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="721.298" y1="379.69" x2="663.609" y2="379.346"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="692.454" y1="379.518" x2="692.422" y2="460.836"/> + <g> + <rect style="fill: #000000" x="689.932" y="376.558" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="689.932" y="376.558" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="551.193" y1="379.073" x2="571.879" y2="379.154"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="574.629" y1="369.842" x2="569.129" y2="388.467"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="580.109" y1="370.434" x2="574.609" y2="389.059"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="758.003" y1="379.346" x2="778.044" y2="379.422"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="778.294" y1="379.922" x2="778.044" y2="455.919"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="778.044" y1="455.919" x2="796.793" y2="455.919"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="692.245" y1="461.19" x2="795.543" y2="461.169"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="603.016" y1="472.232" x2="795.123" y2="472.232"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="485.904" y1="528.1" x2="793.591" y2="527.851"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="395.333" y1="537.914" x2="792.722" y2="538.165"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="762.857" y="502.467"> + <tspan x="762.857" y="502.467">...</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="810.753" y1="569.854" x2="810.826" y2="628.195"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="804.705" y1="601.924" x2="816.428" y2="596.744"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="819.634" y="598.809"> + <tspan x="819.634" y="598.809">6</tspan> + </text> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="866.676" y="500.988"> + <tspan x="866.676" y="500.988">1</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="371.401" y="345.253"> + <tspan x="371.401" y="345.253">1/64 CLK delay</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="482.767" y="344.224"> + <tspan x="482.767" y="344.224">1/64 CLK delay</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="590.969" y="344.683"> + <tspan x="590.969" y="344.683">1/64 CLK delay</tspan> + </text> + <text font-size="11.2887" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="700.087" y="343.741"> + <tspan x="700.087" y="343.741">1/64 CLK delay</tspan> + </text> + <g> + <rect style="fill: #ffffff" x="706.819" y="626.963" width="207.3" height="38"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="706.819" y="626.963" width="207.3" height="38"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="810.469" y="649.863"> + <tspan x="810.469" y="649.863">DATAx RECV DELAY register</tspan> + </text> + </g> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="338.848" y="367.152"> + <tspan x="338.848" y="367.152">1</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="339.695" y1="372.263" x2="332.32" y2="386.012"/> + <g> + <rect style="fill: #ffffff" x="270.579" y="372.689" width="12.8129" height="13.6307"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="270.579" y="372.689" width="12.8129" height="13.6307"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="283.392" y1="379.504" x2="371.719" y2="379.504"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="821.907" y="453.515"> + <tspan x="821.907" y="453.515">MUX</tspan> + </text> + <text font-size="12.7998" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="221.594" y="383.229"> + <tspan x="221.594" y="383.229">DATAx</tspan> + </text> + <g> + <rect style="fill: #ffffff" x="878.656" y="505.698" width="12.8129" height="13.6307"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="878.656" y="505.698" width="12.8129" height="13.6307"/> + </g> + <g> + <text font-size="12.7998" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="897.083" y="518.322"> + <tspan x="897.083" y="518.322">DATAx</tspan> + </text> + <text font-size="6.77323" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="939.415" y="518.13"> + <tspan x="939.415" y="518.13">shift</tspan> + </text> + </g> +</svg> diff --git a/Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.dia b/Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.dia new file mode 100644 index 0000000..6648439 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.svg b/Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.svg new file mode 100644 index 0000000..352d9cf --- /dev/null +++ b/Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.svg @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="9cm" height="9cm" viewBox="487 240 171 176" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="489.46" y="242.262" width="167.16" height="172.732"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #ffffff" x="489.46" y="242.262" width="167.16" height="172.732"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #ffffff" x="489.46" y="242.262" width="167.16" height="172.732"/> + </g> + <g> + <g> + <rect style="fill: #008000" x="525.92" y="295.53" width="59.4543" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #008000" x="525.92" y="295.53" width="59.4543" height="3.5"/> + </g> + <g> + <rect style="fill: #008000" x="590.746" y="296.234" width="47.7848" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #008000" x="590.746" y="296.234" width="47.7848" height="3.5"/> + </g> + <g> + <rect style="fill: #008000" x="525.684" y="292.178" width="112.392" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #008000" x="525.684" y="292.178" width="112.392" height="3.5"/> + </g> + <g> + <rect style="fill: #008000" x="525.104" y="278.49" width="113.813" height="5.9375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #008000" x="525.104" y="278.49" width="113.813" height="5.9375"/> + </g> + <g> + <rect style="fill: #008000" x="525.854" y="267.74" width="112.858" height="2.8125"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #008000" x="525.854" y="267.74" width="112.858" height="2.8125"/> + </g> + <g> + <rect style="fill: #008000" x="528.468" y="268.928" width="106.744" height="22.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #008000" x="528.468" y="268.928" width="106.744" height="22.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="605.712" y="272.198" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="605.712" y="272.198" width="11" height="11.375"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="523.968" y1="276.428" x2="524.018" y2="284.94"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 523.468,290.552 A 2.85458,2.85458 0 1 0 523.268,285.314"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.092" y1="290.428" x2="524.018" y2="300.814"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="523.018" y1="301.064" x2="587.082" y2="301.086"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 523.592,277.052 A 2.75461,2.75461 0 1 0 523.532,271.844"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.092" y1="265.928" x2="524.112" y2="272.01"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 588.412,300.73 A 1.59075,1.59075 0 1 0 586.586,300.572"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="588.398" y1="301.28" x2="639.712" y2="301.246"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="639.184" y1="276.524" x2="639.236" y2="285.036"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 639.686,285.708 A 2.45826,2.45826 0 1 0 639.562,290.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="639.31" y1="290.524" x2="639.236" y2="300.912"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 639.624,271.69 A 2.71436,2.71436 0 1 0 639.684,276.9"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="639.31" y1="266.024" x2="639.328" y2="272.106"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.342" y1="266.428" x2="639.588" y2="266.248"/> + <line style="fill: none; fill-opacity:0; stroke-width: 5; stroke-dasharray: 2; stroke: #ffff00" x1="527.484" y1="296.536" x2="583.402" y2="296.536"/> + <line style="fill: none; fill-opacity:0; stroke-width: 5; stroke-dasharray: 2; stroke: #ffff00" x1="590.924" y1="297.192" x2="636.974" y2="296.98"/> + <g> + <rect style="fill: #7f7f7f" x="532.968" y="271.928" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="532.968" y="271.928" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="547.104" y="272.116" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="547.104" y="272.116" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="561.104" y="272.49" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="561.104" y="272.49" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="591.87" y="272.288" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="591.87" y="272.288" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="619.752" y="272.214" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="619.752" y="272.214" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="575.056" y="272.378" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="575.056" y="272.378" width="11" height="11.375"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="630.752" y1="277.901" x2="532.968" y2="277.615"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="532.968" y1="277.615" x2="528.468" y2="268.928"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="581.84" y1="268.928" x2="528.468" y2="268.928"/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="555.916" y1="277.724" x2="628.548" y2="277.853"/> + <polygon style="fill: #0000ff" points="631.548,277.858 627.544,279.851 628.548,277.853 627.551,275.851 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="631.548,277.858 627.544,279.851 628.548,277.853 627.551,275.851 "/> + </g> + <g> + <g> + <rect style="fill: #d8e5e5" x="513.288" y="379.724" width="140.783" height="23.2545"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #d8e5e5" x="513.288" y="379.724" width="140.783" height="23.2545"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="515.694" y="380.566" width="135.628" height="18.6667"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="515.694" y="380.566" width="135.628" height="18.6667"/> + </g> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="545.96" y="391.512"> + <tspan x="545.96" y="391.512">Memory controller hub</tspan> + </text> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="537.032" y1="286.848" x2="537.217" y2="345.136"/> + <polygon style="fill: #ff0000" points="537.227,348.136 535.214,344.142 537.217,345.136 539.214,344.13 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="537.227,348.136 535.214,344.142 537.217,345.136 539.214,344.13 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="582.406" y1="375.294" x2="582.288" y2="272.226"/> + <polygon style="fill: #0000ff" points="582.286,269.976 583.789,272.974 582.288,272.226 580.789,272.978 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="582.286,269.976 583.789,272.974 582.288,272.226 580.789,272.978 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="516.985" y1="285.424" x2="516.985" y2="347.255"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="514.485,343.373 516.985,348.373 519.485,343.373 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="651.445" y1="257.685" x2="651.494" y2="377.401"/> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="592.662" y1="257.987" x2="651.662" y2="257.889"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="596.54,255.481 591.544,257.989 596.548,260.481 "/> + </g> + <text font-size="6.77323" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="622.868" y="254.719"> + <tspan x="622.868" y="254.719">tCLK</tspan> + </text> + <text font-size="6.77323" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="493.344" y="318.652"> + <tspan x="493.344" y="318.652">tLane</tspan> + </text> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="605.148" y="256.355"> + <tspan x="605.148" y="256.355"></tspan> + </text> + <text font-size="6.77323" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="597.514" y="315.788"> + <tspan x="597.514" y="315.788">tCLKskew</tspan> + </text> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="628.811" y1="306.792" x2="534.906" y2="306.846"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="624.93,309.294 629.929,306.792 624.928,304.294 "/> + </g> + <text font-size="6.77323" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="534.03" y="248.574"> + <tspan x="534.03" y="248.574">tCASlatency</tspan> + </text> + <g> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 532.084,294.25 A 18.7296,18.7296 0 1 0 532.596,257.684"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="535.456,253.95 531.509,257.909 537.044,258.691 "/> + </g> + <g> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 523.142,262.604 A 18.831,18.831 0 0 0 532.59,294.242"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="521.574,266.887 523.922,261.813 518.455,262.98 "/> + </g> +</svg> diff --git a/Documentation/getting_started/ram_initialization/ddr3_flyby.md b/Documentation/getting_started/ram_initialization/ddr3_flyby.md new file mode 100644 index 0000000..fc6f7a7 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/ddr3_flyby.md @@ -0,0 +1,36 @@ +# DDR3 Flyby technology + +# DDR3 vs DDR2 +To ease the DIMM routing at high frequencies, the "fly-by" topology has been +introduced starting with DDR3. +It's called "fly-by" as CLK and CMD is routed below the ICs in a daisy chain and +it includes very short stubs to each memory device in the chain to reduce the +reflections. As every DIMM only needs to terminate the line once at end of PCB, +the DC resistance is much lower as on DDR2 "tree" routing topology, which did +terminate on every IC. + +The disadvantage of "fly-by" is the more complex memory training that needs to +be done to find the DATA lane skew. + +After the skew has been measured, the DATA lanes needs to be delayed by the +memory controller, to make sure all signals are still synchronous to the CLK, +as seen be the memory controller (on READ) or the DRAM (on WRITE). + +![][flyby] + +[flyby]: ddr3_vs_ddr2.svg + +```eval_rst ++---------------------------+------------+----------------+ +| Feature | DDR2 | DDR3 | ++===========================+============+================+ +| Frequency | 200-533 | 400-800 | ++---------------------------+------------+----------------+ +| Routing | complex | easy | ++---------------------------+------------+----------------+ +| Termination DC resistance | very high | low | ++---------------------------+------------+----------------+ +| Memory training | easy | complex | ++---------------------------+------------+----------------+ +``` + diff --git a/Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.dia b/Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.dia new file mode 100644 index 0000000..e4b4d09 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.svg b/Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.svg new file mode 100644 index 0000000..0b8db34 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.svg @@ -0,0 +1,298 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="17cm" height="10cm" viewBox="507 221 325 192" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="508.366" y="221.748" width="323.85" height="190.069"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #ffffff" x="508.366" y="221.748" width="323.85" height="190.069"/> + </g> + <text font-size="5.64436" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="520.722" y="358.926"> + <tspan x="520.722" y="358.926">DATA</tspan> + </text> + <text font-size="5.64436" style="fill: #0000ff;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="566.719" y="358.974"> + <tspan x="566.719" y="358.974">CLK</tspan> + </text> + <g> + <rect style="fill: #00c800" x="525.92" y="295.53" width="59.4543" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="525.92" y="295.53" width="59.4543" height="3.5"/> + </g> + <g> + <rect style="fill: #00c800" x="590.745" y="296.234" width="47.7848" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="590.745" y="296.234" width="47.7848" height="3.5"/> + </g> + <g> + <rect style="fill: #00c800" x="525.684" y="292.178" width="112.392" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="525.684" y="292.178" width="112.392" height="3.5"/> + </g> + <g> + <rect style="fill: #00c800" x="525.104" y="278.49" width="113.813" height="5.9375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="525.104" y="278.49" width="113.813" height="5.9375"/> + </g> + <g> + <rect style="fill: #00c800" x="525.854" y="267.74" width="112.858" height="2.8125"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="525.854" y="267.74" width="112.858" height="2.8125"/> + </g> + <g> + <rect style="fill: #00c800" x="528.468" y="268.928" width="106.744" height="22.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="528.468" y="268.928" width="106.744" height="22.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="605.712" y="272.198" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="605.712" y="272.198" width="11" height="11.375"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="523.968" y1="276.428" x2="524.018" y2="284.94"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 523.468,290.552 A 2.85458,2.85458 0 1 0 523.268,285.314"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.092" y1="290.428" x2="524.018" y2="300.814"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="523.018" y1="301.064" x2="587.083" y2="301.087"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 523.592,277.052 A 2.75461,2.75461 0 1 0 523.532,271.844"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.092" y1="265.928" x2="524.112" y2="272.01"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 588.412,300.729 A 1.59075,1.59075 0 1 0 586.586,300.571"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="588.398" y1="301.28" x2="639.712" y2="301.247"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="639.185" y1="276.524" x2="639.237" y2="285.036"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 639.687,285.708 A 2.45826,2.45826 0 1 0 639.563,290.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="639.311" y1="290.524" x2="639.237" y2="300.912"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 639.625,271.69 A 2.71436,2.71436 0 1 0 639.685,276.9"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="639.311" y1="266.024" x2="639.329" y2="272.106"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.342" y1="266.428" x2="639.587" y2="266.247"/> + <line style="fill: none; fill-opacity:0; stroke-width: 5; stroke-dasharray: 2; stroke: #ffff00" x1="527.484" y1="296.536" x2="583.402" y2="296.536"/> + <line style="fill: none; fill-opacity:0; stroke-width: 5; stroke-dasharray: 2; stroke: #ffff00" x1="590.924" y1="297.191" x2="638.826" y2="297.141"/> + <g> + <rect style="fill: #7f7f7f" x="532.968" y="271.928" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="532.968" y="271.928" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="547.104" y="272.116" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="547.104" y="272.116" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="561.104" y="272.49" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="561.104" y="272.49" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="591.87" y="272.288" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="591.87" y="272.288" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="619.753" y="272.214" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="619.753" y="272.214" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="575.056" y="272.377" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="575.056" y="272.377" width="11" height="11.375"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="630.753" y1="277.902" x2="532.968" y2="277.616"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="532.968" y1="277.616" x2="528.468" y2="268.928"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="581.84" y1="268.928" x2="528.468" y2="268.928"/> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="532.968" y1="277.616" x2="628.549" y2="277.848"/> + <polygon style="fill: #0000ff" points="631.549,277.856 627.544,279.846 628.549,277.848 627.554,275.846 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="631.549,277.856 627.544,279.846 628.549,277.848 627.554,275.846 "/> + </g> + <g> + <g> + <rect style="fill: #d8e5e5" x="513.289" y="379.723" width="140.783" height="23.2545"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #d8e5e5" x="513.289" y="379.723" width="140.783" height="23.2545"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="515.693" y="380.566" width="135.628" height="18.6667"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="515.693" y="380.566" width="135.628" height="18.6667"/> + </g> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="545.961" y="391.512"> + <tspan x="545.961" y="391.512">Memory controller hub</tspan> + </text> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="537.033" y1="286.847" x2="537.217" y2="345.136"/> + <polygon style="fill: #ff0000" points="537.226,348.136 535.213,344.142 537.217,345.136 539.213,344.129 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="537.226,348.136 535.213,344.142 537.217,345.136 539.213,344.129 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="552.506" y1="287.367" x2="552.293" y2="335.112"/> + <polygon style="fill: #ff0000" points="552.279,338.112 550.297,334.103 552.293,335.112 554.297,334.121 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="552.279,338.112 550.297,334.103 552.293,335.112 554.297,334.121 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="567.185" y1="286.788" x2="567.121" y2="327.015"/> + <polygon style="fill: #ff0000" points="567.116,330.015 565.122,326.012 567.121,327.015 569.122,326.018 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="567.116,330.015 565.122,326.012 567.121,327.015 569.122,326.018 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="578.257" y1="287.562" x2="578.181" y2="317.762"/> + <polygon style="fill: #ff0000" points="578.173,320.762 576.183,316.757 578.181,317.762 580.183,316.767 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="578.173,320.762 576.183,316.757 578.181,317.762 580.183,316.767 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="610.931" y1="286.9" x2="610.74" y2="303.305"/> + <polygon style="fill: #ff0000" points="610.705,306.305 608.752,302.282 610.74,303.305 612.751,302.328 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="610.705,306.305 608.752,302.282 610.74,303.305 612.751,302.328 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="597.62" y1="286.488" x2="597.737" y2="309.859"/> + <polygon style="fill: #ff0000" points="597.752,312.859 595.732,308.869 597.737,309.859 599.732,308.849 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="597.752,312.859 595.732,308.869 597.737,309.859 599.732,308.849 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="625.292" y1="286.497" x2="625.457" y2="299.835"/> + <polygon style="fill: #ff0000" points="625.494,302.835 623.445,298.86 625.457,299.835 627.445,298.81 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="625.494,302.835 623.445,298.86 625.457,299.835 627.445,298.81 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="582.406" y1="375.294" x2="582.288" y2="272.226"/> + <polygon style="fill: #0000ff" points="582.286,269.976 583.789,272.975 582.288,272.226 580.789,272.978 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="582.286,269.976 583.789,272.975 582.288,272.226 580.789,272.978 "/> + </g> + <text font-size="5.64436" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="697.16" y="329.369"> + <tspan x="697.16" y="329.369">DATA</tspan> + </text> + <text font-size="5.64436" style="fill: #0000ff;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="736.41" y="358.139"> + <tspan x="736.41" y="358.139">CLK</tspan> + </text> + <g> + <g> + <rect style="fill: #d8e5e5" x="682.98" y="378.888" width="140.783" height="23.2545"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #d8e5e5" x="682.98" y="378.888" width="140.783" height="23.2545"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="685.384" y="379.731" width="135.628" height="18.6667"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="685.384" y="379.731" width="135.628" height="18.6667"/> + </g> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="715.652" y="390.678"> + <tspan x="715.652" y="390.678">Memory controller hub</tspan> + </text> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke-dasharray: 20 4 4 4 4 4; stroke: #d2d2d2" x1="669.52" y1="225.989" x2="669.05" y2="404.565"/> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="543.127" y="236.536"> + <tspan x="543.127" y="236.536">DDR3 "FlyBy"</tspan> + </text> + <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="714.371" y="236.536"> + <tspan x="714.371" y="236.536">DDR2 "T-Tree"</tspan> + </text> + <g> + <rect style="fill: #00c800" x="695.451" y="295.221" width="80.846" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="695.451" y="295.221" width="80.846" height="3.5"/> + </g> + <g> + <rect style="fill: #00c800" x="780.483" y="295.399" width="27.3176" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="780.483" y="295.399" width="27.3176" height="3.5"/> + </g> + <g> + <rect style="fill: #00c800" x="695.375" y="291.343" width="112.392" height="3.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="695.375" y="291.343" width="112.392" height="3.5"/> + </g> + <g> + <rect style="fill: #00c800" x="694.795" y="277.655" width="113.813" height="5.9375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="694.795" y="277.655" width="113.813" height="5.9375"/> + </g> + <g> + <rect style="fill: #00c800" x="695.545" y="266.905" width="112.858" height="2.8125"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="695.545" y="266.905" width="112.858" height="2.8125"/> + </g> + <g> + <rect style="fill: #00c800" x="698.159" y="268.093" width="106.744" height="22.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 3; stroke: #00c800" x="698.159" y="268.093" width="106.744" height="22.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="775.403" y="271.363" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="775.403" y="271.363" width="11" height="11.375"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="693.659" y1="275.593" x2="693.709" y2="284.105"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 693.159,289.717 A 2.85458,2.85458 0 1 0 692.959,284.479"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="693.783" y1="289.593" x2="693.709" y2="299.979"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="692.394" y1="300.124" x2="777.856" y2="300.209"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 693.283,276.217 A 2.75461,2.75461 0 1 0 693.223,271.009"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="693.783" y1="265.093" x2="693.803" y2="271.175"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 779.334,300.21 A 1.59075,1.59075 0 1 0 777.508,300.052"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="779.537" y1="300.419" x2="809.403" y2="300.412"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="808.876" y1="275.689" x2="808.928" y2="284.201"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 809.378,284.873 A 2.45826,2.45826 0 1 0 809.254,289.249"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="809.002" y1="289.689" x2="808.928" y2="300.077"/> + <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 809.316,270.855 A 2.71436,2.71436 0 1 0 809.376,276.065"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="809.002" y1="265.189" x2="809.02" y2="271.271"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="694.033" y1="265.593" x2="809.278" y2="265.412"/> + <line style="fill: none; fill-opacity:0; stroke-width: 5; stroke-dasharray: 2; stroke: #ffff00" x1="696.712" y1="296.425" x2="775.858" y2="296.53"/> + <line style="fill: none; fill-opacity:0; stroke-width: 5; stroke-dasharray: 2; stroke: #ffff00" x1="783.426" y1="296.53" x2="806.665" y2="296.145"/> + <g> + <rect style="fill: #7f7f7f" x="702.659" y="271.093" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="702.659" y="271.093" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="716.795" y="271.281" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="716.795" y="271.281" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="730.795" y="271.655" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="730.795" y="271.655" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="761.561" y="271.453" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="761.561" y="271.453" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="789.444" y="271.38" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="789.444" y="271.38" width="11" height="11.375"/> + </g> + <g> + <rect style="fill: #7f7f7f" x="744.747" y="271.542" width="11" height="11.375"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="744.747" y="271.542" width="11" height="11.375"/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="756.383" y1="373.527" x2="756.436" y2="296.635"/> + <polygon style="fill: #0000ff" points="756.438,294.385 757.936,297.386 756.436,296.635 754.936,297.384 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="756.438,294.385 757.936,297.386 756.436,296.635 754.936,297.384 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="706.354" y1="285.763" x2="706.291" y2="314.994"/> + <polygon style="fill: #ff0000" points="706.285,317.994 704.293,313.99 706.291,314.994 708.293,313.998 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="706.285,317.994 704.293,313.99 706.291,314.994 708.293,313.998 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="718.839" y1="286.204" x2="718.814" y2="315.379"/> + <polygon style="fill: #ff0000" points="718.812,318.379 716.815,314.378 718.814,315.379 720.815,314.381 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="718.812,318.379 716.815,314.378 718.814,315.379 720.815,314.381 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="732.803" y1="286.373" x2="732.707" y2="314.416"/> + <polygon style="fill: #ff0000" points="732.697,317.415 730.711,313.409 732.707,314.416 734.711,313.422 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="732.697,317.415 730.711,313.409 732.707,314.416 734.711,313.422 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="746.761" y1="286.195" x2="746.761" y2="314.608"/> + <polygon style="fill: #ff0000" points="746.761,317.608 744.761,313.608 746.761,314.608 748.761,313.608 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="746.761,317.608 744.761,313.608 746.761,314.608 748.761,313.608 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="765.327" y1="285.868" x2="765.276" y2="314.415"/> + <polygon style="fill: #ff0000" points="765.271,317.415 763.278,313.412 765.276,314.415 767.278,313.419 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="765.271,317.415 763.278,313.412 765.276,314.415 767.278,313.419 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="778.244" y1="285.987" x2="778.031" y2="312.874"/> + <polygon style="fill: #ff0000" points="778.007,315.873 776.039,311.858 778.031,312.874 780.039,311.889 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="778.007,315.873 776.039,311.858 778.031,312.874 780.039,311.889 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" x1="791.756" y1="285.957" x2="791.851" y2="314.223"/> + <polygon style="fill: #ff0000" points="791.861,317.223 789.848,313.23 791.851,314.223 793.848,313.216 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff0000" points="791.861,317.223 789.848,313.23 791.851,314.223 793.848,313.216 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="708.264" y1="282.275" x2="708.264" y2="288.058"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="722.046" y1="282.351" x2="722.046" y2="288.134"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="735.539" y1="282.351" x2="735.539" y2="288.134"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="749.785" y1="282.312" x2="749.785" y2="288.095"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="767.5" y1="282.274" x2="767.5" y2="288.057"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="781.553" y1="282.428" x2="781.553" y2="288.211"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="795.606" y1="282.582" x2="795.606" y2="288.365"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="708.457" y1="287.672" x2="722.143" y2="287.672"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="735.623" y1="287.718" x2="750.042" y2="287.718"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="767.39" y1="287.677" x2="781.848" y2="287.773"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="715.15" y1="288.062" x2="715.246" y2="290.954"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="742.832" y1="287.718" x2="742.741" y2="290.68"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="774.619" y1="287.725" x2="774.827" y2="290.757"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="795.54" y1="287.846" x2="795.636" y2="290.738"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="715.343" y1="290.761" x2="742.909" y2="290.761"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="774.812" y1="290.665" x2="795.735" y2="290.664"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="785.274" y1="290.664" x2="785.51" y2="293.845"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="729.126" y1="290.761" x2="729.126" y2="293.845"/> + <line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #0000ff" x1="729.038" y1="293.651" x2="785.607" y2="293.556"/> + </g> +</svg> diff --git a/Documentation/getting_started/ram_initialization/index.md b/Documentation/getting_started/ram_initialization/index.md new file mode 100644 index 0000000..60f62cd --- /dev/null +++ b/Documentation/getting_started/ram_initialization/index.md @@ -0,0 +1,4 @@ +# DDR3 RAM initialization + +* [DDR3 Flyby](ddr3_flyby.md) +* [Read training](readtraining.md) diff --git a/Documentation/getting_started/ram_initialization/read_training.dia b/Documentation/getting_started/ram_initialization/read_training.dia new file mode 100644 index 0000000..ca6d57d --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/read_training.svg b/Documentation/getting_started/ram_initialization/read_training.svg new file mode 100644 index 0000000..e4e80fe --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training.svg @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="67cm" height="27cm" viewBox="220 168 1336 523" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="221.668" y="169.664" width="1333.84" height="520.893"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ffffff" x="221.668" y="169.664" width="1333.84" height="520.893"/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="292.984" y1="212.792" x2="294.096" y2="589.426"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="298.001,218.305 292.971,208.32 288.001,218.335 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="268.524" y1="573.888" x2="1518.9" y2="573.604"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="1508.37,581.106 1523.37,573.603 1508.37,566.106 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="738.41" y1="556.913" x2="897.394" y2="556.85"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="900.058" y1="504.88" x2="997.584" y2="505.07"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="897.402" y1="555.046" x2="899.694" y2="504.612"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="997.56" y1="504.9" x2="1095.09" y2="505.09"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1094.86" y1="505.548" x2="1095.77" y2="553.92"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1190.95" y1="503.604" x2="1288.47" y2="503.794"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1188.29" y1="553.77" x2="1190.58" y2="503.336"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1288.24" y1="504.252" x2="1289.16" y2="552.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1289.23" y1="551.958" x2="1381.38" y2="552.178"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1384.18" y1="501.792" x2="1481.7" y2="501.982"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1381.52" y1="551.958" x2="1383.81" y2="501.524"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1481.48" y1="502.44" x2="1482.39" y2="550.812"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1095.61" y1="553.17" x2="1188.43" y2="553.574"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="732.775" y1="548.594" x2="727.273" y2="563.722"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="742.829" y1="548.983" x2="737.557" y2="563.655"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="309.156" y1="556.582" x2="728.93" y2="556.427"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="306.966" y1="300.802" x2="399.118" y2="301.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="401.914" y1="250.636" x2="499.44" y2="250.826"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="399.258" y1="300.802" x2="401.552" y2="250.366"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="499.212" y1="251.284" x2="500.128" y2="299.656"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="500.608" y1="299.688" x2="592.76" y2="299.908"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="595.556" y1="249.52" x2="693.082" y2="249.71"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="592.9" y1="299.686" x2="595.192" y2="249.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="692.854" y1="250.17" x2="693.77" y2="298.54"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="693.994" y1="298.392" x2="734.156" y2="298.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="788.942" y1="248.226" x2="886.468" y2="248.414"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="786.286" y1="298.392" x2="788.578" y2="247.956"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="886.238" y1="248.874" x2="887.156" y2="297.246"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="887.226" y1="296.578" x2="979.378" y2="296.8"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="982.176" y1="246.412" x2="1079.7" y2="246.602"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="979.52" y1="296.578" x2="981.812" y2="246.144"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="745.406" y1="297.874" x2="786.432" y2="298.194"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="736.77" y1="291.984" x2="732.544" y2="304.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="746.072" y1="291.968" x2="741.846" y2="304.236"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1076.66" y1="249.354" x2="1077.58" y2="297.726"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1077.65" y1="297.06" x2="1169.8" y2="297.28"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1172.6" y1="246.894" x2="1270.12" y2="247.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1169.94" y1="297.06" x2="1172.23" y2="246.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1271.3" y1="248.752" x2="1272.22" y2="297.124"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1272.29" y1="296.458" x2="1364.44" y2="296.678"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1367.24" y1="246.292" x2="1464.77" y2="246.48"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1364.58" y1="296.458" x2="1366.88" y2="246.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1464.54" y1="246.94" x2="1465.45" y2="295.312"/> + <text font-size="17.3172" style="fill: #0000ff;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="233.512" y="271.172"> + <tspan x="233.512" y="271.172">CLK</tspan> + </text> + <text font-size="16.9333" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="234.006" y="371.06"> + <tspan x="234.006" y="371.06">CMD</tspan> + </text> + <text font-size="16.9333" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.196" y="532.752"> + <tspan x="232.196" y="532.752">DQS0</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1520.43" y="602.922"> + <tspan x="1520.43" y="602.922">time</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.768" y="207.386"> + <tspan x="232.768" y="207.386">voltage</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="592.218" y1="305.306" x2="592.626" y2="664.008"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="898.643" y1="482.22" x2="899.513" y2="659.956"/> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="606.164" y1="654.895" x2="885.883" y2="655.224"/> + <polygon style="fill: #000000" points="606.17,649.895 596.164,654.883 606.158,659.895 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="606.17,649.895 596.164,654.883 606.158,659.895 "/> + <polygon style="fill: #000000" points="885.877,660.224 895.883,655.235 885.889,650.224 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="885.877,660.224 895.883,655.235 885.889,650.224 "/> + </g> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="632.62" y="673.908"> + <tspan x="632.62" y="673.908">tCAS_latency + tCLK + tCLKflyby0 + tLane0</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="738.358" y1="483.327" x2="831.805" y2="483.273"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="834.298" y1="430.874" x2="931.824" y2="431.064"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="831.642" y1="481.042" x2="833.936" y2="430.606"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="931.8" y1="430.896" x2="1029.33" y2="431.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1029.1" y1="431.544" x2="1030.01" y2="479.914"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1125.19" y1="429.6" x2="1222.71" y2="429.79"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1122.53" y1="479.766" x2="1124.82" y2="429.33"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1222.48" y1="430.248" x2="1223.4" y2="478.62"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1223.47" y1="477.954" x2="1315.62" y2="478.174"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1318.42" y1="427.786" x2="1415.95" y2="427.976"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1315.76" y1="477.952" x2="1318.06" y2="427.518"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1415.72" y1="428.436" x2="1416.63" y2="476.806"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1029.85" y1="479.164" x2="1122.68" y2="479.57"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="309.156" y1="484.086" x2="728.584" y2="484.125"/> + <text font-size="16.9333" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="230.072" y="467.94"> + <tspan x="230.072" y="467.94">DQS1</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="731.334" y1="476.56" x2="725.834" y2="491.69"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="740.272" y1="476.058" x2="735" y2="490.73"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="526.645" y1="329.604" x2="624.171" y2="329.794"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="523.989" y1="379.77" x2="526.281" y2="329.336"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="623.941" y1="330.252" x2="624.857" y2="378.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="524.227" y1="380.428" x2="308.145" y2="381.272"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="735.188" y1="376.55" x2="1484.09" y2="376.908"/> + <text font-size="12.8" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="552.789" y="363.894"> + <tspan x="552.789" y="363.894">READ</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="730.147" y1="369.892" x2="725.921" y2="382.16"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="737.301" y1="370.416" x2="733.075" y2="382.684"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="624.705" y1="377.064" x2="728.034" y2="376.026"/> + <text font-size="22.5778" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="726.112" y="207.363"> + <tspan x="726.112" y="207.363">DDR3 Read Command as seen by MCH</tspan> + </text> +</svg> diff --git a/Documentation/getting_started/ram_initialization/read_training2.dia b/Documentation/getting_started/ram_initialization/read_training2.dia new file mode 100644 index 0000000..d66f54d --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training2.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/read_training2.svg b/Documentation/getting_started/ram_initialization/read_training2.svg new file mode 100644 index 0000000..8030d1d --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training2.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="67cm" height="27cm" viewBox="222 142 1336 523" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="223.731" y="143.514" width="1333.84" height="520.893"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ffffff" x="223.731" y="143.514" width="1333.84" height="520.893"/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="292.984" y1="212.792" x2="294.096" y2="589.426"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="298.001,218.305 292.971,208.32 288.001,218.335 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="268.524" y1="573.888" x2="1518.9" y2="573.604"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="1508.37,581.106 1523.37,573.603 1508.37,566.106 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="738.41" y1="556.913" x2="979.69" y2="556.795"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="981.057" y1="502.88" x2="1078.58" y2="503.07"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="979.401" y1="554.046" x2="981.693" y2="503.612"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1078.56" y1="502.9" x2="1176.08" y2="503.09"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1175.85" y1="503.548" x2="1176.77" y2="551.92"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1271.94" y1="501.604" x2="1369.47" y2="501.794"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1269.29" y1="551.77" x2="1271.58" y2="501.336"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1369.24" y1="502.252" x2="1370.16" y2="550.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1370.23" y1="549.958" x2="1462.38" y2="550.178"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1462.52" y1="549.958" x2="1464.81" y2="499.524"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1176.6" y1="551.17" x2="1269.43" y2="551.574"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="732.775" y1="548.594" x2="727.273" y2="563.722"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="742.829" y1="548.983" x2="737.557" y2="563.655"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="309.156" y1="556.582" x2="728.93" y2="556.427"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="306.966" y1="300.802" x2="399.118" y2="301.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="401.914" y1="250.636" x2="499.44" y2="250.826"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="399.258" y1="300.802" x2="401.552" y2="250.366"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="499.212" y1="251.284" x2="500.128" y2="299.656"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="500.608" y1="299.688" x2="592.76" y2="299.908"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="595.556" y1="249.52" x2="693.082" y2="249.71"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="592.9" y1="299.686" x2="595.192" y2="249.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="692.854" y1="250.17" x2="693.77" y2="298.54"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="693.994" y1="298.392" x2="734.156" y2="298.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="788.942" y1="248.226" x2="886.468" y2="248.414"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="786.286" y1="298.392" x2="788.578" y2="247.956"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="886.238" y1="248.874" x2="887.156" y2="297.246"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="887.226" y1="296.578" x2="979.378" y2="296.8"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="982.176" y1="246.412" x2="1079.7" y2="246.602"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="979.52" y1="296.578" x2="981.812" y2="246.144"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="745.406" y1="297.874" x2="786.432" y2="298.194"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="736.77" y1="291.984" x2="732.544" y2="304.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="746.072" y1="291.968" x2="741.846" y2="304.236"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1076.66" y1="249.354" x2="1077.58" y2="297.726"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1077.65" y1="297.06" x2="1169.8" y2="297.28"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1172.6" y1="246.894" x2="1270.12" y2="247.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1169.94" y1="297.06" x2="1172.23" y2="246.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1271.3" y1="248.752" x2="1272.22" y2="297.124"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1272.29" y1="296.458" x2="1364.44" y2="296.678"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1367.24" y1="246.292" x2="1464.77" y2="246.48"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1364.58" y1="296.458" x2="1366.88" y2="246.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1464.54" y1="246.94" x2="1465.45" y2="295.312"/> + <text font-size="17.3172" style="fill: #0000ff;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="233.512" y="271.172"> + <tspan x="233.512" y="271.172">CLK</tspan> + </text> + <text font-size="16.9333" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="234.006" y="371.06"> + <tspan x="234.006" y="371.06">CMD</tspan> + </text> + <text font-size="16.9333" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.196" y="532.752"> + <tspan x="232.196" y="532.752">DQS0</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1520.43" y="602.922"> + <tspan x="1520.43" y="602.922">time</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.768" y="207.386"> + <tspan x="232.768" y="207.386">voltage</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="833.214" y1="240.307" x2="833.307" y2="508.923"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="886.644" y1="240.224" x2="885.306" y2="504.923"/> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="835.159" y1="330.889" x2="874.538" y2="357.135"/> + <polygon style="fill: #000000" points="871.764,361.296 882.859,362.682 877.311,352.975 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="871.764,361.296 882.859,362.682 877.311,352.975 "/> + </g> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="841.737" y="328.975"> + <tspan x="841.737" y="328.975">delay</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="738.358" y1="483.327" x2="884.33" y2="483.68"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="886.297" y1="430.874" x2="983.823" y2="431.064"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="883.641" y1="481.042" x2="885.935" y2="430.606"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="983.799" y1="430.896" x2="1081.33" y2="431.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1081.1" y1="431.544" x2="1082.01" y2="479.914"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1177.19" y1="429.6" x2="1274.71" y2="429.79"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1174.53" y1="479.766" x2="1176.82" y2="429.33"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1274.48" y1="430.248" x2="1275.4" y2="478.62"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1275.47" y1="477.954" x2="1367.62" y2="478.174"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1370.42" y1="427.786" x2="1467.95" y2="427.976"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1367.76" y1="477.952" x2="1370.06" y2="427.518"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1467.72" y1="428.436" x2="1468.63" y2="476.806"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1081.85" y1="479.164" x2="1174.68" y2="479.57"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="309.156" y1="484.086" x2="728.584" y2="484.125"/> + <text font-size="16.9333" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="230.072" y="467.94"> + <tspan x="230.072" y="467.94">DQS1</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="731.334" y1="476.56" x2="725.834" y2="491.69"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="740.272" y1="476.058" x2="735" y2="490.73"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="526.645" y1="329.604" x2="624.171" y2="329.794"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="523.989" y1="379.77" x2="526.281" y2="329.336"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="623.941" y1="330.252" x2="624.857" y2="378.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="524.227" y1="380.428" x2="308.145" y2="381.272"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="735.188" y1="376.55" x2="1484.09" y2="376.908"/> + <text font-size="12.8" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="552.789" y="363.894"> + <tspan x="552.789" y="363.894">READ</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="730.147" y1="369.892" x2="725.921" y2="382.16"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="737.301" y1="370.416" x2="733.075" y2="382.684"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="624.705" y1="377.064" x2="728.034" y2="376.026"/> + <text font-size="22.5778" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="726.112" y="207.363"> + <tspan x="726.112" y="207.363">DDR3 Read Command with phase delay</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="980.768" y1="234.969" x2="980.768" y2="568.962"/> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="919.084" y="329.179"> + <tspan x="919.084" y="329.179">delay</tspan> + </text> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="905.281" y1="332.393" x2="969.546" y2="360.666"/> + <polygon style="fill: #000000" points="967.532,365.243 978.699,364.693 971.559,356.09 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="967.532,365.243 978.699,364.693 971.559,356.09 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="903.891" y1="228.062" x2="903.891" y2="562.055"/> +</svg> diff --git a/Documentation/getting_started/ram_initialization/read_training3.dia b/Documentation/getting_started/ram_initialization/read_training3.dia new file mode 100644 index 0000000..59f8eb0 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training3.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/read_training3.svg b/Documentation/getting_started/ram_initialization/read_training3.svg new file mode 100644 index 0000000..d6fe07b --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training3.svg @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="67cm" height="27cm" viewBox="226 148 1336 523" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="227.346" y="149.076" width="1333.84" height="520.893"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ffffff" x="227.346" y="149.076" width="1333.84" height="520.893"/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="292.984" y1="212.792" x2="294.096" y2="589.426"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="298.001,218.305 292.971,208.32 288.001,218.335 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="268.524" y1="573.888" x2="1518.9" y2="573.604"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="1508.37,581.106 1523.37,573.603 1508.37,566.106 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="738.41" y1="556.913" x2="979.69" y2="556.795"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="981.057" y1="502.88" x2="1078.58" y2="503.07"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="979.401" y1="554.046" x2="981.693" y2="503.612"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1078.56" y1="502.9" x2="1176.08" y2="503.09"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1175.85" y1="503.548" x2="1176.77" y2="551.92"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1271.94" y1="501.604" x2="1369.47" y2="501.794"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1269.29" y1="551.77" x2="1271.58" y2="501.336"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1369.24" y1="502.252" x2="1370.16" y2="550.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1370.23" y1="549.958" x2="1462.38" y2="550.178"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1462.52" y1="549.958" x2="1464.81" y2="499.524"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1176.6" y1="551.17" x2="1269.43" y2="551.574"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="732.775" y1="548.594" x2="727.273" y2="563.722"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="742.829" y1="548.983" x2="737.557" y2="563.655"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="309.156" y1="556.582" x2="728.93" y2="556.427"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="306.966" y1="300.802" x2="399.118" y2="301.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="401.914" y1="250.636" x2="499.44" y2="250.826"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="399.258" y1="300.802" x2="401.552" y2="250.366"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="499.212" y1="251.284" x2="500.128" y2="299.656"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="500.608" y1="299.688" x2="592.76" y2="299.908"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="595.556" y1="249.52" x2="693.082" y2="249.71"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="592.9" y1="299.686" x2="595.192" y2="249.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="692.854" y1="250.17" x2="693.77" y2="298.54"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="693.994" y1="298.392" x2="734.156" y2="298.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="788.942" y1="248.226" x2="886.468" y2="248.414"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="786.286" y1="298.392" x2="788.578" y2="247.956"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="886.238" y1="248.874" x2="887.156" y2="297.246"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="887.226" y1="296.578" x2="979.378" y2="296.8"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="982.176" y1="246.412" x2="1079.7" y2="246.602"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="979.52" y1="296.578" x2="981.812" y2="246.144"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="745.406" y1="297.874" x2="786.432" y2="298.194"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="736.77" y1="291.984" x2="732.544" y2="304.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="746.072" y1="291.968" x2="741.846" y2="304.236"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1076.66" y1="249.354" x2="1077.58" y2="297.726"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1077.65" y1="297.06" x2="1169.8" y2="297.28"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1172.6" y1="246.894" x2="1270.12" y2="247.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1169.94" y1="297.06" x2="1172.23" y2="246.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1271.3" y1="248.752" x2="1272.22" y2="297.124"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1272.29" y1="296.458" x2="1364.44" y2="296.678"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1367.24" y1="246.292" x2="1464.77" y2="246.48"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1364.58" y1="296.458" x2="1366.88" y2="246.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1464.54" y1="246.94" x2="1465.45" y2="295.312"/> + <text font-size="17.3172" style="fill: #0000ff;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="233.512" y="271.172"> + <tspan x="233.512" y="271.172">CLK</tspan> + </text> + <text font-size="16.9333" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="234.006" y="371.06"> + <tspan x="234.006" y="371.06">CMD</tspan> + </text> + <text font-size="16.9333" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.196" y="532.752"> + <tspan x="232.196" y="532.752">DQS0</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1520.43" y="602.922"> + <tspan x="1520.43" y="602.922">time</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.768" y="207.386"> + <tspan x="232.768" y="207.386">voltage</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="982.032" y1="238.183" x2="982.125" y2="506.798"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="886.644" y1="240.224" x2="885.306" y2="504.923"/> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="886.821" y1="329.347" x2="973.084" y2="354.108"/> + <polygon style="fill: #000000" points="971.705,358.914 982.696,356.867 974.464,349.302 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="971.705,358.914 982.696,356.867 974.464,349.302 "/> + </g> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="913.448" y="325.12"> + <tspan x="913.448" y="325.12">delay</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="738.358" y1="483.327" x2="983.194" y2="483.574"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="984.854" y1="429.577" x2="1082.38" y2="429.767"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="982.198" y1="479.745" x2="984.492" y2="429.309"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1082.36" y1="429.599" x2="1179.88" y2="429.787"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1179.65" y1="430.247" x2="1180.57" y2="478.617"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1275.74" y1="428.303" x2="1373.27" y2="428.493"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1273.09" y1="478.469" x2="1275.38" y2="428.033"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1373.04" y1="428.951" x2="1373.96" y2="477.323"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1374.03" y1="476.657" x2="1466.18" y2="476.877"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1466.32" y1="476.655" x2="1468.61" y2="426.221"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1180.4" y1="477.867" x2="1273.23" y2="478.273"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="309.156" y1="484.086" x2="728.584" y2="484.125"/> + <text font-size="16.9333" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="230.072" y="467.94"> + <tspan x="230.072" y="467.94">DQS1</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="731.334" y1="476.56" x2="725.834" y2="491.69"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="740.272" y1="476.058" x2="735" y2="490.73"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="526.645" y1="329.604" x2="624.171" y2="329.794"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="523.989" y1="379.77" x2="526.281" y2="329.336"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="623.941" y1="330.252" x2="624.857" y2="378.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="524.227" y1="380.428" x2="308.145" y2="381.272"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="735.188" y1="376.55" x2="1484.09" y2="376.908"/> + <text font-size="12.8" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="552.789" y="363.894"> + <tspan x="552.789" y="363.894">READ</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="730.147" y1="369.892" x2="725.921" y2="382.16"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="737.301" y1="370.416" x2="733.075" y2="382.684"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="624.705" y1="377.064" x2="728.034" y2="376.026"/> + <text font-size="22.5778" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="726.112" y="207.363"> + <tspan x="726.112" y="207.363">DDR3 Read Command with CLK delay</tspan> + </text> +</svg> diff --git a/Documentation/getting_started/ram_initialization/read_training_pattern.dia b/Documentation/getting_started/ram_initialization/read_training_pattern.dia new file mode 100644 index 0000000..c1a31be --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training_pattern.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/read_training_pattern.svg b/Documentation/getting_started/ram_initialization/read_training_pattern.svg new file mode 100644 index 0000000..e3be575 --- /dev/null +++ b/Documentation/getting_started/ram_initialization/read_training_pattern.svg @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="67cm" height="22cm" viewBox="220 147 1336 422" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="221.173" y="148.544" width="1333.84" height="419.83"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ffffff" x="221.173" y="148.544" width="1333.84" height="419.83"/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="292.949" y1="212.792" x2="292.627" y2="520.246"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="297.943,218.325 292.953,208.32 287.943,218.315 "/> + </g> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" x1="273.151" y1="495.236" x2="1523.52" y2="494.952"/> + <polyline style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #000000" points="1513,502.454 1528,494.951 1512.99,487.454 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="727.491" y1="481.492" x2="779.859" y2="482.241"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="782.657" y1="431.469" x2="880.183" y2="431.659"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="780.001" y1="481.635" x2="782.293" y2="431.201"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="880.159" y1="431.489" x2="977.685" y2="431.679"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="977.455" y1="432.137" x2="978.371" y2="480.509"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1073.55" y1="430.193" x2="1171.07" y2="430.383"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1070.89" y1="480.359" x2="1073.18" y2="429.925"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1170.84" y1="430.841" x2="1171.76" y2="479.213"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1171.83" y1="478.547" x2="1263.98" y2="478.767"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1266.78" y1="428.381" x2="1364.3" y2="428.571"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1264.12" y1="478.547" x2="1266.41" y2="428.113"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1364.08" y1="429.029" x2="1364.99" y2="477.401"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="978.205" y1="479.759" x2="1071.03" y2="480.163"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="722.187" y1="473.855" x2="716.685" y2="488.983"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="730.127" y1="474.156" x2="724.855" y2="488.828"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="311.94" y1="482.109" x2="719.436" y2="481.419"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="306.966" y1="300.802" x2="399.118" y2="301.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="401.914" y1="250.636" x2="499.44" y2="250.826"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="399.258" y1="300.802" x2="401.552" y2="250.366"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="499.212" y1="251.284" x2="500.128" y2="299.656"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="500.608" y1="299.688" x2="592.76" y2="299.908"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="595.556" y1="249.52" x2="693.082" y2="249.71"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="592.9" y1="299.686" x2="595.192" y2="249.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="692.854" y1="250.17" x2="693.77" y2="298.54"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="693.994" y1="298.392" x2="734.156" y2="298.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="788.942" y1="248.226" x2="886.468" y2="248.414"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="786.286" y1="298.392" x2="788.578" y2="247.956"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="886.238" y1="248.874" x2="887.156" y2="297.246"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="887.226" y1="296.578" x2="979.378" y2="296.8"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="982.176" y1="246.412" x2="1079.7" y2="246.602"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="979.52" y1="296.578" x2="981.812" y2="246.144"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="745.406" y1="297.874" x2="786.432" y2="298.194"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="736.77" y1="291.984" x2="732.544" y2="304.252"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="746.072" y1="291.968" x2="741.846" y2="304.236"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="524.716" y1="339.242" x2="622.242" y2="339.432"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="522.06" y1="389.408" x2="524.352" y2="338.974"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="622.012" y1="339.89" x2="622.928" y2="388.262"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="522.298" y1="390.066" x2="306.216" y2="390.91"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="733.66" y1="386.805" x2="1482.16" y2="386.546"/> + <text font-size="12.8" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="550.86" y="373.532"> + <tspan x="550.86" y="373.532">READ</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1076.66" y1="249.354" x2="1077.58" y2="297.726"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1077.65" y1="297.06" x2="1169.8" y2="297.28"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1172.6" y1="246.894" x2="1270.12" y2="247.084"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1169.94" y1="297.06" x2="1172.23" y2="246.624"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1271.3" y1="248.752" x2="1272.22" y2="297.124"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1272.29" y1="296.458" x2="1364.44" y2="296.678"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1367.24" y1="246.292" x2="1464.77" y2="246.48"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1364.58" y1="296.458" x2="1366.88" y2="246.022"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #0000ff" x1="1464.54" y1="246.94" x2="1465.45" y2="295.312"/> + <text font-size="17.3172" style="fill: #0000ff;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="233.512" y="271.172"> + <tspan x="233.512" y="271.172">CLK</tspan> + </text> + <text font-size="16.9333" style="fill: #00ff00;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="234.006" y="371.06"> + <tspan x="234.006" y="371.06">CMD</tspan> + </text> + <text font-size="16.9333" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.196" y="466.231"> + <tspan x="232.196" y="466.231">DQS</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1525.05" y="516.559"> + <tspan x="1525.05" y="516.559">time</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="232.768" y="207.386"> + <tspan x="232.768" y="207.386">voltage</tspan> + </text> + <g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="606.316" y1="528.014" x2="769.36" y2="528.466"/> + <polygon style="fill: #000000" points="606.33,523.014 596.316,527.986 606.302,533.014 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="606.33,523.014 596.316,527.986 606.302,533.014 "/> + <polygon style="fill: #000000" points="769.346,533.466 779.36,528.493 769.374,523.466 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="769.346,533.466 779.36,528.493 769.374,523.466 "/> + </g> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="630.938" y="546.092"> + <tspan x="630.938" y="546.092">tCAS_latency</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1366.6" y1="476.3" x2="1458.75" y2="476.52"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #ff0000" x1="1457.33" y1="474.166" x2="1459.62" y2="423.732"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="591.117" y1="246.73" x2="591.612" y2="538.619"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="782.578" y1="246.73" x2="782.348" y2="541.37"/> + <text font-size="22.5774" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="755.906" y="172.258"> + <tspan x="755.906" y="172.258">DDR3 Read Command as seen by DRAM</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="728.218" y1="379.53" x2="723.992" y2="391.798"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="735.373" y1="380.055" x2="731.147" y2="392.323"/> + <line style="fill: none; fill-opacity:0; stroke-width: 4; stroke: #00ff00" x1="622.776" y1="386.703" x2="724.47" y2="387.027"/> +</svg> diff --git a/Documentation/getting_started/ram_initialization/readtraining.md b/Documentation/getting_started/ram_initialization/readtraining.md new file mode 100644 index 0000000..e69418a --- /dev/null +++ b/Documentation/getting_started/ram_initialization/readtraining.md @@ -0,0 +1,116 @@ +# Welcome to the coreboot documentation + +## DDR3 Fly-by + +DDR3 uses the [FlyBy routing] for clock, address and command signals. +Due to that routing the DATA/DQS signals are not synchronous the CLK as seen +by the MCH. + +![][skew] + +[skew]: DRAM_data_clock_lanes_skew.svg + +On a READ instruction the DATA seen by MCH is delayed by: + +``` +t_LANEx_delay = t_CLK + t_CASLatency + t_LANEx + t_CLKSKEWx +``` + +where `t_CLK` and `t_LANEx` depend on the mainboard layout and driver +strength, `t_CASLatency` depend on the supported and configured DRAM CAS +latency (CL) in CLK cycles, `t_CLKSKEWx` depends on the position of the +IC on DIMM and reference designed used for the DIMM. + +## Read trainining + +Read training allows to measure the skew of the DATA/DQS signal, +compared to the source CLK. It is usually done by firmware. +As soon as the skew is known, the DATA lanes can be individually delayed +by a constant rate to synchronize the DATA arriving at the MCH. + +For read training the DIMM is placed into a special mode where it outputs +a known pattern. The pattern looks like this: + +![][pat] + +[pat]: read_training_pattern.svg + +Due to the different skew of the lanes, the data arrives at different times +on the MCH. It's no longer synchronous to the CLK or other DATA lanes: + +![][read1] + +[read1]: read_training.svg + +The MCH must delay the signals to synchronize them again. + +### Delay units +The MCH is able to delay all lanes individually or at once. The delay +circuit inside the MCH consists of a *phase delay unit* and *CLK delay units*. +The *phase delay unit* delays by a fraction of the CLK, while the +*CLK delay unit* delays in multiple of the CLK. + +They can be configured by firmware using registers inside the MCH. + +#### Phase delay +The phase delay unit might look like this: + +![][delay64] + +[delay64]: 64delay.svg + +The phase delay can be adjusted by software by writing a register that selects +the MUX input. In this example the signal can be shifted by 64 1/64 CLKs. + +Applied to the DQS as seen on READ command, the signal can be delayed to be synchronous +to the CLK as seen by the MCH: + +![][read2] + +[read2]: read_training2.svg + + +#### CLK delay +The CLK delay unit might look like this: + +![][delay16] + +[delay16]: 16delay.svg + +The CLK delay can be adjusted by software by writing a register that selects +the MUX input. In this example the signal can be delayed by 16 CLKs. + +Applied to the DQS as seen on READ command, the signal can be delayed to be synchronous +to the other DQS lanes: + +![][read3] + +[read3]: read_training3.svg + +#### Combined delay + +Both units are connected in row for each DQS/DATA lane: + +![][blocks] + +[blocks]: recv_blocks.svg + +For each lane (here 8 + 1), there's a 10bit register allowing to adjust the +delay. + +## Finding the right delay + +Assuming a 1/64th phase delay unit, the firmware guesses the initial skew and then places the phase in the alternating data pattern. It then adjest the phase and measures the sampled value. + +The following algorithm is used: + +1. Samples all lanes using 128 (64 + 1 full CLK) different phase delays. It allows to find the rising edge in the pattern. +2. In the next step the phase delay is reduced by 32 (1/2 CLK) to position the sample in a logic "low". +3. For each lane the delay is reduced by 128 (2 CLKs) until a logic "high" is sampled. That the preamble of the pattern. +4. As next step the delay is increased by 96 (1.5 CLKs) to position at the first falling edge. +5. Multiple samples in the range -0.5 to 0.5 CLKS are done to find the exact point of falling edge. + +Read training has now found the exact delay for each lane and stores the values for the next boot. This feature is known as *Fast Boot* or *MRC cache*. + + +[FlyBy routing]: ddr3_flyby.md diff --git a/Documentation/getting_started/ram_initialization/recv_blocks.dia b/Documentation/getting_started/ram_initialization/recv_blocks.dia new file mode 100644 index 0000000..cf554ae --- /dev/null +++ b/Documentation/getting_started/ram_initialization/recv_blocks.dia Binary files differ diff --git a/Documentation/getting_started/ram_initialization/recv_blocks.svg b/Documentation/getting_started/ram_initialization/recv_blocks.svg new file mode 100644 index 0000000..562d0dd --- /dev/null +++ b/Documentation/getting_started/ram_initialization/recv_blocks.svg @@ -0,0 +1,627 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="36cm" height="36cm" viewBox="165 -414 717 702" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="167" y="-412" width="714" height="699"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ffffff" x="167" y="-412" width="714" height="699"/> + </g> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="298.244" y="128.547"> + <tspan x="298.244" y="128.547">9</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="299.092" y1="133.658" x2="291.716" y2="147.408"/> + <g> + <rect style="fill: #ffffff" x="229.976" y="134.084" width="12.8129" height="13.6307"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="229.976" y="134.084" width="12.8129" height="13.6307"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="242.788" y1="140.899" x2="331.116" y2="140.899"/> + <text font-size="12.8" style="fill: #ff0000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="180.99" y="144.624"> + <tspan x="180.99" y="144.624">DATA</tspan> + </text> + <g> + <g> + <rect style="fill: #d2d2d2" x="381.9" y="113" width="199.595" height="92"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="381.9" y="113" width="199.595" height="92"/> + </g> + <g> + <polygon style="fill: #ffffff" points="403.372,132.75 415.872,141 403.372,150.25 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="403.372,132.75 415.872,141 403.372,150.25 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="403.372" y1="141.5" x2="369.342" y2="141.5"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="392.47" y1="141.727" x2="392.604" y2="180"/> + <g> + <rect style="fill: #000000" x="388.238" y="138.125" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="388.238" y="138.125" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="561.62,147.75 571.12,154.5 571.022,177.249 561.62,182.5 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="561.62,147.75 571.12,154.5 571.022,177.249 561.62,182.5 "/> + </g> + <g> + <polygon style="fill: #ffffff" points="444.716,132.25 459.836,139.545 444.966,149.75 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="444.716,132.25 459.836,139.545 444.966,149.75 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="444.84" y1="141" x2="415.872" y2="141"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="430.122" y1="145.18" x2="430.37" y2="172"/> + <g> + <rect style="fill: #000000" x="426.814" y="138.163" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="426.814" y="138.163" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="492.376,132 509.656,139.942 492.124,147.25 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="492.376,132 509.656,139.942 492.124,147.25 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="492.25" y1="139.625" x2="473.4" y2="140.106"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="483.808" y1="143.659" x2="483.87" y2="161.75"/> + <g> + <rect style="fill: #000000" x="480.524" y="136.664" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="480.524" y="136.664" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="532.466,132.05 547.124,139.25 532.376,147.5 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="532.466,132.05 547.124,139.25 532.376,147.5 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="532.42" y1="139.775" x2="509.656" y2="139.942"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="521.038" y1="139.859" x2="521.12" y2="157.25"/> + <g> + <rect style="fill: #000000" x="517.474" y="136.918" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="517.474" y="136.918" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="459.836" y1="139.545" x2="469.172" y2="139.764"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="471.92" y1="130.451" x2="466.422" y2="149.076"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="476.15" y1="130.794" x2="470.65" y2="149.418"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="547.124" y1="139.25" x2="552.306" y2="139.5"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="552.122" y1="139.125" x2="552.37" y2="153"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="552.586" y1="152.279" x2="562.37" y2="152.25"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="521.12" y1="157.25" x2="561.306" y2="157.25"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="483.62" y1="161.75" x2="562.306" y2="161.5"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="430.04" y1="171.25" x2="563.056" y2="171.75"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="392.586" y1="179" x2="562.37" y2="179"/> + <text font-size="4.51556" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="566.45" y="144.625"> + <tspan x="566.45" y="144.625">MUX</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="571.07" y1="165.874" x2="602.62" y2="166"/> + </g> + <g> + <g> + <rect style="fill: #d2d2d2" x="384.952" y="-80.95" width="199.595" height="92"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="384.952" y="-80.95" width="199.595" height="92"/> + </g> + <g> + <polygon style="fill: #ffffff" points="406.422,-61.2 418.922,-52.95 406.422,-43.7 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="406.422,-61.2 418.922,-52.95 406.422,-43.7 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="406.422" y1="-52.45" x2="372.394" y2="-52.45"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="395.52" y1="-52.223" x2="395.656" y2="-13.95"/> + <g> + <rect style="fill: #000000" x="391.288" y="-55.8246" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="391.288" y="-55.8246" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="564.672,-46.2 574.172,-39.45 574.074,-16.7014 564.672,-11.45 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="564.672,-46.2 574.172,-39.45 574.074,-16.7014 564.672,-11.45 "/> + </g> + <g> + <polygon style="fill: #ffffff" points="447.768,-61.7 462.886,-54.4054 448.018,-44.2 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="447.768,-61.7 462.886,-54.4054 448.018,-44.2 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="447.892" y1="-52.95" x2="418.922" y2="-52.95"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="433.174" y1="-48.7698" x2="433.422" y2="-21.95"/> + <g> + <rect style="fill: #000000" x="429.866" y="-55.787" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="429.866" y="-55.787" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="495.426,-61.95 512.708,-54.0078 495.176,-46.7 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="495.426,-61.95 512.708,-54.0078 495.176,-46.7 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="495.302" y1="-54.325" x2="476.452" y2="-53.8442"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="486.86" y1="-50.2914" x2="486.922" y2="-32.2"/> + <g> + <rect style="fill: #000000" x="483.576" y="-57.2858" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="483.576" y="-57.2858" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="535.516,-61.9004 550.176,-54.7 535.426,-46.45 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="535.516,-61.9004 550.176,-54.7 535.426,-46.45 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="535.472" y1="-54.1752" x2="512.708" y2="-54.0078"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.09" y1="-54.0914" x2="524.172" y2="-36.7"/> + <g> + <rect style="fill: #000000" x="520.526" y="-57.0322" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="520.526" y="-57.0322" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="462.886" y1="-54.4054" x2="472.222" y2="-54.1864"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="474.972" y1="-63.4988" x2="469.472" y2="-44.8742"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="479.202" y1="-63.1564" x2="473.702" y2="-44.532"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="550.176" y1="-54.7" x2="555.356" y2="-54.45"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="555.174" y1="-54.825" x2="555.422" y2="-40.95"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="555.638" y1="-41.6714" x2="565.422" y2="-41.7"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="524.172" y1="-36.7" x2="564.356" y2="-36.7"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="486.672" y1="-32.2" x2="565.356" y2="-32.45"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="433.092" y1="-22.7" x2="566.106" y2="-22.2"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="395.638" y1="-14.95" x2="565.422" y2="-14.95"/> + <text font-size="4.51556" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="569.502" y="-49.3254"> + <tspan x="569.502" y="-49.3254">MUX</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="574.122" y1="-28.0758" x2="605.672" y2="-27.95"/> + </g> + <g> + <g> + <rect style="fill: #d2d2d2" x="383.852" y="-342.15" width="199.595" height="92"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="383.852" y="-342.15" width="199.595" height="92"/> + </g> + <g> + <polygon style="fill: #ffffff" points="405.322,-322.4 417.822,-314.15 405.322,-304.9 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="405.322,-322.4 417.822,-314.15 405.322,-304.9 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="405.322" y1="-313.65" x2="371.294" y2="-313.65"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="394.42" y1="-313.424" x2="394.556" y2="-275.15"/> + <g> + <rect style="fill: #000000" x="390.188" y="-317.024" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="390.188" y="-317.024" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="563.572,-307.4 573.072,-300.65 572.974,-277.902 563.572,-272.65 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="563.572,-307.4 573.072,-300.65 572.974,-277.902 563.572,-272.65 "/> + </g> + <g> + <polygon style="fill: #ffffff" points="446.668,-322.9 461.786,-315.606 446.918,-305.4 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="446.668,-322.9 461.786,-315.606 446.918,-305.4 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="446.792" y1="-314.15" x2="417.822" y2="-314.15"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="432.074" y1="-309.971" x2="432.322" y2="-283.15"/> + <g> + <rect style="fill: #000000" x="428.766" y="-316.988" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="428.766" y="-316.988" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="494.326,-323.15 511.608,-315.208 494.076,-307.9 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="494.326,-323.15 511.608,-315.208 494.076,-307.9 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="494.202" y1="-315.524" x2="475.352" y2="-315.044"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="485.76" y1="-311.492" x2="485.822" y2="-293.4"/> + <g> + <rect style="fill: #000000" x="482.476" y="-318.486" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="482.476" y="-318.486" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="534.416,-323.1 549.076,-315.9 534.326,-307.65 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="534.416,-323.1 549.076,-315.9 534.326,-307.65 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="534.372" y1="-315.376" x2="511.608" y2="-315.208"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="522.99" y1="-315.292" x2="523.072" y2="-297.9"/> + <g> + <rect style="fill: #000000" x="519.426" y="-318.232" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="519.426" y="-318.232" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="461.786" y1="-315.606" x2="471.122" y2="-315.386"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="473.872" y1="-324.698" x2="468.372" y2="-306.074"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="478.102" y1="-324.356" x2="472.602" y2="-305.732"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="549.076" y1="-315.9" x2="554.256" y2="-315.65"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="554.074" y1="-316.024" x2="554.322" y2="-302.15"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="554.538" y1="-302.872" x2="564.322" y2="-302.9"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="523.072" y1="-297.9" x2="563.256" y2="-297.9"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="485.572" y1="-293.4" x2="564.256" y2="-293.65"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="431.992" y1="-283.9" x2="565.006" y2="-283.4"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="394.538" y1="-276.15" x2="564.322" y2="-276.15"/> + <text font-size="4.51556" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="568.402" y="-310.526"> + <tspan x="568.402" y="-310.526">MUX</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="573.022" y1="-289.276" x2="604.572" y2="-289.15"/> + </g> + <g> + <g> + <rect style="fill: #d2d2d2" x="617.752" y="-79.35" width="199.595" height="92"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="617.752" y="-79.35" width="199.595" height="92"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="639.472" y1="-54.35" x2="605.444" y2="-54.35"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="628.57" y1="-54.123" x2="628.706" y2="-15.85"/> + <g> + <rect style="fill: #000000" x="624.338" y="-57.7246" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="624.338" y="-57.7246" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="798.722,-41.1 808.222,-34.35 808.124,-11.6014 798.722,-6.35 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="798.722,-41.1 808.222,-34.35 808.124,-11.6014 798.722,-6.35 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="684.942" y1="-54.85" x2="651.972" y2="-54.85"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="666.224" y1="-50.6698" x2="666.472" y2="-23.85"/> + <g> + <rect style="fill: #000000" x="662.916" y="-57.687" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="662.916" y="-57.687" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="728.352" y1="-56.225" x2="709.502" y2="-55.7442"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="719.872" y1="-52.1731" x2="719.728" y2="-28.5"/> + <g> + <rect style="fill: #000000" x="716.626" y="-59.1858" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="716.626" y="-59.1858" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="768.522" y1="-56.0752" x2="745.758" y2="-55.9078"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="757.14" y1="-55.9914" x2="757.228" y2="-32.75"/> + <g> + <rect style="fill: #000000" x="753.576" y="-58.9322" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="753.576" y="-58.9322" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="699.936" y1="-56.3054" x2="705.272" y2="-56.0864"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="708.022" y1="-65.3988" x2="702.522" y2="-46.7742"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="712.252" y1="-65.0564" x2="706.752" y2="-46.432"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="783.226" y1="-56.6" x2="788.406" y2="-56.35"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="788.224" y1="-56.725" x2="788.478" y2="-39.25"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="788.188" y1="-38.8214" x2="797.972" y2="-38.85"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="757.972" y1="-32.1" x2="798.156" y2="-32.1"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="719.722" y1="-28.35" x2="798.406" y2="-28.6"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="666.142" y1="-24.6" x2="799.156" y2="-24.1"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="628.688" y1="-16.85" x2="798.472" y2="-16.85"/> + <text font-size="4.51556" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="803.552" y="-44.2254"> + <tspan x="803.552" y="-44.2254">MUX</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="808.172" y1="-22.9758" x2="837.228" y2="-22.75"/> + <g> + <g> + <rect style="fill: #ffffff" x="767.844" y="-59.8" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="767.844" y="-59.8" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="768.12,-51 767.87,-43 774.37,-47.75 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="768.12,-51 767.87,-43 774.37,-47.75 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="769.87" y="-54.5"> + <tspan x="769.87" y="-54.5">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="778.87" y="-55.25"> + <tspan x="778.87" y="-55.25">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="640.134" y="-58.55" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="640.134" y="-58.55" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="640.408,-49.75 640.158,-41.75 646.658,-46.5 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="640.408,-49.75 640.158,-41.75 646.658,-46.5 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="642.158" y="-53.25"> + <tspan x="642.158" y="-53.25">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="651.158" y="-54"> + <tspan x="651.158" y="-54">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="683.608" y="-59.6" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="683.608" y="-59.6" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="683.884,-50.8 683.634,-42.8 690.134,-47.55 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="683.884,-50.8 683.634,-42.8 690.134,-47.55 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="685.634" y="-54.3"> + <tspan x="685.634" y="-54.3">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="694.634" y="-55.05"> + <tspan x="694.634" y="-55.05">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="729.334" y="-59.9" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="729.334" y="-59.9" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="729.608,-51.1 729.358,-43.1 735.858,-47.85 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="729.608,-51.1 729.358,-43.1 735.858,-47.85 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="731.358" y="-54.6"> + <tspan x="731.358" y="-54.6">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="740.358" y="-55.35"> + <tspan x="740.358" y="-55.35">Q</tspan> + </text> + </g> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="605.688" y1="-28" x2="605.938" y2="-55"/> + <g> + <g> + <rect style="fill: #d2d2d2" x="616.47" y="-340.8" width="199.595" height="92"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="616.47" y="-340.8" width="199.595" height="92"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="638.19" y1="-315.8" x2="604.162" y2="-315.8"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="627.288" y1="-315.574" x2="627.424" y2="-277.3"/> + <g> + <rect style="fill: #000000" x="623.056" y="-319.174" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="623.056" y="-319.174" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="797.44,-302.55 806.94,-295.8 806.842,-273.052 797.44,-267.8 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="797.44,-302.55 806.94,-295.8 806.842,-273.052 797.44,-267.8 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="683.66" y1="-316.3" x2="650.69" y2="-316.3"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="664.942" y1="-312.121" x2="665.19" y2="-285.3"/> + <g> + <rect style="fill: #000000" x="661.634" y="-319.138" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="661.634" y="-319.138" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="727.07" y1="-317.674" x2="708.22" y2="-317.194"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="718.588" y1="-313.623" x2="718.446" y2="-289.95"/> + <g> + <rect style="fill: #000000" x="715.342" y="-320.636" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="715.342" y="-320.636" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="767.24" y1="-317.526" x2="744.476" y2="-317.358"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="755.858" y1="-317.442" x2="755.946" y2="-294.2"/> + <g> + <rect style="fill: #000000" x="752.294" y="-320.382" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="752.294" y="-320.382" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="698.654" y1="-317.756" x2="703.99" y2="-317.536"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="706.74" y1="-326.848" x2="701.24" y2="-308.224"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="710.97" y1="-326.506" x2="705.47" y2="-307.882"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="781.944" y1="-318.05" x2="787.124" y2="-317.8"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="786.942" y1="-318.174" x2="787.196" y2="-300.7"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="786.906" y1="-300.272" x2="796.69" y2="-300.3"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="756.69" y1="-293.55" x2="796.874" y2="-293.55"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="718.44" y1="-289.8" x2="797.124" y2="-290.05"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="664.86" y1="-286.05" x2="797.874" y2="-285.55"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="627.406" y1="-278.3" x2="797.19" y2="-278.3"/> + <text font-size="4.51556" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="802.268" y="-305.676"> + <tspan x="802.268" y="-305.676">MUX</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="806.89" y1="-284.426" x2="835.946" y2="-284.2"/> + <g> + <g> + <rect style="fill: #ffffff" x="766.562" y="-321.25" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="766.562" y="-321.25" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="766.838,-312.45 766.588,-304.45 773.088,-309.2 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="766.838,-312.45 766.588,-304.45 773.088,-309.2 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="768.588" y="-315.95"> + <tspan x="768.588" y="-315.95">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="777.588" y="-316.7"> + <tspan x="777.588" y="-316.7">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="638.85" y="-320" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="638.85" y="-320" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="639.126,-311.2 638.876,-303.2 645.376,-307.95 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="639.126,-311.2 638.876,-303.2 645.376,-307.95 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="640.876" y="-314.7"> + <tspan x="640.876" y="-314.7">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="649.876" y="-315.45"> + <tspan x="649.876" y="-315.45">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="682.326" y="-321.05" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="682.326" y="-321.05" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="682.6,-312.25 682.35,-304.25 688.85,-309 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="682.6,-312.25 682.35,-304.25 688.85,-309 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="684.35" y="-315.75"> + <tspan x="684.35" y="-315.75">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="693.35" y="-316.5"> + <tspan x="693.35" y="-316.5">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="728.05" y="-321.35" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="728.05" y="-321.35" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="728.326,-312.55 728.076,-304.55 734.576,-309.3 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="728.326,-312.55 728.076,-304.55 734.576,-309.3 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="730.076" y="-316.05"> + <tspan x="730.076" y="-316.05">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="739.076" y="-316.8"> + <tspan x="739.076" y="-316.8">Q</tspan> + </text> + </g> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="604.406" y1="-289.45" x2="604.656" y2="-316.45"/> + <g> + <g> + <rect style="fill: #d2d2d2" x="615.194" y="114.65" width="199.595" height="92"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="615.194" y="114.65" width="199.595" height="92"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="636.916" y1="139.65" x2="602.888" y2="139.65"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="626.014" y1="139.877" x2="626.15" y2="178.15"/> + <g> + <rect style="fill: #000000" x="621.782" y="136.275" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="621.782" y="136.275" width="6.5407" height="6.01037"/> + </g> + <g> + <polygon style="fill: #ffffff" points="796.164,152.9 805.664,159.65 805.566,182.399 796.164,187.65 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="796.164,152.9 805.664,159.65 805.566,182.399 796.164,187.65 "/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="682.386" y1="139.15" x2="649.416" y2="139.15"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="663.666" y1="143.33" x2="663.914" y2="170.15"/> + <g> + <rect style="fill: #000000" x="660.358" y="136.313" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="660.358" y="136.313" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="725.794" y1="137.775" x2="706.946" y2="138.256"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="717.314" y1="141.827" x2="717.17" y2="165.5"/> + <g> + <rect style="fill: #000000" x="714.068" y="134.814" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="714.068" y="134.814" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="765.964" y1="137.925" x2="743.2" y2="138.092"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="754.582" y1="138.009" x2="754.67" y2="161.25"/> + <g> + <rect style="fill: #000000" x="751.018" y="135.068" width="6.5407" height="6.01037"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="751.018" y="135.068" width="6.5407" height="6.01037"/> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="697.38" y1="137.695" x2="702.716" y2="137.914"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="705.466" y1="128.601" x2="699.966" y2="147.226"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="709.696" y1="128.944" x2="704.196" y2="147.568"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="780.67" y1="137.4" x2="785.85" y2="137.65"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="785.666" y1="137.275" x2="785.92" y2="154.75"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="785.63" y1="155.179" x2="795.414" y2="155.15"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="755.414" y1="161.9" x2="795.6" y2="161.9"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="717.164" y1="165.65" x2="795.85" y2="165.4"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="663.586" y1="169.4" x2="796.6" y2="169.9"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="626.132" y1="177.15" x2="795.914" y2="177.15"/> + <text font-size="4.51556" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="800.994" y="149.775"> + <tspan x="800.994" y="149.775">MUX</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="805.616" y1="171.024" x2="834.67" y2="171.25"/> + <g> + <g> + <rect style="fill: #ffffff" x="765.288" y="134.2" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="765.288" y="134.2" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="765.562,143 765.312,151 771.812,146.25 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="765.562,143 765.312,151 771.812,146.25 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="767.312" y="139.5"> + <tspan x="767.312" y="139.5">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="776.312" y="138.75"> + <tspan x="776.312" y="138.75">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="637.576" y="135.45" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="637.576" y="135.45" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="637.85,144.25 637.6,152.25 644.1,147.5 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="637.85,144.25 637.6,152.25 644.1,147.5 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="639.6" y="140.75"> + <tspan x="639.6" y="140.75">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="648.6" y="140"> + <tspan x="648.6" y="140">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="681.05" y="134.4" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="681.05" y="134.4" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="681.326,143.2 681.076,151.2 687.576,146.45 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="681.326,143.2 681.076,151.2 687.576,146.45 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="683.076" y="139.7"> + <tspan x="683.076" y="139.7">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="692.076" y="138.95"> + <tspan x="692.076" y="138.95">Q</tspan> + </text> + </g> + <g> + <g> + <rect style="fill: #ffffff" x="726.776" y="134.1" width="15.5" height="24.5"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="726.776" y="134.1" width="15.5" height="24.5"/> + </g> + <g> + <polygon style="fill: #ffffff" points="727.05,142.9 726.8,150.9 733.3,146.15 "/> + <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="727.05,142.9 726.8,150.9 733.3,146.15 "/> + </g> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="728.8" y="139.4"> + <tspan x="728.8" y="139.4">D</tspan> + </text> + <text font-size="3.38667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="737.8" y="138.65"> + <tspan x="737.8" y="138.65">Q</tspan> + </text> + </g> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="603.13" y1="166" x2="603.38" y2="139"/> + <g> + <rect style="fill: #ffffff" x="462.662" y="241" width="207.3" height="38"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="462.662" y="241" width="207.3" height="38"/> + <text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="566.312" y="263.9"> + <tspan x="566.312" y="263.9">DATA1 RECV Delay Register</tspan> + </text> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="566.32" y1="179.874" x2="566.314" y2="239.998"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="800.866" y1="185.024" x2="801.108" y2="219.5"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="801.108" y1="219.75" x2="566.108" y2="219.25"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="561.108" y1="217" x2="572.858" y2="211"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="612.108" y1="224.5" x2="620.358" y2="214.5"/> + <text font-size="8.46667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="617.858" y="231.5"> + <tspan x="617.858" y="231.5">4</tspan> + </text> + <text font-size="8.46667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="575.358" y="215"> + <tspan x="575.358" y="215">6</tspan> + </text> + <g> + <rect style="fill: #ffffff" x="464.702" y="-214.2" width="207.3" height="38"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="464.702" y="-214.2" width="207.3" height="38"/> + <text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="568.352" y="-191.3"> + <tspan x="568.352" y="-191.3">DATA9 RECV Delay Register</tspan> + </text> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="568.272" y1="-275.276" x2="568.352" y2="-214.2"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="802.14" y1="-270.426" x2="803.148" y2="-235.7"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="803.148" y1="-235.45" x2="568.148" y2="-235.95"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="563.148" y1="-238.2" x2="574.898" y2="-244.2"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="614.148" y1="-230.7" x2="622.398" y2="-240.7"/> + <text font-size="8.46667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="619.898" y="-223.7"> + <tspan x="619.898" y="-223.7">4</tspan> + </text> + <text font-size="8.46667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="577.398" y="-240.2"> + <tspan x="577.398" y="-240.2">6</tspan> + </text> + <g> + <rect style="fill: #ffffff" x="465.382" y="47.9258" width="207.3" height="38"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="465.382" y="47.9258" width="207.3" height="38"/> + <text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="569.032" y="70.8258"> + <tspan x="569.032" y="70.8258">DATA2 RECV Delay Register</tspan> + </text> + </g> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="569.372" y1="-14.0757" x2="569.032" y2="47.9258"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="803.422" y1="-8.97572" x2="803.828" y2="26.4258"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="803.828" y1="26.6758" x2="568.828" y2="26.1758"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="563.828" y1="23.9258" x2="575.578" y2="17.9259"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="614.828" y1="31.4258" x2="623.078" y2="21.4258"/> + <text font-size="8.46667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="620.578" y="38.4258"> + <tspan x="620.578" y="38.4258">4</tspan> + </text> + <text font-size="8.46667" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="578.078" y="21.9258"> + <tspan x="578.078" y="21.9258">6</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="329.99" y1="140.5" x2="368.99" y2="140.5"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="329.49" y1="140.5" x2="329.49" y2="-314"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="370.49" y1="-313" x2="330.49" y2="-312.5"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="330.49" y1="-52.5" x2="371.44" y2="-52.6"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="350.67" y1="-59.246" x2="343.294" y2="-45.4962"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="347.12" y1="133.654" x2="339.744" y2="147.404"/> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="358.07" y1="-319.446" x2="350.694" y2="-305.696"/> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="350.94" y="126.8"> + <tspan x="350.94" y="126.8">1</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="351.44" y="-68.2"> + <tspan x="351.44" y="-68.2">1</tspan> + </text> + <text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="362.39" y="-326.8"> + <tspan x="362.39" y="-326.8">1</tspan> + </text> + <text font-size="22.5778" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="564.99" y="-129"> + <tspan x="564.99" y="-129">...</tspan> + </text> + <text font-size="22.5774" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="314" y="-372"> + <tspan x="314" y="-372">DDR3 Receive delay pseudo implementation</tspan> + </text> +</svg>
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Patch Set 1:
(2 comments)
https://review.coreboot.org/c/coreboot/+/32334/1//COMMIT_MSG Commit Message:
PS1: Please use the full text width of 75 characters.
https://review.coreboot.org/c/coreboot/+/32334/1//COMMIT_MSG@13 PS1, Line 13: explenation explanation
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Patch Set 1: Code-Review+1
(12 comments)
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... File Documentation/getting_started/ram_initialization/ddr3_flyby.md:
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 6: is are
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 9: as on compared to the
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 9: did : terminat s/did terminate/terminated
I think that the branches are also not good for high-speed signals, because of reflections and such.
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 12: The disadvantage of "fly-by" is the more complex memory training that needs to : be done to find the DATA lane skew. This is because the DDR2 tree results in all signals reaching the chips at the same time, whereas DDR3 fly-by means the signal reaches one chip after the other, hence the skew.
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 15: trailing space
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... File Documentation/getting_started/ram_initialization/readtraining.md:
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 7: MCH MCH is intel-specific, use "memory controller" instead.
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 13: MCH Same
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 27: usually usually?
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 98: trailing space
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 103: phase in From here onwards, lines are a bit too long
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 107: Samples Sample
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 105: The following algorithm is used: : : 1. Samples all lanes using 128 (64 + 1 full CLK) different phase delays. It allows to find the rising edge in the pattern. : 2. In the next step the phase delay is reduced by 32 (1/2 CLK) to position the sample in a logic "low". : 3. For each lane the delay is reduced by 128 (2 CLKs) until a logic "high" is sampled. That the preamble of the pattern. : 4. As next step the delay is increased by 96 (1.5 CLKs) to position at the first falling edge. : 5. Multiple samples in the range -0.5 to 0.5 CLKS are done to find the exact point of falling edge. : : Read training has now found the exact delay for each lane and stores the values for the next boot. This feature is known as *Fast Boot* or *MRC cache*. Sounds like Intel-specific. If you want to keep it like this, how about relating the usual names I've seen for rdtrain timings? I know of TAP and PI, with PI being the smallest one
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Patch Set 1:
FYI: I had a look at this patch some time ago and commented on some things in a chat with siro. I don't really remember what my comments were though...
Christian Walter has uploaded a new patch set (#2) to the change originally created by Patrick Rudolph. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Documentation: Explain DDR3 read training
Add lots of colorful graphics to explain DDR3 read training in detail, what is done inside MCH and what needs to be done on firmware level.
Besides read training give a short explanation what DDR3 "FlyBy" is and compare it with DDR2 DIMMs.
Besides the SVG all sources files are added.
Change-Id: Ib477bd332984c397289404cfc33c65a2d4469257 Signed-off-by: Patrick Rudolph patrick.rudolph@9elements.com Signed-off-by: Christian Walter christian.walter@9elements.com --- M Documentation/getting_started/index.md A Documentation/getting_started/ram_initialization/16delay.dia A Documentation/getting_started/ram_initialization/16delay.svg A Documentation/getting_started/ram_initialization/64delay.dia A Documentation/getting_started/ram_initialization/64delay.svg A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.dia A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.svg A Documentation/getting_started/ram_initialization/ddr3_flyby.md A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.dia A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.svg A Documentation/getting_started/ram_initialization/index.md A Documentation/getting_started/ram_initialization/read_training.dia A Documentation/getting_started/ram_initialization/read_training.svg A Documentation/getting_started/ram_initialization/read_training2.dia A Documentation/getting_started/ram_initialization/read_training2.svg A Documentation/getting_started/ram_initialization/read_training3.dia A Documentation/getting_started/ram_initialization/read_training3.svg A Documentation/getting_started/ram_initialization/read_training_pattern.dia A Documentation/getting_started/ram_initialization/read_training_pattern.svg A Documentation/getting_started/ram_initialization/readtraining.md A Documentation/getting_started/ram_initialization/recv_blocks.dia A Documentation/getting_started/ram_initialization/recv_blocks.svg 22 files changed, 1,990 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/32334/2
Christian Walter has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Patch Set 2:
(7 comments)
https://review.coreboot.org/c/coreboot/+/32334/1//COMMIT_MSG Commit Message:
PS1:
Please use the full text width of 75 characters.
Done
https://review.coreboot.org/c/coreboot/+/32334/1//COMMIT_MSG@13 PS1, Line 13: explenation
explanation
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... File Documentation/getting_started/ram_initialization/ddr3_flyby.md:
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 6: is
are
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 9: as on
compared to the
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 9: did : terminat
s/did terminate/terminated […]
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 12: The disadvantage of "fly-by" is the more complex memory training that needs to : be done to find the DATA lane skew.
This is because the DDR2 tree results in all signals reaching the chips at the same time, whereas DD […]
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 15:
trailing space
Done
Christian Walter has uploaded a new patch set (#3) to the change originally created by Patrick Rudolph. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Documentation: Explain DDR3 read training
Add lots of colorful graphics to explain DDR3 read training in detail, what is done inside MCH and what needs to be done on firmware level.
Besides read training give a short explanation what DDR3 "FlyBy" is and compare it with DDR2 DIMMs.
Besides the SVG all sources files are added.
Change-Id: Ib477bd332984c397289404cfc33c65a2d4469257 Signed-off-by: Patrick Rudolph patrick.rudolph@9elements.com Signed-off-by: Christian Walter christian.walter@9elements.com --- M Documentation/getting_started/index.md A Documentation/getting_started/ram_initialization/16delay.dia A Documentation/getting_started/ram_initialization/16delay.svg A Documentation/getting_started/ram_initialization/64delay.dia A Documentation/getting_started/ram_initialization/64delay.svg A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.dia A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.svg A Documentation/getting_started/ram_initialization/ddr3_flyby.md A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.dia A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.svg A Documentation/getting_started/ram_initialization/index.md A Documentation/getting_started/ram_initialization/read_training.dia A Documentation/getting_started/ram_initialization/read_training.svg A Documentation/getting_started/ram_initialization/read_training2.dia A Documentation/getting_started/ram_initialization/read_training2.svg A Documentation/getting_started/ram_initialization/read_training3.dia A Documentation/getting_started/ram_initialization/read_training3.svg A Documentation/getting_started/ram_initialization/read_training_pattern.dia A Documentation/getting_started/ram_initialization/read_training_pattern.svg A Documentation/getting_started/ram_initialization/readtraining.md A Documentation/getting_started/ram_initialization/recv_blocks.dia A Documentation/getting_started/ram_initialization/recv_blocks.svg 22 files changed, 1,998 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/32334/3
Christian Walter has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Patch Set 2:
(6 comments)
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... File Documentation/getting_started/ram_initialization/readtraining.md:
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 7: MCH
MCH is intel-specific, use "memory controller" instead.
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 13: MCH
Same
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 27: usually
usually?
under normal conditions; generally.
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 98:
trailing space
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 103: phase in
From here onwards, lines are a bit too long
Done
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 107: Samples
Sample
Done
Christian Walter has uploaded a new patch set (#4) to the change originally created by Patrick Rudolph. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Documentation: Explain DDR3 read training
Add lots of colorful graphics to explain DDR3 read training in detail, what is done inside MCH and what needs to be done on firmware level.
Besides read training give a short explanation what DDR3 "FlyBy" is and compare it with DDR2 DIMMs.
Besides the SVG all sources files are added.
Change-Id: Ib477bd332984c397289404cfc33c65a2d4469257 Signed-off-by: Patrick Rudolph patrick.rudolph@9elements.com Signed-off-by: Christian Walter christian.walter@9elements.com --- M Documentation/getting_started/index.md A Documentation/getting_started/ram_initialization/16delay.dia A Documentation/getting_started/ram_initialization/16delay.svg A Documentation/getting_started/ram_initialization/64delay.dia A Documentation/getting_started/ram_initialization/64delay.svg A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.dia A Documentation/getting_started/ram_initialization/DRAM_data_clock_lanes_skew.svg A Documentation/getting_started/ram_initialization/ddr3_flyby.md A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.dia A Documentation/getting_started/ram_initialization/ddr3_vs_ddr2.svg A Documentation/getting_started/ram_initialization/index.md A Documentation/getting_started/ram_initialization/read_training.dia A Documentation/getting_started/ram_initialization/read_training.svg A Documentation/getting_started/ram_initialization/read_training2.dia A Documentation/getting_started/ram_initialization/read_training2.svg A Documentation/getting_started/ram_initialization/read_training3.dia A Documentation/getting_started/ram_initialization/read_training3.svg A Documentation/getting_started/ram_initialization/read_training_pattern.dia A Documentation/getting_started/ram_initialization/read_training_pattern.svg A Documentation/getting_started/ram_initialization/readtraining.md A Documentation/getting_started/ram_initialization/recv_blocks.dia A Documentation/getting_started/ram_initialization/recv_blocks.svg 22 files changed, 1,998 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/32334/4
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Patch Set 4:
FYI: I had a look at this patch some time ago and commented on some things in a chat with siro. I don't really remember what my comments were though...
Have you asked siro about this? There were quite a few things. might have a look if i still have the chat logs about this
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/32334 )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Patch Set 4:
(2 comments)
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... File Documentation/getting_started/ram_initialization/ddr3_flyby.md:
https://review.coreboot.org/c/coreboot/+/32334/1/Documentation/getting_start... PS1, Line 9: lower this should be higher and not lower
https://review.coreboot.org/c/coreboot/+/32334/4/Documentation/getting_start... File Documentation/getting_started/ram_initialization/readtraining.md:
https://review.coreboot.org/c/coreboot/+/32334/4/Documentation/getting_start... PS4, Line 45: The MCH must delay the signals to synchronize them again. this is a bit unspecific. It's mostly about the timing of the DQS pairs and their corresponding DQ byte lanes.
Stefan Reinauer has abandoned this change. ( https://review.coreboot.org/c/coreboot/+/32334?usp=email )
Change subject: Documentation: Explain DDR3 read training ......................................................................
Abandoned