@tscircuit/schematic-trace-solver 0.0.164 → 0.0.165
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 +5 -1
- package/dist/index.js +152 -19
- package/lib/solvers/NetLabelToTraceSolver/NetLabelToTraceSolver.ts +225 -24
- package/package.json +1 -1
- package/tests/assets/example51.json +6 -0
- package/tests/examples/__snapshots__/example51.snap.svg +42 -78
- package/tests/examples/example51.test.ts +24 -0
- package/tests/fixtures/convertSolverOutputToCircuitJson.ts +22 -3
- package/tests/repros/__snapshots__/repro-bluetooth-controller-ground-decoupling-groups.snap.svg +1 -15
- package/tests/repros/__snapshots__/repro-core-ground-inline-label-fallback.snap.svg +2 -16
- package/tests/repros/__snapshots__/repro-pga300-redundant-ground-traces.snap.svg +1 -15
- package/tests/repros/__snapshots__/repro-pmp11282-isolated-dcdc.snap.svg +16 -30
|
@@ -10,5 +10,29 @@ test("example51", () => {
|
|
|
10
10
|
|
|
11
11
|
solver.solve()
|
|
12
12
|
|
|
13
|
+
const output = solver.netLabelToTraceSolver!.getOutput()
|
|
14
|
+
const expectedRecoveredPairs = [
|
|
15
|
+
["schematic_port_113", "schematic_port_110"],
|
|
16
|
+
["schematic_port_116", "schematic_port_111"],
|
|
17
|
+
["schematic_port_60", "schematic_port_72"],
|
|
18
|
+
["schematic_port_73", "schematic_port_112"],
|
|
19
|
+
["schematic_port_68", "schematic_port_74"],
|
|
20
|
+
["schematic_port_75", "schematic_port_12"],
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
for (const expectedPair of expectedRecoveredPairs) {
|
|
24
|
+
expect(
|
|
25
|
+
output.traces.some((trace) =>
|
|
26
|
+
expectedPair.every((pinId) => trace.pinIds.includes(pinId)),
|
|
27
|
+
),
|
|
28
|
+
).toBe(true)
|
|
29
|
+
expect(
|
|
30
|
+
output.netLabelPlacements.some(
|
|
31
|
+
(label) =>
|
|
32
|
+
label.pinIds.length === 1 && expectedPair.includes(label.pinIds[0]!),
|
|
33
|
+
),
|
|
34
|
+
).toBe(false)
|
|
35
|
+
}
|
|
36
|
+
|
|
13
37
|
expect(solver).toMatchSolverSnapshot(import.meta.path)
|
|
14
38
|
})
|
|
@@ -17,7 +17,12 @@ import type { InlineNetLabelPlacement } from "lib/solvers/InlineNetLabelSolver/I
|
|
|
17
17
|
import type { NetLabelPlacement } from "lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver"
|
|
18
18
|
import type { SolvedTracePath } from "lib/solvers/SchematicTraceLinesSolver/SchematicTraceLinesSolver"
|
|
19
19
|
import { getPinDirection } from "lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver/getPinDirection"
|
|
20
|
-
import type {
|
|
20
|
+
import type {
|
|
21
|
+
InputChip,
|
|
22
|
+
InputPin,
|
|
23
|
+
InputProblem,
|
|
24
|
+
NetId,
|
|
25
|
+
} from "lib/types/InputProblem"
|
|
21
26
|
import type { FacingDirection } from "lib/utils/dir"
|
|
22
27
|
import { type SchSymbol, symbols } from "schematic-symbols"
|
|
23
28
|
|
|
@@ -63,6 +68,7 @@ type SolverLike = BaseSolver & {
|
|
|
63
68
|
label?: NetLabelPlacement
|
|
64
69
|
getOutput?: () => SolverOutput
|
|
65
70
|
inlineNetLabelSolver?: { getOutput: () => SolverOutput }
|
|
71
|
+
netLabelToTraceSolver?: { getOutput: () => SolverOutput }
|
|
66
72
|
}
|
|
67
73
|
|
|
68
74
|
const isInputProblem = (value: unknown): value is InputProblem => {
|
|
@@ -92,6 +98,9 @@ export const getInputProblemFromSolver = (
|
|
|
92
98
|
|
|
93
99
|
const safelyGetOutput = (solver: SolverLike): SolverOutput | undefined => {
|
|
94
100
|
try {
|
|
101
|
+
if (solver.netLabelToTraceSolver?.getOutput) {
|
|
102
|
+
return solver.netLabelToTraceSolver.getOutput()
|
|
103
|
+
}
|
|
95
104
|
if (solver.inlineNetLabelSolver?.getOutput) {
|
|
96
105
|
return solver.inlineNetLabelSolver.getOutput()
|
|
97
106
|
}
|
|
@@ -947,6 +956,10 @@ export const convertSolverOutputToCircuitJson = (
|
|
|
947
956
|
}
|
|
948
957
|
|
|
949
958
|
const netNames = new Set<string>()
|
|
959
|
+
const groundNetIds = new Set<NetId>()
|
|
960
|
+
for (const connection of inputProblem.netConnections) {
|
|
961
|
+
if (connection.isGround) groundNetIds.add(connection.netId)
|
|
962
|
+
}
|
|
950
963
|
for (const connection of [
|
|
951
964
|
...inputProblem.directConnections,
|
|
952
965
|
...inputProblem.netConnections,
|
|
@@ -973,7 +986,7 @@ export const convertSolverOutputToCircuitJson = (
|
|
|
973
986
|
source_net_id: sourceNetId,
|
|
974
987
|
name: netName,
|
|
975
988
|
member_source_group_ids: [],
|
|
976
|
-
is_ground:
|
|
989
|
+
is_ground: groundNetIds.has(netName),
|
|
977
990
|
is_power: /(^|[._-])(vcc|vdd|vss|gnd)($|[._-])/i.test(netName),
|
|
978
991
|
} satisfies SourceNet)
|
|
979
992
|
}
|
|
@@ -1055,14 +1068,20 @@ export const convertSolverOutputToCircuitJson = (
|
|
|
1055
1068
|
|
|
1056
1069
|
for (const [labelIndex, label] of snapshotData.netLabelPlacements.entries()) {
|
|
1057
1070
|
const netName = getNetLabelNetName(label)
|
|
1071
|
+
const anchorSide = orientationToAnchorSide(label.orientation)
|
|
1072
|
+
let symbolName: string | undefined
|
|
1073
|
+
if (groundNetIds.has(netName) && anchorSide === "top") {
|
|
1074
|
+
symbolName = "rail_down"
|
|
1075
|
+
}
|
|
1058
1076
|
circuitJson.push({
|
|
1059
1077
|
type: "schematic_net_label",
|
|
1060
1078
|
schematic_net_label_id: `schematic_net_label_${labelIndex}`,
|
|
1061
1079
|
source_net_id: sourceNetIdByName.get(netName)!,
|
|
1062
1080
|
center: label.center,
|
|
1063
1081
|
anchor_position: label.anchorPoint,
|
|
1064
|
-
anchor_side:
|
|
1082
|
+
anchor_side: anchorSide,
|
|
1065
1083
|
text: getNetLabelText(label),
|
|
1084
|
+
symbol_name: symbolName,
|
|
1066
1085
|
} satisfies SchematicNetLabel)
|
|
1067
1086
|
}
|
|
1068
1087
|
|
package/tests/repros/__snapshots__/repro-bluetooth-controller-ground-decoupling-groups.snap.svg
CHANGED
|
@@ -89,21 +89,7 @@ MLDO_OUT" data-x="7.35" data-y="1.0300000000000002" cx="237.15004191114838" cy="
|
|
|
89
89
|
L 692.9758323406,60.570574814770346
|
|
90
90
|
L 692.9758323406,102.11391306104687
|
|
91
91
|
Z
|
|
92
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.42282299259px"/><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="680.86171737765" y="97.75283167438488" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.80540693331px" transform="rotate(-90 680.86171737765 97.75283167438488)">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 680.86171737765,249.17926871126014
|
|
94
|
-
L 692.9758323406,255.72089079125314
|
|
95
|
-
L 692.9758323406,297.2642290375297
|
|
96
|
-
L 668.7476024147,297.2642290375297
|
|
97
|
-
L 668.7476024147,255.72089079125314
|
|
98
|
-
Z
|
|
99
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.42282299259px"/><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="680.86171737765" y="260.08197217791513" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.80540693331px" transform="rotate(90 680.86171737765 260.08197217791513)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
|
|
100
|
-
M 390.1229582668501,691.344464858935
|
|
101
|
-
L 402.2370732298001,697.886086938928
|
|
102
|
-
L 402.2370732298001,739.4294251852045
|
|
103
|
-
L 378.0088433039001,739.4294251852045
|
|
104
|
-
L 378.0088433039001,697.886086938928
|
|
105
|
-
Z
|
|
106
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.42282299259px"/><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="390.1229582668501" y="702.24716832559" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.80540693331px" transform="rotate(90 390.1229582668501 702.24716832559)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
|
|
92
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.42282299259px"/><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="680.86171737765" y="97.75283167438488" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="21.80540693331px" transform="rotate(-90 680.86171737765 97.75283167438488)">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="666.32477942211" y="249.17926871126014" width="29.073875911079995" height="21.805406933309996" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="M 666.32477942211 270.98467564457013 L 695.39865533319 270.98467564457013" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.42282299259px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="M 680.86171737765 270.98467564457013 L 680.86171737765 249.17926871126014" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.42282299259px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="680.86171737765" y="277.04173312604513" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="21.80540693331px">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="375.5860203113101" y="691.344464858935" width="29.073875911079995" height="21.805406933309996" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="M 375.5860203113101 713.149871792245 L 404.6598962223901 713.149871792245" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.42282299259px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="M 390.1229582668501 713.149871792245 L 390.1229582668501 691.344464858935" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.42282299259px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="390.1229582668501" y="719.20692927372" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="21.80540693331px">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
|
|
107
93
|
M 874.68755678485,575.048961214615
|
|
108
94
|
L 862.5734418219,568.507339134622
|
|
109
95
|
L 862.5734418219,526.9640008883455
|
|
@@ -230,28 +230,14 @@ motor_2b" data-x="6.055" data-y="0.7" cx="570.4492209712271" cy="265.22915955873
|
|
|
230
230
|
L 387.66368555492824,324.85065122396
|
|
231
231
|
L 358.70726232619415,324.85065122396
|
|
232
232
|
Z
|
|
233
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.688749410696px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" x="361.747011265447" y="316.40690417048" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="15.198744696263999px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_11__stack1" d="
|
|
234
|
-
M 889.7767332548187,409.28812175876
|
|
235
|
-
L 898.2204803082988,413.8477451676392
|
|
236
|
-
L 898.2204803082988,442.80416839637326
|
|
237
|
-
L 881.3329862013387,442.80416839637326
|
|
238
|
-
L 881.3329862013387,413.8477451676392
|
|
239
|
-
Z
|
|
240
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.688749410696px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_11__stack1" x="889.7767332548187" y="416.887494106892" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="15.198744696263999px" transform="rotate(90 889.7767332548187 416.887494106892)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_12__stack1" d="
|
|
233
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.688749410696px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" x="361.747011265447" y="316.40690417048" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="15.198744696263999px" transform="">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_11__stack1" x="879.6442367906427" y="409.2881217587599" width="20.264992928352058" height="15.198744696264043" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_11__stack1" d="M 879.6442367906427 424.48686645502397 L 899.9092297189948 424.48686645502397" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.688749410696px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_11__stack1" d="M 889.7767332548187 424.48686645502397 L 889.7767332548187 409.2881217587599" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.688749410696px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_11__stack1" x="889.7767332548187" y="428.7087399817639" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="15.198744696263999px">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_12__stack1" d="
|
|
241
234
|
M 536.74366894882,307.963157117
|
|
242
235
|
L 532.1840455399407,316.40690417048
|
|
243
236
|
L 503.2276223112067,316.40690417047995
|
|
244
237
|
L 503.2276223112067,299.51941006351996
|
|
245
238
|
L 532.1840455399407,299.51941006351996
|
|
246
239
|
Z
|
|
247
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.688749410696px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_12__stack1" x="529.144296600688" y="307.963157117" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="15.198744696263999px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_13__stack1" d="
|
|
248
|
-
M 1127.046025457607,544.4725120849748
|
|
249
|
-
L 1135.4897725110868,549.0321354938541
|
|
250
|
-
L 1135.4897725110868,577.9885587225881
|
|
251
|
-
L 1118.602278404127,577.9885587225881
|
|
252
|
-
L 1118.602278404127,549.0321354938541
|
|
253
|
-
Z
|
|
254
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.688749410696px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_13__stack1" x="1127.046025457607" y="552.0718844331068" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="15.198744696263999px" transform="rotate(90 1127.046025457607 552.0718844331068)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_14__stack1" d="
|
|
240
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.688749410696px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_12__stack1" x="529.144296600688" y="307.963157117" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="15.198744696263999px" transform="">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_13__stack1" x="1116.9135289934309" y="544.4725120849748" width="20.264992928352058" height="15.19874469626393" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_13__stack1" d="M 1116.9135289934309 559.6712567812388 L 1137.178521921783 559.6712567812388" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.688749410696px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_13__stack1" d="M 1127.046025457607 559.6712567812388 L 1127.046025457607 544.4725120849748" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.688749410696px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_13__stack1" x="1127.046025457607" y="563.8931303079788" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="15.198744696263999px">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_14__stack1" d="
|
|
255
241
|
M 815.4717591841948,274.1037314325452
|
|
256
242
|
L 807.0280121307147,269.544108023666
|
|
257
243
|
L 807.0280121307147,240.58768479493193
|
|
@@ -157,21 +157,7 @@ orientation: y+" data-x="10.9" data-y="1.7" cx="588.3234994010913" cy="278.01428
|
|
|
157
157
|
L 626.6706756582228,360.18212276109307
|
|
158
158
|
L 608.9944590008623,360.18212276109307
|
|
159
159
|
Z
|
|
160
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.030883553112px"/><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="610.850049396464" y="355.02770499553304" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="9.277951978008px" transform="">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="
|
|
161
|
-
M 549.5124779862999,484.27473046695013
|
|
162
|
-
L 554.6668957518599,487.0581160603525
|
|
163
|
-
L 554.6668957518599,504.73433271771296
|
|
164
|
-
L 544.35806022074,504.73433271771296
|
|
165
|
-
L 544.35806022074,487.0581160603525
|
|
166
|
-
Z
|
|
167
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.030883553112px"/><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="549.5124779862999" y="488.9137064559541" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="9.277951978008px" transform="rotate(90 549.5124779862999 488.9137064559541)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
|
|
168
|
-
M 238.13410076882036,536.6436149650397
|
|
169
|
-
L 243.28851853438036,539.427000558442
|
|
170
|
-
L 243.28851853438036,557.1032172158025
|
|
171
|
-
L 232.97968300326036,557.1032172158025
|
|
172
|
-
L 232.97968300326036,539.427000558442
|
|
173
|
-
Z
|
|
174
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.030883553112px"/><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="238.13410076882036" y="541.2825909540437" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="9.277951978008px" transform="rotate(90 238.13410076882036 541.2825909540437)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
|
|
160
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.030883553112px"/><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="610.850049396464" y="355.02770499553304" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="9.277951978008px" transform="">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="543.3271766676279" y="484.2747304669501" width="12.370602637344064" height="9.27795197800799" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="M 543.3271766676279 493.55268244495807 L 555.697779304972 493.55268244495807" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.030883553112px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="M 549.5124779862999 493.55268244495807 L 549.5124779862999 484.2747304669501" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.030883553112px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="549.5124779862999" y="496.12989132773805" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="9.277951978008px">XX</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="231.94879945014836" y="536.6436149650395" width="12.370602637344007" height="9.277951978008105" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="M 231.94879945014836 545.9215669430477 L 244.31940208749236 545.9215669430477" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.030883553112px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="M 238.13410076882036 545.9215669430477 L 238.13410076882036 536.6436149650395" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.030883553112px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="238.13410076882036" y="548.4987758258276" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="9.277951978008px">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
|
|
175
161
|
M 834.29405953349,243.30569992702004
|
|
176
162
|
L 829.13964176793,240.52231433361766
|
|
177
163
|
L 829.13964176793,222.84609767625722
|