Merge pull request #1439 from lnis-uofu/xt_vtr_upgrade

Upgrade VTR to resolve the bugs in tileable routing architecture
This commit is contained in:
tangxifan 2023-11-14 12:31:03 -08:00 committed by GitHub
commit ac08a94dab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 3283 additions and 17 deletions

View File

@ -76,9 +76,6 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
config: config:
- name: "Build Compatibility: GCC-7 (Ubuntu 20.04)"
cc: gcc-7
cxx: g++-7
- name: "Build Compatibility: GCC-8 (Ubuntu 20.04)" - name: "Build Compatibility: GCC-8 (Ubuntu 20.04)"
cc: gcc-8 cc: gcc-8
cxx: g++-8 cxx: g++-8
@ -137,7 +134,7 @@ jobs:
run: ccache -s run: ccache -s
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
if: ${{ matrix.config.cc == 'gcc-8'}} if: ${{ matrix.config.cc == 'gcc-9'}}
with: with:
name: openfpga name: openfpga
path: | path: |
@ -441,7 +438,7 @@ jobs:
chmod +x build/yosys/bin/yosys-config chmod +x build/yosys/bin/yosys-config
chmod +x build/yosys/bin/yosys-filterlib chmod +x build/yosys/bin/yosys-filterlib
chmod +x build/yosys/bin/yosys-smtbmc chmod +x build/yosys/bin/yosys-smtbmc
- name: ${{matrix.config.name}}_GCC-8_(Ubuntu 20.04) - name: ${{matrix.config.name}}_GCC-9_(Ubuntu 20.04)
shell: bash shell: bash
run: source openfpga.sh && source openfpga_flow/regression_test_scripts/${{matrix.config.name}}.sh --debug --show_thread_logs run: source openfpga.sh && source openfpga_flow/regression_test_scripts/${{matrix.config.name}}.sh --debug --show_thread_logs
- name: Upload artifact - name: Upload artifact
@ -485,7 +482,7 @@ jobs:
- name: Checkout OpenFPGA repo - name: Checkout OpenFPGA repo
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: ${{matrix.config.name}}_GCC-8_(Ubuntu 20.04) - name: ${{matrix.config.name}}_GCC-9_(Ubuntu 20.04)
shell: bash shell: bash
run: | run: |
bash .github/workflows/install_dependencies_run.sh bash .github/workflows/install_dependencies_run.sh

View File

@ -58,7 +58,7 @@ help:
checkout: checkout:
# Update all the submodules # Update all the submodules
git submodule init git submodule init
git submodule update --init --depth 1 git submodule update --init --recursive
prebuild: prebuild:
# Run cmake to generate Makefile under the build directory, before compilation # Run cmake to generate Makefile under the build directory, before compilation

View File

@ -88,11 +88,58 @@ Layout
.. warning:: Do NOT enable ``shrink_boundary`` if you are not using the tileable routing resource graph generator! .. warning:: Do NOT enable ``shrink_boundary`` if you are not using the tileable routing resource graph generator!
.. option:: opin2all_sides="<bool>"
Allow each output pin of a programmable block to drive the routing tracks on all the sides of its adjacent switch block (see an illustrative example in :numref:`fig_opin2all_sides`). This can improve the routability of an FPGA fabric with an increase in the sizes of routing multiplexers in each switch block.
By default, it is ``false``.
.. _fig_opin2all_sides:
.. figure:: ./figures/opin2all_sides.svg
:width: 100%
:alt: Impact of opin2all_sides
Impact on routing architecture when the opin-to-all-sides: (a) disabled; (b) enabled.
.. warning:: Do NOT enable ``opin2all_sides`` if you are not using the tileable routing resource graph generator!
.. option:: concat_wire="<bool>"
In each switch block, allow each routing track which ends to drive another routing track on the opposite side, as such a wire can be continued in the same direction (see an illustrative example in :numref:`fig_concat_wire`). In other words, routing wires can be concatenated in the same direction across an FPGA fabric. This can improve the routability of an FPGA fabric with an increase in the sizes of routing multiplexers in each switch block.
By default, it is ``false``.
.. _fig_concat_wire:
.. figure:: ./figures/concat_wire.svg
:width: 100%
:alt: Impact of concat_wire
Impact on routing architecture when the wire concatenation: (a) disabled; (b) enabled.
.. warning:: Do NOT enable ``concat_wire`` if you are not using the tileable routing resource graph generator!
.. option:: concat_pass_wire="<bool>"
In each switch block, allow each routing track which passes to drive another routing track on the opposite side, as such a pass wire can be continued in the same direction (see an illustrative example in :numref:`fig_concat_pass_wire`). This can improve the routability of an FPGA fabric with an increase in the sizes of routing multiplexers in each switch block.
By default, it is ``false``.
.. warning:: Please enable this option if you are looking for device support which is created by any release which is before v1.1.541!!!
.. _fig_concat_wire:
.. figure:: ./figures/concat_pass_wire.svg
:width: 100%
:alt: Impact of concat_pass_wire
Impact on routing architecture when the pass wire concatenation: (a) disabled; (b) enabled.
.. warning:: Do NOT enable ``concat_pass_wire`` if you are not using the tileable routing resource graph generator!
A quick example to show tileable routing is enabled, other options, e.g., through channels are disabled: A quick example to show tileable routing is enabled, other options, e.g., through channels are disabled:
.. code-block:: xml .. code-block:: xml
<layout tileable="true" through_channel="false" shrink_boundary="false"> <layout tileable="true" through_channel="false" shrink_boundary="false" opin2all_sides="false" concat_wire="false" concat_pass_wire="false">
</layout> </layout>
Switch Block Switch Block

View File

@ -0,0 +1,574 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="364.54 140.62 715.76 406.36" width="715.76" height="406.36">
<defs>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<g id="concat_pass_wire" fill="none" stroke-opacity="1" fill-opacity="1" stroke="none" stroke-dasharray="none">
<title>concat_pass_wire</title>
<g id="concat_pass_wire_base">
<title>base</title>
<g id="Group_1411">
<g id="Graphic_362">
<rect x="403.24" y="178.38365" width="249.84" height="256.4605" fill="white"/>
<rect x="403.24" y="178.38365" width="249.84" height="256.4605" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Group_513">
<g id="Graphic_363">
<rect x="648.04" y="198.68417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="648.04" y="198.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_368">
<rect x="648.04" y="344.32614" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="648.04" y="344.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_367">
<rect x="648.04" y="228.232" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="648.04" y="228.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_366">
<rect x="648.04" y="257.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="257.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_510">
<rect x="648.04" y="289.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="289.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_509">
<rect x="648.04" y="316.87548" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="648.04" y="316.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_511">
<rect x="648.04" y="371.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="371.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_512">
<rect x="648.04" y="399.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="399.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_514">
<g id="Graphic_526">
<rect x="397.04" y="199.68417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="397.04" y="199.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_523">
<rect x="397.04" y="345.32614" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="397.04" y="345.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_522">
<rect x="397.04" y="229.232" width="12.96" height="12.96" fill="#80ff80"/>
<rect x="397.04" y="229.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_521">
<rect x="397.04" y="258.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="258.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_518">
<rect x="397.04" y="290.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="290.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_517">
<rect x="397.04" y="317.87548" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="397.04" y="317.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_516">
<rect x="397.04" y="372.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="372.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_515">
<rect x="397.04" y="400.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="400.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_527">
<g id="Graphic_539">
<rect x="623.53215" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="623.53215" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_536">
<rect x="477.8902" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="477.8902" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_535">
<rect x="593.9843" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="593.9843" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_534">
<rect x="564.4365" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="564.4365" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_531">
<rect x="532.7915" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="532.7915" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_530">
<rect x="505.34085" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="505.34085" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_529">
<rect x="450.4395" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="450.4395" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_528">
<rect x="422.98886" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="422.98886" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_540">
<g id="Graphic_552">
<rect x="623.53215" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="623.53215" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_549">
<rect x="477.8902" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="477.8902" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_548">
<rect x="593.9843" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="593.9843" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_547">
<rect x="564.4365" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="564.4365" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_544">
<rect x="532.7915" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="532.7915" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_543">
<rect x="505.34085" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="505.34085" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_542">
<rect x="450.4395" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="450.4395" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_541">
<rect x="422.98886" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="422.98886" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_972">
<line x1="429.88" y1="171.32417" x2="430.2512" y2="151.86237" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_973">
<line x1="457.52" y1="142.80835" x2="457.52" y2="160.58" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_975">
<line x1="485.16" y1="170.48" x2="485.5312" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_974">
<line x1="512.8" y1="141.96417" x2="512.8" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_979">
<line x1="540.44" y1="172.16835" x2="540.8112" y2="152.70655" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_978">
<line x1="571.26" y1="143.65253" x2="571.26" y2="161.42417" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_977">
<line x1="602.08" y1="170.48" x2="602.4512" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_976">
<line x1="629.72" y1="141.96417" x2="629.72" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_987">
<line x1="429.3205" y1="473.7113" x2="429.6917" y2="454.24953" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_986">
<line x1="456.9605" y1="445.1955" x2="456.9605" y2="462.96715" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_985">
<line x1="484.6005" y1="472.86715" x2="484.9717" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_984">
<line x1="512.2405" y1="444.35133" x2="512.2405" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_983">
<line x1="539.8805" y1="474.5555" x2="540.2517" y2="455.0937" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_982">
<line x1="570.7005" y1="446.0397" x2="570.7005" y2="463.8113" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_981">
<line x1="601.5205" y1="472.86715" x2="601.8917" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_980">
<line x1="629.1605" y1="444.35133" x2="629.1605" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_988">
<line x1="366.04" y1="205.84416" x2="387.14035" y2="206.02432" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_989">
<line x1="397.04" y1="236.12417" x2="377.93965" y2="236.28225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_991">
<line x1="366.56" y1="265.72417" x2="387.14054" y2="265.94024" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_990">
<line x1="394.04" y1="297.32417" x2="374.93965" y2="297.48225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_995">
<line x1="367.56" y1="323.70746" x2="384.1407" y2="323.90783" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_994">
<line x1="396.04" y1="350.64746" x2="374.9397" y2="350.81083" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_993">
<line x1="365.56" y1="378.69075" x2="386.14054" y2="378.9068" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_992">
<line x1="395.04" y1="407.18746" x2="375.93965" y2="407.34554" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1378">
<line x1="665.5342" y1="204.64416" x2="704.1402" y2="204.89886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1377">
<line x1="710.3468" y1="234.92417" x2="674.1398" y2="234.69445" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1376">
<line x1="666.20714" y1="264.52417" x2="701.11745" y2="264.77348" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1375">
<line x1="710.48684" y1="296.12417" x2="674.13986" y2="296.3128" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1374">
<line x1="667.5013" y1="322.50746" x2="700.5871" y2="322.75376" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1373">
<line x1="710.48684" y1="350.63164" x2="674.1379" y2="349.88955" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1372">
<line x1="665.2438" y1="377.49074" x2="704.14" y2="377.60306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1371">
<line x1="708.5197" y1="405.63164" x2="674.7633" y2="405.3191" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1396">
<rect x="397.04" y="419.5437" width="12.96" height="12.96" fill="yellow"/>
<rect x="397.04" y="419.5437" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1412">
<g id="Graphic_1482">
<rect x="769" y="178.38365" width="249.84" height="256.4605" fill="white"/>
<rect x="769" y="178.38365" width="249.84" height="256.4605" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Group_1473">
<g id="Graphic_1481">
<rect x="1013.8" y="198.68417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="1013.8" y="198.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1480">
<rect x="1013.8" y="344.32614" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="1013.8" y="344.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1479">
<rect x="1013.8" y="228.232" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="1013.8" y="228.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1478">
<rect x="1013.8" y="257.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="257.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1477">
<rect x="1013.8" y="289.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="289.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1476">
<rect x="1013.8" y="316.87548" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="1013.8" y="316.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1475">
<rect x="1013.8" y="371.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="371.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1474">
<rect x="1013.8" y="399.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="399.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1464">
<g id="Graphic_1472">
<rect x="762.8" y="199.68417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="762.8" y="199.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1471">
<rect x="762.8" y="345.32614" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="762.8" y="345.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1470">
<rect x="762.8" y="229.232" width="12.96" height="12.96" fill="#80ff80"/>
<rect x="762.8" y="229.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1469">
<rect x="762.8" y="258.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="258.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1468">
<rect x="762.8" y="290.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="290.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1467">
<rect x="762.8" y="317.87548" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="762.8" y="317.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1466">
<rect x="762.8" y="372.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="372.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1465">
<rect x="762.8" y="400.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="400.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1455">
<g id="Graphic_1463">
<rect x="989.2921" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="989.2921" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1462">
<rect x="843.6502" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="843.6502" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1461">
<rect x="959.7443" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="959.7443" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1460">
<rect x="930.1965" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="930.1965" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1459">
<rect x="898.5515" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="898.5515" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1458">
<rect x="871.1008" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="871.1008" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1457">
<rect x="816.1995" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="816.1995" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1456">
<rect x="788.7489" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="788.7489" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1446">
<g id="Graphic_1454">
<rect x="989.2921" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="989.2921" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1453">
<rect x="843.6502" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="843.6502" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1452">
<rect x="959.7443" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="959.7443" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1451">
<rect x="930.1965" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="930.1965" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1450">
<rect x="898.5515" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="898.5515" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1449">
<rect x="871.1008" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="871.1008" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1448">
<rect x="816.1995" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="816.1995" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1447">
<rect x="788.7489" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="788.7489" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_1445">
<line x1="795.64" y1="171.32417" x2="796.0112" y2="151.86237" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1444">
<line x1="823.28" y1="142.80835" x2="823.28" y2="160.58" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1443">
<line x1="850.92" y1="170.48" x2="851.2912" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1442">
<line x1="878.56" y1="141.96417" x2="878.56" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1441">
<line x1="906.2" y1="172.16835" x2="906.5712" y2="152.70655" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1440">
<line x1="937.02" y1="143.65253" x2="937.02" y2="161.42417" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1439">
<line x1="967.84" y1="170.48" x2="968.2112" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1438">
<line x1="995.48" y1="141.96417" x2="995.48" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1437">
<line x1="795.0805" y1="473.7113" x2="795.4517" y2="454.24953" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1436">
<line x1="822.7205" y1="445.1955" x2="822.7205" y2="462.96715" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1435">
<line x1="850.3605" y1="472.86715" x2="850.7317" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1434">
<line x1="878.0005" y1="444.35133" x2="878.0005" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1433">
<line x1="905.6405" y1="474.5555" x2="906.0117" y2="455.0937" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1432">
<line x1="936.4605" y1="446.0397" x2="936.4605" y2="463.8113" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1431">
<line x1="967.2805" y1="472.86715" x2="967.6517" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1430">
<line x1="994.9205" y1="444.35133" x2="994.9205" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1429">
<line x1="731.8" y1="205.84416" x2="752.90035" y2="206.02432" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1428">
<line x1="762.8" y1="236.12417" x2="743.69964" y2="236.28225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1427">
<line x1="732.32" y1="265.72417" x2="752.9005" y2="265.94024" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1426">
<line x1="759.8" y1="297.32417" x2="740.69964" y2="297.48225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1425">
<line x1="733.32" y1="323.70746" x2="749.9007" y2="323.90783" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1424">
<line x1="761.8" y1="350.64746" x2="740.6997" y2="350.81083" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1423">
<line x1="731.32" y1="378.69075" x2="751.9005" y2="378.9068" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1422">
<line x1="760.8" y1="407.18746" x2="741.69964" y2="407.34554" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1421">
<line x1="1031.2942" y1="204.64416" x2="1069.9002" y2="204.89886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1420">
<line x1="1076.1068" y1="234.92417" x2="1039.8998" y2="234.69445" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1419">
<line x1="1031.9671" y1="264.52417" x2="1066.8774" y2="264.77348" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1418">
<line x1="1076.2468" y1="296.12417" x2="1039.8998" y2="296.3128" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1417">
<line x1="1033.2613" y1="322.50746" x2="1066.3471" y2="322.75376" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1416">
<line x1="1076.2468" y1="350.63164" x2="1039.8979" y2="349.88955" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1415">
<line x1="1031.0038" y1="377.49074" x2="1069.9" y2="377.60306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1414">
<line x1="1074.2797" y1="405.63164" x2="1040.5233" y2="405.3191" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1413">
<rect x="762.8" y="419.5437" width="12.96" height="12.96" fill="yellow"/>
<rect x="762.8" y="419.5437" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
<g id="concat_pass_wire_wires">
<title>wires</title>
<g id="Line_1501">
<line x1="410" y1="266" x2="562.93445" y2="420.82253" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1509">
<line x1="776.16" y1="266" x2="788.8524" y2="196.19192" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1508">
<line x1="776.16" y1="266" x2="1001.6421" y2="209.8603" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1507">
<line x1="776.16" y1="266" x2="929.0944" y2="420.82253" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
</g>
<g id="concat_pass_wire_legend">
<title>legend</title>
<g id="Graphic_1490">
<text transform="translate(366.54814 145.5255)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">(a)</tspan>
</text>
</g>
<g id="Graphic_1499">
<rect x="505.44" y="488.88" width="454.32" height="57.6" fill="white"/>
<rect x="505.44" y="488.88" width="454.32" height="57.6" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1498">
<rect x="514.1" y="496.6278" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="514.1" y="496.6278" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1497">
<text transform="translate(538.1717 492.45767)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">Starting routing tracks</tspan>
</text>
</g>
<g id="Graphic_1496">
<rect x="725.2653" y="496.58" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="725.2653" y="496.58" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1495">
<text transform="translate(741.1591 492.45767)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="2.25" y="16">Ending routing tracks </tspan>
</text>
</g>
<g id="Graphic_1494">
<rect x="514.1" y="522.5078" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="514.1" y="522.5078" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1493">
<text transform="translate(532.7875 517.6055)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="2.25" y="16">Passing routing tracks </tspan>
</text>
</g>
<g id="Graphic_1492">
<rect x="725.2653" y="523.5078" width="12.96" height="12.96" fill="yellow"/>
<rect x="725.2653" y="523.5078" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1491">
<text transform="translate(753.9636 518.6055)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">Output pin of blocks</tspan>
</text>
</g>
<g id="Graphic_1500">
<text transform="translate(751.7481 145.5255)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">(b)</tspan>
</text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -0,0 +1,580 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="364.54 140.62 715.76 406.36" width="715.76" height="406.36">
<defs>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<g id="concat_wire" fill="none" stroke-opacity="1" fill-opacity="1" stroke="none" stroke-dasharray="none">
<title>concat_wire</title>
<g id="concat_wire_base">
<title>base</title>
<g id="Group_1411">
<g id="Graphic_362">
<rect x="403.24" y="178.38365" width="249.84" height="256.4605" fill="white"/>
<rect x="403.24" y="178.38365" width="249.84" height="256.4605" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Group_513">
<g id="Graphic_363">
<rect x="648.04" y="198.68417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="648.04" y="198.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_368">
<rect x="648.04" y="344.32614" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="648.04" y="344.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_367">
<rect x="648.04" y="228.232" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="648.04" y="228.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_366">
<rect x="648.04" y="257.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="257.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_510">
<rect x="648.04" y="289.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="289.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_509">
<rect x="648.04" y="316.87548" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="648.04" y="316.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_511">
<rect x="648.04" y="371.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="371.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_512">
<rect x="648.04" y="399.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="399.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_514">
<g id="Graphic_526">
<rect x="397.04" y="199.68417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="397.04" y="199.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_523">
<rect x="397.04" y="345.32614" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="397.04" y="345.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_522">
<rect x="397.04" y="229.232" width="12.96" height="12.96" fill="#80ff80"/>
<rect x="397.04" y="229.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_521">
<rect x="397.04" y="258.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="258.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_518">
<rect x="397.04" y="290.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="290.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_517">
<rect x="397.04" y="317.87548" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="397.04" y="317.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_516">
<rect x="397.04" y="372.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="372.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_515">
<rect x="397.04" y="400.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="400.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_527">
<g id="Graphic_539">
<rect x="623.53215" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="623.53215" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_536">
<rect x="477.8902" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="477.8902" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_535">
<rect x="593.9843" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="593.9843" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_534">
<rect x="564.4365" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="564.4365" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_531">
<rect x="532.7915" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="532.7915" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_530">
<rect x="505.34085" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="505.34085" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_529">
<rect x="450.4395" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="450.4395" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_528">
<rect x="422.98886" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="422.98886" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_540">
<g id="Graphic_552">
<rect x="623.53215" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="623.53215" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_549">
<rect x="477.8902" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="477.8902" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_548">
<rect x="593.9843" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="593.9843" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_547">
<rect x="564.4365" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="564.4365" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_544">
<rect x="532.7915" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="532.7915" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_543">
<rect x="505.34085" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="505.34085" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_542">
<rect x="450.4395" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="450.4395" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_541">
<rect x="422.98886" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="422.98886" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_972">
<line x1="429.88" y1="171.32417" x2="430.2512" y2="151.86237" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_973">
<line x1="457.52" y1="142.80835" x2="457.52" y2="160.58" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_975">
<line x1="485.16" y1="170.48" x2="485.5312" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_974">
<line x1="512.8" y1="141.96417" x2="512.8" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_979">
<line x1="540.44" y1="172.16835" x2="540.8112" y2="152.70655" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_978">
<line x1="571.26" y1="143.65253" x2="571.26" y2="161.42417" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_977">
<line x1="602.08" y1="170.48" x2="602.4512" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_976">
<line x1="629.72" y1="141.96417" x2="629.72" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_987">
<line x1="429.3205" y1="473.7113" x2="429.6917" y2="454.24953" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_986">
<line x1="456.9605" y1="445.1955" x2="456.9605" y2="462.96715" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_985">
<line x1="484.6005" y1="472.86715" x2="484.9717" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_984">
<line x1="512.2405" y1="444.35133" x2="512.2405" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_983">
<line x1="539.8805" y1="474.5555" x2="540.2517" y2="455.0937" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_982">
<line x1="570.7005" y1="446.0397" x2="570.7005" y2="463.8113" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_981">
<line x1="601.5205" y1="472.86715" x2="601.8917" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_980">
<line x1="629.1605" y1="444.35133" x2="629.1605" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_988">
<line x1="366.04" y1="205.84416" x2="387.14035" y2="206.02432" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_989">
<line x1="397.04" y1="236.12417" x2="377.93965" y2="236.28225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_991">
<line x1="366.56" y1="265.72417" x2="387.14054" y2="265.94024" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_990">
<line x1="394.04" y1="297.32417" x2="374.93965" y2="297.48225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_995">
<line x1="367.56" y1="323.70746" x2="384.1407" y2="323.90783" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_994">
<line x1="396.04" y1="350.64746" x2="374.9397" y2="350.81083" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_993">
<line x1="365.56" y1="378.69075" x2="386.14054" y2="378.9068" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_992">
<line x1="395.04" y1="407.18746" x2="375.93965" y2="407.34554" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1378">
<line x1="665.5342" y1="204.64416" x2="704.1402" y2="204.89886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1377">
<line x1="710.3468" y1="234.92417" x2="674.1398" y2="234.69445" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1376">
<line x1="666.20714" y1="264.52417" x2="701.11745" y2="264.77348" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1375">
<line x1="710.48684" y1="296.12417" x2="674.13986" y2="296.3128" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1374">
<line x1="667.5013" y1="322.50746" x2="700.5871" y2="322.75376" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1373">
<line x1="710.48684" y1="350.63164" x2="674.1379" y2="349.88955" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1372">
<line x1="665.2438" y1="377.49074" x2="704.14" y2="377.60306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1371">
<line x1="708.5197" y1="405.63164" x2="674.7633" y2="405.3191" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1396">
<rect x="397.04" y="419.5437" width="12.96" height="12.96" fill="yellow"/>
<rect x="397.04" y="419.5437" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1412">
<g id="Graphic_1482">
<rect x="769" y="178.38365" width="249.84" height="256.4605" fill="white"/>
<rect x="769" y="178.38365" width="249.84" height="256.4605" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Group_1473">
<g id="Graphic_1481">
<rect x="1013.8" y="198.68417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="1013.8" y="198.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1480">
<rect x="1013.8" y="344.32614" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="1013.8" y="344.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1479">
<rect x="1013.8" y="228.232" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="1013.8" y="228.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1478">
<rect x="1013.8" y="257.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="257.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1477">
<rect x="1013.8" y="289.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="289.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1476">
<rect x="1013.8" y="316.87548" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="1013.8" y="316.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1475">
<rect x="1013.8" y="371.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="371.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1474">
<rect x="1013.8" y="399.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="399.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1464">
<g id="Graphic_1472">
<rect x="762.8" y="199.68417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="762.8" y="199.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1471">
<rect x="762.8" y="345.32614" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="762.8" y="345.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1470">
<rect x="762.8" y="229.232" width="12.96" height="12.96" fill="#80ff80"/>
<rect x="762.8" y="229.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1469">
<rect x="762.8" y="258.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="258.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1468">
<rect x="762.8" y="290.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="290.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1467">
<rect x="762.8" y="317.87548" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="762.8" y="317.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1466">
<rect x="762.8" y="372.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="372.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1465">
<rect x="762.8" y="400.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="400.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1455">
<g id="Graphic_1463">
<rect x="989.2921" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="989.2921" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1462">
<rect x="843.6502" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="843.6502" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1461">
<rect x="959.7443" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="959.7443" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1460">
<rect x="930.1965" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="930.1965" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1459">
<rect x="898.5515" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="898.5515" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1458">
<rect x="871.1008" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="871.1008" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1457">
<rect x="816.1995" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="816.1995" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1456">
<rect x="788.7489" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="788.7489" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1446">
<g id="Graphic_1454">
<rect x="989.2921" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="989.2921" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1453">
<rect x="843.6502" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="843.6502" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1452">
<rect x="959.7443" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="959.7443" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1451">
<rect x="930.1965" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="930.1965" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1450">
<rect x="898.5515" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="898.5515" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1449">
<rect x="871.1008" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="871.1008" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1448">
<rect x="816.1995" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="816.1995" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1447">
<rect x="788.7489" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="788.7489" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_1445">
<line x1="795.64" y1="171.32417" x2="796.0112" y2="151.86237" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1444">
<line x1="823.28" y1="142.80835" x2="823.28" y2="160.58" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1443">
<line x1="850.92" y1="170.48" x2="851.2912" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1442">
<line x1="878.56" y1="141.96417" x2="878.56" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1441">
<line x1="906.2" y1="172.16835" x2="906.5712" y2="152.70655" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1440">
<line x1="937.02" y1="143.65253" x2="937.02" y2="161.42417" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1439">
<line x1="967.84" y1="170.48" x2="968.2112" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1438">
<line x1="995.48" y1="141.96417" x2="995.48" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1437">
<line x1="795.0805" y1="473.7113" x2="795.4517" y2="454.24953" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1436">
<line x1="822.7205" y1="445.1955" x2="822.7205" y2="462.96715" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1435">
<line x1="850.3605" y1="472.86715" x2="850.7317" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1434">
<line x1="878.0005" y1="444.35133" x2="878.0005" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1433">
<line x1="905.6405" y1="474.5555" x2="906.0117" y2="455.0937" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1432">
<line x1="936.4605" y1="446.0397" x2="936.4605" y2="463.8113" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1431">
<line x1="967.2805" y1="472.86715" x2="967.6517" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1430">
<line x1="994.9205" y1="444.35133" x2="994.9205" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1429">
<line x1="731.8" y1="205.84416" x2="752.90035" y2="206.02432" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1428">
<line x1="762.8" y1="236.12417" x2="743.69964" y2="236.28225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1427">
<line x1="732.32" y1="265.72417" x2="752.9005" y2="265.94024" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1426">
<line x1="759.8" y1="297.32417" x2="740.69964" y2="297.48225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1425">
<line x1="733.32" y1="323.70746" x2="749.9007" y2="323.90783" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1424">
<line x1="761.8" y1="350.64746" x2="740.6997" y2="350.81083" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1423">
<line x1="731.32" y1="378.69075" x2="751.9005" y2="378.9068" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1422">
<line x1="760.8" y1="407.18746" x2="741.69964" y2="407.34554" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1421">
<line x1="1031.2942" y1="204.64416" x2="1069.9002" y2="204.89886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1420">
<line x1="1076.1068" y1="234.92417" x2="1039.8998" y2="234.69445" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1419">
<line x1="1031.9671" y1="264.52417" x2="1066.8774" y2="264.77348" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1418">
<line x1="1076.2468" y1="296.12417" x2="1039.8998" y2="296.3128" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1417">
<line x1="1033.2613" y1="322.50746" x2="1066.3471" y2="322.75376" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1416">
<line x1="1076.2468" y1="350.63164" x2="1039.8979" y2="349.88955" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1415">
<line x1="1031.0038" y1="377.49074" x2="1069.9" y2="377.60306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1414">
<line x1="1074.2797" y1="405.63164" x2="1040.5233" y2="405.3191" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1413">
<rect x="762.8" y="419.5437" width="12.96" height="12.96" fill="yellow"/>
<rect x="762.8" y="419.5437" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
<g id="concat_wire_wires">
<title>wires</title>
<g id="Line_1503">
<line x1="410" y1="206.74365" x2="418.0052" y2="194.33896" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1502">
<line x1="410" y1="206.74365" x2="635.1" y2="206.74365" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1501">
<line x1="410" y1="206.74365" x2="564.3567" y2="416.60816" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1506">
<line x1="778.32" y1="206.74365" x2="786.3252" y2="194.33896" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1505">
<line x1="778.32" y1="206.74365" x2="1003.42" y2="206.74365" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1504">
<line x1="778.32" y1="206.74365" x2="932.6767" y2="416.60816" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
</g>
<g id="concat_wire_legend">
<title>legend</title>
<g id="Graphic_1490">
<text transform="translate(366.54814 145.5255)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">(a)</tspan>
</text>
</g>
<g id="Graphic_1499">
<rect x="505.44" y="488.88" width="454.32" height="57.6" fill="white"/>
<rect x="505.44" y="488.88" width="454.32" height="57.6" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1498">
<rect x="514.1" y="496.6278" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="514.1" y="496.6278" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1497">
<text transform="translate(538.1717 492.45767)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">Starting routing tracks</tspan>
</text>
</g>
<g id="Graphic_1496">
<rect x="725.2653" y="496.58" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="725.2653" y="496.58" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1495">
<text transform="translate(741.1591 492.45767)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="2.25" y="16">Ending routing tracks </tspan>
</text>
</g>
<g id="Graphic_1494">
<rect x="514.1" y="522.5078" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="514.1" y="522.5078" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1493">
<text transform="translate(532.7875 517.6055)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="2.25" y="16">Passing routing tracks </tspan>
</text>
</g>
<g id="Graphic_1492">
<rect x="725.2653" y="523.5078" width="12.96" height="12.96" fill="yellow"/>
<rect x="725.2653" y="523.5078" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1491">
<text transform="translate(753.9636 518.6055)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">Output pin of blocks</tspan>
</text>
</g>
<g id="Graphic_1500">
<text transform="translate(751.7481 145.5255)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">(b)</tspan>
</text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1,592 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="364.54 140.62 715.76 406.36" width="715.76" height="406.36">
<defs>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
<g>
<path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
</defs>
<g id="opin2all_sides" fill="none" stroke-opacity="1" fill-opacity="1" stroke="none" stroke-dasharray="none">
<title>opin2all_sides</title>
<g id="opin2all_sides_base">
<title>base</title>
<g id="Group_1411">
<g id="Graphic_362">
<rect x="403.24" y="178.38365" width="249.84" height="256.4605" fill="white"/>
<rect x="403.24" y="178.38365" width="249.84" height="256.4605" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Group_513">
<g id="Graphic_363">
<rect x="648.04" y="198.68417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="648.04" y="198.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_368">
<rect x="648.04" y="344.32614" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="648.04" y="344.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_367">
<rect x="648.04" y="228.232" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="648.04" y="228.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_366">
<rect x="648.04" y="257.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="257.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_510">
<rect x="648.04" y="289.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="289.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_509">
<rect x="648.04" y="316.87548" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="648.04" y="316.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_511">
<rect x="648.04" y="371.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="371.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_512">
<rect x="648.04" y="399.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="648.04" y="399.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_514">
<g id="Graphic_526">
<rect x="397.04" y="199.68417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="397.04" y="199.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_523">
<rect x="397.04" y="345.32614" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="397.04" y="345.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_522">
<rect x="397.04" y="229.232" width="12.96" height="12.96" fill="#80ff80"/>
<rect x="397.04" y="229.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_521">
<rect x="397.04" y="258.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="258.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_518">
<rect x="397.04" y="290.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="290.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_517">
<rect x="397.04" y="317.87548" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="397.04" y="317.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_516">
<rect x="397.04" y="372.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="372.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_515">
<rect x="397.04" y="400.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="397.04" y="400.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_527">
<g id="Graphic_539">
<rect x="623.53215" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="623.53215" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_536">
<rect x="477.8902" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="477.8902" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_535">
<rect x="593.9843" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="593.9843" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_534">
<rect x="564.4365" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="564.4365" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_531">
<rect x="532.7915" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="532.7915" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_530">
<rect x="505.34085" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="505.34085" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_529">
<rect x="450.4395" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="450.4395" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_528">
<rect x="422.98886" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="422.98886" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_540">
<g id="Graphic_552">
<rect x="623.53215" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="623.53215" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_549">
<rect x="477.8902" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="477.8902" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_548">
<rect x="593.9843" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="593.9843" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_547">
<rect x="564.4365" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="564.4365" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_544">
<rect x="532.7915" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="532.7915" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_543">
<rect x="505.34085" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="505.34085" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_542">
<rect x="450.4395" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="450.4395" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_541">
<rect x="422.98886" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="422.98886" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_972">
<line x1="429.88" y1="171.32417" x2="430.2512" y2="151.86237" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_973">
<line x1="457.52" y1="142.80835" x2="457.52" y2="160.58" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_975">
<line x1="485.16" y1="170.48" x2="485.5312" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_974">
<line x1="512.8" y1="141.96417" x2="512.8" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_979">
<line x1="540.44" y1="172.16835" x2="540.8112" y2="152.70655" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_978">
<line x1="571.26" y1="143.65253" x2="571.26" y2="161.42417" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_977">
<line x1="602.08" y1="170.48" x2="602.4512" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_976">
<line x1="629.72" y1="141.96417" x2="629.72" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_987">
<line x1="429.3205" y1="473.7113" x2="429.6917" y2="454.24953" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_986">
<line x1="456.9605" y1="445.1955" x2="456.9605" y2="462.96715" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_985">
<line x1="484.6005" y1="472.86715" x2="484.9717" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_984">
<line x1="512.2405" y1="444.35133" x2="512.2405" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_983">
<line x1="539.8805" y1="474.5555" x2="540.2517" y2="455.0937" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_982">
<line x1="570.7005" y1="446.0397" x2="570.7005" y2="463.8113" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_981">
<line x1="601.5205" y1="472.86715" x2="601.8917" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_980">
<line x1="629.1605" y1="444.35133" x2="629.1605" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_988">
<line x1="366.04" y1="205.84416" x2="387.14035" y2="206.02432" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_989">
<line x1="397.04" y1="236.12417" x2="377.93965" y2="236.28225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_991">
<line x1="366.56" y1="265.72417" x2="387.14054" y2="265.94024" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_990">
<line x1="394.04" y1="297.32417" x2="374.93965" y2="297.48225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_995">
<line x1="367.56" y1="323.70746" x2="384.1407" y2="323.90783" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_994">
<line x1="396.04" y1="350.64746" x2="374.9397" y2="350.81083" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_993">
<line x1="365.56" y1="378.69075" x2="386.14054" y2="378.9068" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_992">
<line x1="395.04" y1="407.18746" x2="375.93965" y2="407.34554" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1378">
<line x1="665.5342" y1="204.64416" x2="704.1402" y2="204.89886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1377">
<line x1="710.3468" y1="234.92417" x2="674.1398" y2="234.69445" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1376">
<line x1="666.20714" y1="264.52417" x2="701.11745" y2="264.77348" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1375">
<line x1="710.48684" y1="296.12417" x2="674.13986" y2="296.3128" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1374">
<line x1="667.5013" y1="322.50746" x2="700.5871" y2="322.75376" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1373">
<line x1="710.48684" y1="350.63164" x2="674.1379" y2="349.88955" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1372">
<line x1="665.2438" y1="377.49074" x2="704.14" y2="377.60306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1371">
<line x1="708.5197" y1="405.63164" x2="674.7633" y2="405.3191" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1396">
<rect x="397.04" y="419.5437" width="12.96" height="12.96" fill="yellow"/>
<rect x="397.04" y="419.5437" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1412">
<g id="Graphic_1482">
<rect x="769" y="178.38365" width="249.84" height="256.4605" fill="white"/>
<rect x="769" y="178.38365" width="249.84" height="256.4605" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Group_1473">
<g id="Graphic_1481">
<rect x="1013.8" y="198.68417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="1013.8" y="198.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1480">
<rect x="1013.8" y="344.32614" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="1013.8" y="344.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1479">
<rect x="1013.8" y="228.232" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="1013.8" y="228.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1478">
<rect x="1013.8" y="257.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="257.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1477">
<rect x="1013.8" y="289.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="289.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1476">
<rect x="1013.8" y="316.87548" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="1013.8" y="316.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1475">
<rect x="1013.8" y="371.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="371.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1474">
<rect x="1013.8" y="399.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="1013.8" y="399.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1464">
<g id="Graphic_1472">
<rect x="762.8" y="199.68417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="762.8" y="199.68417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1471">
<rect x="762.8" y="345.32614" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="762.8" y="345.32614" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1470">
<rect x="762.8" y="229.232" width="12.96" height="12.96" fill="#80ff80"/>
<rect x="762.8" y="229.232" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1469">
<rect x="762.8" y="258.77982" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="258.77982" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1468">
<rect x="762.8" y="290.4248" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="290.4248" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1467">
<rect x="762.8" y="317.87548" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="762.8" y="317.87548" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1466">
<rect x="762.8" y="372.7768" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="372.7768" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1465">
<rect x="762.8" y="400.22746" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="762.8" y="400.22746" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1455">
<g id="Graphic_1463">
<rect x="989.2921" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="989.2921" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1462">
<rect x="843.6502" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="843.6502" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1461">
<rect x="959.7443" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="959.7443" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1460">
<rect x="930.1965" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="930.1965" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1459">
<rect x="898.5515" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="898.5515" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1458">
<rect x="871.1008" y="171.32417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="871.1008" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1457">
<rect x="816.1995" y="171.32417" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="816.1995" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1456">
<rect x="788.7489" y="171.32417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="788.7489" y="171.32417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Group_1446">
<g id="Graphic_1454">
<rect x="989.2921" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="989.2921" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1453">
<rect x="843.6502" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="843.6502" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1452">
<rect x="959.7443" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="959.7443" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1451">
<rect x="930.1965" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="930.1965" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1450">
<rect x="898.5515" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="898.5515" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1449">
<rect x="871.1008" y="428.36417" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="871.1008" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1448">
<rect x="816.1995" y="428.36417" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="816.1995" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1447">
<rect x="788.7489" y="428.36417" width="12.96" height="12.96" fill="red"/>
<rect x="788.7489" y="428.36417" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
<g id="Line_1445">
<line x1="795.64" y1="171.32417" x2="796.0112" y2="151.86237" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1444">
<line x1="823.28" y1="142.80835" x2="823.28" y2="160.58" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1443">
<line x1="850.92" y1="170.48" x2="851.2912" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1442">
<line x1="878.56" y1="141.96417" x2="878.56" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1441">
<line x1="906.2" y1="172.16835" x2="906.5712" y2="152.70655" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1440">
<line x1="937.02" y1="143.65253" x2="937.02" y2="161.42417" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1439">
<line x1="967.84" y1="170.48" x2="968.2112" y2="151.0182" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1438">
<line x1="995.48" y1="141.96417" x2="995.48" y2="159.73582" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1437">
<line x1="795.0805" y1="473.7113" x2="795.4517" y2="454.24953" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1436">
<line x1="822.7205" y1="445.1955" x2="822.7205" y2="462.96715" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1435">
<line x1="850.3605" y1="472.86715" x2="850.7317" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1434">
<line x1="878.0005" y1="444.35133" x2="878.0005" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1433">
<line x1="905.6405" y1="474.5555" x2="906.0117" y2="455.0937" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1432">
<line x1="936.4605" y1="446.0397" x2="936.4605" y2="463.8113" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1431">
<line x1="967.2805" y1="472.86715" x2="967.6517" y2="453.40535" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1430">
<line x1="994.9205" y1="444.35133" x2="994.9205" y2="462.123" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1429">
<line x1="731.8" y1="205.84416" x2="752.90035" y2="206.02432" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1428">
<line x1="762.8" y1="236.12417" x2="743.69964" y2="236.28225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1427">
<line x1="732.32" y1="265.72417" x2="752.9005" y2="265.94024" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1426">
<line x1="759.8" y1="297.32417" x2="740.69964" y2="297.48225" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1425">
<line x1="733.32" y1="323.70746" x2="749.9007" y2="323.90783" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1424">
<line x1="761.8" y1="350.64746" x2="740.6997" y2="350.81083" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1423">
<line x1="731.32" y1="378.69075" x2="751.9005" y2="378.9068" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1422">
<line x1="760.8" y1="407.18746" x2="741.69964" y2="407.34554" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1421">
<line x1="1031.2942" y1="204.64416" x2="1069.9002" y2="204.89886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1420">
<line x1="1076.1068" y1="234.92417" x2="1039.8998" y2="234.69445" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1419">
<line x1="1031.9671" y1="264.52417" x2="1066.8774" y2="264.77348" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1418">
<line x1="1076.2468" y1="296.12417" x2="1039.8998" y2="296.3128" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1417">
<line x1="1033.2613" y1="322.50746" x2="1066.3471" y2="322.75376" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1416">
<line x1="1076.2468" y1="350.63164" x2="1039.8979" y2="349.88955" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1415">
<line x1="1031.0038" y1="377.49074" x2="1069.9" y2="377.60306" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Line_1414">
<line x1="1074.2797" y1="405.63164" x2="1040.5233" y2="405.3191" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1413">
<rect x="762.8" y="419.5437" width="12.96" height="12.96" fill="yellow"/>
<rect x="762.8" y="419.5437" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</g>
</g>
<g id="opin2all_sides_wires">
<title>wires</title>
<g id="Line_1406">
<path d="M 407.3898 426.1812 C 407.3898 426.1812 438.39373 412.8658 438.3898 391 C 438.3874 377.5346 426.6264 364.72587 417.59013 356.8716" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1407">
<path d="M 407.3898 426.1812 C 407.3898 426.1812 470.30214 386.4459 470.2982 332 C 470.2953 291.4208 435.344 256.89188 417.54087 241.9359" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1409">
<path d="M 776.5 427 C 776.5 427 797.6378 405.5312 796.5046 384 C 795.9039 372.5868 789.1951 364.00094 783.0226 358.4519" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1408">
<path d="M 776.5 427 C 776.5 427 820.4932 383.39456 819.36 329 C 818.5508 290.1589 795.004 258.85852 781.6044 244.1343" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1483">
<path d="M 776.5 427 C 776.5 427 796.6181 406.30017 810.5 408 C 817.1427 408.8134 820.8628 414.5728 822.9363 420.35843" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1484">
<path d="M 776.5 427 C 776.5 427 819.3213 392.30017 865.5 394 C 896.4812 395.1404 919.1997 412.3047 930.7975 423.4788" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1485">
<path d="M 776.5 427 C 776.5 427 806.6569 401.59694 875.5 371 C 927.455 347.90887 983.0061 330.05415 1007.1343 322.68376" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1486">
<path d="M 776.5 427 C 776.5 427 832.5237 381.3271 902.5 319 C 954.7636 272.44945 996.4549 232.9577 1014.2125 215.94759" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1487">
<path d="M 776.5 427 C 776.5 427 844.9537 380.8431 881.5 312 C 907.8248 262.41144 908.6778 217.8486 907.0957 196.80031" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
<g id="Line_1488">
<path d="M 776.5 427 C 776.5 427 841.8201 370.1264 847.5 301 C 851.7266 249.56022 821.4487 209.33536 805.6783 192.119" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</g>
</g>
<g id="opin2all_sides_legend">
<title>legend</title>
<g id="Graphic_1490">
<text transform="translate(366.54814 145.5255)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">(a)</tspan>
</text>
</g>
<g id="Graphic_1499">
<rect x="505.44" y="488.88" width="454.32" height="57.6" fill="white"/>
<rect x="505.44" y="488.88" width="454.32" height="57.6" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1498">
<rect x="514.1" y="496.6278" width="12.96" height="12.96" fill="#40ff40"/>
<rect x="514.1" y="496.6278" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1497">
<text transform="translate(538.1717 492.45767)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">Starting routing tracks</tspan>
</text>
</g>
<g id="Graphic_1496">
<rect x="725.2653" y="496.58" width="12.96" height="12.96" fill="#ff4040"/>
<rect x="725.2653" y="496.58" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1495">
<text transform="translate(741.1591 492.45767)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="2.25" y="16">Ending routing tracks </tspan>
</text>
</g>
<g id="Graphic_1494">
<rect x="514.1" y="522.5078" width="12.96" height="12.96" fill="#80ffff"/>
<rect x="514.1" y="522.5078" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1493">
<text transform="translate(532.7875 517.6055)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="2.25" y="16">Passing routing tracks </tspan>
</text>
</g>
<g id="Graphic_1492">
<rect x="725.2653" y="523.5078" width="12.96" height="12.96" fill="yellow"/>
<rect x="725.2653" y="523.5078" width="12.96" height="12.96" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
<g id="Graphic_1491">
<text transform="translate(753.9636 518.6055)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">Output pin of blocks</tspan>
</text>
</g>
<g id="Graphic_1500">
<text transform="translate(751.7481 145.5255)" fill="black">
<tspan font-family="Times New Roman" font-style="italic" font-weight="bold" font-size="18" fill="black" x="0" y="16">(b)</tspan>
</text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -140,6 +140,9 @@ echo -e "Testing through channels in tileable routing";
run-task fpga_verilog/thru_channel/thru_narrow_tile $@ run-task fpga_verilog/thru_channel/thru_narrow_tile $@
run-task fpga_verilog/thru_channel/thru_wide_tile $@ run-task fpga_verilog/thru_channel/thru_wide_tile $@
echo -e "Testing wire concatation in tileable routing";
run-task fpga_verilog/rr_concat_wire $@
echo -e "Testing the generation of preconfigured fabric wrapper for different HDL simulators"; echo -e "Testing the generation of preconfigured fabric wrapper for different HDL simulators";
run-task fpga_verilog/verilog_netlist_formats/embed_bitstream_none $@ run-task fpga_verilog/verilog_netlist_formats/embed_bitstream_none $@
run-task fpga_verilog/verilog_netlist_formats/embed_bitstream_modelsim $@ run-task fpga_verilog/verilog_netlist_formats/embed_bitstream_modelsim $@

