Browse Source

Checking how github renders

master
peteraa 6 years ago
parent
commit
775c15c29b
8 changed files with 1008 additions and 2 deletions
  1. BIN
      Images/HTML.png
  2. BIN
      Images/ScalaCond2.png
  3. +867
    -0
      Images/Source/drawing.svg
  4. BIN
      Images/counter.png
  5. BIN
      Images/toolchain2.png
  6. +3
    -2
      README.org
  7. +136
    -0
      hdl.org
  8. +2
    -0
      introduction.org

BIN
Images/HTML.png View File

Before After
Width: 354  |  Height: 90  |  Size: 10KB

BIN
Images/ScalaCond2.png View File

Before After
Width: 592  |  Height: 319  |  Size: 11KB

+ 867
- 0
Images/Source/drawing.svg View File

@@ -0,0 +1,867 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg8"
inkscape:version="0.92.4 (unknown)"
sodipodi:docname="drawing.svg">
<defs
id="defs2">
<inkscape:path-effect
effect="spiro"
id="path-effect1515"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect1494"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect1515-9"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect1494-4"
effect="spiro" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="1943.5071"
inkscape:cy="986.50539"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:snap-bbox="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-midpoints="false"
inkscape:snap-smooth-nodes="false"
inkscape:object-paths="false"
inkscape:snap-intersection-paths="false"
inkscape:snap-bbox-midpoints="false"
inkscape:bbox-nodes="false"
inkscape:bbox-paths="false"
inkscape:snap-object-midpoints="false"
inkscape:snap-center="false"
inkscape:snap-text-baseline="false"
inkscape:snap-page="true"
inkscape:snap-nodes="true"
inkscape:object-nodes="false"
inkscape:snap-others="false"
inkscape:snap-global="false"
inkscape:window-width="1071"
inkscape:window-height="1149"
inkscape:window-x="3125"
inkscape:window-y="400"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
y="171.63106"
x="-128.74582"
height="73.432358"
width="168.64706"
id="rect883"
style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="g881"
transform="matrix(0.51296719,0,0,0.51127816,-109.54301,174.78871)"
style="stroke-width:1.95265985">
<rect
y="53.684444"
x="18.415592"
height="35.546844"
width="42.228577"
id="rect815"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.54992366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="rect1510"
d="M 18.415591,53.684444 H 60.644168 V 89.231288 H 46.912024 L 39.52988,83.372657 32.147735,89.231288 H 18.415591 Z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.54992366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<flowRoot
xml:space="preserve"
id="Reg_A"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,-75.533582,-22.067411)"
inkscape:label="Reg_A_value"><flowRegion
id="flowRegion1504"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"><rect
id="rect1506"
width="138.39091"
height="21.213207"
x="139.40105"
y="122.97374"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
id="flowPara1615">Reg_A_field</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot1517"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.33333206px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,-50.522862,-7.834017)"><flowRegion
id="flowRegion1519"><rect
id="rect1521"
width="92.5"
height="38.57143"
x="416.42856"
y="222.16254" /></flowRegion><flowPara
id="flowPara1523">1</flowPara></flowRoot> <rect
y="5.3301582"
x="92.150589"
height="80.003487"
width="88.495239"
id="rect891"
style="opacity:1;fill:#d5d5d5;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path893"
d="m 121.99321,-50.643741 h 21.66188 v 18.174325 h -7.04414 l -3.7868,-2.99539 -3.7868,2.99539 h -7.04414 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="g901"
transform="matrix(0.51296719,0,0,0.51127816,-57.518327,174.78871)"
style="stroke-width:1.95265985">
<rect
y="53.684444"
x="18.415592"
height="35.546844"
width="42.228577"
id="rect897"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.54992366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path899"
d="M 18.415591,53.684444 H 60.644168 V 89.231288 H 46.912024 L 39.52988,83.372657 32.147735,89.231288 H 18.415591 Z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.54992366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<g
style="stroke-width:1.95265985"
transform="matrix(0.51296719,0,0,0.51127816,-31.505999,174.78871)"
id="g907">
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.54992366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect903"
width="42.228577"
height="35.546844"
x="18.415592"
y="53.684444" />
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.54992366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 18.415591,53.684444 H 60.644168 V 89.231288 H 46.912024 L 39.52988,83.372657 32.147735,89.231288 H 18.415591 Z"
id="path905"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
</g>
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 162.1322,58.80966 V 37.14778 l 8.68626,5.29167 v 11.07854 z"
id="rect909"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path911"
d="M -14.739936,65.484875 H 6.9219379 v 18.174326 h -7.04413904 l -3.78679796,-2.99539 -3.786798,2.99539 h -7.0441389 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="g944"
transform="translate(56.090906,-121.60764)">
<rect
y="21.519037"
x="126.83977"
height="18.174326"
width="21.661875"
id="rect920"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path922"
d="m 126.83976,21.519037 h 21.66188 v 18.174325 h -7.04414 l -3.7868,-2.99539 -3.7868,2.99539 h -7.04414 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 135.50566,30.837464 h 12.65118 v 9.278605 h 13.94214"
id="path932"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path934"
d="m 135.37201,69.004133 h 12.71476 V 55.93785 h 14.0122"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.565;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 171.21533,47.97872 h 19.65476"
id="path936"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect815-2"
width="42.228577"
height="35.546844"
x="-66.083389"
y="-149.80884" />
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m -66.083387,-149.80883 h 42.228577 v 35.54684 h -13.732144 l -7.382144,-5.85863 -7.382145,5.85863 h -13.732144 z"
id="rect1510-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 124.6917,44.950784 v -9.431163 l 3.82176,-5.404695 -3.82176,-5.404695 v -9.431162 l 10.42352,4.026471 v 21.618776 z"
id="rect1489"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.06500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 57.997486,61.535545 V 88.529767"
id="path1492"
inkscape:connector-curvature="0"
inkscape:path-effect="#path-effect1494-4"
inkscape:original-d="m 57.997486,61.535545 c 2.65e-4,8.997809 2.65e-4,17.995884 0,26.994222"
transform="translate(-91.554578,-175.98652)" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.06500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m -13.164022,-58.66992 v 21.9161 h 67.351924 v -94.61341 h -78.309974"
id="path1500"
inkscape:connector-curvature="0" />
<flowRoot
xml:space="preserve"
id="Reg_A-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,-99.492078,-175.79753)"
inkscape:label="Reg_A_value"><flowRegion
id="flowRegion1504-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"><rect
id="rect1506-5"
width="138.39091"
height="21.213207"
x="139.40105"
y="122.97374"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
id="flowPara1615-4">Reg_A_field</flowPara></flowRoot> <path
transform="translate(-50.071691,-175.98652)"
inkscape:original-d="m 57.997486,61.535545 c 2.65e-4,8.997809 2.65e-4,17.995884 0,26.994222"
inkscape:path-effect="#path-effect1515-9"
inkscape:connector-curvature="0"
id="path1513"
d="M 57.997486,61.535545 V 88.529767"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.06500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<flowRoot
xml:space="preserve"
id="flowRoot1517-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.33333206px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,-99.492078,-175.79753)"><flowRegion
id="flowRegion1519-1"><rect
id="rect1521-2"
width="92.5"
height="38.57143"
x="416.42856"
y="222.16254" /></flowRegion><flowPara
id="flowPara1523-8">1</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot1525"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.33333206px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="matrix(0.26458333,0,0,0.26458333,-99.492078,-175.79753)"><flowRegion
id="flowRegion1527"><rect
id="rect1529"
width="117.14286"
height="74.64286"
x="416.07144"
y="219.66254" /></flowRegion><flowPara
id="flowPara1531"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.33333397px;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">1</flowPara></flowRoot> <path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path1015"
d="m 124.6917,81.085856 v -9.431163 l 3.82176,-5.404695 -3.82176,-5.404695 V 51.41414 l 10.42352,4.026472 v 21.618776 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 124.73213,19.943451 H 72.927823"
id="path1017"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 109.23512,19.943452 v 35.151785 h 15.30803"
id="path1021"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1023"
d="M -1.1213889,163.26425 H -53.170037"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500008;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path1025"
d="m 106.06388,39.855032 v 35.151785 h 18.44059"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 127.47247,23.061755 h 5.57515"
id="path1045"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1047"
d="M 130.26005,25.84933 V 20.27418"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1049"
d="m 127.47247,58.780505 h 5.57515"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1058"
d="M 124.73213,39.976189 H 72.927823"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1060"
d="M 166.49851,10.305058 H 72.927826"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 166.14283,39.538514 V 9.9618762"
id="path1062"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;"
x="73.70536"
y="38.275295"
id="text1066"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1068">B</tspan></text>
<text
id="text1072"
y="18.99851"
x="73.70536"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1074">A</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="73.70536"
y="8.4151773"
id="text1078"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1082">Op_sel</tspan></text>
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="opacity:1;fill:#d5d5d5;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1084"
width="30.230482"
height="40.98214"
x="492.24396"
y="141.42979" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1086"
d="m 387.94055,150.21584 v -21.66188 l 8.68626,5.29167 v 11.07854 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1088"
d="m 361.31401,122.24364 h 12.65118 v 9.27861 h 13.94214"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 361.18036,160.41031 h 12.71476 v -13.06628 h 14.0122"
id="path1090"
inkscape:connector-curvature="0" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1092"
d="m 397.02368,139.3849 h 19.65476"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.565;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path1094"
d="m 261.4993,-38.704578 v -9.431163 l 3.82176,-5.404695 -3.82176,-5.404695 v -9.431162 l 10.42352,4.026471 v 21.618776 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 501.53262,177.6296 v -9.43116 l 3.82176,-5.4047 -3.82176,-5.40469 v -9.43116 l 10.42352,4.02647 v 21.61877 z"
id="path1096"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1098"
d="M 501.03851,152.56858 H 473.02119"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1100"
d="m 281.05502,81.415443 v 35.151787 h 15.30803"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 273.60747,86.35993 v 35.15178 h 18.44059"
id="path1102"
inkscape:connector-curvature="0" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1104"
d="m 264.28007,-60.593607 h 5.57515"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 267.06765,-57.806032 v -5.57515"
id="path1106"
inkscape:connector-curvature="0" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 504.31339,155.32425 h 5.57515"
id="path1108"
inkscape:connector-curvature="0" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 501.03851,172.60132 H 473.02119"
id="path1110"
inkscape:connector-curvature="0" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 539.90812,162.79374 H 512.35301"
id="path1112"
inkscape:connector-curvature="0" />
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
id="text1118"
y="170.90042"
x="473.79871"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan1116"
sodipodi:role="line"
x="473.79871"
y="170.90042">B</tspan></text>
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="473.79871"
y="151.62364"
id="text1122"><tspan
id="tspan1120"
sodipodi:role="line"
x="473.79871"
y="151.62364">A</tspan></text>
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
id="text1126"
y="-47.444153"
x="294.43558"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan1124"
sodipodi:role="line"
x="294.43558"
y="-47.444153">Op_sel</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="532.6875"
y="115.85532"
id="text1130"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1132"
x="532.6875"
y="115.85532">opSel = false</tspan></text>
<rect
y="141.42979"
x="580.25293"
height="40.98214"
width="30.230482"
id="rect1134"
style="opacity:1;fill:#d5d5d5;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path1136"
d="m 589.54162,177.6296 v -9.43116 l 3.82176,-5.4047 -3.82176,-5.40469 v -9.43116 l 10.42352,4.02647 v 21.61877 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 589.04751,152.56858 H 561.03019"
id="path1138"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1140"
d="m 592.32239,155.32425 h 5.57515"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1142"
d="M 589.04751,172.60132 H 561.03019"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1144"
d="M 627.91712,162.79374 H 600.36201"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="561.80768"
y="170.90042"
id="text1148"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
y="170.90042"
x="561.80768"
sodipodi:role="line"
id="tspan1146">B</tspan></text>
<text
id="text1152"
y="151.62364"
x="561.80768"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
y="151.62364"
x="561.80768"
sodipodi:role="line"
id="tspan1150">A</tspan></text>
<text
id="text1156"
y="-78.001961"
x="499.92749"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
sodipodi:role="line"
id="tspan1160"
x="499.92749"
y="-78.001961">opSel = true</tspan></text>
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 595.10997,158.11183 v -5.57515"
id="path1158"
inkscape:connector-curvature="0" />
<g
id="g1166"
transform="translate(96.956456,88.401923)"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 531.1896,106.65222 465.67458,41.137187"
id="path1114"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1162"
d="M 465.67457,106.65221 531.18961,41.137193"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<rect
y="8.8046618"
x="492.4274"
height="40.98214"
width="30.230482"
id="rect1168"
style="opacity:1;fill:#d5d5d5;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path1170"
d="m 501.71604,45.00447 v -9.431163 l 3.82176,-5.404695 -3.82176,-5.404695 v -9.431163 l 10.42352,4.026472 v 21.618776 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 501.22193,19.943451 H 473.20461"
id="path1172"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1174"
d="m 504.49681,22.699119 h 5.57515"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1176"
d="M 501.22193,39.976189 H 473.20461"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path1178"
d="M 540.09154,30.168612 H 512.53643"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="473.98215"
y="38.275295"
id="text1182"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
y="38.275295"
x="473.98215"
sodipodi:role="line"
id="tspan1180">B</tspan></text>
<text
id="text1186"
y="18.99851"
x="473.98215"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
y="18.99851"
x="473.98215"
sodipodi:role="line"
id="tspan1184">A</tspan></text>
<text
id="text1190"
y="-16.769815"
x="532.87091"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888889px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1220">opSel = true</tspan></text>
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="opacity:1;fill:#d5d5d5;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1192"
width="30.230482"
height="40.98214"
x="580.43634"
y="8.8046618" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 589.72504,45.00447 v -9.431163 l 3.82176,-5.404695 -3.82176,-5.404695 v -9.431163 l 10.42352,4.026472 v 21.618776 z"
id="path1194"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1196"
d="M 589.23093,19.943451 H 561.21361"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 592.50581,22.699119 h 5.57515"
id="path1198"
inkscape:connector-curvature="0" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 589.23093,39.976189 H 561.21361"
id="path1200"
inkscape:connector-curvature="0" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 628.10054,30.168612 H 600.54543"
id="path1202"
inkscape:connector-curvature="0" />
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
id="text1206"
y="38.275295"
x="561.99109"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan1204"
sodipodi:role="line"
x="561.99109"
y="38.275295">B</tspan></text>
<text
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="561.99109"
y="18.99851"
id="text1210"><tspan
id="tspan1208"
sodipodi:role="line"
x="561.99109"
y="18.99851">A</tspan></text>
<path
inkscape:connector-curvature="0"
id="path1212"
d="m 595.29339,25.486694 v -5.57515"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.66500002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<g
transform="translate(10.205357,-43.467262)"
id="g1218"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
id="path1214"
d="M 531.1896,106.65222 465.67458,41.137187"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 465.67457,106.65221 531.18961,41.137193"
id="path1216"
inkscape:connector-curvature="0"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</g>
</svg>

