Commit a4a8ca36 authored by Federico Vaga's avatar Federico Vaga

doc: add introduction/README

Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent f1e6879a
.. _introduction:description:
============
Introduction
============
The Mock Turtle is a framework to develop embedded systems.
The need for this framework comes from the fact that in some contexts
the development of a gateware core is more complex than writing a
software application. Software takes more computation time than a
custom-designed gateware core; but on the other hand, the development
and support efforts are significantly reduced. Mock Turtle is a solution
for such problem. The gateware core complexity is moved to the software
domain within the Mock Turtle boundaries, without sacrificing
determinism.
The Mock Turtle framework provides an infrastructure on which you can
build an FPGA-based embedded system. The basic ingredient of this
framework is a soft-cpu multi-core environment that can be used to write
firmware to control/monitor gateware cores. In other words, you can
connect Mock Turtle to your gateware cores and control them with the
firmware running on the soft-cpu. In addition, the Mock Turtle framework
provides a communication channel between the firmware and the
host applications which can be used to configure or control the
firmware.
The Mock Turtle framework focuses mainly on the determinism of the
firmware running in it. Indeed, Mock Turtle does not support any kind of
interrupt or scheduling which might compromise the determinism.
The Mock Turtle framework includes the following components:
- Gateware
- The Mock Turtle core
- Shared Memory among soft-CPUs and host system.
- Up to 8 soft-CPUs
- input channels (Host to Mock Turtle - hmq)
- output channels (Mock Turtle to Host - hmq)
- remote input channels (network to Mock Turtle - rmq)
- remote output channels (Mock Turtle to network -rmq)
- Software
- the Mock Turtle firmware library to access gateware cores from the
firmware.
- the Mock Turtle firmware framework to develop firmware.
If the Mock Turtle is used within a Linux host system, the user can take
advantage of a number of software components which run on the host and
support Mock Turtle:
- the Mock Turtle Linux device driver;
- the Mock Turtle library that provides uniform access to the driver;
- the Mock Turtle Python module to access the library using Python.
The following figure shows the typical Mock Turtle architecture.
.. figure:: img/mock-turtle-overview.svg
:align: center
Mock Turtle Architecture Overview.
The blue and orange blocks are Mock Turtle components (respectively
software and gateware cores). The gray blocks are external components
(gateware cores or software) developed by the user. In purple any
external world communication over the network.
Mock Turtle Architecture Overview. The blue and orange blocks are
Mock Turtle components (respectively software and gateware cores).
The gray blocks are external components (gateware cores or software)
developed by the user. In purple any external world communication
over the network.
.. _introduction:use-cases:
Use Cases
==========
The focus on the high determinism of the soft-cpus makes the Mock Turtle
a very good candidate to implement rtc systems and control
systems (which are, typically, rtc applications).
To make clear the system architecture differences let’s take the
classical control system from the control theory: the heating system. We
have a thermometer sensor, and an actuator to adjust the temperature.
The following figures show the control system architecture with and
without Mock Turtle.
.. list-table::
:header-rows: 0
:widths: 1 1
* - .. figure:: img/mock-turtle-use-case-1.svg
:align: center
Control system **without** Mock-Turtle
- .. figure:: img/mock-turtle-use-case-2.svg
:align: center
Control system **with** Mock-Turtle
In the scenario without Mock-Turtle in figure the
user is responsible for the entire development. On the other hands, with
Mock Turtle, the user will be responsible of the development only of
your business logic. This will limit your gateware development to the
essential blocks, and move the control logic to the software domain. You
do not have to care about the communication with the host system or the
external world because it’s already part of the Mock Turtle framework.
.. _introduction:when-do-not-consider-mock-turtle:
When Do Not Consider Mock Turtle
--------------------------------
The Mock Turtle soft-CPUs have limited computation power, this precludes
some applications like: dsp.
If you really want to use Mock Turtle for dsp analysis, please consider
the development of a dedicated gateware core to perform the dsp analysis
and to use the Mock Turtle as a control system for the dsp gateware
core.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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="356.96591"
stroke-miterlimit="10"
font-weight="normal"
height="646"
font-style="normal"
font-size="12px"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="mock-turtle-overview.svg"
style="font-style:normal;font-weight:normal;font-size:12px;font-family:Dialog;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto">
<title
id="title4446">Mock Turtle Architecture</title>
<metadata
id="metadata318">
<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>Mock Turtle Architecture</dc:title>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" />
<dc:date>2018-03</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Federico Vaga &lt;federico.vaga@cern.ch&gt;</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:prohibits
rdf:resource="http://creativecommons.org/ns#CommercialUse" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1140"
id="namedview316"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.73065015"
inkscape:cx="148.65093"
inkscape:cy="367.12479"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<!--Generated by ySVG 2.5-->
<defs
id="genericDefs" />
<g
id="g5">
<defs
id="defs1">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1">
<path
d="M 0,0 389,0 389,646 0,646 0,0 Z"
id="path9"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath2">
<path
d="m 208,116 389,0 0,646 -389,0 0,-646 z"
id="path12"
inkscape:connector-curvature="0" />
</clipPath>
</defs>
<g
transform="translate(-208,-116)"
font-weight="bold"
stroke-miterlimit="1.45"
id="g14"
style="font-weight:bold;font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="246.35249"
xml:space="preserve"
y="360.9595"
clip-path="url(#clipPath2)"
id="text16"
style="stroke:none">Host</text>
</g>
<g
transform="translate(-208,-116)"
font-weight="bold"
stroke-miterlimit="1.45"
id="g18"
style="font-weight:bold;font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="259.84671"
xml:space="preserve"
y="374.92819"
clip-path="url(#clipPath2)"
id="text20"
style="stroke:none" />
<text
x="243.87109"
xml:space="preserve"
y="388.897"
clip-path="url(#clipPath2)"
id="text22"
style="stroke:none">FPGA</text>
</g>
<g
transform="translate(-208,-116)"
id="g24"
style="fill:#ffcc99;stroke:#ffcc99;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="256"
height="256"
y="396"
clip-path="url(#clipPath2)"
id="rect26"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g28"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="256"
height="256"
y="396"
clip-path="url(#clipPath2)"
id="rect30"
style="fill:none" />
</g>
<g
font-size="15px"
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g32"
style="font-size:15px;font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="446.53271"
xml:space="preserve"
y="512.43903"
clip-path="url(#clipPath2)"
id="text34"
style="stroke:none">Mock Turtle</text>
</g>
<g
transform="translate(-208,-116)"
id="g36"
style="fill:#c0c0c0;stroke:#c0c0c0;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="256"
height="96"
y="116"
clip-path="url(#clipPath2)"
id="rect38"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g40"
style="fill:#808080;stroke:#808080;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="256"
height="96"
y="116"
clip-path="url(#clipPath2)"
id="rect42"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g44"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="399.32129"
xml:space="preserve"
y="168.1543"
clip-path="url(#clipPath2)"
id="text46"
style="stroke:none">Programs</text>
</g>
<g
transform="translate(-208,-116)"
id="g48"
style="fill:#c0c0c0;stroke:#c0c0c0;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="298"
width="64"
height="64"
y="698"
clip-path="url(#clipPath2)"
id="rect50"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g52"
style="fill:#808080;stroke:#808080;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="298"
width="64"
height="64"
y="698"
clip-path="url(#clipPath2)"
id="rect54"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g56"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="307.40329"
xml:space="preserve"
y="734.1543"
clip-path="url(#clipPath2)"
id="text58"
style="stroke:none">CORE 1</text>
</g>
<g
transform="translate(-208,-116)"
id="g60"
style="fill:#c0c0c0;stroke:#c0c0c0;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="374"
width="64"
height="64"
y="698"
clip-path="url(#clipPath2)"
id="rect62"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g64"
style="fill:#808080;stroke:#808080;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="374"
width="64"
height="64"
y="698"
clip-path="url(#clipPath2)"
id="rect66"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g68"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="383.40329"
xml:space="preserve"
y="734.1543"
clip-path="url(#clipPath2)"
id="text70"
style="stroke:none">CORE 2</text>
</g>
<g
transform="translate(-208,-116)"
id="g72"
style="fill:#c0c0c0;stroke:#c0c0c0;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="492"
width="64"
height="64"
y="698"
clip-path="url(#clipPath2)"
id="rect74"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g76"
style="fill:#808080;stroke:#808080;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="492"
width="64"
height="64"
y="698"
clip-path="url(#clipPath2)"
id="rect78"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g80"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="500.73239"
xml:space="preserve"
y="734.1543"
clip-path="url(#clipPath2)"
id="text82"
style="stroke:none">CORE N</text>
<path
d="M 330,660.0233 330,690"
clip-path="url(#clipPath2)"
id="path84"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 330,652.0233 -5,12 5,-3 5,3 z"
clip-path="url(#clipPath2)"
id="path86"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 330,698 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path88"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="M 406,659.9644 406,690"
clip-path="url(#clipPath2)"
id="path90"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 406,651.9644 -5,12 5,-3 5,3 z"
clip-path="url(#clipPath2)"
id="path92"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 406,698 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path94"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="M 524,659.9792 524,690"
clip-path="url(#clipPath2)"
id="path96"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 524,651.9792 -5,12 5,-3 5,3 z"
clip-path="url(#clipPath2)"
id="path98"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 524,698 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path100"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 286.0035,374 278.9624,0"
clip-path="url(#clipPath2)"
id="path102"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:2;stroke-dasharray:12, 4" />
</g>
<g
transform="translate(-208,-116)"
id="g104"
style="fill:#7fbfff;stroke:#7fbfff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="256"
height="96"
y="256"
clip-path="url(#clipPath2)"
id="rect106"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g108"
style="fill:#000080;stroke:#000080;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="256"
height="96"
y="256"
clip-path="url(#clipPath2)"
id="rect110"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g112"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="306"
xml:space="preserve"
y="308.1543"
clip-path="url(#clipPath2)"
id="text114"
style="stroke:none">Driver</text>
</g>
<g
transform="translate(-208,-116)"
id="g116"
style="fill:#99ccff;stroke:#99ccff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="364"
width="192"
height="64"
y="256"
clip-path="url(#clipPath2)"
id="rect118"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g120"
style="fill:#000080;stroke:#000080;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="364"
width="192"
height="64"
y="256"
clip-path="url(#clipPath2)"
id="rect122"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g124"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="370"
xml:space="preserve"
y="292.1543"
clip-path="url(#clipPath2)"
id="text126"
style="stroke:none">Library</text>
</g>
<g
transform="translate(-208,-116)"
id="g128"
style="fill:#b2d8ff;stroke:#b2d8ff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="428"
width="128"
height="32"
y="256"
clip-path="url(#clipPath2)"
id="rect130"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g132"
style="fill:#000080;stroke:#000080;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="428"
width="128"
height="32"
y="256"
clip-path="url(#clipPath2)"
id="rect134"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g136"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="446.8096"
xml:space="preserve"
y="276.1543"
clip-path="url(#clipPath2)"
id="text138"
style="stroke:none">Python module</text>
</g>
<g
transform="translate(-208,-116)"
id="g140"
style="fill:#ffb265;stroke:#ffb265;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="96"
height="32"
y="396"
clip-path="url(#clipPath2)"
id="rect142"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g144"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="300"
width="96"
height="32"
y="396"
clip-path="url(#clipPath2)"
id="rect146"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g148"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="306.50101"
xml:space="preserve"
y="416.1543"
clip-path="url(#clipPath2)"
id="text150"
style="stroke:none">host chan [in]</text>
</g>
<g
transform="translate(-208,-116)"
id="g152"
style="fill:#ffb265;stroke:#ffb265;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="492"
width="64"
height="64"
y="397"
clip-path="url(#clipPath2)"
id="rect154"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g156"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="492"
width="64"
height="64"
y="397"
clip-path="url(#clipPath2)"
id="rect158"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g160"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="510.5029"
xml:space="preserve"
y="433.1543"
clip-path="url(#clipPath2)"
id="text162"
style="stroke:none">SHM</text>
<path
d="m 337.2719,220.0352 0,27.9431"
clip-path="url(#clipPath2)"
id="path164"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 337.2719,212.0352 -5,12 5,-3 5,3 z"
clip-path="url(#clipPath2)"
id="path166"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 337.2719,255.9783 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path168"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 347.5,352.0211 0,35.9464"
clip-path="url(#clipPath2)"
id="path170"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 347.5,395.9675 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path172"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 406,220.02 0,27.9731"
clip-path="url(#clipPath2)"
id="path174"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 406,212.02 -5,12 5,-3 5,3 z"
clip-path="url(#clipPath2)"
id="path176"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 406,255.9931 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path178"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="M 492,220.0182 492,248"
clip-path="url(#clipPath2)"
id="path180"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 492,212.0182 -5,12 5,-3 5,3 z"
clip-path="url(#clipPath2)"
id="path182"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 492,256 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path184"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="M 524,360.0283 524,389"
clip-path="url(#clipPath2)"
id="path186"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 524,352.0283 -5,12 5,-3 5,3 z"
clip-path="url(#clipPath2)"
id="path188"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 524,397 5,-12 -5,3 -5,-3 z"
clip-path="url(#clipPath2)"
id="path190"
inkscape:connector-curvature="0"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
id="g192"
style="fill:#ffb265;stroke:#ffb265;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="312"
width="74"
height="76.953102"
y="561.52338"
clip-path="url(#clipPath2)"
id="rect194"
style="stroke:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g196"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="331.0762"
xml:space="preserve"
y="574.66211"
clip-path="url(#clipPath2)"
id="text198"
style="stroke:none">CPU 1</text>
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g200"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="312"
width="74"
height="76.953102"
y="561.52338"
clip-path="url(#clipPath2)"
id="rect202"
style="fill:none" />
</g>
<g
transform="translate(-208,-116)"
id="g204"
style="fill:#99ccff;stroke:#99ccff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="317"
width="64"
height="16"
y="585.47662"
clip-path="url(#clipPath2)"
id="rect206"
style="stroke:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g208"
style="stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="317"
width="64"
height="16"
y="585.47662"
clip-path="url(#clipPath2)"
id="rect210"
style="fill:none" />
<text
x="329.69629"
xml:space="preserve"
y="597.63092"
clip-path="url(#clipPath2)"
id="text212"
style="font-family:sans-serif;stroke:none">library</text>
</g>
<g
transform="translate(-208,-116)"
id="g214"
style="fill:#c0c0c0;stroke:#c0c0c0;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="317"
width="64"
height="32"
y="601.47662"
clip-path="url(#clipPath2)"
id="rect216"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g218"
style="fill:#333333;stroke:#333333;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="317"
width="64"
height="32"
y="601.47662"
clip-path="url(#clipPath2)"
id="rect220"
style="fill:none" />
<text
x="322.16699"
y="621.63092"
clip-path="url(#clipPath2)"
xml:space="preserve"
id="text222"
style="font-family:sans-serif;fill:#000000;stroke:none">firmware</text>
</g>
<g
transform="translate(-208,-116)"
id="g224"
style="fill:#ffb265;stroke:#ffb265;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="473"
width="74"
height="76.953102"
y="561.52338"
clip-path="url(#clipPath2)"
id="rect226"
style="stroke:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g228"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="492.0762"
xml:space="preserve"
y="574.66211"
clip-path="url(#clipPath2)"
id="text230"
style="stroke:none">CPU 8</text>
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g232"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="473"
width="74"
height="76.953102"
y="561.52338"
clip-path="url(#clipPath2)"
id="rect234"
style="fill:none" />
</g>
<g
transform="translate(-208,-116)"
id="g236"
style="fill:#99ccff;stroke:#99ccff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="478"
width="64"
height="16"
y="585.47662"
clip-path="url(#clipPath2)"
id="rect238"
style="stroke:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g240"
style="stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="478"
width="64"
height="16"
y="585.47662"
clip-path="url(#clipPath2)"
id="rect242"
style="fill:none" />
<text
x="490.69629"
xml:space="preserve"
y="597.63092"
clip-path="url(#clipPath2)"
id="text244"
style="font-family:sans-serif;stroke:none">library</text>
</g>
<g
transform="translate(-208,-116)"
id="g246"
style="fill:#c0c0c0;stroke:#c0c0c0;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="478"
width="64"
height="32"
y="601.47662"
clip-path="url(#clipPath2)"
id="rect248"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g250"
style="fill:#333333;stroke:#333333;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="478"
width="64"
height="32"
y="601.47662"
clip-path="url(#clipPath2)"
id="rect252"
style="fill:none" />
<text
x="483.16699"
y="621.63092"
clip-path="url(#clipPath2)"
xml:space="preserve"
id="text254"
style="font-family:sans-serif;fill:#000000;stroke:none">firmware</text>
</g>
<g
transform="translate(-208,-116)"
id="g256"
style="fill:#ffb265;stroke:#ffb265;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="396"
width="96"
height="32"
y="396"
clip-path="url(#clipPath2)"
id="rect258"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g260"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="396"
width="96"
height="32"
y="396"
clip-path="url(#clipPath2)"
id="rect262"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g264"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="398.1445"
xml:space="preserve"
y="416.1543"
clip-path="url(#clipPath2)"
id="text266"
style="stroke:none">host chan [out]</text>
</g>
<g
transform="translate(-208,-116)"
id="g268"
style="fill:#ffb265;stroke:#ffb265;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="301"
width="96"
height="32"
y="462"
clip-path="url(#clipPath2)"
id="rect270"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g272"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="301"
width="96"
height="32"
y="462"
clip-path="url(#clipPath2)"
id="rect274"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g276"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="308.4502"
xml:space="preserve"
y="482.1543"
clip-path="url(#clipPath2)"
id="text278"
style="stroke:none">rem chan [in]</text>
</g>
<g
transform="translate(-208,-116)"
id="g280"
style="fill:#ffb265;stroke:#ffb265;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="301"
width="96"
height="32"
y="494"
clip-path="url(#clipPath2)"
id="rect282"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g284"
style="fill:#ff6600;stroke:#ff6600;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="301"
width="96"
height="32"
y="494"
clip-path="url(#clipPath2)"
id="rect286"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g288"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="304.09381"
xml:space="preserve"
y="514.1543"
clip-path="url(#clipPath2)"
id="text290"
style="stroke:none">rem chan [out]</text>
</g>
<g
transform="translate(-208,-116)"
id="g292"
style="fill:#cc99ff;stroke:#cc99ff;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="208"
width="64"
height="64"
y="462"
clip-path="url(#clipPath2)"
id="rect294"
style="stroke:none" />
</g>
<g
transform="translate(-208,-116)"
stroke-miterlimit="1.45"
id="g296"
style="fill:#333399;stroke:#333399;stroke-width:3;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<rect
x="208"
width="64"
height="64"
y="462"
clip-path="url(#clipPath2)"
id="rect298"
style="fill:none" />
</g>
<g
stroke-miterlimit="1.45"
transform="translate(-208,-116)"
id="g300"
style="font-family:sans-serif;stroke-linecap:butt;stroke-miterlimit:1.45000005;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<text
x="215.6338"
xml:space="preserve"
y="498.1543"
clip-path="url(#clipPath2)"
id="text302"
style="stroke:none">network</text>
<path
d="m 444.1,396 0.2252,-36.0314"
clip-path="url(#clipPath2)"
id="path304"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 444.3752,351.9688 -5.0749,11.9685 5.0186,-2.9687 4.9812,3.0312 z"
clip-path="url(#clipPath2)"
id="path306"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="m 301,510 -21.0103,0"
clip-path="url(#clipPath2)"
id="path308"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 271.9897,510 12,5 -3,-5 3,-5 z"
clip-path="url(#clipPath2)"
id="path310"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
d="M 272.0054,478 293,478"
clip-path="url(#clipPath2)"
id="path312"
inkscape:connector-curvature="0"
style="fill:none" />
<path
d="m 301,478 -12,-5 3,5 -3,5 z"
clip-path="url(#clipPath2)"
id="path314"
inkscape:connector-curvature="0"
style="stroke:none" />
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="340" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="670" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto">
<!--Generated by ySVG 2.5-->
<defs id="genericDefs"/>
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M0 0 L340 0 L340 670 L0 670 L0 0 Z"/>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M86 52 L426 52 L426 722 L86 722 L86 52 Z"/>
</clipPath>
</defs>
<g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="translate(-86,-52)" stroke="white">
<rect x="86" width="340" height="670" y="52" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g fill="rgb(255,204,153)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(255,204,153)">
<rect x="131" width="64" height="64" y="658" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="rgb(255,153,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(255,153,0)" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="64" height="64" y="658" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="144.9736" xml:space="preserve" y="694.1543" clip-path="url(#clipPath2)" stroke="none">termo</text>
</g>
<g fill="rgb(255,204,153)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(255,204,153)">
<rect x="323" width="64" height="64" y="658" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="rgb(255,153,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(255,153,0)" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="323" width="64" height="64" y="658" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="332.1982" xml:space="preserve" y="694.1543" clip-path="url(#clipPath2)" stroke="none">heating</text>
</g>
<g fill="rgb(255,204,153)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(255,204,153)">
<rect x="131" width="256" height="256" y="350" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="rgb(255,153,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(255,153,0)" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="256" height="256" y="350" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="214.4717" xml:space="preserve" y="482.1543" clip-path="url(#clipPath2)" stroke="none">control system</text>
<text x="91.3525" xml:space="preserve" y="302.9595" clip-path="url(#clipPath2)" font-weight="bold" stroke="none">Host</text>
<text x="104.8467" xml:space="preserve" y="316.9282" clip-path="url(#clipPath2)" font-weight="bold" stroke="none"> </text>
<text x="88.8711" xml:space="preserve" y="330.897" clip-path="url(#clipPath2)" font-weight="bold" stroke="none">FPGA</text>
</g>
<g fill="rgb(153,204,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(153,204,255)">
<rect x="131" width="256" height="96" y="52" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="navy" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="navy" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="256" height="96" y="52" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="230.3213" xml:space="preserve" y="104.1543" clip-path="url(#clipPath2)" stroke="none">Programs</text>
</g>
<g fill="rgb(127,191,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(127,191,255)">
<rect x="131" width="256" height="96" y="192" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="navy" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="navy" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="256" height="96" y="192" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="137" xml:space="preserve" y="244.1543" clip-path="url(#clipPath2)" stroke="none">Driver</text>
</g>
<g fill="rgb(153,204,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(153,204,255)">
<rect x="195" width="192" height="64" y="192" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="navy" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="navy" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="195" width="192" height="64" y="192" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="201" xml:space="preserve" y="228.1543" clip-path="url(#clipPath2)" stroke="none">Library</text>
<path fill="none" d="M163 658 L163 614.0101" clip-path="url(#clipPath2)"/>
<path d="M163 606.0101 L158 618.0101 L163 615.0101 L168 618.0101 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M355 605.9903 L355 650" clip-path="url(#clipPath2)"/>
<path d="M355 658 L360 646 L355 649 L350 646 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" stroke-dasharray="12,4" d="M131.0135 316 L393.9679 316" stroke-width="2" clip-path="url(#clipPath2)"/>
<path fill="none" d="M168.2719 156.0352 L168.2719 183.9783" clip-path="url(#clipPath2)"/>
<path d="M168.2719 148.0352 L163.2719 160.0352 L168.2719 157.0352 L173.2719 160.0352 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path d="M168.2719 191.9783 L173.2719 179.9783 L168.2719 182.9783 L163.2719 179.9783 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M259 296 L259 342" clip-path="url(#clipPath2)"/>
<path d="M259 288 L254 300 L259 297 L264 300 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path d="M259 350 L264 338 L259 341 L254 338 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M291 155.9746 L291 184" clip-path="url(#clipPath2)"/>
<path d="M291 147.9746 L286 159.9746 L291 156.9746 L296 159.9746 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path d="M291 192 L296 180 L291 183 L286 180 Z" clip-path="url(#clipPath2)" stroke="none"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="340" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="670" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto">
<!--Generated by ySVG 2.5-->
<defs id="genericDefs"/>
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M0 0 L340 0 L340 670 L0 670 L0 0 Z"/>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M86 52 L426 52 L426 722 L86 722 L86 52 Z"/>
</clipPath>
</defs>
<g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="translate(-86,-52)" stroke="white">
<rect x="86" width="340" height="670" y="52" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g fill="rgb(255,204,153)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(255,204,153)">
<rect x="131" width="64" height="64" y="658" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="rgb(255,153,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(255,153,0)" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="64" height="64" y="658" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="144.9736" xml:space="preserve" y="694.1543" clip-path="url(#clipPath2)" stroke="none">termo</text>
</g>
<g fill="rgb(255,204,153)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(255,204,153)">
<rect x="323" width="64" height="64" y="658" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="rgb(255,153,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(255,153,0)" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="323" width="64" height="64" y="658" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="332.1982" xml:space="preserve" y="694.1543" clip-path="url(#clipPath2)" stroke="none">heating</text>
<text x="91.3525" xml:space="preserve" y="303.7095" clip-path="url(#clipPath2)" font-weight="bold" stroke="none">Host</text>
<text x="104.8467" xml:space="preserve" y="317.6782" clip-path="url(#clipPath2)" font-weight="bold" stroke="none"> </text>
<text x="88.8711" xml:space="preserve" y="331.647" clip-path="url(#clipPath2)" font-weight="bold" stroke="none">FPGA</text>
</g>
<g fill="rgb(153,204,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(153,204,255)">
<rect x="131" width="256" height="96" y="52" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="navy" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="navy" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="256" height="96" y="52" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="230.3213" xml:space="preserve" y="104.1543" clip-path="url(#clipPath2)" stroke="none">Programs</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="131" width="256" height="96" y="192" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="256" height="96" y="192" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="137" xml:space="preserve" y="244.1543" clip-path="url(#clipPath2)" stroke="none">Driver</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="195" width="192" height="64" y="192" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="195" width="192" height="64" y="192" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="201" xml:space="preserve" y="228.1543" clip-path="url(#clipPath2)" stroke="none">Library</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="259" width="128" height="32" y="194" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="259" width="128" height="32" y="194" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="277.8096" xml:space="preserve" y="214.1543" clip-path="url(#clipPath2)" stroke="none">Python module</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="131" width="256" height="256" y="350.5" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="256" height="256" y="350.5" clip-path="url(#clipPath2)"/>
</g>
<g font-size="15px" stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
<text x="277.5327" xml:space="preserve" y="466.9389" clip-path="url(#clipPath2)" stroke="none">Mock Turtle</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="131" width="96" height="32" y="350.5" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="131" width="96" height="32" y="350.5" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="137.501" xml:space="preserve" y="370.6543" clip-path="url(#clipPath2)" stroke="none">host chan [in]</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="323" width="64" height="64" y="351.5" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="323" width="64" height="64" y="351.5" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="341.5029" xml:space="preserve" y="387.6543" clip-path="url(#clipPath2)" stroke="none">SHM</text>
<path fill="none" stroke-dasharray="12,4" d="M131.0135 316.75 L393.9679 316.75" stroke-width="2" clip-path="url(#clipPath2)"/>
<path fill="none" d="M168.2719 156.0352 L168.2719 183.9783" clip-path="url(#clipPath2)"/>
<path d="M168.2719 148.0352 L163.2719 160.0352 L168.2719 157.0352 L173.2719 160.0352 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path d="M168.2719 191.9783 L173.2719 179.9783 L168.2719 182.9783 L163.2719 179.9783 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M291 155.9746 L291 184" clip-path="url(#clipPath2)"/>
<path d="M291 147.9746 L286 159.9746 L291 156.9746 L296 159.9746 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path d="M291 192 L296 180 L291 183 L286 180 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M163 658 L163 614.5293" clip-path="url(#clipPath2)"/>
<path d="M163 606.5293 L158 618.5293 L163 615.5293 L168 618.5293 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M355 606.499 L355 650" clip-path="url(#clipPath2)"/>
<path d="M355 658 L360 646 L355 649 L350 646 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M179 287.9878 L179 342.5" clip-path="url(#clipPath2)"/>
<path d="M179 350.5 L184 338.5 L179 341.5 L174 338.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path fill="none" d="M355 296.0157 L355 343.5" clip-path="url(#clipPath2)"/>
<path d="M355 288.0157 L350 300.0157 L355 297.0157 L360 300.0157 Z" clip-path="url(#clipPath2)" stroke="none"/>
<path d="M355 351.5 L360 339.5 L355 342.5 L350 339.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="143" width="74" height="76.9531" y="516.0234" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="162.0762" xml:space="preserve" y="529.1621" clip-path="url(#clipPath2)" stroke="none">CPU 1</text>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="143" width="74" height="76.9531" y="516.0234" clip-path="url(#clipPath2)"/>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="148" width="64" height="16" y="539.9766" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-miterlimit="1.45">
<rect fill="none" x="148" width="64" height="16" y="539.9766" clip-path="url(#clipPath2)"/>
<text x="160.6963" y="552.1309" clip-path="url(#clipPath2)" fill="black" font-family="sans-serif" stroke="none" xml:space="preserve">library</text>
</g>
<g fill="rgb(153,204,255)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="rgb(153,204,255)">
<rect x="148" width="64" height="32" y="555.9766" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="navy" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="navy" stroke-miterlimit="1.45">
<rect fill="none" x="148" width="64" height="32" y="555.9766" clip-path="url(#clipPath2)"/>
<text x="153.167" y="576.1309" clip-path="url(#clipPath2)" fill="black" font-family="sans-serif" stroke="none" xml:space="preserve">firmware</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="227" width="96" height="32" y="350.5" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="227" width="96" height="32" y="350.5" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="229.1445" xml:space="preserve" y="370.6543" clip-path="url(#clipPath2)" stroke="none">host chan [out]</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="132" width="96" height="32" y="416.5" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="132" width="96" height="32" y="416.5" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="139.4502" xml:space="preserve" y="436.6543" clip-path="url(#clipPath2)" stroke="none">rem chan [in]</text>
</g>
<g fill="silver" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,-86,-52)" stroke="silver">
<rect x="132" width="96" height="32" y="448.5" clip-path="url(#clipPath2)" stroke="none"/>
</g>
<g stroke-linecap="butt" transform="matrix(1,0,0,1,-86,-52)" fill="gray" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="gray" stroke-width="3" stroke-miterlimit="1.45">
<rect fill="none" x="132" width="96" height="32" y="448.5" clip-path="url(#clipPath2)"/>
</g>
<g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" font-family="sans-serif" transform="matrix(1,0,0,1,-86,-52)" stroke-linecap="butt">
<text x="135.0938" xml:space="preserve" y="468.6543" clip-path="url(#clipPath2)" stroke="none">rem chan [out]</text>
<path fill="none" d="M275 350.5 L275 295.9675" clip-path="url(#clipPath2)"/>
<path d="M275 287.9675 L270 299.9675 L275 296.9675 L280 299.9675 Z" clip-path="url(#clipPath2)" stroke="none"/>
</g>
</g>
</svg>
......@@ -10,6 +10,8 @@ Welcome to Mock Turtle's documentation!
:maxdepth: 2
:caption: Contents:
introduction
Indices and tables
......
../README.rst
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment