@tscircuit/schematic-trace-solver 0.0.107 → 0.0.109

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.
Files changed (33) hide show
  1. package/dist/index.d.ts +31 -3
  2. package/dist/index.js +784 -247
  3. package/lib/solvers/MspConnectionPairSolver/MspConnectionPairSolver.ts +3 -1
  4. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2.ts +58 -27
  5. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/generateEndpointCollisionDetours.ts +1 -10
  6. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/generateInternalSegmentCollisionDetours.ts +94 -0
  7. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/pathOps.ts +10 -0
  8. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/rect.ts +5 -1
  9. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +18 -3
  10. package/lib/solvers/UnroutedTraceRecoverySolver/UnroutedTraceRecoverySolver.ts +592 -0
  11. package/package.json +1 -1
  12. package/site/bug-reports/bug-report-20260724T175257Z.page.tsx +4 -0
  13. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +5 -9
  14. package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +5 -5
  15. package/tests/bug-reports/bug-report-20260708T095725Z/bug-report-20260708T095725Z.test.ts +15 -0
  16. package/tests/bug-reports/bug-report-20260724T175257Z/__snapshots__/bug-report-20260724T175257Z.snap.svg +58 -0
  17. package/tests/bug-reports/bug-report-20260724T175257Z/bug-report-20260724T175257Z.json +138 -0
  18. package/tests/bug-reports/bug-report-20260724T175257Z/bug-report-20260724T175257Z.test.ts +12 -0
  19. package/tests/examples/__snapshots__/example04.snap.svg +7 -9
  20. package/tests/examples/__snapshots__/example08.snap.svg +16 -20
  21. package/tests/examples/__snapshots__/example13.snap.svg +2 -4
  22. package/tests/examples/__snapshots__/example32.snap.svg +64 -66
  23. package/tests/examples/__snapshots__/example46.snap.svg +1 -1
  24. package/tests/repros/__snapshots__/repro-netlabel-collision-687.snap.svg +81 -0
  25. package/tests/repros/__snapshots__/repro-netlabel-overlap-trace.snap.svg +16 -18
  26. package/tests/repros/__snapshots__/repro-tps61222-trace-intersection.snap.svg +63 -220
  27. package/tests/repros/assets/repro-netlabel-collision-687.input.json +212 -0
  28. package/tests/repros/repro-netlabel-collision-687.test.ts +59 -0
  29. package/tests/repros/repro-tps61222-trace-intersection.test.ts +27 -0
  30. package/tests/solvers/SchematicTraceSingleLineSolver2/generate-internal-segment-collision-detours.test.ts +49 -0
  31. package/tests/solvers/UnroutedTraceRecoverySolver/paired-junction-recovery.test.ts +49 -0
  32. package/tests/solvers/UnroutedTraceRecoverySolver/skip-ground.test.ts +30 -0
  33. package/tests/solvers/UnroutedTraceRecoverySolver/skip-long-connection.test.ts +24 -0
