Fix Router→HBM_CTRL lines visibility in cube_view

Draw HBM connection lines last (on top of component blocks).
PE routers: thicker (1.5px, opacity 0.6) with dashed style.
Relay routers: thinner (0.7px, opacity 0.2).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-04 22:25:40 -07:00
parent 109c9b4483
commit 7cd30e106e
2 changed files with 56 additions and 43 deletions
+32 -32
View File
@@ -126,7 +126,6 @@
<line x1="685" y1="685" x2="835" y2="685" stroke="#475569" stroke-width="1" opacity="0.4"/>
<circle cx="135" cy="135" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="135" y="138" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r0c0</text>
<line x1="135" y1="143" x2="135" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="83" y="107" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="99" y="118" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE0</text>
<line x1="99" y1="123" x2="135" y2="127" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
@@ -139,7 +138,6 @@
<text x="149" y="214" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<circle cx="285" cy="135" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="285" y="138" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r0c1</text>
<line x1="285" y1="143" x2="285" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="251" y="107" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="267" y="118" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE1</text>
<line x1="267" y1="123" x2="285" y2="127" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
@@ -149,19 +147,15 @@
<text x="299" y="214" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<circle cx="435" cy="135" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="435" y="138" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r0c2</text>
<line x1="435" y1="143" x2="435" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="585" cy="135" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="585" y="138" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r0c3</text>
<line x1="585" y1="143" x2="585" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="685" cy="135" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="685" y="138" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r0c4</text>
<line x1="685" y1="143" x2="685" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="669" y="40" width="32" height="16" rx="3" fill="#1e1b4b" stroke="#8b5cf6" stroke-width="1"/>
<text x="685" y="51" text-anchor="middle" font-family="monospace" font-size="6" font-weight="bold" fill="#8b5cf6">UCIe-N.c2</text>
<line x1="685" y1="56" x2="685" y2="127" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
<circle cx="835" cy="135" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="835" y="138" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r0c5</text>
<line x1="835" y1="143" x2="835" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="914" y="109" width="32" height="16" rx="3" fill="#1e1b4b" stroke="#8b5cf6" stroke-width="1"/>
<text x="930" y="120" text-anchor="middle" font-family="monospace" font-size="6" font-weight="bold" fill="#8b5cf6">UCIe-E.c0</text>
<line x1="914" y1="117" x2="843" y2="135" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
@@ -170,29 +164,23 @@
<line x1="853" y1="56" x2="835" y2="127" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
<circle cx="135" cy="260" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="135" y="263" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r1c0</text>
<line x1="135" y1="268" x2="135" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="24" y="252" width="32" height="16" rx="3" fill="#1e1b4b" stroke="#8b5cf6" stroke-width="1"/>
<text x="40" y="263" text-anchor="middle" font-family="monospace" font-size="6" font-weight="bold" fill="#8b5cf6">UCIe-W.c1</text>
<line x1="56" y1="260" x2="127" y2="260" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
<circle cx="285" cy="260" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="285" y="263" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r1c1</text>
<line x1="285" y1="268" x2="285" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="435" cy="260" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="435" y="263" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r1c2</text>
<line x1="435" y1="268" x2="435" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="585" cy="260" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="585" y="263" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r1c3</text>
<line x1="585" y1="268" x2="585" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="685" cy="260" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="685" y="263" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r1c4</text>
<line x1="685" y1="268" x2="685" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="669" y="232" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="685" y="243" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE2</text>
<line x1="685" y1="248" x2="685" y2="252" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
<text x="699" y="276" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<circle cx="835" cy="260" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="835" y="263" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r1c5</text>
<line x1="835" y1="268" x2="835" y2="285" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="801" y="232" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="817" y="243" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE3</text>
<line x1="817" y1="248" x2="835" y2="252" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
@@ -202,37 +190,28 @@
<text x="849" y="276" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<circle cx="135" cy="335" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="135" y="338" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r2c0</text>
<line x1="135" y1="327" x2="135" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="119" y="307" width="32" height="16" rx="3" fill="#451a03" stroke="#f59e0b" stroke-width="1"/>
<text x="135" y="318" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#f59e0b">M_CPU</text>
<line x1="135" y1="323" x2="135" y2="327" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<circle cx="285" cy="335" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="285" y="338" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r2c1</text>
<line x1="285" y1="327" x2="285" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="685" cy="335" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="685" y="338" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r2c4</text>
<line x1="685" y1="327" x2="685" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="835" cy="335" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="835" y="338" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r2c5</text>
<line x1="835" y1="327" x2="835" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="135" cy="485" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="135" y="488" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r3c0</text>
<line x1="135" y1="477" x2="135" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="119" y="497" width="32" height="16" rx="3" fill="#1c1917" stroke="#d97706" stroke-width="1"/>
<text x="135" y="508" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#d97706">SRAM</text>
<line x1="135" y1="497" x2="135" y2="493" stroke="#d97706" stroke-width="1" opacity="0.6"/>
<circle cx="285" cy="485" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="285" y="488" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r3c1</text>
<line x1="285" y1="477" x2="285" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="685" cy="485" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="685" y="488" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r3c4</text>
<line x1="685" y1="477" x2="685" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="835" cy="485" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="835" y="488" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r3c5</text>
<line x1="835" y1="477" x2="835" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="135" cy="560" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="135" y="563" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r4c0</text>
<line x1="135" y1="552" x2="135" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="101" y="572" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="117" y="583" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE4</text>
<line x1="117" y1="572" x2="135" y2="568" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
@@ -242,29 +221,23 @@
<text x="149" y="544" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<circle cx="285" cy="560" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="285" y="563" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r4c1</text>
<line x1="285" y1="552" x2="285" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="269" y="572" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="285" y="583" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE5</text>
<line x1="285" y1="572" x2="285" y2="568" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
<text x="299" y="544" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<circle cx="435" cy="560" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="435" y="563" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r4c2</text>
<line x1="435" y1="552" x2="435" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="585" cy="560" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="585" y="563" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r4c3</text>
<line x1="585" y1="552" x2="585" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="685" cy="560" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="685" y="563" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r4c4</text>
<line x1="685" y1="552" x2="685" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="835" cy="560" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="835" y="563" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r4c5</text>
<line x1="835" y1="552" x2="835" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="914" y="552" width="32" height="16" rx="3" fill="#1e1b4b" stroke="#8b5cf6" stroke-width="1"/>
<text x="930" y="563" text-anchor="middle" font-family="monospace" font-size="6" font-weight="bold" fill="#8b5cf6">UCIe-E.c2</text>
<line x1="914" y1="560" x2="843" y2="560" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
<circle cx="135" cy="685" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="135" y="688" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r5c0</text>
<line x1="135" y1="677" x2="135" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="24" y="659" width="32" height="16" rx="3" fill="#1e1b4b" stroke="#8b5cf6" stroke-width="1"/>
<text x="40" y="670" text-anchor="middle" font-family="monospace" font-size="6" font-weight="bold" fill="#8b5cf6">UCIe-W.c3</text>
<line x1="56" y1="667" x2="127" y2="685" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
@@ -273,19 +246,15 @@
<line x1="153" y1="764" x2="135" y2="693" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
<circle cx="285" cy="685" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="285" y="688" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r5c1</text>
<line x1="285" y1="677" x2="285" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="269" y="764" width="32" height="16" rx="3" fill="#1e1b4b" stroke="#8b5cf6" stroke-width="1"/>
<text x="285" y="775" text-anchor="middle" font-family="monospace" font-size="6" font-weight="bold" fill="#8b5cf6">UCIe-S.c1</text>
<line x1="285" y1="764" x2="285" y2="693" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
<circle cx="435" cy="685" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="435" y="688" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r5c2</text>
<line x1="435" y1="677" x2="435" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="585" cy="685" r="8" fill="#334155" stroke="#475569" stroke-width="1"/>
<text x="585" y="688" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r5c3</text>
<line x1="585" y1="677" x2="585" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<circle cx="685" cy="685" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="685" y="688" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r5c4</text>
<line x1="685" y1="677" x2="685" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="651" y="697" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="667" y="708" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE6</text>
<line x1="667" y1="697" x2="685" y2="693" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
@@ -295,7 +264,6 @@
<text x="699" y="606" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<circle cx="835" cy="685" r="8" fill="#475569" stroke="#64748b" stroke-width="1"/>
<text x="835" y="688" text-anchor="middle" font-family="monospace" font-size="6" fill="white">r5c5</text>
<line x1="835" y1="677" x2="835" y2="535" stroke="#10b981" stroke-width="0.8" opacity="0.25"/>
<rect x="783" y="697" width="32" height="16" rx="3" fill="#2d1f3d" stroke="#a855f7" stroke-width="1"/>
<text x="799" y="708" text-anchor="middle" font-family="monospace" font-size="7" font-weight="bold" fill="#a855f7">PE7</text>
<line x1="799" y1="697" x2="835" y2="693" stroke="#a855f7" stroke-width="1" opacity="0.6"/>
@@ -306,6 +274,38 @@
<text x="871" y="775" text-anchor="middle" font-family="monospace" font-size="6" font-weight="bold" fill="#8b5cf6">UCIe-S.c3</text>
<line x1="871" y1="764" x2="835" y2="693" stroke="#8b5cf6" stroke-width="1" opacity="0.6"/>
<text x="849" y="606" font-family="monospace" font-size="6" fill="#10b98188">256GB/s</text>
<line x1="135" y1="143" x2="135" y2="285" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<line x1="285" y1="143" x2="285" y2="285" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<line x1="435" y1="143" x2="435" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="585" y1="143" x2="585" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="685" y1="143" x2="685" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="835" y1="143" x2="835" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="135" y1="268" x2="135" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="285" y1="268" x2="285" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="435" y1="268" x2="435" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="585" y1="268" x2="585" y2="285" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="685" y1="268" x2="685" y2="285" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<line x1="835" y1="268" x2="835" y2="285" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<line x1="135" y1="327" x2="135" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="285" y1="327" x2="285" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="685" y1="327" x2="685" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="835" y1="327" x2="835" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="135" y1="477" x2="135" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="285" y1="477" x2="285" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="685" y1="477" x2="685" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="835" y1="477" x2="835" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="135" y1="552" x2="135" y2="535" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<line x1="285" y1="552" x2="285" y2="535" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<line x1="435" y1="552" x2="435" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="585" y1="552" x2="585" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="685" y1="552" x2="685" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="835" y1="552" x2="835" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="135" y1="677" x2="135" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="285" y1="677" x2="285" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="435" y1="677" x2="435" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="585" y1="677" x2="585" y2="535" stroke="#10b981" stroke-width="0.7" opacity="0.2" stroke-dasharray="4,3"/>
<line x1="685" y1="677" x2="685" y2="535" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<line x1="835" y1="677" x2="835" y2="535" stroke="#10b981" stroke-width="1.5" opacity="0.6" stroke-dasharray="4,3"/>
<rect x="60" y="865" width="10" height="10" rx="2" fill="#3b82f6" stroke="#475569" stroke-width="0.5"/>
<text x="74" y="874" font-family="monospace" font-size="8" fill="#94a3b8">PE Router</text>
<rect x="147" y="865" width="10" height="10" rx="2" fill="#f59e0b" stroke="#475569" stroke-width="0.5"/>

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB