<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="drawio" version="26.0.0">
  <diagram name="DG32-LITE architecture">
    <mxGraphModel dx="1600" dy="1040" grid="1" gridSize="10" page="1" pageWidth="1600" pageHeight="1060" background="#FFFFFF">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <!-- Die boundary -->
        <mxCell id="die" value="DG32-LITE  ·  one 50 MHz clock domain  ·  130 nm CMOS  ·  QFN-64" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F4F8FE;strokeColor=#0A1628;strokeWidth=2;dashed=1;verticalAlign=top;align=left;spacingLeft=14;spacingTop=6;fontSize=15;fontStyle=1;fontColor=#0A1628;" vertex="1" parent="1">
          <mxGeometry x="40" y="70" width="1180" height="760" as="geometry" />
        </mxCell>
        <mxCell id="title" value="DG32-LITE system architecture" style="text;html=1;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1">
          <mxGeometry x="40" y="16" width="700" height="40" as="geometry" />
        </mxCell>

        <!-- Zone: safety core -->
        <mxCell id="zSafe" value="Safety core" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E8F8FC;strokeColor=#00B4D8;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1">
          <mxGeometry x="70" y="110" width="420" height="250" as="geometry" />
        </mxCell>
        <mxCell id="main" value="&lt;b&gt;MAIN core&lt;/b&gt;&lt;br&gt;RV32IM · application" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#00B4D8;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="90" y="150" width="170" height="70" as="geometry" />
        </mxCell>
        <mxCell id="chk" value="&lt;b&gt;CHECKER core&lt;/b&gt;&lt;br&gt;same inputs, 2 cycles behind" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#00B4D8;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="300" y="150" width="170" height="70" as="geometry" />
        </mxCell>
        <mxCell id="cmp" value="&lt;b&gt;Lockstep comparator&lt;/b&gt;&lt;br&gt;every committed store" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#00B4D8;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="90" y="270" width="170" height="70" as="geometry" />
        </mxCell>
        <mxCell id="flt" value="&lt;b&gt;Fault latch&lt;/b&gt;&lt;br&gt;first cause · FAULT_N" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B42318;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="300" y="270" width="170" height="70" as="geometry" />
        </mxCell>

        <!-- Zone: memory and boot -->
        <mxCell id="zMem" value="Memory &amp;amp; boot" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#8DB4D4;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1">
          <mxGeometry x="520" y="110" width="420" height="250" as="geometry" />
        </mxCell>
        <mxCell id="rom" value="&lt;b&gt;Boot ROM 64 KB&lt;/b&gt;&lt;br&gt;validates image, copies to SRAM" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="540" y="150" width="180" height="70" as="geometry" />
        </mxCell>
        <mxCell id="sram" value="&lt;b&gt;SRAM 32 KB&lt;/b&gt;&lt;br&gt;dual-port: data + fetch" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="540" y="270" width="180" height="70" as="geometry" />
        </mxCell>
        <mxCell id="qspi" value="&lt;b&gt;QSPI controller&lt;/b&gt;&lt;br&gt;boot flash + PSRAM window" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="740" y="150" width="180" height="70" as="geometry" />
        </mxCell>
        <mxCell id="dma" value="&lt;b&gt;DMA&lt;/b&gt;&lt;br&gt;second bus master" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="740" y="270" width="180" height="70" as="geometry" />
        </mxCell>

        <!-- Zone: supervision -->
        <mxCell id="zSys" value="Supervision" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#8DB4D4;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1">
          <mxGeometry x="970" y="110" width="220" height="250" as="geometry" />
        </mxCell>
        <mxCell id="wdt" value="&lt;b&gt;Windowed watchdog&lt;/b&gt;&lt;br&gt;+ supply supervisor" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="990" y="150" width="180" height="70" as="geometry" />
        </mxCell>
        <mxCell id="irq" value="&lt;b&gt;Interrupt controller&lt;/b&gt;&lt;br&gt;16 sources, both cores" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="990" y="270" width="180" height="70" as="geometry" />
        </mxCell>

        <!-- Bus -->
        <mxCell id="bus" value="&lt;b&gt;On-chip bus&lt;/b&gt;  ·  two masters (CPU, DMA)  ·  deterministic latency  ·  unmapped address → bus error, never a hang" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0A1628;strokeColor=#0A1628;fontSize=14;fontColor=#FFFFFF;" vertex="1" parent="1">
          <mxGeometry x="70" y="400" width="1120" height="56" as="geometry" />
        </mxCell>

        <!-- Zone: motor drive -->
        <mxCell id="zMtr" value="Motor drive" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E8F6F5;strokeColor=#0A9396;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1">
          <mxGeometry x="70" y="500" width="360" height="300" as="geometry" />
        </mxCell>
        <mxCell id="pwm" value="&lt;b&gt;3-phase PWM&lt;/b&gt;  ·  dead-time  ·  hardware brake" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#0A9396;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="90" y="540" width="320" height="60" as="geometry" />
        </mxCell>
        <mxCell id="dshot" value="&lt;b&gt;DShot × 4&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#0A9396;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="90" y="630" width="150" height="60" as="geometry" />
        </mxCell>
        <mxCell id="tmr" value="&lt;b&gt;Timers × 2&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#0A9396;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="260" y="630" width="150" height="60" as="geometry" />
        </mxCell>
        <mxCell id="sysctl" value="&lt;b&gt;System control&lt;/b&gt;  ·  clock gates  ·  pin mux" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#0A9396;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="90" y="720" width="320" height="60" as="geometry" />
        </mxCell>

        <!-- Zone: sensing and math -->
        <mxCell id="zSns" value="Sensing &amp;amp; math" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E8F6F5;strokeColor=#0A9396;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1">
          <mxGeometry x="450" y="500" width="360" height="300" as="geometry" />
        </mxCell>
        <mxCell id="adc" value="&lt;b&gt;SAR ADC 8-bit&lt;/b&gt;  ·  differential  ·  ~200 kSa/s" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#0A9396;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="470" y="540" width="320" height="60" as="geometry" />
        </mxCell>
        <mxCell id="enc" value="&lt;b&gt;Encoder + Hall&lt;/b&gt;&lt;br&gt;edge timestamps" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#0A9396;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="470" y="630" width="150" height="60" as="geometry" />
        </mxCell>
        <mxCell id="cordic" value="&lt;b&gt;CORDIC&lt;/b&gt;&lt;br&gt;sin · cos · atan2" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#0A9396;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="640" y="630" width="150" height="60" as="geometry" />
        </mxCell>

        <!-- Zone: connectivity and test -->
        <mxCell id="zCom" value="Connectivity &amp;amp; test" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#8DB4D4;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1">
          <mxGeometry x="830" y="500" width="360" height="300" as="geometry" />
        </mxCell>
        <mxCell id="uart" value="&lt;b&gt;UART × 2&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="850" y="540" width="150" height="60" as="geometry" />
        </mxCell>
        <mxCell id="spi" value="&lt;b&gt;SPI&lt;/b&gt;  ·  to 25 MHz" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="1020" y="540" width="150" height="60" as="geometry" />
        </mxCell>
        <mxCell id="i2c" value="&lt;b&gt;I²C&lt;/b&gt;  ·  100/400 kHz" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="850" y="630" width="150" height="60" as="geometry" />
        </mxCell>
        <mxCell id="gpio" value="&lt;b&gt;GPIO&lt;/b&gt;  ·  atomic set/clear" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="1020" y="630" width="150" height="60" as="geometry" />
        </mxCell>
        <mxCell id="jtag" value="&lt;b&gt;JTAG + scan chains&lt;/b&gt;  ·  production test" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8DB4D4;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="850" y="720" width="320" height="60" as="geometry" />
        </mxCell>

        <!-- External components -->
        <mxCell id="xflash" value="&lt;b&gt;QSPI NOR flash&lt;/b&gt;&lt;br&gt;application image (external)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#6B7280;dashed=1;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="1270" y="90" width="230" height="70" as="geometry" />
        </mxCell>
        <mxCell id="xgate" value="&lt;b&gt;Gate driver + 3-phase bridge&lt;/b&gt;&lt;br&gt;(external)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#6B7280;dashed=1;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="90" y="890" width="320" height="70" as="geometry" />
        </mxCell>
        <mxCell id="xmotor" value="&lt;b&gt;Motor sensors&lt;/b&gt;&lt;br&gt;encoder · Hall · phase-current shunt (external)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#6B7280;dashed=1;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="470" y="890" width="320" height="70" as="geometry" />
        </mxCell>
        <mxCell id="xhost" value="&lt;b&gt;Host, sensors, test&lt;/b&gt;&lt;br&gt;console · SPI/I²C devices · JTAG probe (external)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#6B7280;dashed=1;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1">
          <mxGeometry x="850" y="890" width="320" height="70" as="geometry" />
        </mxCell>

        <!-- Safety core edges -->
        <mxCell id="e1" value="same inputs" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=2;fontSize=11;fontColor=#1E293B;labelBackgroundColor=#E8F8FC;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="main" target="chk">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=2;exitX=0.4;exitY=1;entryX=0.4;entryY=0;" edge="1" parent="1" source="main" target="cmp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=2;exitX=0.2;exitY=1;entryX=0.8;entryY=0;" edge="1" parent="1" source="chk" target="cmp">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="334" y="245" />
              <mxPoint x="226" y="245" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e4" value="mismatch" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#B42318;strokeWidth=2;fontSize=11;fontColor=#1E293B;labelBackgroundColor=#E8F8FC;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="cmp" target="flt">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Zone to bus -->
        <mxCell id="b1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#0A1628;strokeWidth=2;startArrow=block;startFill=1;exitX=0.5;exitY=1;entryX=0.1875;entryY=0;" edge="1" parent="1" source="zSafe" target="bus">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#0A1628;strokeWidth=2;startArrow=block;startFill=1;exitX=0.5;exitY=1;entryX=0.5893;entryY=0;" edge="1" parent="1" source="zMem" target="bus">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#0A1628;strokeWidth=2;startArrow=block;startFill=1;exitX=0.5;exitY=1;entryX=0.9018;entryY=0;" edge="1" parent="1" source="zSys" target="bus">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#0A1628;strokeWidth=2;startArrow=block;startFill=1;exitX=0.8393;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="bus" target="zCom">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <!-- Numbered control loop: 1 to 5 -->
        <mxCell id="l1" value="①" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=3;fontSize=12;fontStyle=1;fontColor=#0A1628;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="pwm" target="adc">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="l2" value="②" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=3;fontSize=12;fontStyle=1;fontColor=#0A1628;labelBackgroundColor=#FFFFFF;exitX=0.766;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="adc" target="cordic">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="l3" value="③" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=3;fontSize=12;fontStyle=1;fontColor=#0A1628;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0.66;entryY=1;" edge="1" parent="1" source="cordic" target="bus">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="820" y="660" />
              <mxPoint x="820" y="480" />
              <mxPoint x="809" y="480" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="l4" value="④" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=3;fontSize=12;fontStyle=1;fontColor=#0A1628;labelBackgroundColor=#FFFFFF;exitX=0.16;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="bus" target="pwm">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="l5" value="⑤" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#00B4D8;strokeWidth=3;fontSize=12;fontStyle=1;fontColor=#0A1628;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.5;entryX=0;entryY=0.3;" edge="1" parent="1" source="pwm" target="xgate">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="58" y="570" />
              <mxPoint x="58" y="911" />
            </Array>
          </mxGeometry>
        </mxCell>

        <!-- Fault path -->
        <mxCell id="f1" value="F" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#B42318;strokeWidth=3;dashed=1;fontSize=12;fontStyle=1;fontColor=#B42318;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0;entryY=0.75;" edge="1" parent="1" source="flt" target="xgate">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="385" y="380" />
              <mxPoint x="22" y="380" />
              <mxPoint x="22" y="943" />
            </Array>
          </mxGeometry>
        </mxCell>

        <!-- External links -->
        <mxCell id="x1" value="position" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#6B7280;strokeWidth=2;fontSize=11;fontColor=#1E293B;labelBackgroundColor=#FFFFFF;exitX=0.234;exitY=0;entryX=0.5;entryY=1;" edge="1" parent="1" source="xmotor" target="enc">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="x2" value="phase current" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#6B7280;strokeWidth=2;fontSize=11;fontColor=#1E293B;labelBackgroundColor=#FFFFFF;exitX=0.06;exitY=0;entryX=0;entryY=0.85;" edge="1" parent="1" source="xmotor" target="adc">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="489" y="860" />
              <mxPoint x="440" y="860" />
              <mxPoint x="440" y="591" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="x3" value="UART · SPI · I²C · JTAG" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#6B7280;strokeWidth=2;startArrow=block;startFill=1;fontSize=11;fontColor=#1E293B;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="jtag" target="xhost">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="x4" value="load at boot" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#6B7280;strokeWidth=2;startArrow=block;startFill=1;fontSize=11;fontColor=#1E293B;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=0;entryX=0;entryY=0.5;" edge="1" parent="1" source="qspi" target="xflash">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="830" y="92" />
              <mxPoint x="1240" y="92" />
              <mxPoint x="1240" y="125" />
            </Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="fnote" value="F  FAULT_N trips the bridge in hardware, without firmware" style="text;html=1;align=left;verticalAlign=middle;fontSize=12;fontStyle=1;fontColor=#B42318;" vertex="1" parent="1">
          <mxGeometry x="90" y="966" width="420" height="24" as="geometry" />
        </mxCell>
        <!-- Key -->
        <mxCell id="key" value="&lt;b&gt;Current loop&lt;/b&gt;  ① PWM fires the ADC sample  ② phase current to CORDIC  ③ transforms to the CPU  ④ PI output sets PWM duty  ⑤ gate signals   ·   dashed boxes are off-chip   ·   pre-silicon design, September 2026" style="text;html=1;align=left;verticalAlign=middle;fontSize=13;fontColor=#6B7280;" vertex="1" parent="1">
          <mxGeometry x="40" y="1000" width="1460" height="30" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
