Files
kernbench2/docs/diagrams/cube_view.svg
T
ywkang 5917b3497c Replace xbar/bridge/single-NOC with explicit router mesh (ADR-0019)
- Remove xbar_top/bot, bridge, single noc node from topology
- Each cube_mesh.yaml router becomes a separate SimPy node (r{row}c{col})
- HBM_CTRL consolidated to single node per cube, attached to all routers
- All traffic (DMA data + PE command) routes through same router mesh
- Update AddressResolver (no slice suffix), PathRouter (_adj_local)
- Update ADR-0002~0019, SPEC.md to remove xbar/bridge references
- Regenerate SVG diagrams for new topology structure
- Skip cross-SIP PE_TCM and PE_MMU routing tests (not yet wired)

326 passed, 13 skipped

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 17:51:28 -07:00

161 lines
18 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="556" height="472" viewBox="0 0 556 472">
<title>cube</title>
<rect width="556" height="472" fill="#f8fafc"/>
<text x="278" y="18" text-anchor="middle" font-family="monospace" font-size="14" font-weight="bold" fill="#1e293b">CUBE VIEW</text>
<rect x="40.0" y="40.0" width="476.0" height="392.0" rx="6" fill="none" stroke="#475569" stroke-width="2" stroke-dasharray="8,4"/>
<rect x="152.0" y="166.0" width="252.0" height="140.0" rx="4" fill="#d1fae5" stroke="#10b981" stroke-width="1.5" stroke-dasharray="6,3" opacity="0.5"/>
<text x="278.0" y="278.0" text-anchor="middle" font-family="monospace" font-size="11" fill="#047857" opacity="0.7">HBM</text>
<polyline points="82.0,82.0 82.0,144.0 334.0,144.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,144.0 82.0,144.0 82.0,82.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="166.0,82.0 166.0,154.0 334.0,154.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,144.0 166.0,144.0 166.0,82.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="390.0,82.0 390.0,164.0 334.0,164.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<text x="362.0" y="161.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#64748b">4.0mm 256GB/s</text>
<polyline points="334.0,236.0 334.0,144.0 390.0,144.0 390.0,82.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="474.0,82.0 474.0,174.0 334.0,174.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<text x="404.0" y="171.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#64748b">4.0mm 256GB/s</text>
<polyline points="334.0,236.0 334.0,144.0 474.0,144.0 474.0,82.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="82.0,390.0 82.0,338.0 334.0,338.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<text x="208.0" y="335.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#64748b">4.0mm 256GB/s</text>
<polyline points="334.0,236.0 334.0,298.0 82.0,298.0 82.0,390.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="166.0,390.0 166.0,348.0 334.0,348.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<text x="250.0" y="345.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#64748b">4.0mm 256GB/s</text>
<polyline points="334.0,236.0 334.0,298.0 166.0,298.0 166.0,390.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="390.0,390.0 390.0,358.0 334.0,358.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,298.0 390.0,298.0 390.0,390.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="474.0,390.0 474.0,368.0 334.0,368.0 334.0,236.0" fill="none" stroke="#f97316" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,298.0 474.0,298.0 474.0,390.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<line x1="334.0" y1="236.0" x2="222.0" y2="236.0" stroke="#10b981" stroke-width="1" opacity="0.8"/>
<line x1="222.0" y1="236.0" x2="334.0" y2="236.0" stroke="#10b981" stroke-width="1" opacity="0.8"/>
<polyline points="446.0,194.0 446.0,200.0 334.0,200.0 334.0,236.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="334.0,236.0 334.0,200.0 446.0,200.0 446.0,194.0" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.6"/>
<polyline points="334.0,236.0 110.0,236.0 110.0,194.0" fill="none" stroke="#a78bfa" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,131.4 278.0,131.4 278.0,56.8" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,56.8 278.0,131.4 334.0,131.4 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,131.4 278.0,131.4 278.0,56.8" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,56.8 278.0,141.4 334.0,141.4 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,131.4 278.0,131.4 278.0,56.8" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,56.8 278.0,151.4 334.0,151.4 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,131.4 278.0,131.4 278.0,56.8" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="56.8" x2="278.0" y2="56.8" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,56.8 278.0,161.4 334.0,161.4 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,310.6 278.0,310.6 278.0,415.2" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,415.2 278.0,350.6 334.0,350.6 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,310.6 278.0,310.6 278.0,415.2" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,415.2 278.0,360.6 334.0,360.6 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,310.6 278.0,310.6 278.0,415.2" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,415.2 278.0,370.6 334.0,370.6 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,310.6 278.0,310.6 278.0,415.2" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="278.0" y1="415.2" x2="278.0" y2="415.2" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="278.0,415.2 278.0,380.6 334.0,380.6 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 488.0,221.0 488.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="488.0,236.0 488.0,301.0 334.0,301.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 488.0,221.0 488.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="488.0,236.0 488.0,311.0 334.0,311.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 488.0,221.0 488.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="488.0,236.0 488.0,321.0 334.0,321.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 488.0,221.0 488.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="488.0" y1="236.0" x2="488.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="488.0,236.0 488.0,331.0 334.0,331.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 68.0,221.0 68.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="68.0,236.0 68.0,341.0 334.0,341.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 68.0,221.0 68.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="68.0,236.0 68.0,351.0 334.0,351.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 68.0,221.0 68.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="68.0,236.0 68.0,361.0 334.0,361.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="334.0,236.0 334.0,221.0 68.0,221.0 68.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<line x1="68.0" y1="236.0" x2="68.0" y2="236.0" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<polyline points="68.0,236.0 68.0,371.0 334.0,371.0 334.0,236.0" fill="none" stroke="#94a3b8" stroke-width="1" opacity="0.8"/>
<rect x="250.0" y="40.0" width="56.0" height="33.6" rx="4" fill="#3b82f6" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="60.8" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffffff">UCIe-N</text>
<rect x="250.0" y="40.0" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="60.8" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-N C0</text>
<rect x="250.0" y="40.0" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="60.8" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-N C1</text>
<rect x="250.0" y="40.0" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="60.8" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-N C2</text>
<rect x="250.0" y="40.0" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="60.8" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-N C3</text>
<rect x="250.0" y="398.4" width="56.0" height="33.6" rx="4" fill="#3b82f6" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="419.2" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffffff">UCIe-S</text>
<rect x="250.0" y="398.4" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="419.2" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-S C0</text>
<rect x="250.0" y="398.4" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="419.2" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-S C1</text>
<rect x="250.0" y="398.4" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="419.2" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-S C2</text>
<rect x="250.0" y="398.4" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="278.0" y="419.2" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-S C3</text>
<rect x="460.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#3b82f6" stroke="#475569" stroke-width="1"/>
<text x="488.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffffff">UCIe-E</text>
<rect x="460.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="488.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-E C0</text>
<rect x="460.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="488.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-E C1</text>
<rect x="460.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="488.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-E C2</text>
<rect x="460.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="488.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-E C3</text>
<rect x="40.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#3b82f6" stroke="#475569" stroke-width="1"/>
<text x="68.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#ffffff">UCIe-W</text>
<rect x="40.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="68.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-W C0</text>
<rect x="40.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="68.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-W C1</text>
<rect x="40.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="68.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-W C2</text>
<rect x="40.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#e2e8f0" stroke="#475569" stroke-width="1"/>
<text x="68.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">UCIe-W C3</text>
<rect x="418.0" y="177.2" width="56.0" height="33.6" rx="4" fill="#f59e0b" stroke="#475569" stroke-width="1"/>
<text x="446.0" y="198.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">M CPU</text>
<rect x="194.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#10b981" stroke="#475569" stroke-width="1"/>
<text x="222.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="8" fill="#ffffff">HBM CTRL</text>
<rect x="82.0" y="177.2" width="56.0" height="33.6" rx="4" fill="#f59e0b" stroke="#475569" stroke-width="1"/>
<text x="110.0" y="198.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">SRAM</text>
<rect x="306.0" y="219.2" width="56.0" height="33.6" rx="4" fill="#f97316" stroke="#475569" stroke-width="1"/>
<text x="334.0" y="240.0" text-anchor="middle" font-family="monospace" font-size="7" fill="#1e293b">ROUTER MESH</text>
<rect x="56.8" y="68.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="82.0" y="86.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE0</text>
<rect x="140.8" y="68.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="166.0" y="86.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE1</text>
<rect x="364.8" y="68.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="390.0" y="86.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE2</text>
<rect x="448.8" y="68.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="474.0" y="86.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE3</text>
<rect x="56.8" y="376.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="82.0" y="394.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE4</text>
<rect x="140.8" y="376.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="166.0" y="394.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE5</text>
<rect x="364.8" y="376.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="390.0" y="394.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE6</text>
<rect x="448.8" y="376.0" width="50.4" height="28.0" rx="4" fill="#94a3b8" stroke="#475569" stroke-width="1"/>
<text x="474.0" y="394.0" text-anchor="middle" font-family="monospace" font-size="10" fill="#1e293b">PE7</text>
</svg>