View File

@ -19,7 +19,7 @@ fpga_flow=vpr_blif
openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_shell_scripts/fix_device_example_script.openfpga openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_shell_scripts/fix_device_example_script.openfpga
openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k6_N10_40nm_openfpga.xml openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k6_N10_40nm_openfpga.xml
openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/auto_sim_openfpga.xml openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/auto_sim_openfpga.xml
openfpga_vpr_device_layout=2x2 openfpga_vpr_device_layout=auto
[ARCHITECTURES] [ARCHITECTURES]
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k6_N10_tileable_40nm.xml arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k6_N10_tileable_40nm.xml

View File

@ -0,0 +1,173 @@
#####################################################################
# A script to create a bus group file based on an input verilog file
# The bug group file is an input required by OpenFPGA
#####################################################################
import os
from os.path import dirname, abspath
import argparse
import logging
import subprocess
import hashlib
import yaml
import pyverilog
from pyverilog.dataflow.dataflow_analyzer import VerilogDataflowAnalyzer
from xml.dom import minidom
#####################################################################
# Error codes
#####################################################################
error_codes = {
"SUCCESS": 0,
"MD5_ERROR": 1,
"OPTION_ERROR": 2,
"FILE_ERROR": 3
}
#####################################################################
# Initialize logger
#####################################################################
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO);
#####################################################################
# Generate the string for a Verilog port
#####################################################################
def gen_verilog_port_str(port_name, msb, lsb):
port_str = str(port_name) + "[" + str(msb) + ":" + str(lsb) + "]"
return port_str
#####################################################################
# Generate the string for a flatten Verilog port
#####################################################################
def gen_flatten_verilog_port_str(port_name, pin_id):
port_str = str(port_name) + "_" + str(pin_id) + "_"
return port_str
#####################################################################
# Parse a verilog file and collect bus port information
#####################################################################
def parse_verilog_file_bus_ports(verilog_files, top_module):
# Check if verilog file exists
verilog_file_list = []
for verilog_f in verilog_files:
print(verilog_f)
verilog_f_abspath = os.path.abspath(verilog_f["name"])
if not os.path.exists(verilog_f_abspath):
raise IOError("file not found: " + verilog_f_abspath)
verilog_file_list.append(verilog_f_abspath)
# Parse verilog file
analyzer = VerilogDataflowAnalyzer(verilog_file_list, top_module)
analyzer.generate()
# Get port information
terms = analyzer.getTerms()
# Create XML tree
xml = minidom.Document()
bus_group = xml.createElement("bus_group")
xml.appendChild(bus_group)
for tk, tv in sorted(terms.items(), key=lambda x: str(x[0])):
logging.debug(tv.name)
logging.debug(tv.termtype)
logging.debug("[" + str(tv.lsb) + ":" + str(tv.msb) + "]")
for tk, tv in sorted(terms.items(), key=lambda x: str(x[0])):
# Skip ports that do not belong to top module
if (top_module != str(tv.name).split(".")[-2]):
continue
port_name = str(tv.name).split(".")[-1]
# Skip minus lsb or msb, which are in don't care set
if (("Minus" == str(tv.lsb)) or ("Minus" == str(tv.msb))):
continue
port_lsb = int(str(tv.lsb))
port_msb = int(str(tv.msb))
# Only care input and outports
if ((not ("Input" in tv.termtype)) and (not ("Output" in tv.termtype))):
continue
# Only care bus (msb - lsb > 0)
if (abs(port_lsb - port_msb) == 0):
continue
# Reaching here, this is a bus port we need
# Get the second part of the name, which is the port name
cur_bus = xml.createElement("bus")
cur_bus.setAttribute("name", gen_verilog_port_str(port_name, port_msb, port_lsb))
# Get if this is little endian or not
cur_bus.setAttribute("big_endian", "false")
if (port_lsb > port_msb):
cur_bus.setAttribute("big_endian", "true")
bus_group.appendChild(cur_bus)
# Add all the pins
for ipin in range(min([port_msb, port_lsb]), max([port_msb, port_lsb]) + 1):
cur_pin = xml.createElement("pin")
cur_pin.setAttribute('id', str(ipin))
cur_pin.setAttribute('name', gen_flatten_verilog_port_str(port_name, ipin))
cur_bus.appendChild(cur_pin)
return xml, bus_group
#####################################################################
# Generate bus group files with a given task list
#####################################################################
def generate_bus_group_files(task_db):
# Iterate over all the tasks
for verilog_fname in task_db.keys():
space_limit = 120
log_str = "Parsing verilog file: "
top_module_name = task_db[verilog_fname]["top_module"]
logging_space = "." * (space_limit - len(log_str) - len(top_module_name))
logging.info(log_str + top_module_name)
xml, bus_group_data = parse_verilog_file_bus_ports(task_db[verilog_fname]["source"], top_module_name)
logging.info(log_str + top_module_name + logging_space + "Done")
# Write bus ports to an XML file
bus_group_frelname = task_db[verilog_fname]["bus_group_file"]
bus_group_fname = os.path.abspath(bus_group_frelname)
log_str = "Writing bus group file:"
logging_space = "." * (space_limit - len(log_str) - len(bus_group_frelname))
logging.info(log_str + bus_group_frelname)
xml_str = xml.toprettyxml(indent="\t")
with open(bus_group_fname, "w") as bus_group_f:
bus_group_f.write(xml_str)
logging.info(log_str + bus_group_frelname + logging_space + "Done")
#####################################################################
# Read task list from a yaml file
#####################################################################
def read_yaml_to_task_database(yaml_filename):
task_db = {}
with open(yaml_filename, 'r') as stream:
try:
task_db = yaml.load(stream, Loader=yaml.FullLoader)
logging.info("Found " + str(len(task_db)) + " tasks to create symbolic links")
except yaml.YAMLError as exc:
logging.error(exc)
exit(error_codes["FILE_ERROR"]);
return task_db
#####################################################################
# Write result database to a yaml file
#####################################################################
def write_result_database_to_yaml(result_db, yaml_filename):
with open(yaml_filename, 'w') as yaml_file:
yaml.dump(result_db, yaml_file, default_flow_style=False)
#####################################################################
# Main function
#####################################################################
if __name__ == '__main__':
# Execute when the module is not initialized from an import statement
# Parse the options and apply sanity checks
parser = argparse.ArgumentParser(description='Create bus group files for Verilog inputs')
parser.add_argument('--task_list',
required=True,
help='Configuration file in YAML format which contains a list of input Verilog and output bus group files')
args = parser.parse_args()
# Create a database for tasks
task_db = {}
task_db = read_yaml_to_task_database(args.task_list)
# Generate links based on the task list in database
generate_bus_group_files(task_db)
logging.info("Created " + str(len(task_db)) + " bus group files")
exit(error_codes["SUCCESS"])

View File

@ -0,0 +1,5 @@
counter8:
source:
- name: counter_output_verilog.v
top_module: counter
bus_group_file: bus_group.xml

View File

@ -0,0 +1,7 @@
<pin_constraints>
<!-- For a given .blif file, we want to assign
- the reset signal to the op_reset[0] port of the FPGA fabric
-->
<set_io pin="op_reset[0]" net="reset"/>
</pin_constraints>

View File

@ -0,0 +1,48 @@
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
# Configuration file for running experiments
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
# timeout_each_job : FPGA Task script splits fpga flow into multiple jobs
# Each job execute fpga_flow script on combination of architecture & benchmark
# timeout_each_job is timeout for each job
# = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
[GENERAL]
run_engine=openfpga_shell
power_tech_file = ${PATH:OPENFPGA_PATH}/openfpga_flow/tech/PTM_45nm/45nm.xml
power_analysis = false
spice_output=false
verilog_output=true
timeout_each_job = 20*60
fpga_flow=yosys_vpr
[OpenFPGA_SHELL]
openfpga_shell_template=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_shell_scripts/auto_bus_group_example_script.openfpga
openfpga_arch_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_arch/k6_frac_N10_adder_chain_dpram8K_dsp36_fracff_40nm_openfpga.xml
openfpga_sim_setting_file=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_simulation_settings/fixed_sim_openfpga.xml
openfpga_verilog_port_mapping=--explicit_port_mapping
[ARCHITECTURES]
arch0=${PATH:OPENFPGA_PATH}/openfpga_flow/vpr_arch/k6_frac_N10_tileableConcatWire_adder_chain_dpram8K_dsp36_fracff_40nm.xml
[BENCHMARKS]
bench0=${PATH:OPENFPGA_PATH}/openfpga_flow/benchmarks/micro_benchmark/counters/counter_8bit_async_reset/counter.v
[SYNTHESIS_PARAM]
# Yosys script parameters
bench_yosys_cell_sim_verilog_common=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_yosys_techlib/k6_frac_N10_tileable_adder_chain_dpram8K_dsp36_fracff_40nm_cell_sim.v
bench_yosys_dff_map_verilog_common=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_yosys_techlib/k6_frac_N10_tileable_adder_chain_dpram8K_dsp36_fracff_40nm_dff_map.v
bench_yosys_bram_map_rules_common=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_yosys_techlib/k6_frac_N10_tileable_adder_chain_dpram8K_dsp36_40nm_bram.txt
bench_yosys_bram_map_verilog_common=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_yosys_techlib/k6_frac_N10_tileable_adder_chain_dpram8K_dsp36_40nm_bram_map.v
bench_yosys_dsp_map_verilog_common=${PATH:OPENFPGA_PATH}/openfpga_flow/openfpga_yosys_techlib/k6_frac_N10_tileable_adder_chain_dpram8K_dsp36_40nm_dsp_map.v
bench_yosys_dsp_map_parameters_common=-D DSP_A_MAXWIDTH=36 -D DSP_B_MAXWIDTH=36 -D DSP_A_MINWIDTH=2 -D DSP_B_MINWIDTH=2 -D DSP_NAME=mult_36x36
bench_read_verilog_options_common = -nolatches
bench_yosys_common=${PATH:OPENFPGA_PATH}/openfpga_flow/misc/ys_tmpl_yosys_vpr_dff_flow.ys
bench_yosys_rewrite_common=${PATH:OPENFPGA_PATH}/openfpga_flow/misc/ys_tmpl_yosys_vpr_flow_with_rewrite.ys
bench0_top = counter
bench0_openfpga_pin_constraints_file=${PATH:TASK_DIR}/config/pin_constraints_reset.xml
bench0_openfpga_bus_group_file=bus_group.xml
[SCRIPT_PARAM_MIN_ROUTE_CHAN_WIDTH]
end_flow_with_test=
vpr_fpga_verilog_formal_verification_top_netlist=

