[Docs] Add SSP to dialect diagram. (#4295)

This commit is contained in:
Julian Oppermann 2022-11-17 08:57:21 +01:00 committed by GitHub
parent fddd6cd49c
commit a7da8470fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 261 additions and 243 deletions

View File

@ -44,6 +44,7 @@ digraph G {
Calyx [URL="https://circt.llvm.org/docs/Dialects/Calyx/"]
FIRRTL [URL="https://circt.llvm.org/docs/Dialects/FIRRTL/"]
Pipeline [URL="https://circt.llvm.org/docs/Dialects/Pipeline/"]
SSP [URL="https://circt.llvm.org/docs/Dialects/SSP/"]
MSFT [URL="https://circt.llvm.org/docs/Dialects/MSFT/"]
ESI [URL="https://circt.llvm.org/docs/Dialects/ESI/"]
FSM [URL="https://circt.llvm.org/docs/Dialects/FSM/"]
@ -145,6 +146,7 @@ digraph G {
PyCDE -> MSFT
PyCDE -> HWArith
PyCDE -> FSM
Scheduling -> SSP [dir=both]
Scheduling -> MSFT [dir=both, style=dashed]
ServiceDesc -> SoftwareAPI [style=dashed]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 166 KiB

View File

@ -1,367 +1,383 @@
<?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">
<!-- Generated by graphviz version 2.43.0 (0)
<!-- Generated by graphviz version 7.0.0 (20221023.0053)
-->
<!-- Title: G Pages: 1 -->
<svg width="770pt" height="992pt"
viewBox="0.00 0.00 769.87 992.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="689pt" height="992pt"
viewBox="0.00 0.00 688.50 992.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 988)">
<title>G</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-988 765.87,-988 765.87,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-988 684.5,-988 684.5,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_mlir_frontends</title>
<polygon fill="none" stroke="black" points="164.87,-901 164.87,-976 404.87,-976 404.87,-901 164.87,-901"/>
<text text-anchor="middle" x="284.87" y="-960.8" font-family="Times,serif" font-size="14.00">Upstream frontends (selection)</text>
<polygon fill="none" stroke="black" points="180.5,-901 180.5,-976 365.5,-976 365.5,-901 180.5,-901"/>
<text text-anchor="middle" x="273" y="-960.8" font-family="Times,serif" font-size="14.00">Upstream frontends (selection)</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_mlir</title>
<polygon fill="none" stroke="black" points="114.87,-802 114.87,-893 402.87,-893 402.87,-802 114.87,-802"/>
<text text-anchor="middle" x="258.87" y="-877.8" font-family="Times,serif" font-size="14.00">Upstream MLIR</text>
<polygon fill="none" stroke="black" points="84.5,-802 84.5,-893 368.5,-893 368.5,-802 84.5,-802"/>
<text text-anchor="middle" x="226.5" y="-877.8" font-family="Times,serif" font-size="14.00">Upstream MLIR</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_std_arith_dialect</title>
<polygon fill="none" stroke="black" points="256.87,-810 256.87,-862 394.87,-862 394.87,-810 256.87,-810"/>
<polygon fill="none" stroke="black" points="222.5,-810 222.5,-862 360.5,-862 360.5,-810 222.5,-810"/>
</g>
<g id="clust4" class="cluster">
<title>cluster_circt</title>
<polygon fill="none" stroke="black" points="155.87,-212 155.87,-794 655.87,-794 655.87,-212 155.87,-212"/>
<text text-anchor="middle" x="405.87" y="-778.8" font-family="Times,serif" font-size="14.00">CIRCT</text>
<polygon fill="none" stroke="black" points="129.5,-212 129.5,-794 593.5,-794 593.5,-212 129.5,-212"/>
<text text-anchor="middle" x="361.5" y="-778.8" font-family="Times,serif" font-size="14.00">CIRCT</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_RTL</title>
<polygon fill="none" stroke="black" points="234.87,-356 234.87,-431 528.87,-431 528.87,-356 234.87,-356"/>
<text text-anchor="middle" x="381.87" y="-415.8" font-family="Times,serif" font-size="14.00">Core dialects</text>
<polygon fill="none" stroke="black" points="210.5,-356 210.5,-431 486.5,-431 486.5,-356 210.5,-356"/>
<text text-anchor="middle" x="348.5" y="-415.8" font-family="Times,serif" font-size="14.00">Core dialects</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_input_langs</title>
<polygon fill="none" stroke="black" points="412.87,-901 412.87,-976 753.87,-976 753.87,-901 412.87,-901"/>
<text text-anchor="middle" x="583.37" y="-960.8" font-family="Times,serif" font-size="14.00">Input languages</text>
<polygon fill="none" stroke="black" points="373.5,-901 373.5,-976 672.5,-976 672.5,-901 373.5,-901"/>
<text text-anchor="middle" x="523" y="-960.8" font-family="Times,serif" font-size="14.00">Input languages</text>
</g>
<!-- PyTorch -->
<g id="node1" class="node">
<title>PyTorch</title>
<polygon fill="white" stroke="black" points="396.87,-945 322.87,-945 322.87,-909 396.87,-909 396.87,-945"/>
<text text-anchor="middle" x="359.87" y="-923.3" font-family="Times,serif" font-size="14.00">PyTorch</text>
<polygon fill="white" stroke="black" points="357,-945 294,-945 294,-909 357,-909 357,-945"/>
<text text-anchor="middle" x="325.5" y="-923.3" font-family="Times,serif" font-size="14.00">PyTorch</text>
</g>
<!-- CF -->
<g id="node5" class="node">
<title>CF</title>
<polygon fill="#beaed4" stroke="black" points="386.87,-854 332.87,-854 332.87,-818 386.87,-818 386.87,-854"/>
<text text-anchor="middle" x="359.87" y="-832.3" font-family="Times,serif" font-size="14.00">CF</text>
<polygon fill="#beaed4" stroke="black" points="352.5,-854 298.5,-854 298.5,-818 352.5,-818 352.5,-854"/>
<text text-anchor="middle" x="325.5" y="-832.3" font-family="Times,serif" font-size="14.00">CF</text>
</g>
<!-- PyTorch&#45;&gt;CF -->
<g id="edge1" class="edge">
<title>PyTorch&#45;&gt;CF</title>
<path fill="none" stroke="black" d="M355.62,-908.84C355.47,-907.06 355.34,-905.19 355.22,-903.24"/>
<polygon fill="black" stroke="black" points="358.7,-902.84 354.78,-893 351.71,-903.14 358.7,-902.84"/>
<path fill="none" stroke="black" d="M321.26,-908.84C321.13,-907.36 321.01,-905.81 320.91,-904.21"/>
<polygon fill="black" stroke="black" points="324.42,-904.34 320.48,-894.51 317.43,-904.66 324.42,-904.34"/>
</g>
<!-- PyTorch&#45;&gt;CF -->
<!-- Polygeist -->
<g id="node2" class="node">
<title>Polygeist</title>
<polygon fill="white" stroke="black" points="308.87,-945 226.87,-945 226.87,-909 308.87,-909 308.87,-945"/>
<text text-anchor="middle" x="267.87" y="-923.3" font-family="Times,serif" font-size="14.00">Polygeist</text>
<polygon fill="white" stroke="black" points="280,-945 213,-945 213,-909 280,-909 280,-945"/>
<text text-anchor="middle" x="246.5" y="-923.3" font-family="Times,serif" font-size="14.00">Polygeist</text>
</g>
<!-- Affine -->
<g id="node4" class="node">
<title>Affine</title>
<polygon fill="#beaed4" stroke="black" points="248.87,-854 190.87,-854 190.87,-818 248.87,-818 248.87,-854"/>
<text text-anchor="middle" x="219.87" y="-832.3" font-family="Times,serif" font-size="14.00">Affine</text>
<polygon fill="#beaed4" stroke="black" points="214.5,-854 160.5,-854 160.5,-818 214.5,-818 214.5,-854"/>
<text text-anchor="middle" x="187.5" y="-832.3" font-family="Times,serif" font-size="14.00">Affine</text>
</g>
<!-- Polygeist&#45;&gt;Affine -->
<g id="edge2" class="edge">
<title>Polygeist&#45;&gt;Affine</title>
<path fill="none" stroke="black" d="M258.61,-908.84C257.49,-906.77 256.3,-904.56 255.07,-902.26"/>
<polygon fill="black" stroke="black" points="257.89,-900.14 250.07,-893 251.73,-903.46 257.89,-900.14"/>
<path fill="none" stroke="black" d="M231.37,-908.61C229.6,-906.46 227.8,-904.2 226.03,-901.91"/>
<polygon fill="black" stroke="black" points="229.13,-900.22 220.4,-894.22 223.48,-904.36 229.13,-900.22"/>
</g>
<!-- Polygeist&#45;&gt;CF -->
<!-- SCF -->
<g id="node3" class="node">
<title>SCF</title>
<polygon fill="#beaed4" stroke="black" points="176.87,-854 122.87,-854 122.87,-818 176.87,-818 176.87,-854"/>
<text text-anchor="middle" x="149.87" y="-832.3" font-family="Times,serif" font-size="14.00">SCF</text>
<polygon fill="#beaed4" stroke="black" points="146.5,-854 92.5,-854 92.5,-818 146.5,-818 146.5,-854"/>
<text text-anchor="middle" x="119.5" y="-832.3" font-family="Times,serif" font-size="14.00">SCF</text>
</g>
<!-- Calyx -->
<g id="node11" class="node">
<title>Calyx</title>
<g id="a_node11"><a xlink:href="https://circt.llvm.org/docs/Dialects/Calyx/" xlink:title="Calyx">
<polygon fill="white" stroke="black" points="219.87,-619 163.87,-619 163.87,-583 219.87,-583 219.87,-619"/>
<text text-anchor="middle" x="191.87" y="-597.3" font-family="Times,serif" font-size="14.00">Calyx</text>
<polygon fill="white" stroke="black" points="191.5,-619 137.5,-619 137.5,-583 191.5,-583 191.5,-619"/>
<text text-anchor="middle" x="164.5" y="-597.3" font-family="Times,serif" font-size="14.00">Calyx</text>
</a>
</g>
</g>
<!-- SCF&#45;&gt;Calyx -->
<g id="edge3" class="edge">
<title>SCF&#45;&gt;Calyx</title>
<path fill="none" stroke="black" d="M152.96,-817.87C160.18,-777.81 178.21,-677.75 186.96,-629.23"/>
<polygon fill="black" stroke="black" points="190.44,-629.62 188.77,-619.16 183.56,-628.38 190.44,-629.62"/>
<path fill="none" stroke="black" d="M122.81,-817.87C130.48,-778.16 149.53,-679.49 158.99,-630.52"/>
<polygon fill="black" stroke="black" points="162.38,-631.44 160.84,-620.96 155.51,-630.12 162.38,-631.44"/>
</g>
<!-- Pipeline -->
<g id="node13" class="node">
<title>Pipeline</title>
<g id="a_node13"><a xlink:href="https://circt.llvm.org/docs/Dialects/Pipeline/" xlink:title="Pipeline">
<polygon fill="white" stroke="black" points="377.87,-691 303.87,-691 303.87,-655 377.87,-655 377.87,-691"/>
<text text-anchor="middle" x="340.87" y="-669.3" font-family="Times,serif" font-size="14.00">Pipeline</text>
<polygon fill="white" stroke="black" points="328,-691 267,-691 267,-655 328,-655 328,-691"/>
<text text-anchor="middle" x="297.5" y="-669.3" font-family="Times,serif" font-size="14.00">Pipeline</text>
</a>
</g>
</g>
<!-- Affine&#45;&gt;Pipeline -->
<g id="edge4" class="edge">
<title>Affine&#45;&gt;Pipeline</title>
<path fill="none" stroke="black" d="M232.82,-817.77C254.19,-789.32 296.97,-732.4 321.81,-699.36"/>
<polygon fill="black" stroke="black" points="324.8,-701.2 328.01,-691.11 319.2,-697 324.8,-701.2"/>
<path fill="none" stroke="black" d="M199.27,-817.77C218.54,-789.57 256.94,-733.37 279.6,-700.21"/>
<polygon fill="black" stroke="black" points="282.21,-702.59 284.96,-692.36 276.43,-698.64 282.21,-702.59"/>
</g>
<!-- Arith -->
<g id="node6" class="node">
<title>Arith</title>
<polygon fill="#beaed4" stroke="black" points="318.87,-854 264.87,-854 264.87,-818 318.87,-818 318.87,-854"/>
<text text-anchor="middle" x="291.87" y="-832.3" font-family="Times,serif" font-size="14.00">Arith</text>
<polygon fill="#beaed4" stroke="black" points="284.5,-854 230.5,-854 230.5,-818 284.5,-818 284.5,-854"/>
<text text-anchor="middle" x="257.5" y="-832.3" font-family="Times,serif" font-size="14.00">Arith</text>
</g>
<!-- Handshake -->
<g id="node10" class="node">
<title>Handshake</title>
<g id="a_node10"><a xlink:href="https://circt.llvm.org/docs/Dialects/Handshake/" xlink:title="Handshake">
<polygon fill="white" stroke="black" points="329.87,-619 233.87,-619 233.87,-583 329.87,-583 329.87,-619"/>
<text text-anchor="middle" x="281.87" y="-597.3" font-family="Times,serif" font-size="14.00">Handshake</text>
<polygon fill="white" stroke="black" points="283,-619 206,-619 206,-583 283,-583 283,-619"/>
<text text-anchor="middle" x="244.5" y="-597.3" font-family="Times,serif" font-size="14.00">Handshake</text>
</a>
</g>
</g>
<!-- Arith&#45;&gt;Handshake -->
<g id="edge6" class="edge">
<title>Arith&#45;&gt;Handshake</title>
<path fill="none" stroke="black" d="M290.79,-810C288.9,-765.95 284.99,-674.83 283.04,-629.23"/>
<polygon fill="black" stroke="black" points="286.53,-629 282.6,-619.16 279.54,-629.3 286.53,-629"/>
<path fill="none" stroke="black" d="M256.11,-810C253.68,-766.45 248.68,-676.92 246.11,-630.83"/>
<polygon fill="black" stroke="black" points="249.61,-630.78 245.56,-620.99 242.62,-631.17 249.61,-630.78"/>
</g>
<!-- Arith&#45;&gt;Calyx -->
<g id="edge7" class="edge">
<title>Arith&#45;&gt;Calyx</title>
<path fill="none" stroke="black" d="M281.14,-810C262.14,-765.75 222.77,-674.01 203.29,-628.62"/>
<polygon fill="black" stroke="black" points="206.39,-626.97 199.23,-619.16 199.96,-629.73 206.39,-626.97"/>
<path fill="none" stroke="black" d="M247.52,-810C230.02,-766.16 193.92,-675.71 175.64,-629.9"/>
<polygon fill="black" stroke="black" points="178.99,-628.87 172.04,-620.88 172.49,-631.47 178.99,-628.87"/>
</g>
<!-- FIRRTLParser -->
<g id="node7" class="node">
<title>FIRRTLParser</title>
<polygon fill="#fdc086" stroke="black" points="461.37,-619 344.37,-619 344.37,-583 461.37,-583 461.37,-619"/>
<text text-anchor="middle" x="402.87" y="-597.3" font-family="Times,serif" font-size="14.00">FIRRTLParser</text>
<polygon fill="#fdc086" stroke="black" points="394,-619 297,-619 297,-583 394,-583 394,-619"/>
<text text-anchor="middle" x="345.5" y="-597.3" font-family="Times,serif" font-size="14.00">FIRRTLParser</text>
</g>
<!-- FIRRTL -->
<g id="node12" class="node">
<title>FIRRTL</title>
<g id="a_node12"><a xlink:href="https://circt.llvm.org/docs/Dialects/FIRRTL/" xlink:title="FIRRTL">
<polygon fill="white" stroke="black" points="303.37,-547 232.37,-547 232.37,-511 303.37,-511 303.37,-547"/>
<text text-anchor="middle" x="267.87" y="-525.3" font-family="Times,serif" font-size="14.00">FIRRTL</text>
<polygon fill="white" stroke="black" points="269,-547 206,-547 206,-511 269,-511 269,-547"/>
<text text-anchor="middle" x="237.5" y="-525.3" font-family="Times,serif" font-size="14.00">FIRRTL</text>
</a>
</g>
</g>
<!-- FIRRTLParser&#45;&gt;FIRRTL -->
<g id="edge24" class="edge">
<title>FIRRTLParser&#45;&gt;FIRRTL</title>
<path fill="none" stroke="black" d="M369.84,-582.88C351.78,-573.51 329.22,-561.81 309.92,-551.8"/>
<polygon fill="black" stroke="black" points="311.51,-548.69 301.02,-547.19 308.28,-554.9 311.51,-548.69"/>
<path fill="none" stroke="black" d="M318.53,-582.52C304.89,-573.68 288.16,-562.84 273.45,-553.3"/>
<polygon fill="black" stroke="black" points="275.7,-550.59 265.4,-548.08 271.89,-556.46 275.7,-550.59"/>
</g>
<!-- PyCDE -->
<g id="node8" class="node">
<title>PyCDE</title>
<g id="a_node8"><a xlink:href="https://circt.llvm.org/docs/PyCDE/" xlink:title="PyCDE">
<polygon fill="#fdc086" stroke="black" points="542.37,-619 475.37,-619 475.37,-583 542.37,-583 542.37,-619"/>
<text text-anchor="middle" x="508.87" y="-597.3" font-family="Times,serif" font-size="14.00">PyCDE</text>
<polygon fill="#fdc086" stroke="black" points="466.5,-619 408.5,-619 408.5,-583 466.5,-583 466.5,-619"/>
<text text-anchor="middle" x="437.5" y="-597.3" font-family="Times,serif" font-size="14.00">PyCDE</text>
</a>
</g>
</g>
<!-- MSFT -->
<g id="node14" class="node">
<g id="node15" class="node">
<title>MSFT</title>
<g id="a_node14"><a xlink:href="https://circt.llvm.org/docs/Dialects/MSFT/" xlink:title="MSFT">
<polygon fill="white" stroke="black" points="537.37,-547 478.37,-547 478.37,-511 537.37,-511 537.37,-547"/>
<text text-anchor="middle" x="507.87" y="-525.3" font-family="Times,serif" font-size="14.00">MSFT</text>
<g id="a_node15"><a xlink:href="https://circt.llvm.org/docs/Dialects/MSFT/" xlink:title="MSFT">
<polygon fill="white" stroke="black" points="487.5,-547 433.5,-547 433.5,-511 487.5,-511 487.5,-547"/>
<text text-anchor="middle" x="460.5" y="-525.3" font-family="Times,serif" font-size="14.00">MSFT</text>
</a>
</g>
</g>
<!-- PyCDE&#45;&gt;MSFT -->
<g id="edge40" class="edge">
<title>PyCDE&#45;&gt;MSFT</title>
<path fill="none" stroke="black" d="M508.62,-582.7C508.51,-574.98 508.38,-565.71 508.25,-557.11"/>
<polygon fill="black" stroke="black" points="511.75,-557.05 508.11,-547.1 504.75,-557.15 511.75,-557.05"/>
<path fill="none" stroke="black" d="M443.19,-582.7C445.64,-575.24 448.57,-566.32 451.31,-557.97"/>
<polygon fill="black" stroke="black" points="454.61,-559.14 454.41,-548.54 447.96,-556.95 454.61,-559.14"/>
</g>
<!-- ESI -->
<g id="node15" class="node">
<g id="node16" class="node">
<title>ESI</title>
<g id="a_node15"><a xlink:href="https://circt.llvm.org/docs/Dialects/ESI/" xlink:title="ESI">
<polygon fill="white" stroke="black" points="371.87,-547 317.87,-547 317.87,-511 371.87,-511 371.87,-547"/>
<text text-anchor="middle" x="344.87" y="-525.3" font-family="Times,serif" font-size="14.00">ESI</text>
<g id="a_node16"><a xlink:href="https://circt.llvm.org/docs/Dialects/ESI/" xlink:title="ESI">
<polygon fill="white" stroke="black" points="337.5,-547 283.5,-547 283.5,-511 337.5,-511 337.5,-547"/>
<text text-anchor="middle" x="310.5" y="-525.3" font-family="Times,serif" font-size="14.00">ESI</text>
</a>
</g>
</g>
<!-- PyCDE&#45;&gt;ESI -->
<g id="edge39" class="edge">
<title>PyCDE&#45;&gt;ESI</title>
<path fill="none" stroke="black" d="M475.28,-585.66C473.11,-584.76 470.96,-583.86 468.87,-583 431.84,-567.73 419.84,-564.99 381.43,-548.03"/>
<polygon fill="black" stroke="black" points="382.8,-544.81 372.24,-543.93 379.94,-551.2 382.8,-544.81"/>
<path fill="none" stroke="black" d="M408.04,-583.76C390.03,-573.84 366.83,-561.05 347.57,-550.43"/>
<polygon fill="black" stroke="black" points="349.4,-547.44 338.95,-545.68 346.02,-553.58 349.4,-547.44"/>
</g>
<!-- FSM -->
<g id="node16" class="node">
<g id="node17" class="node">
<title>FSM</title>
<g id="a_node16"><a xlink:href="https://circt.llvm.org/docs/Dialects/FSM/" xlink:title="FSM">
<polygon fill="white" stroke="black" points="217.87,-547 163.87,-547 163.87,-511 217.87,-511 217.87,-547"/>
<text text-anchor="middle" x="190.87" y="-525.3" font-family="Times,serif" font-size="14.00">FSM</text>
<g id="a_node17"><a xlink:href="https://circt.llvm.org/docs/Dialects/FSM/" xlink:title="FSM">
<polygon fill="white" stroke="black" points="191.5,-547 137.5,-547 137.5,-511 191.5,-511 191.5,-547"/>
<text text-anchor="middle" x="164.5" y="-525.3" font-family="Times,serif" font-size="14.00">FSM</text>
</a>
</g>
</g>
<!-- PyCDE&#45;&gt;FSM -->
<g id="edge42" class="edge">
<title>PyCDE&#45;&gt;FSM</title>
<path fill="none" stroke="black" d="M475.04,-584.93C472.97,-584.22 470.9,-583.57 468.87,-583 366.85,-554.28 332.21,-577.76 227.71,-547.11"/>
<polygon fill="black" stroke="black" points="228.64,-543.73 218.06,-544.18 226.61,-550.43 228.64,-543.73"/>
<path fill="none" stroke="black" d="M408.29,-585.43C406.02,-584.54 403.74,-583.71 401.5,-583 318.01,-556.37 288.53,-573.71 202.5,-547.52"/>
<polygon fill="black" stroke="black" points="203.75,-544.24 193.16,-544.56 201.63,-550.91 203.75,-544.24"/>
</g>
<!-- HWArith -->
<g id="node17" class="node">
<g id="node18" class="node">
<title>HWArith</title>
<g id="a_node17"><a xlink:href="https://circt.llvm.org/docs/Dialects/HWArith/" xlink:title="HWArith">
<polygon fill="white" stroke="black" points="463.87,-547 385.87,-547 385.87,-511 463.87,-511 463.87,-547"/>
<text text-anchor="middle" x="424.87" y="-525.3" font-family="Times,serif" font-size="14.00">HWArith</text>
<g id="a_node18"><a xlink:href="https://circt.llvm.org/docs/Dialects/HWArith/" xlink:title="HWArith">
<polygon fill="white" stroke="black" points="419,-547 352,-547 352,-511 419,-511 419,-547"/>
<text text-anchor="middle" x="385.5" y="-525.3" font-family="Times,serif" font-size="14.00">HWArith</text>
</a>
</g>
</g>
<!-- PyCDE&#45;&gt;HWArith -->
<g id="edge41" class="edge">
<title>PyCDE&#45;&gt;HWArith</title>
<path fill="none" stroke="black" d="M488.1,-582.7C477.63,-573.97 464.76,-563.24 453.37,-553.75"/>
<polygon fill="black" stroke="black" points="455.31,-550.82 445.39,-547.1 450.83,-556.19 455.31,-550.82"/>
<path fill="none" stroke="black" d="M424.65,-582.7C418.73,-574.73 411.57,-565.1 405.01,-556.26"/>
<polygon fill="black" stroke="black" points="407.88,-554.26 399.11,-548.32 402.26,-558.43 407.88,-554.26"/>
</g>
<!-- Scheduling -->
<g id="node9" class="node">
<title>Scheduling</title>
<g id="a_node9"><a xlink:href="https://circt.llvm.org/docs/Scheduling/" xlink:title="Scheduling">
<polygon fill="#fdc086" stroke="black" points="513.87,-763 417.87,-763 417.87,-727 513.87,-727 513.87,-763"/>
<text text-anchor="middle" x="465.87" y="-741.3" font-family="Times,serif" font-size="14.00">Scheduling</text>
<polygon fill="#fdc086" stroke="black" points="456,-763 379,-763 379,-727 456,-727 456,-763"/>
<text text-anchor="middle" x="417.5" y="-741.3" font-family="Times,serif" font-size="14.00">Scheduling</text>
</a>
</g>
</g>
<!-- Scheduling&#45;&gt;Pipeline -->
<g id="edge21" class="edge">
<title>Scheduling&#45;&gt;Pipeline</title>
<path fill="none" stroke="black" d="M426.33,-721.86C411.67,-713.65 395.06,-704.35 380.4,-696.14"/>
<polygon fill="black" stroke="black" points="424.85,-725.04 435.29,-726.88 428.27,-718.94 424.85,-725.04"/>
<polygon fill="black" stroke="black" points="382,-693.02 371.56,-691.19 378.58,-699.13 382,-693.02"/>
<path fill="none" stroke="black" d="M377.61,-720.73C364.46,-713.06 349.86,-704.54 336.76,-696.9"/>
<polygon fill="black" stroke="black" points="375.82,-723.74 386.22,-725.75 379.35,-717.69 375.82,-723.74"/>
<polygon fill="black" stroke="black" points="338.8,-694.04 328.4,-692.02 335.27,-700.09 338.8,-694.04"/>
</g>
<!-- SSP -->
<g id="node14" class="node">
<title>SSP</title>
<g id="a_node14"><a xlink:href="https://circt.llvm.org/docs/Dialects/SSP/" xlink:title="SSP">
<polygon fill="white" stroke="black" points="442.5,-691 388.5,-691 388.5,-655 442.5,-655 442.5,-691"/>
<text text-anchor="middle" x="415.5" y="-669.3" font-family="Times,serif" font-size="14.00">SSP</text>
</a>
</g>
</g>
<!-- Scheduling&#45;&gt;SSP -->
<g id="edge43" class="edge">
<title>Scheduling&#45;&gt;SSP</title>
<path fill="none" stroke="black" d="M416.68,-715.24C416.56,-711.01 416.43,-706.66 416.31,-702.44"/>
<polygon fill="black" stroke="black" points="413.18,-715.29 416.96,-725.18 420.18,-715.09 413.18,-715.29"/>
<polygon fill="black" stroke="black" points="419.82,-702.51 416.03,-692.62 412.82,-702.71 419.82,-702.51"/>
</g>
<!-- Scheduling&#45;&gt;MSFT -->
<g id="edge43" class="edge">
<g id="edge44" class="edge">
<title>Scheduling&#45;&gt;MSFT</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M489.36,-718.97C509.84,-695.29 538.07,-657.7 549.87,-619 554.53,-603.7 555.13,-598.11 549.87,-583 546.33,-572.86 539.96,-563.19 533.23,-554.96"/>
<polygon fill="black" stroke="black" points="486.48,-716.94 482.47,-726.75 491.72,-721.58 486.48,-716.94"/>
<polygon fill="black" stroke="black" points="535.69,-552.46 526.47,-547.24 530.43,-557.07 535.69,-552.46"/>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M435.3,-717.12C440.29,-708.94 445.45,-699.78 449.5,-691 463.64,-660.37 468.1,-652.3 473.5,-619 476.8,-598.64 473.24,-575.6 469.01,-558.07"/>
<polygon fill="black" stroke="black" points="432.34,-715.26 429.98,-725.59 438.27,-718.98 432.34,-715.26"/>
<polygon fill="black" stroke="black" points="472.53,-557.66 466.59,-548.88 465.76,-559.45 472.53,-557.66"/>
</g>
<!-- Handshake&#45;&gt;FIRRTL -->
<g id="edge8" class="edge">
<title>Handshake&#45;&gt;FIRRTL</title>
<path fill="none" stroke="black" d="M278.41,-582.7C276.86,-574.98 275.01,-565.71 273.29,-557.11"/>
<polygon fill="black" stroke="black" points="276.68,-556.22 271.29,-547.1 269.82,-557.6 276.68,-556.22"/>
<path fill="none" stroke="black" d="M242.77,-582.7C242.04,-575.41 241.17,-566.73 240.35,-558.54"/>
<polygon fill="black" stroke="black" points="243.84,-558.21 239.36,-548.61 236.87,-558.91 243.84,-558.21"/>
</g>
<!-- Calyx&#45;&gt;FSM -->
<g id="edge9" class="edge">
<title>Calyx&#45;&gt;FSM</title>
<path fill="none" stroke="black" d="M191.62,-582.7C191.51,-574.98 191.38,-565.71 191.25,-557.11"/>
<polygon fill="black" stroke="black" points="194.75,-557.05 191.11,-547.1 187.75,-557.15 194.75,-557.05"/>
<path fill="none" stroke="black" d="M164.5,-582.7C164.5,-575.41 164.5,-566.73 164.5,-558.54"/>
<polygon fill="black" stroke="black" points="168,-558.62 164.5,-548.62 161,-558.62 168,-558.62"/>
</g>
<!-- Calyx_native -->
<g id="node31" class="node">
<g id="node32" class="node">
<title>Calyx_native</title>
<polygon fill="#ffff99" stroke="black" points="147.6,-521.54 147.6,-536.46 104.41,-547 43.33,-547 0.13,-536.46 0.13,-521.54 43.33,-511 104.41,-511 147.6,-521.54"/>
<text text-anchor="middle" x="73.87" y="-525.3" font-family="Times,serif" font-size="14.00">Calyx native</text>
<polygon fill="#ffff99" stroke="black" points="121,-521.54 121,-536.46 85.56,-547 35.44,-547 0,-536.46 0,-521.54 35.44,-511 85.56,-511 121,-521.54"/>
<text text-anchor="middle" x="60.5" y="-525.3" font-family="Times,serif" font-size="14.00">Calyx native</text>
</g>
<!-- Calyx&#45;&gt;Calyx_native -->
<g id="edge32" class="edge">
<title>Calyx&#45;&gt;Calyx_native</title>
<path fill="none" stroke="black" d="M163.6,-583.23C148.07,-574.02 128.59,-562.47 111.76,-552.48"/>
<polygon fill="black" stroke="black" points="113.11,-549.21 102.72,-547.12 109.53,-555.23 113.11,-549.21"/>
<path fill="none" stroke="black" d="M138.53,-582.52C125.52,-573.76 109.59,-563.04 95.53,-553.58"/>
<polygon fill="black" stroke="black" points="97.65,-550.79 87.4,-548.11 93.74,-556.59 97.65,-550.79"/>
</g>
<!-- space_above_RTL -->
<!-- FIRRTL&#45;&gt;space_above_RTL -->
<!-- HW -->
<g id="node21" class="node">
<g id="node22" class="node">
<title>HW</title>
<g id="a_node21"><a xlink:href="https://circt.llvm.org/docs/Dialects/HW/" xlink:title="HW">
<polygon fill="white" stroke="black" points="380.87,-400 326.87,-400 326.87,-364 380.87,-364 380.87,-400"/>
<text text-anchor="middle" x="353.87" y="-378.3" font-family="Times,serif" font-size="14.00">HW</text>
<g id="a_node22"><a xlink:href="https://circt.llvm.org/docs/Dialects/HW/" xlink:title="HW">
<polygon fill="white" stroke="black" points="342.5,-400 288.5,-400 288.5,-364 342.5,-364 342.5,-400"/>
<text text-anchor="middle" x="315.5" y="-378.3" font-family="Times,serif" font-size="14.00">HW</text>
</a>
</g>
</g>
<!-- FIRRTL&#45;&gt;HW -->
<g id="edge10" class="edge">
<title>FIRRTL&#45;&gt;HW</title>
<path fill="none" stroke="black" d="M278.07,-510.8C288.45,-493.3 305.1,-465.23 320.15,-439.84"/>
<polygon fill="black" stroke="black" points="323.31,-441.38 325.4,-431 317.29,-437.81 323.31,-441.38"/>
<path fill="none" stroke="black" d="M246.91,-510.51C256.17,-493.29 270.84,-466.03 284.23,-441.13"/>
<polygon fill="black" stroke="black" points="287.31,-442.8 288.96,-432.33 281.14,-439.48 287.31,-442.8"/>
</g>
<!-- Pipeline&#45;&gt;Calyx -->
<g id="edge5" class="edge">
<title>Pipeline&#45;&gt;Calyx</title>
<path fill="none" stroke="black" d="M303.83,-654.97C283.67,-645.66 258.09,-633.78 229.5,-620.23"/>
<polygon fill="black" stroke="black" points="230.65,-616.9 220.12,-615.77 227.65,-623.22 230.65,-616.9"/>
<path fill="none" stroke="black" d="M266.65,-655.76C247.22,-645.54 222.02,-632.28 201.52,-621.48"/>
<polygon fill="black" stroke="black" points="203.39,-618.52 192.91,-616.95 200.13,-624.71 203.39,-618.52"/>
</g>
<!-- MSFT&#45;&gt;space_above_RTL -->
<!-- MSFT&#45;&gt;HW -->
<g id="edge11" class="edge">
<title>MSFT&#45;&gt;HW</title>
<path fill="none" stroke="black" d="M503.06,-510.99C496.24,-490.24 481.62,-455.86 455.87,-439 433.59,-424.42 418.27,-441.12 397.26,-435.12"/>
<polygon fill="black" stroke="black" points="398.43,-431.81 387.87,-431 395.62,-438.22 398.43,-431.81"/>
<path fill="none" stroke="black" d="M457.33,-510.71C452.56,-490.02 441.4,-456.02 417.5,-439 396.2,-423.83 380.61,-440.3 360.05,-435.37"/>
<polygon fill="black" stroke="black" points="361.48,-432.18 350.9,-431.58 358.8,-438.64 361.48,-432.18"/>
</g>
<!-- TCL -->
<g id="node41" class="node">
<g id="node42" class="node">
<title>TCL</title>
<polygon fill="#7fc97f" stroke="black" points="655.87,-111 529.87,-111 529.87,-75 661.87,-75 661.87,-105 655.87,-111"/>
<polyline fill="none" stroke="black" points="655.87,-111 655.87,-105 "/>
<polyline fill="none" stroke="black" points="661.87,-105 655.87,-105 "/>
<text text-anchor="middle" x="595.87" y="-89.3" font-family="Times,serif" font-size="14.00">Placements (tcl)</text>
<polygon fill="#7fc97f" stroke="black" points="479,-111 380,-111 380,-75 485,-75 485,-105 479,-111"/>
<polyline fill="none" stroke="black" points="479,-111 479,-105"/>
<polyline fill="none" stroke="black" points="485,-105 479,-105"/>
<text text-anchor="middle" x="432.5" y="-89.3" font-family="Times,serif" font-size="14.00">Placements (tcl)</text>
</g>
<!-- MSFT&#45;&gt;TCL -->
<g id="edge37" class="edge">
<title>MSFT&#45;&gt;TCL</title>
<path fill="none" stroke="black" d="M537.59,-512.25C576.24,-489.38 638.87,-443.05 638.87,-383 638.87,-383 638.87,-383 638.87,-237 638.87,-196.89 636.59,-186.04 623.87,-148 620.72,-138.59 616.11,-128.8 611.53,-120.19"/>
<polygon fill="black" stroke="black" points="614.56,-118.44 606.65,-111.39 608.44,-121.83 614.56,-118.44"/>
<path fill="none" stroke="black" d="M479.38,-510.8C504.97,-485.5 547.5,-435.55 547.5,-383 547.5,-383 547.5,-383 547.5,-237 547.5,-196.89 555.85,-180.62 532.5,-148 523.03,-134.77 509.28,-124.46 495,-116.56"/>
<polygon fill="black" stroke="black" points="496.91,-113.61 486.41,-112.16 493.72,-119.84 496.91,-113.61"/>
</g>
<!-- ESI&#45;&gt;space_above_RTL -->
<!-- ESI&#45;&gt;HW -->
<g id="edge12" class="edge">
<title>ESI&#45;&gt;HW</title>
<path fill="none" stroke="black" d="M345.93,-510.8C347,-493.61 348.7,-466.21 350.26,-441.18"/>
<polygon fill="black" stroke="black" points="353.76,-441.2 350.89,-431 346.77,-440.76 353.76,-441.2"/>
<path fill="none" stroke="black" d="M311.1,-510.51C311.69,-493.6 312.6,-466.99 313.45,-442.45"/>
<polygon fill="black" stroke="black" points="316.95,-442.62 313.79,-432.51 309.95,-442.38 316.95,-442.62"/>
</g>
<!-- ServiceDesc -->
<g id="node39" class="node">
<g id="node40" class="node">
<title>ServiceDesc</title>
<polygon fill="#7fc97f" stroke="black" points="509.87,-112 333.87,-112 333.87,-74 515.87,-74 515.87,-106 509.87,-112"/>
<polyline fill="none" stroke="black" points="509.87,-112 509.87,-106 "/>
<polyline fill="none" stroke="black" points="515.87,-106 509.87,-106 "/>
<text text-anchor="middle" x="424.87" y="-96.8" font-family="Times,serif" font-size="14.00">ESI system description</text>
<text text-anchor="middle" x="424.87" y="-81.8" font-family="Times,serif" font-size="14.00">(JSON/Capnp)</text>
<polygon fill="#7fc97f" stroke="black" points="360,-112 223,-112 223,-74 366,-74 366,-106 360,-112"/>
<polyline fill="none" stroke="black" points="360,-112 360,-106"/>
<polyline fill="none" stroke="black" points="366,-106 360,-106"/>
<text text-anchor="middle" x="294.5" y="-96.8" font-family="Times,serif" font-size="14.00">ESI system description</text>
<text text-anchor="middle" x="294.5" y="-81.8" font-family="Times,serif" font-size="14.00">(JSON/Capnp)</text>
</g>
<!-- ESI&#45;&gt;ServiceDesc -->
<g id="edge36" class="edge">
<title>ESI&#45;&gt;ServiceDesc</title>
<path fill="none" stroke="black" d="M317.45,-511.43C291.6,-494.4 253.67,-465.55 231.87,-431 220.07,-412.31 218.87,-405.1 218.87,-383 218.87,-383 218.87,-383 218.87,-237 218.87,-196.55 210.3,-177.59 237.87,-148 260.11,-124.13 292.17,-110.58 323.48,-102.97"/>
<polygon fill="black" stroke="black" points="324.62,-106.3 333.61,-100.7 323.09,-99.47 324.62,-106.3"/>
<path fill="none" stroke="black" d="M283.01,-510.58C248.71,-486.46 194.5,-439.42 194.5,-383 194.5,-383 194.5,-383 194.5,-237 194.5,-196.73 189.05,-181.43 211.5,-148 219.52,-136.06 231.15,-126.16 243.19,-118.24"/>
<polygon fill="black" stroke="black" points="244.88,-121.31 251.58,-113.1 241.22,-115.34 244.88,-121.31"/>
</g>
<!-- FSM&#45;&gt;space_above_RTL -->
<!-- FSM&#45;&gt;HW -->
<g id="edge13" class="edge">
<title>FSM&#45;&gt;HW</title>
<path fill="none" stroke="black" d="M218.1,-511.1C232.89,-501.35 251.12,-488.4 265.87,-475 281.49,-460.8 279.41,-450.88 296.87,-439 302.18,-435.39 306.24,-435.54 310.48,-434.89"/>
<polygon fill="black" stroke="black" points="311.97,-438.06 319.87,-431 309.29,-431.6 311.97,-438.06"/>
<path fill="none" stroke="black" d="M191.91,-511.62C206.67,-502.03 224.63,-489.07 238.5,-475 252.17,-461.13 248.49,-451.41 263.5,-439 266.24,-436.73 268.61,-435.9 270.91,-435.35"/>
<polygon fill="black" stroke="black" points="272.18,-438.61 280.1,-431.57 269.52,-432.13 272.18,-438.61"/>
</g>
<!-- HWArith&#45;&gt;space_above_RTL -->
<!-- HWArith&#45;&gt;HW -->
<g id="edge14" class="edge">
<title>HWArith&#45;&gt;HW</title>
<path fill="none" stroke="black" d="M411,-510.57C403.48,-500.57 394.42,-487.53 387.87,-475 382.22,-464.2 377.08,-452.25 372.59,-440.64"/>
<polygon fill="black" stroke="black" points="375.77,-439.14 368.98,-431 369.21,-441.59 375.77,-439.14"/>
<path fill="none" stroke="black" d="M372.04,-510.52C364.74,-500.5 355.91,-487.46 349.5,-475 344.1,-464.51 339.13,-452.95 334.76,-441.68"/>
<polygon fill="black" stroke="black" points="338.07,-440.55 331.28,-432.42 331.52,-443.01 338.07,-440.55"/>
</g>
<!-- MooreMIR -->
<g id="node18" class="node">
<g id="node19" class="node">
<title>MooreMIR</title>
<g id="a_node18"><a xlink:href="https://circt.llvm.org/docs/Dialects/Moore/" xlink:title="Moore MIR">
<polygon fill="white" stroke="black" points="648.37,-547 551.37,-547 551.37,-511 648.37,-511 648.37,-547"/>
<text text-anchor="middle" x="599.87" y="-525.3" font-family="Times,serif" font-size="14.00">Moore MIR</text>
<g id="a_node19"><a xlink:href="https://circt.llvm.org/docs/Dialects/Moore/" xlink:title="Moore MIR">
<polygon fill="white" stroke="black" points="585,-547 502,-547 502,-511 585,-511 585,-547"/>
<text text-anchor="middle" x="543.5" y="-525.3" font-family="Times,serif" font-size="14.00">Moore MIR</text>
</a>
</g>
</g>
@ -369,269 +385,269 @@
<!-- MooreMIR&#45;&gt;HW -->
<g id="edge15" class="edge">
<title>MooreMIR&#45;&gt;HW</title>
<path fill="none" stroke="black" d="M582.2,-510.69C559.49,-489.63 517.83,-454.94 474.87,-439 441.87,-426.76 424.85,-446.07 396.92,-435.36"/>
<polygon fill="black" stroke="black" points="398.4,-432.18 387.87,-431 395.36,-438.49 398.4,-432.18"/>
<path fill="none" stroke="black" d="M528.55,-510.69C509.22,-489.64 473.38,-454.95 434.5,-439 403.23,-426.17 386.3,-444.91 359.76,-435.75"/>
<polygon fill="black" stroke="black" points="361.42,-432.66 350.87,-431.64 358.48,-439.01 361.42,-432.66"/>
</g>
<!-- LLHD -->
<g id="node24" class="node">
<g id="node25" class="node">
<title>LLHD</title>
<g id="a_node24"><a xlink:href="https://circt.llvm.org/docs/Dialects/LLHD/" xlink:title="LLHD">
<polygon fill="white" stroke="black" points="375.87,-328 317.87,-328 317.87,-292 375.87,-292 375.87,-328"/>
<text text-anchor="middle" x="346.87" y="-306.3" font-family="Times,serif" font-size="14.00">LLHD</text>
<g id="a_node25"><a xlink:href="https://circt.llvm.org/docs/Dialects/LLHD/" xlink:title="LLHD">
<polygon fill="white" stroke="black" points="333.5,-328 279.5,-328 279.5,-292 333.5,-292 333.5,-328"/>
<text text-anchor="middle" x="306.5" y="-306.3" font-family="Times,serif" font-size="14.00">LLHD</text>
</a>
</g>
</g>
<!-- MooreMIR&#45;&gt;LLHD -->
<g id="edge17" class="edge">
<title>MooreMIR&#45;&gt;LLHD</title>
<path fill="none" stroke="black" d="M598.44,-510.95C594.55,-476.01 580.53,-396.16 531.87,-356 482.34,-315.12 450.09,-345.61 385.81,-328.44"/>
<polygon fill="black" stroke="black" points="386.67,-325.04 376.09,-325.55 384.67,-331.75 386.67,-325.04"/>
<path fill="none" stroke="black" d="M543.54,-510.53C542.62,-475.51 535.25,-396.63 489.5,-356 441.77,-313.62 408.07,-345.69 344.57,-328.72"/>
<polygon fill="black" stroke="black" points="345.72,-325.41 335.13,-325.85 343.68,-332.11 345.72,-325.41"/>
</g>
<!-- Seq -->
<g id="node20" class="node">
<g id="node21" class="node">
<title>Seq</title>
<g id="a_node20"><a xlink:href="https://circt.llvm.org/docs/Dialects/Seq/" xlink:title="Seq">
<polygon fill="white" stroke="black" points="448.87,-400 394.87,-400 394.87,-364 448.87,-364 448.87,-400"/>
<text text-anchor="middle" x="421.87" y="-378.3" font-family="Times,serif" font-size="14.00">Seq</text>
<g id="a_node21"><a xlink:href="https://circt.llvm.org/docs/Dialects/Seq/" xlink:title="Seq">
<polygon fill="white" stroke="black" points="478.5,-400 424.5,-400 424.5,-364 478.5,-364 478.5,-400"/>
<text text-anchor="middle" x="451.5" y="-378.3" font-family="Times,serif" font-size="14.00">Seq</text>
</a>
</g>
</g>
<!-- space_above_RTL&#45;&gt;Seq -->
<!-- space_above_RTL&#45;&gt;HW -->
<!-- Comb -->
<g id="node22" class="node">
<g id="node23" class="node">
<title>Comb</title>
<g id="a_node22"><a xlink:href="https://circt.llvm.org/docs/Dialects/Comb/" xlink:title="Comb">
<polygon fill="white" stroke="black" points="520.87,-400 462.87,-400 462.87,-364 520.87,-364 520.87,-400"/>
<text text-anchor="middle" x="491.87" y="-378.3" font-family="Times,serif" font-size="14.00">Comb</text>
<g id="a_node23"><a xlink:href="https://circt.llvm.org/docs/Dialects/Comb/" xlink:title="Comb">
<polygon fill="white" stroke="black" points="410.5,-400 356.5,-400 356.5,-364 410.5,-364 410.5,-400"/>
<text text-anchor="middle" x="383.5" y="-378.3" font-family="Times,serif" font-size="14.00">Comb</text>
</a>
</g>
</g>
<!-- space_above_RTL&#45;&gt;Comb -->
<!-- SV -->
<g id="node25" class="node">
<g id="node26" class="node">
<title>SV</title>
<g id="a_node25"><a xlink:href="https://circt.llvm.org/docs/Dialects/SV/" xlink:title="SV">
<polygon fill="white" stroke="black" points="443.87,-328 389.87,-328 389.87,-292 443.87,-292 443.87,-328"/>
<text text-anchor="middle" x="416.87" y="-306.3" font-family="Times,serif" font-size="14.00">SV</text>
<g id="a_node26"><a xlink:href="https://circt.llvm.org/docs/Dialects/SV/" xlink:title="SV">
<polygon fill="white" stroke="black" points="481.5,-328 427.5,-328 427.5,-292 481.5,-292 481.5,-328"/>
<text text-anchor="middle" x="454.5" y="-306.3" font-family="Times,serif" font-size="14.00">SV</text>
</a>
</g>
</g>
<!-- Seq&#45;&gt;SV -->
<g id="edge16" class="edge">
<title>Seq&#45;&gt;SV</title>
<path fill="none" stroke="black" d="M420.63,-363.7C420.08,-355.98 419.42,-346.71 418.8,-338.11"/>
<polygon fill="black" stroke="black" points="422.29,-337.83 418.09,-328.1 415.31,-338.33 422.29,-337.83"/>
<path fill="none" stroke="black" d="M452.24,-363.7C452.55,-356.41 452.93,-347.73 453.28,-339.54"/>
<polygon fill="black" stroke="black" points="456.77,-339.76 453.7,-329.62 449.78,-339.46 456.77,-339.76"/>
</g>
<!-- ExportVerilog -->
<g id="node29" class="node">
<g id="node30" class="node">
<title>ExportVerilog</title>
<g id="a_node29"><a xlink:href="https://circt.llvm.org/docs/VerilogGeneration/" xlink:title="ExportVerilog">
<polygon fill="#fdc086" stroke="black" points="472.87,-256 356.87,-256 356.87,-220 472.87,-220 472.87,-256"/>
<text text-anchor="middle" x="414.87" y="-234.3" font-family="Times,serif" font-size="14.00">ExportVerilog</text>
<g id="a_node30"><a xlink:href="https://circt.llvm.org/docs/VerilogGeneration/" xlink:title="ExportVerilog">
<polygon fill="#fdc086" stroke="black" points="523,-256 430,-256 430,-220 523,-220 523,-256"/>
<text text-anchor="middle" x="476.5" y="-234.3" font-family="Times,serif" font-size="14.00">ExportVerilog</text>
</a>
</g>
</g>
<!-- Seq&#45;&gt;ExportVerilog -->
<g id="edge28" class="edge">
<title>Seq&#45;&gt;ExportVerilog</title>
<path fill="none" stroke="black" d="M438.88,-356C443.74,-347.49 448.39,-337.68 450.87,-328 454.83,-312.5 455.57,-307.29 450.87,-292 447.86,-282.22 442.36,-272.62 436.55,-264.33"/>
<polygon fill="black" stroke="black" points="439.27,-262.13 430.48,-256.23 433.67,-266.33 439.27,-262.13"/>
<path fill="none" stroke="black" d="M473.6,-356C479.63,-347.67 485.37,-337.95 488.5,-328 494.72,-308.24 491.25,-285.01 486.47,-267.24"/>
<polygon fill="black" stroke="black" points="489.89,-266.46 483.67,-257.89 483.19,-268.47 489.89,-266.46"/>
</g>
<!-- HW&#45;&gt;LLHD -->
<g id="edge18" class="edge">
<title>HW&#45;&gt;LLHD</title>
<path fill="none" stroke="black" d="M352.14,-363.7C351.36,-355.98 350.44,-346.71 349.58,-338.11"/>
<polygon fill="black" stroke="black" points="353.05,-337.71 348.58,-328.1 346.09,-338.4 353.05,-337.71"/>
<path fill="none" stroke="black" d="M313.28,-363.7C312.33,-356.32 311.2,-347.52 310.13,-339.25"/>
<polygon fill="black" stroke="black" points="313.64,-339.08 308.89,-329.61 306.7,-339.97 313.64,-339.08"/>
</g>
<!-- llhd_sim -->
<g id="node27" class="node">
<g id="node28" class="node">
<title>llhd_sim</title>
<polygon fill="#fdc086" stroke="black" points="339.87,-256 265.87,-256 265.87,-220 339.87,-220 339.87,-256"/>
<text text-anchor="middle" x="302.87" y="-234.3" font-family="Times,serif" font-size="14.00">llhd&#45;sim</text>
<polygon fill="#fdc086" stroke="black" points="295.5,-256 233.5,-256 233.5,-220 295.5,-220 295.5,-256"/>
<text text-anchor="middle" x="264.5" y="-234.3" font-family="Times,serif" font-size="14.00">llhd&#45;sim</text>
</g>
<!-- HW&#45;&gt;llhd_sim -->
<g id="edge29" class="edge">
<title>HW&#45;&gt;llhd_sim</title>
<path fill="none" stroke="black" d="M328.54,-356C321.65,-347.75 314.96,-338.08 310.87,-328 302.9,-308.39 301.16,-284.4 301.26,-266.27"/>
<polygon fill="black" stroke="black" points="304.77,-266.17 301.52,-256.09 297.77,-266 304.77,-266.17"/>
<path fill="none" stroke="black" d="M290.18,-356C283.28,-347.75 276.59,-338.08 272.5,-328 264.77,-308.96 262.9,-285.8 262.89,-267.88"/>
<polygon fill="black" stroke="black" points="266.39,-268.01 263.1,-257.94 259.39,-267.86 266.39,-268.01"/>
</g>
<!-- SystemC -->
<g id="node26" class="node">
<g id="node27" class="node">
<title>SystemC</title>
<g id="a_node26"><a xlink:href="https://circt.llvm.org/docs/Dialects/SystemC/" xlink:title="SystemC">
<polygon fill="white" stroke="black" points="573.87,-328 493.87,-328 493.87,-292 573.87,-292 573.87,-328"/>
<text text-anchor="middle" x="533.87" y="-306.3" font-family="Times,serif" font-size="14.00">SystemC</text>
<g id="a_node27"><a xlink:href="https://circt.llvm.org/docs/Dialects/SystemC/" xlink:title="SystemC">
<polygon fill="white" stroke="black" points="413.5,-328 347.5,-328 347.5,-292 413.5,-292 413.5,-328"/>
<text text-anchor="middle" x="380.5" y="-306.3" font-family="Times,serif" font-size="14.00">SystemC</text>
</a>
</g>
</g>
<!-- Comb&#45;&gt;SystemC -->
<g id="edge19" class="edge">
<title>Comb&#45;&gt;SystemC</title>
<path fill="none" stroke="black" d="M506.87,-356C510.63,-349.73 514.67,-343 518.45,-336.7"/>
<polygon fill="black" stroke="black" points="521.46,-338.48 523.6,-328.1 515.46,-334.88 521.46,-338.48"/>
<path fill="none" stroke="black" d="M382.43,-356C382.2,-350.67 381.96,-344.99 381.72,-339.54"/>
<polygon fill="black" stroke="black" points="385.22,-339.46 381.3,-329.62 378.23,-339.76 385.22,-339.46"/>
</g>
<!-- Interop -->
<g id="node23" class="node">
<g id="node24" class="node">
<title>Interop</title>
<g id="a_node23"><a xlink:href="https://circt.llvm.org/docs/Dialects/Interop/" xlink:title="Interop">
<polygon fill="white" stroke="black" points="312.37,-400 243.37,-400 243.37,-364 312.37,-364 312.37,-400"/>
<text text-anchor="middle" x="277.87" y="-378.3" font-family="Times,serif" font-size="14.00">Interop</text>
<g id="a_node24"><a xlink:href="https://circt.llvm.org/docs/Dialects/Interop/" xlink:title="Interop">
<polygon fill="white" stroke="black" points="274.5,-400 218.5,-400 218.5,-364 274.5,-364 274.5,-400"/>
<text text-anchor="middle" x="246.5" y="-378.3" font-family="Times,serif" font-size="14.00">Interop</text>
</a>
</g>
</g>
<!-- LLHD&#45;&gt;llhd_sim -->
<g id="edge34" class="edge">
<title>LLHD&#45;&gt;llhd_sim</title>
<path fill="none" stroke="black" d="M335.99,-291.7C330.88,-283.56 324.67,-273.69 319.02,-264.7"/>
<polygon fill="black" stroke="black" points="321.9,-262.71 313.62,-256.1 315.98,-266.43 321.9,-262.71"/>
<path fill="none" stroke="black" d="M296.12,-291.7C291.44,-283.9 285.81,-274.51 280.6,-265.83"/>
<polygon fill="black" stroke="black" points="283.69,-264.18 275.54,-257.4 277.69,-267.78 283.69,-264.18"/>
</g>
<!-- SV&#45;&gt;ExportVerilog -->
<g id="edge27" class="edge">
<title>SV&#45;&gt;ExportVerilog</title>
<path fill="none" stroke="black" d="M416.37,-291.7C416.15,-283.98 415.89,-274.71 415.64,-266.11"/>
<polygon fill="black" stroke="black" points="419.14,-266 415.36,-256.1 412.14,-266.2 419.14,-266"/>
<path fill="none" stroke="black" d="M459.94,-291.7C462.28,-284.24 465.08,-275.32 467.71,-266.97"/>
<polygon fill="black" stroke="black" points="471.01,-268.14 470.67,-257.55 464.33,-266.04 471.01,-268.14"/>
</g>
<!-- ExportSystemC -->
<g id="node28" class="node">
<g id="node29" class="node">
<title>ExportSystemC</title>
<polygon fill="#fdc086" stroke="black" points="616.37,-256 487.37,-256 487.37,-220 616.37,-220 616.37,-256"/>
<text text-anchor="middle" x="551.87" y="-234.3" font-family="Times,serif" font-size="14.00">ExportSystemC</text>
<polygon fill="#fdc086" stroke="black" points="416,-256 313,-256 313,-220 416,-220 416,-256"/>
<text text-anchor="middle" x="364.5" y="-234.3" font-family="Times,serif" font-size="14.00">ExportSystemC</text>
</g>
<!-- SystemC&#45;&gt;ExportSystemC -->
<g id="edge25" class="edge">
<title>SystemC&#45;&gt;ExportSystemC</title>
<path fill="none" stroke="black" d="M538.32,-291.7C540.32,-283.9 542.74,-274.51 544.97,-265.83"/>
<polygon fill="black" stroke="black" points="548.37,-266.66 547.47,-256.1 541.59,-264.92 548.37,-266.66"/>
<path fill="none" stroke="black" d="M376.55,-291.7C374.86,-284.32 372.85,-275.52 370.96,-267.25"/>
<polygon fill="black" stroke="black" points="374.39,-266.55 368.75,-257.58 367.56,-268.11 374.39,-266.55"/>
</g>
<!-- VCDTrace -->
<g id="node36" class="node">
<g id="node37" class="node">
<title>VCDTrace</title>
<polygon fill="#7fc97f" stroke="black" points="334.87,-184 244.87,-184 244.87,-148 340.87,-148 340.87,-178 334.87,-184"/>
<polyline fill="none" stroke="black" points="334.87,-184 334.87,-178 "/>
<polyline fill="none" stroke="black" points="340.87,-178 334.87,-178 "/>
<text text-anchor="middle" x="292.87" y="-162.3" font-family="Times,serif" font-size="14.00">Trace (vcd)</text>
<polygon fill="#7fc97f" stroke="black" points="292.5,-184 218.5,-184 218.5,-148 298.5,-148 298.5,-178 292.5,-184"/>
<polyline fill="none" stroke="black" points="292.5,-184 292.5,-178"/>
<polyline fill="none" stroke="black" points="298.5,-178 292.5,-178"/>
<text text-anchor="middle" x="258.5" y="-162.3" font-family="Times,serif" font-size="14.00">Trace (vcd)</text>
</g>
<!-- llhd_sim&#45;&gt;VCDTrace -->
<g id="edge35" class="edge">
<title>llhd_sim&#45;&gt;VCDTrace</title>
<path fill="none" stroke="black" d="M300.39,-219.7C299.29,-211.98 297.97,-202.71 296.74,-194.11"/>
<polygon fill="black" stroke="black" points="300.19,-193.51 295.31,-184.1 293.26,-194.5 300.19,-193.51"/>
<path fill="none" stroke="black" d="M263.02,-219.7C262.39,-212.41 261.65,-203.73 260.95,-195.54"/>
<polygon fill="black" stroke="black" points="264.44,-195.28 260.1,-185.61 257.46,-195.87 264.44,-195.28"/>
</g>
<!-- SystemCFile -->
<g id="node37" class="node">
<g id="node38" class="node">
<title>SystemCFile</title>
<polygon fill="#7fc97f" stroke="black" points="610.37,-184 489.37,-184 489.37,-148 616.37,-148 616.37,-178 610.37,-184"/>
<polyline fill="none" stroke="black" points="610.37,-184 610.37,-178 "/>
<polyline fill="none" stroke="black" points="616.37,-178 610.37,-178 "/>
<text text-anchor="middle" x="552.87" y="-162.3" font-family="Times,serif" font-size="14.00">SystemC (c++)</text>
<polygon fill="#7fc97f" stroke="black" points="408,-184 313,-184 313,-148 414,-148 414,-178 408,-184"/>
<polyline fill="none" stroke="black" points="408,-184 408,-178"/>
<polyline fill="none" stroke="black" points="414,-178 408,-178"/>
<text text-anchor="middle" x="363.5" y="-162.3" font-family="Times,serif" font-size="14.00">SystemC (c++)</text>
</g>
<!-- ExportSystemC&#45;&gt;SystemCFile -->
<g id="edge26" class="edge">
<title>ExportSystemC&#45;&gt;SystemCFile</title>
<path fill="none" stroke="black" d="M552.11,-219.7C552.22,-211.98 552.36,-202.71 552.48,-194.11"/>
<polygon fill="black" stroke="black" points="555.98,-194.15 552.62,-184.1 548.98,-194.05 555.98,-194.15"/>
<path fill="none" stroke="black" d="M364.25,-219.7C364.15,-212.41 364.03,-203.73 363.91,-195.54"/>
<polygon fill="black" stroke="black" points="367.41,-195.57 363.77,-185.62 360.41,-195.67 367.41,-195.57"/>
</g>
<!-- SVFile -->
<g id="node38" class="node">
<g id="node39" class="node">
<title>SVFile</title>
<polygon fill="#7fc97f" stroke="black" points="468.87,-184 354.87,-184 354.87,-148 474.87,-148 474.87,-178 468.87,-184"/>
<polyline fill="none" stroke="black" points="468.87,-184 468.87,-178 "/>
<polyline fill="none" stroke="black" points="474.87,-178 468.87,-178 "/>
<text text-anchor="middle" x="414.87" y="-162.3" font-family="Times,serif" font-size="14.00">SystemVerilog</text>
<polygon fill="#7fc97f" stroke="black" points="519,-184 428,-184 428,-148 525,-148 525,-178 519,-184"/>
<polyline fill="none" stroke="black" points="519,-184 519,-178"/>
<polyline fill="none" stroke="black" points="525,-178 519,-178"/>
<text text-anchor="middle" x="476.5" y="-162.3" font-family="Times,serif" font-size="14.00">SystemVerilog</text>
</g>
<!-- ExportVerilog&#45;&gt;SVFile -->
<g id="edge20" class="edge">
<title>ExportVerilog&#45;&gt;SVFile</title>
<path fill="none" stroke="black" d="M414.87,-219.7C414.87,-211.98 414.87,-202.71 414.87,-194.11"/>
<polygon fill="black" stroke="black" points="418.37,-194.1 414.87,-184.1 411.37,-194.1 418.37,-194.1"/>
<path fill="none" stroke="black" d="M476.5,-219.7C476.5,-212.41 476.5,-203.73 476.5,-195.54"/>
<polygon fill="black" stroke="black" points="480,-195.62 476.5,-185.62 473,-195.62 480,-195.62"/>
</g>
<!-- Moore -->
<g id="node30" class="node">
<g id="node31" class="node">
<title>Moore</title>
<polygon fill="#ffff99" stroke="black" points="731.6,-828.54 731.6,-843.46 705.98,-854 669.75,-854 644.13,-843.46 644.13,-828.54 669.75,-818 705.98,-818 731.6,-828.54"/>
<text text-anchor="middle" x="687.87" y="-832.3" font-family="Times,serif" font-size="14.00">Moore</text>
<polygon fill="#ffff99" stroke="black" points="648.57,-828.54 648.57,-843.46 626.86,-854 596.14,-854 574.43,-843.46 574.43,-828.54 596.14,-818 626.86,-818 648.57,-828.54"/>
<text text-anchor="middle" x="611.5" y="-832.3" font-family="Times,serif" font-size="14.00">Moore</text>
</g>
<!-- Moore&#45;&gt;MooreMIR -->
<g id="edge31" class="edge">
<title>Moore&#45;&gt;MooreMIR</title>
<path fill="none" stroke="black" d="M682.88,-817.73C668.24,-766.98 625.28,-618.06 607.6,-556.8"/>
<polygon fill="black" stroke="black" points="610.93,-555.72 604.8,-547.08 604.2,-557.66 610.93,-555.72"/>
<path fill="none" stroke="black" d="M607.65,-817.73C596.43,-767.41 563.7,-620.6 549.83,-558.39"/>
<polygon fill="black" stroke="black" points="553.31,-557.94 547.72,-548.94 546.48,-559.46 553.31,-557.94"/>
</g>
<!-- Calyx_native&#45;&gt;HW -->
<g id="edge33" class="edge">
<title>Calyx_native&#45;&gt;HW</title>
<path fill="none" stroke="black" d="M103.9,-510.89C141,-490.53 206.6,-457.05 266.87,-439 285.94,-433.29 295.99,-440.27 310.62,-435.41"/>
<polygon fill="black" stroke="black" points="312.35,-438.46 319.87,-431 309.33,-432.15 312.35,-438.46"/>
<path fill="none" stroke="black" d="M88,-511.34C122.28,-491.29 183.26,-457.94 239.5,-439 253.15,-434.4 261.05,-438.08 271.04,-435.66"/>
<polygon fill="black" stroke="black" points="272.41,-438.88 280.12,-431.62 269.56,-432.49 272.41,-438.88"/>
</g>
<!-- FIRFile -->
<g id="node32" class="node">
<g id="node33" class="node">
<title>FIRFile</title>
<polygon fill="#7fc97f" stroke="black" points="486.87,-854 438.87,-854 438.87,-818 492.87,-818 492.87,-848 486.87,-854"/>
<polyline fill="none" stroke="black" points="486.87,-854 486.87,-848 "/>
<polyline fill="none" stroke="black" points="492.87,-848 486.87,-848 "/>
<text text-anchor="middle" x="465.87" y="-832.3" font-family="Times,serif" font-size="14.00">.fir</text>
<polygon fill="#7fc97f" stroke="black" points="438.5,-854 390.5,-854 390.5,-818 444.5,-818 444.5,-848 438.5,-854"/>
<polyline fill="none" stroke="black" points="438.5,-854 438.5,-848"/>
<polyline fill="none" stroke="black" points="444.5,-848 438.5,-848"/>
<text text-anchor="middle" x="417.5" y="-832.3" font-family="Times,serif" font-size="14.00">.fir</text>
</g>
<!-- FIRFile&#45;&gt;FIRRTLParser -->
<g id="edge23" class="edge">
<title>FIRFile&#45;&gt;FIRRTLParser</title>
<path fill="none" stroke="black" d="M493.11,-821.81C503.81,-815.09 514.94,-805.82 520.87,-794 534.22,-767.39 531.86,-754.67 520.87,-727 503.86,-684.22 464.5,-647.6 435.9,-625.26"/>
<polygon fill="black" stroke="black" points="437.85,-622.35 427.78,-619.07 433.61,-627.91 437.85,-622.35"/>
<path fill="none" stroke="black" d="M444.51,-817.55C452.09,-811.14 459.39,-803.18 463.5,-794 488.9,-737.34 486.87,-704.59 449.5,-655 438.19,-639.99 421.42,-628.9 404.64,-620.86"/>
<polygon fill="black" stroke="black" points="406.18,-617.71 395.62,-616.85 403.34,-624.11 406.18,-617.71"/>
</g>
<!-- FIRFile&#45;&gt;Scheduling -->
<!-- Chisel -->
<g id="node33" class="node">
<g id="node34" class="node">
<title>Chisel</title>
<polygon fill="#ffff99" stroke="black" points="506.69,-919.54 506.69,-934.46 481.61,-945 446.13,-945 421.04,-934.46 421.04,-919.54 446.13,-909 481.61,-909 506.69,-919.54"/>
<text text-anchor="middle" x="463.87" y="-923.3" font-family="Times,serif" font-size="14.00">Chisel</text>
<polygon fill="#ffff99" stroke="black" points="453.26,-919.54 453.26,-934.46 432.31,-945 402.69,-945 381.74,-934.46 381.74,-919.54 402.69,-909 432.31,-909 453.26,-919.54"/>
<text text-anchor="middle" x="417.5" y="-923.3" font-family="Times,serif" font-size="14.00">Chisel</text>
</g>
<!-- Chisel&#45;&gt;CF -->
<!-- Chisel&#45;&gt;FIRFile -->
<g id="edge22" class="edge">
<title>Chisel&#45;&gt;FIRFile</title>
<path fill="none" stroke="black" d="M464.25,-908.84C464.53,-896.28 464.92,-878.98 465.25,-864.5"/>
<polygon fill="black" stroke="black" points="468.76,-864.18 465.48,-854.11 461.76,-864.03 468.76,-864.18"/>
<path fill="none" stroke="black" d="M417.5,-908.84C417.5,-896.61 417.5,-879.87 417.5,-865.63"/>
<polygon fill="black" stroke="black" points="421,-865.92 417.5,-855.92 414,-865.92 421,-865.92"/>
</g>
<!-- SVVHDL -->
<g id="node34" class="node">
<g id="node35" class="node">
<title>SVVHDL</title>
<polygon fill="#ffff99" stroke="black" points="746.15,-919.54 746.15,-934.46 712.01,-945 663.73,-945 629.59,-934.46 629.59,-919.54 663.73,-909 712.01,-909 746.15,-919.54"/>
<text text-anchor="middle" x="687.87" y="-923.3" font-family="Times,serif" font-size="14.00">SV/VHDL</text>
<polygon fill="#ffff99" stroke="black" points="664.03,-919.54 664.03,-934.46 633.26,-945 589.74,-945 558.98,-934.46 558.98,-919.54 589.74,-909 633.26,-909 664.03,-919.54"/>
<text text-anchor="middle" x="611.5" y="-923.3" font-family="Times,serif" font-size="14.00">SV/VHDL</text>
</g>
<!-- SVVHDL&#45;&gt;Moore -->
<g id="edge30" class="edge">
<title>SVVHDL&#45;&gt;Moore</title>
<path fill="none" stroke="black" d="M687.87,-908.84C687.87,-896.28 687.87,-878.98 687.87,-864.5"/>
<polygon fill="black" stroke="black" points="691.37,-864.11 687.87,-854.11 684.37,-864.11 691.37,-864.11"/>
<path fill="none" stroke="black" d="M611.5,-908.84C611.5,-896.61 611.5,-879.87 611.5,-865.63"/>
<polygon fill="black" stroke="black" points="615,-865.92 611.5,-855.92 608,-865.92 615,-865.92"/>
</g>
<!-- PyFile -->
<g id="node35" class="node">
<g id="node36" class="node">
<title>PyFile</title>
<polygon fill="#ffff99" stroke="black" points="615.14,-919.54 615.14,-934.46 587.45,-945 548.29,-945 520.6,-934.46 520.6,-919.54 548.29,-909 587.45,-909 615.14,-919.54"/>
<text text-anchor="middle" x="567.87" y="-923.3" font-family="Times,serif" font-size="14.00">Python</text>
<polygon fill="#ffff99" stroke="black" points="545.39,-919.54 545.39,-934.46 522.61,-945 490.39,-945 467.62,-934.46 467.62,-919.54 490.39,-909 522.61,-909 545.39,-919.54"/>
<text text-anchor="middle" x="506.5" y="-923.3" font-family="Times,serif" font-size="14.00">Python</text>
</g>
<!-- PyFile&#45;&gt;PyCDE -->
<g id="edge38" class="edge">
<title>PyFile&#45;&gt;PyCDE</title>
<path fill="none" stroke="black" d="M565.43,-908.91C560.45,-874.42 548.49,-794.06 535.87,-727 529.51,-693.21 520.96,-654.55 515.2,-629.29"/>
<polygon fill="black" stroke="black" points="518.56,-628.3 512.92,-619.33 511.74,-629.86 518.56,-628.3"/>
<path fill="none" stroke="black" d="M506.88,-908.53C507.27,-864.47 504.79,-745.8 470.5,-655 467.07,-645.92 462,-636.7 456.86,-628.56"/>
<polygon fill="black" stroke="black" points="459.95,-626.88 451.49,-620.5 454.12,-630.76 459.95,-626.88"/>
</g>
<!-- SystemCFile&#45;&gt;ServiceDesc -->
<!-- SystemCFile&#45;&gt;TCL -->
<!-- SoftwareAPI -->
<g id="node40" class="node">
<g id="node41" class="node">
<title>SoftwareAPI</title>
<polygon fill="none" stroke="black" stroke-dasharray="5,2" points="486.37,-38 357.37,-38 357.37,0 492.37,0 492.37,-32 486.37,-38"/>
<polyline fill="none" stroke="black" stroke-dasharray="5,2" points="486.37,-38 486.37,-32 "/>
<polyline fill="none" stroke="black" stroke-dasharray="5,2" points="492.37,-32 486.37,-32 "/>
<text text-anchor="middle" x="424.87" y="-22.8" font-family="Times,serif" font-size="14.00">Software API</text>
<text text-anchor="middle" x="424.87" y="-7.8" font-family="Times,serif" font-size="14.00">(e.g. py/c++/c#)</text>
<polygon fill="none" stroke="black" stroke-dasharray="5,2" points="341.5,-38 241.5,-38 241.5,0 347.5,0 347.5,-32 341.5,-38"/>
<polyline fill="none" stroke="black" stroke-dasharray="5,2" points="341.5,-38 341.5,-32"/>
<polyline fill="none" stroke="black" stroke-dasharray="5,2" points="347.5,-32 341.5,-32"/>
<text text-anchor="middle" x="294.5" y="-22.8" font-family="Times,serif" font-size="14.00">Software API</text>
<text text-anchor="middle" x="294.5" y="-7.8" font-family="Times,serif" font-size="14.00">(e.g. py/c++/c#)</text>
</g>
<!-- ServiceDesc&#45;&gt;SoftwareAPI -->
<g id="edge44" class="edge">
<g id="edge45" class="edge">
<title>ServiceDesc&#45;&gt;SoftwareAPI</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M424.87,-73.83C424.87,-66.13 424.87,-56.97 424.87,-48.42"/>
<polygon fill="black" stroke="black" points="428.37,-48.41 424.87,-38.41 421.37,-48.41 428.37,-48.41"/>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M294.5,-73.83C294.5,-66.55 294.5,-57.98 294.5,-49.83"/>
<polygon fill="black" stroke="black" points="298,-49.93 294.5,-39.93 291,-49.93 298,-49.93"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB