@tscircuit/schematic-trace-solver 0.0.124 → 0.0.126
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 +46 -1
- package/dist/index.js +461 -37
- package/lib/solvers/AvailableNetOrientationSolver/geometry.ts +5 -1
- package/lib/solvers/NetLabelTraceCollisionSolver/NetLabelTraceCollisionSolver.ts +15 -0
- package/lib/solvers/RailNetLabelCornerPlacementSolver/RailNetLabelCornerPlacementSolver.ts +49 -6
- package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +69 -11
- package/lib/solvers/TraceElbowTransitionSimplificationSolver/TraceElbowTransitionSimplificationSolver.ts +216 -0
- package/lib/solvers/TraceElbowTransitionSimplificationSolver/generateElbowTransitionSimplificationCandidates.ts +186 -0
- package/lib/solvers/TraceElbowTransitionSimplificationSolver/types.ts +10 -0
- package/lib/solvers/TraceLabelOverlapAvoidanceSolver/TraceLabelOverlapAvoidanceSolver.ts +3 -0
- package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/OverlapAvoidanceStepSolver/OverlapAvoidanceStepSolver.ts +16 -0
- package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/SingleOverlapSolver/SingleOverlapSolver.ts +56 -13
- package/package.json +1 -1
- package/site/bug-reports/bug-report-20260805T061316Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260806T061548Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260806T093501Z.page.tsx +4 -0
- package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +3 -3
- package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +6 -6
- package/tests/bug-reports/bug-report-20260805T061316Z/__snapshots__/bug-report-20260805T061316Z.snap.svg +212 -0
- package/tests/bug-reports/bug-report-20260805T061316Z/bug-report-20260805T061316Z.json +889 -0
- package/tests/bug-reports/bug-report-20260805T061316Z/bug-report-20260805T061316Z.test.ts +12 -0
- package/tests/bug-reports/bug-report-20260806T061548Z/__snapshots__/bug-report-20260806T061548Z.snap.svg +212 -0
- package/tests/bug-reports/bug-report-20260806T061548Z/bug-report-20260806T061548Z.json +960 -0
- package/tests/bug-reports/bug-report-20260806T061548Z/bug-report-20260806T061548Z.test.ts +32 -0
- package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +135 -0
- package/tests/bug-reports/bug-report-20260806T093501Z/bug-report-20260806T093501Z.json +505 -0
- package/tests/bug-reports/bug-report-20260806T093501Z/bug-report-20260806T093501Z.test.ts +66 -0
- package/tests/examples/__snapshots__/example01.snap.svg +18 -18
- package/tests/examples/__snapshots__/example33.snap.svg +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { expect, test } from "bun:test"
|
|
2
|
+
import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
|
|
3
|
+
import inputProblem from "./bug-report-20260806T061548Z.json"
|
|
4
|
+
import "tests/fixtures/matcher"
|
|
5
|
+
import { getTraceLabelCollisions } from "tests/fixtures/traceLabelCollisions"
|
|
6
|
+
|
|
7
|
+
test("bug-report-20260806T061548Z", () => {
|
|
8
|
+
const solver = new SchematicTracePipelineSolver(inputProblem as any)
|
|
9
|
+
|
|
10
|
+
solver.solve()
|
|
11
|
+
|
|
12
|
+
const railOutput = solver.railNetLabelCornerPlacementSolver!.getOutput()
|
|
13
|
+
const finalOutput = solver.sameNetJunctionAlignmentSolver!.getOutput()
|
|
14
|
+
const v3v3Label = railOutput.netLabelPlacements.find(
|
|
15
|
+
(label) =>
|
|
16
|
+
label.netId === "V3V3" &&
|
|
17
|
+
label.mspConnectionPairIds.includes(
|
|
18
|
+
"schematic_port_43-schematic_port_41",
|
|
19
|
+
),
|
|
20
|
+
)!
|
|
21
|
+
const pin45Trace = finalOutput.traces.find(
|
|
22
|
+
(trace) => trace.mspPairId === "schematic_port_49-schematic_port_44",
|
|
23
|
+
)!
|
|
24
|
+
|
|
25
|
+
expect(v3v3Label.anchorPoint.x).toBeGreaterThan(2.901)
|
|
26
|
+
expect(pin45Trace.tracePath).toHaveLength(4)
|
|
27
|
+
expect(
|
|
28
|
+
getTraceLabelCollisions(finalOutput.traces, finalOutput.netLabelPlacements),
|
|
29
|
+
).toEqual([])
|
|
30
|
+
|
|
31
|
+
expect(solver).toMatchSolverSnapshot(import.meta.path)
|
|
32
|
+
})
|
|
@@ -0,0 +1,135 @@
|
|
|
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="-12,6.88 -8.9,3.3" data-type="line" data-label="" points="160.8687503445235,96.83038421255722 256.5635852488838,207.3424838763023" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-8,6.88 -8.3,3.3" data-type="line" data-label="" points="284.3459566727303,96.83038421255722 275.0851661981148,207.3424838763023" fill="none" stroke="hsl(200, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-8,6.12 -8.1,3.3" data-type="line" data-label="" points="284.3459566727303,120.29105341491649 281.2590265145252,207.3424838763023" fill="none" stroke="hsl(200, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-4,6.88 -8.5,3.3" data-type="line" data-label="" points="407.82316300093714,96.83038421255722 268.9113058817045,207.3424838763023" fill="none" stroke="hsl(312, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-10,-6.12 -7.9,3.3" data-type="line" data-label="" points="222.60735350862694,498.13130477922925 287.43288683093544,207.3424838763023" fill="none" stroke="hsl(336, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.5,3.3 -8,-8.2" data-type="line" data-label="" points="299.78060746375616,207.3424838763023 284.3459566727303,562.3394520698968" fill="none" stroke="hsl(80, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.3,3.3 -5,-8.2" data-type="line" data-label="" points="305.9544677801665,207.3424838763023 376.9538614188854,562.3394520698968" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.1,3.3 -2,-8.2" data-type="line" data-label="" points="312.12832809657687,207.3424838763023 469.5617661650405,562.3394520698968" fill="none" stroke="hsl(288, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-8.9,3.3 -8.7,3.3" data-type="line" data-label="" points="256.5635852488838,207.3424838763023 262.73744556529414,207.3424838763023" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.9,3.3 -12,6.88" data-type="line" data-label="" points="256.5635852488838,207.3424838763023 160.8687503445235,96.83038421255722" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.9,3.3 -4,6.12" data-type="line" data-label="" points="256.5635852488838,207.3424838763023 407.82316300093714,120.29105341491649" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.7,3.3 -12,6.88" data-type="line" data-label="" points="262.73744556529414,207.3424838763023 160.8687503445235,96.83038421255722" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.7,3.3 -4,6.12" data-type="line" data-label="" points="262.73744556529414,207.3424838763023 407.82316300093714,120.29105341491649" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.88 -4,6.12" data-type="line" data-label="" points="160.8687503445235,96.83038421255722 407.82316300093714,120.29105341491649" fill="none" stroke="hsl(223, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -12,6.12" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 160.8687503445235,120.29105341491649" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -10,-6.88" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 222.60735350862694,521.5919739815886" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -8,-8.8" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 284.3459566727303,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -5,-8.8" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.7,3.3 -2,-8.8" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -10,-6.88" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 222.60735350862694,521.5919739815886" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -8,-8.8" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 284.3459566727303,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -5,-8.8" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-12,6.12 -2,-8.8" data-type="line" data-label="" points="160.8687503445235,120.29105341491649 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-10,-6.88 -8,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 284.3459566727303,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-10,-6.88 -5,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-10,-6.88 -2,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8,-8.8 -5,-8.8" data-type="line" data-label="" points="284.3459566727303,580.8610330191278 376.9538614188854,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8,-8.8 -2,-8.8" data-type="line" data-label="" points="284.3459566727303,580.8610330191278 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-5,-8.8 -2,-8.8" data-type="line" data-label="" points="376.9538614188854,580.8610330191278 469.5617661650405,580.8610330191278" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-8.7,3.3 -8.7,3.499999999999999 -8.9,3.499999999999999 -8.9,3.3" data-type="line" data-label="" points="262.73744556529414,207.3424838763023 262.73744556529414,201.16862355989196 256.5635852488838,201.16862355989196 256.5635852488838,207.3424838763023" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.1,3.3 -7.1,3.5 -2,3.5 -2,-8.200000000000003" data-type="line" data-label="" points="312.12832809657687,207.3424838763023 312.12832809657687,201.16862355989196 469.5617661650405,201.16862355989196 469.5617661650405,562.3394520698969" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-10,-6.88 -10,-9.000000000000002 -8,-9.000000000000002 -8,-8.8" data-type="line" data-label="" points="222.60735350862694,521.5919739815886 222.60735350862694,587.0348933355383 284.3459566727303,587.0348933355383 284.3459566727303,580.8610330191278" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-5,-8.8 -5,-9 -2,-9 -2,-8.8" data-type="line" data-label="" points="376.9538614188854,580.8610330191278 376.9538614188854,587.0348933355382 469.5617661650405,587.0348933355382 469.5617661650405,580.8610330191278" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-12,6.88 -12,8.301 -5.9,8.301 -5.9,5.920000000000001 -4,5.920000000000001 -4,6.12" data-type="line" data-label="" points="160.8687503445235,96.83038421255722 160.8687503445235,52.96510666446176 349.1714899950389,52.96510666446176 349.1714899950389,126.46491373132682 407.82316300093714,126.46491373132682 407.82316300093714,120.29105341491649" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-7.7,3.299999999999999 -7.7,4.840999999999999 -8.699999999999998,4.840999999999999 -8.699999999999998,4.71 -12,4.71 -12,6.12" data-type="line" data-label="" points="293.6067471473458,207.3424838763023 293.6067471473458,159.77289013836065 262.7374455652942,159.77289013836065 262.7374455652942,163.8167686456094 160.8687503445235,163.8167686456094 160.8687503445235,120.29105341491649" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-8" data-y="0" x="191.73805192657522" y="207.3424838763023" width="185.2158094923102" height="203.73739044154115" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="-11.6275" data-y="6.5" x="146.97756463260032" y="96.83038421255722" width="50.78000110247501" height="23.46066920235927" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="-9.8075" data-y="-6.5" x="208.7161677967037" y="498.13130477922925" width="39.667052532936395" height="23.460669202359327" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-7.927499999999999" data-y="6.5" x="270.4547709608071" y="96.83038421255722" width="32.25842015324406" height="23.46066920235927" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-3.8674999999999997" data-y="6.5" x="393.93197728901384" y="96.83038421255722" width="35.96273634309023" height="23.46066920235927" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="-7.785" data-y="-8.5" x="270.4547709608071" y="562.3394520698968" width="41.05617110412868" height="18.521580949231065" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_6" data-x="-4.665" data-y="-8.5" x="363.0626757069622" y="562.3394520698968" width="48.46480348382113" height="18.521580949231065" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="schematic_component_7" data-x="-1.8450000000000002" data-y="-8.5" x="455.6705804531173" y="562.3394520698968" width="37.35185491428257" height="18.521580949231065" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="DRV8323HRTAR" data-x="-4.580000000000001" data-y="3.25" x="367.69307094426983" y="206.10771181302022" width="44.45179427815441" height="5.556474284769308" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="U_GATE" data-x="-4.940000000000001" data-y="3.0149999999999997" x="365.84091284934675" y="212.28157212943057" width="25.9302133289234" height="7.7173253955129155" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP > .pin2 to .U_GATE > .CPL
|
|
2
|
+
globalConnNetId: connectivity_net2" data-x="-8" data-y="5.459" x="281.2590265145252" y="120.32192271649856" width="6.1738603164102415" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP > .pin2 to .U_GATE > .CPL
|
|
3
|
+
globalConnNetId: connectivity_net2" data-x="-8.1" data-y="3.961" x="278.17209635632" y="166.564136486412" width="6.173860316410298" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP > .pin1 to .U_GATE > .CPH
|
|
4
|
+
globalConnNetId: connectivity_net1" data-x="-8" data-y="7.541" x="281.2590265145252" y="56.052036822666906" width="6.1738603164102415" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_CP > .pin1 to .U_GATE > .CPH
|
|
5
|
+
globalConnNetId: connectivity_net1" data-x="-8.3" data-y="3.961" x="271.99823603990967" y="166.564136486412" width="6.173860316410298" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_VCP > .pin1 to .U_GATE > .VCP
|
|
6
|
+
globalConnNetId: connectivity_net3" data-x="-4" data-y="7.541" x="404.73623284273197" y="56.052036822666906" width="6.173860316410355" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_VCP > .pin1 to .U_GATE > .VCP
|
|
7
|
+
globalConnNetId: connectivity_net3" data-x="-8.5" data-y="3.961" x="265.8243757234993" y="166.564136486412" width="6.173860316410298" height="40.74747808830824" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: VM
|
|
8
|
+
globalConnNetId: connectivity_net0" data-x="-12" data-y="8.511000000000001" x="155.31227605975423" y="39.99999999999997" width="11.11294856953856" height="12.965106664461757" fill="#ef444466" stroke="#ef4444" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: VM
|
|
9
|
+
globalConnNetId: connectivity_net0" data-x="-8.9" data-y="3.709999999999999" x="251.00711096411447" y="188.20351689543025" width="11.112948569538617" height="12.9651066644617" fill="#ef444466" stroke="#ef4444" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
10
|
+
globalConnNetId: connectivity_net8" data-x="-12" data-y="4.5" x="153.46011796483108" y="163.8167686456094" width="14.817264759384841" height="12.965106664461729" fill="#00000066" stroke="#000000" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
11
|
+
globalConnNetId: connectivity_net8" data-x="-10" data-y="-9.210000000000003" x="215.19872112893452" y="587.0348933355382" width="14.817264759384841" height="12.9651066644617" fill="#00000066" stroke="#000000" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
12
|
+
globalConnNetId: connectivity_net8" data-x="-5" data-y="-9.21" x="369.54522903919303" y="587.0348933355381" width="14.817264759384784" height="12.965106664461814" fill="#00000066" stroke="#000000" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE > .IDRIVE to .R_IDRIVE > .pin1
|
|
13
|
+
globalConnNetId: connectivity_net6" data-x="-7.3" data-y="4.141" x="302.86753762196133" y="155.45118791687338" width="6.173860316410355" height="51.86042665784686" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE > .IDRIVE to .R_IDRIVE > .pin1
|
|
14
|
+
globalConnNetId: connectivity_net6" data-x="-5" data-y="-7.358999999999999" x="373.8669312606803" y="510.44815611046783" width="6.173860316410298" height="51.86042665784686" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE > .VDS to .R_VDS > .pin1
|
|
15
|
+
globalConnNetId: connectivity_net7" data-x="-7.1" data-y="4.16" x="309.0413979383717" y="160.42114547158366" width="6.173860316410355" height="40.74747808830827" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE > .GAIN to .R_GAIN > .pin1
|
|
16
|
+
globalConnNetId: connectivity_net5" data-x="-7.5" data-y="4.021" x="296.693677305551" y="162.85982029656577" width="6.173860316410355" height="44.45179427815444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .U_GATE > .GAIN to .R_GAIN > .pin1
|
|
17
|
+
globalConnNetId: connectivity_net5" data-x="-8" data-y="-7.478999999999999" x="281.2590265145252" y="517.8567884901603" width="6.1738603164102415" height="44.451794278154466" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_DVDD > .pin1 to .U_GATE > .DVDD
|
|
18
|
+
globalConnNetId: connectivity_net4" data-x="-10" data-y="-5.399" x="219.5204233504218" y="453.6486411994928" width="6.173860316410298" height="44.451794278154466" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><rect data-type="rect" data-label="netId: .C_DVDD > .pin1 to .U_GATE > .DVDD
|
|
19
|
+
globalConnNetId: connectivity_net4" data-x="-7.9" data-y="4.021" x="284.34595667273027" y="162.85982029656577" width="6.173860316410298" height="44.45179427815444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.032394642857142865"/></g><g><circle data-type="point" data-label="schematic_port_0
|
|
20
|
+
y+" data-x="-8.1" data-y="3.3" cx="281.2590265145252" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_1
|
|
21
|
+
y+" data-x="-8.3" data-y="3.3" cx="275.0851661981148" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_2
|
|
22
|
+
y+" data-x="-8.5" data-y="3.3" cx="268.9113058817045" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_3
|
|
23
|
+
y+" data-x="-8.9" data-y="3.3" cx="256.5635852488838" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_4
|
|
24
|
+
y+" data-x="-8.7" data-y="3.3" cx="262.73744556529414" cy="207.3424838763023" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_5
|
|
25
|
+
x+" data-x="-5" data-y="0.7999999999999999" cx="376.9538614188854" cy="284.5157378314315" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_6
|
|
26
|
+
x+" data-x="-5" data-y="0.6" cx="376.9538614188854" cy="290.6895981478419" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_7
|
|
27
|
+
x+" data-x="-5" data-y="0.4" cx="376.9538614188854" cy="296.86345846425223" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_8
|
|
28
|
+
y-" data-x="-8.6" data-y="-3.3" cx="265.8243757234993" cy="411.07987431784346" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_9
|
|
29
|
+
y-" data-x="-8.4" data-y="-3.3" cx="271.9982360399096" cy="411.07987431784346" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_10
|
|
30
|
+
y-" data-x="-8" data-y="-3.3" cx="284.3459566727303" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_11
|
|
31
|
+
y-" data-x="-8.2" data-y="-3.3" cx="278.17209635632" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_12
|
|
32
|
+
x+" data-x="-5" data-y="-0.19999999999999984" cx="376.9538614188854" cy="315.38503941348324" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_13
|
|
33
|
+
x+" data-x="-5" data-y="1.1102230246251565e-16" cx="376.9538614188854" cy="309.2111790970729" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_14
|
|
34
|
+
x+" data-x="-5" data-y="0.20000000000000007" cx="376.9538614188854" cy="303.03731878066253" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_15
|
|
35
|
+
x+" data-x="-5" data-y="-0.3999999999999999" cx="376.9538614188854" cy="321.55889972989354" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_16
|
|
36
|
+
x+" data-x="-5" data-y="-0.5999999999999999" cx="376.9538614188854" cy="327.7327600463039" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_17
|
|
37
|
+
x+" data-x="-5" data-y="-0.7999999999999999" cx="376.9538614188854" cy="333.90662036271425" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_18
|
|
38
|
+
y-" data-x="-7.8" data-y="-3.3" cx="290.5198169891407" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_19
|
|
39
|
+
y-" data-x="-7.6" data-y="-3.3" cx="296.693677305551" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_20
|
|
40
|
+
y-" data-x="-7" data-y="-3.3" cx="315.21525825478204" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_21
|
|
41
|
+
y-" data-x="-7.2" data-y="-3.3" cx="309.0413979383717" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_22
|
|
42
|
+
y-" data-x="-7.4" data-y="-3.3" cx="302.86753762196133" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_23
|
|
43
|
+
y-" data-x="-6.8" data-y="-3.3" cx="321.3891185711924" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_24
|
|
44
|
+
x-" data-x="-11" data-y="-0.7999999999999999" cx="191.73805192657522" cy="333.90662036271425" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_25
|
|
45
|
+
y+" data-x="-7.7" data-y="3.3" cx="293.6067471473458" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_26
|
|
46
|
+
y+" data-x="-7.3" data-y="3.3" cx="305.9544677801665" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_27
|
|
47
|
+
y+" data-x="-7.1" data-y="3.3" cx="312.12832809657687" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_28
|
|
48
|
+
y+" data-x="-7.5" data-y="3.3" cx="299.78060746375616" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_29
|
|
49
|
+
x-" data-x="-11" data-y="-0.4" cx="191.73805192657522" cy="321.55889972989354" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_30
|
|
50
|
+
x-" data-x="-11" data-y="-0.6" cx="191.73805192657522" cy="327.7327600463039" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_31
|
|
51
|
+
y-" data-x="-8.8" data-y="-3.3" cx="259.65051540708896" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_32
|
|
52
|
+
y+" data-x="-7.9" data-y="3.3" cx="287.43288683093544" cy="207.3424838763023" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_33
|
|
53
|
+
x-" data-x="-11" data-y="0.7999999999999999" cx="191.73805192657522" cy="284.5157378314315" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_34
|
|
54
|
+
x-" data-x="-11" data-y="0.5999999999999999" cx="191.73805192657522" cy="290.6895981478419" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_35
|
|
55
|
+
x-" data-x="-11" data-y="0.3999999999999999" cx="191.73805192657522" cy="296.86345846425223" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_36
|
|
56
|
+
x-" data-x="-11" data-y="0.19999999999999984" cx="191.73805192657522" cy="303.03731878066253" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_37
|
|
57
|
+
x-" data-x="-11" data-y="-1.1102230246251565e-16" cx="191.73805192657522" cy="309.2111790970729" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_38
|
|
58
|
+
x-" data-x="-11" data-y="-0.20000000000000007" cx="191.73805192657522" cy="315.38503941348324" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_39
|
|
59
|
+
y-" data-x="-9.2" data-y="-3.3" cx="247.3027947742683" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_40
|
|
60
|
+
y-" data-x="-9" data-y="-3.3" cx="253.4766550906786" cy="411.07987431784346" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_41
|
|
61
|
+
y+" data-x="-12" data-y="6.88" cx="160.8687503445235" cy="96.83038421255722" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_42
|
|
62
|
+
y-" data-x="-12" data-y="6.12" cx="160.8687503445235" cy="120.29105341491649" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_43
|
|
63
|
+
y+" data-x="-10" data-y="-6.12" cx="222.60735350862694" cy="498.13130477922925" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_44
|
|
64
|
+
y-" data-x="-10" data-y="-6.88" cx="222.60735350862694" cy="521.5919739815886" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_45
|
|
65
|
+
y+" data-x="-8" data-y="6.88" cx="284.3459566727303" cy="96.83038421255722" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_46
|
|
66
|
+
y-" data-x="-8" data-y="6.12" cx="284.3459566727303" cy="120.29105341491649" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_47
|
|
67
|
+
y+" data-x="-4" data-y="6.88" cx="407.82316300093714" cy="96.83038421255722" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_48
|
|
68
|
+
y-" data-x="-4" data-y="6.12" cx="407.82316300093714" cy="120.29105341491649" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_49
|
|
69
|
+
y+" data-x="-8" data-y="-8.2" cx="284.3459566727303" cy="562.3394520698968" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_50
|
|
70
|
+
y-" data-x="-8" data-y="-8.8" cx="284.3459566727303" cy="580.8610330191278" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_51
|
|
71
|
+
y+" data-x="-5" data-y="-8.2" cx="376.9538614188854" cy="562.3394520698968" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_52
|
|
72
|
+
y-" data-x="-5" data-y="-8.8" cx="376.9538614188854" cy="580.8610330191278" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_53
|
|
73
|
+
y+" data-x="-2" data-y="-8.2" cx="469.5617661650405" cy="562.3394520698968" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="schematic_port_54
|
|
74
|
+
y-" data-x="-2" data-y="-8.8" cx="469.5617661650405" cy="580.8610330191278" r="3" fill="hsl(184, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
75
|
+
orientation: y-" data-x="-8" data-y="6.12" cx="284.3459566727303" cy="120.29105341491649" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
76
|
+
orientation: y+" data-x="-8.1" data-y="3.3" cx="281.2590265145252" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
77
|
+
orientation: y+" data-x="-8" data-y="6.88" cx="284.3459566727303" cy="96.83038421255722" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
78
|
+
orientation: y+" data-x="-8.3" data-y="3.3" cx="275.0851661981148" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
79
|
+
orientation: y+" data-x="-4" data-y="6.88" cx="407.82316300093714" cy="96.83038421255722" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
80
|
+
orientation: y+" data-x="-8.5" data-y="3.3" cx="268.9113058817045" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
81
|
+
orientation: y+" data-x="-12" data-y="8.301" cx="160.8687503445235" cy="52.96510666446176" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
82
|
+
orientation: y+" data-x="-8.9" data-y="3.499999999999999" cx="256.5635852488838" cy="201.16862355989196" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
83
|
+
orientation: y-" data-x="-12" data-y="4.71" cx="160.8687503445235" cy="163.8167686456094" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
84
|
+
orientation: y-" data-x="-10" data-y="-9.000000000000002" cx="222.60735350862694" cy="587.0348933355383" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
85
|
+
orientation: y-" data-x="-5" data-y="-9" cx="376.9538614188854" cy="587.0348933355382" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
86
|
+
orientation: y+" data-x="-7.3" data-y="3.3" cx="305.9544677801665" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
87
|
+
orientation: y+" data-x="-5" data-y="-8.2" cx="376.9538614188854" cy="562.3394520698968" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
88
|
+
orientation: y+" data-x="-7.1" data-y="3.5" cx="312.12832809657687" cy="201.16862355989196" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
89
|
+
orientation: y+" data-x="-7.5" data-y="3.3" cx="299.78060746375616" cy="207.3424838763023" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
90
|
+
orientation: y+" data-x="-8" data-y="-8.2" cx="284.3459566727303" cy="562.3394520698968" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
91
|
+
orientation: y+" data-x="-10" data-y="-6.12" cx="222.60735350862694" cy="498.13130477922925" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
92
|
+
orientation: y+" data-x="-7.9" data-y="3.3" cx="287.43288683093544" cy="207.3424838763023" 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[
|
|
93
|
+
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
94
|
+
const svg = e.currentTarget;
|
|
95
|
+
const rect = svg.getBoundingClientRect();
|
|
96
|
+
const x = e.clientX - rect.left;
|
|
97
|
+
const y = e.clientY - rect.top;
|
|
98
|
+
const crosshair = svg.getElementById('crosshair');
|
|
99
|
+
const h = svg.getElementById('crosshair-h');
|
|
100
|
+
const v = svg.getElementById('crosshair-v');
|
|
101
|
+
const coords = svg.getElementById('coordinates');
|
|
102
|
+
|
|
103
|
+
crosshair.style.display = 'block';
|
|
104
|
+
h.setAttribute('x1', '0');
|
|
105
|
+
h.setAttribute('x2', '640');
|
|
106
|
+
h.setAttribute('y1', y);
|
|
107
|
+
h.setAttribute('y2', y);
|
|
108
|
+
v.setAttribute('x1', x);
|
|
109
|
+
v.setAttribute('x2', x);
|
|
110
|
+
v.setAttribute('y1', '0');
|
|
111
|
+
v.setAttribute('y2', '640');
|
|
112
|
+
|
|
113
|
+
// Calculate real coordinates using inverse transformation
|
|
114
|
+
const matrix = {"a":30.869301582051698,"c":0,"e":531.3003693291439,"b":0,"d":-30.869301582051698,"f":309.2111790970729};
|
|
115
|
+
// Manually invert and apply the affine transform
|
|
116
|
+
// Since we only use translate and scale, we can directly compute:
|
|
117
|
+
// x' = (x - tx) / sx
|
|
118
|
+
// y' = (y - ty) / sy
|
|
119
|
+
const sx = matrix.a;
|
|
120
|
+
const sy = matrix.d;
|
|
121
|
+
const tx = matrix.e;
|
|
122
|
+
const ty = matrix.f;
|
|
123
|
+
const realPoint = {
|
|
124
|
+
x: (x - tx) / sx,
|
|
125
|
+
y: (y - ty) / sy // Flip y back since we used negative scale
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
|
|
129
|
+
coords.setAttribute('x', (x + 5).toString());
|
|
130
|
+
coords.setAttribute('y', (y - 5).toString());
|
|
131
|
+
});
|
|
132
|
+
document.currentScript.parentElement.addEventListener('mouseleave', () => {
|
|
133
|
+
document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
|
|
134
|
+
});
|
|
135
|
+
]]></script></svg>
|