View File

@ -5,8 +5,9 @@ Please reveal the following architecture features in the names to help quickly s
* The keyword 'frac' is to specify if fracturable LUT is used or not. * The keyword 'frac' is to specify if fracturable LUT is used or not.
* The keyword 'Native' is to specify if fracturable LUT design is a native one (without mode switch) or a standard one (with mode switch). * The keyword 'Native' is to specify if fracturable LUT design is a native one (without mode switch) or a standard one (with mode switch).
- N<le\_size>: Number of logic elements for a CLB. If you have multiple CLB architectures, this should be largest number. - N<le\_size>: Number of logic elements for a CLB. If you have multiple CLB architectures, this should be largest number.
- tileable<IO>: If the routing architecture is tileable or not. - tileable<IO|ConcatWire>: If the routing architecture is tileable or not.
* The keyword 'IO' specifies if the I/O tile is tileable or not * The keyword 'IO' specifies if the I/O tile is tileable or not
* The keyword 'ConcatWire' specifies if the routing wires can be continued in the same direction or not. For example, L4 -> L1
- fracff<2edge>: Use multi-mode flip-flop model, where reset/set polarity is configurable. When 2edge is specified, clock polarity can be switched between postive edge triggered and negative edge triggered - fracff<2edge>: Use multi-mode flip-flop model, where reset/set polarity is configurable. When 2edge is specified, clock polarity can be switched between postive edge triggered and negative edge triggered
- adder\_chain: If hard adder/carry chain is used inside CLBs - adder\_chain: If hard adder/carry chain is used inside CLBs
- register\_chain: If shift register chain is used inside CLBs - register\_chain: If shift register chain is used inside CLBs

