@tscircuit/schematic-trace-solver 0.0.177 → 0.0.179
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +10 -1
- package/dist/index.js +331 -122
- package/lib/solvers/AvailableNetOrientationSolver/AvailableNetOrientationSolver.ts +79 -2
- package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +6 -1
- package/lib/solvers/TraceCleanupSolver/TraceCleanupSolver.ts +25 -0
- package/lib/solvers/TraceCleanupSolver/rerouteGeneratedNetLabelConnectorCrossings.ts +194 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/findIntersectionsWithObstacles.ts +19 -5
- package/lib/solvers/TraceCleanupSolver/sub-solver/generateLShapeRerouteCandidates.ts +35 -5
- package/package.json +1 -1
- package/site/bug-reports/bug-report-20260902T092101Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260902T092425Z.page.tsx +4 -0
- package/tests/bug-reports/bug-report-20260902T092101Z/__snapshots__/bug-report-20260902T092101Z.snap.svg +117 -0
- package/tests/bug-reports/bug-report-20260902T092101Z/bug-report-20260902T092101Z.json +162 -0
- package/tests/bug-reports/bug-report-20260902T092101Z/bug-report-20260902T092101Z.test.ts +28 -0
- package/tests/bug-reports/bug-report-20260902T092425Z/__snapshots__/bug-report-20260902T092425Z.snap.svg +136 -0
- package/tests/bug-reports/bug-report-20260902T092425Z/bug-report-20260902T092425Z.json +238 -0
- package/tests/bug-reports/bug-report-20260902T092425Z/bug-report-20260902T092425Z.test.ts +12 -0
- package/tests/repros/__snapshots__/repro-pmp11282-isolated-dcdc.snap.svg +10 -10
- package/tests/repros/__snapshots__/repro-wireless-mouse-charger-section.snap.svg +2 -2
- package/tests/solvers/TraceCleanupSolver/alignSameNetRails-pipeline-label-connector.test.ts +4 -2
- package/tests/solvers/TraceCleanupSolver/reroute-generated-net-label-connector-crossings.test.ts +160 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
<svg width="1200" height="2016" viewBox="0 0 1200 2016" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on top and Circuit JSON schematic on the bottom">
|
|
2
|
+
<g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
|
|
3
|
+
<rect width="100%" height="100%" fill="white"/><g><polyline data-points="5,-0.11999999999999988 1.9,-0.2999999999999998" data-type="line" data-label="" points="452.60010678056597,333.1852642819007 267.2290443139348,343.94874532835024" fill="none" stroke="hsl(128, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="6.75,-0.11999999999999988 1.9,0.10000000000000009" data-type="line" data-label="" points="557.2450613988254,333.1852642819007 267.2290443139348,320.0298985584623" fill="none" stroke="hsl(128, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="1.9,-0.4999999999999998 1.9,1.0999999999999999" data-type="line" data-label="" points="267.2290443139348,355.9081687132942 267.2290443139348,260.23278163374266" fill="none" stroke="hsl(211, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,-0.2999999999999998 5,-0.11999999999999988" data-type="line" data-label="" points="267.2290443139348,343.94874532835024 452.60010678056597,333.1852642819007" fill="none" stroke="hsl(118, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,-0.09999999999999987 1.9,0.30000000000000004" data-type="line" data-label="" points="267.2290443139348,331.98932194340625 267.2290443139348,308.0704751735184" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,-0.09999999999999987 1.9,0.5" data-type="line" data-label="" points="267.2290443139348,331.98932194340625 267.2290443139348,296.11105178857446" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,-0.09999999999999987 5,-0.8800000000000001" data-type="line" data-label="" points="267.2290443139348,331.98932194340625 452.60010678056597,378.63107314468766" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,-0.09999999999999987 6.75,-0.8800000000000001" data-type="line" data-label="" points="267.2290443139348,331.98932194340625 557.2450613988254,378.63107314468766" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,0.30000000000000004 1.9,0.5" data-type="line" data-label="" points="267.2290443139348,308.0704751735184 267.2290443139348,296.11105178857446" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,0.30000000000000004 5,-0.8800000000000001" data-type="line" data-label="" points="267.2290443139348,308.0704751735184 452.60010678056597,378.63107314468766" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,0.30000000000000004 6.75,-0.8800000000000001" data-type="line" data-label="" points="267.2290443139348,308.0704751735184 557.2450613988254,378.63107314468766" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,0.5 5,-0.8800000000000001" data-type="line" data-label="" points="267.2290443139348,296.11105178857446 452.60010678056597,378.63107314468766" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,0.5 6.75,-0.8800000000000001" data-type="line" data-label="" points="267.2290443139348,296.11105178857446 557.2450613988254,378.63107314468766" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="5,-0.8800000000000001 6.75,-0.8800000000000001" data-type="line" data-label="" points="452.60010678056597,378.63107314468766 557.2450613988254,378.63107314468766" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,0.10000000000000009 6.75,-0.11999999999999988" data-type="line" data-label="" points="267.2290443139348,320.0298985584623 557.2450613988254,333.1852642819007" fill="none" stroke="hsl(117, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.9,0.5 2.421,0.5 2.421,0.30000000000000004 1.9,0.30000000000000004" data-type="line" data-label="" points="267.2290443139348,296.11105178857446 298.3833422317138,296.11105178857446 298.3833422317138,308.0704751735184 267.2290443139348,308.0704751735184" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="5,-0.8800000000000001 5,-1.0800000000000003 6.75,-1.0800000000000003 6.75,-0.8800000000000001" data-type="line" data-label="" points="452.60010678056597,378.63107314468766 452.60010678056597,390.5904965296316 557.2450613988254,390.5904965296316 557.2450613988254,378.63107314468766" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.9,0.30000000000000004 2.421,0.3000000000000001 2.421,-0.09999999999999992 1.9,-0.09999999999999987" data-type="line" data-label="" points="267.2290443139348,308.0704751735184 298.3833422317138,308.0704751735184 298.3833422317138,331.98932194340625 267.2290443139348,331.98932194340625" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.9,-0.4999999999999998 1.9,-0.5499999999999998 2.7509999999999994,-0.5499999999999998 2.7509999999999994,-0.09899999999999981" data-type="line" data-label="" points="267.2290443139348,355.9081687132942 267.2290443139348,358.89802455953014 318.1163908168713,358.89802455953014 318.1163908168713,331.92952482648155" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.9,1.0999999999999999 2.2009999999999996,1.0999999999999999 2.2009999999999996,1.5009999999999997" data-type="line" data-label="" points="267.2290443139348,260.23278163374266 285.22797650827545,260.23278163374266 285.22797650827545,236.25413774693004" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="40" y="236.3139348638548" width="227.22904431393482" height="179.39135077415906" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="5.1325" data-y="-0.5" x="425.69140416444213" y="333.1852642819007" width="69.66364121729839" height="45.445808862786976" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="6.8825" data-y="-0.5" x="530.3363587827016" y="333.1852642819007" width="69.66364121729839" height="45.445808862786976" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="T113-S3" data-x="-1.08" data-y="-1.63" x="63.918846769887864" y="418.09717031500264" width="50.22957821676454" height="10.763481046449556" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="U3" data-x="-1.38" data-y="1.6150000000000002" x="60.33101975440467" y="221.962626801922" width="21.526962092899126" height="14.949279231179958" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: P1V8
|
|
4
|
+
globalConnNetId: connectivity_net2" data-x="2.7509999999999994" data-y="0.11100000000000018" x="300.1772557394554" y="306.81473571809926" width="35.87827015483174" height="25.114789108382297" fill="#ef444466" stroke="#ef4444" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: P1V8
|
|
5
|
+
globalConnNetId: connectivity_net2" data-x="2.2009999999999996" data-y="1.7109999999999996" x="267.2888414308595" y="211.1393486385478" width="35.87827015483185" height="25.11478910838224" fill="#ef444466" stroke="#ef4444" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: AUDIO_VRA2
|
|
6
|
+
globalConnNetId: connectivity_net0" data-x="5" data-y="0.09100000000000011" x="413.134009610251" y="308.01067805659375" width="78.93219434062996" height="25.11478910838224" fill="#ef444466" stroke="#ef4444" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: AUDIO_VRA2
|
|
7
|
+
globalConnNetId: connectivity_net0" data-x="2.1109999999999998" data-y="-0.2999999999999998" x="267.2888414308595" y="337.9690336358783" width="25.114789108382297" height="11.959423384943932" fill="#ef444466" stroke="#ef4444" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
8
|
+
globalConnNetId: connectivity_net3" data-x="2.421" data-y="-0.30999999999999994" x="284.0320341697811" y="331.98932194340625" width="28.70261612386537" height="25.11478910838224" fill="#00000066" stroke="#000000" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
9
|
+
globalConnNetId: connectivity_net3" data-x="5" data-y="-1.2900000000000003" x="438.2487987186332" y="390.5904965296316" width="28.702616123865482" height="25.114789108382297" fill="#00000066" stroke="#000000" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: AUDIO_VRA1
|
|
10
|
+
globalConnNetId: connectivity_net1" data-x="6.75" data-y="0.09100000000000011" x="517.7789642285104" y="308.01067805659375" width="78.93219434062996" height="25.11478910838224" fill="#ef444466" stroke="#ef4444" stroke-width="0.016723214285714286"/></g><g><rect data-type="rect" data-label="netId: AUDIO_VRA1
|
|
11
|
+
globalConnNetId: connectivity_net1" data-x="2.1109999999999998" data-y="0.10000000000000009" x="267.2888414308595" y="314.0501868659903" width="25.114789108382297" height="11.959423384943932" fill="#ef444466" stroke="#ef4444" stroke-width="0.016723214285714286"/></g><g><circle data-type="point" data-label="PB2
|
|
12
|
+
x+" data-x="1.9" data-y="-1.0999999999999999" cx="267.2290443139348" cy="391.78643886812597" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="MICIN3P
|
|
13
|
+
x+" data-x="1.9" data-y="-0.8999999999999999" cx="267.2290443139348" cy="379.82701548318204" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="MICIN3N
|
|
14
|
+
x+" data-x="1.9" data-y="-0.6999999999999998" cx="267.2290443139348" cy="367.8675920982381" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="AVCC
|
|
15
|
+
x+" data-x="1.9" data-y="-0.4999999999999998" cx="267.2290443139348" cy="355.9081687132942" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="VRA2
|
|
16
|
+
x+" data-x="1.9" data-y="-0.2999999999999998" cx="267.2290443139348" cy="343.94874532835024" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="AGND
|
|
17
|
+
x+" data-x="1.9" data-y="-0.09999999999999987" cx="267.2290443139348" cy="331.98932194340625" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="VRA1
|
|
18
|
+
x+" data-x="1.9" data-y="0.10000000000000009" cx="267.2290443139348" cy="320.0298985584623" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="FMINR
|
|
19
|
+
x+" data-x="1.9" data-y="0.30000000000000004" cx="267.2290443139348" cy="308.0704751735184" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="FMINL
|
|
20
|
+
x+" data-x="1.9" data-y="0.5" cx="267.2290443139348" cy="296.11105178857446" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="LINEINR
|
|
21
|
+
x+" data-x="1.9" data-y="0.7" cx="267.2290443139348" cy="284.1516284036305" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="LINEINL
|
|
22
|
+
x+" data-x="1.9" data-y="0.8999999999999999" cx="267.2290443139348" cy="272.1922050186866" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="HPVCC
|
|
23
|
+
x+" data-x="1.9" data-y="1.0999999999999999" cx="267.2290443139348" cy="260.23278163374266" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="1
|
|
24
|
+
y+" data-x="5" data-y="-0.11999999999999988" cx="452.60010678056597" cy="333.1852642819007" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
|
|
25
|
+
y-" data-x="5" data-y="-0.8800000000000001" cx="452.60010678056597" cy="378.63107314468766" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="1
|
|
26
|
+
y+" data-x="6.75" data-y="-0.11999999999999988" cx="557.2450613988254" cy="333.1852642819007" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
|
|
27
|
+
y-" data-x="6.75" data-y="-0.8800000000000001" cx="557.2450613988254" cy="378.63107314468766" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
28
|
+
orientation: y+" data-x="2.7509999999999994" data-y="-0.09899999999999981" cx="318.1163908168713" cy="331.92952482648155" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
29
|
+
orientation: y+" data-x="2.2009999999999996" data-y="1.5009999999999997" cx="285.22797650827545" cy="236.25413774693004" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
30
|
+
orientation: y+" data-x="5" data-y="-0.11999999999999988" cx="452.60010678056597" cy="333.1852642819007" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
31
|
+
orientation: x+" data-x="1.9" data-y="-0.2999999999999998" cx="267.2290443139348" cy="343.94874532835024" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
32
|
+
orientation: y-" data-x="2.421" data-y="-0.09999999999999992" cx="298.3833422317138" cy="331.98932194340625" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
33
|
+
orientation: y-" data-x="5" data-y="-1.0800000000000003" cx="452.60010678056597" cy="390.5904965296316" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
34
|
+
orientation: y+" data-x="6.75" data-y="-0.11999999999999988" cx="557.2450613988254" cy="333.1852642819007" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
35
|
+
orientation: x+" data-x="1.9" data-y="0.10000000000000009" cx="267.2290443139348" cy="320.0298985584623" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
|
|
36
|
+
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
37
|
+
const svg = e.currentTarget;
|
|
38
|
+
const rect = svg.getBoundingClientRect();
|
|
39
|
+
const x = e.clientX - rect.left;
|
|
40
|
+
const y = e.clientY - rect.top;
|
|
41
|
+
const crosshair = svg.getElementById('crosshair');
|
|
42
|
+
const h = svg.getElementById('crosshair-h');
|
|
43
|
+
const v = svg.getElementById('crosshair-v');
|
|
44
|
+
const coords = svg.getElementById('coordinates');
|
|
45
|
+
|
|
46
|
+
crosshair.style.display = 'block';
|
|
47
|
+
h.setAttribute('x1', '0');
|
|
48
|
+
h.setAttribute('x2', '640');
|
|
49
|
+
h.setAttribute('y1', y);
|
|
50
|
+
h.setAttribute('y2', y);
|
|
51
|
+
v.setAttribute('x1', x);
|
|
52
|
+
v.setAttribute('x2', x);
|
|
53
|
+
v.setAttribute('y1', '0');
|
|
54
|
+
v.setAttribute('y2', '640');
|
|
55
|
+
|
|
56
|
+
// Calculate real coordinates using inverse transformation
|
|
57
|
+
const matrix = {"a":59.7971169247197,"c":0,"e":153.6145221569674,"b":0,"d":-59.7971169247197,"f":326.0096102509343};
|
|
58
|
+
// Manually invert and apply the affine transform
|
|
59
|
+
// Since we only use translate and scale, we can directly compute:
|
|
60
|
+
// x' = (x - tx) / sx
|
|
61
|
+
// y' = (y - ty) / sy
|
|
62
|
+
const sx = matrix.a;
|
|
63
|
+
const sy = matrix.d;
|
|
64
|
+
const tx = matrix.e;
|
|
65
|
+
const ty = matrix.f;
|
|
66
|
+
const realPoint = {
|
|
67
|
+
x: (x - tx) / sx,
|
|
68
|
+
y: (y - ty) / sy // Flip y back since we used negative scale
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
|
|
72
|
+
coords.setAttribute('x', (x + 5).toString());
|
|
73
|
+
coords.setAttribute('y', (y - 5).toString());
|
|
74
|
+
});
|
|
75
|
+
document.currentScript.parentElement.addEventListener('mouseleave', () => {
|
|
76
|
+
document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
|
|
77
|
+
});
|
|
78
|
+
]]></script>
|
|
79
|
+
</g>
|
|
80
|
+
<g transform="translate(0, 1216)">
|
|
81
|
+
<style>
|
|
82
|
+
.boundary { fill: rgb(245, 241, 237); }
|
|
83
|
+
.schematic-boundary { fill: none; stroke: #fff; }
|
|
84
|
+
.component { fill: none; stroke: rgb(132, 0, 0); }
|
|
85
|
+
.chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
|
|
86
|
+
.component-pin { fill: none; stroke: rgb(132, 0, 0); }
|
|
87
|
+
.text { font-family: sans-serif; fill: rgb(0, 150, 0); }
|
|
88
|
+
.pin-number { fill: rgb(169, 0, 0); }
|
|
89
|
+
.port-label { fill: rgb(0, 100, 100); }
|
|
90
|
+
.component-name { fill: rgb(0, 100, 100); }
|
|
91
|
+
|
|
92
|
+
</style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 484.71744471739 351.52432432435 L 546.1621621620981 351.52432432435 L 546.1621621620981 375.11154791157 L 484.71744471739 375.11154791157" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="18.869778869776002px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 484.71744471739 351.52432432435 L 546.1621621620981 351.52432432435 L 546.1621621620981 375.11154791157 L 484.71744471739 375.11154791157" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 850.3194103193 514.276167076168 L 850.3194103193 537.863390663388 L 1056.7076167074752 537.863390663388 L 1056.7076167074752 514.276167076168" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="18.869778869776002px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 850.3194103193 514.276167076168 L 850.3194103193 537.863390663388 L 1056.7076167074752 537.863390663388 L 1056.7076167074752 514.276167076168" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 484.71744471739 375.11154791157 L 546.1621621620981 375.11154791156997 L 546.1621621620981 422.28599508601 L 484.71744471739 422.28599508601" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="18.869778869776002px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 484.71744471739 375.11154791157 L 546.1621621620981 375.11154791156997 L 546.1621621620981 422.28599508601 L 484.71744471739 422.28599508601" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 484.71744471739 469.46044226045 L 484.71744471739 475.35724815725496 L 585.081081081011 475.35724815725496 L 585.081081081011 422.16805896807386" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="18.869778869776002px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 484.71744471739 469.46044226045 L 484.71744471739 475.35724815725496 L 585.081081081011 475.35724815725496 L 585.081081081011 422.16805896807386" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"><path d="M 484.71744471739 280.76265356269005 L 520.216216216156 280.76265356269005 L 520.216216216156 233.47027027031393" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="18.869778869776002px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 484.71744471739 280.76265356269005 L 520.216216216156 280.76265356269005 L 520.216216216156 233.47027027031393" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><circle cx="546.1621621620981" cy="375.11154791157" r="3.538083538083" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="484.71744471739" cy="375.11154791157" r="3.538083538083" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="83.73464373464998" y="233.58820638825" width="353.8083538083" height="353.8083538083" stroke-width="2.3587223587220003px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="83.73464373464998" y="233.58820638825" width="353.8083538083" height="353.8083538083" fill="transparent"/><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="540.22211302211" x2="482.358722358668" y2="540.22211302211" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="484.71744471739" cy="540.22211302211" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="482.358722358668" y="537.8633906633879" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="537.863390663388" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="540.22211302211" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">PB2</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="516.63488943489" x2="482.358722358668" y2="516.63488943489" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="484.71744471739" cy="516.63488943489" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="482.358722358668" y="514.276167076168" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="514.276167076168" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="516.63488943489" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">MICIN3P</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="493.04766584767" x2="482.358722358668" y2="493.04766584767" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="484.71744471739" cy="493.04766584767" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="482.358722358668" y="490.688943488948" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="490.688943488948" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="493.04766584767" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">MICIN3N</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="469.46044226045" x2="484.71744471739" y2="469.46044226045" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="482.358722358668" y="467.101719901728" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="467.10171990172796" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="469.46044226045" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">AVCC</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="445.87321867323" x2="482.358722358668" y2="445.87321867323" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="484.71744471739" cy="445.87321867323" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="482.358722358668" y="443.514496314508" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="443.514496314508" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="445.87321867323" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">VRA2</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="422.28599508601" x2="484.71744471739" y2="422.28599508601" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><rect x="482.358722358668" y="419.927272727288" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="419.92727272728797" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="422.28599508601" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">AGND</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="398.69877149879" x2="482.358722358668" y2="398.69877149879" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="484.71744471739" cy="398.69877149879" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="482.358722358668" y="396.340049140068" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="396.340049140068" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="398.69877149879" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">VRA1</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="375.11154791157" x2="484.71744471739" y2="375.11154791157" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_7__stack1"><rect x="482.358722358668" y="372.75282555284804" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="372.752825552848" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="375.11154791157" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">FMINR</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="351.52432432435" x2="484.71744471739" y2="351.52432432435" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_8__stack1"><rect x="482.358722358668" y="349.165601965628" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="349.165601965628" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="351.52432432435" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">FMINL</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="327.93710073713" x2="482.358722358668" y2="327.93710073713" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_9__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="484.71744471739" cy="327.93710073713" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="482.358722358668" y="325.578378378408" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="325.578378378408" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="327.93710073713" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">LINEINR</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="304.34987714991" x2="482.358722358668" y2="304.34987714991" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_10__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="484.71744471739" cy="304.34987714991" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="482.358722358668" y="301.991154791188" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="301.991154791188" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="304.34987714991" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">LINEINL</text><line class="component-pin sch-component-pin sch-port-line" x1="437.54299754295" y1="280.76265356269005" x2="484.71744471739" y2="280.76265356269005" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_0_11__stack1"><rect x="482.358722358668" y="278.40393120396806" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="461.13022113016996" y="278.403931203968" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform=""></text><text class="pin-number sch-pin-label" x="425.74938574934" y="280.76265356269005" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="17.690417690415px" transform="">HPVCC</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component chip sch-component-body" x="797.2481572480551" y="463.563636363645" width="137.39557739555642" height="11.793611793610012" stroke-width="2.3587223587220003px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="797.2481572480551" y="463.563636363645" width="137.39557739555642" height="11.793611793610012" fill="transparent"/><line class="component-pin sch-component-pin sch-port-line" x1="850.3194103193" y1="463.563636363645" x2="850.3194103193" y2="427.003439803454" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="850.3194103193" cy="424.644717444732" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="847.960687960578" y="422.28599508601" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="847.9606879605781" y="444.1041769041885" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform="rotate(-90 847.9606879605781 444.1041769041885)">1</text><line class="component-pin sch-component-pin sch-port-line" x1="850.3194103193" y1="475.357248157255" x2="850.3194103193" y2="514.276167076168" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_1_1__stack1"><rect x="847.960687960578" y="511.917444717446" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="847.9606879605781" y="494.81670761671154" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform="rotate(-90 847.9606879605781 494.81670761671154)">2</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component chip sch-component-body" x="1003.63636363623" y="463.563636363645" width="137.39557739555653" height="11.793611793610012" stroke-width="2.3587223587220003px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="1003.63636363623" y="463.563636363645" width="137.39557739555653" height="11.793611793610012" fill="transparent"/><line class="component-pin sch-component-pin sch-port-line" x1="1056.7076167074752" y1="463.563636363645" x2="1056.7076167074752" y2="427.003439803454" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_2_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1056.7076167074752" cy="424.644717444732" r="2.3587223587220003" stroke-width="2.3587223587220003px"/><rect x="1054.3488943487532" y="422.28599508601" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="1054.3488943487532" y="444.1041769041885" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform="rotate(-90 1054.3488943487532 444.1041769041885)">1</text><line class="component-pin sch-component-pin sch-port-line" x1="1056.7076167074752" y1="475.357248157255" x2="1056.7076167074752" y2="514.276167076168" stroke-width="2.3587223587220003px"/><g class="sch-port" data-schematic-port-id="source_port_2_1__stack1"><rect x="1054.3488943487532" y="511.917444717446" width="4.717444717444001" height="4.717444717444001" opacity="0"/></g><text class="pin-number sch-pin-number" x="1054.3488943487532" y="494.81670761671154" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="17.690417690415px" transform="rotate(-90 1054.3488943487532 494.81670761671154)">2</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="484.71744471739" cy="540.22211302211" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="484.71744471739" cy="516.63488943489" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="484.71744471739" cy="493.04766584767" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="484.71744471739" cy="469.46044226045" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="484.71744471739" cy="445.87321867323" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="484.71744471739" cy="422.28599508601" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="484.71744471739" cy="398.69877149879" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_7__stack1"><circle cx="484.71744471739" cy="375.11154791157" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_8__stack1"><circle cx="484.71744471739" cy="351.52432432435" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_9__stack1"><circle cx="484.71744471739" cy="327.93710073713" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_10__stack1"><circle cx="484.71744471739" cy="304.34987714991" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_11__stack1"><circle cx="484.71744471739" cy="280.76265356269005" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="850.3194103193" cy="424.644717444732" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="850.3194103193" cy="514.276167076168" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="1056.7076167074752" cy="424.644717444732" r="4.717444717444001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="1056.7076167074752" cy="514.276167076168" r="4.717444717444001" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
|
|
93
|
+
M 585.081081081011,422.16805896807386
|
|
94
|
+
L 573.287469287401,415.7995085995245
|
|
95
|
+
L 573.287469287401,375.3552825553046
|
|
96
|
+
L 596.874692874621,375.3552825553046
|
|
97
|
+
L 596.874692874621,415.7995085995245
|
|
98
|
+
Z
|
|
99
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.3587223587220003px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="585.081081081011" y="411.5538083538249" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.228501228498px" transform="rotate(-90 585.081081081011 411.5538083538249)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
|
|
100
|
+
M 520.216216216156,233.47027027031393
|
|
101
|
+
L 508.422604422546,227.10171990176454
|
|
102
|
+
L 508.422604422546,186.65749385754464
|
|
103
|
+
L 532.009828009766,186.65749385754464
|
|
104
|
+
L 532.009828009766,227.10171990176454
|
|
105
|
+
Z
|
|
106
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.3587223587220003px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="520.216216216156" y="222.85601965606494" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.228501228498px" transform="rotate(-90 520.216216216156 222.85601965606494)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
|
|
107
|
+
M 850.3194103193,424.644717444732
|
|
108
|
+
L 838.52579852569,418.2761670761826
|
|
109
|
+
L 838.52579852569,377.83194103196274
|
|
110
|
+
L 862.11302211291,377.83194103196274
|
|
111
|
+
L 862.11302211291,418.2761670761826
|
|
112
|
+
Z
|
|
113
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.3587223587220003px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="850.3194103193" y="414.030466830483" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.228501228498px" transform="rotate(-90 850.3194103193 414.030466830483)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
|
|
114
|
+
M 484.71744471739,445.87321867323
|
|
115
|
+
L 491.0859950859394,434.07960687962
|
|
116
|
+
L 531.5302211301592,434.07960687962
|
|
117
|
+
L 531.5302211301592,457.66683046684
|
|
118
|
+
L 491.0859950859394,457.66683046684
|
|
119
|
+
Z
|
|
120
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.3587223587220003px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="495.33169533163897" y="445.87321867323" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.228501228498px" transform="">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="532.0098280097661" y="422.28599508601" width="28.304668304663892" height="21.228501228497976" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="M 532.0098280097661 443.514496314508 L 560.31449631443 443.514496314508" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="M 546.1621621620981 443.514496314508 L 546.1621621620981 422.28599508601" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="546.1621621620981" y="449.411302211313" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="21.228501228498px">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="836.1670761669681" y="537.863390663388" width="28.304668304663892" height="21.22850122849809" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="M 836.1670761669681 559.0918918918861 L 864.471744471632 559.0918918918861" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="M 850.3194103193 559.0918918918861 L 850.3194103193 537.863390663388" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.3587223587220003px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="850.3194103193" y="564.9886977886911" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="21.228501228498px">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" d="
|
|
121
|
+
M 1056.7076167074752,424.644717444732
|
|
122
|
+
L 1044.9140049138653,418.2761670761826
|
|
123
|
+
L 1044.9140049138653,377.83194103196274
|
|
124
|
+
L 1068.501228501085,377.83194103196274
|
|
125
|
+
L 1068.501228501085,418.2761670761826
|
|
126
|
+
Z
|
|
127
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.3587223587220003px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" x="1056.7076167074752" y="414.030466830483" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.228501228498px" transform="rotate(-90 1056.7076167074752 414.030466830483)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" d="
|
|
128
|
+
M 484.71744471739,398.69877149879
|
|
129
|
+
L 491.0859950859394,386.90515970518
|
|
130
|
+
L 531.5302211301592,386.90515970518
|
|
131
|
+
L 531.5302211301592,410.4923832924
|
|
132
|
+
L 491.0859950859394,410.4923832924
|
|
133
|
+
Z
|
|
134
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.3587223587220003px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" x="495.33169533163897" y="398.69877149879" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.228501228498px" transform="">XX</text><text class="sch-text" x="133.26781326781196" y="602.728255528243" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="21.228501228498px" transform="rotate(0, 133.26781326781196, 602.728255528243)">T113-S3</text><text class="sch-text" x="97.88697788698198" y="220.02555282559848" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="21.228501228498px" transform="rotate(0, 97.88697788698198, 220.02555282559848)">U3</text><rect class="schematic-box sch-box" x="83.73464373464998" y="592.114004913994" width="99.06633906632402" height="21.228501228497976" stroke-width="2.3587223587220003px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="18.869778869776002 9.434889434888001"/><rect class="schematic-box sch-box" x="76.65847665848398" y="205.28353808358594" width="42.45700245699601" height="29.48402948402503" stroke-width="2.3587223587220003px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="18.869778869776002 9.434889434888001"/>
|
|
135
|
+
</g>
|
|
136
|
+
</svg>
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
{
|
|
2
|
+
"chips": [
|
|
3
|
+
{
|
|
4
|
+
"chipId": "schematic_component_0",
|
|
5
|
+
"center": {
|
|
6
|
+
"x": 0,
|
|
7
|
+
"y": 0
|
|
8
|
+
},
|
|
9
|
+
"width": 3.8,
|
|
10
|
+
"height": 3,
|
|
11
|
+
"pins": [
|
|
12
|
+
{
|
|
13
|
+
"pinId": "schematic_port_0",
|
|
14
|
+
"displayName": "PB2",
|
|
15
|
+
"x": 1.9,
|
|
16
|
+
"y": -1.0999999999999999
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"pinId": "schematic_port_1",
|
|
20
|
+
"displayName": "MICIN3P",
|
|
21
|
+
"x": 1.9,
|
|
22
|
+
"y": -0.8999999999999999
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"pinId": "schematic_port_2",
|
|
26
|
+
"displayName": "MICIN3N",
|
|
27
|
+
"x": 1.9,
|
|
28
|
+
"y": -0.6999999999999998
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"pinId": "schematic_port_3",
|
|
32
|
+
"displayName": "AVCC",
|
|
33
|
+
"x": 1.9,
|
|
34
|
+
"y": -0.4999999999999998
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"pinId": "schematic_port_4",
|
|
38
|
+
"displayName": "VRA2",
|
|
39
|
+
"x": 1.9,
|
|
40
|
+
"y": -0.2999999999999998
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"pinId": "schematic_port_5",
|
|
44
|
+
"displayName": "AGND",
|
|
45
|
+
"x": 1.9,
|
|
46
|
+
"y": -0.09999999999999987
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"pinId": "schematic_port_6",
|
|
50
|
+
"displayName": "VRA1",
|
|
51
|
+
"x": 1.9,
|
|
52
|
+
"y": 0.10000000000000009
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"pinId": "schematic_port_7",
|
|
56
|
+
"displayName": "FMINR",
|
|
57
|
+
"x": 1.9,
|
|
58
|
+
"y": 0.30000000000000004
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"pinId": "schematic_port_8",
|
|
62
|
+
"displayName": "FMINL",
|
|
63
|
+
"x": 1.9,
|
|
64
|
+
"y": 0.5
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pinId": "schematic_port_9",
|
|
68
|
+
"displayName": "LINEINR",
|
|
69
|
+
"x": 1.9,
|
|
70
|
+
"y": 0.7
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"pinId": "schematic_port_10",
|
|
74
|
+
"displayName": "LINEINL",
|
|
75
|
+
"x": 1.9,
|
|
76
|
+
"y": 0.8999999999999999
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pinId": "schematic_port_11",
|
|
80
|
+
"displayName": "HPVCC",
|
|
81
|
+
"x": 1.9,
|
|
82
|
+
"y": 1.0999999999999999
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"chipId": "schematic_component_1",
|
|
88
|
+
"center": {
|
|
89
|
+
"x": 5.1325,
|
|
90
|
+
"y": -0.5
|
|
91
|
+
},
|
|
92
|
+
"width": 1.165,
|
|
93
|
+
"height": 0.7600000000000001,
|
|
94
|
+
"pins": [
|
|
95
|
+
{
|
|
96
|
+
"pinId": "schematic_port_12",
|
|
97
|
+
"displayName": "1",
|
|
98
|
+
"x": 5,
|
|
99
|
+
"y": -0.11999999999999994,
|
|
100
|
+
"_facingDirection": "y+"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"pinId": "schematic_port_13",
|
|
104
|
+
"displayName": "2",
|
|
105
|
+
"x": 5,
|
|
106
|
+
"y": -0.8800000000000001,
|
|
107
|
+
"_facingDirection": "y-"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"chipId": "schematic_component_2",
|
|
113
|
+
"center": {
|
|
114
|
+
"x": 6.8825,
|
|
115
|
+
"y": -0.5
|
|
116
|
+
},
|
|
117
|
+
"width": 1.165,
|
|
118
|
+
"height": 0.7600000000000001,
|
|
119
|
+
"pins": [
|
|
120
|
+
{
|
|
121
|
+
"pinId": "schematic_port_14",
|
|
122
|
+
"displayName": "1",
|
|
123
|
+
"x": 6.75,
|
|
124
|
+
"y": -0.11999999999999994,
|
|
125
|
+
"_facingDirection": "y+"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"pinId": "schematic_port_15",
|
|
129
|
+
"displayName": "2",
|
|
130
|
+
"x": 6.75,
|
|
131
|
+
"y": -0.8800000000000001,
|
|
132
|
+
"_facingDirection": "y-"
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"directConnections": [
|
|
138
|
+
{
|
|
139
|
+
"netId": "capacitor.C38 > port.1 to .U3 > .VRA2",
|
|
140
|
+
"netLabelWidth": 1.32,
|
|
141
|
+
"pinIds": [
|
|
142
|
+
"schematic_port_12",
|
|
143
|
+
"schematic_port_4"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"netId": "capacitor.C39 > port.1 to .U3 > .VRA1",
|
|
148
|
+
"netLabelWidth": 1.32,
|
|
149
|
+
"pinIds": [
|
|
150
|
+
"schematic_port_14",
|
|
151
|
+
"schematic_port_6"
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"netConnections": [
|
|
156
|
+
{
|
|
157
|
+
"netId": "P1V8",
|
|
158
|
+
"isGround": false,
|
|
159
|
+
"netLabelWidth": 0.42,
|
|
160
|
+
"netLabelHeight": 0.6,
|
|
161
|
+
"pinIds": [
|
|
162
|
+
"schematic_port_3",
|
|
163
|
+
"schematic_port_11"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"netId": "AUDIO_VRA2",
|
|
168
|
+
"isGround": false,
|
|
169
|
+
"netLabelWidth": 0.42,
|
|
170
|
+
"netLabelHeight": 1.32,
|
|
171
|
+
"pinIds": [
|
|
172
|
+
"schematic_port_4",
|
|
173
|
+
"schematic_port_12"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"netId": "GND",
|
|
178
|
+
"isGround": true,
|
|
179
|
+
"netLabelWidth": 0.42,
|
|
180
|
+
"netLabelHeight": 0.48,
|
|
181
|
+
"pinIds": [
|
|
182
|
+
"schematic_port_5",
|
|
183
|
+
"schematic_port_7",
|
|
184
|
+
"schematic_port_8",
|
|
185
|
+
"schematic_port_13",
|
|
186
|
+
"schematic_port_15"
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"netId": "AUDIO_VRA1",
|
|
191
|
+
"isGround": false,
|
|
192
|
+
"netLabelWidth": 0.42,
|
|
193
|
+
"netLabelHeight": 1.32,
|
|
194
|
+
"pinIds": [
|
|
195
|
+
"schematic_port_6",
|
|
196
|
+
"schematic_port_14"
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"textBoxes": [
|
|
201
|
+
{
|
|
202
|
+
"chipId": "schematic_component_0",
|
|
203
|
+
"center": {
|
|
204
|
+
"x": -1.08,
|
|
205
|
+
"y": -1.63
|
|
206
|
+
},
|
|
207
|
+
"width": 0.84,
|
|
208
|
+
"height": 0.18000000000000016,
|
|
209
|
+
"text": "T113-S3"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"chipId": "schematic_component_0",
|
|
213
|
+
"center": {
|
|
214
|
+
"x": -1.38,
|
|
215
|
+
"y": 1.6150000000000002
|
|
216
|
+
},
|
|
217
|
+
"width": 0.3600000000000001,
|
|
218
|
+
"height": 0.2500000000000002,
|
|
219
|
+
"text": "U3"
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"availableNetLabelOrientations": {
|
|
223
|
+
"P1V8": [
|
|
224
|
+
"y+"
|
|
225
|
+
],
|
|
226
|
+
"GND": [
|
|
227
|
+
"y-"
|
|
228
|
+
],
|
|
229
|
+
"AUDIO_VRA2": [
|
|
230
|
+
"y+"
|
|
231
|
+
],
|
|
232
|
+
"AUDIO_VRA1": [
|
|
233
|
+
"y+"
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
"maxMspPairDistance": 0.8,
|
|
237
|
+
"_hideRatsNet": false
|
|
238
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { expect, test } from "bun:test"
|
|
2
|
+
import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
|
|
3
|
+
import inputProblem from "./bug-report-20260902T092425Z.json"
|
|
4
|
+
import "tests/fixtures/matcher"
|
|
5
|
+
|
|
6
|
+
test("bug-report-20260902T092425Z", () => {
|
|
7
|
+
const solver = new SchematicTracePipelineSolver(inputProblem as any)
|
|
8
|
+
|
|
9
|
+
solver.solve()
|
|
10
|
+
|
|
11
|
+
expect(solver).toMatchSolverSnapshot(import.meta.path)
|
|
12
|
+
})
|