@@ -1,20 +1,18 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-4.475,2.9699999999999998 -2.38,3" data-type="line" data-label="" points="106.69131238447312,232.0887245841036 416.4879852125693,227.65249537892794" fill="none" stroke="hsl(192, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -2.7,1.5" data-type="line" data-label="" points="247.17190388170047,232.0887245841036 369.1682070240295,449.463955637708" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.62,3 -3.3,1.5" data-type="line" data-label="" points="528.8724584103511,227.65249537892794 280.4436229205175,449.463955637708" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -3.5250000000000004,2.8 -2.5,2.8 -2.5,1.5 -2.7,1.5" data-type="line" data-label="" points="247.17190388170047,232.0887245841036 247.17190388170047,257.2273567467653 398.74306839186687,257.2273567467653 398.74306839186687,449.463955637708 369.1682070240295,449.463955637708" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.62,3 -1.3790000000000002,3 -1.3790000000000002,3.251" data-type="line" data-label="" points="528.8724584103511,227.65249537892794 564.5101663585951,227.65249537892794 564.5101663585951,190.5360443622921" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.3,1.5 -3.541,1.5 -3.541,1.9509999999999998" data-type="line" data-label="" points="280.4436229205175,449.463955637708 244.8059149722735,449.463955637708 244.8059149722735,382.77264325323483" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-4" data-y="3" x="106.69131238447312" y="206.21072088724588" width="140.48059149722735" height="42.88354898336411" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0067624999999999985"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-2" data-y="3" x="416.48798521256936" y="190.68391866913123" width="112.3844731977818" height="73.93715341959341" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0067624999999999985"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-3" data-y="1.5" x="280.4436229205175" y="387.35674676524957" width="88.72458410351203" height="124.21441774491683" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0067624999999999985"/></g><g><rect data-type="rect" data-label="netId: .B1 &gt; .pin1 to .SW1 &gt; .pin1
2
- globalConnNetId: connectivity_net0" data-x="-4.701" data-y="2.9699999999999998" x="40" y="217.3012939001849" width="66.54343807763394" height="29.5748613678374" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0067624999999999985"/></g><g><rect data-type="rect" data-label="netId: .B1 &gt; .pin1 to .SW1 &gt; .pin1
3
- globalConnNetId: connectivity_net0" data-x="-2.606" data-y="3" x="349.79667282809606" y="212.86506469500927" width="66.54343807763405" height="29.574861367837343" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0067624999999999985"/></g><g><rect data-type="rect" data-label="netId: GND
4
- globalConnNetId: connectivity_net1" data-x="-3.5250000000000004" data-y="2.59" x="211.68207024029564" y="257.2273567467653" width="70.97966728280966" height="62.10720887245844" fill="#00000066" stroke="#000000" stroke-width="0.0067624999999999985"/></g><g><rect data-type="rect" data-label="netId: VCC
5
- globalConnNetId: connectivity_net2" data-x="-1.3790000000000002" data-y="3.461" x="529.0203327171903" y="128.4288354898337" width="70.97966728280971" height="62.10720887245844" fill="#ef444466" stroke="#ef4444" stroke-width="0.0067624999999999985"/></g><g><rect data-type="rect" data-label="netId: VCC
6
- globalConnNetId: connectivity_net2" data-x="-3.541" data-y="2.161" x="209.31608133086874" y="320.6654343807764" width="70.97966728280954" height="62.107208872458386" fill="#ef444466" stroke="#ef4444" stroke-width="0.0067624999999999985"/></g><g><circle data-type="point" data-label="B1.1
7
- x-" data-x="-4.475" data-y="2.9699999999999998" cx="106.69131238447312" cy="232.0887245841036" r="3" fill="hsl(210, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="B1.2
8
- x+" data-x="-3.5250000000000004" data-y="2.9699999999999998" cx="247.17190388170047" cy="232.0887245841036" r="3" fill="hsl(211, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="SW1.1
9
- x-" data-x="-2.38" data-y="3" cx="416.4879852125693" cy="227.65249537892794" r="3" fill="hsl(104, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="SW1.2
10
- x+" data-x="-1.62" data-y="3" cx="528.8724584103511" cy="227.65249537892794" r="3" fill="hsl(105, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C3.1
11
- x-" data-x="-3.3" data-y="1.5" cx="280.4436229205175" cy="449.463955637708" r="3" fill="hsl(243, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C3.2
12
- x+" data-x="-2.7" data-y="1.5" cx="369.1682070240295" cy="449.463955637708" r="3" fill="hsl(244, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
13
- orientation: x-" data-x="-4.475" data-y="2.9699999999999998" cx="106.69131238447312" cy="232.0887245841036" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
14
- orientation: x-" data-x="-2.38" data-y="3" cx="416.4879852125693" cy="227.65249537892794" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
15
- orientation: y-" data-x="-3.5250000000000004" data-y="2.8" cx="247.17190388170047" cy="257.2273567467653" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
16
- orientation: y+" data-x="-1.3790000000000002" data-y="3.251" cx="564.5101663585951" cy="190.5360443622921" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
17
- orientation: y+" data-x="-3.541" data-y="1.9509999999999998" cx="244.8059149722735" cy="382.77264325323483" 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[
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-4.475,2.9699999999999998 -2.38,3" data-type="line" data-label="" points="86.20462046204614,228.4378437843784 408.86688668866884,223.8173817381737" fill="none" stroke="hsl(192, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -2.7,1.5" data-type="line" data-label="" points="232.5192519251924,228.4378437843784 359.5819581958195,454.8404840484048" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.62,3 -3.3,1.5" data-type="line" data-label="" points="525.9185918591859,223.8173817381737 267.17271727172715,454.8404840484048" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5250000000000004,2.9699999999999998 -2.5,2.9699999999999998 -2.5,1.5 -2.7,1.5" data-type="line" data-label="" points="232.5192519251924,228.4378437843784 390.38503850385035,228.4378437843784 390.38503850385035,454.8404840484048 359.5819581958195,454.8404840484048" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-4.475,2.9699999999999998 -4.675,2.9699999999999998 -4.675,3.45 -2.58,3.45 -2.58,3 -2.38,3" data-type="line" data-label="" points="86.20462046204614,228.4378437843784 55.401540154015265,228.4378437843784 55.401540154015265,154.51045104510433 378.063806380638,154.51045104510433 378.063806380638,223.8173817381737 408.86688668866884,223.8173817381737" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.62,3 -1.3790000000000002,3 -1.3790000000000002,3.251" data-type="line" data-label="" points="525.9185918591859,223.8173817381737 563.036303630363,223.8173817381737 563.036303630363,185.1595159515951" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.3,1.5 -3.541,1.5 -3.541,1.9509999999999998" data-type="line" data-label="" points="267.17271727172715,454.8404840484048 230.05500550055,454.8404840484048 230.05500550055,385.37953795379536" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-4" data-y="3" x="86.20462046204614" y="201.48514851485137" width="146.31463146314627" height="44.66446644664467" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-2" data-y="3" x="408.86688668866884" y="185.31353135313518" width="117.05170517051704" height="77.00770077007707" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-3" data-y="1.5" x="267.17271727172715" y="390.15401540154005" width="92.40924092409233" height="129.37293729372942" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: .B1 &gt; .pin1 to .SW1 &gt; .pin1
2
+ globalConnNetId: connectivity_net0" data-x="-4.675" data-y="2.7449999999999997" x="39.99999999999994" y="228.43784378437843" width="30.803080308030644" height="69.30693069306932" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: GND
3
+ globalConnNetId: connectivity_net1" data-x="-3.0125" data-y="2.76" x="274.4884488448844" y="228.4378437843784" width="73.92739273927401" height="64.68646864686468" fill="#00000066" stroke="#000000" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: VCC
4
+ globalConnNetId: connectivity_net2" data-x="-1.3790000000000002" data-y="3.461" x="526.072607260726" y="120.47304730473039" width="73.92739273927396" height="64.68646864686474" fill="#ef444466" stroke="#ef4444" stroke-width="0.006492857142857141"/></g><g><rect data-type="rect" data-label="netId: VCC
5
+ globalConnNetId: connectivity_net2" data-x="-3.541" data-y="2.161" x="193.09130913091306" y="320.6930693069306" width="73.9273927392739" height="64.68646864686468" fill="#ef444466" stroke="#ef4444" stroke-width="0.006492857142857141"/></g><g><circle data-type="point" data-label="B1.1
6
+ x-" data-x="-4.475" data-y="2.9699999999999998" cx="86.20462046204614" cy="228.4378437843784" r="3" fill="hsl(210, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="B1.2
7
+ x+" data-x="-3.5250000000000004" data-y="2.9699999999999998" cx="232.5192519251924" cy="228.4378437843784" r="3" fill="hsl(211, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="SW1.1
8
+ x-" data-x="-2.38" data-y="3" cx="408.86688668866884" cy="223.8173817381737" r="3" fill="hsl(104, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="SW1.2
9
+ x+" data-x="-1.62" data-y="3" cx="525.9185918591859" cy="223.8173817381737" r="3" fill="hsl(105, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C3.1
10
+ x-" data-x="-3.3" data-y="1.5" cx="267.17271727172715" cy="454.8404840484048" r="3" fill="hsl(243, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C3.2
11
+ x+" data-x="-2.7" data-y="1.5" cx="359.5819581958195" cy="454.8404840484048" r="3" fill="hsl(244, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
12
+ orientation: y-" data-x="-4.675" data-y="2.9699999999999998" cx="55.401540154015265" cy="228.4378437843784" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
13
+ orientation: y-" data-x="-3.0125" data-y="2.9699999999999998" cx="311.45214521452135" cy="228.4378437843784" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
14
+ orientation: y+" data-x="-1.3790000000000002" data-y="3.251" cx="563.036303630363" cy="185.1595159515951" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
15
+ orientation: y+" data-x="-3.541" data-y="1.9509999999999998" cx="230.05500550055" cy="385.37953795379536" 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[
18
16
  document.currentScript.parentElement.addEventListener('mousemove', (e) => {
19
17
  const svg = e.currentTarget;
20
18
  const rect = svg.getBoundingClientRect();
@@ -36,7 +34,7 @@ orientation: y+" data-x="-3.541" data-y="1.9509999999999998" cx="244.80591497227
36
34
  v.setAttribute('y2', '640');
37
35
 
38
36
  // Calculate real coordinates using inverse transformation
39
- const matrix = {"a":147.87430683918672,"c":0,"e":768.4288354898337,"b":0,"d":-147.87430683918672,"f":671.2754158964881};
37
+ const matrix = {"a":154.01540154015404,"c":0,"e":775.4235423542355,"b":0,"d":-154.01540154015404,"f":685.8635863586359};
40
38
  // Manually invert and apply the affine transform
41
39
  // Since we only use translate and scale, we can directly compute:
42
40
  // x' = (x - tx) / sx
@@ -1,221 +1,64 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg">
2
- <rect width="100%" height="100%" fill="white" />
3
- <g>
4
- <circle data-type="point" data-label="U2.1
5
- x+" data-x="1.65" data-y="0.09999999999999998" cx="358.0428134556575" cy="333.06104831804277" r="3" fill="hsl(200, 100%, 50%, 0.8)" />
6
- </g>
7
- <g>
8
- <circle data-type="point" data-label="U2.2
9
- x-" data-x="-1.65" data-y="-0.1" cx="196.5749235474006" cy="342.84698103975535" r="3" fill="hsl(201, 100%, 50%, 0.8)" />
10
- </g>
11
- <g>
12
- <circle data-type="point" data-label="U2.3
13
- x+" data-x="1.65" data-y="-0.30000000000000004" cx="358.0428134556575" cy="352.6329137614679" r="3" fill="hsl(202, 100%, 50%, 0.8)" />
14
- </g>
15
- <g>
16
- <circle data-type="point" data-label="U2.4
17
- x-" data-x="-1.65" data-y="0.1" cx="196.5749235474006" cy="333.06104831804277" r="3" fill="hsl(203, 100%, 50%, 0.8)" />
18
- </g>
19
- <g>
20
- <circle data-type="point" data-label="U2.5
21
- x+" data-x="1.65" data-y="0.30000000000000004" cx="358.0428134556575" cy="323.27511559633024" r="3" fill="hsl(204, 100%, 50%, 0.8)" />
22
- </g>
23
- <g>
24
- <circle data-type="point" data-label="U2.6
25
- x+" data-x="1.65" data-y="-0.10000000000000003" cx="358.0428134556575" cy="342.84698103975535" r="3" fill="hsl(205, 100%, 50%, 0.8)" />
26
- </g>
27
- <g>
28
- <circle data-type="point" data-label="L4.1
29
- x-" data-x="3.5720874999999994" data-y="1.3026245499999998" cx="452.0899082568807" cy="274.2170336391437" r="3" fill="hsl(43, 100%, 50%, 0.8)" />
30
- </g>
31
- <g>
32
- <circle data-type="point" data-label="L4.2
33
- x+" data-x="4.6279125" data-y="1.2973754500000003" cx="503.7510703363914" cy="274.47387033639137" r="3" fill="hsl(44, 100%, 50%, 0.8)" />
34
- </g>
35
- <g>
36
- <circle data-type="point" data-label="C25.1
37
- y+" data-x="-4.4" data-y="0.38" cx="62.0183486238532" cy="319.3607425076452" r="3" fill="hsl(265, 100%, 50%, 0.8)" />
38
- </g>
39
- <g>
40
- <circle data-type="point" data-label="C25.2
41
- y-" data-x="-4.4" data-y="-0.38" cx="62.0183486238532" cy="356.5472868501529" r="3" fill="hsl(266, 100%, 50%, 0.8)" />
42
- </g>
43
- <g>
44
- <circle data-type="point" data-label="C26.1
45
- y+" data-x="6" data-y="0.38" cx="570.8868501529053" cy="319.3607425076452" r="3" fill="hsl(146, 100%, 50%, 0.8)" />
46
- </g>
47
- <g>
48
- <circle data-type="point" data-label="C26.2
49
- y-" data-x="6" data-y="-0.38" cx="570.8868501529053" cy="356.5472868501529" r="3" fill="hsl(147, 100%, 50%, 0.8)" />
50
- </g>
51
- <g>
52
- <circle data-type="point" data-label="anchorPoint
53
- orientation: y+" data-x="6" data-y="1.2973754500000003" cx="570.8868501529053" cy="274.47387033639137" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
54
- </g>
55
- <g>
56
- <circle data-type="point" data-label="anchorPoint
57
- orientation: y+" data-x="-4.4" data-y="0.5800000000000002" cx="62.0183486238532" cy="309.5748097859327" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
58
- </g>
59
- <g>
60
- <circle data-type="point" data-label="anchorPoint
61
- orientation: y-" data-x="-4.4" data-y="-0.5800000000000002" cx="62.0183486238532" cy="366.3332195718654" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
62
- </g>
63
- <g>
64
- <circle data-type="point" data-label="anchorPoint
65
- orientation: x+" data-x="2.6110437499999994" data-y="0.30000000000000004" cx="405.06636085626906" cy="323.27511559633024" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
66
- </g>
67
- <g>
68
- <polyline data-points="1.65,0.09999999999999998 1.65,-0.10000000000000003" data-type="line" data-label="" points="358.0428134556575,333.06104831804277 358.0428134556575,342.84698103975535" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
69
- </g>
70
- <g>
71
- <polyline data-points="1.65,0.09999999999999998 4.6279125,1.2973754500000003" data-type="line" data-label="" points="358.0428134556575,333.06104831804277 503.7510703363914,274.47387033639137" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
72
- </g>
73
- <g>
74
- <polyline data-points="1.65,0.09999999999999998 6,0.38" data-type="line" data-label="" points="358.0428134556575,333.06104831804277 570.8868501529053,319.3607425076452" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
75
- </g>
76
- <g>
77
- <polyline data-points="1.65,-0.10000000000000003 4.6279125,1.2973754500000003" data-type="line" data-label="" points="358.0428134556575,342.84698103975535 503.7510703363914,274.47387033639137" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
78
- </g>
79
- <g>
80
- <polyline data-points="1.65,-0.10000000000000003 6,0.38" data-type="line" data-label="" points="358.0428134556575,342.84698103975535 570.8868501529053,319.3607425076452" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
81
- </g>
82
- <g>
83
- <polyline data-points="4.6279125,1.2973754500000003 6,0.38" data-type="line" data-label="" points="503.7510703363914,274.47387033639137 570.8868501529053,319.3607425076452" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
84
- </g>
85
- <g>
86
- <polyline data-points="-1.65,-0.1 -1.65,0.1" data-type="line" data-label="" points="196.5749235474006,342.84698103975535 196.5749235474006,333.06104831804277" fill="none" stroke="hsl(261, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
87
- </g>
88
- <g>
89
- <polyline data-points="-1.65,-0.1 -4.4,0.38" data-type="line" data-label="" points="196.5749235474006,342.84698103975535 62.0183486238532,319.3607425076452" fill="none" stroke="hsl(261, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
90
- </g>
91
- <g>
92
- <polyline data-points="-1.65,0.1 -4.4,0.38" data-type="line" data-label="" points="196.5749235474006,333.06104831804277 62.0183486238532,319.3607425076452" fill="none" stroke="hsl(261, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
93
- </g>
94
- <g>
95
- <polyline data-points="1.65,-0.30000000000000004 -4.4,-0.38" data-type="line" data-label="" points="358.0428134556575,352.6329137614679 62.0183486238532,356.5472868501529" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
96
- </g>
97
- <g>
98
- <polyline data-points="1.65,-0.30000000000000004 6,-0.38" data-type="line" data-label="" points="358.0428134556575,352.6329137614679 570.8868501529053,356.5472868501529" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
99
- </g>
100
- <g>
101
- <polyline data-points="-4.4,-0.38 6,-0.38" data-type="line" data-label="" points="62.0183486238532,356.5472868501529 570.8868501529053,356.5472868501529" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
102
- </g>
103
- <g>
104
- <polyline data-points="1.65,0.30000000000000004 3.5720874999999994,1.3026245499999998" data-type="line" data-label="" points="358.0428134556575,323.27511559633024 452.0899082568807,274.2170336391437" fill="none" stroke="hsl(56, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
105
- </g>
106
- <g>
107
- <polyline data-points="4.6279125,1.2973754500000003 6,1.2973754500000003 6,0.38" data-type="line" data-label="" points="503.7510703363914,274.47387033639137 570.8868501529053,274.47387033639137 570.8868501529053,319.3607425076452" fill="none" stroke="purple" stroke-width="1" />
108
- </g>
109
- <g>
110
- <polyline data-points="1.65,0.09999999999999998 4.8279125,0.09999999999999998 4.8279125,1.2973754500000003 4.6279125,1.2973754500000003" data-type="line" data-label="" points="358.0428134556575,333.06104831804277 513.537003058104,333.06104831804277 513.537003058104,274.47387033639137 503.7510703363914,274.47387033639137" fill="none" stroke="purple" stroke-width="1" />
111
- </g>
112
- <g>
113
- <polyline data-points="1.65,-0.10000000000000003 1.8499999999999999,-0.10000000000000003 1.8499999999999999,0.09999999999999998 1.65,0.09999999999999998" data-type="line" data-label="" points="358.0428134556575,342.84698103975535 367.82874617737,342.84698103975535 367.82874617737,333.06104831804277 358.0428134556575,333.06104831804277" fill="none" stroke="purple" stroke-width="1" />
114
- </g>
115
- <g>
116
- <polyline data-points="-1.65,0.09999999999999976 -1.8499999999999999,0.09999999999999976 -1.8499999999999999,0.5800000000000002 -4.4,0.5800000000000002 -4.4,0.38" data-type="line" data-label="" points="196.5749235474006,333.0610483180428 186.78899082568807,333.0610483180428 186.78899082568807,309.5748097859327 62.0183486238532,309.5748097859327 62.0183486238532,319.3607425076452" fill="none" stroke="purple" stroke-width="1" />
117
- </g>
118
- <g>
119
- <polyline data-points="-1.65,-0.1 -1.8499999999999999,-0.1 -1.8499999999999999,0.1 -1.65,0.1" data-type="line" data-label="" points="196.5749235474006,342.84698103975535 186.78899082568807,342.84698103975535 186.78899082568807,333.06104831804277 196.5749235474006,333.06104831804277" fill="none" stroke="purple" stroke-width="1" />
120
- </g>
121
- <g>
122
- <polyline data-points="1.6500000000000004,-0.29999999999999993 1.8500000000000005,-0.29999999999999993 1.8500000000000005,-0.5800000000000002 -4.4,-0.5800000000000002 -4.4,-0.38" data-type="line" data-label="" points="358.0428134556575,352.6329137614679 367.82874617737,352.6329137614679 367.82874617737,366.3332195718654 62.0183486238532,366.3332195718654 62.0183486238532,356.5472868501529" fill="none" stroke="purple" stroke-width="1" />
123
- </g>
124
- <g>
125
- <polyline data-points="6,-0.38 6,-0.5800000000000001 3.825,-0.5800000000000001 3.825,-0.30000000000000004 1.65,-0.30000000000000004" data-type="line" data-label="" points="570.8868501529053,356.5472868501529 570.8868501529053,366.3332195718654 464.46483180428135,366.3332195718654 464.46483180428135,352.6329137614679 358.0428134556575,352.6329137614679" fill="none" stroke="purple" stroke-width="1" />
126
- </g>
127
- <g>
128
- <polyline data-points="1.65,0.30000000000000004 2.6110437499999994,0.30000000000000004 2.6110437499999994,1.3026245499999998 3.5720874999999994,1.3026245499999998" data-type="line" data-label="" points="358.0428134556575,323.27511559633024 405.06636085626906,323.27511559633024 405.06636085626906,274.2170336391437 452.0899082568807,274.2170336391437" fill="none" stroke="purple" stroke-width="1" />
129
- </g>
130
- <g>
131
- <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="196.5749235474006" y="313.4891828746177" width="161.4678899082569" height="48.92966360856269" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375" />
132
- </g>
133
- <g>
134
- <rect data-type="rect" data-label="schematic_component_1" data-x="4.1" data-y="1.3" x="452.0899082568807" y="253.1163217125382" width="51.661162079510746" height="42.458260550458704" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375" />
135
- </g>
136
- <g>
137
- <rect data-type="rect" data-label="schematic_component_2" data-x="-4.327500000000001" data-y="0" x="39.99999999999997" y="319.3607425076452" width="51.131498470948" height="37.18654434250766" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375" />
138
- </g>
139
- <g>
140
- <rect data-type="rect" data-label="schematic_component_3" data-x="6.0725" data-y="0" x="548.8685015290519" y="319.3607425076452" width="51.131498470948145" height="37.18654434250766" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375" />
141
- </g>
142
- <g>
143
- <rect data-type="rect" data-label="TPS61222DCKT" data-x="-0.53" data-y="-0.63" x="216.14678899082568" y="364.3760330275229" width="70.45871559633028" height="8.807339449541303" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.0204375" />
144
- </g>
145
- <g>
146
- <rect data-type="rect" data-label="U2" data-x="-1.13" data-y="0.615" x="213.21100917431193" y="301.7460636085627" width="17.614678899082577" height="12.232415902140644" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.0204375" />
147
- </g>
148
- <g>
149
- <rect data-type="rect" data-label="netId: VIN_3V3
150
- globalConnNetId: connectivity_net0" data-x="6" data-y="1.5073754500000003" x="547.4006116207951" y="253.92341162079506" width="46.97247706422024" height="20.550458715596307" fill="#ef444466" stroke="#ef4444" stroke-width="0.0204375" />
151
- </g>
152
- <g>
153
- <rect data-type="rect" data-label="netId: VIN_5V
154
- globalConnNetId: connectivity_net1" data-x="-4.4" data-y="0.7900000000000001" x="41.467889908256865" y="289.02435107033637" width="41.10091743119264" height="20.550458715596335" fill="#ef444466" stroke="#ef4444" stroke-width="0.0204375" />
155
- </g>
156
- <g>
157
- <rect data-type="rect" data-label="netId: GND
158
- globalConnNetId: connectivity_net2" data-x="-4.4" data-y="-0.7900000000000001" x="50.27522935779814" y="366.3332195718654" width="23.486238532110093" height="20.550458715596335" fill="#00000066" stroke="#000000" stroke-width="0.0204375" />
159
- </g>
160
- <g>
161
- <rect data-type="rect" data-label="netId: BOOST_SW
162
- globalConnNetId: connectivity_net3" data-x="3.1510437499999995" data-y="0.30000000000000004" x="405.06636085626906" y="318.382149235474" width="52.8440366972477" height="9.785932721712527" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0204375" />
163
- </g>
164
- <g id="crosshair" style="display: none">
165
- <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
166
- <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>
167
- </g>
168
- <script>
169
- <![CDATA[
170
- document.currentScript.parentElement.addEventListener('mousemove', (e) => {
171
- const svg = e.currentTarget;
172
- const rect = svg.getBoundingClientRect();
173
- const x = e.clientX - rect.left;
174
- const y = e.clientY - rect.top;
175
- const crosshair = svg.getElementById('crosshair');
176
- const h = svg.getElementById('crosshair-h');
177
- const v = svg.getElementById('crosshair-v');
178
- const coords = svg.getElementById('coordinates');
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="1.65,0.09999999999999998 1.65,-0.10000000000000003" data-type="line" data-label="" points="358.0428134556575,324.74300550458713 358.0428134556575,334.5289382262997" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.65,0.09999999999999998 4.6279125,1.2973754500000003" data-type="line" data-label="" points="358.0428134556575,324.74300550458713 503.7510703363914,266.15582752293574" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.65,0.09999999999999998 6,0.38" data-type="line" data-label="" points="358.0428134556575,324.74300550458713 570.8868501529053,311.0426996941896" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.65,-0.10000000000000003 4.6279125,1.2973754500000003" data-type="line" data-label="" points="358.0428134556575,334.5289382262997 503.7510703363914,266.15582752293574" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.65,-0.10000000000000003 6,0.38" data-type="line" data-label="" points="358.0428134556575,334.5289382262997 570.8868501529053,311.0426996941896" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="4.6279125,1.2973754500000003 6,0.38" data-type="line" data-label="" points="503.7510703363914,266.15582752293574 570.8868501529053,311.0426996941896" fill="none" stroke="hsl(100, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.65,-0.1 -1.65,0.1" data-type="line" data-label="" points="196.5749235474006,334.5289382262997 196.5749235474006,324.74300550458713" fill="none" stroke="hsl(261, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.65,-0.1 -4.4,0.38" data-type="line" data-label="" points="196.5749235474006,334.5289382262997 62.0183486238532,311.0426996941896" fill="none" stroke="hsl(261, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-1.65,0.1 -4.4,0.38" data-type="line" data-label="" points="196.5749235474006,324.74300550458713 62.0183486238532,311.0426996941896" fill="none" stroke="hsl(261, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.65,-0.30000000000000004 -4.4,-0.38" data-type="line" data-label="" points="358.0428134556575,344.31487094801224 62.0183486238532,348.22924403669725" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.65,-0.30000000000000004 6,-0.38" data-type="line" data-label="" points="358.0428134556575,344.31487094801224 570.8868501529053,348.22924403669725" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-4.4,-0.38 6,-0.38" data-type="line" data-label="" points="62.0183486238532,348.22924403669725 570.8868501529053,348.22924403669725" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="1.65,0.30000000000000004 3.5720874999999994,1.3026245499999998" data-type="line" data-label="" points="358.0428134556575,314.9570727828746 452.0899082568807,265.8989908256881" fill="none" stroke="hsl(56, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="4.6279125,1.2973754500000003 6,1.2973754500000003 6,0.38" data-type="line" data-label="" points="503.7510703363914,266.15582752293574 570.8868501529053,266.15582752293574 570.8868501529053,311.0426996941896" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.65,0.09999999999999998 4.8279125,0.09999999999999998 4.8279125,1.2973754500000003 4.6279125,1.2973754500000003" data-type="line" data-label="" points="358.0428134556575,324.74300550458713 513.537003058104,324.74300550458713 513.537003058104,266.15582752293574 503.7510703363914,266.15582752293574" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.65,-0.10000000000000003 1.8499999999999999,-0.10000000000000003 1.8499999999999999,0.09999999999999998 1.65,0.09999999999999998" data-type="line" data-label="" points="358.0428134556575,334.5289382262997 367.82874617737,334.5289382262997 367.82874617737,324.74300550458713 358.0428134556575,324.74300550458713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.65,0.09999999999999976 -1.8499999999999999,0.09999999999999976 -1.8499999999999999,0.5800000000000002 -4.4,0.5800000000000002 -4.4,0.38" data-type="line" data-label="" points="196.5749235474006,324.7430055045872 186.78899082568807,324.7430055045872 186.78899082568807,301.25676697247707 62.0183486238532,301.25676697247707 62.0183486238532,311.0426996941896" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-1.65,-0.1 -1.8499999999999999,-0.1 -1.8499999999999999,0.1 -1.65,0.1" data-type="line" data-label="" points="196.5749235474006,334.5289382262997 186.78899082568807,334.5289382262997 186.78899082568807,324.74300550458713 196.5749235474006,324.74300550458713" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.6500000000000004,-0.29999999999999993 1.8500000000000005,-0.29999999999999993 1.8500000000000005,-0.9199999999999999 -4.4,-0.9199999999999999 -4.4,-0.38" data-type="line" data-label="" points="358.0428134556575,344.31487094801224 367.82874617737,344.31487094801224 367.82874617737,374.6512623853211 62.0183486238532,374.6512623853211 62.0183486238532,348.22924403669725" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="6,-0.38 6,-0.5800000000000001 1.8500000000000005,-0.5800000000000001 1.8500000000000005,-0.30000000000000004 1.65,-0.30000000000000004" data-type="line" data-label="" points="570.8868501529053,348.22924403669725 570.8868501529053,358.0151767584098 367.82874617737,358.0151767584098 367.82874617737,344.31487094801224 358.0428134556575,344.31487094801224" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="1.65,0.30000000000000004 2.6110437499999994,0.30000000000000004 2.6110437499999994,1.3026245499999998 3.5720874999999994,1.3026245499999998" data-type="line" data-label="" points="358.0428134556575,314.9570727828746 405.06636085626906,314.9570727828746 405.06636085626906,265.8989908256881 452.0899082568807,265.8989908256881" 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="196.5749235474006" y="305.1711400611621" width="161.4678899082569" height="48.92966360856269" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="4.1" data-y="1.3" x="452.08990825688073" y="244.79827889908256" width="51.661162079510746" height="42.458260550458704" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-4.327500000000001" data-y="0" x="39.99999999999996" y="311.0426996941896" width="51.131498470948" height="37.18654434250766" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="6.0725" data-y="0" x="548.868501529052" y="311.0426996941896" width="51.131498470948145" height="37.18654434250766" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="TPS61222DCKT" data-x="-0.53" data-y="-0.63" x="216.14678899082566" y="356.0579902140672" width="70.45871559633028" height="8.807339449541303" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="U2" data-x="-1.13" data-y="0.615" x="213.21100917431193" y="293.42802079510705" width="17.614678899082577" height="12.232415902140644" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="netId: VIN_3V3
2
+ globalConnNetId: connectivity_net0" data-x="6" data-y="1.5073754500000003" x="547.4006116207952" y="245.60536880733946" width="46.97247706422024" height="20.550458715596307" fill="#ef444466" stroke="#ef4444" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="netId: VIN_5V
3
+ globalConnNetId: connectivity_net1" data-x="-4.4" data-y="0.7900000000000001" x="41.46788990825688" y="280.7063082568807" width="41.10091743119264" height="20.550458715596335" fill="#ef444466" stroke="#ef4444" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="netId: GND
4
+ globalConnNetId: connectivity_net2" data-x="-4.4" data-y="-1.13" x="50.27522935779815" y="374.65126238532105" width="23.486238532110093" height="20.550458715596335" fill="#00000066" stroke="#000000" stroke-width="0.0204375"/></g><g><rect data-type="rect" data-label="netId: BOOST_SW
5
+ globalConnNetId: connectivity_net3" data-x="3.1510437499999995" data-y="0.30000000000000004" x="405.06636085626906" y="310.0641064220183" width="52.8440366972477" height="9.785932721712527" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.0204375"/></g><g><circle data-type="point" data-label="U2.1
6
+ x+" data-x="1.65" data-y="0.09999999999999998" cx="358.0428134556575" cy="324.74300550458713" r="3" fill="hsl(200, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U2.2
7
+ x-" data-x="-1.65" data-y="-0.1" cx="196.5749235474006" cy="334.5289382262997" r="3" fill="hsl(201, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U2.3
8
+ x+" data-x="1.65" data-y="-0.30000000000000004" cx="358.0428134556575" cy="344.31487094801224" r="3" fill="hsl(202, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U2.4
9
+ x-" data-x="-1.65" data-y="0.1" cx="196.5749235474006" cy="324.74300550458713" r="3" fill="hsl(203, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U2.5
10
+ x+" data-x="1.65" data-y="0.30000000000000004" cx="358.0428134556575" cy="314.9570727828746" r="3" fill="hsl(204, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U2.6
11
+ x+" data-x="1.65" data-y="-0.10000000000000003" cx="358.0428134556575" cy="334.5289382262997" r="3" fill="hsl(205, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="L4.1
12
+ x-" data-x="3.5720874999999994" data-y="1.3026245499999998" cx="452.0899082568807" cy="265.8989908256881" r="3" fill="hsl(43, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="L4.2
13
+ x+" data-x="4.6279125" data-y="1.2973754500000003" cx="503.7510703363914" cy="266.15582752293574" r="3" fill="hsl(44, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C25.1
14
+ y+" data-x="-4.4" data-y="0.38" cx="62.0183486238532" cy="311.0426996941896" r="3" fill="hsl(265, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C25.2
15
+ y-" data-x="-4.4" data-y="-0.38" cx="62.0183486238532" cy="348.22924403669725" r="3" fill="hsl(266, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C26.1
16
+ y+" data-x="6" data-y="0.38" cx="570.8868501529053" cy="311.0426996941896" r="3" fill="hsl(146, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="C26.2
17
+ y-" data-x="6" data-y="-0.38" cx="570.8868501529053" cy="348.22924403669725" r="3" fill="hsl(147, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
18
+ orientation: y+" data-x="6" data-y="1.2973754500000003" cx="570.8868501529053" cy="266.15582752293574" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
19
+ orientation: y+" data-x="-4.4" data-y="0.5800000000000002" cx="62.0183486238532" cy="301.25676697247707" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
20
+ orientation: y-" data-x="-4.4" data-y="-0.9199999999999999" cx="62.0183486238532" cy="374.6512623853211" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
21
+ orientation: x+" data-x="2.6110437499999994" data-y="0.30000000000000004" cx="405.06636085626906" cy="314.9570727828746" 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[
22
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
23
+ const svg = e.currentTarget;
24
+ const rect = svg.getBoundingClientRect();
25
+ const x = e.clientX - rect.left;
26
+ const y = e.clientY - rect.top;
27
+ const crosshair = svg.getElementById('crosshair');
28
+ const h = svg.getElementById('crosshair-h');
29
+ const v = svg.getElementById('crosshair-v');
30
+ const coords = svg.getElementById('coordinates');
31
+
32
+ crosshair.style.display = 'block';
33
+ h.setAttribute('x1', '0');
34
+ h.setAttribute('x2', '640');
35
+ h.setAttribute('y1', y);
36
+ h.setAttribute('y2', y);
37
+ v.setAttribute('x1', x);
38
+ v.setAttribute('x2', x);
39
+ v.setAttribute('y1', '0');
40
+ v.setAttribute('y2', '640');
179
41
 
180
- crosshair.style.display = 'block';
181
- h.setAttribute('x1', '0');
182
- h.setAttribute('x2', '640');
183
- h.setAttribute('y1', y);
184
- h.setAttribute('y2', y);
185
- v.setAttribute('x1', x);
186
- v.setAttribute('x2', x);
187
- v.setAttribute('y1', '0');
188
- v.setAttribute('y2', '640');
189
-
190
- // Calculate real coordinates using inverse transformation
191
- const matrix = {
192
- "a": 48.92966360856269,
193
- "c": 0,
194
- "e": 277.30886850152905,
195
- "b": 0,
196
- "d": -48.92966360856269,
197
- "f": 337.95401467889906
198
- };
199
- // Manually invert and apply the affine transform
200
- // Since we only use translate and scale, we can directly compute:
201
- // x' = (x - tx) / sx
202
- // y' = (y - ty) / sy
203
- const sx = matrix.a;
204
- const sy = matrix.d;
205
- const tx = matrix.e;
206
- const ty = matrix.f;
207
- const realPoint = {
208
- x: (x - tx) / sx,
209
- y: (y - ty) / sy // Flip y back since we used negative scale
210
- }
211
-
212
- coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
213
- coords.setAttribute('x', (x + 5).toString());
214
- coords.setAttribute('y', (y - 5).toString());
215
- });
216
- document.currentScript.parentElement.addEventListener('mouseleave', () => {
217
- document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
218
- });
219
- ]]>
220
- </script>
221
- </svg>
42
+ // Calculate real coordinates using inverse transformation
43
+ const matrix = {"a":48.92966360856269,"c":0,"e":277.30886850152905,"b":0,"d":-48.92966360856269,"f":329.6359718654434};
44
+ // Manually invert and apply the affine transform
45
+ // Since we only use translate and scale, we can directly compute:
46
+ // x' = (x - tx) / sx
47
+ // y' = (y - ty) / sy
48
+ const sx = matrix.a;
49
+ const sy = matrix.d;
50
+ const tx = matrix.e;
51
+ const ty = matrix.f;
52
+ const realPoint = {
53
+ x: (x - tx) / sx,
54
+ y: (y - ty) / sy // Flip y back since we used negative scale
55
+ }
56
+
57
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
58
+ coords.setAttribute('x', (x + 5).toString());
59
+ coords.setAttribute('y', (y - 5).toString());
60
+ });
61
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
62
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
63
+ });
64
+ ]]></script></svg>
@@ -0,0 +1,212 @@
1
+ {
2
+ "chips": [
3
+ {
4
+ "chipId": "U1",
5
+ "center": {
6
+ "x": 0,
7
+ "y": 0
8
+ },
9
+ "width": 1,
10
+ "height": 2,
11
+ "pins": [
12
+ {
13
+ "pinId": "U1.1",
14
+ "x": 0.5,
15
+ "y": 0.6
16
+ },
17
+ {
18
+ "pinId": "U1.2",
19
+ "x": 0.5,
20
+ "y": 0.4
21
+ },
22
+ {
23
+ "pinId": "U1.3",
24
+ "x": 0.5,
25
+ "y": 0.2
26
+ },
27
+ {
28
+ "pinId": "U1.4",
29
+ "x": 0.5,
30
+ "y": 0
31
+ },
32
+ {
33
+ "pinId": "U1.5",
34
+ "x": 0.5,
35
+ "y": -0.2
36
+ },
37
+ {
38
+ "pinId": "U1.6",
39
+ "x": 0.5,
40
+ "y": -0.4
41
+ },
42
+ {
43
+ "pinId": "U1.7",
44
+ "x": 0.5,
45
+ "y": -0.6
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ "chipId": "U2",
51
+ "center": {
52
+ "x": 6,
53
+ "y": 0
54
+ },
55
+ "width": 1,
56
+ "height": 2,
57
+ "pins": [
58
+ {
59
+ "pinId": "U2.1",
60
+ "x": 5.5,
61
+ "y": 0.4
62
+ },
63
+ {
64
+ "pinId": "U2.2",
65
+ "x": 5.5,
66
+ "y": 0.2
67
+ },
68
+ {
69
+ "pinId": "U2.3",
70
+ "x": 5.5,
71
+ "y": 0
72
+ },
73
+ {
74
+ "pinId": "U2.4",
75
+ "x": 5.5,
76
+ "y": -0.2
77
+ },
78
+ {
79
+ "pinId": "U2.5",
80
+ "x": 5.5,
81
+ "y": -0.4
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ "chipId": "U3",
87
+ "center": {
88
+ "x": 1.8,
89
+ "y": 0
90
+ },
91
+ "width": 0.5,
92
+ "height": 3,
93
+ "pins": [
94
+ {
95
+ "pinId": "U3.1",
96
+ "x": 1.8,
97
+ "y": 1.5
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "chipId": "C1",
103
+ "center": {
104
+ "x": 0.8,
105
+ "y": 1.2
106
+ },
107
+ "width": 1.4,
108
+ "height": 0.9,
109
+ "pins": [
110
+ {
111
+ "pinId": "C1.1",
112
+ "x": 0.8,
113
+ "y": 0.75
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "chipId": "C2",
119
+ "center": {
120
+ "x": 0.8,
121
+ "y": -1.2
122
+ },
123
+ "width": 1.4,
124
+ "height": 0.9,
125
+ "pins": [
126
+ {
127
+ "pinId": "C2.1",
128
+ "x": 0.8,
129
+ "y": -0.75
130
+ }
131
+ ]
132
+ }
133
+ ],
134
+ "directConnections": [],
135
+ "netConnections": [
136
+ {
137
+ "netId": "QD0",
138
+ "pinIds": [
139
+ "U1.2",
140
+ "U2.1"
141
+ ],
142
+ "netLabelWidth": 0.48
143
+ },
144
+ {
145
+ "netId": "QD1",
146
+ "pinIds": [
147
+ "U1.3",
148
+ "U2.2"
149
+ ],
150
+ "netLabelWidth": 0.48
151
+ },
152
+ {
153
+ "netId": "QD2",
154
+ "pinIds": [
155
+ "U1.4",
156
+ "U2.3"
157
+ ],
158
+ "netLabelWidth": 0.48
159
+ },
160
+ {
161
+ "netId": "QD3",
162
+ "pinIds": [
163
+ "U1.5",
164
+ "U2.4"
165
+ ],
166
+ "netLabelWidth": 0.48
167
+ },
168
+ {
169
+ "netId": "QCLK",
170
+ "pinIds": [
171
+ "U1.6",
172
+ "U2.5"
173
+ ],
174
+ "netLabelWidth": 0.6
175
+ },
176
+ {
177
+ "netId": "V1V1",
178
+ "pinIds": [
179
+ "U1.1",
180
+ "U1.7"
181
+ ],
182
+ "netLabelWidth": 0.42,
183
+ "netLabelHeight": 0.6
184
+ }
185
+ ],
186
+ "availableNetLabelOrientations": {
187
+ "QD0": [
188
+ "x-",
189
+ "x+"
190
+ ],
191
+ "QD1": [
192
+ "x-",
193
+ "x+"
194
+ ],
195
+ "QD2": [
196
+ "x-",
197
+ "x+"
198
+ ],
199
+ "QD3": [
200
+ "x-",
201
+ "x+"
202
+ ],
203
+ "QCLK": [
204
+ "x-",
205
+ "x+"
206
+ ],
207
+ "V1V1": [
208
+ "y+"
209
+ ]
210
+ },
211
+ "maxMspPairDistance": 2.4
212
+ }