View File

@ -67,7 +67,7 @@
</tiles> </tiles>
<!-- ODIN II specific config ends --> <!-- ODIN II specific config ends -->
<!-- Physical descriptions begin --> <!-- Physical descriptions begin -->
<layout tileable="true"> <layout tileable="true" concat_wire="false" concat_pass_wire="true">
<auto_layout aspect_ratio="1.0"> <auto_layout aspect_ratio="1.0">
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners--> <!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
<perimeter type="io" priority="100"/> <perimeter type="io" priority="100"/>

View File

@ -103,7 +103,7 @@
</tiles> </tiles>
<!-- ODIN II specific config ends --> <!-- ODIN II specific config ends -->
<!-- Physical descriptions begin --> <!-- Physical descriptions begin -->
<layout tileable="true"> <layout tileable="true" concat_wire="false" concat_pass_wire="true">
<auto_layout aspect_ratio="1.0"> <auto_layout aspect_ratio="1.0">
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners--> <!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
<perimeter type="io" priority="100"/> <perimeter type="io" priority="100"/>

View File

@ -67,7 +67,7 @@
</tiles> </tiles>
<!-- ODIN II specific config ends --> <!-- ODIN II specific config ends -->
<!-- Physical descriptions begin --> <!-- Physical descriptions begin -->
<layout tileable="true"> <layout tileable="true" opin2all_sides="true" concat_wire="true" concat_pass_wire="false">
<auto_layout aspect_ratio="1.0"> <auto_layout aspect_ratio="1.0">
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners--> <!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
<perimeter type="io" priority="100"/> <perimeter type="io" priority="100"/>

