@tscircuit/schematic-trace-solver 0.0.155 → 0.0.157
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 +4 -0
- package/dist/index.js +42 -6
- package/lib/solvers/MspConnectionPairSolver/MspConnectionPairSolver.ts +10 -2
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceLinesSolver.ts +38 -0
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2.ts +19 -11
- package/package.json +1 -1
- package/site/bug-reports/bug-report-20260825T045913Z.page.tsx +4 -0
- package/site/components/PipelineDebugger.tsx +4 -2
- package/site/examples/example51.page.tsx +3 -1
- package/tests/bug-reports/bug-report-20260825T045913Z/__snapshots__/bug-report-20260825T045913Z.snap.svg +271 -0
- package/tests/bug-reports/bug-report-20260825T045913Z/bug-report-20260825T045913Z.json +874 -0
- package/tests/bug-reports/bug-report-20260825T045913Z/bug-report-20260825T045913Z.test.ts +23 -0
- package/tests/repros/__snapshots__/board-1273-trace-overlap-cycle.snap.svg +71 -80
- package/tests/repros/__snapshots__/repro-dc-power-isolated-routing.snap.svg +129 -0
- package/tests/repros/__snapshots__/repro-pmp11282-isolated-dcdc.snap.svg +1290 -0
- package/tests/repros/__snapshots__/repro-tida00553-j4-cell-divider.snap.svg +130 -0
- package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +10 -10
- package/tests/repros/assets/repro-dc-power-isolated-routing.input.json +193 -0
- package/tests/repros/assets/repro-pmp11282-isolated-dcdc.input.json +4570 -0
- package/tests/repros/board-1273-trace-overlap-cycle.test.ts +1 -1
- package/tests/repros/repro-dc-power-isolated-routing.test.ts +13 -0
- package/tests/repros/repro-pmp11282-isolated-dcdc.test.ts +77 -0
- package/tests/repros/repro-tida00553-j4-cell-divider.test.ts +111 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
|
|
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="-7.9,5.2 -7.2279125,6.9526245499999995" data-type="line" data-label="" points="91.66051660516632,302.63536863468653 161.1012915129154,121.55238929889333" fill="none" stroke="hsl(136, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-4.9,4.699999999999999 -6.1720875,6.94737545" data-type="line" data-label="" points="401.62361623616243,354.29588523985257 270.1902214022142,122.09473173431763" fill="none" stroke="hsl(136, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-4.9,5.3 -3.5,4.8" data-type="line" data-label="" points="401.62361623616243,292.30326531365336 546.2730627306273,343.96378191881934" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-4.9,4.1 -3.5,4.2" data-type="line" data-label="" points="401.62361623616243,416.2885051660518 546.2730627306273,405.95640184501855" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-4.9,3.3 -4.9,3.4999999999999996" data-type="line" data-label="" points="401.62361623616243,498.9453317343174 401.62361623616243,478.28112509225105" fill="none" stroke="hsl(88, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.9,5.2 -7.2279125,6.9526245499999995" data-type="line" data-label="" points="91.66051660516632,302.63536863468653 161.1012915129154,121.55238929889333" fill="none" stroke="hsl(271, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.9,5.3 -3.5,4.8" data-type="line" data-label="" points="401.62361623616243,292.30326531365336 546.2730627306273,343.96378191881934" fill="none" stroke="hsl(170, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.9,5.2 -8.100000000000001,5.2 -8.100000000000001,6.9526245499999995 -7.2279125,6.9526245499999995" data-type="line" data-label="" points="91.66051660516632,302.63536863468653 70.99630996309975,302.63536863468653 70.99630996309975,121.55238929889333 161.1012915129154,121.55238929889333" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.9,5.3 -3.5,5.3 -3.5,4.8" data-type="line" data-label="" points="401.62361623616243,292.30326531365336 546.2730627306273,292.30326531365336 546.2730627306273,343.96378191881934" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.9,4.1 -3.5,4.1 -3.5,4.2" data-type="line" data-label="" points="401.62361623616243,416.2885051660518 546.2730627306273,416.2885051660518 546.2730627306273,405.95640184501855" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.9,3.3 -4.7,3.3 -4.7,3.4999999999999996 -4.9,3.4999999999999996" data-type="line" data-label="" points="401.62361623616243,498.9453317343174 422.2878228782289,498.9453317343174 422.2878228782289,478.28112509225105 401.62361623616243,478.28112509225105" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-6.4" data-y="4.3" x="91.66051660516632" y="250.97485202952055" width="309.9630996309961" height="289.29889298892965" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-6.7" data-y="6.95" x="161.10129151291534" y="76.99562767527703" width="109.08892988929881" height="89.65586568265678" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-3.465" data-y="4.5" x="499.778597785978" y="343.96378191881934" width="100.22140221402208" height="61.99261992619921" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="U1" data-x="-7.38" data-y="2.77" x="132.98892988929913" y="544.4065863468635" width="24.797047970479753" height="18.597785977859758" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="U1" data-x="-7.38" data-y="5.8149999999999995" x="126.78966789667925" y="226.17780405904085" width="37.195571955719515" height="25.830258302583047" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="netId: GND: .U1 > .pin1 to .U1 > .pin5
|
|
4
|
+
globalConnNetId: connectivity_net4" data-x="-4.7" data-y="3.0749999999999997" x="411.9557195571957" y="498.94533173431745" width="20.664206642066347" height="46.494464944649394" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="netId: .U1 > .pin2 to .L1 > .pin2
|
|
5
|
+
globalConnNetId: connectivity_net1" data-x="-4.539" data-y="4.699999999999999" x="401.7269372693728" y="343.96378191881945" width="74.39114391143914" height="20.66420664206629" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="netId: .U1 > .pin2 to .L1 > .pin2
|
|
6
|
+
globalConnNetId: connectivity_net1" data-x="-5.811087499999999" data-y="6.94737545" x="270.2935424354246" y="111.76262841328446" width="74.39114391143914" height="20.664206642066347" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="netId: VBAT
|
|
7
|
+
globalConnNetId: connectivity_net0" data-x="-8.100000000000001" data-y="7.162624549999999" x="40.000000000000114" y="78.15755535055382" width="61.99261992619927" height="43.39483394833951" fill="#ef444466" stroke="#ef4444" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="netId: .U1 > .pin6 to .R1 > .pin1
|
|
8
|
+
globalConnNetId: connectivity_net3" data-x="-4.2" data-y="4.324999999999999" x="463.6162361623618" y="369.7940402214025" width="20.66420664206629" height="46.49446494464934" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009678571428571434"/></g><g><rect data-type="rect" data-label="netId: VBUS
|
|
9
|
+
globalConnNetId: connectivity_net2" data-x="-3.5" data-y="5.51" x="515.2767527675278" y="248.90843136531385" width="61.992619926199154" height="43.39483394833951" fill="#ef444466" stroke="#ef4444" stroke-width="0.009678571428571434"/></g><g><circle data-type="point" data-label="schematic_port_0
|
|
10
|
+
x+" data-x="-4.9" data-y="3.3" cx="401.62361623616243" cy="498.9453317343174" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_1
|
|
11
|
+
x+" data-x="-4.9" data-y="4.699999999999999" cx="401.62361623616243" cy="354.29588523985257" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_2
|
|
12
|
+
x-" data-x="-7.9" data-y="5.2" cx="91.66051660516632" cy="302.63536863468653" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_3
|
|
13
|
+
x-" data-x="-7.9" data-y="4" cx="91.66051660516632" cy="426.62060848708495" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_4
|
|
14
|
+
x+" data-x="-4.9" data-y="3.4999999999999996" cx="401.62361623616243" cy="478.28112509225105" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_5
|
|
15
|
+
x+" data-x="-4.9" data-y="4.1" cx="401.62361623616243" cy="416.2885051660518" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_6
|
|
16
|
+
x-" data-x="-7.9" data-y="4.6" cx="91.66051660516632" cy="364.62798856088574" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_7
|
|
17
|
+
x-" data-x="-7.9" data-y="3.3999999999999995" cx="91.66051660516632" cy="488.6132284132842" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_8
|
|
18
|
+
x+" data-x="-4.9" data-y="5.3" cx="401.62361623616243" cy="292.30326531365336" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_9
|
|
19
|
+
x-" data-x="-7.2279125" data-y="6.9526245499999995" cx="161.1012915129154" cy="121.55238929889333" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_10
|
|
20
|
+
x+" data-x="-6.1720875" data-y="6.94737545" cx="270.1902214022142" cy="122.09473173431763" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_11
|
|
21
|
+
y-" data-x="-3.5" data-y="4.2" cx="546.2730627306273" cy="405.95640184501855" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_12
|
|
22
|
+
y+" data-x="-3.5" data-y="4.8" cx="546.2730627306273" cy="343.96378191881934" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
23
|
+
orientation: y-" data-x="-4.7" data-y="3.3" cx="422.2878228782289" cy="498.9453317343174" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
24
|
+
orientation: x+" data-x="-4.9" data-y="4.699999999999999" cx="401.62361623616243" cy="354.29588523985257" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
25
|
+
orientation: x+" data-x="-6.1720875" data-y="6.94737545" cx="270.1902214022142" cy="122.09473173431763" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
26
|
+
orientation: y+" data-x="-8.100000000000001" data-y="6.9526245499999995" cx="70.99630996309975" cy="121.55238929889333" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
27
|
+
orientation: y+" data-x="-4.2" data-y="4.1" cx="473.94833948339493" cy="416.2885051660518" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
28
|
+
orientation: y+" data-x="-3.5" data-y="5.3" cx="546.2730627306273" cy="292.30326531365336" 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[
|
|
29
|
+
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
30
|
+
const svg = e.currentTarget;
|
|
31
|
+
const rect = svg.getBoundingClientRect();
|
|
32
|
+
const x = e.clientX - rect.left;
|
|
33
|
+
const y = e.clientY - rect.top;
|
|
34
|
+
const crosshair = svg.getElementById('crosshair');
|
|
35
|
+
const h = svg.getElementById('crosshair-h');
|
|
36
|
+
const v = svg.getElementById('crosshair-v');
|
|
37
|
+
const coords = svg.getElementById('coordinates');
|
|
38
|
+
|
|
39
|
+
crosshair.style.display = 'block';
|
|
40
|
+
h.setAttribute('x1', '0');
|
|
41
|
+
h.setAttribute('x2', '640');
|
|
42
|
+
h.setAttribute('y1', y);
|
|
43
|
+
h.setAttribute('y2', y);
|
|
44
|
+
v.setAttribute('x1', x);
|
|
45
|
+
v.setAttribute('x2', x);
|
|
46
|
+
v.setAttribute('y1', '0');
|
|
47
|
+
v.setAttribute('y2', '640');
|
|
48
|
+
|
|
49
|
+
// Calculate real coordinates using inverse transformation
|
|
50
|
+
const matrix = {"a":103.32103321033205,"c":0,"e":907.8966789667895,"b":0,"d":-103.32103321033205,"f":839.9047413284131};
|
|
51
|
+
// Manually invert and apply the affine transform
|
|
52
|
+
// Since we only use translate and scale, we can directly compute:
|
|
53
|
+
// x' = (x - tx) / sx
|
|
54
|
+
// y' = (y - ty) / sy
|
|
55
|
+
const sx = matrix.a;
|
|
56
|
+
const sy = matrix.d;
|
|
57
|
+
const tx = matrix.e;
|
|
58
|
+
const ty = matrix.f;
|
|
59
|
+
const realPoint = {
|
|
60
|
+
x: (x - tx) / sx,
|
|
61
|
+
y: (y - ty) / sy // Flip y back since we used negative scale
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
|
|
65
|
+
coords.setAttribute('x', (x + 5).toString());
|
|
66
|
+
coords.setAttribute('y', (y - 5).toString());
|
|
67
|
+
});
|
|
68
|
+
document.currentScript.parentElement.addEventListener('mouseleave', () => {
|
|
69
|
+
document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
|
|
70
|
+
});
|
|
71
|
+
]]></script>
|
|
72
|
+
</g>
|
|
73
|
+
<g transform="translate(1216, 200)">
|
|
74
|
+
<style>
|
|
75
|
+
.boundary { fill: rgb(245, 241, 237); }
|
|
76
|
+
.schematic-boundary { fill: none; stroke: #fff; }
|
|
77
|
+
.component { fill: none; stroke: rgb(132, 0, 0); }
|
|
78
|
+
.chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
|
|
79
|
+
.component-pin { fill: none; stroke: rgb(132, 0, 0); }
|
|
80
|
+
.text { font-family: sans-serif; fill: rgb(0, 150, 0); }
|
|
81
|
+
.pin-number { fill: rgb(169, 0, 0); }
|
|
82
|
+
.port-label { fill: rgb(0, 100, 100); }
|
|
83
|
+
.component-name { fill: rgb(0, 100, 100); }
|
|
84
|
+
|
|
85
|
+
</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 204.82972759004997 376.42796000789997 L 176.7785991137498 376.42796000789997 L 176.7785991137498 130.61247789406275 L 299.0937916391264 130.61247789406275" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.44090278104px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 204.82972759004997 376.42796000789997 L 176.7785991137498 376.42796000789997 L 176.7785991137498 130.61247789406275 L 299.0937916391264 130.61247789406275" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.80511284763px" 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 625.59665473455 362.4023957697501 L 821.9545540686502 362.4023957697501 L 821.9545540686502 432.53021696050007" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.44090278104px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 625.59665473455 362.4023957697501 L 821.9545540686502 362.4023957697501 L 821.9545540686502 432.53021696050007" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.80511284763px" 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 625.59665473455 530.7091666275501 L 821.9545540686502 530.7091666275501 L 821.9545540686502 516.6836023894" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.44090278104px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 625.59665473455 530.7091666275501 L 821.9545540686502 530.7091666275501 L 821.9545540686502 516.6836023894" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.80511284763px" 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 625.59665473455 642.91368053275 L 653.6477832108501 642.91368053275 L 653.6477832108501 614.8625520564501 L 625.59665473455 614.8625520564501" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.44090278104px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 625.59665473455 642.91368053275 L 653.6477832108501 642.91368053275 L 653.6477832108501 614.8625520564501 L 625.59665473455 614.8625520564501" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.80511284763px" 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"/><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="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="260.93198454265007" y="306.3001388171501" width="308.5624132393" height="392.7157986681998" stroke-width="2.80511284763px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="260.93198454265007" y="306.3001388171501" width="308.5624132393" height="392.7157986681998" fill="transparent"/><text class="sch-text" x="415.21319116230006" y="502.65803815125" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="25.246015628669998px" transform="rotate(0, 415.21319116230006, 502.65803815125)">schematic_component_0</text><line class="component-pin sch-component-pin sch-port-line" x1="569.49439778195" y1="642.91368053275" x2="625.59665473455" y2="642.91368053275" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="622.7915418869201" y="640.1085676851201" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="597.54552625825" y="640.1085676851201" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="555.4688335438001" y="642.91368053275" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_0</text><line class="component-pin sch-component-pin sch-port-line" x1="569.49439778195" y1="446.55578119865015" x2="622.7915418869201" y2="446.55578119865015" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="625.59665473455" cy="446.55578119865015" r="2.80511284763" stroke-width="2.80511284763px"/><rect x="622.7915418869201" y="443.7506683510201" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="597.54552625825" y="443.7506683510202" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="555.4688335438001" y="446.55578119865015" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_1</text><line class="component-pin sch-component-pin sch-port-line" x1="260.93198454265007" y1="376.42796000789997" x2="204.82972759004997" y2="376.42796000789997" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="202.02461474241997" y="373.62284716026994" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="232.88085606635013" y="373.6228471602701" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="274.95754878080015" y="376.42796000789997" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="start" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_2</text><line class="component-pin sch-component-pin sch-port-line" x1="260.93198454265007" y1="544.7347308657" x2="207.63484043767994" y2="544.7347308657" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="204.82972759004997" cy="544.7347308657" r="2.80511284763" stroke-width="2.80511284763px"/><rect x="202.02461474241997" y="541.9296180180701" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="232.88085606635013" y="541.9296180180701" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="274.95754878080015" y="544.7347308657" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="start" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_3</text><line class="component-pin sch-component-pin sch-port-line" x1="569.49439778195" y1="614.8625520564501" x2="625.59665473455" y2="614.8625520564501" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><rect x="622.7915418869201" y="612.0574392088201" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="597.54552625825" y="612.0574392088201" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="555.4688335438001" y="614.8625520564501" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_4</text><line class="component-pin sch-component-pin sch-port-line" x1="569.49439778195" y1="530.7091666275501" x2="625.59665473455" y2="530.7091666275501" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><rect x="622.7915418869201" y="527.9040537799201" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="597.54552625825" y="527.9040537799201" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="555.4688335438001" y="530.7091666275501" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_5</text><line class="component-pin sch-component-pin sch-port-line" x1="260.93198454265007" y1="460.5813454368001" x2="207.63484043767994" y2="460.5813454368001" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="204.82972759004997" cy="460.5813454368001" r="2.80511284763" stroke-width="2.80511284763px"/><rect x="202.02461474241997" y="457.7762325891701" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="232.88085606635013" y="457.77623258917015" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="274.95754878080015" y="460.5813454368001" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="start" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_6</text><line class="component-pin sch-component-pin sch-port-line" x1="260.93198454265007" y1="628.8881162946002" x2="207.63484043767994" y2="628.8881162946002" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_7__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="204.82972759004997" cy="628.8881162946002" r="2.80511284763" stroke-width="2.80511284763px"/><rect x="202.02461474241997" y="626.0830034469702" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="232.88085606635013" y="626.0830034469701" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="274.95754878080015" y="628.8881162946002" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="start" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_7</text><line class="component-pin sch-component-pin sch-port-line" x1="569.49439778195" y1="362.4023957697501" x2="625.59665473455" y2="362.4023957697501" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_0_8__stack1"><rect x="622.7915418869201" y="359.5972829221201" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="597.54552625825" y="359.59728292212014" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="555.4688335438001" y="362.4023957697501" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_8</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="355.1960485917265" y="70.12782119073881" width="35.88089971224724" height="121.70552929907251" stroke-width="2.80511284763px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="355.1960485917265" y="70.12782119073881" width="35.88089971224724" height="121.70552929907251" fill="transparent"/><text class="sch-text" x="373.13649844785004" y="130.980585840275" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="25.246015628669998px" transform="rotate(0, 373.13649844785004, 130.980585840275)">schematic_component_1</text><line class="component-pin sch-component-pin sch-port-line" x1="355.1960485917265" y1="130.61247789406275" x2="299.0937916391264" y2="130.61247789406275" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><rect x="296.28867879149635" y="127.80736504643275" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="327.14492011542643" y="127.80736504643278" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="369.22161282987645" y="130.61247789406275" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="start" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_9</text><line class="component-pin sch-component-pin sch-port-line" x1="391.0769483039737" y1="131.3486937864874" x2="444.37409240894374" y2="131.3486937864874" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_1_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="447.1792052565737" cy="131.3486937864874" r="2.80511284763" stroke-width="2.80511284763px"/><rect x="444.3740924089437" y="128.5435809388574" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="419.12807678027366" y="128.54358093885753" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform=""></text><text class="pin-number sch-pin-label" x="377.05138406582375" y="131.3486937864874" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="21.038346357225px" transform="">schematic_port_10</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="758.839514996975" y="467.59412755587505" width="136.04797311005507" height="14.025564238149968" stroke-width="2.80511284763px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="758.839514996975" y="467.59412755587505" width="136.04797311005507" height="14.025564238149968" fill="transparent"/><text class="sch-text" x="826.8635015520026" y="474.6069096749501" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="25.246015628669998px" transform="rotate(0, 826.8635015520026, 474.6069096749501)">schematic_component_2</text><line class="component-pin sch-component-pin sch-port-line" x1="821.9545540686502" y1="481.619691794025" x2="821.9545540686502" y2="516.6836023894" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_2_0__stack1"><rect x="819.1494412210202" y="513.87848954177" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="819.1494412210201" y="499.15164709171256" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform="rotate(-90 819.1494412210201 499.15164709171256)"></text><text class="pin-number sch-pin-label" x="821.9545540686502" y="467.59412755587505" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="start" dominant-baseline="middle" font-size="21.038346357225px" transform="rotate(-90 821.9545540686502 467.59412755587505)">schematic_port_11</text><line class="component-pin sch-component-pin sch-port-line" x1="821.9545540686502" y1="467.59412755587505" x2="821.9545540686502" y2="432.53021696050007" stroke-width="2.80511284763px"/><g class="sch-port" data-schematic-port-id="source_port_2_1__stack1"><rect x="819.1494412210202" y="429.72510411287004" width="5.61022569526" height="5.61022569526" opacity="0"/></g><text class="pin-number sch-pin-number" x="819.1494412210201" y="450.0621722581876" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.038346357225px" transform="rotate(-90 819.1494412210201 450.0621722581876)"></text><text class="pin-number sch-pin-label" x="821.9545540686502" y="481.619691794025" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="end" dominant-baseline="middle" font-size="21.038346357225px" transform="rotate(-90 821.9545540686502 481.619691794025)">schematic_port_12</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="625.59665473455" cy="642.91368053275" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="625.59665473455" cy="446.55578119865015" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="204.82972759004997" cy="376.42796000789997" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="204.82972759004997" cy="544.7347308657" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="625.59665473455" cy="614.8625520564501" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="625.59665473455" cy="530.7091666275501" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="204.82972759004997" cy="460.5813454368001" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_7__stack1"><circle cx="204.82972759004997" cy="628.8881162946002" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_8__stack1"><circle cx="625.59665473455" cy="362.4023957697501" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="299.0937916391264" cy="130.61247789406275" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="447.1792052565737" cy="131.3486937864874" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="821.9545540686502" cy="516.6836023894" r="5.61022569526" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="821.9545540686502" cy="432.53021696050007" r="5.61022569526" 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="
|
|
86
|
+
M 653.6477832108501,642.91368053275
|
|
87
|
+
L 667.6733474490001,650.487485221351
|
|
88
|
+
L 667.6733474490001,698.5858201820467
|
|
89
|
+
L 639.6222189727001,698.5858201820467
|
|
90
|
+
L 639.6222189727001,650.487485221351
|
|
91
|
+
Z
|
|
92
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.80511284763px"/><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="653.6477832108501" y="655.536688347085" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.246015628669998px" transform="rotate(90 653.6477832108501 655.536688347085)">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="
|
|
93
|
+
M 625.59665473455,446.55578119865015
|
|
94
|
+
L 633.170459423151,432.5302169605001
|
|
95
|
+
L 730.6948827590874,432.5302169605001
|
|
96
|
+
L 730.6948827590874,460.5813454368002
|
|
97
|
+
L 633.170459423151,460.5813454368002
|
|
98
|
+
Z
|
|
99
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.80511284763px"/><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="638.219662548885" y="446.55578119865015" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.246015628669998px" transform="">XXXXX</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="
|
|
100
|
+
M 447.1792052565737,131.3486937864874
|
|
101
|
+
L 454.7530099451747,117.32312954833739
|
|
102
|
+
L 552.277433281111,117.32312954833739
|
|
103
|
+
L 552.277433281111,145.37425802463738
|
|
104
|
+
L 454.7530099451747,145.37425802463738
|
|
105
|
+
Z
|
|
106
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.80511284763px"/><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="459.8022130709087" y="131.3486937864874" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.246015628669998px" transform="">XXXXX</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="
|
|
107
|
+
M 176.7785991137498,130.61247789406275
|
|
108
|
+
L 162.7530348755998,123.03867320546175
|
|
109
|
+
L 162.7530348755998,74.94033824476602
|
|
110
|
+
L 190.8041633518998,74.94033824476602
|
|
111
|
+
L 190.8041633518998,123.03867320546175
|
|
112
|
+
Z
|
|
113
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.80511284763px"/><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="176.7785991137498" y="117.98947007972775" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.246015628669998px" transform="rotate(-90 176.7785991137498 117.98947007972775)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
|
|
114
|
+
M 723.7756044016,530.7091666275501
|
|
115
|
+
L 709.7500401634501,523.1353619389491
|
|
116
|
+
L 709.7500401634501,475.0370269782534
|
|
117
|
+
L 737.80116863975,475.0370269782534
|
|
118
|
+
L 737.80116863975,523.1353619389491
|
|
119
|
+
Z
|
|
120
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.80511284763px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="723.7756044016" y="518.0861588132151" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.246015628669998px" transform="rotate(-90 723.7756044016 518.0861588132151)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="
|
|
121
|
+
M 821.9545540686502,362.4023957697501
|
|
122
|
+
L 807.9289898305002,354.8285910811491
|
|
123
|
+
L 807.9289898305002,306.7302561204534
|
|
124
|
+
L 835.9801183068001,306.7302561204534
|
|
125
|
+
L 835.9801183068001,354.8285910811491
|
|
126
|
+
Z
|
|
127
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.80511284763px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="821.9545540686502" y="349.77938795541513" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.246015628669998px" transform="rotate(-90 821.9545540686502 349.77938795541513)">XX</text><text class="sch-text" x="277.7626616284301" y="717.249170994945" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="25.24601562866996px" transform="rotate(0, 277.7626616284301, 717.249170994945)">U1</text><text class="sch-text" x="277.7626616284301" y="290.17073994327757" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="25.246015628669998px" transform="rotate(0, 277.7626616284301, 290.17073994327757)">U1</text><rect class="schematic-box sch-box" x="260.93198454265007" y="704.6261631806101" width="33.661354171560106" height="25.246015628669966" stroke-width="2.80511284763px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="22.44090278104 11.22045139052"/><rect class="schematic-box sch-box" x="252.51664599976016" y="272.63878464559025" width="50.49203125733993" height="35.063910595374864" stroke-width="2.80511284763px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="22.44090278104 11.22045139052"/>
|
|
128
|
+
</g>
|
|
129
|
+
</svg>
|