<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="drawio" version="26.0.0"><diagram name="SKU-1 architecture"><mxGraphModel dx="1560" dy="876" grid="1" gridSize="10" page="1" pageWidth="1560" pageHeight="876" background="#FFFFFF"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="c2" value="SKU-1 BLDC motor controller system architecture" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=24;fontColor=#1E293B;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="40" y="10" width="1200" height="36" as="geometry"/></mxCell><mxCell id="c3" value="Host control plane, mixed signal and power path on one AXI bus; a hardware field-oriented-control datapath closes the current loop" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=13;fontColor=#6B7280;" vertex="1" parent="1"><mxGeometry x="40" y="44" width="1480" height="24" as="geometry"/></mxCell><mxCell id="c33" value="SKU-1  ·  130 nm BCD / high-voltage CMOS  ·  100 MHz" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FBFCFE;strokeColor=#0A1628;strokeWidth=2;dashed=1;verticalAlign=top;align=right;spacingRight=14;spacingTop=6;fontSize=15;fontStyle=1;fontColor=#0A1628;" vertex="1" parent="1"><mxGeometry x="40" y="130" width="1480" height="570" as="geometry"/></mxCell><mxCell id="c4" value="&lt;b&gt;Speed (rpm) · torque · halt · brake · ramp up / down   (host commands)&lt;/b&gt;" 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="60" y="78" width="520" height="36" as="geometry"/></mxCell><mxCell id="c5" value="Host · control plane" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F4F8FE;strokeColor=#8DB4D4;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1"><mxGeometry x="60" y="170" width="481" height="250" as="geometry"/></mxCell><mxCell id="c6" value="&lt;b&gt;DGridRiscV&lt;/b&gt;&lt;br&gt;custom 32-bit RISC-V · 100 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="72" y="204" width="224" height="61" as="geometry"/></mxCell><mxCell id="c7" value="&lt;b&gt;Timers · WDT · CCU&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="306" y="204" width="224" height="61" as="geometry"/></mxCell><mxCell id="c8" value="&lt;b&gt;SRAM&lt;/b&gt;&lt;br&gt;32 KB, up to 256 KB" 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="72" y="275" width="224" height="61" as="geometry"/></mxCell><mxCell id="c9" value="&lt;b&gt;ReRAM&lt;/b&gt;&lt;br&gt;256 KB, up to 1 MB" 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="306" y="275" width="224" height="61" as="geometry"/></mxCell><mxCell id="c10" value="&lt;b&gt;Host interfaces&lt;/b&gt;&lt;br&gt;I²C slave · UART × 4 · SPI · CAN-FD × 2 · JTAG" 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="72" y="347" width="457" height="61" as="geometry"/></mxCell><mxCell id="c11" value="Mixed signal" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFAEB;strokeColor=#B54708;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1"><mxGeometry x="561" y="170" width="350" height="250" as="geometry"/></mxCell><mxCell id="c12" value="&lt;b&gt;16-bit ADC&lt;/b&gt;&lt;br&gt;phase / bus / temp" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B54708;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="573" y="204" width="158" height="97" as="geometry"/></mxCell><mxCell id="c13" value="&lt;b&gt;DAC × 4&lt;/b&gt;&lt;br&gt;reference out" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B54708;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="741" y="204" width="158" height="97" as="geometry"/></mxCell><mxCell id="c14" value="&lt;b&gt;Temp sense&lt;/b&gt;&lt;br&gt;on-die, −40 to +125 °C" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B54708;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="573" y="311" width="158" height="97" as="geometry"/></mxCell><mxCell id="c15" value="&lt;b&gt;CSA × 3&lt;/b&gt;&lt;br&gt;current-sense amps" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B54708;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="741" y="311" width="158" height="97" as="geometry"/></mxCell><mxCell id="c16" value="Power path" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FEF3F2;strokeColor=#B42318;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1"><mxGeometry x="931" y="170" width="569" height="250" as="geometry"/></mxCell><mxCell id="c17" value="&lt;b&gt;B-B converter&lt;/b&gt;&lt;br&gt;buck-boost, PWM-pin driven" 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="943" y="204" width="175" height="97" as="geometry"/></mxCell><mxCell id="c18" value="&lt;b&gt;PWM × 7&lt;/b&gt;&lt;br&gt;up to 200 kHz · 6 bridge + 1 aux" 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="1128" y="204" width="175" height="97" as="geometry"/></mxCell><mxCell id="c19" value="&lt;b&gt;Pre-drivers R / Y / B&lt;/b&gt;&lt;br&gt;3 half-bridges · clock gating per phase" 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="1313" y="204" width="175" height="97" as="geometry"/></mxCell><mxCell id="c20" value="&lt;b&gt;Star / delta&lt;/b&gt;&lt;br&gt;winding configuration, runtime selectable" 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="943" y="311" width="175" height="97" as="geometry"/></mxCell><mxCell id="c21" value="&lt;b&gt;Protection&lt;/b&gt;&lt;br&gt;thermal · overcurrent · overvoltage → gate shutdown, latched" 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="1128" y="311" width="175" height="97" as="geometry"/></mxCell><mxCell id="c22" value="&lt;b&gt;AXI bus  ·  memory-mapped register file  ·  100 MHz&lt;/b&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0A1628;strokeColor=#0A1628;fontSize=14;fontColor=#FFFFFF;" vertex="1" parent="1"><mxGeometry x="60" y="448" width="1440" height="38" as="geometry"/></mxCell><mxCell id="c23" value="Field-oriented control datapath" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F4F3FF;strokeColor=#6941C6;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1"><mxGeometry x="60" y="514" width="874" height="170" as="geometry"/></mxCell><mxCell id="c24" value="&lt;b&gt;PID tuner&lt;/b&gt;&lt;br&gt;hardware · &amp;lt;1 µs tuning latency" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6941C6;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="72" y="548" width="205" height="124" as="geometry"/></mxCell><mxCell id="c25" value="&lt;b&gt;Rect → polar&lt;/b&gt;&lt;br&gt;CORDIC · magnitude + angle" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6941C6;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="287" y="548" width="205" height="124" as="geometry"/></mxCell><mxCell id="c26" value="&lt;b&gt;d,q → 3-phase&lt;/b&gt;&lt;br&gt;inverse Park + Clarke" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6941C6;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="502" y="548" width="205" height="124" as="geometry"/></mxCell><mxCell id="c27" value="&lt;b&gt;Sine / trapezoid&lt;/b&gt;&lt;br&gt;lookup tables · sinusoidal or 6-step" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6941C6;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="717" y="548" width="205" height="124" as="geometry"/></mxCell><mxCell id="c28" value="Sensor + feedback" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ECFDF3;strokeColor=#067647;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;fontStyle=1;fontColor=#1E293B;" vertex="1" parent="1"><mxGeometry x="954" y="514" width="546" height="170" as="geometry"/></mxCell><mxCell id="c29" value="&lt;b&gt;Hall / quad / enc&lt;/b&gt;&lt;br&gt;sensored or sensorless" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#067647;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="966" y="548" width="256" height="57" as="geometry"/></mxCell><mxCell id="c30" value="&lt;b&gt;Angle (ω)&lt;/b&gt;&lt;br&gt;rotor position + speed" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#067647;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="1232" y="548" width="256" height="57" as="geometry"/></mxCell><mxCell id="c31" value="&lt;b&gt;iR iY iB rebuild&lt;/b&gt;&lt;br&gt;transfer function" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#067647;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="966" y="615" width="256" height="57" as="geometry"/></mxCell><mxCell id="c32" value="&lt;b&gt;Instant current&lt;/b&gt;&lt;br&gt;amplify + digitise" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#067647;strokeWidth=2;fontSize=12;fontColor=#1E293B;arcSize=6;" vertex="1" parent="1"><mxGeometry x="1232" y="615" width="256" height="57" as="geometry"/></mxCell><mxCell id="c34" value="&lt;b&gt;PROTOTYPE&lt;/b&gt;  Artix-7 FPGA · 81.25 MHz · validation only" 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="40" y="716" width="560" height="40" as="geometry"/></mxCell><mxCell id="c35" value="&lt;b&gt;PRODUCT&lt;/b&gt;  130 nm ASIC · SkyWater SKY130 / IHP SG13G2 open PDK · 100 MHz fixed" 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="660" y="716" width="860" height="40" as="geometry"/></mxCell><mxCell id="c36" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6B7280;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#6B7280;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="c34" target="c35"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c37" value="①" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#5B8DB8;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#5B8DB8;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.62;entryY=0;" edge="1" parent="1" source="c4" target="c5"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c38" value="②" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6941C6;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#6941C6;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="c24" target="c25"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c39" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6941C6;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#6941C6;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="c25" target="c26"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c40" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6941C6;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#6941C6;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="c26" target="c27"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c41" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6941C6;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#6941C6;labelBackgroundColor=#FFFFFF;exitX=0.92;exitY=0;entryX=0.1;entryY=1;" edge="1" parent="1" source="c23" target="c16"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c42" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#B54708;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#B54708;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="c17" target="c18"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c43" value="③" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#B42318;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#B42318;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="c18" target="c19"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c44" value="④" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#067647;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#067647;labelBackgroundColor=#FFFFFF;exitX=0;exitY=0.85;entryX=1;entryY=0.85;" edge="1" parent="1" source="c28" target="c23"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c45" value="F" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#B42318;strokeWidth=2;fontSize=13;fontStyle=1;fontColor=#B42318;labelBackgroundColor=#FFFFFF;dashed=1;strokeWidth=3;exitX=1;exitY=0.5;entryX=0.5;entryY=1;" edge="1" parent="1" source="c21" target="c19"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="c46" value="&lt;b&gt;Reading path&lt;/b&gt;   ①  Speed, torque, halt and brake commands reach the host.   ②  The datapath turns the torque command into phase drive: PID, CORDIC, inverse Park and Clarke, waveform lookup.   ③  PWM drives the three half-bridge pre-drivers.   ④  Current and angle feedback closes the PID loop.   F  A thermal, overcurrent or overvoltage fault shuts the gates and latches.   ·   dashed boxes are off-chip   ·   pre-silicon architecture; values are design targets" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontColor=#1E293B;" vertex="1" parent="1"><mxGeometry x="40" y="772" width="1480" height="58" as="geometry"/></mxCell><mxCell id="c47" value="Designed toward (targets, not certificates): AEC-Q100 Grade 0, ISO 26262 ASIL-B/C, UL94" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontColor=#6B7280;fontStyle=2;" vertex="1" parent="1"><mxGeometry x="40" y="842" width="1480" height="22" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile>