View File

@ -234,7 +234,7 @@
</tiles> </tiles>
<!-- ODIN II specific config ends --> <!-- ODIN II specific config ends -->
<!-- Physical descriptions begin --> <!-- Physical descriptions begin -->
<layout tileable="true" through_channel="false"> <layout tileable="true" through_channel="false" concat_pass_wire="true">
<auto_layout aspect_ratio="1.0"> <auto_layout aspect_ratio="1.0">
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners--> <!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
<perimeter type="io" priority="100"/> <perimeter type="io" priority="100"/>

View File

@ -302,7 +302,7 @@
</tiles> </tiles>
<!-- ODIN II specific config ends --> <!-- ODIN II specific config ends -->
<!-- Physical descriptions begin --> <!-- Physical descriptions begin -->
<layout tileable="true" through_channel="false"> <layout tileable="true" through_channel="false" concat_pass_wire="true">
<auto_layout aspect_ratio="1.0"> <auto_layout aspect_ratio="1.0">
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners--> <!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
<perimeter type="io" priority="100"/> <perimeter type="io" priority="100"/>

View File

@ -146,7 +146,7 @@
<!-- Apply tileable routing architecture. <!-- Apply tileable routing architecture.
This is strongly recommended if you want to PnR large FPGA fabric This is strongly recommended if you want to PnR large FPGA fabric
--> -->
<layout tileable="true"> <layout tileable="true" concat_pass_wire="true">
<auto_layout aspect_ratio="1.0"> <auto_layout aspect_ratio="1.0">
<!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners--> <!--Perimeter of 'io' blocks with 'EMPTY' blocks at corners-->
<perimeter type="io" priority="100"/> <perimeter type="io" priority="100"/>

@ -1 +1 @@
Subproject commit 254d38faa02884c9b48d6a82e18fd54d9b567d44 Subproject commit eb9722851bd3de03df7fb9ace5bdfb9cb078ca83