BIN
Images/counter.png View File

Before After
Width: 627  |  Height: 600  |  Size: 13KB

BIN
Images/toolchain2.png View File

Before After
Width: 4989  |  Height: 770  |  Size: 1.1MB

+ 3
- 2
README.org View File

@@ -2,11 +2,12 @@ This is the chisel intro for the TDT4255 course at NTNU.
If you use it for your course, please let me know how it went and feel
free (or even slightly pressured) to submit pull requests with improvements.

In order to get started you should go through the introductory material:
Introduction to hardware description languages: [[./hdl.org]]

Instructions can be found in oppgavetekst.org (read it in github if your preferred
reader does not support .org markdown)

TODO: Installation instructions, link to scala primer and link to other tutorials.
Also lacking images, they're on the way.

The main course(work) for creating a 5-stage RISCV pipeline can be found here
https://github.com/PeterAaser/TDT4255_EX2

+ 136
- 0
hdl.org View File

@@ -1,2 +1,138 @@
* Hardware description languages
Hardware description languages, HDLs for short, are used to model circuits, typically digital.
HDLs are *declarative* languages, they describe how the circuit should be constructed.
This is analogous to how HTML works.
As an example, consider creating a list:
#+begin_src html
<ul>
<li>Name: Siv Jensen, Affiliation: FrP</li>
<li>Name: Jonas Gahr Støre, Affiliation: AP</li>
<li>Name: Bjørnar Moxnes, Affiliation: Rødt</li>
<li>Name: Malcolm Tucker, Affiliation: DOSAC</li>
</ul>
#+end_src
Which can then be rendered by an HTML engine to look something like this:
#+CAPTION: The HTML after being rendered
[[./Images/HTML.png]]


Instead of describing how text should be rendered HDLs describe how wires and components in a
circuit should be connected.
Although we have yet to introduce chisel, let's look at some code for a chisel circuit:
It is not necessary to understand what is going on in this code to continue.
#+begin_src scala
class SimpleCounter() extends Module {
val io = IO(
new Bundle {
val reg_a = Output(UInt(32.W))
}
)
val reg_a = RegInit(0.U(8.W))
reg_a := reg_a + 1.U
io.reg_a := reg_a
}
#+end_src
Just like the HTML describes a document the chisel code describes a simple circuit shown below:
#+CAPTION: This is the caption for the next figure link (or table)
[[./Images/counter.png]]


In both examples the common theme is describing a *structure* for some component which must be
rendered.
In the HTML example the structure is *rendered* by your for instance your web-browser, and the
same goes for the hardware description.

While the path from HTML -> Browser is fairly short it's a lot more involved for hardware description!
This shouldn't come as a suprise, displaying text is less complex than creating digital circuits.
A very simplified version of this is shown here:
#+CAPTION: Placeholder graphic
[[./Images/toolchain.png]]

* Scala and Chisel
It is rather uncommon to write raw HTML nowadays, instead we write code that *generates* HTML.
For the example above a generator might be written like this in scala:

#+begin_src scala
def generateList(politicians: List[String], affiliations: Map[String, String]): String = {
val inner = new ArrayBuffer[String]()
for(ii <- 0 until politicians.size){
val nameString = politicians(ii)
val affiliationString = affiliations(nameString)
inner.add(s"<li>Name: $nameString, Affiliation: $affiliationString</li>")
}
"<ul>\n" + inner.mkString("\n") + "</ul>"
}
// Or if you prefer brevity
def generateList2(politicians: List[String], affiliations: Map[String, String]): String = {
val inner = politicians.map(p => s"<li>Name: $p, Affiliation ${affiliations(p)}</li>")
"<ul>\n" + inner.mkString("\n") + "</ul>"
}
#+end_src
In this example a scala program manipulates HTML, and these builders can then be composed together:
#+begin_src scala
def generateDistricts(districts: List[(String, List[String])], affiliations: Map[String, String]): String = {
val inner = districts.map{ case(district, politicians) =>
s"<li>$district\n" + generateList(politicians, affiliations) + "\n</li>"
}.mkString("\n")

s"<div>\n$inner\n</div>"
}
#+end_src
Just like the HTML, a chisel program is just a scala program that builds a chisel hardware description,
thus it can be argued that "chisel program" is about as meaningless as calling the above program a
"html program", but nonetheless we will refer to a scala program building chisel as chisel programs.
We expand upon our first toolchain description:
#+CAPTION: Placeholder graphic
[[./Images/toolchain2.png]]


** Scala -> Chisel Graph Builder
The starting point, a scala program describing how to build a chisel graph.
This program is not constrained in any way, it's able to do anything any other scala program does,
it does not face any restrictions in order to use chisel.
In order to go from scala to a chisel graph builder the program must first be compiled, which
exposes invalid programs (for instance typos, usage befor declaration and similar)
** Chisel Graph Builder -> Chisel Graph
After compiling the program can now be run.
There are three common outcomes from the builder:

+ The builder discovers an invalid circuit
This is analogous to a HTML tag missing

+ A wire is unconnected
During building the builder discovered that a wire was not connected.
This is impossible to determine during compile time (unless you solve the halting problem)
thus it is only detected during building of the circuit.

+ The circuit is well formed and can be instantiated.
** Chisel Graph -> Simulator
After the circuit is verified it can now be used by a simulator.
Several simulators are available and have different advantages and disadvantages.
If nothing else is specified the backend used is FIRRTL
The simulator allows us to test how our circuit will react as its inputs are changed,
allowing us to verify the correctness of our designs.

This is *HUGE* in HDL land as this guarantee does not hold for many HDLs (VHDL and verilog)!
In the days of yore it was very common to see circuits being well behaved in the simulator
and misbehaving on an FPGA, but this is not the case with chisel.
The reason for this is that chisel adopts a fully synchronous model, but it is sufficient that
you know that chisel won't lie to you like VHDL would.
** Chisel Graph -> Hardware
This is not part of the course, but for the interested the approach here is to generate verilog
from the chisel graph which is then used in a vendor specific toolchain for FPGAs or even ASICs.
These toolchains are generally not very fun to use, not only because they are made by very very
evil people, but because hardware is a difficult, complex and complicated domain.

+ 2
- 0
introduction.org View File

@@ -4,6 +4,8 @@
In this exercise you will implement a circuit capable of performing matrix
matrix multiplication in the chisel hardware description language.
The
* Chisel
** Prerequisites
+ *You should have some idea of how digital logic circuits work.*


Loading…
Cancel
Save